@ebowwa/coder 0.7.63 → 0.7.64

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 (341) hide show
  1. package/dist/core/__tests__/permissions.test.d.ts +12 -0
  2. package/dist/core/__tests__/permissions.test.d.ts.map +1 -0
  3. package/dist/core/__tests__/permissions.test.js +851 -0
  4. package/dist/core/agent-loop/__tests__/compaction.test.d.ts +5 -0
  5. package/dist/core/agent-loop/__tests__/compaction.test.d.ts.map +1 -0
  6. package/dist/core/agent-loop/__tests__/compaction.test.js +209 -0
  7. package/dist/core/agent-loop/__tests__/formatters.test.d.ts +5 -0
  8. package/dist/core/agent-loop/__tests__/formatters.test.d.ts.map +1 -0
  9. package/dist/core/agent-loop/__tests__/formatters.test.js +195 -0
  10. package/dist/core/agent-loop/__tests__/index.test.d.ts +5 -0
  11. package/dist/core/agent-loop/__tests__/index.test.d.ts.map +1 -0
  12. package/dist/core/agent-loop/__tests__/index.test.js +121 -0
  13. package/dist/core/agent-loop/__tests__/loop-state.test.d.ts +5 -0
  14. package/dist/core/agent-loop/__tests__/loop-state.test.d.ts.map +1 -0
  15. package/dist/core/agent-loop/__tests__/loop-state.test.js +340 -0
  16. package/dist/core/agent-loop/__tests__/message-builder.test.d.ts +5 -0
  17. package/dist/core/agent-loop/__tests__/message-builder.test.d.ts.map +1 -0
  18. package/dist/core/agent-loop/__tests__/message-builder.test.js +178 -0
  19. package/dist/core/agent-loop/__tests__/tool-executor.test.d.ts +5 -0
  20. package/dist/core/agent-loop/__tests__/tool-executor.test.d.ts.map +1 -0
  21. package/dist/core/agent-loop/__tests__/tool-executor.test.js +331 -0
  22. package/dist/core/agent-loop/compaction.d.ts +39 -0
  23. package/dist/core/agent-loop/compaction.d.ts.map +1 -0
  24. package/dist/core/agent-loop/compaction.js +51 -0
  25. package/dist/core/agent-loop/formatters.d.ts +21 -0
  26. package/dist/core/agent-loop/formatters.d.ts.map +1 -0
  27. package/dist/core/agent-loop/formatters.js +42 -0
  28. package/dist/core/agent-loop/index.d.ts +25 -0
  29. package/dist/core/agent-loop/index.d.ts.map +1 -0
  30. package/dist/core/agent-loop/index.js +83 -0
  31. package/dist/core/agent-loop/loop-state.d.ts +74 -0
  32. package/dist/core/agent-loop/loop-state.d.ts.map +1 -0
  33. package/dist/core/agent-loop/loop-state.js +147 -0
  34. package/dist/core/agent-loop/message-builder.d.ts +13 -0
  35. package/dist/core/agent-loop/message-builder.d.ts.map +1 -0
  36. package/dist/core/agent-loop/message-builder.js +49 -0
  37. package/dist/core/agent-loop/tool-executor.d.ts +23 -0
  38. package/dist/core/agent-loop/tool-executor.d.ts.map +1 -0
  39. package/dist/core/agent-loop/tool-executor.js +152 -0
  40. package/dist/core/agent-loop/turn-executor.d.ts +57 -0
  41. package/dist/core/agent-loop/turn-executor.d.ts.map +1 -0
  42. package/dist/core/agent-loop/turn-executor.js +124 -0
  43. package/dist/core/agent-loop/types.d.ts +141 -0
  44. package/dist/core/agent-loop/types.d.ts.map +1 -0
  45. package/dist/core/agent-loop/types.js +4 -0
  46. package/dist/core/agent-loop.d.ts +17 -0
  47. package/dist/core/agent-loop.d.ts.map +1 -0
  48. package/dist/core/agent-loop.js +16 -0
  49. package/dist/core/api-client-impl.d.ts +62 -0
  50. package/dist/core/api-client-impl.d.ts.map +1 -0
  51. package/dist/core/api-client-impl.js +479 -0
  52. package/dist/core/api-client.d.ts +6 -0
  53. package/dist/core/api-client.d.ts.map +1 -0
  54. package/dist/core/api-client.js +5 -0
  55. package/dist/core/checkpoints.d.ts +128 -0
  56. package/dist/core/checkpoints.d.ts.map +1 -0
  57. package/dist/core/checkpoints.js +438 -0
  58. package/dist/core/claude-md.d.ts +71 -0
  59. package/dist/core/claude-md.d.ts.map +1 -0
  60. package/dist/core/claude-md.js +198 -0
  61. package/dist/core/cognitive-security/hooks.d.ts +138 -0
  62. package/dist/core/cognitive-security/hooks.d.ts.map +1 -0
  63. package/dist/core/cognitive-security/hooks.js +389 -0
  64. package/dist/core/cognitive-security/index.d.ts +751 -0
  65. package/dist/core/cognitive-security/index.d.ts.map +1 -0
  66. package/dist/core/cognitive-security/index.js +1123 -0
  67. package/dist/core/cognitive-security/middleware.d.ts +136 -0
  68. package/dist/core/cognitive-security/middleware.d.ts.map +1 -0
  69. package/dist/core/cognitive-security/middleware.js +376 -0
  70. package/dist/core/config-loader.d.ts +127 -0
  71. package/dist/core/config-loader.d.ts.map +1 -0
  72. package/dist/core/config-loader.js +219 -0
  73. package/dist/core/context-compaction.d.ts +87 -0
  74. package/dist/core/context-compaction.d.ts.map +1 -0
  75. package/dist/core/context-compaction.js +428 -0
  76. package/dist/core/git-status.d.ts +25 -0
  77. package/dist/core/git-status.d.ts.map +1 -0
  78. package/dist/core/git-status.js +204 -0
  79. package/dist/core/image.d.ts +69 -0
  80. package/dist/core/image.d.ts.map +1 -0
  81. package/dist/core/image.js +290 -0
  82. package/dist/core/image.test.d.ts +2 -0
  83. package/dist/core/image.test.d.ts.map +1 -0
  84. package/dist/core/image.test.js +149 -0
  85. package/dist/core/models.d.ts +123 -0
  86. package/dist/core/models.d.ts.map +1 -0
  87. package/dist/core/models.js +325 -0
  88. package/dist/core/permissions.d.ts +81 -0
  89. package/dist/core/permissions.d.ts.map +1 -0
  90. package/dist/core/permissions.js +327 -0
  91. package/dist/core/retry.d.ts +25 -0
  92. package/dist/core/retry.d.ts.map +1 -0
  93. package/dist/core/retry.js +121 -0
  94. package/dist/core/session-store.d.ts +9 -0
  95. package/dist/core/session-store.d.ts.map +1 -0
  96. package/dist/core/session-store.js +10 -0
  97. package/dist/core/sessions/export.d.ts +47 -0
  98. package/dist/core/sessions/export.d.ts.map +1 -0
  99. package/dist/core/sessions/export.js +256 -0
  100. package/dist/core/sessions/index.d.ts +132 -0
  101. package/dist/core/sessions/index.d.ts.map +1 -0
  102. package/dist/core/sessions/index.js +442 -0
  103. package/dist/core/sessions/metadata.d.ts +77 -0
  104. package/dist/core/sessions/metadata.d.ts.map +1 -0
  105. package/dist/core/sessions/metadata.js +233 -0
  106. package/dist/core/sessions/persistence.d.ts +72 -0
  107. package/dist/core/sessions/persistence.d.ts.map +1 -0
  108. package/dist/core/sessions/persistence.js +201 -0
  109. package/dist/core/sessions/types.d.ts +110 -0
  110. package/dist/core/sessions/types.d.ts.map +1 -0
  111. package/dist/core/sessions/types.js +4 -0
  112. package/dist/core/stream-highlighter.d.ts +18 -0
  113. package/dist/core/stream-highlighter.d.ts.map +1 -0
  114. package/dist/core/stream-highlighter.js +916 -0
  115. package/dist/core/system-reminders.d.ts +89 -0
  116. package/dist/core/system-reminders.d.ts.map +1 -0
  117. package/dist/core/system-reminders.js +285 -0
  118. package/dist/ecosystem/hooks/__tests__/index.test.d.ts +5 -0
  119. package/dist/ecosystem/hooks/__tests__/index.test.d.ts.map +1 -0
  120. package/dist/ecosystem/hooks/__tests__/index.test.js +458 -0
  121. package/dist/ecosystem/hooks/index.d.ts +59 -0
  122. package/dist/ecosystem/hooks/index.d.ts.map +1 -0
  123. package/dist/ecosystem/hooks/index.js +294 -0
  124. package/dist/ecosystem/hooks/prompt-evaluator.d.ts +32 -0
  125. package/dist/ecosystem/hooks/prompt-evaluator.d.ts.map +1 -0
  126. package/dist/ecosystem/hooks/prompt-evaluator.js +229 -0
  127. package/dist/ecosystem/skills/index.d.ts +55 -0
  128. package/dist/ecosystem/skills/index.d.ts.map +1 -0
  129. package/dist/ecosystem/skills/index.js +258 -0
  130. package/dist/ecosystem/tools/__tests__/index.test.d.ts +7 -0
  131. package/dist/ecosystem/tools/__tests__/index.test.d.ts.map +1 -0
  132. package/dist/ecosystem/tools/__tests__/index.test.js +856 -0
  133. package/dist/ecosystem/tools/index.d.ts +24 -0
  134. package/dist/ecosystem/tools/index.d.ts.map +1 -0
  135. package/dist/ecosystem/tools/index.js +1709 -0
  136. package/dist/index.d.ts +24 -0
  137. package/dist/index.d.ts.map +1 -0
  138. package/dist/index.js +32 -52192
  139. package/dist/interfaces/mcp/client.d.ts +40 -0
  140. package/dist/interfaces/mcp/client.d.ts.map +1 -0
  141. package/dist/interfaces/mcp/client.js +309 -0
  142. package/dist/interfaces/ui/index.d.ts +36 -0
  143. package/dist/interfaces/ui/index.d.ts.map +1 -0
  144. package/dist/interfaces/ui/index.js +61 -0
  145. package/dist/interfaces/ui/spinner.d.ts +140 -0
  146. package/dist/interfaces/ui/spinner.d.ts.map +1 -0
  147. package/dist/interfaces/ui/spinner.js +342 -0
  148. package/dist/interfaces/ui/terminal/cli/index.d.ts +12 -0
  149. package/dist/interfaces/ui/terminal/cli/index.d.ts.map +1 -0
  150. package/dist/interfaces/ui/terminal/cli/index.js +159 -52768
  151. package/dist/interfaces/ui/terminal/shared/args.d.ts +39 -0
  152. package/dist/interfaces/ui/terminal/shared/args.d.ts.map +1 -0
  153. package/dist/interfaces/ui/terminal/shared/args.js +176 -0
  154. package/dist/interfaces/ui/terminal/shared/index.d.ts +11 -0
  155. package/dist/interfaces/ui/terminal/shared/index.d.ts.map +1 -0
  156. package/dist/interfaces/ui/terminal/shared/index.js +16 -0
  157. package/dist/interfaces/ui/terminal/shared/loading-state.d.ts +124 -0
  158. package/dist/interfaces/ui/terminal/shared/loading-state.d.ts.map +1 -0
  159. package/dist/interfaces/ui/terminal/shared/loading-state.js +246 -0
  160. package/dist/interfaces/ui/terminal/shared/query.d.ts +22 -0
  161. package/dist/interfaces/ui/terminal/shared/query.d.ts.map +1 -0
  162. package/dist/interfaces/ui/terminal/shared/query.js +100 -0
  163. package/dist/interfaces/ui/terminal/shared/setup.d.ts +33 -0
  164. package/dist/interfaces/ui/terminal/shared/setup.d.ts.map +1 -0
  165. package/dist/interfaces/ui/terminal/shared/setup.js +226 -0
  166. package/dist/interfaces/ui/terminal/shared/status-line.d.ts +117 -0
  167. package/dist/interfaces/ui/terminal/shared/status-line.d.ts.map +1 -0
  168. package/dist/interfaces/ui/terminal/shared/status-line.js +267 -0
  169. package/dist/interfaces/ui/terminal/shared/system-prompt.d.ts +38 -0
  170. package/dist/interfaces/ui/terminal/shared/system-prompt.d.ts.map +1 -0
  171. package/dist/interfaces/ui/terminal/shared/system-prompt.js +102 -0
  172. package/dist/interfaces/ui/terminal/tui/HelpPanel.d.ts +39 -0
  173. package/dist/interfaces/ui/terminal/tui/HelpPanel.d.ts.map +1 -0
  174. package/dist/interfaces/ui/terminal/tui/HelpPanel.js +215 -0
  175. package/dist/interfaces/ui/terminal/tui/InputContext.d.ts +91 -0
  176. package/dist/interfaces/ui/terminal/tui/InputContext.d.ts.map +1 -0
  177. package/dist/interfaces/ui/terminal/tui/InputContext.js +154 -0
  178. package/dist/interfaces/ui/terminal/tui/InputField.d.ts +18 -0
  179. package/dist/interfaces/ui/terminal/tui/InputField.d.ts.map +1 -0
  180. package/dist/interfaces/ui/terminal/tui/InputField.js +41 -0
  181. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.d.ts +16 -0
  182. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.d.ts.map +1 -0
  183. package/dist/interfaces/ui/terminal/tui/InteractiveTUI.js +451 -0
  184. package/dist/interfaces/ui/terminal/tui/MessageArea.d.ts +10 -0
  185. package/dist/interfaces/ui/terminal/tui/MessageArea.d.ts.map +1 -0
  186. package/dist/interfaces/ui/terminal/tui/MessageArea.js +91 -0
  187. package/dist/interfaces/ui/terminal/tui/MessageStore.d.ts +48 -0
  188. package/dist/interfaces/ui/terminal/tui/MessageStore.d.ts.map +1 -0
  189. package/dist/interfaces/ui/terminal/tui/MessageStore.js +151 -0
  190. package/dist/interfaces/ui/terminal/tui/StatusBar.d.ts +9 -0
  191. package/dist/interfaces/ui/terminal/tui/StatusBar.d.ts.map +1 -0
  192. package/dist/interfaces/ui/terminal/tui/StatusBar.js +36 -0
  193. package/dist/interfaces/ui/terminal/tui/commands.d.ts +21 -0
  194. package/dist/interfaces/ui/terminal/tui/commands.d.ts.map +1 -0
  195. package/dist/interfaces/ui/terminal/tui/commands.js +359 -0
  196. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.d.ts +115 -0
  197. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.d.ts.map +1 -0
  198. package/dist/interfaces/ui/terminal/tui/components/InteractiveElements.js +306 -0
  199. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.d.ts +92 -0
  200. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.d.ts.map +1 -0
  201. package/dist/interfaces/ui/terminal/tui/components/MultilineInput.js +399 -0
  202. package/dist/interfaces/ui/terminal/tui/components/PaneManager.d.ts +59 -0
  203. package/dist/interfaces/ui/terminal/tui/components/PaneManager.d.ts.map +1 -0
  204. package/dist/interfaces/ui/terminal/tui/components/PaneManager.js +139 -0
  205. package/dist/interfaces/ui/terminal/tui/components/Sidebar.d.ts +68 -0
  206. package/dist/interfaces/ui/terminal/tui/components/Sidebar.d.ts.map +1 -0
  207. package/dist/interfaces/ui/terminal/tui/components/Sidebar.js +340 -0
  208. package/dist/interfaces/ui/terminal/tui/components/index.d.ts +23 -0
  209. package/dist/interfaces/ui/terminal/tui/components/index.d.ts.map +1 -0
  210. package/dist/interfaces/ui/terminal/tui/components/index.js +51 -0
  211. package/dist/interfaces/ui/terminal/tui/console.d.ts +20 -0
  212. package/dist/interfaces/ui/terminal/tui/console.d.ts.map +1 -0
  213. package/dist/interfaces/ui/terminal/tui/console.js +46 -0
  214. package/dist/interfaces/ui/terminal/tui/index.d.ts +20 -0
  215. package/dist/interfaces/ui/terminal/tui/index.d.ts.map +1 -0
  216. package/dist/interfaces/ui/terminal/tui/index.js +28 -0
  217. package/dist/interfaces/ui/terminal/tui/run.d.ts +13 -0
  218. package/dist/interfaces/ui/terminal/tui/run.d.ts.map +1 -0
  219. package/dist/interfaces/ui/terminal/tui/run.js +31 -0
  220. package/dist/interfaces/ui/terminal/tui/spinner.d.ts +44 -0
  221. package/dist/interfaces/ui/terminal/tui/spinner.d.ts.map +1 -0
  222. package/dist/interfaces/ui/terminal/tui/spinner.js +59 -0
  223. package/dist/interfaces/ui/terminal/tui/tui-app.d.ts +39 -0
  224. package/dist/interfaces/ui/terminal/tui/tui-app.d.ts.map +1 -0
  225. package/dist/interfaces/ui/terminal/tui/tui-app.js +198 -0
  226. package/dist/interfaces/ui/terminal/tui/tui-footer.d.ts +167 -0
  227. package/dist/interfaces/ui/terminal/tui/tui-footer.d.ts.map +1 -0
  228. package/dist/interfaces/ui/terminal/tui/tui-footer.js +330 -0
  229. package/dist/interfaces/ui/terminal/tui/types.d.ts +165 -0
  230. package/dist/interfaces/ui/terminal/tui/types.d.ts.map +1 -0
  231. package/dist/interfaces/ui/terminal/tui/types.js +5 -0
  232. package/dist/interfaces/ui/terminal/tui/useInputHandler.d.ts +23 -0
  233. package/dist/interfaces/ui/terminal/tui/useInputHandler.d.ts.map +1 -0
  234. package/dist/interfaces/ui/terminal/tui/useInputHandler.js +72 -0
  235. package/dist/interfaces/ui/terminal/tui/useNativeInput.d.ts +90 -0
  236. package/dist/interfaces/ui/terminal/tui/useNativeInput.d.ts.map +1 -0
  237. package/dist/interfaces/ui/terminal/tui/useNativeInput.js +188 -0
  238. package/dist/native/index.d.ts +480 -0
  239. package/dist/native/index.d.ts.map +1 -0
  240. package/dist/native/index.js +1625 -0
  241. package/dist/teammates/index.d.ts +161 -0
  242. package/dist/teammates/index.d.ts.map +1 -0
  243. package/dist/teammates/index.js +827 -0
  244. package/dist/types/index.d.ts +482 -0
  245. package/dist/types/index.d.ts.map +1 -0
  246. package/dist/types/index.js +52 -0
  247. package/package.json +4 -2
  248. package/packages/src/core/__tests__/permissions.test.ts +1091 -0
  249. package/packages/src/core/agent-loop/__tests__/compaction.test.ts +280 -0
  250. package/packages/src/core/agent-loop/__tests__/formatters.test.ts +234 -0
  251. package/packages/src/core/agent-loop/__tests__/index.test.ts +162 -0
  252. package/packages/src/core/agent-loop/__tests__/loop-state.test.ts +413 -0
  253. package/packages/src/core/agent-loop/__tests__/message-builder.test.ts +229 -0
  254. package/packages/src/core/agent-loop/__tests__/tool-executor.test.ts +457 -0
  255. package/packages/src/core/agent-loop/compaction.ts +88 -0
  256. package/packages/src/core/agent-loop/formatters.ts +50 -0
  257. package/packages/src/core/agent-loop/index.ts +135 -0
  258. package/packages/src/core/agent-loop/loop-state.ts +187 -0
  259. package/packages/src/core/agent-loop/message-builder.ts +62 -0
  260. package/packages/src/core/agent-loop/tool-executor.ts +211 -0
  261. package/packages/src/core/agent-loop/turn-executor.ts +222 -0
  262. package/packages/src/core/agent-loop/types.ts +148 -0
  263. package/packages/src/core/agent-loop.ts +18 -0
  264. package/packages/src/core/api-client-impl.ts +619 -0
  265. package/packages/src/core/api-client.ts +6 -0
  266. package/packages/src/core/checkpoints.ts +606 -0
  267. package/packages/src/core/claude-md.ts +272 -0
  268. package/packages/src/core/cognitive-security/hooks.ts +590 -0
  269. package/packages/src/core/cognitive-security/index.ts +2041 -0
  270. package/packages/src/core/cognitive-security/middleware.ts +536 -0
  271. package/packages/src/core/config-loader.ts +324 -0
  272. package/packages/src/core/context-compaction.ts +578 -0
  273. package/packages/src/core/git-status.ts +262 -0
  274. package/packages/src/core/image.test.ts +180 -0
  275. package/packages/src/core/image.ts +350 -0
  276. package/packages/src/core/lmdb.db +0 -0
  277. package/packages/src/core/lmdb.db-lock +0 -0
  278. package/packages/src/core/models.ts +430 -0
  279. package/packages/src/core/normalizers/todo +4 -0
  280. package/packages/src/core/permissions.ts +431 -0
  281. package/packages/src/core/retry.ts +170 -0
  282. package/packages/src/core/session-store.ts +36 -0
  283. package/packages/src/core/sessions/export.ts +329 -0
  284. package/packages/src/core/sessions/index.ts +587 -0
  285. package/packages/src/core/sessions/metadata.ts +309 -0
  286. package/packages/src/core/sessions/persistence.ts +244 -0
  287. package/packages/src/core/sessions/types.ts +169 -0
  288. package/packages/src/core/stream-highlighter.ts +1123 -0
  289. package/packages/src/core/system-reminders.ts +402 -0
  290. package/packages/src/core/todo +8 -0
  291. package/packages/src/ecosystem/hooks/__tests__/index.test.ts +561 -0
  292. package/packages/src/ecosystem/hooks/index.ts +341 -0
  293. package/packages/src/ecosystem/hooks/prompt-evaluator.ts +300 -0
  294. package/packages/src/ecosystem/skills/index.ts +295 -0
  295. package/packages/src/ecosystem/tools/__tests__/index.test.ts +1335 -0
  296. package/packages/src/ecosystem/tools/index.ts +1877 -0
  297. package/packages/src/index.ts +120 -0
  298. package/packages/src/interfaces/mcp/client.ts +389 -0
  299. package/packages/src/interfaces/ui/Screenshot 2026-03-02 at 9.23.10/342/200/257PM.png +0 -0
  300. package/packages/src/interfaces/ui/Screenshot 2026-03-03 at 10.55.11/342/200/257AM.png +0 -0
  301. package/packages/src/interfaces/ui/index.ts +161 -0
  302. package/packages/src/interfaces/ui/lmdb.db +0 -0
  303. package/packages/src/interfaces/ui/lmdb.db-lock +0 -0
  304. package/packages/src/interfaces/ui/spinner.ts +451 -0
  305. package/packages/src/interfaces/ui/terminal/cli/index.ts +228 -0
  306. package/packages/src/interfaces/ui/terminal/lmdb.db +0 -0
  307. package/packages/src/interfaces/ui/terminal/lmdb.db-lock +0 -0
  308. package/packages/src/interfaces/ui/terminal/shared/args.ts +222 -0
  309. package/packages/src/interfaces/ui/terminal/shared/index.ts +71 -0
  310. package/packages/src/interfaces/ui/terminal/shared/loading-state.ts +322 -0
  311. package/packages/src/interfaces/ui/terminal/shared/query.ts +146 -0
  312. package/packages/src/interfaces/ui/terminal/shared/setup.ts +295 -0
  313. package/packages/src/interfaces/ui/terminal/shared/status-line.ts +358 -0
  314. package/packages/src/interfaces/ui/terminal/shared/system-prompt.ts +146 -0
  315. package/packages/src/interfaces/ui/terminal/tui/HelpPanel.tsx +262 -0
  316. package/packages/src/interfaces/ui/terminal/tui/InputContext.tsx +232 -0
  317. package/packages/src/interfaces/ui/terminal/tui/InputField.tsx +62 -0
  318. package/packages/src/interfaces/ui/terminal/tui/InteractiveTUI.tsx +537 -0
  319. package/packages/src/interfaces/ui/terminal/tui/MessageArea.tsx +107 -0
  320. package/packages/src/interfaces/ui/terminal/tui/MessageStore.tsx +240 -0
  321. package/packages/src/interfaces/ui/terminal/tui/StatusBar.tsx +54 -0
  322. package/packages/src/interfaces/ui/terminal/tui/commands.ts +438 -0
  323. package/packages/src/interfaces/ui/terminal/tui/components/InteractiveElements.tsx +584 -0
  324. package/packages/src/interfaces/ui/terminal/tui/components/MultilineInput.tsx +614 -0
  325. package/packages/src/interfaces/ui/terminal/tui/components/PaneManager.tsx +333 -0
  326. package/packages/src/interfaces/ui/terminal/tui/components/Sidebar.tsx +604 -0
  327. package/packages/src/interfaces/ui/terminal/tui/components/index.ts +118 -0
  328. package/packages/src/interfaces/ui/terminal/tui/console.ts +49 -0
  329. package/packages/src/interfaces/ui/terminal/tui/index.ts +90 -0
  330. package/packages/src/interfaces/ui/terminal/tui/run.tsx +42 -0
  331. package/packages/src/interfaces/ui/terminal/tui/spinner.ts +69 -0
  332. package/packages/src/interfaces/ui/terminal/tui/tui-app.tsx +390 -0
  333. package/packages/src/interfaces/ui/terminal/tui/tui-footer.ts +422 -0
  334. package/packages/src/interfaces/ui/terminal/tui/types.ts +186 -0
  335. package/packages/src/interfaces/ui/terminal/tui/useInputHandler.ts +104 -0
  336. package/packages/src/interfaces/ui/terminal/tui/useNativeInput.ts +239 -0
  337. package/packages/src/lmdb.db +0 -0
  338. package/packages/src/lmdb.db-lock +0 -0
  339. package/packages/src/native/index.ts +2345 -0
  340. package/packages/src/teammates/index.ts +982 -0
  341. package/packages/src/types/index.ts +722 -0
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Cognitive Security Middleware
3
+ *
4
+ * Automatically integrates flow control into the agent loop.
5
+ * All tool inputs/outputs are classified, tracked, and validated.
6
+ */
7
+ import { type ClassifiedData, type FlowValidationResult, type LeakCheckResult } from "./index.js";
8
+ export interface SecurityConfig {
9
+ /** Enable automatic data classification */
10
+ enabled: boolean;
11
+ /** Enable flow policy enforcement */
12
+ enforcePolicies: boolean;
13
+ /** Enable taint tracking */
14
+ trackTaints: boolean;
15
+ /** Enable leak prevention on outputs */
16
+ preventLeaks: boolean;
17
+ /** Log security events */
18
+ logEvents: boolean;
19
+ /** Block on policy violations */
20
+ blockOnViolation: boolean;
21
+ /** Domains considered external (require stricter checks) */
22
+ externalDomains: string[];
23
+ /** Tools that transmit data externally */
24
+ externalTools: string[];
25
+ /** Tools that read from sensitive sources */
26
+ sensitiveSourceTools: string[];
27
+ }
28
+ export declare const DEFAULT_SECURITY_CONFIG: SecurityConfig;
29
+ export interface SecurityEvent {
30
+ type: "classify" | "flow_check" | "leak_check" | "taint" | "block" | "allow";
31
+ timestamp: number;
32
+ toolName: string;
33
+ dataId?: string;
34
+ sensitivity?: string;
35
+ category?: string;
36
+ sourceDomain?: string;
37
+ targetDomain?: string;
38
+ allowed?: boolean;
39
+ reason?: string;
40
+ }
41
+ export interface ToolSecurityContext {
42
+ toolName: string;
43
+ input: Record<string, unknown>;
44
+ output?: unknown;
45
+ sourceDomain: string;
46
+ targetDomain: string;
47
+ }
48
+ export interface SecurityMiddlewareResult {
49
+ allowed: boolean;
50
+ reason: string;
51
+ classifiedInput?: ClassifiedData;
52
+ classifiedOutput?: ClassifiedData;
53
+ flowResult?: FlowValidationResult;
54
+ leakResult?: LeakCheckResult;
55
+ sanitizedOutput?: string;
56
+ events: SecurityEvent[];
57
+ }
58
+ /**
59
+ * Cognitive Security Middleware
60
+ *
61
+ * Wraps tool execution with automatic security checks.
62
+ */
63
+ export declare class CognitiveSecurityMiddleware {
64
+ private config;
65
+ private policyEngine;
66
+ private flowTracker;
67
+ private leakPrevention;
68
+ private taintTracker;
69
+ private events;
70
+ private initialized;
71
+ constructor(config?: Partial<SecurityConfig>);
72
+ /**
73
+ * Initialize security components (lazy loading)
74
+ */
75
+ initialize(): Promise<void>;
76
+ /**
77
+ * Check tool input before execution
78
+ */
79
+ checkInput(toolName: string, input: Record<string, unknown>): Promise<SecurityMiddlewareResult>;
80
+ /**
81
+ * Check tool output after execution
82
+ */
83
+ checkOutput(toolName: string, input: Record<string, unknown>, output: string): Promise<SecurityMiddlewareResult>;
84
+ /**
85
+ * Wrap tool handler with security checks
86
+ */
87
+ wrapToolHandler<TInput extends Record<string, unknown>, TResult>(toolName: string, handler: (input: TInput, context: unknown) => Promise<{
88
+ content: string;
89
+ is_error?: boolean;
90
+ }>): (input: TInput, context: unknown) => Promise<{
91
+ content: string;
92
+ is_error?: boolean;
93
+ }>;
94
+ /**
95
+ * Get domain for a tool
96
+ */
97
+ private getToolDomain;
98
+ /**
99
+ * Check if tool transmits externally
100
+ */
101
+ private isExternalTool;
102
+ /**
103
+ * Extract content from tool input for classification
104
+ */
105
+ private extractContent;
106
+ /**
107
+ * Log security events
108
+ */
109
+ private logEvent;
110
+ /**
111
+ * Get all security events
112
+ */
113
+ getEvents(): SecurityEvent[];
114
+ /**
115
+ * Clear event history
116
+ */
117
+ clearEvents(): void;
118
+ /**
119
+ * Get security statistics
120
+ */
121
+ getStats(): {
122
+ totalEvents: number;
123
+ blockedCount: number;
124
+ allowedCount: number;
125
+ bySensitivity: Record<string, number>;
126
+ };
127
+ }
128
+ /**
129
+ * Get or create global security middleware
130
+ */
131
+ export declare function getSecurityMiddleware(config?: Partial<SecurityConfig>): CognitiveSecurityMiddleware;
132
+ /**
133
+ * Reset global middleware (for testing)
134
+ */
135
+ export declare function resetSecurityMiddleware(): void;
136
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../packages/src/core/cognitive-security/middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,376 @@
1
+ /**
2
+ * Cognitive Security Middleware
3
+ *
4
+ * Automatically integrates flow control into the agent loop.
5
+ * All tool inputs/outputs are classified, tracked, and validated.
6
+ */
7
+ import { classifyData, createFlowPolicyEngine, createFlowTracker, createLeakPrevention, createTaintTracker, } from "./index.js";
8
+ export const DEFAULT_SECURITY_CONFIG = {
9
+ enabled: true,
10
+ enforcePolicies: true,
11
+ trackTaints: true,
12
+ preventLeaks: true,
13
+ logEvents: true,
14
+ blockOnViolation: true,
15
+ externalDomains: ["external", "network", "api", "web"],
16
+ externalTools: ["Bash", "Write", "Edit", "MultiEdit", "NotebookEdit"],
17
+ sensitiveSourceTools: ["Read", "Bash"],
18
+ };
19
+ /**
20
+ * Cognitive Security Middleware
21
+ *
22
+ * Wraps tool execution with automatic security checks.
23
+ */
24
+ export class CognitiveSecurityMiddleware {
25
+ config;
26
+ policyEngine = null;
27
+ flowTracker = null;
28
+ leakPrevention = null;
29
+ taintTracker = null;
30
+ events = [];
31
+ initialized = false;
32
+ constructor(config = {}) {
33
+ this.config = { ...DEFAULT_SECURITY_CONFIG, ...config };
34
+ }
35
+ /**
36
+ * Initialize security components (lazy loading)
37
+ */
38
+ async initialize() {
39
+ if (this.initialized)
40
+ return;
41
+ try {
42
+ if (this.config.enforcePolicies) {
43
+ this.policyEngine = await createFlowPolicyEngine();
44
+ }
45
+ if (this.config.trackTaints) {
46
+ this.flowTracker = await createFlowTracker();
47
+ this.taintTracker = await createTaintTracker();
48
+ }
49
+ if (this.config.preventLeaks) {
50
+ this.leakPrevention = await createLeakPrevention();
51
+ }
52
+ this.initialized = true;
53
+ }
54
+ catch (error) {
55
+ console.warn("[Security] Failed to initialize:", error);
56
+ // Continue without security if init fails
57
+ }
58
+ }
59
+ /**
60
+ * Check tool input before execution
61
+ */
62
+ async checkInput(toolName, input) {
63
+ await this.initialize();
64
+ const events = [];
65
+ const sourceDomain = this.getToolDomain(toolName);
66
+ const targetDomain = "agent";
67
+ // Extract input content for classification
68
+ const inputContent = this.extractContent(input);
69
+ // Classify input data
70
+ const classifiedInput = await classifyData(inputContent, sourceDomain, [toolName]);
71
+ events.push({
72
+ type: "classify",
73
+ timestamp: Date.now(),
74
+ toolName,
75
+ dataId: classifiedInput.id,
76
+ sensitivity: classifiedInput.sensitivity,
77
+ category: classifiedInput.category,
78
+ sourceDomain,
79
+ targetDomain,
80
+ });
81
+ // Check flow policy
82
+ let flowResult;
83
+ if (this.policyEngine && this.config.enforcePolicies) {
84
+ flowResult = this.policyEngine.evaluate(classifiedInput, sourceDomain, targetDomain);
85
+ events.push({
86
+ type: "flow_check",
87
+ timestamp: Date.now(),
88
+ toolName,
89
+ dataId: classifiedInput.id,
90
+ sourceDomain,
91
+ targetDomain,
92
+ allowed: flowResult.allowed,
93
+ reason: flowResult.reason,
94
+ });
95
+ if (!flowResult.allowed && this.config.blockOnViolation) {
96
+ events.push({
97
+ type: "block",
98
+ timestamp: Date.now(),
99
+ toolName,
100
+ reason: flowResult.reason,
101
+ });
102
+ this.logEvent(events);
103
+ return {
104
+ allowed: false,
105
+ reason: `Security policy blocked: ${flowResult.reason}`,
106
+ classifiedInput,
107
+ flowResult,
108
+ events,
109
+ };
110
+ }
111
+ }
112
+ // Register taint for sensitive data
113
+ if (this.taintTracker && this.config.trackTaints) {
114
+ if (classifiedInput.sensitivity !== "public") {
115
+ const sourceId = this.taintTracker.registerSource(sourceDomain, classifiedInput.sensitivity, [classifiedInput.category]);
116
+ this.taintTracker.taint(sourceId, inputContent, "tool_input", toolName);
117
+ events.push({
118
+ type: "taint",
119
+ timestamp: Date.now(),
120
+ toolName,
121
+ sensitivity: classifiedInput.sensitivity,
122
+ });
123
+ }
124
+ }
125
+ events.push({
126
+ type: "allow",
127
+ timestamp: Date.now(),
128
+ toolName,
129
+ reason: "Input check passed",
130
+ });
131
+ this.logEvent(events);
132
+ return {
133
+ allowed: true,
134
+ reason: "Input check passed",
135
+ classifiedInput,
136
+ flowResult,
137
+ events,
138
+ };
139
+ }
140
+ /**
141
+ * Check tool output after execution
142
+ */
143
+ async checkOutput(toolName, input, output) {
144
+ await this.initialize();
145
+ const events = [];
146
+ const sourceDomain = "agent";
147
+ const targetDomain = this.isExternalTool(toolName)
148
+ ? "external"
149
+ : "internal";
150
+ // Classify output data
151
+ const classifiedOutput = await classifyData(output, sourceDomain, [toolName, "output"]);
152
+ events.push({
153
+ type: "classify",
154
+ timestamp: Date.now(),
155
+ toolName,
156
+ dataId: classifiedOutput.id,
157
+ sensitivity: classifiedOutput.sensitivity,
158
+ category: classifiedOutput.category,
159
+ sourceDomain,
160
+ targetDomain,
161
+ });
162
+ // Check flow policy for output
163
+ let flowResult;
164
+ if (this.policyEngine && this.config.enforcePolicies && this.isExternalTool(toolName)) {
165
+ flowResult = this.policyEngine.evaluate(classifiedOutput, sourceDomain, targetDomain);
166
+ events.push({
167
+ type: "flow_check",
168
+ timestamp: Date.now(),
169
+ toolName,
170
+ dataId: classifiedOutput.id,
171
+ sourceDomain,
172
+ targetDomain,
173
+ allowed: flowResult.allowed,
174
+ reason: flowResult.reason,
175
+ });
176
+ if (!flowResult.allowed && this.config.blockOnViolation) {
177
+ events.push({
178
+ type: "block",
179
+ timestamp: Date.now(),
180
+ toolName,
181
+ reason: flowResult.reason,
182
+ });
183
+ this.logEvent(events);
184
+ return {
185
+ allowed: false,
186
+ reason: `Security policy blocked output: ${flowResult.reason}`,
187
+ classifiedOutput,
188
+ flowResult,
189
+ events,
190
+ };
191
+ }
192
+ }
193
+ // Check for leaks
194
+ let leakResult;
195
+ let sanitizedOutput = output;
196
+ if (this.leakPrevention && this.config.preventLeaks) {
197
+ leakResult = this.leakPrevention.check(output, targetDomain);
198
+ events.push({
199
+ type: "leak_check",
200
+ timestamp: Date.now(),
201
+ toolName,
202
+ allowed: leakResult.action !== "block",
203
+ reason: leakResult.action,
204
+ });
205
+ if (leakResult.action === "block") {
206
+ // Sanitize instead of blocking
207
+ sanitizedOutput = this.leakPrevention.sanitize(output);
208
+ if (this.config.blockOnViolation) {
209
+ events.push({
210
+ type: "block",
211
+ timestamp: Date.now(),
212
+ toolName,
213
+ reason: `Leak detected: ${leakResult.detections.map(d => d.pattern_name).join(", ")}`,
214
+ });
215
+ this.logEvent(events);
216
+ return {
217
+ allowed: false,
218
+ reason: `Potential data leak detected and blocked`,
219
+ classifiedOutput,
220
+ leakResult,
221
+ sanitizedOutput,
222
+ events,
223
+ };
224
+ }
225
+ }
226
+ }
227
+ // Track flow
228
+ if (this.flowTracker && this.config.trackTaints && flowResult) {
229
+ this.flowTracker.record(classifiedOutput, sourceDomain, targetDomain, this.isExternalTool(toolName) ? "outbound" : "internal", flowResult, null, null);
230
+ }
231
+ events.push({
232
+ type: "allow",
233
+ timestamp: Date.now(),
234
+ toolName,
235
+ reason: "Output check passed",
236
+ });
237
+ this.logEvent(events);
238
+ return {
239
+ allowed: true,
240
+ reason: "Output check passed",
241
+ classifiedOutput,
242
+ flowResult,
243
+ leakResult,
244
+ sanitizedOutput,
245
+ events,
246
+ };
247
+ }
248
+ /**
249
+ * Wrap tool handler with security checks
250
+ */
251
+ wrapToolHandler(toolName, handler) {
252
+ return async (input, context) => {
253
+ if (!this.config.enabled) {
254
+ return handler(input, context);
255
+ }
256
+ // Check input
257
+ const inputCheck = await this.checkInput(toolName, input);
258
+ if (!inputCheck.allowed) {
259
+ return {
260
+ content: `[Security] ${inputCheck.reason}`,
261
+ is_error: true,
262
+ };
263
+ }
264
+ // Execute tool
265
+ const result = await handler(input, context);
266
+ // Check output
267
+ const outputCheck = await this.checkOutput(toolName, input, result.content);
268
+ if (!outputCheck.allowed) {
269
+ return {
270
+ content: outputCheck.sanitizedOutput || `[Security] ${outputCheck.reason}`,
271
+ is_error: true,
272
+ };
273
+ }
274
+ // Return sanitized output if needed
275
+ return {
276
+ content: outputCheck.sanitizedOutput || result.content,
277
+ is_error: result.is_error,
278
+ };
279
+ };
280
+ }
281
+ /**
282
+ * Get domain for a tool
283
+ */
284
+ getToolDomain(toolName) {
285
+ if (this.isExternalTool(toolName))
286
+ return "external";
287
+ if (this.config.sensitiveSourceTools.includes(toolName))
288
+ return "filesystem";
289
+ return "internal";
290
+ }
291
+ /**
292
+ * Check if tool transmits externally
293
+ */
294
+ isExternalTool(toolName) {
295
+ return this.config.externalTools.includes(toolName);
296
+ }
297
+ /**
298
+ * Extract content from tool input for classification
299
+ */
300
+ extractContent(input) {
301
+ const parts = [];
302
+ for (const [key, value] of Object.entries(input)) {
303
+ if (typeof value === "string") {
304
+ parts.push(`${key}=${value}`);
305
+ }
306
+ else if (typeof value === "object" && value !== null) {
307
+ parts.push(`${key}=${JSON.stringify(value)}`);
308
+ }
309
+ }
310
+ return parts.join(" ");
311
+ }
312
+ /**
313
+ * Log security events
314
+ */
315
+ logEvent(events) {
316
+ this.events.push(...events);
317
+ if (this.config.logEvents) {
318
+ for (const event of events) {
319
+ if (event.type === "block") {
320
+ console.warn(`[Security] BLOCK: ${event.toolName} - ${event.reason}`);
321
+ }
322
+ else if (event.type === "allow" && event.sensitivity && event.sensitivity !== "public") {
323
+ console.log(`[Security] ALLOW: ${event.toolName} (${event.sensitivity})`);
324
+ }
325
+ }
326
+ }
327
+ }
328
+ /**
329
+ * Get all security events
330
+ */
331
+ getEvents() {
332
+ return [...this.events];
333
+ }
334
+ /**
335
+ * Clear event history
336
+ */
337
+ clearEvents() {
338
+ this.events = [];
339
+ }
340
+ /**
341
+ * Get security statistics
342
+ */
343
+ getStats() {
344
+ const blockedCount = this.events.filter(e => e.type === "block").length;
345
+ const allowedCount = this.events.filter(e => e.type === "allow").length;
346
+ const bySensitivity = {};
347
+ for (const event of this.events) {
348
+ if (event.sensitivity) {
349
+ bySensitivity[event.sensitivity] = (bySensitivity[event.sensitivity] || 0) + 1;
350
+ }
351
+ }
352
+ return {
353
+ totalEvents: this.events.length,
354
+ blockedCount,
355
+ allowedCount,
356
+ bySensitivity,
357
+ };
358
+ }
359
+ }
360
+ // Singleton instance for global use
361
+ let globalMiddleware = null;
362
+ /**
363
+ * Get or create global security middleware
364
+ */
365
+ export function getSecurityMiddleware(config) {
366
+ if (!globalMiddleware) {
367
+ globalMiddleware = new CognitiveSecurityMiddleware(config);
368
+ }
369
+ return globalMiddleware;
370
+ }
371
+ /**
372
+ * Reset global middleware (for testing)
373
+ */
374
+ export function resetSecurityMiddleware() {
375
+ globalMiddleware = null;
376
+ }
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Config Loader - Load Coder configuration files
3
+ *
4
+ * Loads from:
5
+ * 1. ~/.claude.json (MCP servers, project settings)
6
+ * 2. ~/.claude/settings.json (hooks, permissions)
7
+ * 3. ~/.claude/keybindings.json (keybindings)
8
+ * 4. .claude/settings.json (project-level overrides)
9
+ */
10
+ import type { MCPServerConfig, PermissionMode, HookDefinition, HookEvent } from "../types/index.js";
11
+ export interface ClaudeMainConfig {
12
+ numStartups?: number;
13
+ verbose?: boolean;
14
+ preferredNotifChannel?: "terminal_bell" | "notification";
15
+ projects?: Record<string, ProjectConfig>;
16
+ mcpServers?: Record<string, MCPServerConfig>;
17
+ }
18
+ export interface ProjectConfig {
19
+ allowedTools?: string[];
20
+ mcpServers?: Record<string, MCPServerConfig>;
21
+ enabledMcpjsonServers?: string[];
22
+ disabledMcpjsonServers?: string[];
23
+ hasTrustDialogAccepted?: boolean;
24
+ lastSessionId?: string;
25
+ }
26
+ export interface SettingsConfig {
27
+ hooks?: Partial<Record<HookEvent, HookMatcherConfig[]>>;
28
+ permissions?: {
29
+ defaultMode?: PermissionMode;
30
+ allowedTools?: string[];
31
+ disallowedTools?: string[];
32
+ };
33
+ }
34
+ export interface HookMatcherConfig {
35
+ matcher?: string;
36
+ hooks: Array<{
37
+ type: "command" | "prompt";
38
+ command?: string;
39
+ prompt?: string;
40
+ timeout?: number;
41
+ }>;
42
+ }
43
+ export interface KeybindingConfig {
44
+ bindings: Array<{
45
+ key: string;
46
+ command: string;
47
+ when?: string;
48
+ }>;
49
+ }
50
+ export interface LoadedConfig {
51
+ main: ClaudeMainConfig;
52
+ settings: SettingsConfig;
53
+ keybindings: KeybindingConfig;
54
+ projectSettings: SettingsConfig;
55
+ sources: string[];
56
+ }
57
+ export declare const CONFIG_PATHS: {
58
+ main: string;
59
+ settings: string;
60
+ keybindings: string;
61
+ projectSettings: (projectDir: string) => string;
62
+ };
63
+ /**
64
+ * Load main ~/.claude.json config
65
+ */
66
+ export declare function loadMainConfig(): Promise<{
67
+ config: ClaudeMainConfig;
68
+ loaded: boolean;
69
+ }>;
70
+ /**
71
+ * Load settings from ~/.claude/settings.json
72
+ */
73
+ export declare function loadSettings(): Promise<{
74
+ config: SettingsConfig;
75
+ loaded: boolean;
76
+ }>;
77
+ /**
78
+ * Load keybindings from ~/.claude/keybindings.json
79
+ */
80
+ export declare function loadKeybindings(): Promise<{
81
+ config: KeybindingConfig;
82
+ loaded: boolean;
83
+ }>;
84
+ /**
85
+ * Load project-level settings
86
+ */
87
+ export declare function loadProjectSettings(projectDir: string): Promise<{
88
+ config: SettingsConfig;
89
+ loaded: boolean;
90
+ }>;
91
+ /**
92
+ * Get project-specific config from main config
93
+ */
94
+ export declare function getProjectConfig(mainConfig: ClaudeMainConfig, projectDir: string): ProjectConfig | undefined;
95
+ /**
96
+ * Load all configs at once
97
+ */
98
+ export declare function loadAllConfigs(projectDir?: string): Promise<LoadedConfig>;
99
+ /**
100
+ * Get merged settings (global + project overrides)
101
+ */
102
+ export declare function getMergedSettings(global: SettingsConfig, project: SettingsConfig): SettingsConfig;
103
+ /**
104
+ * Get all MCP servers (global + project-specific)
105
+ */
106
+ export declare function getAllMCPServers(mainConfig: ClaudeMainConfig, projectDir: string): Record<string, MCPServerConfig>;
107
+ /**
108
+ * Get hooks for a specific event and tool
109
+ */
110
+ export declare function getHooksForEvent(settings: SettingsConfig, event: HookEvent, toolName?: string): HookMatcherConfig["hooks"];
111
+ /**
112
+ * Convert settings hooks to HookDefinitions for HookManager
113
+ */
114
+ export declare function settingsToHookDefinitions(settings: SettingsConfig): Partial<Record<HookEvent, HookDefinition[]>>;
115
+ /**
116
+ * Get permission mode from settings
117
+ */
118
+ export declare function getPermissionMode(settings: SettingsConfig): PermissionMode;
119
+ /**
120
+ * Get allowed tools from settings
121
+ */
122
+ export declare function getAllowedTools(settings: SettingsConfig): Set<string>;
123
+ /**
124
+ * Get disallowed tools from settings
125
+ */
126
+ export declare function getDisallowedTools(settings: SettingsConfig): Set<string>;
127
+ //# sourceMappingURL=config-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../packages/src/core/config-loader.ts"],"names":[],"mappings":"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"}