@shuyhere/takotako 0.0.1

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 (653) hide show
  1. package/CONTRIBUTING.md +84 -0
  2. package/LICENSE +21 -0
  3. package/README.md +171 -0
  4. package/dist/agents/communication.d.ts +48 -0
  5. package/dist/agents/communication.d.ts.map +1 -0
  6. package/dist/agents/communication.js +123 -0
  7. package/dist/agents/communication.js.map +1 -0
  8. package/dist/agents/config.d.ts +52 -0
  9. package/dist/agents/config.d.ts.map +1 -0
  10. package/dist/agents/config.js +65 -0
  11. package/dist/agents/config.js.map +1 -0
  12. package/dist/agents/model-catalog.d.ts +49 -0
  13. package/dist/agents/model-catalog.d.ts.map +1 -0
  14. package/dist/agents/model-catalog.js +79 -0
  15. package/dist/agents/model-catalog.js.map +1 -0
  16. package/dist/agents/registry.d.ts +71 -0
  17. package/dist/agents/registry.d.ts.map +1 -0
  18. package/dist/agents/registry.js +297 -0
  19. package/dist/agents/registry.js.map +1 -0
  20. package/dist/agents/roles.d.ts +79 -0
  21. package/dist/agents/roles.d.ts.map +1 -0
  22. package/dist/agents/roles.js +174 -0
  23. package/dist/agents/roles.js.map +1 -0
  24. package/dist/agents/subagent.d.ts +124 -0
  25. package/dist/agents/subagent.d.ts.map +1 -0
  26. package/dist/agents/subagent.js +352 -0
  27. package/dist/agents/subagent.js.map +1 -0
  28. package/dist/agents/templates.d.ts +18 -0
  29. package/dist/agents/templates.d.ts.map +1 -0
  30. package/dist/agents/templates.js +341 -0
  31. package/dist/agents/templates.js.map +1 -0
  32. package/dist/agents/thread-binding.d.ts +77 -0
  33. package/dist/agents/thread-binding.d.ts.map +1 -0
  34. package/dist/agents/thread-binding.js +167 -0
  35. package/dist/agents/thread-binding.js.map +1 -0
  36. package/dist/auth/agent-profiles.d.ts +46 -0
  37. package/dist/auth/agent-profiles.d.ts.map +1 -0
  38. package/dist/auth/agent-profiles.js +97 -0
  39. package/dist/auth/agent-profiles.js.map +1 -0
  40. package/dist/auth/allow-from.d.ts +27 -0
  41. package/dist/auth/allow-from.d.ts.map +1 -0
  42. package/dist/auth/allow-from.js +118 -0
  43. package/dist/auth/allow-from.js.map +1 -0
  44. package/dist/auth/oauth.d.ts +66 -0
  45. package/dist/auth/oauth.d.ts.map +1 -0
  46. package/dist/auth/oauth.js +253 -0
  47. package/dist/auth/oauth.js.map +1 -0
  48. package/dist/auth/storage.d.ts +69 -0
  49. package/dist/auth/storage.d.ts.map +1 -0
  50. package/dist/auth/storage.js +157 -0
  51. package/dist/auth/storage.js.map +1 -0
  52. package/dist/cache/file-cache.d.ts +68 -0
  53. package/dist/cache/file-cache.d.ts.map +1 -0
  54. package/dist/cache/file-cache.js +176 -0
  55. package/dist/cache/file-cache.js.map +1 -0
  56. package/dist/cache/manager.d.ts +69 -0
  57. package/dist/cache/manager.d.ts.map +1 -0
  58. package/dist/cache/manager.js +117 -0
  59. package/dist/cache/manager.js.map +1 -0
  60. package/dist/cache/symbol-index.d.ts +75 -0
  61. package/dist/cache/symbol-index.d.ts.map +1 -0
  62. package/dist/cache/symbol-index.js +267 -0
  63. package/dist/cache/symbol-index.js.map +1 -0
  64. package/dist/cache/tool-cache.d.ts +75 -0
  65. package/dist/cache/tool-cache.d.ts.map +1 -0
  66. package/dist/cache/tool-cache.js +173 -0
  67. package/dist/cache/tool-cache.js.map +1 -0
  68. package/dist/channels/channel.d.ts +156 -0
  69. package/dist/channels/channel.d.ts.map +1 -0
  70. package/dist/channels/channel.js +25 -0
  71. package/dist/channels/channel.js.map +1 -0
  72. package/dist/channels/cli.d.ts +35 -0
  73. package/dist/channels/cli.d.ts.map +1 -0
  74. package/dist/channels/cli.js +94 -0
  75. package/dist/channels/cli.js.map +1 -0
  76. package/dist/channels/delivery-queue.d.ts +31 -0
  77. package/dist/channels/delivery-queue.d.ts.map +1 -0
  78. package/dist/channels/delivery-queue.js +127 -0
  79. package/dist/channels/delivery-queue.js.map +1 -0
  80. package/dist/channels/discord.d.ts +124 -0
  81. package/dist/channels/discord.d.ts.map +1 -0
  82. package/dist/channels/discord.js +664 -0
  83. package/dist/channels/discord.js.map +1 -0
  84. package/dist/channels/retry.d.ts +31 -0
  85. package/dist/channels/retry.d.ts.map +1 -0
  86. package/dist/channels/retry.js +94 -0
  87. package/dist/channels/retry.js.map +1 -0
  88. package/dist/channels/telegram.d.ts +69 -0
  89. package/dist/channels/telegram.d.ts.map +1 -0
  90. package/dist/channels/telegram.js +499 -0
  91. package/dist/channels/telegram.js.map +1 -0
  92. package/dist/channels/tui.d.ts +42 -0
  93. package/dist/channels/tui.d.ts.map +1 -0
  94. package/dist/channels/tui.js +126 -0
  95. package/dist/channels/tui.js.map +1 -0
  96. package/dist/cli/acp.d.ts +10 -0
  97. package/dist/cli/acp.d.ts.map +1 -0
  98. package/dist/cli/acp.js +69 -0
  99. package/dist/cli/acp.js.map +1 -0
  100. package/dist/cli/audit.d.ts +11 -0
  101. package/dist/cli/audit.d.ts.map +1 -0
  102. package/dist/cli/audit.js +55 -0
  103. package/dist/cli/audit.js.map +1 -0
  104. package/dist/cli/cache.d.ts +10 -0
  105. package/dist/cli/cache.d.ts.map +1 -0
  106. package/dist/cli/cache.js +77 -0
  107. package/dist/cli/cache.js.map +1 -0
  108. package/dist/cli/config.d.ts +5 -0
  109. package/dist/cli/config.d.ts.map +1 -0
  110. package/dist/cli/config.js +168 -0
  111. package/dist/cli/config.js.map +1 -0
  112. package/dist/cli/cron.d.ts +5 -0
  113. package/dist/cli/cron.d.ts.map +1 -0
  114. package/dist/cli/cron.js +192 -0
  115. package/dist/cli/cron.js.map +1 -0
  116. package/dist/cli/extensions.d.ts +5 -0
  117. package/dist/cli/extensions.d.ts.map +1 -0
  118. package/dist/cli/extensions.js +53 -0
  119. package/dist/cli/extensions.js.map +1 -0
  120. package/dist/cli/logs.d.ts +5 -0
  121. package/dist/cli/logs.d.ts.map +1 -0
  122. package/dist/cli/logs.js +49 -0
  123. package/dist/cli/logs.js.map +1 -0
  124. package/dist/cli/memory.d.ts +5 -0
  125. package/dist/cli/memory.d.ts.map +1 -0
  126. package/dist/cli/memory.js +78 -0
  127. package/dist/cli/memory.js.map +1 -0
  128. package/dist/cli/message.d.ts +5 -0
  129. package/dist/cli/message.d.ts.map +1 -0
  130. package/dist/cli/message.js +69 -0
  131. package/dist/cli/message.js.map +1 -0
  132. package/dist/cli/service.d.ts +14 -0
  133. package/dist/cli/service.d.ts.map +1 -0
  134. package/dist/cli/service.js +181 -0
  135. package/dist/cli/service.js.map +1 -0
  136. package/dist/cli/symphony.d.ts +5 -0
  137. package/dist/cli/symphony.d.ts.map +1 -0
  138. package/dist/cli/symphony.js +114 -0
  139. package/dist/cli/symphony.js.map +1 -0
  140. package/dist/cli/update.d.ts +5 -0
  141. package/dist/cli/update.d.ts.map +1 -0
  142. package/dist/cli/update.js +48 -0
  143. package/dist/cli/update.js.map +1 -0
  144. package/dist/commands/channel-setup.d.ts +31 -0
  145. package/dist/commands/channel-setup.d.ts.map +1 -0
  146. package/dist/commands/channel-setup.js +138 -0
  147. package/dist/commands/channel-setup.js.map +1 -0
  148. package/dist/commands/dispatch.d.ts +48 -0
  149. package/dist/commands/dispatch.d.ts.map +1 -0
  150. package/dist/commands/dispatch.js +68 -0
  151. package/dist/commands/dispatch.js.map +1 -0
  152. package/dist/commands/model-picker.d.ts +16 -0
  153. package/dist/commands/model-picker.d.ts.map +1 -0
  154. package/dist/commands/model-picker.js +120 -0
  155. package/dist/commands/model-picker.js.map +1 -0
  156. package/dist/commands/parser.d.ts +32 -0
  157. package/dist/commands/parser.d.ts.map +1 -0
  158. package/dist/commands/parser.js +39 -0
  159. package/dist/commands/parser.js.map +1 -0
  160. package/dist/commands/registry.d.ts +76 -0
  161. package/dist/commands/registry.d.ts.map +1 -0
  162. package/dist/commands/registry.js +351 -0
  163. package/dist/commands/registry.js.map +1 -0
  164. package/dist/commands/skill-commands.d.ts +35 -0
  165. package/dist/commands/skill-commands.d.ts.map +1 -0
  166. package/dist/commands/skill-commands.js +61 -0
  167. package/dist/commands/skill-commands.js.map +1 -0
  168. package/dist/config/resolve.d.ts +25 -0
  169. package/dist/config/resolve.d.ts.map +1 -0
  170. package/dist/config/resolve.js +289 -0
  171. package/dist/config/resolve.js.map +1 -0
  172. package/dist/config/schema.d.ts +520 -0
  173. package/dist/config/schema.d.ts.map +1 -0
  174. package/dist/config/schema.js +123 -0
  175. package/dist/config/schema.js.map +1 -0
  176. package/dist/core/agent-loop.d.ts +137 -0
  177. package/dist/core/agent-loop.d.ts.map +1 -0
  178. package/dist/core/agent-loop.js +700 -0
  179. package/dist/core/agent-loop.js.map +1 -0
  180. package/dist/core/audit.d.ts +87 -0
  181. package/dist/core/audit.d.ts.map +1 -0
  182. package/dist/core/audit.js +224 -0
  183. package/dist/core/audit.js.map +1 -0
  184. package/dist/core/bootstrap.d.ts +23 -0
  185. package/dist/core/bootstrap.d.ts.map +1 -0
  186. package/dist/core/bootstrap.js +162 -0
  187. package/dist/core/bootstrap.js.map +1 -0
  188. package/dist/core/context.d.ts +44 -0
  189. package/dist/core/context.d.ts.map +1 -0
  190. package/dist/core/context.js +65 -0
  191. package/dist/core/context.js.map +1 -0
  192. package/dist/core/cron.d.ts +111 -0
  193. package/dist/core/cron.d.ts.map +1 -0
  194. package/dist/core/cron.js +284 -0
  195. package/dist/core/cron.js.map +1 -0
  196. package/dist/core/exec-approvals.d.ts +50 -0
  197. package/dist/core/exec-approvals.d.ts.map +1 -0
  198. package/dist/core/exec-approvals.js +187 -0
  199. package/dist/core/exec-approvals.js.map +1 -0
  200. package/dist/core/heartbeat.d.ts +71 -0
  201. package/dist/core/heartbeat.d.ts.map +1 -0
  202. package/dist/core/heartbeat.js +214 -0
  203. package/dist/core/heartbeat.js.map +1 -0
  204. package/dist/core/message-queue.d.ts +60 -0
  205. package/dist/core/message-queue.d.ts.map +1 -0
  206. package/dist/core/message-queue.js +182 -0
  207. package/dist/core/message-queue.js.map +1 -0
  208. package/dist/core/network-policy.d.ts +39 -0
  209. package/dist/core/network-policy.d.ts.map +1 -0
  210. package/dist/core/network-policy.js +121 -0
  211. package/dist/core/network-policy.js.map +1 -0
  212. package/dist/core/progress.d.ts +48 -0
  213. package/dist/core/progress.d.ts.map +1 -0
  214. package/dist/core/progress.js +81 -0
  215. package/dist/core/progress.js.map +1 -0
  216. package/dist/core/prompt.d.ts +105 -0
  217. package/dist/core/prompt.d.ts.map +1 -0
  218. package/dist/core/prompt.js +411 -0
  219. package/dist/core/prompt.js.map +1 -0
  220. package/dist/core/pruning.d.ts +40 -0
  221. package/dist/core/pruning.d.ts.map +1 -0
  222. package/dist/core/pruning.js +165 -0
  223. package/dist/core/pruning.js.map +1 -0
  224. package/dist/core/rate-limiter.d.ts +64 -0
  225. package/dist/core/rate-limiter.d.ts.map +1 -0
  226. package/dist/core/rate-limiter.js +142 -0
  227. package/dist/core/rate-limiter.js.map +1 -0
  228. package/dist/core/reactions.d.ts +31 -0
  229. package/dist/core/reactions.d.ts.map +1 -0
  230. package/dist/core/reactions.js +67 -0
  231. package/dist/core/reactions.js.map +1 -0
  232. package/dist/core/retry-queue.d.ts +56 -0
  233. package/dist/core/retry-queue.d.ts.map +1 -0
  234. package/dist/core/retry-queue.js +106 -0
  235. package/dist/core/retry-queue.js.map +1 -0
  236. package/dist/core/sanitizer.d.ts +38 -0
  237. package/dist/core/sanitizer.d.ts.map +1 -0
  238. package/dist/core/sanitizer.js +181 -0
  239. package/dist/core/sanitizer.js.map +1 -0
  240. package/dist/core/secret-scanner.d.ts +39 -0
  241. package/dist/core/secret-scanner.d.ts.map +1 -0
  242. package/dist/core/secret-scanner.js +96 -0
  243. package/dist/core/secret-scanner.js.map +1 -0
  244. package/dist/core/secrets.d.ts +38 -0
  245. package/dist/core/secrets.d.ts.map +1 -0
  246. package/dist/core/secrets.js +137 -0
  247. package/dist/core/secrets.js.map +1 -0
  248. package/dist/core/security.d.ts +58 -0
  249. package/dist/core/security.d.ts.map +1 -0
  250. package/dist/core/security.js +120 -0
  251. package/dist/core/security.js.map +1 -0
  252. package/dist/core/self-awareness.d.ts +19 -0
  253. package/dist/core/self-awareness.d.ts.map +1 -0
  254. package/dist/core/self-awareness.js +124 -0
  255. package/dist/core/self-awareness.js.map +1 -0
  256. package/dist/core/session-init.d.ts +34 -0
  257. package/dist/core/session-init.d.ts.map +1 -0
  258. package/dist/core/session-init.js +68 -0
  259. package/dist/core/session-init.js.map +1 -0
  260. package/dist/core/streaming.d.ts +82 -0
  261. package/dist/core/streaming.d.ts.map +1 -0
  262. package/dist/core/streaming.js +264 -0
  263. package/dist/core/streaming.js.map +1 -0
  264. package/dist/core/symphony/orchestrator.d.ts +61 -0
  265. package/dist/core/symphony/orchestrator.d.ts.map +1 -0
  266. package/dist/core/symphony/orchestrator.js +476 -0
  267. package/dist/core/symphony/orchestrator.js.map +1 -0
  268. package/dist/core/symphony/status.d.ts +11 -0
  269. package/dist/core/symphony/status.d.ts.map +1 -0
  270. package/dist/core/symphony/status.js +133 -0
  271. package/dist/core/symphony/status.js.map +1 -0
  272. package/dist/core/symphony/types.d.ts +84 -0
  273. package/dist/core/symphony/types.d.ts.map +1 -0
  274. package/dist/core/symphony/types.js +5 -0
  275. package/dist/core/symphony/types.js.map +1 -0
  276. package/dist/core/symphony/workflow.d.ts +18 -0
  277. package/dist/core/symphony/workflow.d.ts.map +1 -0
  278. package/dist/core/symphony/workflow.js +149 -0
  279. package/dist/core/symphony/workflow.js.map +1 -0
  280. package/dist/core/symphony/workspace.d.ts +24 -0
  281. package/dist/core/symphony/workspace.d.ts.map +1 -0
  282. package/dist/core/symphony/workspace.js +94 -0
  283. package/dist/core/symphony/workspace.js.map +1 -0
  284. package/dist/core/thinking.d.ts +27 -0
  285. package/dist/core/thinking.d.ts.map +1 -0
  286. package/dist/core/thinking.js +83 -0
  287. package/dist/core/thinking.js.map +1 -0
  288. package/dist/core/thread-bindings.d.ts +47 -0
  289. package/dist/core/thread-bindings.d.ts.map +1 -0
  290. package/dist/core/thread-bindings.js +94 -0
  291. package/dist/core/thread-bindings.js.map +1 -0
  292. package/dist/core/timezone.d.ts +28 -0
  293. package/dist/core/timezone.d.ts.map +1 -0
  294. package/dist/core/timezone.js +72 -0
  295. package/dist/core/timezone.js.map +1 -0
  296. package/dist/core/tool-loop-detector.d.ts +41 -0
  297. package/dist/core/tool-loop-detector.d.ts.map +1 -0
  298. package/dist/core/tool-loop-detector.js +83 -0
  299. package/dist/core/tool-loop-detector.js.map +1 -0
  300. package/dist/core/tool-validator.d.ts +44 -0
  301. package/dist/core/tool-validator.d.ts.map +1 -0
  302. package/dist/core/tool-validator.js +175 -0
  303. package/dist/core/tool-validator.js.map +1 -0
  304. package/dist/core/typing.d.ts +25 -0
  305. package/dist/core/typing.d.ts.map +1 -0
  306. package/dist/core/typing.js +48 -0
  307. package/dist/core/typing.js.map +1 -0
  308. package/dist/core/usage-tracker.d.ts +66 -0
  309. package/dist/core/usage-tracker.d.ts.map +1 -0
  310. package/dist/core/usage-tracker.js +163 -0
  311. package/dist/core/usage-tracker.js.map +1 -0
  312. package/dist/daemon/commands.d.ts +16 -0
  313. package/dist/daemon/commands.d.ts.map +1 -0
  314. package/dist/daemon/commands.js +445 -0
  315. package/dist/daemon/commands.js.map +1 -0
  316. package/dist/daemon/pid.d.ts +30 -0
  317. package/dist/daemon/pid.d.ts.map +1 -0
  318. package/dist/daemon/pid.js +62 -0
  319. package/dist/daemon/pid.js.map +1 -0
  320. package/dist/doctor/checks/browser.d.ts +9 -0
  321. package/dist/doctor/checks/browser.d.ts.map +1 -0
  322. package/dist/doctor/checks/browser.js +54 -0
  323. package/dist/doctor/checks/browser.js.map +1 -0
  324. package/dist/doctor/checks/channels.d.ts +9 -0
  325. package/dist/doctor/checks/channels.d.ts.map +1 -0
  326. package/dist/doctor/checks/channels.js +90 -0
  327. package/dist/doctor/checks/channels.js.map +1 -0
  328. package/dist/doctor/checks/config.d.ts +10 -0
  329. package/dist/doctor/checks/config.d.ts.map +1 -0
  330. package/dist/doctor/checks/config.js +89 -0
  331. package/dist/doctor/checks/config.js.map +1 -0
  332. package/dist/doctor/checks/memory.d.ts +10 -0
  333. package/dist/doctor/checks/memory.d.ts.map +1 -0
  334. package/dist/doctor/checks/memory.js +82 -0
  335. package/dist/doctor/checks/memory.js.map +1 -0
  336. package/dist/doctor/checks/permissions.d.ts +9 -0
  337. package/dist/doctor/checks/permissions.d.ts.map +1 -0
  338. package/dist/doctor/checks/permissions.js +53 -0
  339. package/dist/doctor/checks/permissions.js.map +1 -0
  340. package/dist/doctor/checks/providers.d.ts +10 -0
  341. package/dist/doctor/checks/providers.d.ts.map +1 -0
  342. package/dist/doctor/checks/providers.js +93 -0
  343. package/dist/doctor/checks/providers.js.map +1 -0
  344. package/dist/doctor/checks/sessions.d.ts +10 -0
  345. package/dist/doctor/checks/sessions.d.ts.map +1 -0
  346. package/dist/doctor/checks/sessions.js +86 -0
  347. package/dist/doctor/checks/sessions.js.map +1 -0
  348. package/dist/doctor/doctor.d.ts +35 -0
  349. package/dist/doctor/doctor.d.ts.map +1 -0
  350. package/dist/doctor/doctor.js +51 -0
  351. package/dist/doctor/doctor.js.map +1 -0
  352. package/dist/doctor/repairs.d.ts +14 -0
  353. package/dist/doctor/repairs.d.ts.map +1 -0
  354. package/dist/doctor/repairs.js +34 -0
  355. package/dist/doctor/repairs.js.map +1 -0
  356. package/dist/gateway/compaction.d.ts +63 -0
  357. package/dist/gateway/compaction.d.ts.map +1 -0
  358. package/dist/gateway/compaction.js +235 -0
  359. package/dist/gateway/compaction.js.map +1 -0
  360. package/dist/gateway/gateway.d.ts +94 -0
  361. package/dist/gateway/gateway.d.ts.map +1 -0
  362. package/dist/gateway/gateway.js +466 -0
  363. package/dist/gateway/gateway.js.map +1 -0
  364. package/dist/gateway/lock.d.ts +24 -0
  365. package/dist/gateway/lock.d.ts.map +1 -0
  366. package/dist/gateway/lock.js +88 -0
  367. package/dist/gateway/lock.js.map +1 -0
  368. package/dist/gateway/protocol.d.ts +117 -0
  369. package/dist/gateway/protocol.d.ts.map +1 -0
  370. package/dist/gateway/protocol.js +5 -0
  371. package/dist/gateway/protocol.js.map +1 -0
  372. package/dist/gateway/session.d.ts +123 -0
  373. package/dist/gateway/session.d.ts.map +1 -0
  374. package/dist/gateway/session.js +573 -0
  375. package/dist/gateway/session.js.map +1 -0
  376. package/dist/hooks/hooks.d.ts +18 -0
  377. package/dist/hooks/hooks.d.ts.map +1 -0
  378. package/dist/hooks/hooks.js +45 -0
  379. package/dist/hooks/hooks.js.map +1 -0
  380. package/dist/hooks/types.d.ts +112 -0
  381. package/dist/hooks/types.d.ts.map +1 -0
  382. package/dist/hooks/types.js +23 -0
  383. package/dist/hooks/types.js.map +1 -0
  384. package/dist/index.d.ts +27 -0
  385. package/dist/index.d.ts.map +1 -0
  386. package/dist/index.js +2900 -0
  387. package/dist/index.js.map +1 -0
  388. package/dist/media/storage.d.ts +25 -0
  389. package/dist/media/storage.d.ts.map +1 -0
  390. package/dist/media/storage.js +97 -0
  391. package/dist/media/storage.js.map +1 -0
  392. package/dist/memory/embeddings.d.ts +46 -0
  393. package/dist/memory/embeddings.d.ts.map +1 -0
  394. package/dist/memory/embeddings.js +118 -0
  395. package/dist/memory/embeddings.js.map +1 -0
  396. package/dist/memory/hybrid.d.ts +35 -0
  397. package/dist/memory/hybrid.d.ts.map +1 -0
  398. package/dist/memory/hybrid.js +156 -0
  399. package/dist/memory/hybrid.js.map +1 -0
  400. package/dist/memory/markdown.d.ts +48 -0
  401. package/dist/memory/markdown.d.ts.map +1 -0
  402. package/dist/memory/markdown.js +228 -0
  403. package/dist/memory/markdown.js.map +1 -0
  404. package/dist/memory/store.d.ts +88 -0
  405. package/dist/memory/store.d.ts.map +1 -0
  406. package/dist/memory/store.js +21 -0
  407. package/dist/memory/store.js.map +1 -0
  408. package/dist/memory/vector.d.ts +24 -0
  409. package/dist/memory/vector.d.ts.map +1 -0
  410. package/dist/memory/vector.js +63 -0
  411. package/dist/memory/vector.js.map +1 -0
  412. package/dist/mods/mod.d.ts +100 -0
  413. package/dist/mods/mod.d.ts.map +1 -0
  414. package/dist/mods/mod.js +242 -0
  415. package/dist/mods/mod.js.map +1 -0
  416. package/dist/onboard/channels.d.ts +12 -0
  417. package/dist/onboard/channels.d.ts.map +1 -0
  418. package/dist/onboard/channels.js +283 -0
  419. package/dist/onboard/channels.js.map +1 -0
  420. package/dist/onboard/models.d.ts +13 -0
  421. package/dist/onboard/models.d.ts.map +1 -0
  422. package/dist/onboard/models.js +491 -0
  423. package/dist/onboard/models.js.map +1 -0
  424. package/dist/onboard/onboard.d.ts +12 -0
  425. package/dist/onboard/onboard.d.ts.map +1 -0
  426. package/dist/onboard/onboard.js +1137 -0
  427. package/dist/onboard/onboard.js.map +1 -0
  428. package/dist/providers/anthropic.d.ts +83 -0
  429. package/dist/providers/anthropic.d.ts.map +1 -0
  430. package/dist/providers/anthropic.js +583 -0
  431. package/dist/providers/anthropic.js.map +1 -0
  432. package/dist/providers/failover.d.ts +46 -0
  433. package/dist/providers/failover.d.ts.map +1 -0
  434. package/dist/providers/failover.js +149 -0
  435. package/dist/providers/failover.js.map +1 -0
  436. package/dist/providers/litellm.d.ts +38 -0
  437. package/dist/providers/litellm.d.ts.map +1 -0
  438. package/dist/providers/litellm.js +349 -0
  439. package/dist/providers/litellm.js.map +1 -0
  440. package/dist/providers/openai.d.ts +28 -0
  441. package/dist/providers/openai.d.ts.map +1 -0
  442. package/dist/providers/openai.js +321 -0
  443. package/dist/providers/openai.js.map +1 -0
  444. package/dist/providers/prompt-cache.d.ts +50 -0
  445. package/dist/providers/prompt-cache.d.ts.map +1 -0
  446. package/dist/providers/prompt-cache.js +96 -0
  447. package/dist/providers/prompt-cache.js.map +1 -0
  448. package/dist/providers/provider.d.ts +173 -0
  449. package/dist/providers/provider.d.ts.map +1 -0
  450. package/dist/providers/provider.js +22 -0
  451. package/dist/providers/provider.js.map +1 -0
  452. package/dist/sandbox/config.d.ts +42 -0
  453. package/dist/sandbox/config.d.ts.map +1 -0
  454. package/dist/sandbox/config.js +20 -0
  455. package/dist/sandbox/config.js.map +1 -0
  456. package/dist/sandbox/container.d.ts +71 -0
  457. package/dist/sandbox/container.d.ts.map +1 -0
  458. package/dist/sandbox/container.js +193 -0
  459. package/dist/sandbox/container.js.map +1 -0
  460. package/dist/sandbox/sandbox.d.ts +82 -0
  461. package/dist/sandbox/sandbox.d.ts.map +1 -0
  462. package/dist/sandbox/sandbox.js +176 -0
  463. package/dist/sandbox/sandbox.js.map +1 -0
  464. package/dist/skills/channel-loader.d.ts +18 -0
  465. package/dist/skills/channel-loader.d.ts.map +1 -0
  466. package/dist/skills/channel-loader.js +35 -0
  467. package/dist/skills/channel-loader.js.map +1 -0
  468. package/dist/skills/extension-loader.d.ts +15 -0
  469. package/dist/skills/extension-loader.d.ts.map +1 -0
  470. package/dist/skills/extension-loader.js +63 -0
  471. package/dist/skills/extension-loader.js.map +1 -0
  472. package/dist/skills/extension-registry.d.ts +32 -0
  473. package/dist/skills/extension-registry.d.ts.map +1 -0
  474. package/dist/skills/extension-registry.js +57 -0
  475. package/dist/skills/extension-registry.js.map +1 -0
  476. package/dist/skills/extensions.d.ts +91 -0
  477. package/dist/skills/extensions.d.ts.map +1 -0
  478. package/dist/skills/extensions.js +14 -0
  479. package/dist/skills/extensions.js.map +1 -0
  480. package/dist/skills/loader.d.ts +64 -0
  481. package/dist/skills/loader.d.ts.map +1 -0
  482. package/dist/skills/loader.js +382 -0
  483. package/dist/skills/loader.js.map +1 -0
  484. package/dist/skills/marketplace.d.ts +56 -0
  485. package/dist/skills/marketplace.d.ts.map +1 -0
  486. package/dist/skills/marketplace.js +183 -0
  487. package/dist/skills/marketplace.js.map +1 -0
  488. package/dist/skills/types.d.ts +94 -0
  489. package/dist/skills/types.d.ts.map +1 -0
  490. package/dist/skills/types.js +9 -0
  491. package/dist/skills/types.js.map +1 -0
  492. package/dist/tools/acp-sessions.d.ts +89 -0
  493. package/dist/tools/acp-sessions.d.ts.map +1 -0
  494. package/dist/tools/acp-sessions.js +391 -0
  495. package/dist/tools/acp-sessions.js.map +1 -0
  496. package/dist/tools/acp.d.ts +18 -0
  497. package/dist/tools/acp.d.ts.map +1 -0
  498. package/dist/tools/acp.js +102 -0
  499. package/dist/tools/acp.js.map +1 -0
  500. package/dist/tools/agent-tools.d.ts +24 -0
  501. package/dist/tools/agent-tools.d.ts.map +1 -0
  502. package/dist/tools/agent-tools.js +611 -0
  503. package/dist/tools/agent-tools.js.map +1 -0
  504. package/dist/tools/browser.d.ts +26 -0
  505. package/dist/tools/browser.d.ts.map +1 -0
  506. package/dist/tools/browser.js +242 -0
  507. package/dist/tools/browser.js.map +1 -0
  508. package/dist/tools/comms.d.ts +8 -0
  509. package/dist/tools/comms.d.ts.map +1 -0
  510. package/dist/tools/comms.js +39 -0
  511. package/dist/tools/comms.js.map +1 -0
  512. package/dist/tools/cron-tools.d.ts +9 -0
  513. package/dist/tools/cron-tools.d.ts.map +1 -0
  514. package/dist/tools/cron-tools.js +117 -0
  515. package/dist/tools/cron-tools.js.map +1 -0
  516. package/dist/tools/exec-safety.d.ts +71 -0
  517. package/dist/tools/exec-safety.d.ts.map +1 -0
  518. package/dist/tools/exec-safety.js +141 -0
  519. package/dist/tools/exec-safety.js.map +1 -0
  520. package/dist/tools/exec.d.ts +24 -0
  521. package/dist/tools/exec.d.ts.map +1 -0
  522. package/dist/tools/exec.js +191 -0
  523. package/dist/tools/exec.js.map +1 -0
  524. package/dist/tools/fs.d.ts +15 -0
  525. package/dist/tools/fs.d.ts.map +1 -0
  526. package/dist/tools/fs.js +249 -0
  527. package/dist/tools/fs.js.map +1 -0
  528. package/dist/tools/git.d.ts +9 -0
  529. package/dist/tools/git.d.ts.map +1 -0
  530. package/dist/tools/git.js +56 -0
  531. package/dist/tools/git.js.map +1 -0
  532. package/dist/tools/image.d.ts +15 -0
  533. package/dist/tools/image.d.ts.map +1 -0
  534. package/dist/tools/image.js +106 -0
  535. package/dist/tools/image.js.map +1 -0
  536. package/dist/tools/introspect.d.ts +22 -0
  537. package/dist/tools/introspect.d.ts.map +1 -0
  538. package/dist/tools/introspect.js +223 -0
  539. package/dist/tools/introspect.js.map +1 -0
  540. package/dist/tools/memory.d.ts +11 -0
  541. package/dist/tools/memory.d.ts.map +1 -0
  542. package/dist/tools/memory.js +101 -0
  543. package/dist/tools/memory.js.map +1 -0
  544. package/dist/tools/message.d.ts +24 -0
  545. package/dist/tools/message.d.ts.map +1 -0
  546. package/dist/tools/message.js +205 -0
  547. package/dist/tools/message.js.map +1 -0
  548. package/dist/tools/model.d.ts +14 -0
  549. package/dist/tools/model.d.ts.map +1 -0
  550. package/dist/tools/model.js +62 -0
  551. package/dist/tools/model.js.map +1 -0
  552. package/dist/tools/policy.d.ts +101 -0
  553. package/dist/tools/policy.d.ts.map +1 -0
  554. package/dist/tools/policy.js +168 -0
  555. package/dist/tools/policy.js.map +1 -0
  556. package/dist/tools/registry.d.ts +52 -0
  557. package/dist/tools/registry.d.ts.map +1 -0
  558. package/dist/tools/registry.js +154 -0
  559. package/dist/tools/registry.js.map +1 -0
  560. package/dist/tools/search.d.ts +10 -0
  561. package/dist/tools/search.d.ts.map +1 -0
  562. package/dist/tools/search.js +78 -0
  563. package/dist/tools/search.js.map +1 -0
  564. package/dist/tools/session.d.ts +13 -0
  565. package/dist/tools/session.d.ts.map +1 -0
  566. package/dist/tools/session.js +142 -0
  567. package/dist/tools/session.js.map +1 -0
  568. package/dist/tools/spawn.d.ts +10 -0
  569. package/dist/tools/spawn.d.ts.map +1 -0
  570. package/dist/tools/spawn.js +72 -0
  571. package/dist/tools/spawn.js.map +1 -0
  572. package/dist/tools/symphony.d.ts +12 -0
  573. package/dist/tools/symphony.d.ts.map +1 -0
  574. package/dist/tools/symphony.js +142 -0
  575. package/dist/tools/symphony.js.map +1 -0
  576. package/dist/tools/system-tools.d.ts +11 -0
  577. package/dist/tools/system-tools.d.ts.map +1 -0
  578. package/dist/tools/system-tools.js +39 -0
  579. package/dist/tools/system-tools.js.map +1 -0
  580. package/dist/tools/tool.d.ts +119 -0
  581. package/dist/tools/tool.d.ts.map +1 -0
  582. package/dist/tools/tool.js +29 -0
  583. package/dist/tools/tool.js.map +1 -0
  584. package/dist/tools/web.d.ts +10 -0
  585. package/dist/tools/web.d.ts.map +1 -0
  586. package/dist/tools/web.js +105 -0
  587. package/dist/tools/web.js.map +1 -0
  588. package/dist/tui/App.d.ts +43 -0
  589. package/dist/tui/App.d.ts.map +1 -0
  590. package/dist/tui/App.js +265 -0
  591. package/dist/tui/App.js.map +1 -0
  592. package/dist/tui/bridge.d.ts +40 -0
  593. package/dist/tui/bridge.d.ts.map +1 -0
  594. package/dist/tui/bridge.js +29 -0
  595. package/dist/tui/bridge.js.map +1 -0
  596. package/dist/tui/components/Header.d.ts +14 -0
  597. package/dist/tui/components/Header.d.ts.map +1 -0
  598. package/dist/tui/components/Header.js +7 -0
  599. package/dist/tui/components/Header.js.map +1 -0
  600. package/dist/tui/components/InputBar.d.ts +10 -0
  601. package/dist/tui/components/InputBar.d.ts.map +1 -0
  602. package/dist/tui/components/InputBar.js +121 -0
  603. package/dist/tui/components/InputBar.js.map +1 -0
  604. package/dist/tui/components/MessageList.d.ts +18 -0
  605. package/dist/tui/components/MessageList.d.ts.map +1 -0
  606. package/dist/tui/components/MessageList.js +34 -0
  607. package/dist/tui/components/MessageList.js.map +1 -0
  608. package/dist/tui/components/Spinner.d.ts +9 -0
  609. package/dist/tui/components/Spinner.d.ts.map +1 -0
  610. package/dist/tui/components/Spinner.js +18 -0
  611. package/dist/tui/components/Spinner.js.map +1 -0
  612. package/dist/tui/components/StatusBar.d.ts +16 -0
  613. package/dist/tui/components/StatusBar.d.ts.map +1 -0
  614. package/dist/tui/components/StatusBar.js +15 -0
  615. package/dist/tui/components/StatusBar.js.map +1 -0
  616. package/dist/tui/components/ToolCallBox.d.ts +12 -0
  617. package/dist/tui/components/ToolCallBox.d.ts.map +1 -0
  618. package/dist/tui/components/ToolCallBox.js +12 -0
  619. package/dist/tui/components/ToolCallBox.js.map +1 -0
  620. package/dist/tui/theme.d.ts +58 -0
  621. package/dist/tui/theme.d.ts.map +1 -0
  622. package/dist/tui/theme.js +80 -0
  623. package/dist/tui/theme.js.map +1 -0
  624. package/dist/utils/logger.d.ts +16 -0
  625. package/dist/utils/logger.d.ts.map +1 -0
  626. package/dist/utils/logger.js +70 -0
  627. package/dist/utils/logger.js.map +1 -0
  628. package/docs/DEVELOPMENT.md +74 -0
  629. package/docs/INSTALL.md +161 -0
  630. package/docs/USAGE.md +94 -0
  631. package/docs/architecture.md +128 -0
  632. package/docs/channels.md +140 -0
  633. package/docs/configuration.md +209 -0
  634. package/docs/io-system.md +430 -0
  635. package/docs/providers.md +99 -0
  636. package/docs/skill-channels.md +113 -0
  637. package/docs/skills.md +246 -0
  638. package/package.json +89 -0
  639. package/skills/acp-router/SKILL.md +41 -0
  640. package/skills/acp-router/tools/acp-router.mjs +239 -0
  641. package/skills/find-skills/SKILL.md +133 -0
  642. package/skills/security-audit/SKILL.md +181 -0
  643. package/skills/security-audit/audit.sh +67 -0
  644. package/skills/skill-creator/SKILL.md +479 -0
  645. package/skills/skill-security-audit/.clawhub/origin.json +7 -0
  646. package/skills/skill-security-audit/SKILL.md +196 -0
  647. package/skills/skill-security-audit/_meta.json +6 -0
  648. package/skills/skill-security-audit/references/prompt-injection-patterns.md +276 -0
  649. package/skills/skill-security-audit/references/vulnerability-patterns.md +348 -0
  650. package/skills/symphony/README.md +53 -0
  651. package/skills/symphony/SKILL.md +75 -0
  652. package/skills/symphony/tools/symphony-orchestrator.ts +8 -0
  653. package/tako.example.json +33 -0
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Message queue — collect, debounce, and cap inbound messages.
3
+ *
4
+ * When messages arrive faster than the model can process them:
5
+ * - collect: batch messages within a time window
6
+ * - debounce: wait for a pause in typing before processing
7
+ * - cap: limit max queued messages to prevent context overflow
8
+ * - drop: configurable strategy when cap is hit (oldest, summarize)
9
+ */
10
+ const DEFAULT_QUEUE_CONFIG = {
11
+ mode: 'collect',
12
+ debounceMs: 2000,
13
+ cap: 25,
14
+ dropStrategy: 'oldest',
15
+ maxWaitMs: 10_000,
16
+ };
17
+ export class MessageQueue {
18
+ config;
19
+ queues;
20
+ timers;
21
+ maxTimers;
22
+ processor;
23
+ constructor(config, processor) {
24
+ this.config = { ...DEFAULT_QUEUE_CONFIG, ...config };
25
+ this.queues = new Map();
26
+ this.timers = new Map();
27
+ this.maxTimers = new Map();
28
+ this.processor = processor;
29
+ }
30
+ /** Enqueue a message. Returns true if message was queued (not processed immediately). */
31
+ enqueue(sessionId, message) {
32
+ if (this.config.mode === 'off') {
33
+ // Process immediately — don't queue
34
+ this.processor(sessionId, [message]).catch((err) => {
35
+ console.error(`[message-queue] Processor error for session ${sessionId}:`, err instanceof Error ? err.message : err);
36
+ });
37
+ return false;
38
+ }
39
+ let queue = this.queues.get(sessionId);
40
+ if (!queue) {
41
+ queue = [];
42
+ this.queues.set(sessionId, queue);
43
+ }
44
+ queue.push(message);
45
+ // Enforce cap
46
+ if (queue.length > this.config.cap) {
47
+ if (this.config.dropStrategy === 'oldest') {
48
+ queue.shift();
49
+ }
50
+ // 'summarize' strategy keeps all messages — mergeMessages handles it
51
+ }
52
+ // Force-process when cap is hit exactly
53
+ if (queue.length >= this.config.cap) {
54
+ this.processQueue(sessionId).catch((err) => {
55
+ console.error(`[message-queue] Cap-triggered flush error for session ${sessionId}:`, err instanceof Error ? err.message : err);
56
+ });
57
+ return true;
58
+ }
59
+ if (this.config.mode === 'debounce') {
60
+ this.startDebounceTimer(sessionId);
61
+ }
62
+ else {
63
+ // 'collect' mode: start debounce timer on first message, maxWait governs force-flush
64
+ this.startDebounceTimer(sessionId);
65
+ }
66
+ // Start max wait timer if not already running
67
+ this.startMaxWaitTimer(sessionId);
68
+ return true;
69
+ }
70
+ /** Force-flush a session's queue immediately. */
71
+ async flush(sessionId) {
72
+ await this.processQueue(sessionId);
73
+ }
74
+ /** Get current queue depth for a session. */
75
+ depth(sessionId) {
76
+ return this.queues.get(sessionId)?.length ?? 0;
77
+ }
78
+ /** Clear all queues and timers. */
79
+ clear() {
80
+ for (const timer of this.timers.values())
81
+ clearTimeout(timer);
82
+ for (const timer of this.maxTimers.values())
83
+ clearTimeout(timer);
84
+ this.timers.clear();
85
+ this.maxTimers.clear();
86
+ this.queues.clear();
87
+ }
88
+ /** Get queue status for all sessions. */
89
+ status() {
90
+ const now = Date.now();
91
+ const result = [];
92
+ for (const [sessionId, queue] of this.queues) {
93
+ if (queue.length === 0)
94
+ continue;
95
+ result.push({
96
+ sessionId,
97
+ depth: queue.length,
98
+ oldestMs: now - queue[0].timestamp,
99
+ });
100
+ }
101
+ return result;
102
+ }
103
+ /** Update the queue mode at runtime. */
104
+ setMode(mode) {
105
+ this.config.mode = mode;
106
+ }
107
+ /** Get current config. */
108
+ getConfig() {
109
+ return { ...this.config };
110
+ }
111
+ startDebounceTimer(sessionId) {
112
+ // Clear existing debounce timer
113
+ const existing = this.timers.get(sessionId);
114
+ if (existing)
115
+ clearTimeout(existing);
116
+ const timer = setTimeout(() => {
117
+ this.timers.delete(sessionId);
118
+ this.processQueue(sessionId).catch((err) => {
119
+ console.error(`[message-queue] Debounce-triggered flush error for session ${sessionId}:`, err instanceof Error ? err.message : err);
120
+ });
121
+ }, this.config.debounceMs);
122
+ this.timers.set(sessionId, timer);
123
+ }
124
+ startMaxWaitTimer(sessionId) {
125
+ // Only start if not already running
126
+ if (this.maxTimers.has(sessionId))
127
+ return;
128
+ const timer = setTimeout(() => {
129
+ this.maxTimers.delete(sessionId);
130
+ this.processQueue(sessionId).catch((err) => {
131
+ console.error(`[message-queue] MaxWait-triggered flush error for session ${sessionId}:`, err instanceof Error ? err.message : err);
132
+ });
133
+ }, this.config.maxWaitMs);
134
+ this.maxTimers.set(sessionId, timer);
135
+ }
136
+ async processQueue(sessionId) {
137
+ // Clear timers
138
+ const debounceTimer = this.timers.get(sessionId);
139
+ if (debounceTimer) {
140
+ clearTimeout(debounceTimer);
141
+ this.timers.delete(sessionId);
142
+ }
143
+ const maxTimer = this.maxTimers.get(sessionId);
144
+ if (maxTimer) {
145
+ clearTimeout(maxTimer);
146
+ this.maxTimers.delete(sessionId);
147
+ }
148
+ // Grab and clear the queue atomically
149
+ const queue = this.queues.get(sessionId);
150
+ if (!queue || queue.length === 0)
151
+ return;
152
+ const messages = [...queue];
153
+ queue.length = 0;
154
+ await this.processor(sessionId, messages);
155
+ }
156
+ /** Merge queued messages into a single string for the model. */
157
+ static mergeMessages(messages) {
158
+ if (messages.length === 0)
159
+ return '';
160
+ if (messages.length === 1)
161
+ return messages[0].content;
162
+ // Detect group chat (multiple authors)
163
+ const authors = new Set(messages.map((m) => m.authorId));
164
+ const isGroup = authors.size > 1;
165
+ // Calculate time span
166
+ const oldest = messages[0].timestamp;
167
+ const newest = messages[messages.length - 1].timestamp;
168
+ const spanSeconds = Math.round((newest - oldest) / 1000);
169
+ const lines = [];
170
+ for (const msg of messages) {
171
+ if (isGroup) {
172
+ lines.push(`[${msg.authorId}]: ${msg.content}`);
173
+ }
174
+ else {
175
+ lines.push(msg.content);
176
+ }
177
+ }
178
+ const header = `[queued: ${messages.length} messages over ${spanSeconds}s]`;
179
+ return `${header}\n${lines.join('\n')}`;
180
+ }
181
+ }
182
+ //# sourceMappingURL=message-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-queue.js","sourceRoot":"","sources":["../../src/core/message-queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Network Policy — controls which URLs/domains tools can access.
3
+ *
4
+ * Modes:
5
+ * - 'blocklist': block listed domains (default — blocks private IPs + localhost)
6
+ * - 'allowlist': only allow listed domains
7
+ */
8
+ export interface NetworkPolicyConfig {
9
+ /** Policy mode. */
10
+ mode: 'allowlist' | 'blocklist';
11
+ /** Allowed domains (only used in 'allowlist' mode). */
12
+ allowlist?: string[];
13
+ /** Blocked domains (only used in 'blocklist' mode). */
14
+ blocklist?: string[];
15
+ }
16
+ export interface NetworkCheckResult {
17
+ /** Whether the request is allowed. */
18
+ allowed: boolean;
19
+ /** Reason for blocking. */
20
+ reason?: string;
21
+ }
22
+ export declare class NetworkPolicy {
23
+ private config;
24
+ private blocklist;
25
+ private allowlist;
26
+ constructor(config: NetworkPolicyConfig);
27
+ /**
28
+ * Check if a URL is allowed by the network policy.
29
+ */
30
+ check(urlStr: string): NetworkCheckResult;
31
+ /**
32
+ * Check a hostname directly (without full URL parsing).
33
+ */
34
+ checkHost(hostname: string): NetworkCheckResult;
35
+ private checkAllowlist;
36
+ private checkBlocklist;
37
+ private matchesList;
38
+ }
39
+ //# sourceMappingURL=network-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-policy.d.ts","sourceRoot":"","sources":["../../src/core/network-policy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,WAAW,mBAAmB;IAClC,mBAAmB;IACnB,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC;IAChC,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAoCD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,SAAS,CAAc;gBAEnB,MAAM,EAAE,mBAAmB;IASvC;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB;IAgBzC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB;IAU/C,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,cAAc;IActB,OAAO,CAAC,WAAW;CAcpB"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Network Policy — controls which URLs/domains tools can access.
3
+ *
4
+ * Modes:
5
+ * - 'blocklist': block listed domains (default — blocks private IPs + localhost)
6
+ * - 'allowlist': only allow listed domains
7
+ */
8
+ // ─── Default blocklist ──────────────────────────────────────────────
9
+ const DEFAULT_BLOCKLIST = [
10
+ 'localhost',
11
+ '127.0.0.1',
12
+ '0.0.0.0',
13
+ '::1',
14
+ 'host.docker.internal',
15
+ 'metadata.google.internal',
16
+ '169.254.169.254',
17
+ ];
18
+ // ─── Private IP check ───────────────────────────────────────────────
19
+ function isPrivateIp(hostname) {
20
+ // IPv4 private ranges
21
+ if (/^127\.\d+\.\d+\.\d+$/.test(hostname))
22
+ return true;
23
+ if (/^10\.\d+\.\d+\.\d+$/.test(hostname))
24
+ return true;
25
+ if (/^172\.(1[6-9]|2\d|3[01])\.\d+\.\d+$/.test(hostname))
26
+ return true;
27
+ if (/^192\.168\.\d+\.\d+$/.test(hostname))
28
+ return true;
29
+ if (/^169\.254\.\d+\.\d+$/.test(hostname))
30
+ return true;
31
+ if (hostname === '0.0.0.0')
32
+ return true;
33
+ // IPv6 private ranges
34
+ if (hostname === '::1')
35
+ return true;
36
+ if (/^fc00:/i.test(hostname))
37
+ return true;
38
+ if (/^fd[0-9a-f]{2}:/i.test(hostname))
39
+ return true;
40
+ if (/^fe80:/i.test(hostname))
41
+ return true;
42
+ return false;
43
+ }
44
+ // ─── Network Policy ─────────────────────────────────────────────────
45
+ export class NetworkPolicy {
46
+ config;
47
+ blocklist;
48
+ allowlist;
49
+ constructor(config) {
50
+ this.config = config;
51
+ this.blocklist = new Set([
52
+ ...DEFAULT_BLOCKLIST,
53
+ ...(config.blocklist ?? []),
54
+ ]);
55
+ this.allowlist = new Set(config.allowlist ?? []);
56
+ }
57
+ /**
58
+ * Check if a URL is allowed by the network policy.
59
+ */
60
+ check(urlStr) {
61
+ let hostname;
62
+ try {
63
+ const url = new URL(urlStr);
64
+ hostname = url.hostname;
65
+ }
66
+ catch {
67
+ return { allowed: false, reason: `Invalid URL: ${urlStr}` };
68
+ }
69
+ if (this.config.mode === 'allowlist') {
70
+ return this.checkAllowlist(hostname);
71
+ }
72
+ else {
73
+ return this.checkBlocklist(hostname);
74
+ }
75
+ }
76
+ /**
77
+ * Check a hostname directly (without full URL parsing).
78
+ */
79
+ checkHost(hostname) {
80
+ if (this.config.mode === 'allowlist') {
81
+ return this.checkAllowlist(hostname);
82
+ }
83
+ else {
84
+ return this.checkBlocklist(hostname);
85
+ }
86
+ }
87
+ // ─── Private ────────────────────────────────────────────────────
88
+ checkAllowlist(hostname) {
89
+ // In allowlist mode, everything is blocked unless explicitly allowed
90
+ if (this.matchesList(hostname, this.allowlist)) {
91
+ return { allowed: true };
92
+ }
93
+ return { allowed: false, reason: `Domain not in allowlist: ${hostname}` };
94
+ }
95
+ checkBlocklist(hostname) {
96
+ // Always block private IPs regardless of blocklist
97
+ if (isPrivateIp(hostname)) {
98
+ return { allowed: false, reason: `Private/internal IP blocked: ${hostname}` };
99
+ }
100
+ // Check explicit blocklist
101
+ if (this.matchesList(hostname, this.blocklist)) {
102
+ return { allowed: false, reason: `Domain blocked: ${hostname}` };
103
+ }
104
+ return { allowed: true };
105
+ }
106
+ matchesList(hostname, list) {
107
+ // Exact match
108
+ if (list.has(hostname))
109
+ return true;
110
+ // Wildcard match (e.g. *.internal)
111
+ for (const entry of list) {
112
+ if (entry.startsWith('*.')) {
113
+ const suffix = entry.slice(1); // .internal
114
+ if (hostname.endsWith(suffix))
115
+ return true;
116
+ }
117
+ }
118
+ return false;
119
+ }
120
+ }
121
+ //# sourceMappingURL=network-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-policy.js","sourceRoot":"","sources":["../../src/core/network-policy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,uEAAuE;AAEvE,MAAM,iBAAiB,GAAG;IACxB,WAAW;IACX,WAAW;IACX,SAAS;IACT,KAAK;IACL,sBAAsB;IACtB,0BAA0B;IAC1B,iBAAiB;CAClB,CAAC;AAEF,uEAAuE;AAEvE,SAAS,WAAW,CAAC,QAAgB;IACnC,sBAAsB;IACtB,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,qCAAqC,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACtE,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAExC,sBAAsB;IACtB,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAE1C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uEAAuE;AAEvE,MAAM,OAAO,aAAa;IAChB,MAAM,CAAsB;IAC5B,SAAS,CAAc;IACvB,SAAS,CAAc;IAE/B,YAAY,MAA2B;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC;YACvB,GAAG,iBAAiB;YACpB,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAc;QAClB,IAAI,QAAgB,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5B,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,MAAM,EAAE,EAAE,CAAC;QAC9D,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAgB;QACxB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,mEAAmE;IAE3D,cAAc,CAAC,QAAgB;QACrC,qEAAqE;QACrE,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3B,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,QAAQ,EAAE,EAAE,CAAC;IAC5E,CAAC;IAEO,cAAc,CAAC,QAAgB;QACrC,mDAAmD;QACnD,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gCAAgC,QAAQ,EAAE,EAAE,CAAC;QAChF,CAAC;QAED,2BAA2B;QAC3B,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,QAAQ,EAAE,EAAE,CAAC;QACnE,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEO,WAAW,CAAC,QAAgB,EAAE,IAAiB;QACrD,cAAc;QACd,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAEpC,mCAAmC;QACnC,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY;gBAC3C,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAAE,OAAO,IAAI,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Progress tracker — structured JSON log of what each session accomplished.
3
+ *
4
+ * Inspired by Anthropic's claude-progress.txt but using JSON (models are
5
+ * less likely to corrupt JSON vs Markdown).
6
+ *
7
+ * The progress file lives in the agent workspace at `tako-progress.json`.
8
+ * Each session appends an entry at the end. The agent reads it at session
9
+ * start to understand what happened before.
10
+ */
11
+ export interface ProgressEntry {
12
+ /** Session ID that created this entry */
13
+ sessionId: string;
14
+ /** ISO timestamp */
15
+ timestamp: string;
16
+ /** What features/tasks were worked on */
17
+ featuresWorkedOn: string[];
18
+ /** Files that were changed */
19
+ filesChanged: string[];
20
+ /** Key decisions made */
21
+ decisionsMade: string[];
22
+ /** Issues encountered or unresolved */
23
+ blockers: string[];
24
+ /** Recommended next steps */
25
+ nextSteps: string[];
26
+ /** Git commit hashes created during this session */
27
+ commits: string[];
28
+ /** Compaction count at time of writing (tracks how many compactions happened) */
29
+ compactionCount: number;
30
+ }
31
+ export interface ProgressFile {
32
+ version: 1;
33
+ projectName: string;
34
+ entries: ProgressEntry[];
35
+ }
36
+ export declare class ProgressTracker {
37
+ private filePath;
38
+ constructor(workspaceDir: string);
39
+ /** Read the progress file. Returns null if it doesn't exist. */
40
+ read(): Promise<ProgressFile | null>;
41
+ /** Append a new progress entry. Creates the file if it doesn't exist. */
42
+ append(entry: ProgressEntry, projectName?: string): Promise<void>;
43
+ /** Get the most recent N entries. */
44
+ getRecent(count?: number): Promise<ProgressEntry[]>;
45
+ /** Get a summary string suitable for injecting into context. */
46
+ getSummaryForContext(maxEntries?: number): Promise<string | null>;
47
+ }
48
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/core/progress.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,8BAA8B;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,yBAAyB;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,oDAAoD;IACpD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,iFAAiF;IACjF,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAS;gBAEb,YAAY,EAAE,MAAM;IAIhC,gEAAgE;IAC1D,IAAI,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAU1C,yEAAyE;IACnE,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAevE,qCAAqC;IAC/B,SAAS,CAAC,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAM5D,gEAAgE;IAC1D,oBAAoB,CAAC,UAAU,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CA6B3E"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Progress tracker — structured JSON log of what each session accomplished.
3
+ *
4
+ * Inspired by Anthropic's claude-progress.txt but using JSON (models are
5
+ * less likely to corrupt JSON vs Markdown).
6
+ *
7
+ * The progress file lives in the agent workspace at `tako-progress.json`.
8
+ * Each session appends an entry at the end. The agent reads it at session
9
+ * start to understand what happened before.
10
+ */
11
+ import { readFile, writeFile } from 'node:fs/promises';
12
+ import { existsSync } from 'node:fs';
13
+ import { join } from 'node:path';
14
+ export class ProgressTracker {
15
+ filePath;
16
+ constructor(workspaceDir) {
17
+ this.filePath = join(workspaceDir, 'tako-progress.json');
18
+ }
19
+ /** Read the progress file. Returns null if it doesn't exist. */
20
+ async read() {
21
+ if (!existsSync(this.filePath))
22
+ return null;
23
+ try {
24
+ const raw = await readFile(this.filePath, 'utf-8');
25
+ return JSON.parse(raw);
26
+ }
27
+ catch {
28
+ return null;
29
+ }
30
+ }
31
+ /** Append a new progress entry. Creates the file if it doesn't exist. */
32
+ async append(entry, projectName) {
33
+ let file = await this.read();
34
+ if (!file) {
35
+ file = { version: 1, projectName: projectName ?? 'tako', entries: [] };
36
+ }
37
+ // Keep last 20 entries to prevent unbounded growth
38
+ if (file.entries.length >= 20) {
39
+ file.entries = file.entries.slice(-19);
40
+ }
41
+ file.entries.push(entry);
42
+ await writeFile(this.filePath, JSON.stringify(file, null, 2), 'utf-8');
43
+ }
44
+ /** Get the most recent N entries. */
45
+ async getRecent(count = 5) {
46
+ const file = await this.read();
47
+ if (!file)
48
+ return [];
49
+ return file.entries.slice(-count);
50
+ }
51
+ /** Get a summary string suitable for injecting into context. */
52
+ async getSummaryForContext(maxEntries = 3) {
53
+ const entries = await this.getRecent(maxEntries);
54
+ if (entries.length === 0)
55
+ return null;
56
+ const lines = ['## Recent Progress'];
57
+ for (const entry of entries) {
58
+ lines.push(`\n### Session ${entry.sessionId.slice(0, 8)} (${entry.timestamp})`);
59
+ if (entry.featuresWorkedOn.length > 0) {
60
+ lines.push(`**Worked on:** ${entry.featuresWorkedOn.join(', ')}`);
61
+ }
62
+ if (entry.filesChanged.length > 0) {
63
+ lines.push(`**Files changed:** ${entry.filesChanged.join(', ')}`);
64
+ }
65
+ if (entry.decisionsMade.length > 0) {
66
+ lines.push(`**Decisions:** ${entry.decisionsMade.join('; ')}`);
67
+ }
68
+ if (entry.blockers.length > 0) {
69
+ lines.push(`**Blockers:** ${entry.blockers.join('; ')}`);
70
+ }
71
+ if (entry.nextSteps.length > 0) {
72
+ lines.push(`**Next steps:** ${entry.nextSteps.join('; ')}`);
73
+ }
74
+ if (entry.commits.length > 0) {
75
+ lines.push(`**Commits:** ${entry.commits.join(', ')}`);
76
+ }
77
+ }
78
+ return lines.join('\n');
79
+ }
80
+ }
81
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/core/progress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Prompt builder — assembles the system prompt from workspace files.
3
+ *
4
+ * Follows the reference runtime/reference architecture prompt assembly pattern:
5
+ * 1. Core identity (SOUL.md, IDENTITY.md, AGENTS.md)
6
+ * 2. Tool/user context (TOOLS.md, USER.md)
7
+ * 3. Bootstrap (HEARTBEAT.md, BOOTSTRAP.md)
8
+ * 4. Curated memory (MEMORY.md — always injected)
9
+ * 5. Tool inventory (registered tools with schemas)
10
+ * 6. Skill listings (XML format)
11
+ * 7. Runtime context (host, OS, Node, model, shell, time)
12
+ * 8. Repo structure (if in a git repo)
13
+ *
14
+ * Daily logs (memory/YYYY-MM-DD.md) are NOT pre-injected.
15
+ * They are accessed on-demand via memory_search/memory_get tools.
16
+ * Sub-agents only get AGENTS.md + TOOLS.md to keep context small.
17
+ */
18
+ import type { Tool } from '../tools/tool.js';
19
+ import type { LoadedSkill } from '../skills/types.js';
20
+ export interface PromptMode {
21
+ /** 'full' for main session, 'minimal' for sub-agents, 'none' to skip */
22
+ mode: 'full' | 'minimal' | 'none';
23
+ }
24
+ export interface PromptParts {
25
+ /** Workspace bootstrap file contents, keyed by filename */
26
+ files: Map<string, string>;
27
+ /** Curated memory content */
28
+ memory?: string;
29
+ /** Skill instruction blocks */
30
+ skills?: string[];
31
+ /** Tool inventory section */
32
+ toolInventory?: string;
33
+ /** Skill listings in XML format */
34
+ skillListings?: string;
35
+ /** Runtime context section */
36
+ runtime?: string;
37
+ /** Repo structure map */
38
+ repoMap?: string;
39
+ /** Safety guidelines section */
40
+ safety?: string;
41
+ /** Sandbox context info */
42
+ sandboxInfo?: string;
43
+ }
44
+ export declare class PromptBuilder {
45
+ private workspacePath;
46
+ private skillInstructions;
47
+ private registeredTools;
48
+ private loadedSkills;
49
+ private modelId;
50
+ private workingDir;
51
+ private sandboxMode;
52
+ private sandboxWorkspaceAccess;
53
+ private timezoneContext;
54
+ constructor(workspacePath: string);
55
+ /** Switch workspace (for agent switching). */
56
+ setWorkspace(workspacePath: string): void;
57
+ /** Get current workspace path. */
58
+ getWorkspace(): string;
59
+ /** Set timezone context string for injection into the runtime section. */
60
+ setTimezoneContext(context: string): void;
61
+ /** Set sandbox context for the safety section. */
62
+ setSandboxInfo(mode: string, workspaceAccess: string): void;
63
+ /** Register skill instructions to include in the prompt. */
64
+ addSkillInstructions(instructions: string): void;
65
+ /** Set the tool inventory for the tools section. */
66
+ setTools(tools: Tool[]): void;
67
+ /** Set loaded skills for the skills section. */
68
+ setSkills(skills: LoadedSkill[]): void;
69
+ /** Set the model ID for runtime context. */
70
+ setModel(modelId: string): void;
71
+ /** Set the working directory for runtime context. */
72
+ setWorkingDir(dir: string): void;
73
+ /**
74
+ * Load a workspace file. Returns content with truncation marker if too long.
75
+ * Returns a "[MISSING]" marker if the file doesn't exist.
76
+ */
77
+ private loadFile;
78
+ /** Build the full system prompt from workspace files. */
79
+ build(mode?: PromptMode): Promise<string>;
80
+ /**
81
+ * Build the tool inventory section.
82
+ * Lists all registered tools with name, description, and parameter schema.
83
+ */
84
+ private buildToolInventory;
85
+ /**
86
+ * Build skill listings in XML format (like reference runtime/reference architecture).
87
+ */
88
+ private buildSkillListings;
89
+ /** Build the safety guidelines section. */
90
+ private buildSafetySection;
91
+ /** Build runtime context section. */
92
+ private buildRuntimeContext;
93
+ /**
94
+ * Assemble parts into the final system prompt string.
95
+ * Non-empty sections are separated by markdown dividers.
96
+ */
97
+ private assemble;
98
+ /** Core behavioral rules — ensures the agent always responds properly. */
99
+ private buildBehavioralRules;
100
+ /** @deprecated — old verbose rules, replaced by compact version above */
101
+ private _oldBehavioralRules;
102
+ /** Push a file section if it exists in parts. */
103
+ private pushFileSection;
104
+ }
105
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/core/prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAsBtD,MAAM,WAAW,UAAU;IACzB,wEAAwE;IACxE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAgB;IACzC,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,sBAAsB,CAAgB;IAC9C,OAAO,CAAC,eAAe,CAAuB;gBAElC,aAAa,EAAE,MAAM;IAIjC,8CAA8C;IAC9C,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAIzC,kCAAkC;IAClC,YAAY,IAAI,MAAM;IAItB,0EAA0E;IAC1E,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIzC,kDAAkD;IAClD,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI;IAK3D,4DAA4D;IAC5D,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAIhD,oDAAoD;IACpD,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAI7B,gDAAgD;IAChD,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI;IAItC,4CAA4C;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI/B,qDAAqD;IACrD,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIhC;;;OAGG;YACW,QAAQ;IAmBtB,yDAAyD;IACnD,KAAK,CAAC,IAAI,GAAE,UAA6B,GAAG,OAAO,CAAC,MAAM,CAAC;IAsDjE;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAgC1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA8B1B,2CAA2C;IAC3C,OAAO,CAAC,kBAAkB;IA2C1B,qCAAqC;IACrC,OAAO,CAAC,mBAAmB;IAkC3B;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAmEhB,0EAA0E;IAC1E,OAAO,CAAC,oBAAoB;IAW5B,yEAAyE;IACzE,OAAO,CAAC,mBAAmB;IAuD3B,iDAAiD;IACjD,OAAO,CAAC,eAAe;CAIxB"}