@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,181 @@
1
+ /**
2
+ * CLI: tako service — manage systemd user service for Tako.
3
+ *
4
+ * Subcommands:
5
+ * install Create and enable the systemd user service
6
+ * uninstall Stop, disable, and remove the service
7
+ * start Start the service
8
+ * stop Stop the service
9
+ * restart Restart the service
10
+ * status Show service status
11
+ * logs Show service logs (journalctl)
12
+ */
13
+ import { join } from 'node:path';
14
+ import { homedir } from 'node:os';
15
+ import { existsSync, mkdirSync, writeFileSync, unlinkSync } from 'node:fs';
16
+ import { execSync, spawn } from 'node:child_process';
17
+ const SERVICE_NAME = 'tako.service';
18
+ function getServiceDir() {
19
+ return join(homedir(), '.config', 'systemd', 'user');
20
+ }
21
+ function getServicePath() {
22
+ return join(getServiceDir(), SERVICE_NAME);
23
+ }
24
+ function findBunBinary() {
25
+ try {
26
+ return execSync('which bun', { encoding: 'utf-8' }).trim() || null;
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ function findTakoBinary() {
33
+ // Try the tako command in PATH first
34
+ try {
35
+ const which = execSync('which tako', { encoding: 'utf-8' }).trim();
36
+ if (which)
37
+ return which;
38
+ }
39
+ catch {
40
+ // not found in PATH
41
+ }
42
+ // Prefer bun for direct TS execution (no build step needed)
43
+ const bun = findBunBinary();
44
+ const entryPoint = process.argv[1];
45
+ if (bun && entryPoint) {
46
+ return `${bun} ${entryPoint}`;
47
+ }
48
+ // Fallback: use the current runtime + entry point
49
+ if (entryPoint) {
50
+ return `${process.argv[0]} ${entryPoint}`;
51
+ }
52
+ return '/usr/local/bin/tako';
53
+ }
54
+ function generateUnit() {
55
+ const takoBin = findTakoBinary();
56
+ return `[Unit]
57
+ Description=Tako Agent OS
58
+ After=network.target
59
+
60
+ [Service]
61
+ Type=simple
62
+ ExecStart=${takoBin} start
63
+ Restart=on-failure
64
+ RestartSec=5
65
+ Environment=NODE_ENV=production
66
+ Environment=TAKO_KEEP_ALIVE=1
67
+ WorkingDirectory=${homedir()}
68
+
69
+ [Install]
70
+ WantedBy=default.target
71
+ `;
72
+ }
73
+ function systemctl(args) {
74
+ execSync(`systemctl --user ${args}`, { stdio: 'inherit' });
75
+ }
76
+ async function install() {
77
+ const dir = getServiceDir();
78
+ const path = getServicePath();
79
+ if (!existsSync(dir)) {
80
+ mkdirSync(dir, { recursive: true });
81
+ }
82
+ const unit = generateUnit();
83
+ writeFileSync(path, unit, 'utf-8');
84
+ console.log(`[tako] Service unit written to ${path}`);
85
+ systemctl('daemon-reload');
86
+ systemctl(`enable ${SERVICE_NAME}`);
87
+ console.log('[tako] Service installed and enabled');
88
+ console.log('[tako] Run `tako service start` to start it');
89
+ }
90
+ async function uninstall() {
91
+ const path = getServicePath();
92
+ try {
93
+ systemctl(`stop ${SERVICE_NAME}`);
94
+ }
95
+ catch {
96
+ // may not be running
97
+ }
98
+ try {
99
+ systemctl(`disable ${SERVICE_NAME}`);
100
+ }
101
+ catch {
102
+ // may not be enabled
103
+ }
104
+ if (existsSync(path)) {
105
+ unlinkSync(path);
106
+ console.log(`[tako] Removed ${path}`);
107
+ }
108
+ systemctl('daemon-reload');
109
+ console.log('[tako] Service uninstalled');
110
+ }
111
+ async function start() {
112
+ systemctl(`start ${SERVICE_NAME}`);
113
+ console.log('[tako] Service started');
114
+ }
115
+ async function stop() {
116
+ systemctl(`stop ${SERVICE_NAME}`);
117
+ console.log('[tako] Service stopped');
118
+ }
119
+ async function restart() {
120
+ systemctl(`restart ${SERVICE_NAME}`);
121
+ console.log('[tako] Service restarted');
122
+ }
123
+ async function status() {
124
+ try {
125
+ systemctl(`status ${SERVICE_NAME}`);
126
+ }
127
+ catch {
128
+ // systemctl status exits non-zero when service is stopped
129
+ }
130
+ }
131
+ async function logs() {
132
+ const child = spawn('journalctl', ['--user', '-u', SERVICE_NAME, '-f', '--no-pager', '-n', '100'], { stdio: 'inherit' });
133
+ await new Promise((resolve) => {
134
+ child.on('close', () => resolve());
135
+ // Handle Ctrl+C gracefully
136
+ process.on('SIGINT', () => {
137
+ child.kill('SIGINT');
138
+ resolve();
139
+ });
140
+ });
141
+ }
142
+ export async function runService(args) {
143
+ const sub = args[0];
144
+ switch (sub) {
145
+ case 'install':
146
+ await install();
147
+ break;
148
+ case 'uninstall':
149
+ await uninstall();
150
+ break;
151
+ case 'start':
152
+ await start();
153
+ break;
154
+ case 'stop':
155
+ await stop();
156
+ break;
157
+ case 'restart':
158
+ await restart();
159
+ break;
160
+ case 'status':
161
+ await status();
162
+ break;
163
+ case 'logs':
164
+ case 'log':
165
+ await logs();
166
+ break;
167
+ default:
168
+ console.log(`Usage: tako service <command>
169
+
170
+ Commands:
171
+ install Install systemd user service
172
+ uninstall Remove systemd user service
173
+ start Start the service
174
+ stop Stop the service
175
+ restart Restart the service
176
+ status Show service status
177
+ logs Show service logs`);
178
+ break;
179
+ }
180
+ }
181
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/cli/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * CLI: tako symphony — project orchestration commands.
3
+ */
4
+ export declare function runSymphony(args: string[]): Promise<void>;
5
+ //# sourceMappingURL=symphony.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symphony.d.ts","sourceRoot":"","sources":["../../src/cli/symphony.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0BH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmG/D"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * CLI: tako symphony — project orchestration commands.
3
+ */
4
+ import { SymphonyOrchestrator } from '../core/symphony/orchestrator.js';
5
+ import { formatStatus, formatHistory } from '../core/symphony/status.js';
6
+ function parseIntervalMs(interval) {
7
+ const match = interval.match(/^(\d+)(ms|s|m|h)?$/);
8
+ if (!match)
9
+ return 30000;
10
+ const [, num, unit] = match;
11
+ const n = parseInt(num, 10);
12
+ switch (unit) {
13
+ case 'ms': return n;
14
+ case 's': return n * 1000;
15
+ case 'm': return n * 60000;
16
+ case 'h': return n * 3600000;
17
+ default: return n * 1000;
18
+ }
19
+ }
20
+ function parseFlag(args, flag) {
21
+ const idx = args.indexOf(flag);
22
+ if (idx === -1 || idx + 1 >= args.length)
23
+ return undefined;
24
+ return args[idx + 1];
25
+ }
26
+ export async function runSymphony(args) {
27
+ const subcommand = args[0] ?? 'status';
28
+ switch (subcommand) {
29
+ case 'start': {
30
+ const repo = parseFlag(args, '--repo');
31
+ if (!repo) {
32
+ console.error('Usage: tako symphony start --repo owner/repo [--labels bug,feature] [--interval 30s] [--max-agents 5]');
33
+ process.exit(1);
34
+ }
35
+ const existing = SymphonyOrchestrator.getInstance();
36
+ if (existing?.isRunning()) {
37
+ console.log('Symphony is already running. Use `tako symphony stop` first.');
38
+ return;
39
+ }
40
+ const labels = parseFlag(args, '--labels');
41
+ const interval = parseFlag(args, '--interval');
42
+ const maxAgents = parseFlag(args, '--max-agents');
43
+ const config = {
44
+ repo,
45
+ labels: labels ? labels.split(',').map((l) => l.trim()) : undefined,
46
+ pollIntervalMs: interval ? parseIntervalMs(interval) : 30000,
47
+ maxConcurrentAgents: maxAgents ? parseInt(maxAgents, 10) : 5,
48
+ };
49
+ const orchestrator = SymphonyOrchestrator.getInstance(config);
50
+ if (!orchestrator) {
51
+ console.error('Failed to create orchestrator.');
52
+ process.exit(1);
53
+ }
54
+ orchestrator.start();
55
+ console.log(`🎵 Symphony started — monitoring ${repo}`);
56
+ console.log(` Labels: ${labels ?? 'all'}`);
57
+ console.log(` Interval: ${interval ?? '30s'}`);
58
+ console.log(` Max agents: ${maxAgents ?? '5'}`);
59
+ // Keep process alive
60
+ process.on('SIGINT', () => {
61
+ SymphonyOrchestrator.destroyInstance();
62
+ process.exit(0);
63
+ });
64
+ process.on('SIGTERM', () => {
65
+ SymphonyOrchestrator.destroyInstance();
66
+ process.exit(0);
67
+ });
68
+ break;
69
+ }
70
+ case 'stop': {
71
+ const orchestrator = SymphonyOrchestrator.getInstance();
72
+ if (!orchestrator?.isRunning()) {
73
+ console.log('Symphony is not running.');
74
+ return;
75
+ }
76
+ SymphonyOrchestrator.destroyInstance();
77
+ console.log('🎵 Symphony stopped.');
78
+ break;
79
+ }
80
+ case 'status': {
81
+ const orchestrator = SymphonyOrchestrator.getInstance();
82
+ if (!orchestrator) {
83
+ console.log('Symphony is not running. Start with: tako symphony start --repo owner/repo');
84
+ return;
85
+ }
86
+ console.log(formatStatus(orchestrator.getState(), orchestrator.getConfig()));
87
+ break;
88
+ }
89
+ case 'history': {
90
+ const orchestrator = SymphonyOrchestrator.getInstance();
91
+ if (!orchestrator) {
92
+ console.log('Symphony is not running.');
93
+ return;
94
+ }
95
+ const completed = Array.from(orchestrator.getState().completed.values());
96
+ console.log(formatHistory(completed));
97
+ break;
98
+ }
99
+ case 'config': {
100
+ const orchestrator = SymphonyOrchestrator.getInstance();
101
+ if (!orchestrator) {
102
+ console.log('Symphony is not running.');
103
+ return;
104
+ }
105
+ console.log(JSON.stringify(orchestrator.getConfig(), null, 2));
106
+ break;
107
+ }
108
+ default:
109
+ console.log(`Unknown symphony command: ${subcommand}`);
110
+ console.log('Usage: tako symphony <start|stop|status|history|config>');
111
+ process.exit(1);
112
+ }
113
+ }
114
+ //# sourceMappingURL=symphony.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symphony.js","sourceRoot":"","sources":["../../src/cli/symphony.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * CLI: tako update — check for and install updates.
3
+ */
4
+ export declare function runUpdate(args: string[]): Promise<void>;
5
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC7D"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * CLI: tako update — check for and install updates.
3
+ */
4
+ import { execSync } from 'node:child_process';
5
+ const VERSION = '0.0.1';
6
+ export async function runUpdate(args) {
7
+ const subcommand = args[0] ?? 'check';
8
+ switch (subcommand) {
9
+ case 'check': {
10
+ console.log(`Current version: ${VERSION}`);
11
+ try {
12
+ const latest = execSync('npm view tako version 2>/dev/null', { encoding: 'utf-8' }).trim();
13
+ if (latest && latest !== VERSION) {
14
+ console.log(`Latest version: ${latest}`);
15
+ console.log('\nUpdate available! Run: tako update install');
16
+ }
17
+ else if (latest) {
18
+ console.log('You are on the latest version.');
19
+ }
20
+ else {
21
+ console.log('Could not check for updates (package not published).');
22
+ }
23
+ }
24
+ catch {
25
+ console.log('Could not check for updates. Ensure npm is available.');
26
+ }
27
+ break;
28
+ }
29
+ case 'install': {
30
+ console.log(`Current version: ${VERSION}`);
31
+ console.log('Updating Tako...\n');
32
+ try {
33
+ execSync('npm update -g tako', { stdio: 'inherit' });
34
+ console.log('\nUpdate complete. Restart Tako to use the new version.');
35
+ }
36
+ catch {
37
+ console.error('\nUpdate failed. Try manually: npm update -g tako');
38
+ process.exit(1);
39
+ }
40
+ break;
41
+ }
42
+ default:
43
+ console.error(`Unknown update subcommand: ${subcommand}`);
44
+ console.error('Available: check, install');
45
+ process.exit(1);
46
+ }
47
+ }
48
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAc;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;IAEtC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,QAAQ,CAAC,mCAAmC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC3F,IAAI,MAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;oBAC1C,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;gBAC9D,CAAC;qBAAM,IAAI,MAAM,EAAE,CAAC;oBAClB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACvE,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,IAAI,CAAC;gBACH,QAAQ,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACzE,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM;QACR,CAAC;QAED;YACE,OAAO,CAAC,KAAK,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Channel Setup — secure credential entry via Discord Modals.
3
+ *
4
+ * Flow: /setup → agent selector → channel type buttons → modal for token → store securely.
5
+ * All interactions are ephemeral. Tokens are never echoed in messages.
6
+ */
7
+ import { type ChatInputCommandInteraction, type StringSelectMenuInteraction, type ButtonInteraction, type ModalSubmitInteraction } from 'discord.js';
8
+ export interface ChannelSetupDeps {
9
+ listAgents: () => Array<{
10
+ id: string;
11
+ description: string;
12
+ }>;
13
+ saveChannelConfig: (agentId: string, channelType: string, config: Record<string, unknown>) => Promise<void>;
14
+ }
15
+ /**
16
+ * Handle the /setup slash command — show agent selector.
17
+ */
18
+ export declare function handleSetupCommand(interaction: ChatInputCommandInteraction, deps: ChannelSetupDeps): Promise<void>;
19
+ /**
20
+ * Handle agent selection — show channel type buttons.
21
+ */
22
+ export declare function handleAgentSelect(interaction: StringSelectMenuInteraction): Promise<void>;
23
+ /**
24
+ * Handle channel type button — show the appropriate modal.
25
+ */
26
+ export declare function handleChannelTypeButton(interaction: ButtonInteraction): Promise<void>;
27
+ /**
28
+ * Handle modal submission — securely store the token.
29
+ */
30
+ export declare function handleModalSubmit(interaction: ModalSubmitInteraction, deps: ChannelSetupDeps): Promise<void>;
31
+ //# sourceMappingURL=channel-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-setup.d.ts","sourceRoot":"","sources":["../../src/commands/channel-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAQL,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC5B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7G;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,2BAA2B,EACxC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,2BAA2B,GACvC,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,WAAW,EAAE,iBAAiB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAyDf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,sBAAsB,EACnC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Channel Setup — secure credential entry via Discord Modals.
3
+ *
4
+ * Flow: /setup → agent selector → channel type buttons → modal for token → store securely.
5
+ * All interactions are ephemeral. Tokens are never echoed in messages.
6
+ */
7
+ import { ActionRowBuilder, StringSelectMenuBuilder, ButtonBuilder, ButtonStyle, ModalBuilder, TextInputBuilder, TextInputStyle, } from 'discord.js';
8
+ /**
9
+ * Handle the /setup slash command — show agent selector.
10
+ */
11
+ export async function handleSetupCommand(interaction, deps) {
12
+ const agents = deps.listAgents();
13
+ if (agents.length === 0) {
14
+ await interaction.reply({
15
+ content: 'No agents registered. Create an agent first.',
16
+ flags: 64,
17
+ });
18
+ return;
19
+ }
20
+ const options = agents.slice(0, 25).map((a) => ({
21
+ label: a.id,
22
+ value: a.id,
23
+ description: a.description ? a.description.slice(0, 100) : undefined,
24
+ }));
25
+ const selectRow = new ActionRowBuilder().addComponents(new StringSelectMenuBuilder()
26
+ .setCustomId('setup_agent_select')
27
+ .setPlaceholder('Select an agent to configure channels')
28
+ .addOptions(options));
29
+ await interaction.reply({
30
+ content: '**Channel Setup** — Select an agent to configure:',
31
+ components: [selectRow],
32
+ flags: 64,
33
+ });
34
+ }
35
+ /**
36
+ * Handle agent selection — show channel type buttons.
37
+ */
38
+ export async function handleAgentSelect(interaction) {
39
+ const agentId = interaction.values[0];
40
+ const buttonRow = new ActionRowBuilder().addComponents(new ButtonBuilder()
41
+ .setCustomId(`setup_type_discord_${agentId}`)
42
+ .setLabel('Discord Bot')
43
+ .setStyle(ButtonStyle.Primary), new ButtonBuilder()
44
+ .setCustomId(`setup_type_telegram_${agentId}`)
45
+ .setLabel('Telegram Bot')
46
+ .setStyle(ButtonStyle.Primary), new ButtonBuilder()
47
+ .setCustomId('setup_cancel')
48
+ .setLabel('Cancel')
49
+ .setStyle(ButtonStyle.Secondary));
50
+ await interaction.update({
51
+ content: `**Channel Setup** — Agent: **${agentId}**\nSelect channel type:`,
52
+ components: [buttonRow],
53
+ });
54
+ }
55
+ /**
56
+ * Handle channel type button — show the appropriate modal.
57
+ */
58
+ export async function handleChannelTypeButton(interaction) {
59
+ const customId = interaction.customId;
60
+ if (customId === 'setup_cancel') {
61
+ await interaction.update({
62
+ content: 'Channel setup cancelled.',
63
+ components: [],
64
+ });
65
+ return;
66
+ }
67
+ // Parse: setup_type_discord_<agentId> or setup_type_telegram_<agentId>
68
+ const match = customId.match(/^setup_type_(discord|telegram)_(.+)$/);
69
+ if (!match)
70
+ return;
71
+ const channelType = match[1];
72
+ const agentId = match[2];
73
+ if (channelType === 'discord') {
74
+ const modal = new ModalBuilder()
75
+ .setCustomId(`setup_modal_discord_${agentId}`)
76
+ .setTitle(`Discord Setup — ${agentId}`)
77
+ .addComponents(new ActionRowBuilder().addComponents(new TextInputBuilder()
78
+ .setCustomId('bot_token')
79
+ .setLabel('Bot Token')
80
+ .setStyle(TextInputStyle.Short)
81
+ .setPlaceholder('Paste your Discord bot token here')
82
+ .setRequired(true)), new ActionRowBuilder().addComponents(new TextInputBuilder()
83
+ .setCustomId('guild_id')
84
+ .setLabel('Guild ID (server to listen in)')
85
+ .setStyle(TextInputStyle.Short)
86
+ .setPlaceholder('Right-click server → Copy Server ID')
87
+ .setRequired(false)));
88
+ await interaction.showModal(modal);
89
+ }
90
+ else {
91
+ const modal = new ModalBuilder()
92
+ .setCustomId(`setup_modal_telegram_${agentId}`)
93
+ .setTitle(`Telegram Setup — ${agentId}`)
94
+ .addComponents(new ActionRowBuilder().addComponents(new TextInputBuilder()
95
+ .setCustomId('bot_token')
96
+ .setLabel('Bot Token from @BotFather')
97
+ .setStyle(TextInputStyle.Short)
98
+ .setPlaceholder('Paste your Telegram bot token here')
99
+ .setRequired(true)));
100
+ await interaction.showModal(modal);
101
+ }
102
+ }
103
+ /**
104
+ * Handle modal submission — securely store the token.
105
+ */
106
+ export async function handleModalSubmit(interaction, deps) {
107
+ const customId = interaction.customId;
108
+ const match = customId.match(/^setup_modal_(discord|telegram)_(.+)$/);
109
+ if (!match)
110
+ return;
111
+ const channelType = match[1];
112
+ const agentId = match[2];
113
+ const botToken = interaction.fields.getTextInputValue('bot_token');
114
+ if (channelType === 'discord') {
115
+ const guildId = interaction.fields.getTextInputValue('guild_id');
116
+ const guilds = guildId ? [guildId.trim()] : [];
117
+ await deps.saveChannelConfig(agentId, 'discord', {
118
+ enabled: true,
119
+ token: botToken.trim(),
120
+ guilds,
121
+ });
122
+ await interaction.reply({
123
+ content: `Discord bot configured for **${agentId}**. Restart Tako to connect.`,
124
+ flags: 64,
125
+ });
126
+ }
127
+ else {
128
+ await deps.saveChannelConfig(agentId, 'telegram', {
129
+ enabled: true,
130
+ token: botToken.trim(),
131
+ });
132
+ await interaction.reply({
133
+ content: `Telegram bot configured for **${agentId}**. Restart Tako to connect.`,
134
+ flags: 64,
135
+ });
136
+ }
137
+ }
138
+ //# sourceMappingURL=channel-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-setup.js","sourceRoot":"","sources":["../../src/commands/channel-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Command dispatcher — routes parsed commands to the appropriate handler.
3
+ *
4
+ * Supports two dispatch modes:
5
+ * - tool dispatch: call a tool directly, return result (no model turn)
6
+ * - model dispatch (default): inject skill instructions into system prompt,
7
+ * forward to agent loop as a normal message
8
+ */
9
+ import type { ParsedCommand } from './parser.js';
10
+ import type { SkillCommandSpec } from './skill-commands.js';
11
+ import type { ToolRegistry } from '../tools/registry.js';
12
+ import type { ToolContext } from '../tools/tool.js';
13
+ import type { SkillLoader } from '../skills/loader.js';
14
+ /**
15
+ * Context provided to the command dispatcher.
16
+ */
17
+ export interface DispatchContext {
18
+ /** Tool registry for direct tool execution */
19
+ toolRegistry: ToolRegistry;
20
+ /** Skill loader for looking up skill instructions */
21
+ skillLoader: SkillLoader;
22
+ /** Tool execution context */
23
+ toolContext: ToolContext;
24
+ }
25
+ /**
26
+ * Dispatch result indicating how the command was handled.
27
+ */
28
+ export interface DispatchResult {
29
+ /** How the command was handled */
30
+ kind: 'tool-result' | 'skill-inject' | 'not-found';
31
+ /** Direct response text (for tool-result) */
32
+ response?: string;
33
+ /** Skill name to inject (for skill-inject) */
34
+ skillName?: string;
35
+ /** Instructions to inject into system prompt (for skill-inject) */
36
+ instructions?: string;
37
+ /** User message to forward to agent loop (for skill-inject) */
38
+ forwardMessage?: string;
39
+ }
40
+ /**
41
+ * Dispatch a parsed command against registered skill commands.
42
+ *
43
+ * - If the command maps to a tool-dispatch skill, execute the tool directly.
44
+ * - If the command maps to a model-dispatch skill, return instructions for injection.
45
+ * - Returns not-found if no skill command matches.
46
+ */
47
+ export declare function dispatchSkillCommand(parsed: ParsedCommand, specs: SkillCommandSpec[], context: DispatchContext): Promise<DispatchResult>;
48
+ //# sourceMappingURL=dispatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.d.ts","sourceRoot":"","sources":["../../src/commands/dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,YAAY,EAAE,YAAY,CAAC;IAC3B,qDAAqD;IACrD,WAAW,EAAE,WAAW,CAAC;IACzB,6BAA6B;IAC7B,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,IAAI,EAAE,aAAa,GAAG,cAAc,GAAG,WAAW,CAAC;IACnD,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,gBAAgB,EAAE,EACzB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CA0DzB"}