@sean.holung/minicode 0.3.8 → 0.3.10

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 (752) hide show
  1. package/README.md +9 -0
  2. package/dist/scripts/run-ts-bench-smoke.js +268 -0
  3. package/dist/scripts/ts-bench-adapter.js +251 -0
  4. package/dist/src/agent/config.js +2 -2
  5. package/dist/src/auto-allow.js +28 -0
  6. package/dist/src/benchmark/config.js +197 -0
  7. package/dist/src/benchmark/index.js +2 -0
  8. package/dist/src/benchmark/workspace-changes.js +125 -0
  9. package/dist/src/cli/args.js +13 -0
  10. package/dist/src/cli/benchmark-run.js +432 -0
  11. package/dist/src/cli/permissions-slash-command.js +50 -0
  12. package/dist/src/index.js +9 -2
  13. package/dist/src/indexer/plugin-loader.js +19 -1
  14. package/dist/src/indexer/project-index.js +35 -21
  15. package/dist/src/serve/agent-bridge.js +132 -2
  16. package/dist/src/serve/openai-compat.js +2 -2
  17. package/dist/src/serve/server.js +14 -0
  18. package/dist/src/serve/websocket.js +11 -0
  19. package/dist/src/session/session-store.js +11 -1
  20. package/dist/src/tools/registry.js +10 -2
  21. package/dist/src/ui/app.js +8 -2
  22. package/dist/src/ui/cli-ink.js +13 -2
  23. package/dist/src/ui/components/permission-prompt.js +53 -0
  24. package/dist/src/ui/permission-gate.js +42 -0
  25. package/dist/src/ui/state/ui-store.js +13 -0
  26. package/dist/src/web/app.js +217 -28
  27. package/dist/src/web/index.html +63 -2
  28. package/dist/src/web/style.css +986 -1699
  29. package/dist/tests/agent.test.js +110 -0
  30. package/dist/tests/benchmark-config.test.js +80 -0
  31. package/dist/tests/benchmark-run.test.js +180 -0
  32. package/dist/tests/cli-args.test.js +22 -0
  33. package/dist/tests/cli-oneshot.integration.test.js +5 -0
  34. package/dist/tests/config.test.js +21 -0
  35. package/dist/tests/context-indicator.test.js +9 -0
  36. package/dist/tests/file-tools.test.js +36 -0
  37. package/dist/tests/harbor-adapter.test.js +57 -0
  38. package/dist/tests/indexer.test.js +1 -1
  39. package/dist/tests/permission-gate-cli.test.js +126 -0
  40. package/dist/tests/permission-gate.test.js +196 -0
  41. package/dist/tests/python-plugin.test.js +357 -0
  42. package/dist/tests/serve.integration.test.js +31 -0
  43. package/dist/tests/session-store.test.js +18 -1
  44. package/dist/tests/session-ui.test.js +6 -0
  45. package/dist/tests/system-prompt.test.js +44 -9
  46. package/dist/tests/ts-bench-adapter.test.js +186 -0
  47. package/dist/tests/workspace-changes.test.js +82 -0
  48. package/node_modules/@minicode/agent-sdk/README.md +286 -90
  49. package/node_modules/@minicode/agent-sdk/dist/src/agent/agent.d.ts +40 -4
  50. package/node_modules/@minicode/agent-sdk/dist/src/agent/agent.d.ts.map +1 -1
  51. package/node_modules/@minicode/agent-sdk/dist/src/agent/agent.js +134 -27
  52. package/node_modules/@minicode/agent-sdk/dist/src/agent/agent.js.map +1 -1
  53. package/node_modules/@minicode/agent-sdk/dist/src/agent/structured-output.d.ts +42 -0
  54. package/node_modules/@minicode/agent-sdk/dist/src/agent/structured-output.d.ts.map +1 -0
  55. package/node_modules/@minicode/agent-sdk/dist/src/agent/structured-output.js +97 -0
  56. package/node_modules/@minicode/agent-sdk/dist/src/agent/structured-output.js.map +1 -0
  57. package/node_modules/@minicode/agent-sdk/dist/src/agent/types.d.ts +97 -2
  58. package/node_modules/@minicode/agent-sdk/dist/src/agent/types.d.ts.map +1 -1
  59. package/node_modules/@minicode/agent-sdk/dist/src/agent/types.js +15 -1
  60. package/node_modules/@minicode/agent-sdk/dist/src/agent/types.js.map +1 -1
  61. package/node_modules/@minicode/agent-sdk/dist/src/index.d.ts +10 -8
  62. package/node_modules/@minicode/agent-sdk/dist/src/index.d.ts.map +1 -1
  63. package/node_modules/@minicode/agent-sdk/dist/src/index.js +10 -6
  64. package/node_modules/@minicode/agent-sdk/dist/src/index.js.map +1 -1
  65. package/node_modules/@minicode/agent-sdk/dist/src/indexer/types.d.ts +8 -3
  66. package/node_modules/@minicode/agent-sdk/dist/src/indexer/types.d.ts.map +1 -1
  67. package/node_modules/@minicode/agent-sdk/dist/src/mcp/client-registry.d.ts +109 -0
  68. package/node_modules/@minicode/agent-sdk/dist/src/mcp/client-registry.d.ts.map +1 -0
  69. package/node_modules/@minicode/agent-sdk/dist/src/mcp/client-registry.js +237 -0
  70. package/node_modules/@minicode/agent-sdk/dist/src/mcp/client-registry.js.map +1 -0
  71. package/node_modules/@minicode/agent-sdk/dist/src/model/client.d.ts +5 -1
  72. package/node_modules/@minicode/agent-sdk/dist/src/model/client.d.ts.map +1 -1
  73. package/node_modules/@minicode/agent-sdk/dist/src/model/client.js +100 -8
  74. package/node_modules/@minicode/agent-sdk/dist/src/model/client.js.map +1 -1
  75. package/node_modules/@minicode/agent-sdk/dist/src/prompt/system-prompt.d.ts +31 -1
  76. package/node_modules/@minicode/agent-sdk/dist/src/prompt/system-prompt.d.ts.map +1 -1
  77. package/node_modules/@minicode/agent-sdk/dist/src/prompt/system-prompt.js +8 -7
  78. package/node_modules/@minicode/agent-sdk/dist/src/prompt/system-prompt.js.map +1 -1
  79. package/node_modules/@minicode/agent-sdk/dist/src/session/session.d.ts +8 -0
  80. package/node_modules/@minicode/agent-sdk/dist/src/session/session.d.ts.map +1 -1
  81. package/node_modules/@minicode/agent-sdk/dist/src/session/session.js +2 -0
  82. package/node_modules/@minicode/agent-sdk/dist/src/session/session.js.map +1 -1
  83. package/node_modules/@minicode/agent-sdk/dist/src/tools/edit-file.d.ts +10 -3
  84. package/node_modules/@minicode/agent-sdk/dist/src/tools/edit-file.d.ts.map +1 -1
  85. package/node_modules/@minicode/agent-sdk/dist/src/tools/edit-file.js +3 -3
  86. package/node_modules/@minicode/agent-sdk/dist/src/tools/edit-file.js.map +1 -1
  87. package/node_modules/@minicode/agent-sdk/dist/src/tools/list-files.d.ts +9 -2
  88. package/node_modules/@minicode/agent-sdk/dist/src/tools/list-files.d.ts.map +1 -1
  89. package/node_modules/@minicode/agent-sdk/dist/src/tools/list-files.js +2 -2
  90. package/node_modules/@minicode/agent-sdk/dist/src/tools/list-files.js.map +1 -1
  91. package/node_modules/@minicode/agent-sdk/dist/src/tools/read-file.d.ts +12 -2
  92. package/node_modules/@minicode/agent-sdk/dist/src/tools/read-file.d.ts.map +1 -1
  93. package/node_modules/@minicode/agent-sdk/dist/src/tools/read-file.js +3 -3
  94. package/node_modules/@minicode/agent-sdk/dist/src/tools/read-file.js.map +1 -1
  95. package/node_modules/@minicode/agent-sdk/dist/src/tools/run-command.d.ts +12 -2
  96. package/node_modules/@minicode/agent-sdk/dist/src/tools/run-command.d.ts.map +1 -1
  97. package/node_modules/@minicode/agent-sdk/dist/src/tools/run-command.js +5 -5
  98. package/node_modules/@minicode/agent-sdk/dist/src/tools/run-command.js.map +1 -1
  99. package/node_modules/@minicode/agent-sdk/dist/src/tools/search.d.ts +10 -2
  100. package/node_modules/@minicode/agent-sdk/dist/src/tools/search.d.ts.map +1 -1
  101. package/node_modules/@minicode/agent-sdk/dist/src/tools/search.js +5 -5
  102. package/node_modules/@minicode/agent-sdk/dist/src/tools/search.js.map +1 -1
  103. package/node_modules/@minicode/agent-sdk/dist/src/tools/write-file.d.ts +10 -3
  104. package/node_modules/@minicode/agent-sdk/dist/src/tools/write-file.d.ts.map +1 -1
  105. package/node_modules/@minicode/agent-sdk/dist/src/tools/write-file.js +3 -3
  106. package/node_modules/@minicode/agent-sdk/dist/src/tools/write-file.js.map +1 -1
  107. package/node_modules/@minicode/agent-sdk/dist/tests/agent.test.js +342 -0
  108. package/node_modules/@minicode/agent-sdk/dist/tests/agent.test.js.map +1 -1
  109. package/node_modules/@minicode/agent-sdk/dist/tests/mcp-client.integration.test.d.ts +2 -0
  110. package/node_modules/@minicode/agent-sdk/dist/tests/mcp-client.integration.test.d.ts.map +1 -0
  111. package/node_modules/@minicode/agent-sdk/dist/tests/mcp-client.integration.test.js +64 -0
  112. package/node_modules/@minicode/agent-sdk/dist/tests/mcp-client.integration.test.js.map +1 -0
  113. package/node_modules/@minicode/agent-sdk/dist/tests/mcp-client.test.d.ts +2 -0
  114. package/node_modules/@minicode/agent-sdk/dist/tests/mcp-client.test.d.ts.map +1 -0
  115. package/node_modules/@minicode/agent-sdk/dist/tests/mcp-client.test.js +350 -0
  116. package/node_modules/@minicode/agent-sdk/dist/tests/mcp-client.test.js.map +1 -0
  117. package/node_modules/@minicode/agent-sdk/dist/tests/model-client-anthropic-structured-output.test.d.ts +2 -0
  118. package/node_modules/@minicode/agent-sdk/dist/tests/model-client-anthropic-structured-output.test.d.ts.map +1 -0
  119. package/node_modules/@minicode/agent-sdk/dist/tests/model-client-anthropic-structured-output.test.js +211 -0
  120. package/node_modules/@minicode/agent-sdk/dist/tests/model-client-anthropic-structured-output.test.js.map +1 -0
  121. package/node_modules/@minicode/agent-sdk/dist/tests/model-client-openai.test.js +88 -0
  122. package/node_modules/@minicode/agent-sdk/dist/tests/model-client-openai.test.js.map +1 -1
  123. package/node_modules/@minicode/agent-sdk/dist/tests/model-client-structured-output.test.d.ts +2 -0
  124. package/node_modules/@minicode/agent-sdk/dist/tests/model-client-structured-output.test.d.ts.map +1 -0
  125. package/node_modules/@minicode/agent-sdk/dist/tests/model-client-structured-output.test.js +171 -0
  126. package/node_modules/@minicode/agent-sdk/dist/tests/model-client-structured-output.test.js.map +1 -0
  127. package/node_modules/@minicode/agent-sdk/dist/tests/session.test.js +34 -0
  128. package/node_modules/@minicode/agent-sdk/dist/tests/session.test.js.map +1 -1
  129. package/node_modules/@minicode/agent-sdk/dist/tests/structured-output.test.d.ts +2 -0
  130. package/node_modules/@minicode/agent-sdk/dist/tests/structured-output.test.d.ts.map +1 -0
  131. package/node_modules/@minicode/agent-sdk/dist/tests/structured-output.test.js +212 -0
  132. package/node_modules/@minicode/agent-sdk/dist/tests/structured-output.test.js.map +1 -0
  133. package/node_modules/@minicode/agent-sdk/dist/tests/system-prompt.test.js +7 -7
  134. package/node_modules/@minicode/agent-sdk/dist/tests/system-prompt.test.js.map +1 -1
  135. package/node_modules/@minicode/agent-sdk/dist/tests/tool-factory-options.test.d.ts +2 -0
  136. package/node_modules/@minicode/agent-sdk/dist/tests/tool-factory-options.test.d.ts.map +1 -0
  137. package/node_modules/@minicode/agent-sdk/dist/tests/tool-factory-options.test.js +72 -0
  138. package/node_modules/@minicode/agent-sdk/dist/tests/tool-factory-options.test.js.map +1 -0
  139. package/node_modules/@minicode/agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
  140. package/node_modules/@minicode/agent-sdk/package.json +5 -2
  141. package/node_modules/minicode-plugin-python/dist/src/index.d.ts +9 -0
  142. package/node_modules/minicode-plugin-python/dist/src/index.d.ts.map +1 -0
  143. package/node_modules/minicode-plugin-python/dist/src/index.js +679 -0
  144. package/node_modules/minicode-plugin-python/dist/src/index.js.map +1 -0
  145. package/node_modules/minicode-plugin-python/dist/tsconfig.tsbuildinfo +1 -0
  146. package/node_modules/minicode-plugin-python/package.json +37 -0
  147. package/node_modules/node-addon-api/LICENSE.md +9 -0
  148. package/node_modules/node-addon-api/README.md +95 -0
  149. package/node_modules/node-addon-api/common.gypi +21 -0
  150. package/node_modules/node-addon-api/except.gypi +25 -0
  151. package/node_modules/node-addon-api/index.js +14 -0
  152. package/node_modules/node-addon-api/napi-inl.deprecated.h +186 -0
  153. package/node_modules/node-addon-api/napi-inl.h +7165 -0
  154. package/node_modules/node-addon-api/napi.h +3364 -0
  155. package/node_modules/node-addon-api/node_addon_api.gyp +42 -0
  156. package/node_modules/node-addon-api/node_api.gyp +9 -0
  157. package/node_modules/node-addon-api/noexcept.gypi +26 -0
  158. package/node_modules/node-addon-api/nothing.c +0 -0
  159. package/node_modules/node-addon-api/package-support.json +21 -0
  160. package/node_modules/node-addon-api/package.json +480 -0
  161. package/node_modules/node-addon-api/tools/README.md +73 -0
  162. package/node_modules/node-addon-api/tools/check-napi.js +99 -0
  163. package/node_modules/node-addon-api/tools/clang-format.js +71 -0
  164. package/node_modules/node-addon-api/tools/conversion.js +301 -0
  165. package/node_modules/node-gyp-build/LICENSE +21 -0
  166. package/node_modules/node-gyp-build/README.md +58 -0
  167. package/node_modules/node-gyp-build/SECURITY.md +5 -0
  168. package/node_modules/node-gyp-build/bin.js +84 -0
  169. package/node_modules/node-gyp-build/build-test.js +19 -0
  170. package/node_modules/node-gyp-build/index.js +6 -0
  171. package/node_modules/node-gyp-build/node-gyp-build.js +207 -0
  172. package/node_modules/node-gyp-build/optional.js +7 -0
  173. package/node_modules/node-gyp-build/package.json +43 -0
  174. package/node_modules/tree-sitter/LICENSE +21 -0
  175. package/node_modules/tree-sitter/README.md +128 -0
  176. package/node_modules/tree-sitter/binding.gyp +80 -0
  177. package/node_modules/tree-sitter/index.js +916 -0
  178. package/node_modules/tree-sitter/package.json +76 -0
  179. package/node_modules/tree-sitter/src/addon_data.h +47 -0
  180. package/node_modules/tree-sitter/src/binding.cc +35 -0
  181. package/node_modules/tree-sitter/src/conversions.cc +140 -0
  182. package/node_modules/tree-sitter/src/conversions.h +22 -0
  183. package/node_modules/tree-sitter/src/language.cc +106 -0
  184. package/node_modules/tree-sitter/src/language.h +17 -0
  185. package/node_modules/tree-sitter/src/logger.cc +70 -0
  186. package/node_modules/tree-sitter/src/logger.h +19 -0
  187. package/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
  188. package/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
  189. package/node_modules/tree-sitter/src/node.cc +1088 -0
  190. package/node_modules/tree-sitter/src/node.h +30 -0
  191. package/node_modules/tree-sitter/src/parser.cc +306 -0
  192. package/node_modules/tree-sitter/src/parser.h +35 -0
  193. package/node_modules/tree-sitter/src/query.cc +397 -0
  194. package/node_modules/tree-sitter/src/query.h +40 -0
  195. package/node_modules/tree-sitter/src/tree.cc +316 -0
  196. package/node_modules/tree-sitter/src/tree.h +45 -0
  197. package/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
  198. package/node_modules/tree-sitter/src/tree_cursor.h +52 -0
  199. package/node_modules/tree-sitter/tree-sitter.d.ts +1042 -0
  200. package/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1478 -0
  201. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
  202. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
  203. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +291 -0
  204. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
  205. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
  206. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
  207. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +523 -0
  208. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
  209. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
  210. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +293 -0
  211. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +293 -0
  212. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
  213. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +483 -0
  214. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +54 -0
  215. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +12 -0
  216. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +875 -0
  217. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2293 -0
  218. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +286 -0
  219. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +48 -0
  220. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/portable/endian.h +239 -0
  221. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4350 -0
  222. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
  223. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
  224. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +911 -0
  225. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +133 -0
  226. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1034 -0
  227. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +399 -0
  228. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +170 -0
  229. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
  230. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +717 -0
  231. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
  232. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/ts_assert.h +11 -0
  233. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
  234. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
  235. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
  236. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
  237. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
  238. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
  239. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
  240. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
  241. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
  242. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +75 -0
  243. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +24 -0
  244. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +113 -0
  245. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1314 -0
  246. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1935 -0
  247. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
  248. package/node_modules/tree-sitter-python/LICENSE +21 -0
  249. package/node_modules/tree-sitter-python/README.md +24 -0
  250. package/node_modules/tree-sitter-python/binding.gyp +35 -0
  251. package/node_modules/tree-sitter-python/bindings/node/binding.cc +19 -0
  252. package/node_modules/tree-sitter-python/bindings/node/binding_test.js +9 -0
  253. package/node_modules/tree-sitter-python/bindings/node/index.d.ts +27 -0
  254. package/node_modules/tree-sitter-python/bindings/node/index.js +11 -0
  255. package/node_modules/tree-sitter-python/grammar.js +1225 -0
  256. package/node_modules/tree-sitter-python/package.json +60 -0
  257. package/node_modules/tree-sitter-python/prebuilds/darwin-arm64/tree-sitter-python.node +0 -0
  258. package/node_modules/tree-sitter-python/prebuilds/darwin-x64/tree-sitter-python.node +0 -0
  259. package/node_modules/tree-sitter-python/prebuilds/linux-arm64/tree-sitter-python.node +0 -0
  260. package/node_modules/tree-sitter-python/prebuilds/linux-x64/tree-sitter-python.node +0 -0
  261. package/node_modules/tree-sitter-python/prebuilds/win32-arm64/tree-sitter-python.node +0 -0
  262. package/node_modules/tree-sitter-python/prebuilds/win32-x64/tree-sitter-python.node +0 -0
  263. package/node_modules/tree-sitter-python/queries/highlights.scm +137 -0
  264. package/node_modules/tree-sitter-python/queries/tags.scm +14 -0
  265. package/node_modules/tree-sitter-python/src/grammar.json +6435 -0
  266. package/node_modules/tree-sitter-python/src/node-types.json +3746 -0
  267. package/node_modules/tree-sitter-python/src/parser.c +129742 -0
  268. package/node_modules/tree-sitter-python/src/scanner.c +437 -0
  269. package/node_modules/tree-sitter-python/src/tree_sitter/alloc.h +54 -0
  270. package/node_modules/tree-sitter-python/src/tree_sitter/array.h +291 -0
  271. package/node_modules/tree-sitter-python/src/tree_sitter/parser.h +286 -0
  272. package/node_modules/tree-sitter-python/tree-sitter-python.wasm +0 -0
  273. package/node_modules/tree-sitter-python/tree-sitter.json +42 -0
  274. package/package.json +13 -7
  275. package/packages/agent-sdk/node_modules/ajv/.runkit_example.js +23 -0
  276. package/packages/agent-sdk/node_modules/ajv/LICENSE +22 -0
  277. package/packages/agent-sdk/node_modules/ajv/README.md +207 -0
  278. package/packages/agent-sdk/node_modules/ajv/dist/2019.d.ts +19 -0
  279. package/packages/agent-sdk/node_modules/ajv/dist/2019.js +61 -0
  280. package/packages/agent-sdk/node_modules/ajv/dist/2019.js.map +1 -0
  281. package/packages/agent-sdk/node_modules/ajv/dist/2020.d.ts +19 -0
  282. package/packages/agent-sdk/node_modules/ajv/dist/2020.js +55 -0
  283. package/packages/agent-sdk/node_modules/ajv/dist/2020.js.map +1 -0
  284. package/packages/agent-sdk/node_modules/ajv/dist/ajv.d.ts +18 -0
  285. package/packages/agent-sdk/node_modules/ajv/dist/ajv.js +50 -0
  286. package/packages/agent-sdk/node_modules/ajv/dist/ajv.js.map +1 -0
  287. package/packages/agent-sdk/node_modules/ajv/dist/compile/codegen/code.d.ts +40 -0
  288. package/packages/agent-sdk/node_modules/ajv/dist/compile/codegen/code.js +156 -0
  289. package/packages/agent-sdk/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
  290. package/packages/agent-sdk/node_modules/ajv/dist/compile/codegen/index.d.ts +79 -0
  291. package/packages/agent-sdk/node_modules/ajv/dist/compile/codegen/index.js +697 -0
  292. package/packages/agent-sdk/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
  293. package/packages/agent-sdk/node_modules/ajv/dist/compile/codegen/scope.d.ts +79 -0
  294. package/packages/agent-sdk/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
  295. package/packages/agent-sdk/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
  296. package/packages/agent-sdk/node_modules/ajv/dist/compile/errors.d.ts +13 -0
  297. package/packages/agent-sdk/node_modules/ajv/dist/compile/errors.js +123 -0
  298. package/packages/agent-sdk/node_modules/ajv/dist/compile/errors.js.map +1 -0
  299. package/packages/agent-sdk/node_modules/ajv/dist/compile/index.d.ts +80 -0
  300. package/packages/agent-sdk/node_modules/ajv/dist/compile/index.js +242 -0
  301. package/packages/agent-sdk/node_modules/ajv/dist/compile/index.js.map +1 -0
  302. package/packages/agent-sdk/node_modules/ajv/dist/compile/jtd/parse.d.ts +4 -0
  303. package/packages/agent-sdk/node_modules/ajv/dist/compile/jtd/parse.js +350 -0
  304. package/packages/agent-sdk/node_modules/ajv/dist/compile/jtd/parse.js.map +1 -0
  305. package/packages/agent-sdk/node_modules/ajv/dist/compile/jtd/serialize.d.ts +4 -0
  306. package/packages/agent-sdk/node_modules/ajv/dist/compile/jtd/serialize.js +236 -0
  307. package/packages/agent-sdk/node_modules/ajv/dist/compile/jtd/serialize.js.map +1 -0
  308. package/packages/agent-sdk/node_modules/ajv/dist/compile/jtd/types.d.ts +6 -0
  309. package/packages/agent-sdk/node_modules/ajv/dist/compile/jtd/types.js +14 -0
  310. package/packages/agent-sdk/node_modules/ajv/dist/compile/jtd/types.js.map +1 -0
  311. package/packages/agent-sdk/node_modules/ajv/dist/compile/names.d.ts +20 -0
  312. package/packages/agent-sdk/node_modules/ajv/dist/compile/names.js +28 -0
  313. package/packages/agent-sdk/node_modules/ajv/dist/compile/names.js.map +1 -0
  314. package/packages/agent-sdk/node_modules/ajv/dist/compile/ref_error.d.ts +6 -0
  315. package/packages/agent-sdk/node_modules/ajv/dist/compile/ref_error.js +12 -0
  316. package/packages/agent-sdk/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
  317. package/packages/agent-sdk/node_modules/ajv/dist/compile/resolve.d.ts +12 -0
  318. package/packages/agent-sdk/node_modules/ajv/dist/compile/resolve.js +155 -0
  319. package/packages/agent-sdk/node_modules/ajv/dist/compile/resolve.js.map +1 -0
  320. package/packages/agent-sdk/node_modules/ajv/dist/compile/rules.d.ts +28 -0
  321. package/packages/agent-sdk/node_modules/ajv/dist/compile/rules.js +26 -0
  322. package/packages/agent-sdk/node_modules/ajv/dist/compile/rules.js.map +1 -0
  323. package/packages/agent-sdk/node_modules/ajv/dist/compile/util.d.ts +40 -0
  324. package/packages/agent-sdk/node_modules/ajv/dist/compile/util.js +178 -0
  325. package/packages/agent-sdk/node_modules/ajv/dist/compile/util.js.map +1 -0
  326. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/applicability.d.ts +6 -0
  327. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
  328. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
  329. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/boolSchema.d.ts +4 -0
  330. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
  331. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
  332. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/dataType.d.ts +17 -0
  333. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
  334. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
  335. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/defaults.d.ts +2 -0
  336. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
  337. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
  338. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/index.d.ts +42 -0
  339. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/index.js +520 -0
  340. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
  341. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/keyword.d.ts +8 -0
  342. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
  343. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
  344. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/subschema.d.ts +47 -0
  345. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
  346. package/packages/agent-sdk/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
  347. package/packages/agent-sdk/node_modules/ajv/dist/core.d.ts +174 -0
  348. package/packages/agent-sdk/node_modules/ajv/dist/core.js +618 -0
  349. package/packages/agent-sdk/node_modules/ajv/dist/core.js.map +1 -0
  350. package/packages/agent-sdk/node_modules/ajv/dist/jtd.d.ts +47 -0
  351. package/packages/agent-sdk/node_modules/ajv/dist/jtd.js +72 -0
  352. package/packages/agent-sdk/node_modules/ajv/dist/jtd.js.map +1 -0
  353. package/packages/agent-sdk/node_modules/ajv/dist/refs/data.json +13 -0
  354. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2019-09/index.d.ts +2 -0
  355. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2019-09/index.js +28 -0
  356. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2019-09/index.js.map +1 -0
  357. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2019-09/meta/applicator.json +53 -0
  358. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2019-09/meta/content.json +17 -0
  359. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2019-09/meta/core.json +57 -0
  360. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2019-09/meta/format.json +14 -0
  361. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2019-09/meta/meta-data.json +37 -0
  362. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2019-09/meta/validation.json +90 -0
  363. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2019-09/schema.json +39 -0
  364. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2020-12/index.d.ts +2 -0
  365. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +30 -0
  366. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2020-12/index.js.map +1 -0
  367. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json +48 -0
  368. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json +17 -0
  369. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json +51 -0
  370. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
  371. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json +37 -0
  372. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
  373. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json +90 -0
  374. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json +55 -0
  375. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-draft-06.json +137 -0
  376. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
  377. package/packages/agent-sdk/node_modules/ajv/dist/refs/json-schema-secure.json +88 -0
  378. package/packages/agent-sdk/node_modules/ajv/dist/refs/jtd-schema.d.ts +3 -0
  379. package/packages/agent-sdk/node_modules/ajv/dist/refs/jtd-schema.js +118 -0
  380. package/packages/agent-sdk/node_modules/ajv/dist/refs/jtd-schema.js.map +1 -0
  381. package/packages/agent-sdk/node_modules/ajv/dist/runtime/equal.d.ts +6 -0
  382. package/packages/agent-sdk/node_modules/ajv/dist/runtime/equal.js +7 -0
  383. package/packages/agent-sdk/node_modules/ajv/dist/runtime/equal.js.map +1 -0
  384. package/packages/agent-sdk/node_modules/ajv/dist/runtime/parseJson.d.ts +18 -0
  385. package/packages/agent-sdk/node_modules/ajv/dist/runtime/parseJson.js +185 -0
  386. package/packages/agent-sdk/node_modules/ajv/dist/runtime/parseJson.js.map +1 -0
  387. package/packages/agent-sdk/node_modules/ajv/dist/runtime/quote.d.ts +5 -0
  388. package/packages/agent-sdk/node_modules/ajv/dist/runtime/quote.js +30 -0
  389. package/packages/agent-sdk/node_modules/ajv/dist/runtime/quote.js.map +1 -0
  390. package/packages/agent-sdk/node_modules/ajv/dist/runtime/re2.d.ts +6 -0
  391. package/packages/agent-sdk/node_modules/ajv/dist/runtime/re2.js +6 -0
  392. package/packages/agent-sdk/node_modules/ajv/dist/runtime/re2.js.map +1 -0
  393. package/packages/agent-sdk/node_modules/ajv/dist/runtime/timestamp.d.ts +5 -0
  394. package/packages/agent-sdk/node_modules/ajv/dist/runtime/timestamp.js +42 -0
  395. package/packages/agent-sdk/node_modules/ajv/dist/runtime/timestamp.js.map +1 -0
  396. package/packages/agent-sdk/node_modules/ajv/dist/runtime/ucs2length.d.ts +5 -0
  397. package/packages/agent-sdk/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
  398. package/packages/agent-sdk/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
  399. package/packages/agent-sdk/node_modules/ajv/dist/runtime/uri.d.ts +6 -0
  400. package/packages/agent-sdk/node_modules/ajv/dist/runtime/uri.js +6 -0
  401. package/packages/agent-sdk/node_modules/ajv/dist/runtime/uri.js.map +1 -0
  402. package/packages/agent-sdk/node_modules/ajv/dist/runtime/validation_error.d.ts +7 -0
  403. package/packages/agent-sdk/node_modules/ajv/dist/runtime/validation_error.js +11 -0
  404. package/packages/agent-sdk/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
  405. package/packages/agent-sdk/node_modules/ajv/dist/standalone/index.d.ts +6 -0
  406. package/packages/agent-sdk/node_modules/ajv/dist/standalone/index.js +90 -0
  407. package/packages/agent-sdk/node_modules/ajv/dist/standalone/index.js.map +1 -0
  408. package/packages/agent-sdk/node_modules/ajv/dist/standalone/instance.d.ts +12 -0
  409. package/packages/agent-sdk/node_modules/ajv/dist/standalone/instance.js +35 -0
  410. package/packages/agent-sdk/node_modules/ajv/dist/standalone/instance.js.map +1 -0
  411. package/packages/agent-sdk/node_modules/ajv/dist/types/index.d.ts +183 -0
  412. package/packages/agent-sdk/node_modules/ajv/dist/types/index.js +3 -0
  413. package/packages/agent-sdk/node_modules/ajv/dist/types/index.js.map +1 -0
  414. package/packages/agent-sdk/node_modules/ajv/dist/types/json-schema.d.ts +125 -0
  415. package/packages/agent-sdk/node_modules/ajv/dist/types/json-schema.js +3 -0
  416. package/packages/agent-sdk/node_modules/ajv/dist/types/json-schema.js.map +1 -0
  417. package/packages/agent-sdk/node_modules/ajv/dist/types/jtd-schema.d.ts +174 -0
  418. package/packages/agent-sdk/node_modules/ajv/dist/types/jtd-schema.js +3 -0
  419. package/packages/agent-sdk/node_modules/ajv/dist/types/jtd-schema.js.map +1 -0
  420. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts +8 -0
  421. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
  422. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
  423. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts +6 -0
  424. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
  425. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
  426. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/allOf.d.ts +3 -0
  427. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
  428. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
  429. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts +4 -0
  430. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
  431. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
  432. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts +7 -0
  433. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
  434. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
  435. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts +21 -0
  436. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
  437. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
  438. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.d.ts +3 -0
  439. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +11 -0
  440. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js.map +1 -0
  441. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/if.d.ts +6 -0
  442. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
  443. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
  444. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/index.d.ts +13 -0
  445. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
  446. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
  447. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/items.d.ts +5 -0
  448. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
  449. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
  450. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts +6 -0
  451. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
  452. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
  453. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/not.d.ts +4 -0
  454. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
  455. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
  456. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts +6 -0
  457. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
  458. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
  459. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/patternProperties.d.ts +3 -0
  460. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
  461. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
  462. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/prefixItems.d.ts +3 -0
  463. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
  464. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
  465. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/properties.d.ts +3 -0
  466. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
  467. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
  468. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts +6 -0
  469. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
  470. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
  471. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/thenElse.d.ts +3 -0
  472. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
  473. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
  474. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/code.d.ts +17 -0
  475. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/code.js +131 -0
  476. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
  477. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/core/id.d.ts +3 -0
  478. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
  479. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
  480. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/core/index.d.ts +3 -0
  481. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
  482. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
  483. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/core/ref.d.ts +8 -0
  484. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
  485. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
  486. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts +5 -0
  487. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
  488. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
  489. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts +10 -0
  490. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
  491. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
  492. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/draft2020.d.ts +3 -0
  493. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/draft2020.js +23 -0
  494. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/draft2020.js.map +1 -0
  495. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/draft7.d.ts +3 -0
  496. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
  497. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
  498. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.d.ts +5 -0
  499. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +30 -0
  500. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js.map +1 -0
  501. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.d.ts +5 -0
  502. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +51 -0
  503. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js.map +1 -0
  504. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/index.d.ts +3 -0
  505. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/index.js +9 -0
  506. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/index.js.map +1 -0
  507. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.d.ts +3 -0
  508. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +16 -0
  509. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js.map +1 -0
  510. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.d.ts +3 -0
  511. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +10 -0
  512. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js.map +1 -0
  513. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/errors.d.ts +9 -0
  514. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/errors.js +3 -0
  515. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/errors.js.map +1 -0
  516. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/format/format.d.ts +8 -0
  517. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
  518. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
  519. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/format/index.d.ts +3 -0
  520. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
  521. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
  522. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts +6 -0
  523. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/discriminator.js +71 -0
  524. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/discriminator.js.map +1 -0
  525. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts +5 -0
  526. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/elements.js +24 -0
  527. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/elements.js.map +1 -0
  528. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts +6 -0
  529. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/enum.js +43 -0
  530. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/enum.js.map +1 -0
  531. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/error.d.ts +9 -0
  532. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/error.js +20 -0
  533. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/error.js.map +1 -0
  534. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/index.d.ts +10 -0
  535. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/index.js +29 -0
  536. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/index.js.map +1 -0
  537. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/metadata.d.ts +5 -0
  538. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/metadata.js +25 -0
  539. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/metadata.js.map +1 -0
  540. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/nullable.d.ts +4 -0
  541. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/nullable.js +22 -0
  542. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/nullable.js.map +1 -0
  543. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.d.ts +3 -0
  544. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js +15 -0
  545. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js.map +1 -0
  546. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts +22 -0
  547. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/properties.js +149 -0
  548. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/properties.js.map +1 -0
  549. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/ref.d.ts +4 -0
  550. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/ref.js +67 -0
  551. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/ref.js.map +1 -0
  552. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/type.d.ts +10 -0
  553. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/type.js +69 -0
  554. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/type.js.map +1 -0
  555. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/union.d.ts +3 -0
  556. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/union.js +12 -0
  557. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/union.js.map +1 -0
  558. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/values.d.ts +5 -0
  559. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/values.js +51 -0
  560. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/jtd/values.js.map +1 -0
  561. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/metadata.d.ts +3 -0
  562. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
  563. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
  564. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/next.d.ts +3 -0
  565. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/next.js +8 -0
  566. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/next.js.map +1 -0
  567. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/unevaluated/index.d.ts +3 -0
  568. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/unevaluated/index.js +7 -0
  569. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/unevaluated/index.js.map +1 -0
  570. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts +6 -0
  571. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +40 -0
  572. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js.map +1 -0
  573. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts +6 -0
  574. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +65 -0
  575. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js.map +1 -0
  576. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/const.d.ts +6 -0
  577. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
  578. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
  579. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts +5 -0
  580. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +12 -0
  581. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js.map +1 -0
  582. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/enum.d.ts +8 -0
  583. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
  584. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
  585. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/index.d.ts +16 -0
  586. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
  587. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
  588. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitContains.d.ts +3 -0
  589. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitContains.js +15 -0
  590. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitContains.js.map +1 -0
  591. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitItems.d.ts +3 -0
  592. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
  593. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
  594. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitLength.d.ts +3 -0
  595. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
  596. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
  597. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts +11 -0
  598. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
  599. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
  600. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitProperties.d.ts +3 -0
  601. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
  602. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
  603. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts +8 -0
  604. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
  605. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
  606. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts +8 -0
  607. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/pattern.js +33 -0
  608. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
  609. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/required.d.ts +8 -0
  610. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
  611. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
  612. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts +9 -0
  613. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
  614. package/packages/agent-sdk/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
  615. package/packages/agent-sdk/node_modules/ajv/lib/2019.ts +81 -0
  616. package/packages/agent-sdk/node_modules/ajv/lib/2020.ts +75 -0
  617. package/packages/agent-sdk/node_modules/ajv/lib/ajv.ts +70 -0
  618. package/packages/agent-sdk/node_modules/ajv/lib/compile/codegen/code.ts +169 -0
  619. package/packages/agent-sdk/node_modules/ajv/lib/compile/codegen/index.ts +852 -0
  620. package/packages/agent-sdk/node_modules/ajv/lib/compile/codegen/scope.ts +215 -0
  621. package/packages/agent-sdk/node_modules/ajv/lib/compile/errors.ts +184 -0
  622. package/packages/agent-sdk/node_modules/ajv/lib/compile/index.ts +324 -0
  623. package/packages/agent-sdk/node_modules/ajv/lib/compile/jtd/parse.ts +411 -0
  624. package/packages/agent-sdk/node_modules/ajv/lib/compile/jtd/serialize.ts +277 -0
  625. package/packages/agent-sdk/node_modules/ajv/lib/compile/jtd/types.ts +16 -0
  626. package/packages/agent-sdk/node_modules/ajv/lib/compile/names.ts +27 -0
  627. package/packages/agent-sdk/node_modules/ajv/lib/compile/ref_error.ts +13 -0
  628. package/packages/agent-sdk/node_modules/ajv/lib/compile/resolve.ts +149 -0
  629. package/packages/agent-sdk/node_modules/ajv/lib/compile/rules.ts +50 -0
  630. package/packages/agent-sdk/node_modules/ajv/lib/compile/util.ts +213 -0
  631. package/packages/agent-sdk/node_modules/ajv/lib/compile/validate/applicability.ts +22 -0
  632. package/packages/agent-sdk/node_modules/ajv/lib/compile/validate/boolSchema.ts +47 -0
  633. package/packages/agent-sdk/node_modules/ajv/lib/compile/validate/dataType.ts +230 -0
  634. package/packages/agent-sdk/node_modules/ajv/lib/compile/validate/defaults.ts +32 -0
  635. package/packages/agent-sdk/node_modules/ajv/lib/compile/validate/index.ts +582 -0
  636. package/packages/agent-sdk/node_modules/ajv/lib/compile/validate/keyword.ts +171 -0
  637. package/packages/agent-sdk/node_modules/ajv/lib/compile/validate/subschema.ts +135 -0
  638. package/packages/agent-sdk/node_modules/ajv/lib/core.ts +892 -0
  639. package/packages/agent-sdk/node_modules/ajv/lib/jtd.ts +132 -0
  640. package/packages/agent-sdk/node_modules/ajv/lib/refs/data.json +13 -0
  641. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2019-09/index.ts +28 -0
  642. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2019-09/meta/applicator.json +53 -0
  643. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2019-09/meta/content.json +17 -0
  644. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2019-09/meta/core.json +57 -0
  645. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2019-09/meta/format.json +14 -0
  646. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2019-09/meta/meta-data.json +37 -0
  647. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2019-09/meta/validation.json +90 -0
  648. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2019-09/schema.json +39 -0
  649. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2020-12/index.ts +30 -0
  650. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2020-12/meta/applicator.json +48 -0
  651. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2020-12/meta/content.json +17 -0
  652. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2020-12/meta/core.json +51 -0
  653. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
  654. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2020-12/meta/meta-data.json +37 -0
  655. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
  656. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2020-12/meta/validation.json +90 -0
  657. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-2020-12/schema.json +55 -0
  658. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-draft-06.json +137 -0
  659. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-draft-07.json +151 -0
  660. package/packages/agent-sdk/node_modules/ajv/lib/refs/json-schema-secure.json +88 -0
  661. package/packages/agent-sdk/node_modules/ajv/lib/refs/jtd-schema.ts +130 -0
  662. package/packages/agent-sdk/node_modules/ajv/lib/runtime/equal.ts +7 -0
  663. package/packages/agent-sdk/node_modules/ajv/lib/runtime/parseJson.ts +177 -0
  664. package/packages/agent-sdk/node_modules/ajv/lib/runtime/quote.ts +31 -0
  665. package/packages/agent-sdk/node_modules/ajv/lib/runtime/re2.ts +6 -0
  666. package/packages/agent-sdk/node_modules/ajv/lib/runtime/timestamp.ts +46 -0
  667. package/packages/agent-sdk/node_modules/ajv/lib/runtime/ucs2length.ts +20 -0
  668. package/packages/agent-sdk/node_modules/ajv/lib/runtime/uri.ts +6 -0
  669. package/packages/agent-sdk/node_modules/ajv/lib/runtime/validation_error.ts +13 -0
  670. package/packages/agent-sdk/node_modules/ajv/lib/standalone/index.ts +100 -0
  671. package/packages/agent-sdk/node_modules/ajv/lib/standalone/instance.ts +36 -0
  672. package/packages/agent-sdk/node_modules/ajv/lib/types/index.ts +244 -0
  673. package/packages/agent-sdk/node_modules/ajv/lib/types/json-schema.ts +187 -0
  674. package/packages/agent-sdk/node_modules/ajv/lib/types/jtd-schema.ts +273 -0
  675. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts +56 -0
  676. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts +118 -0
  677. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/allOf.ts +22 -0
  678. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts +14 -0
  679. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/contains.ts +109 -0
  680. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts +112 -0
  681. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/dependentSchemas.ts +11 -0
  682. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/if.ts +80 -0
  683. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/index.ts +53 -0
  684. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/items.ts +59 -0
  685. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/items2020.ts +36 -0
  686. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/not.ts +38 -0
  687. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts +82 -0
  688. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts +91 -0
  689. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts +12 -0
  690. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/properties.ts +57 -0
  691. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts +50 -0
  692. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts +13 -0
  693. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/code.ts +168 -0
  694. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/core/id.ts +10 -0
  695. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/core/index.ts +16 -0
  696. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/core/ref.ts +129 -0
  697. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/discriminator/index.ts +113 -0
  698. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/discriminator/types.ts +12 -0
  699. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/draft2020.ts +23 -0
  700. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/draft7.ts +17 -0
  701. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts +31 -0
  702. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts +51 -0
  703. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/dynamic/index.ts +9 -0
  704. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts +14 -0
  705. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/dynamic/recursiveRef.ts +10 -0
  706. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/errors.ts +18 -0
  707. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/format/format.ts +120 -0
  708. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/format/index.ts +6 -0
  709. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/jtd/discriminator.ts +89 -0
  710. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/jtd/elements.ts +32 -0
  711. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/jtd/enum.ts +45 -0
  712. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/jtd/error.ts +23 -0
  713. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/jtd/index.ts +37 -0
  714. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/jtd/metadata.ts +24 -0
  715. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/jtd/nullable.ts +21 -0
  716. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/jtd/optionalProperties.ts +15 -0
  717. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/jtd/properties.ts +184 -0
  718. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/jtd/ref.ts +76 -0
  719. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/jtd/type.ts +75 -0
  720. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/jtd/union.ts +12 -0
  721. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/jtd/values.ts +58 -0
  722. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/metadata.ts +17 -0
  723. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/next.ts +8 -0
  724. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/unevaluated/index.ts +7 -0
  725. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts +47 -0
  726. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts +85 -0
  727. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/validation/const.ts +28 -0
  728. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/validation/dependentRequired.ts +23 -0
  729. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/validation/enum.ts +54 -0
  730. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/validation/index.ts +49 -0
  731. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/validation/limitContains.ts +16 -0
  732. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/validation/limitItems.ts +26 -0
  733. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/validation/limitLength.ts +30 -0
  734. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts +42 -0
  735. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts +26 -0
  736. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts +34 -0
  737. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/validation/pattern.ts +39 -0
  738. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/validation/required.ts +98 -0
  739. package/packages/agent-sdk/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts +79 -0
  740. package/packages/agent-sdk/node_modules/ajv/package.json +126 -0
  741. package/packages/agent-sdk/node_modules/json-schema-traverse/.eslintrc.yml +27 -0
  742. package/packages/agent-sdk/node_modules/json-schema-traverse/.github/FUNDING.yml +2 -0
  743. package/packages/agent-sdk/node_modules/json-schema-traverse/.github/workflows/build.yml +28 -0
  744. package/packages/agent-sdk/node_modules/json-schema-traverse/.github/workflows/publish.yml +27 -0
  745. package/packages/agent-sdk/node_modules/json-schema-traverse/LICENSE +21 -0
  746. package/packages/agent-sdk/node_modules/json-schema-traverse/README.md +95 -0
  747. package/packages/agent-sdk/node_modules/json-schema-traverse/index.d.ts +40 -0
  748. package/packages/agent-sdk/node_modules/json-schema-traverse/index.js +93 -0
  749. package/packages/agent-sdk/node_modules/json-schema-traverse/package.json +43 -0
  750. package/packages/agent-sdk/node_modules/json-schema-traverse/spec/.eslintrc.yml +6 -0
  751. package/packages/agent-sdk/node_modules/json-schema-traverse/spec/fixtures/schema.js +125 -0
  752. package/packages/agent-sdk/node_modules/json-schema-traverse/spec/index.spec.js +171 -0
@@ -1,3 +1,9 @@
1
+ /* ─────────────────────────────────────────────────────────────────────────
2
+ minicode web app — style.css
3
+ Facelift: teal accent, tightened token system, editorial header,
4
+ grouped toolbar, polished chat + symbol detail. No class names changed.
5
+ ───────────────────────────────────────────────────────────────────────── */
6
+
1
7
  *, *::before, *::after {
2
8
  margin: 0;
3
9
  padding: 0;
@@ -5,19 +11,42 @@
5
11
  }
6
12
 
7
13
  :root {
8
- --bg: #1a1b26;
9
- --bg-surface: #222336;
10
- --bg-hover: #2a2b3d;
11
- --text: #c0caf5;
12
- --text-dim: #565f89;
13
- --accent: #7aa2f7;
14
- --accent-dim: #3d59a1;
15
- --green: #9ece6a;
16
- --yellow: #e0af68;
17
- --red: #f7768e;
18
- --border: #33354a;
19
- --font-mono: 'JetBrains Mono', 'Fira Code', 'SF Mono', Menlo, monospace;
20
- --font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
14
+ /* ── Base palette ────────────────────────────────────────────────── */
15
+ --bg: #0f1118;
16
+ --bg-surface: #161921;
17
+ --bg-hover: #1d2130;
18
+ --bg-2: #1a1e2a;
19
+
20
+ /* ── Text ────────────────────────────────────────────────────────── */
21
+ --text: #d8dff5;
22
+ --text-dim: #5a6380;
23
+ --text-mid: #8d96b8;
24
+
25
+ /* ── Accent (teal matches landing page) ────────────────────────── */
26
+ --accent: #56c8d8;
27
+ --accent-dim: #1e4a52;
28
+ --accent-soft: rgba(86, 200, 216, 0.12);
29
+ --accent-line: rgba(86, 200, 216, 0.28);
30
+
31
+ /* ── Semantic colors ─────────────────────────────────────────────── */
32
+ --green: #7dcea0;
33
+ --yellow: #d4a84b;
34
+ --red: #e06c75;
35
+ --purple: #9d8cff;
36
+
37
+ /* ── Borders / surfaces ──────────────────────────────────────────── */
38
+ --border: rgba(255, 255, 255, 0.07);
39
+ --border-mid: rgba(255, 255, 255, 0.12);
40
+
41
+ /* ── Radii — locked to 3 sizes ───────────────────────────────────── */
42
+ --r-sm: 4px;
43
+ --r-md: 8px;
44
+ --r-lg: 12px;
45
+ --r-xl: 16px;
46
+
47
+ /* ── Type ────────────────────────────────────────────────────────── */
48
+ --font-mono: 'IBM Plex Mono', 'JetBrains Mono', 'Fira Code', 'SF Mono', Menlo, monospace;
49
+ --font-sans: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
21
50
  }
22
51
 
23
52
  html, body {
@@ -25,13 +54,12 @@ html, body {
25
54
  background: var(--bg);
26
55
  color: var(--text);
27
56
  font-family: var(--font-mono);
28
- font-size: 14px;
57
+ font-size: 13px;
29
58
  line-height: 1.6;
59
+ -webkit-font-smoothing: antialiased;
30
60
  }
31
61
 
32
- body.modal-open {
33
- overflow: hidden;
34
- }
62
+ body.modal-open { overflow: hidden; }
35
63
 
36
64
  #app {
37
65
  display: flex;
@@ -39,356 +67,428 @@ body.modal-open {
39
67
  height: 100vh;
40
68
  }
41
69
 
42
- /* Header */
70
+ /* ── Header ─────────────────────────────────────────────────────────── */
43
71
  header {
44
72
  display: flex;
45
73
  align-items: center;
46
74
  justify-content: space-between;
47
- padding: 12px 16px;
75
+ padding: 0 16px;
76
+ height: 52px;
48
77
  border-bottom: 1px solid var(--border);
78
+ background: var(--bg-surface);
49
79
  flex-shrink: 0;
80
+ gap: 12px;
50
81
  }
51
82
 
52
83
  .header-left {
53
84
  display: flex;
54
85
  align-items: center;
55
- gap: 12px;
86
+ gap: 14px;
56
87
  }
57
88
 
89
+ /* Logo — wordmark with graph glyph */
58
90
  h1 {
59
- font-size: 16px;
91
+ display: flex;
92
+ align-items: center;
93
+ gap: 8px;
94
+ font-family: var(--font-mono);
95
+ font-size: 13px;
60
96
  font-weight: 600;
61
- color: var(--accent);
97
+ letter-spacing: 0.04em;
98
+ color: var(--text);
62
99
  }
63
100
 
64
- .header-right {
65
- display: flex;
66
- align-items: center;
67
- gap: 12px;
101
+ h1 .logo-glyph {
102
+ display: inline-flex;
103
+ flex-shrink: 0;
104
+ width: 18px;
105
+ height: 18px;
106
+ color: var(--accent);
68
107
  }
69
108
 
70
- #model-info {
71
- font-size: 12px;
72
- color: var(--text-dim);
109
+ h1 .logo-glyph svg {
110
+ width: 100%;
111
+ height: 100%;
112
+ display: block;
73
113
  }
74
114
 
75
- #model-info.placeholder {
76
- color: var(--text-dim);
77
- opacity: 0.5;
78
- font-style: italic;
115
+ .header-right {
116
+ display: flex;
117
+ align-items: center;
118
+ gap: 8px;
79
119
  }
80
120
 
81
- /* Model menu */
121
+ /* Model selector button — gets a more prominent pill */
82
122
  .model-menu {
83
123
  position: relative;
84
124
  }
85
125
 
86
126
  #model-btn {
87
- display: flex;
127
+ display: inline-flex;
88
128
  align-items: center;
89
- gap: 4px;
90
- }
91
-
92
- #model-dropdown {
93
- width: min(420px, calc(100vw - 32px));
94
- max-height: 360px;
95
- }
96
-
97
- #model-search {
98
- width: 100%;
99
- background: var(--bg);
100
- border: 1px solid var(--border);
101
- border-radius: 4px;
102
- color: var(--text);
129
+ gap: 6px;
130
+ padding: 5px 10px;
131
+ background: var(--bg-2);
132
+ border: 1px solid var(--border-mid);
133
+ border-radius: var(--r-md);
134
+ color: var(--text-mid);
103
135
  font-family: var(--font-mono);
104
136
  font-size: 12px;
105
- padding: 6px 8px;
137
+ cursor: pointer;
138
+ transition: border-color 0.15s, color 0.15s;
139
+ max-width: 240px;
106
140
  }
107
-
108
- #model-search:focus {
109
- outline: none;
110
- border-color: var(--accent);
141
+ #model-btn:hover {
142
+ border-color: var(--accent-line);
143
+ color: var(--text);
111
144
  }
112
145
 
113
- #model-list {
114
- max-height: 300px;
115
- overflow-y: auto;
146
+ #model-info {
147
+ font-size: 12px;
148
+ color: inherit;
149
+ overflow: hidden;
150
+ text-overflow: ellipsis;
151
+ white-space: nowrap;
152
+ max-width: 180px;
116
153
  }
117
154
 
118
- .dropdown-search-section {
119
- padding-bottom: 10px;
155
+ #model-info.placeholder {
156
+ opacity: 0.45;
157
+ font-style: italic;
120
158
  }
121
159
 
122
- .model-item {
123
- display: flex;
160
+ /* Standard header buttons */
161
+ .header-btn {
162
+ display: inline-flex;
124
163
  align-items: center;
125
- justify-content: space-between;
126
- gap: 12px;
127
- width: 100%;
128
- padding: 8px;
129
- border-radius: 4px;
130
- cursor: pointer;
131
- border: none;
164
+ justify-content: center;
165
+ padding: 5px 10px;
132
166
  background: transparent;
133
- text-align: left;
134
- font-size: 12px;
135
- transition: background 0.15s;
136
- color: var(--text);
167
+ border: 1px solid var(--border);
168
+ border-radius: var(--r-md);
169
+ color: var(--text-dim);
137
170
  font-family: var(--font-mono);
171
+ font-size: 12px;
172
+ cursor: pointer;
173
+ transition: color 0.15s, border-color 0.15s, background 0.15s;
174
+ white-space: nowrap;
138
175
  }
139
-
140
- .model-item:hover {
176
+ .header-btn:hover {
177
+ color: var(--text);
178
+ border-color: var(--border-mid);
141
179
  background: var(--bg-hover);
142
180
  }
143
181
 
144
- .model-item.active {
145
- background: rgba(122, 162, 247, 0.12);
146
- outline: 1px solid rgba(122, 162, 247, 0.35);
182
+ /* Graph toggle active state */
183
+ #graph-toggle.active {
184
+ background: var(--accent-soft);
185
+ border-color: var(--accent-line);
186
+ color: var(--accent);
147
187
  }
148
188
 
149
- .model-item-body {
189
+ /* ── Context indicator ───────────────────────────────────────────────── */
190
+ #context-indicator {
150
191
  display: flex;
151
- flex: 1;
152
- flex-direction: column;
153
- min-width: 0;
192
+ align-items: center;
193
+ gap: 6px;
154
194
  }
155
195
 
156
- .model-item-name {
157
- color: var(--text);
158
- font-weight: 500;
196
+ #context-bar {
197
+ width: 64px;
198
+ height: 4px;
199
+ background: var(--bg-2);
200
+ border-radius: 99px;
159
201
  overflow: hidden;
160
- text-overflow: ellipsis;
161
- white-space: nowrap;
202
+ border: 1px solid var(--border);
162
203
  }
163
204
 
164
- .model-item-subtitle {
165
- color: var(--text-dim);
166
- font-size: 11px;
167
- overflow: hidden;
168
- text-overflow: ellipsis;
169
- white-space: nowrap;
205
+ #context-fill {
206
+ height: 100%;
207
+ width: 0%;
208
+ background: var(--accent);
209
+ border-radius: 99px;
210
+ transition: width 0.3s ease, background-color 0.3s ease;
170
211
  }
212
+ #context-fill.warn { background: var(--yellow); }
213
+ #context-fill.critical { background: var(--red); }
171
214
 
172
- .model-item-badge {
173
- color: var(--accent);
215
+ #context-label {
174
216
  font-size: 11px;
175
- font-weight: 600;
176
- flex-shrink: 0;
177
- letter-spacing: 0.04em;
178
- text-transform: uppercase;
217
+ color: var(--text-dim);
218
+ min-width: 28px;
219
+ font-variant-numeric: tabular-nums;
179
220
  }
180
221
 
181
- /* Session menu */
182
- .session-menu {
183
- position: relative;
222
+ /* ── Status badge ────────────────────────────────────────────────────── */
223
+ .badge {
224
+ display: inline-flex;
225
+ align-items: center;
226
+ font-size: 10px;
227
+ letter-spacing: 0.06em;
228
+ text-transform: uppercase;
229
+ padding: 2px 8px;
230
+ border-radius: 99px;
231
+ font-weight: 600;
232
+ border: 1px solid transparent;
184
233
  }
185
-
186
- .header-btn {
187
- background: var(--bg-surface);
188
- border: 1px solid var(--border);
189
- color: var(--text-dim);
190
- font-family: var(--font-mono);
191
- font-size: 12px;
192
- padding: 4px 10px;
193
- border-radius: 4px;
194
- cursor: pointer;
195
- transition: color 0.15s, border-color 0.15s;
234
+ .badge.ready {
235
+ background: rgba(125, 206, 160, 0.12);
236
+ color: var(--green);
237
+ border-color: rgba(125, 206, 160, 0.2);
196
238
  }
197
-
198
- .header-btn:hover {
199
- color: var(--text);
200
- border-color: var(--accent-dim);
239
+ .badge.busy {
240
+ background: rgba(212, 168, 75, 0.12);
241
+ color: var(--yellow);
242
+ border-color: rgba(212, 168, 75, 0.2);
243
+ }
244
+ .badge.error {
245
+ background: rgba(224, 108, 117, 0.12);
246
+ color: var(--red);
247
+ border-color: rgba(224, 108, 117, 0.2);
201
248
  }
202
249
 
250
+ /* ── Dropdowns ───────────────────────────────────────────────────────── */
203
251
  .dropdown {
204
252
  position: absolute;
205
253
  top: calc(100% + 6px);
206
254
  right: 0;
207
255
  min-width: 260px;
208
256
  background: var(--bg-surface);
209
- border: 1px solid var(--border);
210
- border-radius: 6px;
211
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
212
- z-index: 100;
257
+ border: 1px solid var(--border-mid);
258
+ border-radius: var(--r-lg);
259
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5), 0 1px 0 rgba(255,255,255,0.04) inset;
260
+ z-index: 200;
213
261
  overflow: hidden;
214
262
  }
215
263
 
216
- .dropdown-section {
217
- padding: 8px;
218
- }
219
-
220
- .session-update-row {
221
- display: flex;
222
- margin-bottom: 8px;
223
- }
224
-
225
- .dropdown-divider {
226
- height: 1px;
227
- background: var(--border);
228
- }
264
+ .dropdown-section { padding: 8px; }
265
+ .dropdown-divider { height: 1px; background: var(--border); }
229
266
 
230
267
  .dropdown-row {
231
268
  display: flex;
232
269
  gap: 6px;
233
270
  }
234
-
235
271
  .dropdown-row input {
236
272
  flex: 1;
237
273
  background: var(--bg);
238
- border: 1px solid var(--border);
239
- border-radius: 4px;
274
+ border: 1px solid var(--border-mid);
275
+ border-radius: var(--r-sm);
240
276
  color: var(--text);
241
277
  font-family: var(--font-mono);
242
278
  font-size: 12px;
243
279
  padding: 5px 8px;
244
280
  }
245
-
246
281
  .dropdown-row input:focus {
247
282
  outline: none;
248
- border-color: var(--accent-dim);
283
+ border-color: var(--accent-line);
249
284
  }
250
285
 
251
286
  .dropdown-action {
252
- background: var(--accent-dim);
287
+ display: inline-flex;
288
+ align-items: center;
289
+ justify-content: center;
290
+ padding: 5px 12px;
291
+ background: var(--accent);
253
292
  border: none;
254
- color: var(--text);
293
+ color: #0a0e15;
255
294
  font-family: var(--font-mono);
256
295
  font-size: 12px;
257
- padding: 5px 12px;
258
- border-radius: 4px;
296
+ font-weight: 600;
297
+ border-radius: var(--r-sm);
259
298
  cursor: pointer;
299
+ transition: opacity 0.15s;
260
300
  flex-shrink: 0;
261
301
  }
262
-
263
- .dropdown-action:hover {
264
- background: var(--accent);
265
- color: var(--bg);
266
- }
302
+ .dropdown-action:hover { opacity: 0.85; }
267
303
 
268
304
  .dropdown-empty {
269
305
  font-size: 12px;
270
306
  color: var(--text-dim);
271
307
  text-align: center;
272
- padding: 8px;
308
+ padding: 10px 8px;
273
309
  }
274
310
 
275
- .session-item {
311
+ /* ── Model dropdown ──────────────────────────────────────────────────── */
312
+ #model-dropdown {
313
+ width: min(440px, calc(100vw - 32px));
314
+ max-height: 380px;
315
+ }
316
+
317
+ #model-search {
318
+ width: 100%;
319
+ background: var(--bg);
320
+ border: 1px solid var(--border-mid);
321
+ border-radius: var(--r-sm);
322
+ color: var(--text);
323
+ font-family: var(--font-mono);
324
+ font-size: 12px;
325
+ padding: 6px 8px;
326
+ }
327
+ #model-search:focus { outline: none; border-color: var(--accent-line); }
328
+ .dropdown-search-section { padding-bottom: 8px; }
329
+
330
+ #model-list {
331
+ max-height: 300px;
332
+ overflow-y: auto;
333
+ }
334
+
335
+ .model-item {
276
336
  display: flex;
277
337
  align-items: center;
278
338
  justify-content: space-between;
279
- padding: 6px 8px;
280
- border-radius: 4px;
339
+ gap: 12px;
340
+ width: 100%;
341
+ padding: 8px;
342
+ border-radius: var(--r-sm);
281
343
  cursor: pointer;
344
+ border: none;
345
+ background: transparent;
346
+ text-align: left;
282
347
  font-size: 12px;
283
348
  transition: background 0.15s;
349
+ color: var(--text);
350
+ font-family: var(--font-mono);
284
351
  }
285
-
286
- .session-item:hover {
287
- background: var(--bg-hover);
352
+ .model-item:hover { background: var(--bg-hover); }
353
+ .model-item.active {
354
+ background: var(--accent-soft);
355
+ outline: 1px solid var(--accent-line);
288
356
  }
289
357
 
290
- .session-item.active {
291
- background: rgba(122, 162, 247, 0.12);
292
- outline: 1px solid rgba(122, 162, 247, 0.35);
358
+ .model-item-body {
359
+ display: flex;
360
+ flex: 1;
361
+ flex-direction: column;
362
+ min-width: 0;
293
363
  }
294
-
295
- .session-label {
364
+ .model-item-name {
296
365
  color: var(--text);
366
+ font-weight: 500;
297
367
  overflow: hidden;
298
368
  text-overflow: ellipsis;
299
369
  white-space: nowrap;
300
370
  }
301
-
302
- .session-meta {
371
+ .model-item-subtitle {
303
372
  color: var(--text-dim);
304
373
  font-size: 11px;
305
- flex-shrink: 0;
306
- margin-left: 8px;
374
+ overflow: hidden;
375
+ text-overflow: ellipsis;
376
+ white-space: nowrap;
307
377
  }
308
-
309
- .session-active-badge {
378
+ .model-item-badge {
310
379
  color: var(--accent);
311
- }
312
-
313
- .badge {
314
380
  font-size: 11px;
315
- padding: 2px 8px;
316
- border-radius: 10px;
317
- font-weight: 500;
381
+ font-weight: 600;
382
+ flex-shrink: 0;
383
+ letter-spacing: 0.04em;
384
+ text-transform: uppercase;
318
385
  }
319
386
 
320
- .badge.ready {
321
- background: rgba(158, 206, 106, 0.15);
322
- color: var(--green);
323
- }
387
+ /* ── Session dropdown ────────────────────────────────────────────────── */
388
+ .session-menu { position: relative; }
324
389
 
325
- .badge.busy {
326
- background: rgba(224, 175, 104, 0.15);
327
- color: var(--yellow);
390
+ .session-update-row {
391
+ display: flex;
392
+ margin-bottom: 8px;
328
393
  }
329
394
 
330
- /* Context indicator */
331
- #context-indicator {
395
+ .session-autosave-row {
332
396
  display: flex;
333
397
  align-items: center;
334
- gap: 6px;
335
- margin-left: 12px;
336
- }
337
-
338
- #context-bar {
339
- width: 80px;
340
- height: 8px;
341
- background: var(--bg-surface);
342
- border-radius: 4px;
343
- overflow: hidden;
344
- border: 1px solid var(--border);
398
+ gap: 8px;
399
+ margin-bottom: 8px;
400
+ font-size: 12px;
401
+ color: var(--text-dim);
402
+ cursor: pointer;
345
403
  }
404
+ .session-autosave-row input { accent-color: var(--accent); }
346
405
 
347
- #context-fill {
348
- height: 100%;
349
- width: 0%;
350
- background: var(--accent);
351
- border-radius: 4px;
352
- transition: width 0.3s ease, background-color 0.3s ease;
406
+ .session-item {
407
+ display: flex;
408
+ align-items: center;
409
+ gap: 8px;
410
+ border-radius: var(--r-sm);
411
+ font-size: 12px;
412
+ transition: background 0.15s;
353
413
  }
354
-
355
- #context-fill.warn {
356
- background: var(--yellow);
414
+ .session-item:hover { background: var(--bg-hover); }
415
+ .session-item.active {
416
+ background: var(--accent-soft);
417
+ outline: 1px solid var(--accent-line);
357
418
  }
358
419
 
359
- #context-fill.critical {
360
- background: var(--red);
420
+ .session-load-btn {
421
+ flex: 1;
422
+ display: flex;
423
+ align-items: center;
424
+ justify-content: space-between;
425
+ gap: 8px;
426
+ width: 100%;
427
+ padding: 6px 8px;
428
+ background: transparent;
429
+ border: none;
430
+ color: inherit;
431
+ font: inherit;
432
+ text-align: left;
433
+ cursor: pointer;
434
+ }
435
+ .session-load-btn:focus-visible,
436
+ .session-delete-btn:focus-visible {
437
+ outline: 1px solid var(--accent);
438
+ outline-offset: 1px;
361
439
  }
362
440
 
363
- #context-label {
364
- font-size: 11px;
441
+ .session-label {
442
+ color: var(--text);
443
+ overflow: hidden;
444
+ text-overflow: ellipsis;
445
+ white-space: nowrap;
446
+ }
447
+ .session-meta {
365
448
  color: var(--text-dim);
366
- min-width: 28px;
449
+ font-size: 11px;
450
+ flex-shrink: 0;
451
+ margin-left: 8px;
367
452
  }
453
+ .session-active-badge { color: var(--accent); }
368
454
 
369
- .badge.error {
370
- background: rgba(247, 118, 142, 0.15);
455
+ .session-delete-btn {
456
+ flex-shrink: 0;
457
+ margin: 4px 6px 4px 0;
458
+ padding: 3px 8px;
459
+ background: transparent;
460
+ border: 1px solid var(--border);
461
+ border-radius: var(--r-sm);
462
+ color: var(--text-dim);
463
+ font-family: var(--font-mono);
464
+ font-size: 11px;
465
+ cursor: pointer;
466
+ transition: color 0.15s, border-color 0.15s, background 0.15s;
467
+ }
468
+ .session-delete-btn:hover {
371
469
  color: var(--red);
470
+ border-color: rgba(224, 108, 117, 0.45);
471
+ background: rgba(224, 108, 117, 0.08);
372
472
  }
373
473
 
374
- /* ── Workspace: side-by-side chat + graph ── */
375
-
474
+ /* ── Workspace ───────────────────────────────────────────────────────── */
376
475
  #workspace {
377
476
  display: flex;
378
477
  flex: 1;
379
478
  min-height: 0;
380
479
  }
381
480
 
382
- /* Chat pane (left, default ~33%) */
481
+ /* ── Chat pane ───────────────────────────────────────────────────────── */
383
482
  #chat-pane {
384
483
  display: flex;
385
484
  flex-direction: column;
386
485
  width: 33%;
387
486
  min-width: 280px;
388
487
  position: relative;
488
+ background: var(--bg);
389
489
  }
390
490
 
391
- /* Config overlay — shown when model provider is not configured */
491
+ /* Config overlay */
392
492
  .config-overlay {
393
493
  position: absolute;
394
494
  inset: 0;
@@ -396,12 +496,11 @@ h1 {
396
496
  display: flex;
397
497
  align-items: flex-start;
398
498
  justify-content: center;
399
- background: rgba(26, 27, 38, 0.92);
400
- backdrop-filter: blur(4px);
499
+ background: rgba(10, 12, 18, 0.88);
500
+ backdrop-filter: blur(6px);
401
501
  padding: 24px;
402
502
  overflow-y: auto;
403
503
  }
404
-
405
504
  .config-overlay.hidden { display: none; }
406
505
 
407
506
  .config-overlay-content {
@@ -409,119 +508,79 @@ h1 {
409
508
  width: 100%;
410
509
  margin: 0 auto;
411
510
  }
412
-
413
511
  .config-overlay-content h2 {
414
512
  color: var(--yellow);
415
- font-size: 16px;
513
+ font-size: 15px;
416
514
  margin-bottom: 8px;
417
515
  }
418
-
419
516
  .config-overlay-content > p {
420
517
  color: var(--text-dim);
421
- font-size: 13px;
518
+ font-size: 12px;
422
519
  margin-bottom: 16px;
423
520
  }
424
521
 
425
522
  .config-overlay-shortcuts {
426
523
  display: flex;
427
524
  flex-direction: column;
428
- gap: 12px;
525
+ gap: 10px;
429
526
  margin-bottom: 16px;
430
527
  }
431
528
 
432
529
  .config-overlay-spotlight {
433
530
  display: flex;
434
531
  flex-direction: column;
435
- gap: 12px;
532
+ gap: 10px;
436
533
  padding: 14px 16px;
437
- border-radius: 8px;
438
- border: 1px solid rgba(122, 162, 247, 0.35);
439
- background:
440
- linear-gradient(135deg, rgba(122, 162, 247, 0.18), rgba(158, 206, 106, 0.08)),
441
- var(--bg-surface);
442
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
534
+ border-radius: var(--r-lg);
535
+ border: 1px solid var(--accent-line);
536
+ background: linear-gradient(135deg, rgba(86,200,216,0.10), rgba(125,206,160,0.06)), var(--bg-surface);
537
+ box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);
443
538
  }
444
-
445
539
  .config-overlay-spotlight-secondary {
446
- border-color: rgba(158, 206, 106, 0.24);
447
- background:
448
- linear-gradient(135deg, rgba(158, 206, 106, 0.14), rgba(122, 162, 247, 0.06)),
449
- var(--bg-surface);
450
- }
451
-
452
- .config-overlay-spotlight-copy {
453
- display: flex;
454
- flex-direction: column;
455
- gap: 6px;
540
+ border-color: rgba(125, 206, 160, 0.22);
541
+ background: linear-gradient(135deg, rgba(125,206,160,0.10), rgba(86,200,216,0.05)), var(--bg-surface);
456
542
  }
457
543
 
544
+ .config-overlay-spotlight-copy { display: flex; flex-direction: column; gap: 6px; }
458
545
  .config-overlay-spotlight-badge {
459
546
  align-self: flex-start;
460
547
  padding: 2px 8px;
461
- border-radius: 999px;
462
- background: rgba(122, 162, 247, 0.18);
548
+ border-radius: 99px;
549
+ background: var(--accent-soft);
463
550
  color: var(--accent);
464
551
  font-size: 11px;
465
552
  font-weight: 600;
466
- letter-spacing: 0.02em;
467
- }
468
-
469
- .config-overlay-spotlight strong {
470
- color: var(--text);
471
- font-size: 14px;
472
- }
473
-
474
- .config-overlay-spotlight p {
475
- margin: 0;
476
- color: var(--text);
477
- font-size: 12px;
478
- }
479
-
480
- .config-overlay-spotlight-actions {
481
- margin-bottom: 0;
553
+ letter-spacing: 0.04em;
482
554
  }
555
+ .config-overlay-spotlight strong { color: var(--text); font-size: 13px; }
556
+ .config-overlay-spotlight p { margin: 0; color: var(--text); font-size: 12px; }
557
+ .config-overlay-spotlight-actions { margin-bottom: 0; }
483
558
 
484
559
  .config-missing {
485
- color: var(--red, #f7768e);
486
- font-size: 13px;
560
+ color: var(--red);
561
+ font-size: 12px;
487
562
  padding: 8px 12px;
488
- background: rgba(247, 118, 142, 0.1);
489
- border-radius: 4px;
563
+ background: rgba(224, 108, 117, 0.1);
564
+ border: 1px solid rgba(224,108,117,0.2);
565
+ border-radius: var(--r-sm);
490
566
  margin-bottom: 12px;
491
567
  }
492
568
 
493
- .config-overlay-options {
494
- display: flex;
495
- flex-direction: column;
496
- gap: 16px;
497
- }
498
-
569
+ .config-overlay-options { display: flex; flex-direction: column; gap: 14px; }
499
570
  .config-overlay-option {
500
571
  background: var(--bg-surface);
501
572
  border: 1px solid var(--border);
502
- border-radius: 6px;
573
+ border-radius: var(--r-md);
503
574
  padding: 12px 14px;
504
575
  }
505
-
506
- .config-overlay-option strong {
507
- display: block;
508
- color: var(--text);
509
- font-size: 13px;
510
- margin-bottom: 4px;
511
- }
512
-
513
- .config-overlay-option p {
514
- color: var(--text-dim);
515
- font-size: 12px;
516
- margin-bottom: 8px;
517
- }
518
-
576
+ .config-overlay-option strong { display: block; color: var(--text); font-size: 12px; margin-bottom: 4px; }
577
+ .config-overlay-option p { color: var(--text-dim); font-size: 12px; margin-bottom: 8px; }
519
578
  .config-overlay-option pre {
520
579
  background: var(--bg);
521
580
  border: 1px solid var(--border);
522
- border-radius: 4px;
581
+ border-radius: var(--r-sm);
523
582
  padding: 8px 10px;
524
- font-size: 12px;
583
+ font-size: 11px;
525
584
  color: var(--green);
526
585
  white-space: pre-wrap;
527
586
  word-break: break-all;
@@ -530,48 +589,30 @@ h1 {
530
589
  .config-overlay-actions {
531
590
  display: flex;
532
591
  align-items: center;
533
- gap: 10px;
534
- margin-bottom: 10px;
592
+ gap: 8px;
593
+ margin-bottom: 8px;
535
594
  flex-wrap: wrap;
536
595
  }
537
-
538
- .config-overlay-action-note {
539
- color: var(--text-dim);
540
- font-size: 12px;
541
- }
596
+ .config-overlay-action-note { color: var(--text-dim); font-size: 11px; }
542
597
 
543
598
  .config-connect-status {
544
599
  font-size: 12px;
545
600
  padding: 8px 12px;
546
- border-radius: 4px;
547
- margin-top: 14px;
601
+ border-radius: var(--r-sm);
602
+ margin-top: 12px;
548
603
  }
549
-
550
604
  .config-connect-status.info {
551
- color: var(--text);
552
- background: rgba(122, 162, 247, 0.14);
553
- border: 1px solid rgba(122, 162, 247, 0.28);
605
+ color: var(--text); background: var(--accent-soft); border: 1px solid var(--accent-line);
554
606
  }
555
-
556
607
  .config-connect-status.success {
557
- color: var(--green);
558
- background: rgba(158, 206, 106, 0.12);
559
- border: 1px solid rgba(158, 206, 106, 0.28);
608
+ color: var(--green); background: rgba(125,206,160,0.1); border: 1px solid rgba(125,206,160,0.22);
560
609
  }
561
-
562
610
  .config-connect-status.error {
563
- color: var(--red, #f7768e);
564
- background: rgba(247, 118, 142, 0.12);
565
- border: 1px solid rgba(247, 118, 142, 0.28);
566
- }
567
-
568
- .config-overlay-footer {
569
- margin-top: 16px;
570
- color: var(--text-dim);
571
- font-size: 12px;
611
+ color: var(--red); background: rgba(224,108,117,0.1); border: 1px solid rgba(224,108,117,0.2);
572
612
  }
613
+ .config-overlay-footer { margin-top: 14px; color: var(--text-dim); font-size: 11px; }
573
614
 
574
- /* Pane divider (draggable) */
615
+ /* ── Pane divider ────────────────────────────────────────────────────── */
575
616
  #pane-divider {
576
617
  width: 1px;
577
618
  cursor: col-resize;
@@ -581,1314 +622,530 @@ h1 {
581
622
  z-index: 10;
582
623
  position: relative;
583
624
  }
584
-
585
625
  #pane-divider::after {
586
626
  content: '';
587
627
  position: absolute;
588
- top: 0;
589
- left: -3px;
590
- width: 7px;
591
- height: 100%;
628
+ top: 0; left: -3px;
629
+ width: 7px; height: 100%;
592
630
  }
593
-
594
631
  #pane-divider:hover,
595
632
  #pane-divider.dragging {
596
- width: 3px;
633
+ width: 2px;
597
634
  background: var(--accent-dim);
598
635
  }
599
636
 
600
- /* Graph pane (right, takes remaining space) */
637
+ /* ── Graph pane ──────────────────────────────────────────────────────── */
601
638
  #graph-pane {
602
639
  display: flex;
603
640
  flex-direction: column;
604
641
  flex: 1;
605
642
  min-width: 300px;
606
643
  position: relative;
644
+ background: var(--bg);
607
645
  }
608
646
 
609
- /* Chat-only mode: hide graph, expand chat full-width */
610
647
  #workspace.chat-only #graph-pane,
611
- #workspace.chat-only #pane-divider {
612
- display: none;
613
- }
614
-
648
+ #workspace.chat-only #pane-divider { display: none; }
615
649
  #workspace.chat-only #chat-pane {
616
650
  width: 100%;
617
- max-width: 900px;
651
+ max-width: 860px;
618
652
  margin: 0 auto;
619
653
  }
620
654
 
621
- #graph-toggle.active {
622
- background: var(--accent);
623
- color: var(--bg);
624
- border-color: var(--accent);
625
- }
626
-
627
- /* Messages */
628
- main {
629
- flex: 1;
630
- overflow-y: auto;
631
- padding: 16px;
655
+ /* ── Graph toolbar ───────────────────────────────────────────────────── */
656
+ #graph-toolbar {
632
657
  display: flex;
633
- flex-direction: column;
634
- gap: 10px;
635
- }
636
-
637
- .message {
638
- padding: 10px 14px;
639
- border-radius: 8px;
640
- max-width: 100%;
641
- word-wrap: break-word;
642
- white-space: pre-wrap;
643
- }
644
-
645
- .message.user {
646
- background: var(--accent-dim);
647
- color: #fff;
648
- align-self: flex-end;
649
- max-width: 90%;
650
- border-radius: 8px 8px 2px 8px;
651
- }
652
-
653
- .message.assistant {
658
+ align-items: center;
659
+ gap: 6px;
660
+ padding: 8px 12px;
661
+ border-bottom: 1px solid var(--border);
654
662
  background: var(--bg-surface);
655
- border: 1px solid var(--border);
656
- border-radius: 8px 8px 8px 2px;
657
- white-space: normal;
663
+ flex-shrink: 0;
664
+ flex-wrap: wrap;
658
665
  }
659
666
 
660
- /* Markdown content inside assistant messages and explain */
661
- .message.assistant p,
662
- .detail-explain-content p {
663
- margin: 0 0 8px 0;
667
+ #graph-search {
668
+ background: var(--bg-2);
669
+ border: 1px solid var(--border-mid);
670
+ border-radius: var(--r-md);
671
+ color: var(--text);
672
+ font-family: var(--font-mono);
673
+ font-size: 12px;
674
+ padding: 5px 10px;
675
+ width: 210px;
676
+ transition: border-color 0.15s, width 0.2s;
664
677
  }
665
-
666
- .message.assistant p:last-child,
667
- .detail-explain-content p:last-child {
668
- margin-bottom: 0;
678
+ #graph-search:focus {
679
+ outline: none;
680
+ border-color: var(--accent-line);
681
+ width: 240px;
669
682
  }
670
683
 
671
- .message.assistant pre,
672
- .detail-explain-content pre {
673
- background: var(--bg) !important;
674
- border: 1px solid var(--border);
675
- border-radius: 4px;
676
- padding: 8px 10px !important;
677
- margin: 8px 0;
678
- overflow-x: auto;
679
- font-size: 12px;
680
- line-height: 1.5;
684
+ /* ── Graph stage ─────────────────────────────────────────────────────── */
685
+ #graph-stage {
686
+ display: flex;
687
+ flex-direction: row;
688
+ position: relative;
689
+ flex: 1;
690
+ min-height: 0;
691
+ background: var(--bg);
681
692
  }
682
693
 
683
- .message.assistant code,
684
- .detail-explain-content code {
685
- font-family: var(--font-mono);
686
- font-size: 0.9em;
694
+ #cy {
695
+ flex: 1;
696
+ min-width: 0;
697
+ height: 100%;
698
+ background: var(--bg);
699
+ position: relative;
687
700
  }
688
701
 
689
- .message.assistant :not(pre) > code,
690
- .detail-explain-content :not(pre) > code {
691
- background: rgba(122, 162, 247, 0.1);
692
- padding: 1px 5px;
693
- border-radius: 3px;
694
- color: var(--accent);
702
+ /* ── Search dropdown ─────────────────────────────────────────────────── */
703
+ .search-dropdown {
704
+ position: absolute;
705
+ top: 100%;
706
+ left: 0;
707
+ width: 320px;
708
+ max-height: 320px;
709
+ overflow-y: auto;
710
+ background: var(--bg-surface);
711
+ border: 1px solid var(--border-mid);
712
+ border-radius: var(--r-lg);
713
+ box-shadow: 0 8px 32px rgba(0,0,0,0.5);
714
+ z-index: 200;
715
+ margin-top: 4px;
695
716
  }
696
-
697
- .message.assistant ul,
698
- .message.assistant ol,
699
- .detail-explain-content ul,
700
- .detail-explain-content ol {
701
- margin: 6px 0;
702
- padding-left: 20px;
717
+ .search-result {
718
+ display: flex;
719
+ align-items: center;
720
+ justify-content: space-between;
721
+ gap: 12px;
722
+ padding: 7px 10px;
723
+ cursor: pointer;
724
+ font-size: 12px;
725
+ transition: background 0.1s;
703
726
  }
704
-
705
- .message.assistant li,
706
- .detail-explain-content li {
707
- margin-bottom: 3px;
727
+ .search-result:hover { background: var(--bg-hover); }
728
+ .search-result-body { display: flex; flex: 1; flex-direction: column; min-width: 0; }
729
+ .search-result-name {
730
+ color: var(--text); font-weight: 500;
731
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
708
732
  }
709
-
710
- .message.assistant h1,
711
- .message.assistant h2,
712
- .message.assistant h3,
713
- .detail-explain-content h1,
714
- .detail-explain-content h2,
715
- .detail-explain-content h3 {
716
- font-size: 13px;
717
- font-weight: 600;
718
- margin: 10px 0 4px 0;
719
- color: var(--text);
733
+ .search-result-subtitle {
734
+ color: var(--text-dim); font-size: 11px;
735
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
720
736
  }
721
-
722
- .message.assistant h1 { font-size: 15px; }
723
- .message.assistant h2 { font-size: 14px; }
724
-
725
- .message.assistant strong,
726
- .detail-explain-content strong {
727
- color: var(--text);
737
+ .search-result-kind {
738
+ font-size: 11px; opacity: 0.7; flex-shrink: 0;
739
+ letter-spacing: 0.04em; text-transform: uppercase;
728
740
  }
741
+ .search-result-kind.file { opacity: 0.9; }
729
742
 
730
- .message.assistant blockquote,
731
- .detail-explain-content blockquote {
732
- border-left: 3px solid var(--border);
733
- padding-left: 10px;
734
- margin: 6px 0;
735
- color: var(--text-dim);
743
+ /* ── Graph empty / onboarding ────────────────────────────────────────── */
744
+ .graph-empty {
745
+ display: flex; align-items: center; justify-content: center;
746
+ height: 100%; color: var(--text-dim);
747
+ font-size: 13px; padding: 40px; text-align: center;
736
748
  }
737
749
 
738
- .message.error {
739
- background: rgba(247, 118, 142, 0.1);
740
- border: 1px solid rgba(247, 118, 142, 0.3);
741
- color: var(--red);
750
+ .graph-onboarding {
751
+ position: absolute; inset: 0;
752
+ display: flex; flex-direction: column;
753
+ align-items: center; justify-content: center;
754
+ gap: 8px; pointer-events: none; z-index: 10;
755
+ color: var(--text-dim); text-align: center; padding: 40px;
742
756
  }
743
-
744
- .message.thinking {
745
- color: var(--text-dim);
746
- font-style: italic;
747
- font-size: 13px;
748
- padding: 6px 14px;
757
+ .graph-onboarding-icon {
758
+ font-size: 26px; opacity: 0.2; letter-spacing: 4px; margin-bottom: 4px;
749
759
  }
760
+ .graph-onboarding-title { font-size: 14px; font-weight: 600; opacity: 0.45; }
761
+ .graph-onboarding-subtitle { font-size: 12px; opacity: 0.35; line-height: 1.5; }
750
762
 
751
- /* Tool call group clusters consecutive tool calls */
752
- .tool-group {
763
+ /* ── Analysis panel ──────────────────────────────────────────────────── */
764
+ #analysis-panel {
765
+ position: absolute;
766
+ top: 16px; left: 16px; bottom: 16px;
767
+ width: min(380px, calc(100% - 32px));
768
+ background: rgba(14, 17, 26, 0.97);
769
+ border: 1px solid var(--accent-line);
770
+ border-radius: var(--r-xl);
771
+ box-shadow: 0 24px 60px rgba(0,0,0,0.5);
772
+ backdrop-filter: blur(20px);
773
+ z-index: 40;
753
774
  display: flex;
754
775
  flex-direction: column;
755
- gap: 2px;
756
- margin: 2px 0;
757
- }
758
-
759
- /* Tool calls — compact inline pills */
760
- .tool-call {
761
- font-size: 12px;
762
- padding: 4px 10px;
763
- border-radius: 4px;
764
- color: var(--text-dim);
765
- cursor: pointer;
766
- transition: background 0.15s;
767
- line-height: 1.4;
768
- }
769
-
770
- .tool-call:hover {
771
- background: rgba(122, 162, 247, 0.08);
772
- }
773
-
774
- .tool-call .tool-header {
775
- display: flex;
776
- align-items: baseline;
777
- gap: 6px;
778
- }
779
-
780
- .tool-call .tool-name {
781
- color: var(--accent);
782
- font-weight: 600;
783
- flex-shrink: 0;
784
- }
785
-
786
- .tool-call .tool-arg {
787
- color: var(--text-dim);
788
- overflow: hidden;
789
- text-overflow: ellipsis;
790
- white-space: nowrap;
791
- }
792
-
793
- .tool-call .tool-time {
794
- color: var(--text-dim);
795
- margin-left: auto;
796
- flex-shrink: 0;
797
- font-size: 11px;
798
- opacity: 0.7;
799
- }
800
-
801
- .tool-call .tool-result {
802
- display: none;
803
- margin-top: 6px;
804
- padding: 6px 8px;
805
- border-radius: 3px;
806
- background: rgba(0, 0, 0, 0.2);
807
- white-space: pre-wrap;
808
- max-height: 200px;
809
- overflow-y: auto;
810
- font-size: 11px;
811
- color: var(--text-dim);
812
- }
813
-
814
- .tool-call.expanded .tool-result {
815
- display: block;
816
- }
817
-
818
- /* Streaming cursor */
819
- .streaming-cursor::after {
820
- content: '\25CC';
821
- animation: blink 0.8s step-end infinite;
822
- color: var(--accent);
823
- }
824
-
825
- @keyframes blink {
826
- 50% { opacity: 0; }
827
- }
828
-
829
- /* Usage info */
830
- .usage-info {
831
- font-size: 11px;
832
- color: var(--text-dim);
833
- opacity: 0.6;
834
- text-align: right;
835
- padding: 2px 4px;
836
- }
837
-
838
- /* Footer / Input */
839
- footer {
840
- padding: 12px 16px;
841
- border-top: 1px solid var(--border);
842
- flex-shrink: 0;
843
- }
844
-
845
- #chat-form {
846
- display: flex;
847
- gap: 8px;
848
- align-items: flex-end;
849
- }
850
-
851
- #chat-input {
852
- flex: 1;
853
- background: var(--bg-surface);
854
- border: 1px solid var(--border);
855
- border-radius: 6px;
856
- color: var(--text);
857
- font-family: var(--font-mono);
858
- font-size: 14px;
859
- padding: 10px 12px;
860
- resize: none;
861
- max-height: 150px;
862
- line-height: 1.5;
863
- }
864
-
865
- #chat-input:focus {
866
- outline: none;
867
- border-color: var(--accent);
868
- }
869
-
870
- #send-btn, #cancel-btn {
871
- padding: 10px 18px;
872
- border: none;
873
- border-radius: 6px;
874
- font-family: var(--font-mono);
875
- font-size: 13px;
876
- font-weight: 600;
877
- cursor: pointer;
878
- }
879
-
880
- #send-btn {
881
- background: var(--accent);
882
- color: var(--bg);
883
- }
884
-
885
- #send-btn:hover {
886
- opacity: 0.9;
887
- }
888
-
889
- #send-btn:disabled {
890
- opacity: 0.4;
891
- cursor: not-allowed;
892
- }
893
-
894
- #cancel-btn {
895
- background: var(--red);
896
- color: #fff;
897
- }
898
-
899
- .hidden {
900
- display: none !important;
901
- }
902
-
903
- /* Settings modal */
904
- .modal {
905
- position: fixed;
906
- inset: 0;
907
- z-index: 500;
908
- }
909
-
910
- .modal-backdrop {
911
- position: absolute;
912
- inset: 0;
913
- background: rgba(10, 10, 18, 0.72);
914
- backdrop-filter: blur(4px);
915
- }
916
-
917
- .modal-panel {
918
- position: absolute;
919
- top: 50%;
920
- left: 50%;
921
- width: min(960px, calc(100vw - 32px));
922
- max-height: calc(100vh - 48px);
923
- transform: translate(-50%, -50%);
924
- display: flex;
925
- flex-direction: column;
926
- background: var(--bg-surface);
927
- border: 1px solid var(--border);
928
- border-radius: 12px;
929
- box-shadow: 0 24px 64px rgba(0, 0, 0, 0.45);
930
- overflow: hidden;
931
- }
932
-
933
- .modal-panel-compact {
934
- width: min(640px, calc(100vw - 32px));
935
- }
936
-
937
- .modal-panel-file-preview {
938
- width: min(1200px, 80vw);
939
- height: 80vh;
940
- max-width: 80vw;
941
- max-height: 80vh;
942
- }
943
-
944
- .modal-header,
945
- .modal-footer,
946
- .settings-toolbar {
947
- padding: 18px 20px;
948
- }
949
-
950
- .modal-header {
951
- display: flex;
952
- align-items: flex-start;
953
- justify-content: space-between;
954
- gap: 16px;
955
- border-bottom: 1px solid var(--border);
956
- }
957
-
958
- .modal-header h2 {
959
- font-size: 16px;
960
- color: var(--text);
961
- margin-bottom: 4px;
962
- }
963
-
964
- .modal-subtitle {
965
- font-size: 12px;
966
- color: var(--text-dim);
967
- }
968
-
969
- .file-preview-body {
970
- flex: 1;
971
- min-height: 0;
972
- padding: 0 20px 20px;
973
- overflow: auto;
974
- background: rgba(15, 16, 26, 0.92);
975
- }
976
-
977
- .file-preview-code {
978
- margin: 0;
979
- min-height: 100%;
980
- padding: 18px;
981
- border-radius: 10px;
982
- background: var(--bg);
983
- border: 1px solid var(--border);
984
- color: var(--text);
985
- font-size: 12px;
986
- line-height: 1.6;
987
- overflow: auto;
988
- white-space: pre;
989
- font-family: var(--font-mono);
990
- }
991
-
992
- .settings-toolbar {
993
- display: flex;
994
- align-items: flex-end;
995
- justify-content: space-between;
996
- gap: 16px;
997
- border-bottom: 1px solid var(--border);
998
- background: rgba(26, 27, 38, 0.55);
999
- }
1000
-
1001
- .settings-scope-picker {
1002
- display: flex;
1003
- flex-direction: column;
1004
- gap: 6px;
1005
- font-size: 12px;
1006
- color: var(--text-dim);
1007
- }
1008
-
1009
- .settings-scope-picker select,
1010
- .settings-control,
1011
- .settings-select {
1012
- background: var(--bg);
1013
- border: 1px solid var(--border);
1014
- border-radius: 6px;
1015
- color: var(--text);
1016
- font-family: var(--font-mono);
1017
- font-size: 12px;
1018
- }
1019
-
1020
- .settings-scope-picker select,
1021
- .settings-select {
1022
- padding: 8px 10px;
1023
- }
1024
-
1025
- .settings-control {
1026
- width: 100%;
1027
- padding: 9px 11px;
1028
- }
1029
-
1030
- .settings-control:disabled,
1031
- .settings-select:disabled {
1032
- cursor: not-allowed;
1033
- opacity: 0.65;
1034
- background: rgba(17, 19, 29, 0.9);
1035
- }
1036
-
1037
- .settings-scope-picker select:focus,
1038
- .settings-control:focus,
1039
- .settings-select:focus {
1040
- outline: none;
1041
- border-color: var(--accent);
1042
- }
1043
-
1044
- .settings-path-group {
1045
- display: flex;
1046
- flex-direction: column;
1047
- align-items: flex-end;
1048
- gap: 6px;
1049
- min-width: 0;
1050
- }
1051
-
1052
- .settings-path-label {
1053
- font-size: 11px;
1054
- color: var(--text-dim);
1055
- text-transform: uppercase;
1056
- letter-spacing: 0.08em;
1057
- }
1058
-
1059
- .settings-path {
1060
- max-width: min(100%, 500px);
1061
- overflow-x: auto;
1062
- white-space: nowrap;
1063
- color: var(--accent);
1064
- background: rgba(122, 162, 247, 0.08);
1065
- border: 1px solid rgba(122, 162, 247, 0.18);
1066
- border-radius: 999px;
1067
- padding: 4px 10px;
1068
- }
1069
-
1070
- .settings-banner {
1071
- margin: 14px 20px 0;
1072
- padding: 10px 12px;
1073
- border-radius: 8px;
1074
- font-size: 12px;
1075
- border: 1px solid transparent;
1076
- }
1077
-
1078
- .settings-banner.info {
1079
- background: rgba(122, 162, 247, 0.12);
1080
- border-color: rgba(122, 162, 247, 0.24);
1081
- color: var(--text);
1082
- }
1083
-
1084
- .settings-banner.success {
1085
- background: rgba(158, 206, 106, 0.12);
1086
- border-color: rgba(158, 206, 106, 0.26);
1087
- color: var(--green);
1088
- }
1089
-
1090
- .settings-banner.error {
1091
- background: rgba(247, 118, 142, 0.12);
1092
- border-color: rgba(247, 118, 142, 0.26);
1093
- color: var(--red);
1094
- }
1095
-
1096
- .settings-list {
1097
- flex: 1;
1098
- min-height: 0;
1099
- overflow-y: auto;
1100
- padding: 18px 20px 20px;
1101
- display: flex;
1102
- flex-direction: column;
1103
- gap: 14px;
1104
- }
1105
-
1106
- .settings-item {
1107
- background: rgba(26, 27, 38, 0.72);
1108
- border: 1px solid var(--border);
1109
- border-radius: 10px;
1110
- padding: 16px;
1111
- }
1112
-
1113
- .settings-item.is-disabled {
1114
- border-color: rgba(122, 162, 247, 0.24);
1115
- background: rgba(26, 27, 38, 0.6);
1116
- }
1117
-
1118
- .settings-item-header {
1119
- display: flex;
1120
- align-items: flex-start;
1121
- justify-content: space-between;
1122
- gap: 16px;
1123
- margin-bottom: 8px;
1124
- }
1125
-
1126
- .settings-item-title {
1127
- font-size: 13px;
1128
- font-weight: 600;
1129
- color: var(--text);
1130
- margin-bottom: 4px;
1131
- }
1132
-
1133
- .settings-item-description {
1134
- font-size: 12px;
1135
- color: var(--text-dim);
1136
- }
1137
-
1138
- .settings-item-badges {
1139
- display: flex;
1140
- flex-wrap: wrap;
1141
- justify-content: flex-end;
1142
- gap: 6px;
1143
- }
1144
-
1145
- .settings-badge {
1146
- display: inline-flex;
1147
- align-items: center;
1148
- padding: 2px 8px;
1149
- border-radius: 999px;
1150
- font-size: 11px;
1151
- border: 1px solid transparent;
1152
- white-space: nowrap;
1153
- }
1154
-
1155
- .settings-badge.env {
1156
- color: var(--accent);
1157
- background: rgba(122, 162, 247, 0.12);
1158
- border-color: rgba(122, 162, 247, 0.24);
1159
- }
1160
-
1161
- .settings-badge.override {
1162
- color: var(--yellow);
1163
- background: rgba(224, 175, 104, 0.14);
1164
- border-color: rgba(224, 175, 104, 0.24);
1165
- }
1166
-
1167
- .settings-item-meta {
1168
- display: grid;
1169
- grid-template-columns: repeat(3, minmax(0, 1fr));
1170
- gap: 10px;
1171
- margin-bottom: 12px;
1172
- }
1173
-
1174
- .settings-meta-block {
1175
- background: var(--bg);
1176
- border: 1px solid rgba(51, 53, 74, 0.8);
1177
- border-radius: 8px;
1178
- padding: 10px;
1179
- min-width: 0;
1180
- }
1181
-
1182
- .settings-meta-label {
1183
- display: block;
1184
- font-size: 10px;
1185
- color: var(--text-dim);
1186
- text-transform: uppercase;
1187
- letter-spacing: 0.08em;
1188
- margin-bottom: 4px;
1189
- }
1190
-
1191
- .settings-meta-value {
1192
- font-size: 12px;
1193
- color: var(--text);
1194
- overflow-wrap: anywhere;
1195
- }
1196
-
1197
- .settings-item-controls {
1198
- display: flex;
1199
- flex-direction: column;
1200
- gap: 8px;
1201
- }
1202
-
1203
- .settings-session-banner {
1204
- display: flex;
1205
- align-items: center;
1206
- justify-content: space-between;
1207
- gap: 14px;
1208
- margin: 0 0 14px;
1209
- padding: 12px 14px;
1210
- border-radius: 10px;
1211
- border: 1px solid rgba(122, 162, 247, 0.24);
1212
- background: rgba(122, 162, 247, 0.09);
1213
- }
1214
-
1215
- .settings-session-copy {
1216
- min-width: 0;
1217
- }
1218
-
1219
- .settings-session-title {
1220
- font-size: 13px;
1221
- color: var(--text);
1222
- font-weight: 600;
1223
- margin-bottom: 4px;
1224
- }
1225
-
1226
- .settings-session-meta {
1227
- font-size: 12px;
1228
- color: var(--text-dim);
1229
- overflow-wrap: anywhere;
1230
- }
1231
-
1232
- .settings-help {
1233
- font-size: 11px;
1234
- color: var(--text-dim);
1235
- }
1236
-
1237
- .settings-help-warning {
1238
- color: var(--red);
1239
- font-weight: 600;
1240
- }
1241
-
1242
- .modal-footer {
1243
- display: flex;
1244
- align-items: center;
1245
- justify-content: space-between;
1246
- gap: 16px;
1247
- border-top: 1px solid var(--border);
1248
- }
1249
-
1250
- .settings-footnote {
1251
- font-size: 12px;
1252
- color: var(--text-dim);
1253
- max-width: 560px;
1254
- }
1255
-
1256
- .settings-actions {
1257
- display: flex;
1258
- align-items: center;
1259
- gap: 8px;
1260
- flex-shrink: 0;
1261
- }
1262
-
1263
- .settings-provider-shortcuts {
1264
- display: flex;
1265
- align-items: flex-start;
1266
- justify-content: space-between;
1267
- gap: 16px;
1268
- margin-bottom: 16px;
1269
- padding: 14px 16px;
1270
- border-radius: 10px;
1271
- border: 1px solid var(--border);
1272
- background: rgba(26, 27, 38, 0.72);
1273
- }
1274
-
1275
- .settings-provider-shortcuts-copy {
1276
- display: flex;
1277
- flex-direction: column;
1278
- gap: 4px;
1279
- }
1280
-
1281
- .settings-provider-shortcuts-actions {
1282
- display: flex;
1283
- gap: 8px;
1284
- flex-wrap: wrap;
1285
- justify-content: flex-end;
1286
- }
1287
-
1288
- .openrouter-connect-body {
1289
- padding: 20px;
1290
- display: flex;
1291
- flex-direction: column;
1292
- gap: 14px;
1293
- }
1294
-
1295
- .openrouter-connect-lead {
1296
- font-size: 13px;
1297
- color: var(--text);
1298
- }
1299
-
1300
- .openrouter-connect-note {
1301
- padding: 12px 14px;
1302
- border-radius: 10px;
1303
- border: 1px solid rgba(122, 162, 247, 0.22);
1304
- background: rgba(122, 162, 247, 0.08);
1305
- }
1306
-
1307
- .openrouter-connect-note strong {
1308
- display: block;
1309
- color: var(--text);
1310
- font-size: 13px;
1311
- margin-bottom: 4px;
1312
- }
1313
-
1314
- .openrouter-connect-note p,
1315
- .openrouter-connect-help {
1316
- font-size: 12px;
1317
- color: var(--text-dim);
1318
- }
1319
-
1320
- .openrouter-persist-toggle {
1321
- display: flex;
1322
- align-items: flex-start;
1323
- gap: 10px;
1324
- padding: 12px 14px;
1325
- border-radius: 10px;
1326
- border: 1px solid var(--border);
1327
- background: rgba(26, 27, 38, 0.72);
1328
- cursor: pointer;
1329
- }
1330
-
1331
- .openrouter-persist-toggle input {
1332
- margin-top: 2px;
1333
- }
1334
-
1335
- .openrouter-persist-toggle span {
1336
- font-size: 12px;
1337
- color: var(--text);
1338
- }
1339
-
1340
- .provider-input-group {
1341
- display: flex;
1342
- flex-direction: column;
1343
- gap: 6px;
1344
- }
1345
-
1346
- .provider-input-label {
1347
- color: var(--text);
1348
- font-size: 12px;
1349
- font-weight: 500;
1350
- }
1351
-
1352
- .provider-input {
1353
- width: 100%;
1354
- background: var(--bg);
1355
- border: 1px solid var(--border);
1356
- border-radius: 6px;
1357
- color: var(--text);
1358
- font-family: var(--font-mono);
1359
- font-size: 12px;
1360
- padding: 9px 10px;
1361
- }
1362
-
1363
- .provider-input:focus {
1364
- outline: none;
1365
- border-color: var(--accent);
1366
- }
1367
-
1368
- @media (max-width: 760px) {
1369
- .settings-session-banner {
1370
- flex-direction: column;
1371
- align-items: flex-start;
1372
- }
1373
-
1374
- .settings-provider-shortcuts {
1375
- flex-direction: column;
1376
- }
1377
-
1378
- .settings-provider-shortcuts-actions {
1379
- width: 100%;
1380
- justify-content: flex-start;
1381
- }
1382
- }
1383
-
1384
- .settings-list::-webkit-scrollbar,
1385
- .settings-path::-webkit-scrollbar {
1386
- width: 6px;
1387
- height: 6px;
1388
- }
1389
-
1390
- .settings-list::-webkit-scrollbar-track,
1391
- .settings-path::-webkit-scrollbar-track {
1392
- background: transparent;
1393
- }
1394
-
1395
- .settings-list::-webkit-scrollbar-thumb,
1396
- .settings-path::-webkit-scrollbar-thumb {
1397
- background: var(--border);
1398
- border-radius: 999px;
1399
- }
1400
-
1401
- /* Scrollbar */
1402
- main::-webkit-scrollbar {
1403
- width: 6px;
1404
- }
1405
-
1406
- main::-webkit-scrollbar-track {
1407
- background: transparent;
1408
- }
1409
-
1410
- main::-webkit-scrollbar-thumb {
1411
- background: var(--border);
1412
- border-radius: 3px;
1413
- }
1414
-
1415
- /* ── Graph pane ── */
1416
-
1417
- #graph-toolbar {
1418
- display: flex;
1419
- align-items: center;
1420
- gap: 10px;
1421
- padding: 8px 16px;
1422
- border-bottom: 1px solid var(--border);
1423
- flex-shrink: 0;
1424
- flex-wrap: wrap;
1425
- }
1426
-
1427
- #graph-stage {
1428
- position: relative;
1429
- flex: 1;
1430
- min-height: 0;
1431
- background: var(--bg);
1432
- }
1433
-
1434
- #graph-search {
1435
- background: var(--bg-surface);
1436
- border: 1px solid var(--border);
1437
- border-radius: 4px;
1438
- color: var(--text);
1439
- font-family: var(--font-mono);
1440
- font-size: 12px;
1441
- padding: 5px 10px;
1442
- width: 200px;
1443
- }
1444
-
1445
- #graph-search:focus {
1446
- outline: none;
1447
- border-color: var(--accent);
1448
- }
1449
-
1450
- /* Search dropdown */
1451
- .search-dropdown {
1452
- position: absolute;
1453
- top: 100%;
1454
- left: 0;
1455
- width: 300px;
1456
- max-height: 320px;
1457
- overflow-y: auto;
1458
- background: var(--bg-surface);
1459
- border: 1px solid var(--border);
1460
- border-radius: 6px;
1461
- box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
1462
- z-index: 200;
1463
- margin-top: 4px;
1464
- }
1465
-
1466
- .search-result {
1467
- display: flex;
1468
- align-items: center;
1469
- justify-content: space-between;
1470
- gap: 12px;
1471
- padding: 6px 10px;
1472
- cursor: pointer;
1473
- font-size: 12px;
1474
- transition: background 0.1s;
1475
- }
1476
-
1477
- .search-result:hover {
1478
- background: var(--bg-hover);
1479
- }
1480
-
1481
- .search-result-body {
1482
- display: flex;
1483
- flex: 1;
1484
- flex-direction: column;
1485
- min-width: 0;
1486
- }
1487
-
1488
- .search-result-name {
1489
- color: var(--text);
1490
- font-weight: 500;
1491
- overflow: hidden;
1492
- text-overflow: ellipsis;
1493
- white-space: nowrap;
1494
- }
1495
-
1496
- .search-result-subtitle {
1497
- color: var(--text-dim);
1498
- font-size: 11px;
1499
- overflow: hidden;
1500
- text-overflow: ellipsis;
1501
- white-space: nowrap;
1502
- }
1503
-
1504
- .search-result-kind {
1505
- font-size: 11px;
1506
- opacity: 0.7;
1507
- flex-shrink: 0;
1508
- letter-spacing: 0.04em;
1509
- text-transform: uppercase;
1510
- }
1511
-
1512
- .search-result-kind.file {
1513
- opacity: 0.9;
1514
- }
1515
-
1516
- #cy {
1517
- width: 100%;
1518
- height: 100%;
1519
- background: var(--bg);
1520
- position: relative;
1521
- }
1522
-
1523
- #analysis-panel {
1524
- position: absolute;
1525
- top: 16px;
1526
- left: 16px;
1527
- bottom: 16px;
1528
- width: min(380px, calc(100% - 32px));
1529
- background: rgba(17, 19, 29, 0.96);
1530
- border: 1px solid rgba(122, 162, 247, 0.22);
1531
- border-radius: 16px;
1532
- box-shadow: 0 24px 60px rgba(0, 0, 0, 0.4);
1533
- backdrop-filter: blur(16px);
1534
- z-index: 40;
1535
- display: flex;
1536
- flex-direction: column;
1537
- overflow: hidden;
776
+ overflow: hidden;
1538
777
  }
1539
778
 
1540
779
  .analysis-panel-header {
1541
- padding: 18px 18px 14px;
1542
- border-bottom: 1px solid rgba(122, 162, 247, 0.14);
780
+ padding: 16px 18px 14px;
781
+ border-bottom: 1px solid rgba(86,200,216,0.12);
1543
782
  display: flex;
1544
783
  align-items: flex-start;
1545
784
  justify-content: space-between;
1546
785
  gap: 16px;
1547
786
  }
1548
-
1549
787
  .analysis-kicker {
1550
- font-size: 11px;
788
+ font-size: 10px;
1551
789
  text-transform: uppercase;
1552
- letter-spacing: 0.08em;
790
+ letter-spacing: 0.1em;
1553
791
  color: var(--accent);
1554
792
  margin-bottom: 6px;
1555
793
  }
1556
-
1557
- .analysis-title-row {
1558
- display: flex;
1559
- align-items: center;
1560
- gap: 10px;
1561
- flex-wrap: wrap;
1562
- }
1563
-
1564
- .analysis-title-row h2 {
1565
- margin: 0;
1566
- font-size: 17px;
1567
- color: var(--text);
1568
- }
1569
-
794
+ .analysis-title-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
795
+ .analysis-title-row h2 { margin: 0; font-size: 16px; color: var(--text); }
1570
796
  .analysis-pill {
1571
- border: 1px solid rgba(122, 162, 247, 0.3);
1572
- border-radius: 999px;
1573
- padding: 3px 8px;
1574
- font-size: 11px;
1575
- color: var(--text-dim);
1576
- }
1577
-
1578
- .analysis-subtitle {
1579
- margin: 10px 0 0;
1580
- font-size: 12px;
1581
- line-height: 1.5;
797
+ border: 1px solid rgba(86,200,216,0.25);
798
+ border-radius: 99px;
799
+ padding: 2px 8px;
800
+ font-size: 10px;
1582
801
  color: var(--text-dim);
1583
- max-width: 48ch;
1584
- }
1585
-
1586
- .analysis-panel-actions {
1587
- display: flex;
1588
- align-items: center;
1589
- gap: 8px;
1590
- flex-shrink: 0;
1591
802
  }
803
+ .analysis-subtitle { margin: 8px 0 0; font-size: 12px; line-height: 1.5; color: var(--text-dim); max-width: 48ch; }
804
+ .analysis-panel-actions { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
1592
805
 
1593
806
  .analysis-status {
1594
807
  margin: 12px 18px 0;
1595
808
  padding: 10px 12px;
1596
- border-radius: 10px;
1597
- border: 1px solid rgba(122, 162, 247, 0.18);
1598
- background: rgba(122, 162, 247, 0.08);
809
+ border-radius: var(--r-md);
810
+ border: 1px solid var(--accent-line);
811
+ background: var(--accent-soft);
1599
812
  color: var(--text-dim);
1600
813
  font-size: 12px;
1601
814
  }
1602
-
1603
815
  .analysis-status.error {
1604
- border-color: rgba(247, 118, 142, 0.28);
1605
- background: rgba(247, 118, 142, 0.1);
1606
- color: #f4b1ba;
816
+ border-color: rgba(224,108,117,0.28);
817
+ background: rgba(224,108,117,0.08);
818
+ color: #f0a0aa;
1607
819
  }
1608
820
 
1609
821
  .analysis-summary {
1610
- padding: 14px 18px 10px;
822
+ padding: 12px 18px 8px;
1611
823
  display: grid;
1612
824
  grid-template-columns: repeat(2, minmax(0, 1fr));
1613
- gap: 10px;
825
+ gap: 8px;
1614
826
  }
1615
-
1616
827
  .analysis-summary-card {
1617
- appearance: none;
1618
- width: 100%;
1619
- text-align: left;
1620
- border: 1px solid rgba(122, 162, 247, 0.14);
1621
- border-radius: 12px;
1622
- background: rgba(31, 35, 53, 0.72);
1623
- padding: 12px;
828
+ appearance: none; width: 100%; text-align: left;
829
+ border: 1px solid var(--border); border-radius: var(--r-md);
830
+ background: var(--bg-2); padding: 12px;
1624
831
  cursor: pointer;
1625
- transition: border-color 0.15s ease, transform 0.15s ease, background 0.15s ease;
832
+ transition: border-color 0.15s, transform 0.15s, background 0.15s;
1626
833
  }
1627
-
1628
834
  .analysis-summary-card:hover {
1629
- border-color: rgba(122, 162, 247, 0.3);
1630
- background: rgba(36, 40, 60, 0.82);
835
+ border-color: var(--accent-line);
836
+ background: var(--bg-hover);
1631
837
  transform: translateY(-1px);
1632
838
  }
1633
-
1634
839
  .analysis-summary-card.active {
1635
- border-color: rgba(122, 162, 247, 0.38);
1636
- background: rgba(34, 41, 67, 0.92);
1637
- box-shadow: 0 0 0 1px rgba(122, 162, 247, 0.16);
1638
- }
1639
-
1640
- .analysis-summary-value {
1641
- display: block;
1642
- font-size: 17px;
1643
- font-weight: 600;
1644
- color: var(--text);
840
+ border-color: var(--accent-line);
841
+ background: var(--accent-soft);
842
+ box-shadow: 0 0 0 1px rgba(86,200,216,0.14);
1645
843
  }
1646
-
844
+ .analysis-summary-value { display: block; font-size: 18px; font-weight: 600; color: var(--text); }
1647
845
  .analysis-summary-label {
1648
- display: block;
1649
- margin-top: 4px;
1650
- font-size: 11px;
1651
- color: var(--text-dim);
1652
- text-transform: uppercase;
1653
- letter-spacing: 0.05em;
846
+ display: block; margin-top: 3px; font-size: 10px;
847
+ color: var(--text-dim); text-transform: uppercase; letter-spacing: 0.06em;
1654
848
  }
1655
849
 
1656
850
  .analysis-findings {
1657
- flex: 1;
1658
- overflow-y: auto;
851
+ flex: 1; overflow-y: auto;
1659
852
  padding: 6px 18px 18px;
1660
- display: flex;
1661
- flex-direction: column;
1662
- gap: 10px;
1663
- }
1664
-
1665
- .analysis-findings::-webkit-scrollbar {
1666
- width: 6px;
1667
- }
1668
-
1669
- .analysis-findings::-webkit-scrollbar-track {
1670
- background: transparent;
1671
- }
1672
-
1673
- .analysis-findings::-webkit-scrollbar-thumb {
1674
- background: var(--border);
1675
- border-radius: 999px;
853
+ display: flex; flex-direction: column; gap: 8px;
1676
854
  }
855
+ .analysis-findings::-webkit-scrollbar { width: 5px; }
856
+ .analysis-findings::-webkit-scrollbar-track { background: transparent; }
857
+ .analysis-findings::-webkit-scrollbar-thumb { background: var(--border); border-radius: 99px; }
1677
858
 
1678
859
  .analysis-empty {
1679
- border: 1px dashed rgba(122, 162, 247, 0.2);
1680
- border-radius: 12px;
860
+ border: 1px dashed rgba(86,200,216,0.18);
861
+ border-radius: var(--r-md);
1681
862
  padding: 16px;
1682
863
  color: var(--text-dim);
1683
- font-size: 13px;
864
+ font-size: 12px;
1684
865
  line-height: 1.6;
1685
866
  }
1686
867
 
1687
868
  .analysis-finding {
1688
- border: 1px solid rgba(122, 162, 247, 0.14);
1689
- border-radius: 14px;
1690
- background: rgba(31, 35, 53, 0.78);
869
+ border: 1px solid var(--border);
870
+ border-radius: var(--r-lg);
871
+ background: var(--bg-2);
1691
872
  padding: 14px;
1692
873
  cursor: pointer;
1693
- transition: border-color 0.15s ease, transform 0.15s ease, background 0.15s ease;
874
+ transition: border-color 0.15s, transform 0.15s, background 0.15s;
1694
875
  }
1695
-
1696
876
  .analysis-finding:hover {
1697
- border-color: rgba(122, 162, 247, 0.32);
1698
- background: rgba(36, 40, 60, 0.86);
877
+ border-color: var(--border-mid);
878
+ background: var(--bg-hover);
1699
879
  transform: translateY(-1px);
1700
880
  }
1701
-
1702
881
  .analysis-finding.active {
1703
- border-color: rgba(247, 118, 142, 0.4);
1704
- box-shadow: 0 0 0 1px rgba(247, 118, 142, 0.2);
882
+ border-color: rgba(224,108,117,0.38);
883
+ box-shadow: 0 0 0 1px rgba(224,108,117,0.18);
1705
884
  }
1706
885
 
1707
886
  .analysis-finding-header {
1708
- display: flex;
1709
- align-items: flex-start;
1710
- justify-content: space-between;
1711
- gap: 12px;
1712
- margin-bottom: 8px;
1713
- }
1714
-
1715
- .analysis-finding-title {
1716
- margin: 0;
1717
- font-size: 14px;
1718
- line-height: 1.4;
1719
- color: var(--text);
1720
- }
1721
-
1722
- .analysis-finding-meta {
1723
- display: flex;
1724
- flex-wrap: wrap;
1725
- align-items: center;
1726
- gap: 6px;
1727
- flex-shrink: 0;
887
+ display: flex; align-items: flex-start;
888
+ justify-content: space-between; gap: 12px; margin-bottom: 8px;
1728
889
  }
890
+ .analysis-finding-title { margin: 0; font-size: 13px; line-height: 1.4; color: var(--text); }
891
+ .analysis-finding-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; flex-shrink: 0; }
1729
892
 
1730
893
  .analysis-type-badge,
1731
894
  .analysis-severity-badge,
1732
895
  .analysis-metric-chip,
1733
896
  .analysis-file-badge {
1734
- border-radius: 999px;
897
+ border-radius: 99px;
1735
898
  font-size: 11px;
1736
- padding: 3px 8px;
899
+ padding: 2px 8px;
1737
900
  }
1738
-
1739
901
  .analysis-type-badge {
1740
- color: var(--accent);
1741
- background: rgba(122, 162, 247, 0.12);
1742
- border: 1px solid rgba(122, 162, 247, 0.2);
902
+ color: var(--accent); background: var(--accent-soft); border: 1px solid var(--accent-line);
1743
903
  }
904
+ .analysis-severity-badge { border: 1px solid transparent; }
905
+ .analysis-severity-badge.info { color: #7dcfff; background: rgba(125,207,255,0.10); border-color: rgba(125,207,255,0.18); }
906
+ .analysis-severity-badge.warning { color: var(--yellow); background: rgba(212,168,75,0.10); border-color: rgba(212,168,75,0.2); }
907
+ .analysis-severity-badge.high { color: var(--red); background: rgba(224,108,117,0.10); border-color: rgba(224,108,117,0.2); }
1744
908
 
1745
- .analysis-severity-badge {
1746
- border: 1px solid transparent;
909
+ .analysis-finding-summary { margin: 0 0 10px; font-size: 12px; line-height: 1.6; color: var(--text-dim); }
910
+
911
+ .analysis-chip-row,
912
+ .analysis-file-row { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
913
+
914
+ .analysis-metric-chip {
915
+ color: var(--text); background: var(--bg); border: 1px solid var(--border);
916
+ }
917
+ .analysis-file-badge {
918
+ color: var(--text-dim); background: var(--bg); border: 1px solid var(--border);
1747
919
  }
1748
920
 
1749
- .analysis-severity-badge.info {
1750
- color: #7dcfff;
1751
- background: rgba(125, 207, 255, 0.12);
1752
- border-color: rgba(125, 207, 255, 0.18);
921
+ .analysis-rationale { margin: 0; padding-left: 18px; color: var(--text-dim); font-size: 12px; line-height: 1.5; }
922
+ .analysis-rationale li + li { margin-top: 4px; }
923
+
924
+ .analysis-finding-actions { display: flex; gap: 8px; margin-top: 12px; }
925
+ .analysis-finding-actions .header-btn { flex: 1; text-align: center; }
926
+
927
+ .analysis-explanation {
928
+ margin-top: 12px; padding-top: 12px;
929
+ border-top: 1px solid rgba(86,200,216,0.1);
930
+ }
931
+ .analysis-explanation-label {
932
+ font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em;
933
+ color: var(--accent); margin-bottom: 4px;
1753
934
  }
935
+ .analysis-explanation-note { font-size: 12px; line-height: 1.5; color: var(--text-dim); margin-bottom: 10px; }
936
+ .analysis-explanation-content { max-height: 280px; }
1754
937
 
1755
- .analysis-severity-badge.warning {
1756
- color: #e0af68;
1757
- background: rgba(224, 175, 104, 0.12);
1758
- border-color: rgba(224, 175, 104, 0.2);
938
+ /* ── Messages ────────────────────────────────────────────────────────── */
939
+ main {
940
+ flex: 1;
941
+ overflow-y: auto;
942
+ padding: 16px;
943
+ display: flex;
944
+ flex-direction: column;
945
+ gap: 8px;
1759
946
  }
1760
947
 
1761
- .analysis-severity-badge.high {
1762
- color: #f7768e;
1763
- background: rgba(247, 118, 142, 0.12);
1764
- border-color: rgba(247, 118, 142, 0.24);
948
+ .message {
949
+ padding: 10px 14px;
950
+ border-radius: var(--r-lg);
951
+ max-width: 100%;
952
+ word-wrap: break-word;
953
+ white-space: pre-wrap;
954
+ font-size: 13px;
1765
955
  }
1766
956
 
1767
- .analysis-finding-summary {
1768
- margin: 0 0 10px;
1769
- font-size: 12px;
1770
- line-height: 1.6;
1771
- color: var(--text-dim);
957
+ .message.user {
958
+ background: rgba(86,200,216,0.14);
959
+ border: 1px solid rgba(86,200,216,0.22);
960
+ color: var(--text);
961
+ align-self: flex-end;
962
+ max-width: 90%;
963
+ border-radius: var(--r-lg) var(--r-lg) var(--r-sm) var(--r-lg);
1772
964
  }
1773
965
 
1774
- .analysis-chip-row,
1775
- .analysis-file-row {
1776
- display: flex;
1777
- flex-wrap: wrap;
1778
- gap: 6px;
1779
- margin-bottom: 8px;
966
+ .message.assistant {
967
+ background: var(--bg-surface);
968
+ border: 1px solid var(--border);
969
+ border-left: 2px solid var(--accent-dim);
970
+ border-radius: var(--r-sm) var(--r-lg) var(--r-lg) var(--r-lg);
971
+ white-space: normal;
1780
972
  }
1781
973
 
1782
- .analysis-metric-chip {
1783
- color: var(--text);
1784
- background: rgba(17, 19, 29, 0.75);
1785
- border: 1px solid rgba(122, 162, 247, 0.12);
974
+ /* Markdown inside assistant messages */
975
+ .message.assistant p, .detail-explain-content p { margin: 0 0 8px; }
976
+ .message.assistant p:last-child, .detail-explain-content p:last-child { margin-bottom: 0; }
977
+
978
+ .message.assistant pre, .detail-explain-content pre {
979
+ background: var(--bg) !important;
980
+ border: 1px solid var(--border);
981
+ border-radius: var(--r-sm);
982
+ padding: 8px 10px !important;
983
+ margin: 8px 0;
984
+ overflow-x: auto;
985
+ font-size: 11px;
986
+ line-height: 1.5;
987
+ }
988
+ .message.assistant code, .detail-explain-content code {
989
+ font-family: var(--font-mono); font-size: 0.9em;
990
+ }
991
+ .message.assistant :not(pre) > code,
992
+ .detail-explain-content :not(pre) > code {
993
+ background: var(--accent-soft);
994
+ padding: 1px 5px;
995
+ border-radius: 3px;
996
+ color: var(--accent);
997
+ }
998
+ .message.assistant ul, .message.assistant ol,
999
+ .detail-explain-content ul, .detail-explain-content ol {
1000
+ margin: 6px 0; padding-left: 20px;
1001
+ }
1002
+ .message.assistant li, .detail-explain-content li { margin-bottom: 3px; }
1003
+ .message.assistant h1, .message.assistant h2, .message.assistant h3,
1004
+ .detail-explain-content h1, .detail-explain-content h2, .detail-explain-content h3 {
1005
+ font-size: 13px; font-weight: 600; margin: 10px 0 4px; color: var(--text);
1006
+ }
1007
+ .message.assistant h1 { font-size: 14px; }
1008
+ .message.assistant h2 { font-size: 13px; }
1009
+ .message.assistant strong, .detail-explain-content strong { color: var(--text); }
1010
+ .message.assistant blockquote, .detail-explain-content blockquote {
1011
+ border-left: 2px solid var(--accent-dim);
1012
+ padding-left: 10px; margin: 6px 0; color: var(--text-dim);
1786
1013
  }
1787
1014
 
1788
- .analysis-file-badge {
1789
- color: var(--text-dim);
1790
- background: rgba(17, 19, 29, 0.75);
1791
- border: 1px solid rgba(86, 95, 137, 0.32);
1015
+ .message.error {
1016
+ background: rgba(224,108,117,0.08);
1017
+ border: 1px solid rgba(224,108,117,0.22);
1018
+ color: var(--red);
1792
1019
  }
1793
1020
 
1794
- .analysis-rationale {
1795
- margin: 0;
1796
- padding-left: 18px;
1021
+ .message.thinking {
1797
1022
  color: var(--text-dim);
1023
+ font-style: italic;
1798
1024
  font-size: 12px;
1799
- line-height: 1.5;
1025
+ padding: 4px 14px;
1800
1026
  }
1801
1027
 
1802
- .analysis-rationale li + li {
1803
- margin-top: 4px;
1028
+ /* ── Tool calls ──────────────────────────────────────────────────────── */
1029
+ .tool-group {
1030
+ display: flex; flex-direction: column; gap: 2px; margin: 2px 0;
1804
1031
  }
1805
1032
 
1806
- .analysis-finding-actions {
1807
- display: flex;
1808
- gap: 8px;
1809
- margin-top: 12px;
1033
+ .tool-call {
1034
+ font-size: 12px;
1035
+ padding: 4px 10px;
1036
+ border-radius: var(--r-sm);
1037
+ color: var(--text-dim);
1038
+ cursor: pointer;
1039
+ transition: background 0.15s;
1040
+ line-height: 1.4;
1041
+ border-left: 2px solid transparent;
1042
+ }
1043
+ .tool-call:hover {
1044
+ background: var(--bg-hover);
1045
+ border-left-color: var(--accent-dim);
1046
+ }
1047
+ .tool-call .tool-header { display: flex; align-items: baseline; gap: 6px; }
1048
+ .tool-call .tool-name { color: var(--accent); font-weight: 600; flex-shrink: 0; font-size: 12px; }
1049
+ .tool-call .tool-arg { color: var(--text-dim); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
1050
+ .tool-call .tool-time { color: var(--text-dim); margin-left: auto; flex-shrink: 0; font-size: 11px; opacity: 0.6; }
1051
+ .tool-call .tool-result {
1052
+ display: none;
1053
+ margin-top: 6px;
1054
+ padding: 6px 8px;
1055
+ border-radius: var(--r-sm);
1056
+ background: var(--bg);
1057
+ border: 1px solid var(--border);
1058
+ white-space: pre-wrap;
1059
+ max-height: 200px;
1060
+ overflow-y: auto;
1061
+ font-size: 11px;
1062
+ color: var(--text-dim);
1810
1063
  }
1064
+ .tool-call.expanded .tool-result { display: block; }
1811
1065
 
1812
- .analysis-finding-actions .header-btn {
1813
- flex: 1;
1814
- text-align: center;
1066
+ /* ── Usage / streaming ───────────────────────────────────────────────── */
1067
+ .streaming-cursor::after {
1068
+ content: '\25CC';
1069
+ animation: blink 0.8s step-end infinite;
1070
+ color: var(--accent);
1815
1071
  }
1072
+ @keyframes blink { 50% { opacity: 0; } }
1816
1073
 
1817
- .analysis-explanation {
1818
- margin-top: 12px;
1819
- padding-top: 12px;
1820
- border-top: 1px solid rgba(122, 162, 247, 0.12);
1074
+ .usage-info {
1075
+ font-size: 11px; color: var(--text-dim);
1076
+ opacity: 0.5; text-align: right; padding: 2px 4px;
1821
1077
  }
1822
1078
 
1823
- .analysis-explanation-label {
1824
- font-size: 11px;
1825
- text-transform: uppercase;
1826
- letter-spacing: 0.06em;
1827
- color: #7dcfff;
1828
- margin-bottom: 4px;
1079
+ /* ── Chat footer / input ─────────────────────────────────────────────── */
1080
+ footer {
1081
+ padding: 10px 14px 12px;
1082
+ border-top: 1px solid var(--border);
1083
+ flex-shrink: 0;
1084
+ background: var(--bg-surface);
1829
1085
  }
1830
1086
 
1831
- .analysis-explanation-note {
1832
- font-size: 12px;
1833
- line-height: 1.5;
1834
- color: var(--text-dim);
1835
- margin-bottom: 10px;
1087
+ #chat-form {
1088
+ display: flex; gap: 8px; align-items: flex-end;
1836
1089
  }
1837
1090
 
1838
- .analysis-explanation-content {
1839
- max-height: 280px;
1091
+ #chat-input {
1092
+ flex: 1;
1093
+ background: var(--bg-2);
1094
+ border: 1px solid var(--border-mid);
1095
+ border-radius: var(--r-md);
1096
+ color: var(--text);
1097
+ font-family: var(--font-mono);
1098
+ font-size: 13px;
1099
+ padding: 9px 12px;
1100
+ resize: none;
1101
+ max-height: 150px;
1102
+ line-height: 1.5;
1103
+ transition: border-color 0.15s;
1840
1104
  }
1105
+ #chat-input:focus { outline: none; border-color: var(--accent-line); }
1841
1106
 
1842
- .graph-empty {
1843
- display: flex;
1844
- align-items: center;
1845
- justify-content: center;
1846
- height: 100%;
1847
- color: var(--text-dim);
1848
- font-size: 14px;
1849
- padding: 40px;
1850
- text-align: center;
1107
+ #send-btn, #cancel-btn {
1108
+ padding: 9px 16px;
1109
+ border: none;
1110
+ border-radius: var(--r-md);
1111
+ font-family: var(--font-mono);
1112
+ font-size: 12px;
1113
+ font-weight: 600;
1114
+ cursor: pointer;
1115
+ transition: opacity 0.15s;
1851
1116
  }
1852
-
1853
- .graph-onboarding {
1854
- position: absolute;
1855
- inset: 0;
1856
- display: flex;
1857
- flex-direction: column;
1858
- align-items: center;
1859
- justify-content: center;
1860
- gap: 8px;
1861
- pointer-events: none;
1862
- z-index: 10;
1863
- color: var(--text-dim);
1864
- text-align: center;
1865
- padding: 40px;
1117
+ #send-btn {
1118
+ background: var(--accent);
1119
+ color: #0a0e15;
1866
1120
  }
1867
-
1868
- .graph-onboarding-icon {
1869
- font-size: 28px;
1870
- opacity: 0.25;
1871
- letter-spacing: 4px;
1872
- margin-bottom: 4px;
1121
+ #send-btn:hover { opacity: 0.85; }
1122
+ #send-btn:disabled { opacity: 0.35; cursor: not-allowed; }
1123
+ #cancel-btn {
1124
+ background: rgba(224,108,117,0.2);
1125
+ border: 1px solid rgba(224,108,117,0.35);
1126
+ color: var(--red);
1873
1127
  }
1874
1128
 
1875
- .graph-onboarding-title {
1876
- font-size: 15px;
1877
- font-weight: 600;
1878
- opacity: 0.5;
1129
+ .auto-allow-row {
1130
+ display: flex; align-items: center; gap: 8px;
1131
+ margin-bottom: 8px;
1132
+ font-size: 11px; color: var(--text-dim);
1133
+ user-select: none;
1879
1134
  }
1880
-
1881
- .graph-onboarding-subtitle {
1882
- font-size: 13px;
1883
- opacity: 0.4;
1884
- line-height: 1.5;
1135
+ .auto-allow-row select {
1136
+ background: var(--bg-2);
1137
+ color: var(--text);
1138
+ border: 1px solid var(--border);
1139
+ border-radius: var(--r-sm);
1140
+ padding: 3px 6px;
1141
+ font-size: 11px;
1142
+ font-family: inherit;
1143
+ cursor: pointer;
1885
1144
  }
1886
1145
 
1887
- /* Symbol detail panel */
1146
+ /* ── Symbol detail panel ─────────────────────────────────────────────── */
1888
1147
  #symbol-detail {
1889
- position: absolute;
1890
- top: 0;
1891
- right: 0;
1148
+ flex-shrink: 0;
1892
1149
  width: 380px;
1893
1150
  min-width: 200px;
1894
1151
  max-width: 80%;
@@ -1896,82 +1153,54 @@ main::-webkit-scrollbar-thumb {
1896
1153
  background: var(--bg-surface);
1897
1154
  border-left: 1px solid var(--border);
1898
1155
  overflow-y: auto;
1899
- padding: 16px;
1900
- z-index: 50;
1901
- box-shadow: -4px 0 16px rgba(0, 0, 0, 0.3);
1156
+ padding: 18px 16px;
1157
+ position: relative;
1158
+ box-shadow: -4px 0 20px rgba(0,0,0,0.35);
1902
1159
  }
1903
1160
 
1904
1161
  #symbol-detail .resize-handle {
1905
- position: absolute;
1906
- top: 0;
1907
- left: 0;
1908
- width: 5px;
1909
- height: 100%;
1910
- cursor: col-resize;
1911
- background: transparent;
1912
- z-index: 51;
1162
+ position: absolute; top: 0; left: 0;
1163
+ width: 5px; height: 100%;
1164
+ cursor: col-resize; background: transparent; z-index: 51;
1913
1165
  }
1914
-
1915
1166
  #symbol-detail .resize-handle:hover,
1916
- #symbol-detail .resize-handle.dragging {
1917
- background: var(--accent-dim);
1918
- }
1167
+ #symbol-detail .resize-handle.dragging { background: var(--accent-dim); }
1919
1168
 
1920
1169
  .detail-header {
1921
- display: flex;
1922
- align-items: center;
1923
- gap: 8px;
1924
- margin-bottom: 8px;
1925
- }
1926
-
1927
- .detail-name {
1928
- font-size: 15px;
1929
- font-weight: 600;
1930
- color: var(--text);
1931
- word-break: break-all;
1170
+ display: flex; align-items: center; gap: 8px; margin-bottom: 6px;
1932
1171
  }
1172
+ .detail-name { font-size: 15px; font-weight: 600; color: var(--text); word-break: break-all; }
1933
1173
 
1934
1174
  .detail-kind-badge {
1935
- font-size: 11px;
1175
+ font-size: 10px;
1936
1176
  padding: 2px 8px;
1937
- border-radius: 10px;
1938
- font-weight: 500;
1177
+ border-radius: 99px;
1178
+ font-weight: 600;
1939
1179
  flex-shrink: 0;
1180
+ border: 1px solid transparent;
1181
+ background: var(--accent-soft);
1182
+ color: var(--accent);
1183
+ border-color: var(--accent-line);
1940
1184
  }
1941
1185
 
1942
1186
  .detail-file {
1943
- font-size: 12px;
1944
- color: var(--text-dim);
1945
- margin-bottom: 12px;
1187
+ font-size: 11px; color: var(--text-dim); margin-bottom: 14px;
1946
1188
  }
1947
-
1948
1189
  .detail-file-link {
1949
- padding: 0;
1950
- border: 0;
1951
- background: none;
1952
- color: inherit;
1953
- font: inherit;
1954
- text-align: left;
1955
- text-decoration: underline;
1956
- text-decoration-color: rgba(124, 92, 255, 0.35);
1957
- text-underline-offset: 2px;
1958
- cursor: pointer;
1959
- }
1960
-
1961
- .detail-file-link:hover {
1962
- color: var(--text);
1963
- text-decoration-color: var(--accent);
1190
+ padding: 0; border: 0; background: none; color: inherit; font: inherit;
1191
+ text-align: left; text-decoration: underline;
1192
+ text-decoration-color: rgba(86,200,216,0.28);
1193
+ text-underline-offset: 2px; cursor: pointer;
1964
1194
  }
1195
+ .detail-file-link:hover { color: var(--text); text-decoration-color: var(--accent); }
1965
1196
 
1966
1197
  .detail-signature {
1967
1198
  background: var(--bg);
1968
1199
  border: 1px solid var(--border);
1969
- border-radius: 4px;
1200
+ border-radius: var(--r-sm);
1970
1201
  padding: 8px 10px;
1971
- font-size: 12px;
1972
- color: var(--text);
1973
- overflow-x: auto;
1974
- white-space: pre-wrap;
1202
+ font-size: 11px; color: var(--text);
1203
+ overflow-x: auto; white-space: pre-wrap;
1975
1204
  margin-bottom: 12px;
1976
1205
  font-family: var(--font-mono);
1977
1206
  }
@@ -1979,251 +1208,309 @@ main::-webkit-scrollbar-thumb {
1979
1208
  .detail-code {
1980
1209
  background: var(--bg) !important;
1981
1210
  border: 1px solid var(--border);
1982
- border-radius: 4px;
1211
+ border-radius: var(--r-sm);
1983
1212
  padding: 10px 12px !important;
1984
- font-size: 11px;
1985
- line-height: 1.5;
1986
- color: var(--text);
1987
- overflow: auto;
1988
- max-height: 300px;
1989
- white-space: pre;
1990
- margin-bottom: 12px;
1991
- font-family: var(--font-mono);
1992
- tab-size: 2;
1993
- }
1994
-
1995
- .detail-actions {
1996
- display: flex;
1997
- gap: 8px;
1998
- margin-bottom: 16px;
1999
- }
2000
-
2001
- .detail-actions .header-btn {
2002
- flex: 1;
2003
- text-align: center;
1213
+ font-size: 11px; line-height: 1.5; color: var(--text);
1214
+ overflow: auto; max-height: 280px; white-space: pre;
1215
+ margin-bottom: 12px; font-family: var(--font-mono); tab-size: 2;
2004
1216
  }
2005
1217
 
2006
- .detail-section {
2007
- margin-bottom: 14px;
2008
- }
1218
+ .detail-actions { display: flex; gap: 6px; margin-bottom: 16px; }
1219
+ .detail-actions .header-btn { flex: 1; text-align: center; }
2009
1220
 
1221
+ .detail-section { margin-bottom: 14px; }
2010
1222
  .detail-section-title {
2011
- font-size: 11px;
2012
- color: var(--text-dim);
2013
- text-transform: uppercase;
2014
- letter-spacing: 0.5px;
2015
- margin-bottom: 6px;
2016
- font-weight: 600;
1223
+ font-size: 10px; color: var(--text-dim);
1224
+ text-transform: uppercase; letter-spacing: 0.08em;
1225
+ margin-bottom: 6px; font-weight: 600;
2017
1226
  }
2018
-
2019
1227
  .detail-section-list {
2020
- display: flex;
2021
- flex-direction: column;
2022
- gap: 2px;
2023
- font-size: 12px;
1228
+ display: flex; flex-direction: column; gap: 2px; font-size: 12px;
2024
1229
  }
2025
1230
 
2026
1231
  .detail-link {
2027
- color: var(--accent);
2028
- cursor: pointer;
2029
- padding: 3px 6px;
2030
- border-radius: 3px;
1232
+ color: var(--accent); cursor: pointer;
1233
+ padding: 3px 6px; border-radius: var(--r-sm);
2031
1234
  transition: background 0.15s;
2032
1235
  }
1236
+ .detail-link:hover { background: var(--bg-hover); }
1237
+ .detail-empty { color: var(--text-dim); font-style: italic; font-size: 12px; }
2033
1238
 
2034
- .detail-link:hover {
2035
- background: var(--bg-hover);
1239
+ /* Agent pulse */
1240
+ @keyframes agent-pulse {
1241
+ 0%, 100% { border-color: rgba(86,200,216,0.5); }
1242
+ 50% { border-color: rgba(86,200,216,0.2); }
2036
1243
  }
2037
1244
 
2038
- .detail-empty {
2039
- color: var(--text-dim);
2040
- font-style: italic;
1245
+ #symbol-detail::-webkit-scrollbar { width: 5px; }
1246
+ #symbol-detail::-webkit-scrollbar-track { background: transparent; }
1247
+ #symbol-detail::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
1248
+
1249
+ /* ── Annotations ─────────────────────────────────────────────────────── */
1250
+ .detail-annotation-item {
1251
+ display: flex; align-items: flex-start; gap: 6px;
1252
+ padding: 5px 8px; border-radius: var(--r-sm);
1253
+ font-size: 12px; color: var(--text);
1254
+ background: var(--bg); border: 1px solid var(--border);
1255
+ margin-bottom: 4px;
2041
1256
  }
1257
+ .detail-annotation-item .annotation-text { flex: 1; word-break: break-word; }
1258
+ .detail-annotation-item .annotation-remove {
1259
+ background: none; border: none; color: var(--text-dim);
1260
+ cursor: pointer; font-size: 14px; padding: 0 2px; line-height: 1; flex-shrink: 0;
1261
+ }
1262
+ .detail-annotation-item .annotation-remove:hover { color: var(--red); }
2042
1263
 
2043
- /* Agent pulse animation */
2044
- @keyframes agent-pulse {
2045
- 0%, 100% { border-color: #ff9e64; }
2046
- 50% { border-color: #e0af68; }
1264
+ .detail-annotation-input { display: flex; gap: 6px; margin-top: 6px; }
1265
+ .detail-annotation-textarea {
1266
+ flex: 1; background: var(--bg);
1267
+ border: 1px solid var(--border); border-radius: var(--r-sm);
1268
+ color: var(--text); font-family: var(--font-mono);
1269
+ font-size: 12px; padding: 5px 8px; resize: none;
1270
+ min-height: 28px; max-height: 80px;
2047
1271
  }
1272
+ .detail-annotation-textarea:focus { outline: none; border-color: var(--accent-line); }
1273
+ .detail-annotation-input .dropdown-action { align-self: flex-end; }
2048
1274
 
2049
- #symbol-detail::-webkit-scrollbar {
2050
- width: 5px;
1275
+ /* ── Explain output ──────────────────────────────────────────────────── */
1276
+ .detail-explain-content {
1277
+ white-space: pre-wrap;
1278
+ background: var(--bg);
1279
+ border: 1px solid var(--border);
1280
+ border-radius: var(--r-sm);
1281
+ padding: 10px 12px;
1282
+ font-size: 12px; line-height: 1.5;
1283
+ color: var(--text); max-height: 400px;
1284
+ overflow-y: auto; font-family: var(--font-mono);
2051
1285
  }
1286
+ .detail-explain-content::-webkit-scrollbar { width: 5px; }
1287
+ .detail-explain-content::-webkit-scrollbar-track { background: transparent; }
1288
+ .detail-explain-content::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; }
2052
1289
 
2053
- #symbol-detail::-webkit-scrollbar-track {
2054
- background: transparent;
1290
+ .explain-status {
1291
+ display: flex; align-items: center; gap: 8px;
1292
+ color: var(--text-dim); font-size: 12px;
1293
+ }
1294
+ .explain-spinner {
1295
+ width: 12px; height: 12px;
1296
+ border: 2px solid var(--border); border-top-color: var(--accent);
1297
+ border-radius: 50%; animation: spin 0.8s linear infinite; flex-shrink: 0;
2055
1298
  }
1299
+ @keyframes spin { to { transform: rotate(360deg); } }
2056
1300
 
2057
- #symbol-detail::-webkit-scrollbar-thumb {
2058
- background: var(--border);
2059
- border-radius: 3px;
1301
+ /* ── Modals ──────────────────────────────────────────────────────────── */
1302
+ .hidden { display: none !important; }
1303
+
1304
+ .modal {
1305
+ position: fixed; inset: 0; z-index: 500;
1306
+ }
1307
+ .modal-backdrop {
1308
+ position: absolute; inset: 0;
1309
+ background: rgba(6, 8, 14, 0.78);
1310
+ backdrop-filter: blur(6px);
1311
+ }
1312
+ .modal-panel {
1313
+ position: absolute;
1314
+ top: 50%; left: 50%;
1315
+ width: min(960px, calc(100vw - 32px));
1316
+ max-height: calc(100vh - 48px);
1317
+ transform: translate(-50%, -50%);
1318
+ display: flex; flex-direction: column;
1319
+ background: var(--bg-surface);
1320
+ border: 1px solid var(--border-mid);
1321
+ border-radius: var(--r-xl);
1322
+ box-shadow: 0 32px 80px rgba(0,0,0,0.55), 0 1px 0 rgba(255,255,255,0.04) inset;
1323
+ overflow: hidden;
2060
1324
  }
1325
+ .modal-panel-compact { width: min(640px, calc(100vw - 32px)); }
1326
+ .modal-panel-file-preview { width: min(1200px, 80vw); height: 80vh; max-width: 80vw; max-height: 80vh; }
2061
1327
 
2062
- /* Annotation items */
2063
- .detail-annotation-item {
2064
- display: flex;
2065
- align-items: flex-start;
2066
- gap: 6px;
2067
- padding: 4px 6px;
2068
- border-radius: 3px;
2069
- font-size: 12px;
2070
- color: var(--text);
2071
- background: var(--bg);
2072
- margin-bottom: 4px;
1328
+ .modal-header, .modal-footer, .settings-toolbar { padding: 18px 20px; }
1329
+ .modal-header {
1330
+ display: flex; align-items: flex-start;
1331
+ justify-content: space-between; gap: 16px;
1332
+ border-bottom: 1px solid var(--border);
1333
+ }
1334
+ .modal-header h2 { font-size: 15px; color: var(--text); margin-bottom: 4px; }
1335
+ .modal-subtitle { font-size: 12px; color: var(--text-dim); }
1336
+
1337
+ /* ── Permission modal ────────────────────────────────────────────────── */
1338
+ .permission-body { padding: 16px 20px; display: flex; flex-direction: column; gap: 12px; }
1339
+ .permission-tool { display: flex; flex-direction: column; gap: 4px; }
1340
+ .permission-label { font-size: 10px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-dim); }
1341
+ .permission-tool code {
1342
+ font-family: var(--font-mono); font-size: 12px;
1343
+ background: var(--bg); border: 1px solid var(--border);
1344
+ border-radius: var(--r-sm); padding: 4px 8px; align-self: flex-start;
1345
+ color: var(--accent);
1346
+ }
1347
+ .permission-tool-input {
1348
+ margin: 0; padding: 10px;
1349
+ border-radius: var(--r-md);
1350
+ background: var(--bg); border: 1px solid var(--border);
1351
+ color: var(--text); font-size: 12px; font-family: var(--font-mono);
1352
+ max-height: 240px; overflow: auto;
1353
+ white-space: pre-wrap; word-break: break-word;
2073
1354
  }
2074
1355
 
2075
- .detail-annotation-item .annotation-text {
2076
- flex: 1;
2077
- word-break: break-word;
1356
+ /* ── File preview modal ──────────────────────────────────────────────── */
1357
+ .file-preview-body {
1358
+ flex: 1; min-height: 0;
1359
+ padding: 0 20px 20px; overflow: auto;
1360
+ }
1361
+ .file-preview-code {
1362
+ margin: 0; min-height: 100%;
1363
+ padding: 18px; border-radius: var(--r-lg);
1364
+ background: var(--bg); border: 1px solid var(--border);
1365
+ color: var(--text); font-size: 12px;
1366
+ line-height: 1.6; overflow: auto;
1367
+ white-space: pre; font-family: var(--font-mono);
2078
1368
  }
2079
1369
 
2080
- .detail-annotation-item .annotation-remove {
2081
- background: none;
2082
- border: none;
2083
- color: var(--text-dim);
2084
- cursor: pointer;
2085
- font-size: 14px;
2086
- padding: 0 2px;
2087
- line-height: 1;
2088
- flex-shrink: 0;
1370
+ /* ── Settings modal ──────────────────────────────────────────────────── */
1371
+ .settings-toolbar {
1372
+ display: flex; align-items: flex-end;
1373
+ justify-content: space-between; gap: 16px;
1374
+ border-bottom: 1px solid var(--border);
1375
+ background: rgba(15, 17, 24, 0.6);
1376
+ }
1377
+ .settings-path-group { display: flex; flex-direction: column; align-items: flex-end; gap: 5px; min-width: 0; }
1378
+ .settings-path-label { font-size: 10px; color: var(--text-dim); text-transform: uppercase; letter-spacing: 0.08em; }
1379
+ .settings-path {
1380
+ max-width: min(100%, 500px); overflow-x: auto; white-space: nowrap;
1381
+ color: var(--accent); background: var(--accent-soft);
1382
+ border: 1px solid var(--accent-line); border-radius: 99px; padding: 3px 10px;
2089
1383
  }
2090
1384
 
2091
- .detail-annotation-item .annotation-remove:hover {
2092
- color: var(--red);
1385
+ .settings-banner {
1386
+ margin: 12px 20px 0; padding: 10px 12px;
1387
+ border-radius: var(--r-md); font-size: 12px; border: 1px solid transparent;
2093
1388
  }
1389
+ .settings-banner.info { background: var(--accent-soft); border-color: var(--accent-line); color: var(--text); }
1390
+ .settings-banner.success { background: rgba(125,206,160,0.10); border-color: rgba(125,206,160,0.22); color: var(--green); }
1391
+ .settings-banner.error { background: rgba(224,108,117,0.10); border-color: rgba(224,108,117,0.2); color: var(--red); }
2094
1392
 
2095
- .detail-annotation-input {
2096
- display: flex;
2097
- gap: 6px;
2098
- margin-top: 6px;
1393
+ .settings-list {
1394
+ flex: 1; min-height: 0; overflow-y: auto;
1395
+ padding: 16px 20px 20px;
1396
+ display: flex; flex-direction: column; gap: 12px;
2099
1397
  }
1398
+ .settings-list::-webkit-scrollbar { width: 5px; }
1399
+ .settings-list::-webkit-scrollbar-track { background: transparent; }
1400
+ .settings-list::-webkit-scrollbar-thumb { background: var(--border); border-radius: 99px; }
2100
1401
 
2101
- .detail-annotation-textarea {
2102
- flex: 1;
2103
- background: var(--bg);
1402
+ .settings-item {
1403
+ background: var(--bg-2);
2104
1404
  border: 1px solid var(--border);
2105
- border-radius: 4px;
1405
+ border-radius: var(--r-lg); padding: 16px;
1406
+ }
1407
+ .settings-item.is-disabled { border-color: var(--accent-line); }
1408
+ .settings-item-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 8px; }
1409
+ .settings-item-title { font-size: 13px; font-weight: 600; color: var(--text); margin-bottom: 3px; }
1410
+ .settings-item-description { font-size: 12px; color: var(--text-dim); }
1411
+ .settings-item-badges { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; }
1412
+
1413
+ .settings-badge { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 99px; font-size: 11px; border: 1px solid transparent; white-space: nowrap; }
1414
+ .settings-badge.env { color: var(--accent); background: var(--accent-soft); border-color: var(--accent-line); }
1415
+ .settings-badge.override { color: var(--yellow); background: rgba(212,168,75,0.12); border-color: rgba(212,168,75,0.22); }
1416
+
1417
+ .settings-item-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-bottom: 12px; }
1418
+ .settings-meta-block { background: var(--bg); border: 1px solid var(--border); border-radius: var(--r-md); padding: 10px; min-width: 0; }
1419
+ .settings-meta-label { display: block; font-size: 10px; color: var(--text-dim); text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 4px; }
1420
+ .settings-meta-value { font-size: 12px; color: var(--text); overflow-wrap: anywhere; }
1421
+ .settings-item-controls { display: flex; flex-direction: column; gap: 8px; }
1422
+
1423
+ .settings-control, .settings-select {
1424
+ width: 100%; background: var(--bg);
1425
+ border: 1px solid var(--border-mid);
1426
+ border-radius: var(--r-sm);
2106
1427
  color: var(--text);
2107
1428
  font-family: var(--font-mono);
2108
1429
  font-size: 12px;
2109
- padding: 5px 8px;
2110
- resize: none;
2111
- min-height: 28px;
2112
- max-height: 80px;
2113
1430
  }
1431
+ .settings-control { padding: 9px 11px; }
1432
+ .settings-select { padding: 8px 10px; }
1433
+ .settings-control:disabled, .settings-select:disabled { cursor: not-allowed; opacity: 0.55; background: rgba(12,15,22,0.8); }
1434
+ .settings-control:focus, .settings-select:focus { outline: none; border-color: var(--accent-line); }
2114
1435
 
2115
- .detail-annotation-textarea:focus {
2116
- outline: none;
2117
- border-color: var(--accent-dim);
2118
- }
1436
+ .settings-help { font-size: 11px; color: var(--text-dim); }
1437
+ .settings-help-warning { color: var(--red); font-weight: 600; }
2119
1438
 
2120
- .detail-annotation-input .dropdown-action {
2121
- align-self: flex-end;
1439
+ .modal-footer {
1440
+ display: flex; align-items: center; justify-content: space-between;
1441
+ gap: 16px; border-top: 1px solid var(--border);
2122
1442
  }
1443
+ .settings-footnote { font-size: 11px; color: var(--text-dim); max-width: 560px; }
1444
+ .settings-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
2123
1445
 
2124
- /* Explain output area */
2125
- .detail-explain-content {
2126
- white-space: pre-wrap;
2127
- background: var(--bg);
2128
- border: 1px solid var(--border);
2129
- border-radius: 4px;
2130
- padding: 10px 12px;
2131
- font-size: 12px;
2132
- line-height: 1.5;
2133
- color: var(--text);
2134
- max-height: 400px;
2135
- overflow-y: auto;
2136
- font-family: var(--font-mono);
1446
+ /* ── Session banners ─────────────────────────────────────────────────── */
1447
+ .settings-session-banner {
1448
+ display: flex; align-items: center; justify-content: space-between;
1449
+ gap: 14px; margin: 0 0 14px; padding: 12px 14px;
1450
+ border-radius: var(--r-lg); border: 1px solid var(--accent-line); background: var(--accent-soft);
2137
1451
  }
1452
+ .settings-session-copy { min-width: 0; }
1453
+ .settings-session-title { font-size: 13px; color: var(--text); font-weight: 600; margin-bottom: 4px; }
1454
+ .settings-session-meta { font-size: 12px; color: var(--text-dim); overflow-wrap: anywhere; }
2138
1455
 
2139
- .detail-explain-content::-webkit-scrollbar {
2140
- width: 5px;
1456
+ .settings-provider-shortcuts {
1457
+ display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
1458
+ margin-bottom: 14px; padding: 14px 16px;
1459
+ border-radius: var(--r-lg); border: 1px solid var(--border); background: var(--bg-2);
2141
1460
  }
1461
+ .settings-provider-shortcuts-copy { display: flex; flex-direction: column; gap: 4px; }
1462
+ .settings-provider-shortcuts-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
2142
1463
 
2143
- .detail-explain-content::-webkit-scrollbar-track {
2144
- background: transparent;
1464
+ /* ── OpenRouter / OpenAI-compat connect modals ───────────────────────── */
1465
+ .openrouter-connect-body { padding: 20px; display: flex; flex-direction: column; gap: 14px; }
1466
+ .openrouter-connect-lead { font-size: 13px; color: var(--text); }
1467
+ .openrouter-connect-note {
1468
+ padding: 12px 14px; border-radius: var(--r-lg);
1469
+ border: 1px solid var(--accent-line); background: var(--accent-soft);
2145
1470
  }
1471
+ .openrouter-connect-note strong { display: block; color: var(--text); font-size: 13px; margin-bottom: 4px; }
1472
+ .openrouter-connect-note p, .openrouter-connect-help { font-size: 12px; color: var(--text-dim); }
2146
1473
 
2147
- .detail-explain-content::-webkit-scrollbar-thumb {
2148
- background: var(--border);
2149
- border-radius: 3px;
1474
+ .openrouter-persist-toggle {
1475
+ display: flex; align-items: flex-start; gap: 10px;
1476
+ padding: 12px 14px; border-radius: var(--r-lg);
1477
+ border: 1px solid var(--border); background: var(--bg-2); cursor: pointer;
2150
1478
  }
1479
+ .openrouter-persist-toggle input { margin-top: 2px; accent-color: var(--accent); }
1480
+ .openrouter-persist-toggle span { font-size: 12px; color: var(--text); }
2151
1481
 
2152
- .explain-status {
2153
- display: flex;
2154
- align-items: center;
2155
- gap: 8px;
2156
- color: var(--text-dim);
2157
- font-size: 12px;
1482
+ .provider-input-group { display: flex; flex-direction: column; gap: 6px; }
1483
+ .provider-input-label { color: var(--text); font-size: 12px; font-weight: 500; }
1484
+ .provider-input {
1485
+ width: 100%; background: var(--bg);
1486
+ border: 1px solid var(--border-mid); border-radius: var(--r-sm);
1487
+ color: var(--text); font-family: var(--font-mono);
1488
+ font-size: 12px; padding: 9px 10px;
2158
1489
  }
1490
+ .provider-input:focus { outline: none; border-color: var(--accent-line); }
2159
1491
 
2160
- .explain-spinner {
2161
- width: 12px;
2162
- height: 12px;
2163
- border: 2px solid var(--border);
2164
- border-top-color: var(--accent);
2165
- border-radius: 50%;
2166
- animation: spin 0.8s linear infinite;
2167
- flex-shrink: 0;
2168
- }
1492
+ /* ── Scrollbars ──────────────────────────────────────────────────────── */
1493
+ main::-webkit-scrollbar, .settings-path::-webkit-scrollbar { width: 5px; height: 5px; }
1494
+ main::-webkit-scrollbar-track, .settings-path::-webkit-scrollbar-track { background: transparent; }
1495
+ main::-webkit-scrollbar-thumb, .settings-path::-webkit-scrollbar-thumb { background: var(--border); border-radius: 99px; }
2169
1496
 
2170
- @keyframes spin {
2171
- to { transform: rotate(360deg); }
1497
+ /* ── Responsive ──────────────────────────────────────────────────────── */
1498
+ @media (max-width: 900px) {
1499
+ .modal-panel { width: calc(100vw - 20px); max-height: calc(100vh - 20px); }
1500
+ .settings-toolbar, .modal-footer, .settings-item-header { flex-direction: column; align-items: stretch; }
1501
+ .openrouter-persist-toggle { align-items: flex-start; }
1502
+ .settings-path-group { align-items: flex-start; }
1503
+ .settings-item-badges { justify-content: flex-start; }
1504
+ .settings-item-meta { grid-template-columns: 1fr; }
1505
+ .settings-actions { width: 100%; justify-content: flex-end; }
1506
+ #analysis-panel { top: auto; left: 12px; right: 12px; bottom: 12px; width: auto; max-height: min(70vh, 560px); }
1507
+ .analysis-panel-header { flex-direction: column; align-items: stretch; }
1508
+ .analysis-panel-actions { justify-content: flex-end; }
1509
+ .analysis-summary { grid-template-columns: 1fr 1fr; }
2172
1510
  }
2173
1511
 
2174
- @media (max-width: 900px) {
2175
- .modal-panel {
2176
- width: calc(100vw - 20px);
2177
- max-height: calc(100vh - 20px);
2178
- }
2179
-
2180
- .settings-toolbar,
2181
- .modal-footer,
2182
- .settings-item-header {
2183
- flex-direction: column;
2184
- align-items: stretch;
2185
- }
2186
-
2187
- .openrouter-persist-toggle {
2188
- align-items: flex-start;
2189
- }
2190
-
2191
- .settings-path-group {
2192
- align-items: flex-start;
2193
- }
2194
-
2195
- .settings-item-badges {
2196
- justify-content: flex-start;
2197
- }
2198
-
2199
- .settings-item-meta {
2200
- grid-template-columns: 1fr;
2201
- }
2202
-
2203
- .settings-actions {
2204
- width: 100%;
2205
- justify-content: flex-end;
2206
- }
2207
-
2208
- #analysis-panel {
2209
- top: auto;
2210
- left: 12px;
2211
- right: 12px;
2212
- bottom: 12px;
2213
- width: auto;
2214
- max-height: min(70vh, 560px);
2215
- }
2216
-
2217
- .analysis-panel-header {
2218
- flex-direction: column;
2219
- align-items: stretch;
2220
- }
2221
-
2222
- .analysis-panel-actions {
2223
- justify-content: flex-end;
2224
- }
2225
-
2226
- .analysis-summary {
2227
- grid-template-columns: 1fr 1fr;
2228
- }
1512
+ @media (max-width: 760px) {
1513
+ .settings-session-banner { flex-direction: column; align-items: flex-start; }
1514
+ .settings-provider-shortcuts { flex-direction: column; }
1515
+ .settings-provider-shortcuts-actions { width: 100%; justify-content: flex-start; }
2229
1516
  }