heyio 3.3.5 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/CODE_OF_CONDUCT.md +83 -0
  2. package/LICENSE +21 -0
  3. package/README.md +203 -151
  4. package/dist/daemon/cli.js +7153 -0
  5. package/dist/daemon/index.js +6421 -0
  6. package/dist/web/assets/index-CbptHIYU.js +520 -0
  7. package/{public → dist/web}/index.html +1 -1
  8. package/package.json +45 -48
  9. package/dist/api/middleware/auth.d.ts +0 -14
  10. package/dist/api/middleware/auth.d.ts.map +0 -1
  11. package/dist/api/middleware/auth.js +0 -130
  12. package/dist/api/middleware/auth.js.map +0 -1
  13. package/dist/api/notifications.d.ts +0 -14
  14. package/dist/api/notifications.d.ts.map +0 -1
  15. package/dist/api/notifications.js +0 -114
  16. package/dist/api/notifications.js.map +0 -1
  17. package/dist/api/routes/activity.d.ts +0 -3
  18. package/dist/api/routes/activity.d.ts.map +0 -1
  19. package/dist/api/routes/activity.js +0 -28
  20. package/dist/api/routes/activity.js.map +0 -1
  21. package/dist/api/routes/attachments.d.ts +0 -3
  22. package/dist/api/routes/attachments.d.ts.map +0 -1
  23. package/dist/api/routes/attachments.js +0 -83
  24. package/dist/api/routes/attachments.js.map +0 -1
  25. package/dist/api/routes/config.d.ts +0 -3
  26. package/dist/api/routes/config.d.ts.map +0 -1
  27. package/dist/api/routes/config.js +0 -107
  28. package/dist/api/routes/config.js.map +0 -1
  29. package/dist/api/routes/conversations.d.ts +0 -3
  30. package/dist/api/routes/conversations.d.ts.map +0 -1
  31. package/dist/api/routes/conversations.js +0 -25
  32. package/dist/api/routes/conversations.js.map +0 -1
  33. package/dist/api/routes/health.d.ts +0 -3
  34. package/dist/api/routes/health.d.ts.map +0 -1
  35. package/dist/api/routes/health.js +0 -39
  36. package/dist/api/routes/health.js.map +0 -1
  37. package/dist/api/routes/inbox.d.ts +0 -3
  38. package/dist/api/routes/inbox.d.ts.map +0 -1
  39. package/dist/api/routes/inbox.js +0 -139
  40. package/dist/api/routes/inbox.js.map +0 -1
  41. package/dist/api/routes/schedules.d.ts +0 -3
  42. package/dist/api/routes/schedules.d.ts.map +0 -1
  43. package/dist/api/routes/schedules.js +0 -116
  44. package/dist/api/routes/schedules.js.map +0 -1
  45. package/dist/api/routes/skills.d.ts +0 -2
  46. package/dist/api/routes/skills.d.ts.map +0 -1
  47. package/dist/api/routes/skills.js +0 -127
  48. package/dist/api/routes/skills.js.map +0 -1
  49. package/dist/api/routes/squads.d.ts +0 -3
  50. package/dist/api/routes/squads.d.ts.map +0 -1
  51. package/dist/api/routes/squads.js +0 -578
  52. package/dist/api/routes/squads.js.map +0 -1
  53. package/dist/api/routes/usage.d.ts +0 -3
  54. package/dist/api/routes/usage.d.ts.map +0 -1
  55. package/dist/api/routes/usage.js +0 -55
  56. package/dist/api/routes/usage.js.map +0 -1
  57. package/dist/api/routes/wiki.d.ts +0 -2
  58. package/dist/api/routes/wiki.d.ts.map +0 -1
  59. package/dist/api/routes/wiki.js +0 -75
  60. package/dist/api/routes/wiki.js.map +0 -1
  61. package/dist/api/server.d.ts +0 -7
  62. package/dist/api/server.d.ts.map +0 -1
  63. package/dist/api/server.js +0 -183
  64. package/dist/api/server.js.map +0 -1
  65. package/dist/config.d.ts +0 -3
  66. package/dist/config.d.ts.map +0 -1
  67. package/dist/config.js +0 -3
  68. package/dist/config.js.map +0 -1
  69. package/dist/copilot/client.d.ts +0 -5
  70. package/dist/copilot/client.d.ts.map +0 -1
  71. package/dist/copilot/client.js +0 -38
  72. package/dist/copilot/client.js.map +0 -1
  73. package/dist/copilot/health-monitor.d.ts +0 -14
  74. package/dist/copilot/health-monitor.d.ts.map +0 -1
  75. package/dist/copilot/health-monitor.js +0 -70
  76. package/dist/copilot/health-monitor.js.map +0 -1
  77. package/dist/copilot/orchestrator.d.ts +0 -5
  78. package/dist/copilot/orchestrator.d.ts.map +0 -1
  79. package/dist/copilot/orchestrator.js +0 -227
  80. package/dist/copilot/orchestrator.js.map +0 -1
  81. package/dist/copilot/tools.d.ts +0 -80
  82. package/dist/copilot/tools.d.ts.map +0 -1
  83. package/dist/copilot/tools.js +0 -1067
  84. package/dist/copilot/tools.js.map +0 -1
  85. package/dist/index.d.ts +0 -3
  86. package/dist/index.d.ts.map +0 -1
  87. package/dist/index.js +0 -94
  88. package/dist/index.js.map +0 -1
  89. package/dist/logging/logger.d.ts +0 -6
  90. package/dist/logging/logger.d.ts.map +0 -1
  91. package/dist/logging/logger.js +0 -33
  92. package/dist/logging/logger.js.map +0 -1
  93. package/dist/models/index.d.ts +0 -6
  94. package/dist/models/index.d.ts.map +0 -1
  95. package/dist/models/index.js +0 -4
  96. package/dist/models/index.js.map +0 -1
  97. package/dist/models/pricing.d.ts +0 -25
  98. package/dist/models/pricing.d.ts.map +0 -1
  99. package/dist/models/pricing.js +0 -96
  100. package/dist/models/pricing.js.map +0 -1
  101. package/dist/models/registry.d.ts +0 -34
  102. package/dist/models/registry.d.ts.map +0 -1
  103. package/dist/models/registry.js +0 -109
  104. package/dist/models/registry.js.map +0 -1
  105. package/dist/models/token-tracker.d.ts +0 -41
  106. package/dist/models/token-tracker.d.ts.map +0 -1
  107. package/dist/models/token-tracker.js +0 -103
  108. package/dist/models/token-tracker.js.map +0 -1
  109. package/dist/scheduler/engine.d.ts +0 -12
  110. package/dist/scheduler/engine.d.ts.map +0 -1
  111. package/dist/scheduler/engine.js +0 -128
  112. package/dist/scheduler/engine.js.map +0 -1
  113. package/dist/skills/discover.d.ts +0 -22
  114. package/dist/skills/discover.d.ts.map +0 -1
  115. package/dist/skills/discover.js +0 -228
  116. package/dist/skills/discover.js.map +0 -1
  117. package/dist/skills/index.d.ts +0 -5
  118. package/dist/skills/index.d.ts.map +0 -1
  119. package/dist/skills/index.js +0 -3
  120. package/dist/skills/index.js.map +0 -1
  121. package/dist/skills/store.d.ts +0 -56
  122. package/dist/skills/store.d.ts.map +0 -1
  123. package/dist/skills/store.js +0 -154
  124. package/dist/skills/store.js.map +0 -1
  125. package/dist/squad/agent.d.ts +0 -65
  126. package/dist/squad/agent.d.ts.map +0 -1
  127. package/dist/squad/agent.js +0 -544
  128. package/dist/squad/agent.js.map +0 -1
  129. package/dist/squad/autonomy.d.ts +0 -16
  130. package/dist/squad/autonomy.d.ts.map +0 -1
  131. package/dist/squad/autonomy.js +0 -63
  132. package/dist/squad/autonomy.js.map +0 -1
  133. package/dist/squad/event-bus.d.ts +0 -22
  134. package/dist/squad/event-bus.d.ts.map +0 -1
  135. package/dist/squad/event-bus.js +0 -56
  136. package/dist/squad/event-bus.js.map +0 -1
  137. package/dist/squad/execution/index.d.ts +0 -14
  138. package/dist/squad/execution/index.d.ts.map +0 -1
  139. package/dist/squad/execution/index.js +0 -8
  140. package/dist/squad/execution/index.js.map +0 -1
  141. package/dist/squad/execution/instance.d.ts +0 -45
  142. package/dist/squad/execution/instance.d.ts.map +0 -1
  143. package/dist/squad/execution/instance.js +0 -171
  144. package/dist/squad/execution/instance.js.map +0 -1
  145. package/dist/squad/execution/planning.d.ts +0 -20
  146. package/dist/squad/execution/planning.d.ts.map +0 -1
  147. package/dist/squad/execution/planning.js +0 -62
  148. package/dist/squad/execution/planning.js.map +0 -1
  149. package/dist/squad/execution/pr.d.ts +0 -15
  150. package/dist/squad/execution/pr.d.ts.map +0 -1
  151. package/dist/squad/execution/pr.js +0 -109
  152. package/dist/squad/execution/pr.js.map +0 -1
  153. package/dist/squad/execution/review.d.ts +0 -21
  154. package/dist/squad/execution/review.d.ts.map +0 -1
  155. package/dist/squad/execution/review.js +0 -151
  156. package/dist/squad/execution/review.js.map +0 -1
  157. package/dist/squad/execution/runner.d.ts +0 -52
  158. package/dist/squad/execution/runner.d.ts.map +0 -1
  159. package/dist/squad/execution/runner.js +0 -93
  160. package/dist/squad/execution/runner.js.map +0 -1
  161. package/dist/squad/execution/tasks.d.ts +0 -22
  162. package/dist/squad/execution/tasks.d.ts.map +0 -1
  163. package/dist/squad/execution/tasks.js +0 -108
  164. package/dist/squad/execution/tasks.js.map +0 -1
  165. package/dist/squad/execution/worktree.d.ts +0 -27
  166. package/dist/squad/execution/worktree.d.ts.map +0 -1
  167. package/dist/squad/execution/worktree.js +0 -141
  168. package/dist/squad/execution/worktree.js.map +0 -1
  169. package/dist/squad/hiring.d.ts +0 -57
  170. package/dist/squad/hiring.d.ts.map +0 -1
  171. package/dist/squad/hiring.js +0 -588
  172. package/dist/squad/hiring.js.map +0 -1
  173. package/dist/squad/index.d.ts +0 -8
  174. package/dist/squad/index.d.ts.map +0 -1
  175. package/dist/squad/index.js +0 -6
  176. package/dist/squad/index.js.map +0 -1
  177. package/dist/squad/manager.d.ts +0 -58
  178. package/dist/squad/manager.d.ts.map +0 -1
  179. package/dist/squad/manager.js +0 -351
  180. package/dist/squad/manager.js.map +0 -1
  181. package/dist/squad/model-selector.d.ts +0 -29
  182. package/dist/squad/model-selector.d.ts.map +0 -1
  183. package/dist/squad/model-selector.js +0 -64
  184. package/dist/squad/model-selector.js.map +0 -1
  185. package/dist/squad/name-generator.d.ts +0 -16
  186. package/dist/squad/name-generator.d.ts.map +0 -1
  187. package/dist/squad/name-generator.js +0 -111
  188. package/dist/squad/name-generator.js.map +0 -1
  189. package/dist/squad/roles/templates.d.ts +0 -7
  190. package/dist/squad/roles/templates.d.ts.map +0 -1
  191. package/dist/squad/roles/templates.js +0 -104
  192. package/dist/squad/roles/templates.js.map +0 -1
  193. package/dist/squad/skill-parser.d.ts +0 -36
  194. package/dist/squad/skill-parser.d.ts.map +0 -1
  195. package/dist/squad/skill-parser.js +0 -90
  196. package/dist/squad/skill-parser.js.map +0 -1
  197. package/dist/squad/source-resolver.d.ts +0 -20
  198. package/dist/squad/source-resolver.d.ts.map +0 -1
  199. package/dist/squad/source-resolver.js +0 -51
  200. package/dist/squad/source-resolver.js.map +0 -1
  201. package/dist/store/activity.d.ts +0 -51
  202. package/dist/store/activity.d.ts.map +0 -1
  203. package/dist/store/activity.js +0 -197
  204. package/dist/store/activity.js.map +0 -1
  205. package/dist/store/conversations.d.ts +0 -25
  206. package/dist/store/conversations.d.ts.map +0 -1
  207. package/dist/store/conversations.js +0 -76
  208. package/dist/store/conversations.js.map +0 -1
  209. package/dist/store/db.d.ts +0 -5
  210. package/dist/store/db.d.ts.map +0 -1
  211. package/dist/store/db.js +0 -290
  212. package/dist/store/db.js.map +0 -1
  213. package/dist/store/inbox.d.ts +0 -67
  214. package/dist/store/inbox.d.ts.map +0 -1
  215. package/dist/store/inbox.js +0 -192
  216. package/dist/store/inbox.js.map +0 -1
  217. package/dist/store/schedules.d.ts +0 -53
  218. package/dist/store/schedules.d.ts.map +0 -1
  219. package/dist/store/schedules.js +0 -160
  220. package/dist/store/schedules.js.map +0 -1
  221. package/dist/wiki/index.d.ts +0 -3
  222. package/dist/wiki/index.d.ts.map +0 -1
  223. package/dist/wiki/index.js +0 -2
  224. package/dist/wiki/index.js.map +0 -1
  225. package/dist/wiki/store.d.ts +0 -81
  226. package/dist/wiki/store.d.ts.map +0 -1
  227. package/dist/wiki/store.js +0 -270
  228. package/dist/wiki/store.js.map +0 -1
  229. package/node_modules/@io/shared/dist/config.d.ts +0 -26
  230. package/node_modules/@io/shared/dist/config.d.ts.map +0 -1
  231. package/node_modules/@io/shared/dist/config.js +0 -53
  232. package/node_modules/@io/shared/dist/config.js.map +0 -1
  233. package/node_modules/@io/shared/dist/constants.d.ts +0 -19
  234. package/node_modules/@io/shared/dist/constants.d.ts.map +0 -1
  235. package/node_modules/@io/shared/dist/constants.js +0 -51
  236. package/node_modules/@io/shared/dist/constants.js.map +0 -1
  237. package/node_modules/@io/shared/dist/index.d.ts +0 -12
  238. package/node_modules/@io/shared/dist/index.d.ts.map +0 -1
  239. package/node_modules/@io/shared/dist/index.js +0 -3
  240. package/node_modules/@io/shared/dist/index.js.map +0 -1
  241. package/node_modules/@io/shared/dist/types/agents.d.ts +0 -3
  242. package/node_modules/@io/shared/dist/types/agents.d.ts.map +0 -1
  243. package/node_modules/@io/shared/dist/types/agents.js +0 -2
  244. package/node_modules/@io/shared/dist/types/agents.js.map +0 -1
  245. package/node_modules/@io/shared/dist/types/api.d.ts +0 -33
  246. package/node_modules/@io/shared/dist/types/api.d.ts.map +0 -1
  247. package/node_modules/@io/shared/dist/types/api.js +0 -2
  248. package/node_modules/@io/shared/dist/types/api.js.map +0 -1
  249. package/node_modules/@io/shared/dist/types/attachments.d.ts +0 -10
  250. package/node_modules/@io/shared/dist/types/attachments.d.ts.map +0 -1
  251. package/node_modules/@io/shared/dist/types/attachments.js +0 -2
  252. package/node_modules/@io/shared/dist/types/attachments.js.map +0 -1
  253. package/node_modules/@io/shared/dist/types/events.d.ts +0 -44
  254. package/node_modules/@io/shared/dist/types/events.d.ts.map +0 -1
  255. package/node_modules/@io/shared/dist/types/events.js +0 -2
  256. package/node_modules/@io/shared/dist/types/events.js.map +0 -1
  257. package/node_modules/@io/shared/dist/types/history.d.ts +0 -33
  258. package/node_modules/@io/shared/dist/types/history.d.ts.map +0 -1
  259. package/node_modules/@io/shared/dist/types/history.js +0 -2
  260. package/node_modules/@io/shared/dist/types/history.js.map +0 -1
  261. package/node_modules/@io/shared/dist/types/messages.d.ts +0 -15
  262. package/node_modules/@io/shared/dist/types/messages.d.ts.map +0 -1
  263. package/node_modules/@io/shared/dist/types/messages.js +0 -2
  264. package/node_modules/@io/shared/dist/types/messages.js.map +0 -1
  265. package/node_modules/@io/shared/dist/types/squads.d.ts +0 -46
  266. package/node_modules/@io/shared/dist/types/squads.d.ts.map +0 -1
  267. package/node_modules/@io/shared/dist/types/squads.js +0 -2
  268. package/node_modules/@io/shared/dist/types/squads.js.map +0 -1
  269. package/node_modules/@io/shared/dist/types/tokens.d.ts +0 -19
  270. package/node_modules/@io/shared/dist/types/tokens.d.ts.map +0 -1
  271. package/node_modules/@io/shared/dist/types/tokens.js +0 -2
  272. package/node_modules/@io/shared/dist/types/tokens.js.map +0 -1
  273. package/node_modules/@io/shared/package.json +0 -18
  274. package/node_modules/@io/shared/src/config.ts +0 -85
  275. package/node_modules/@io/shared/src/constants.ts +0 -54
  276. package/node_modules/@io/shared/src/index.ts +0 -46
  277. package/node_modules/@io/shared/src/types/agents.ts +0 -3
  278. package/node_modules/@io/shared/src/types/api.ts +0 -35
  279. package/node_modules/@io/shared/src/types/attachments.ts +0 -9
  280. package/node_modules/@io/shared/src/types/events.ts +0 -86
  281. package/node_modules/@io/shared/src/types/history.ts +0 -37
  282. package/node_modules/@io/shared/src/types/messages.ts +0 -15
  283. package/node_modules/@io/shared/src/types/squads.ts +0 -56
  284. package/node_modules/@io/shared/src/types/tokens.ts +0 -19
  285. package/node_modules/@io/shared/tsconfig.json +0 -9
  286. package/node_modules/@io/shared/tsconfig.tsbuildinfo +0 -1
  287. package/public/assets/index-BywBQCtu.js +0 -510
  288. package/public/assets/index-BywBQCtu.js.map +0 -1
  289. /package/{public → dist/web}/assets/index-B6F0UZkW.css +0 -0
@@ -0,0 +1,83 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
6
+
7
+ We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
8
+
9
+ ## Our Standards
10
+
11
+ Examples of behavior that contributes to a positive environment for our community include:
12
+
13
+ * Demonstrating empathy and kindness toward other people
14
+ * Being respectful of differing opinions, viewpoints, and experiences
15
+ * Giving and gracefully accepting constructive feedback
16
+ * Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
17
+ * Focusing on what is best not just for us as individuals, but for the overall community
18
+
19
+ Examples of unacceptable behavior include:
20
+
21
+ * The use of sexualized language or imagery, and sexual attention or advances of any kind
22
+ * Trolling, insulting or derogatory comments, and personal or political attacks
23
+ * Public or private harassment
24
+ * Publishing others' private information, such as a physical or email address, without their explicit permission
25
+ * Other conduct which could reasonably be considered inappropriate in a professional setting
26
+
27
+ ## Enforcement Responsibilities
28
+
29
+ Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
30
+
31
+ Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
32
+
33
+ ## Scope
34
+
35
+ This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
36
+
37
+ ## Enforcement
38
+
39
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at <https://github.com/michaeljolley/io/issues>. All complaints will be reviewed and investigated promptly and fairly.
40
+
41
+ All community leaders are obligated to respect the privacy and security of the reporter of any incident.
42
+
43
+ ## Enforcement Guidelines
44
+
45
+ Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
46
+
47
+ ### 1. Correction
48
+
49
+ **Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
50
+
51
+ **Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
52
+
53
+ ### 2. Warning
54
+
55
+ **Community Impact**: A violation through a single incident or series of actions.
56
+
57
+ **Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
58
+
59
+ ### 3. Temporary Ban
60
+
61
+ **Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
62
+
63
+ **Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
64
+
65
+ ### 4. Permanent Ban
66
+
67
+ **Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
68
+
69
+ **Consequence**: A permanent ban from any sort of public interaction within the community.
70
+
71
+ ## Attribution
72
+
73
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
74
+
75
+ Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
76
+
77
+ For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at [https://www.contributor-covenant.org/translations][translations].
78
+
79
+ [homepage]: https://www.contributor-covenant.org
80
+ [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
81
+ [Mozilla CoC]: https://github.com/mozilla/diversity
82
+ [FAQ]: https://www.contributor-covenant.org/faq
83
+ [translations]: https://www.contributor-covenant.org/translations
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Michael Jolley
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,217 +1,269 @@
1
1
  <p align="center">
2
- <img src="assets/IO-logo.svg" alt="IO Logo" width="200" />
2
+ <img src="assets/IO-logo.svg" alt="IO" width="200" />
3
3
  </p>
4
4
 
5
5
  <h1 align="center">IO</h1>
6
6
 
7
7
  <p align="center">
8
- <strong>AI Orchestrator Daemon manage specialized agent squads for your software projects</strong>
8
+ A self-hosted AI orchestrator daemon with squad-based team delegation.
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
- <a href="https://michaeljolley.github.io/io">Documentation</a>
13
- <a href="#getting-started">Getting Started</a>
14
- <a href="#architecture">Architecture</a>
12
+ <a href="https://www.npmjs.com/package/heyio"><img src="https://img.shields.io/npm/v/heyio" alt="npm version" /></a>
13
+ <a href="https://github.com/michaeljolley/io/actions"><img src="https://github.com/michaeljolley/io/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
14
+ <img src="https://img.shields.io/node/v/heyio" alt="node version" />
15
+ <a href="LICENSE"><img src="https://img.shields.io/github/license/michaeljolley/io" alt="license" /></a>
15
16
  </p>
16
17
 
17
18
  ---
18
19
 
19
20
  ## What is IO?
20
21
 
21
- IO is an always-running daemon that acts as your personal AI orchestrator. You talk to IO, and IO manages teams of specialized AI agents ("squads") that work on your codebases.
22
-
23
- - **One conversation interface** — talk to IO via TUI, Telegram, or the web dashboard
24
- - **Squad delegation** — IO automatically routes project questions to the right squad
25
- - **Universe theming** — squads get pop-culture character names and personas via LLM
26
- - **Web dashboard** — React SPA with real-time chat, squad management, and usage charts
27
- - **Cron schedules** — automate recurring tasks like daily standups or issue triage
28
- - **Inbox system** — squads can send you deliverables or ask blocking questions
29
- - **Model management** — token tracking and configurable model selection per agent
30
-
31
- ## Architecture
32
-
33
- ```mermaid
34
- graph TD
35
- User["🧑 You<br/>(TUI / Telegram / Web)"]
36
- Orch["🤖 Orchestrator<br/>(Copilot SDK · tool-calling)"]
37
- Wiki["📚 Wiki<br/>(Knowledge Base)"]
38
- Skills["🧩 Skills<br/>(SKILL.md)"]
39
- Sched["⏰ Scheduler<br/>(cron jobs)"]
40
- SquadA["👥 Squad A<br/>(Team Lead + Agents)"]
41
- SquadB["👥 Squad B<br/>(Team Lead + Agents)"]
42
- Web["🌐 Web Dashboard<br/>(React SPA)"]
43
-
44
- User --> Orch
45
- User --> Web
46
- Web --> Orch
47
- Orch --> SquadA
48
- Orch --> SquadB
49
- Orch --> Sched
50
- Orch --> Wiki
51
- Orch --> Skills
52
- SquadA --> Wiki
53
- SquadB --> Wiki
54
- ```
55
-
56
- Each squad has:
57
- - **Team Lead** — receives objectives, creates plans, coordinates agents
58
- - **Agents** — specialized workers (developer, reviewer, etc.) with pop-culture character names
59
- - **Meetings** — structured collaboration between agents for planning and review
60
- - **QA/Tester** — required veto-holding member who must approve before completion
61
-
62
- ## Getting Started
22
+ IO is your personal AI companion — an always-on daemon you communicate with via a **web dashboard** or **Telegram**. It can answer questions directly, manage a personal wiki, schedule recurring tasks, and delegate project-specific work to **squads** of specialized AI agents.
63
23
 
64
- ### Prerequisites
24
+ ### Key Concepts
25
+
26
+ - **Io** — The orchestrator. It routes your messages, manages squads, and can do direct coding work on repos without a squad.
27
+ - **Squad** — A team of AI agents assigned to a single repository. Each squad has a Team Lead, a QA agent, and LLM-generated specialist roles.
28
+ - **Execution Pipeline** — When a squad receives an objective: plan → parallel agents (git worktrees) → review → QA veto → PR creation.
65
29
 
66
- - Node.js 22+
67
- - GitHub Copilot access (the daemon uses `@github/copilot-sdk`)
68
- - Git
30
+ ---
69
31
 
70
- ### Installation
32
+ ## Features
33
+
34
+ - 🤖 **Smart Model Routing** — Io classifies messages by complexity and routes to fast/standard/premium models automatically
35
+ - 👥 **Squad Delegation** — Hire a squad for any repo; Io delegates all project questions to it
36
+ - 🔄 **Parallel Execution** — Agents work simultaneously in isolated git worktrees
37
+ - ✅ **QA Gate** — Mandatory QA review with veto power (max 3 revision cycles before escalation)
38
+ - 📋 **4 PR Modes** — Branch-only, draft PR, ready PR, or auto-merge (configurable per squad)
39
+ - 📅 **Cron Scheduler** — Automate recurring tasks (daily standups, issue triage, dependency updates)
40
+ - 📬 **Inbox** — Blocking questions and deliverables from squads, reviewed at your pace
41
+ - 📝 **Wiki** — Personal knowledge base with search, tags, and episodic memory
42
+ - 🔌 **Skills** — Extensible via SKILL.md files (install from GitHub or marketplace)
43
+ - 🔧 **MCP Support** — Agents can connect to external MCP servers
44
+ - 📊 **Token Tracking** — Per-agent usage granularity with cost breakdowns
45
+ - 💬 **Telegram** — Chat with Io and receive notifications on your phone
46
+ - 🌐 **Web Dashboard** — Full-featured React app (chat, squads, inbox, wiki, schedules, usage, skills)
47
+
48
+ ---
49
+
50
+ ## Quick Start
51
+
52
+ ### Install
71
53
 
72
54
  ```bash
73
- git clone https://github.com/michaeljolley/io.git
74
- cd io
75
- npm install
76
- npm run build
55
+ npm install -g heyio
77
56
  ```
78
57
 
79
- ### Running
58
+ ### Setup
80
59
 
81
60
  ```bash
82
- # Start the daemon
83
- npm run dev
61
+ io setup
62
+ ```
63
+
64
+ This creates `~/.io/config.json` with your preferences (port, Telegram token, Supabase auth, etc.)
65
+
66
+ ### Run
84
67
 
85
- # Or build and start
86
- npm run build
87
- npm start
68
+ ```bash
69
+ io
88
70
  ```
89
71
 
90
- The daemon starts on port `7777` by default. The web dashboard is served at the same port — open `http://localhost:7777` in your browser.
72
+ The daemon starts and serves the web dashboard at `http://localhost:7777`.
73
+
74
+ ---
91
75
 
92
- ### Configuration
76
+ ## Requirements
93
77
 
94
- Create `~/.io/config.json`:
78
+ - **Node.js 22+**
79
+ - **GitHub Copilot** subscription (for the `@github/copilot-sdk`)
80
+ - **Git** and **gh** CLI (for squad PR creation)
81
+ - **Telegram Bot Token** (optional, for mobile access)
82
+
83
+ ---
84
+
85
+ ## Configuration
86
+
87
+ IO stores all data in `~/.io/`:
95
88
 
96
- ```json
97
- {
98
- "apiPort": 7777,
99
- "defaultModel": "claude-opus-4.6",
100
- "logLevel": "info",
101
- "maxInstancesPerSquad": 3,
102
- "telegram": {
103
- "botToken": "your-token-from-botfather",
104
- "allowedChatIds": [12345678]
105
- },
106
- "supabase": {
107
- "projectUrl": "https://your-project.supabase.co",
108
- "anonKey": "eyJ...",
109
- "jwtSecret": "your-jwt-secret"
110
- }
111
- }
112
89
  ```
90
+ ~/.io/
91
+ ├── config.json # Main configuration
92
+ ├── io.db # SQLite database
93
+ ├── wiki/pages/ # Wiki markdown pages
94
+ ├── skills/ # Installed SKILL.md files
95
+ ├── skills-lock.json # Skills manifest
96
+ └── logs/io.log # Structured logs
97
+ ```
98
+
99
+ ### Config Options
113
100
 
114
- All settings can also be controlled via environment variables (which take priority):
101
+ | Key | Env Variable | Default | Description |
102
+ |-----|-------------|---------|-------------|
103
+ | `port` | `IO_PORT` | `7777` | API server port |
104
+ | `logLevel` | `IO_LOG_LEVEL` | `info` | Log level (trace/debug/info/warn/error) |
105
+ | `defaultModel` | `IO_DEFAULT_MODEL` | `gpt-4.1` | Default LLM model |
106
+ | `telegramToken` | `IO_TELEGRAM_TOKEN` | — | Telegram bot token |
107
+ | `telegramUserId` | `IO_TELEGRAM_USER_ID` | — | Your Telegram user ID |
108
+ | `supabaseUrl` | `IO_SUPABASE_URL` | — | Supabase URL (for dashboard auth) |
109
+ | `supabaseAnonKey` | `IO_SUPABASE_ANON_KEY` | — | Supabase anon key |
110
+ | `sessionResetThreshold` | `IO_SESSION_RESET_THRESHOLD` | `50` | Messages before session reset |
115
111
 
116
- | Variable | Config Key | Default |
117
- |----------|-----------|---------|
118
- | `IO_PORT` | `apiPort` | `7777` |
119
- | `IO_LOG_LEVEL` | `logLevel` | `info` |
120
- | `IO_MODEL` | `defaultModel` | `claude-opus-4.6` |
121
- | `IO_DATA_DIR` | `dataDir` | `~/.io` |
122
- | `TELEGRAM_BOT_TOKEN` | `telegram.botToken` | — |
123
- | `TELEGRAM_ALLOWED_CHAT_IDS` | `telegram.allowedChatIds` | — |
124
- | `IO_SUPABASE_URL` | `supabase.projectUrl` | — |
125
- | `IO_SUPABASE_ANON_KEY` | `supabase.anonKey` | — |
126
- | `IO_SUPABASE_JWT_SECRET` | `supabase.jwtSecret` | — |
112
+ ---
127
113
 
128
- See the [Configuration Guide](https://michaeljolley.github.io/io/guides/configuration/) for full details.
114
+ ## Squads
129
115
 
130
- ### Authentication
116
+ ### Hiring a Squad
131
117
 
132
- When Supabase is configured, the web dashboard requires login and all API endpoints are secured with JWT verification. If Supabase is **not** configured, the API stays open (suitable for local-only use).
118
+ Tell Io to hire a squad for a repository:
133
119
 
134
- ## Key Features
120
+ > "Hire a squad for https://github.com/myorg/my-app"
135
121
 
136
- ### Squads
122
+ Io analyzes the repo, proposes a team composition (Team Lead + QA + specialists), and asks for your approval.
137
123
 
138
- Hire a squad for any project:
124
+ ### Squad Composition
139
125
 
140
- > "Hire a squad for https://github.com/org/my-app with the Star Wars universe"
126
+ | Role | Mandatory | Purpose |
127
+ |------|-----------|---------|
128
+ | Team Lead | ✅ | Plans objectives, assigns tasks, picks models |
129
+ | QA | ✅ | Reviews diffs, runs tests, approves/rejects |
130
+ | *Generated* | ❌ | Specialists based on repo (e.g., "API Developer", "UI Specialist") |
141
131
 
142
- IO creates a team with character names from your chosen universe (e.g., "Yoda" as Team Lead, "R2-D2" as DevOps). Each member gets a persona that influences their communication style.
132
+ ### PR Modes
143
133
 
144
- ### Web Dashboard
134
+ Configure per squad how completed work is delivered:
145
135
 
146
- A full React SPA served by the daemon at the API port:
147
- - **Chat** — real-time streaming conversation with IO
148
- - **Squads** view teams, members, active instances, and activity
149
- - **Feed** inbox of deliverables and blocking questions
150
- - **Skills** manage installed SKILL.md capabilities
151
- - **Schedules** CRUD for cron-based automation
152
- - **Wiki** — knowledge base viewer and editor
153
- - **Usage** — token and cost charts (by squad, model, time)
154
- - **Settings** — configure all daemon options from the UI
136
+ | Mode | Behavior |
137
+ |------|----------|
138
+ | `branch-only` | Branch pushed; PR only if QA approves |
139
+ | `draft-pr` | Draft PR created; promoted to ready on QA approval |
140
+ | `ready-pr` | PR created as ready; stays open if QA rejects |
141
+ | `auto-merge` | PR created; auto-merged on QA approval |
155
142
 
156
- ### Schedules
143
+ ---
157
144
 
158
- Automate recurring work with cron expressions:
145
+ ## Execution Pipeline
159
146
 
160
- > "Create a daily standup for my-app at 9am on weekdays — have them review open issues and report progress"
147
+ ```
148
+ Objective received
149
+ → Team Lead creates plan
150
+ → Tasks assigned to agents
151
+ → Agents execute in parallel (git worktrees)
152
+ → Review meeting
153
+ → QA gate
154
+ ├─ Approved → Push branch + create PR (per prMode)
155
+ ├─ Rejected (< 3x) → Agents revise with feedback
156
+ └─ Rejected (3x) → Escalate to inbox
157
+ ```
161
158
 
162
- ### Inbox
159
+ ---
163
160
 
164
- Squads communicate back via the inbox:
165
- - **Deliverables** — status reports, completed summaries
166
- - **Blocking questions** — the squad pauses and waits for your answer
161
+ ## Development
167
162
 
168
- ### Clients
163
+ ### Prerequisites
169
164
 
170
- | Client | Description |
171
- |--------|-------------|
172
- | Web Dashboard | React SPA at `http://localhost:7777` |
173
- | TUI | Terminal interface built with Ink |
174
- | Telegram | Bot integration via Grammy |
175
- | REST API | HTTP endpoints at `/api/*` |
176
- | WebSocket | Real-time streaming at `/ws` |
165
+ ```bash
166
+ node --version # >= 22.0.0
167
+ git --version
168
+ gh --version
169
+ ```
177
170
 
178
- ## Project Structure
171
+ ### Setup
179
172
 
173
+ ```bash
174
+ git clone https://github.com/michaeljolley/io.git
175
+ cd io
176
+ npm install
180
177
  ```
181
- packages/
182
- ├── shared/ # Types, constants, shared utilities
183
- ├── daemon/ # Core daemon (orchestrator, squads, API, scheduler)
184
- ├── web/ # Web dashboard (React + Vite + Tailwind)
185
- ├── tui/ # Terminal UI (Ink/React)
186
- └── telegram/ # Telegram bot client
187
- docs/ # Astro Starlight documentation site
188
- .github/
189
- └── workflows/
190
- ├── ci.yml # PR validation (lint, build, test)
191
- ├── release.yml # Tag-based release + npm publish
192
- └── deploy-docs.yml # Docs site deployment
178
+
179
+ ### Build
180
+
181
+ ```bash
182
+ npm run build # Build all packages
183
+ npm run build:shared # Build shared types
184
+ npm run build:daemon # Build daemon with esbuild
185
+ npm run build:web # Build web dashboard with Vite
193
186
  ```
194
187
 
195
- ## Development
188
+ ### Dev Mode
196
189
 
197
190
  ```bash
198
- # Build all packages
199
- npm run build
191
+ npm run dev # Run daemon with tsx --watch
192
+ ```
193
+
194
+ ### Test
200
195
 
201
- # Run daemon in dev mode (watches for changes)
202
- npm run dev
196
+ ```bash
197
+ npm test # Run all tests
198
+ npm run test:watch # Watch mode
199
+ npm run test:coverage # With coverage
200
+ ```
203
201
 
204
- # Run web dashboard dev server (with API proxy)
205
- cd packages/web && npm run dev
202
+ ### Lint
206
203
 
207
- # Build documentation
208
- cd docs && npm run build
204
+ ```bash
205
+ npm run lint # Check with Biome
206
+ npm run lint:fix # Auto-fix
207
+ npm run format # Format with Biome
209
208
  ```
210
209
 
211
- ## Documentation
210
+ ---
211
+
212
+ ## Project Structure
212
213
 
213
- Full documentation is available at **[michaeljolley.github.io/io](https://michaeljolley.github.io/io)**.
214
+ ```
215
+ packages/
216
+ ├── shared/ # Types, constants, config schema
217
+ ├── daemon/ # Core daemon (orchestrator, squads, execution, API)
218
+ │ └── src/
219
+ │ ├── orchestrator/ # Io brain + tools
220
+ │ ├── squad/ # Squad hiring + management
221
+ │ ├── execution/ # Full pipeline (plan, tasks, agents, QA, PR)
222
+ │ ├── copilot/ # Copilot SDK integration + model routing
223
+ │ ├── store/ # libSQL database layer
224
+ │ ├── api/ # Express REST + WebSocket
225
+ │ ├── wiki/ # Personal knowledge base
226
+ │ ├── skills/ # SKILL.md extensibility
227
+ │ ├── scheduler/ # Cron automation
228
+ │ └── telegram/ # Grammy bot + notifications
229
+ └── web/ # React dashboard (Vite + Tailwind + Radix UI)
230
+ ```
231
+
232
+ ---
233
+
234
+ ## API
235
+
236
+ The daemon exposes a REST API + WebSocket at the configured port (default 7777).
237
+
238
+ ### Endpoints
239
+
240
+ | Method | Path | Description |
241
+ |--------|------|-------------|
242
+ | POST | `/api/chat` | Send message to Io |
243
+ | GET | `/api/conversations` | List conversations |
244
+ | GET | `/api/squads` | List squads |
245
+ | POST | `/api/squads` | Create squad |
246
+ | POST | `/api/squads/:id/objectives` | Assign objective |
247
+ | GET | `/api/inbox` | List inbox items |
248
+ | POST | `/api/inbox/:id/reply` | Reply to inbox item |
249
+ | GET | `/api/schedules` | List schedules |
250
+ | POST | `/api/schedules` | Create schedule |
251
+ | GET | `/api/wiki/pages` | List wiki pages |
252
+ | GET | `/api/wiki/search` | Search wiki |
253
+ | GET | `/api/skills` | List installed skills |
254
+ | GET | `/api/usage` | Token usage summary |
255
+ | GET | `/api/activity` | Activity feed |
256
+
257
+ ### WebSocket
258
+
259
+ Connect to `ws://localhost:7777` and subscribe to channels for real-time events:
260
+
261
+ ```json
262
+ { "type": "subscribe", "channels": ["chat", "inbox", "activity"] }
263
+ ```
264
+
265
+ ---
214
266
 
215
267
  ## License
216
268
 
217
- MIT
269
+ [MIT](LICENSE)