heyio 1.13.0 → 3.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 (327) hide show
  1. package/dist/api/middleware/auth.d.ts +14 -0
  2. package/dist/api/middleware/auth.d.ts.map +1 -0
  3. package/dist/api/middleware/auth.js +66 -0
  4. package/dist/api/middleware/auth.js.map +1 -0
  5. package/dist/api/notifications.d.ts +14 -0
  6. package/dist/api/notifications.d.ts.map +1 -0
  7. package/dist/api/notifications.js +112 -0
  8. package/dist/api/notifications.js.map +1 -0
  9. package/dist/api/routes/activity.d.ts +3 -0
  10. package/dist/api/routes/activity.d.ts.map +1 -0
  11. package/dist/api/routes/activity.js +28 -0
  12. package/dist/api/routes/activity.js.map +1 -0
  13. package/dist/api/routes/attachments.d.ts +3 -0
  14. package/dist/api/routes/attachments.d.ts.map +1 -0
  15. package/dist/api/routes/attachments.js +83 -0
  16. package/dist/api/routes/attachments.js.map +1 -0
  17. package/dist/api/routes/config.d.ts +3 -0
  18. package/dist/api/routes/config.d.ts.map +1 -0
  19. package/dist/api/routes/config.js +106 -0
  20. package/dist/api/routes/config.js.map +1 -0
  21. package/dist/api/routes/conversations.d.ts +3 -0
  22. package/dist/api/routes/conversations.d.ts.map +1 -0
  23. package/dist/api/routes/conversations.js +69 -0
  24. package/dist/api/routes/conversations.js.map +1 -0
  25. package/dist/api/routes/health.d.ts +3 -0
  26. package/dist/api/routes/health.d.ts.map +1 -0
  27. package/dist/api/routes/health.js +16 -0
  28. package/dist/api/routes/health.js.map +1 -0
  29. package/dist/api/routes/inbox.d.ts +3 -0
  30. package/dist/api/routes/inbox.d.ts.map +1 -0
  31. package/dist/api/routes/inbox.js +88 -0
  32. package/dist/api/routes/inbox.js.map +1 -0
  33. package/dist/api/routes/schedules.d.ts +3 -0
  34. package/dist/api/routes/schedules.d.ts.map +1 -0
  35. package/dist/api/routes/schedules.js +96 -0
  36. package/dist/api/routes/schedules.js.map +1 -0
  37. package/dist/api/routes/skills.d.ts +2 -0
  38. package/dist/api/routes/skills.d.ts.map +1 -0
  39. package/dist/api/routes/skills.js +85 -0
  40. package/dist/api/routes/skills.js.map +1 -0
  41. package/dist/api/routes/squads.d.ts +3 -0
  42. package/dist/api/routes/squads.d.ts.map +1 -0
  43. package/dist/api/routes/squads.js +129 -0
  44. package/dist/api/routes/squads.js.map +1 -0
  45. package/dist/api/routes/usage.d.ts +3 -0
  46. package/dist/api/routes/usage.d.ts.map +1 -0
  47. package/dist/api/routes/usage.js +55 -0
  48. package/dist/api/routes/usage.js.map +1 -0
  49. package/dist/api/routes/wiki.d.ts +2 -0
  50. package/dist/api/routes/wiki.d.ts.map +1 -0
  51. package/dist/api/routes/wiki.js +43 -0
  52. package/dist/api/routes/wiki.js.map +1 -0
  53. package/dist/api/server.d.ts +7 -0
  54. package/dist/api/server.d.ts.map +1 -0
  55. package/dist/api/server.js +136 -634
  56. package/dist/api/server.js.map +1 -0
  57. package/dist/config.d.ts +3 -0
  58. package/dist/config.d.ts.map +1 -0
  59. package/dist/config.js +2 -91
  60. package/dist/config.js.map +1 -0
  61. package/dist/copilot/client.d.ts +5 -0
  62. package/dist/copilot/client.d.ts.map +1 -0
  63. package/dist/copilot/client.js +19 -11
  64. package/dist/copilot/client.js.map +1 -0
  65. package/dist/copilot/health-monitor.d.ts +14 -0
  66. package/dist/copilot/health-monitor.d.ts.map +1 -0
  67. package/dist/copilot/health-monitor.js +70 -0
  68. package/dist/copilot/health-monitor.js.map +1 -0
  69. package/dist/copilot/orchestrator.d.ts +5 -0
  70. package/dist/copilot/orchestrator.d.ts.map +1 -0
  71. package/dist/copilot/orchestrator.js +127 -123
  72. package/dist/copilot/orchestrator.js.map +1 -0
  73. package/dist/copilot/tools.d.ts +49 -0
  74. package/dist/copilot/tools.d.ts.map +1 -0
  75. package/dist/copilot/tools.js +545 -321
  76. package/dist/copilot/tools.js.map +1 -0
  77. package/dist/index.d.ts +3 -0
  78. package/dist/index.d.ts.map +1 -0
  79. package/dist/index.js +82 -26
  80. package/dist/index.js.map +1 -0
  81. package/dist/logging/logger.d.ts +6 -0
  82. package/dist/logging/logger.d.ts.map +1 -0
  83. package/dist/logging/logger.js +21 -0
  84. package/dist/logging/logger.js.map +1 -0
  85. package/dist/models/index.d.ts +6 -0
  86. package/dist/models/index.d.ts.map +1 -0
  87. package/dist/models/index.js +4 -0
  88. package/dist/models/index.js.map +1 -0
  89. package/dist/models/pricing.d.ts +25 -0
  90. package/dist/models/pricing.d.ts.map +1 -0
  91. package/dist/models/pricing.js +96 -0
  92. package/dist/models/pricing.js.map +1 -0
  93. package/dist/models/registry.d.ts +34 -0
  94. package/dist/models/registry.d.ts.map +1 -0
  95. package/dist/models/registry.js +109 -0
  96. package/dist/models/registry.js.map +1 -0
  97. package/dist/models/token-tracker.d.ts +40 -0
  98. package/dist/models/token-tracker.d.ts.map +1 -0
  99. package/dist/models/token-tracker.js +102 -0
  100. package/dist/models/token-tracker.js.map +1 -0
  101. package/dist/scheduler/engine.d.ts +9 -0
  102. package/dist/scheduler/engine.d.ts.map +1 -0
  103. package/dist/scheduler/engine.js +127 -0
  104. package/dist/scheduler/engine.js.map +1 -0
  105. package/dist/skills/index.d.ts +3 -0
  106. package/dist/skills/index.d.ts.map +1 -0
  107. package/dist/skills/index.js +2 -0
  108. package/dist/skills/index.js.map +1 -0
  109. package/dist/skills/store.d.ts +52 -0
  110. package/dist/skills/store.d.ts.map +1 -0
  111. package/dist/skills/store.js +148 -0
  112. package/dist/skills/store.js.map +1 -0
  113. package/dist/squad/agent.d.ts +46 -0
  114. package/dist/squad/agent.d.ts.map +1 -0
  115. package/dist/squad/agent.js +261 -0
  116. package/dist/squad/agent.js.map +1 -0
  117. package/dist/squad/autonomy.d.ts +16 -0
  118. package/dist/squad/autonomy.d.ts.map +1 -0
  119. package/dist/squad/autonomy.js +63 -0
  120. package/dist/squad/autonomy.js.map +1 -0
  121. package/dist/squad/event-bus.d.ts +22 -0
  122. package/dist/squad/event-bus.d.ts.map +1 -0
  123. package/dist/squad/event-bus.js +56 -0
  124. package/dist/squad/event-bus.js.map +1 -0
  125. package/dist/squad/execution/index.d.ts +12 -0
  126. package/dist/squad/execution/index.d.ts.map +1 -0
  127. package/dist/squad/execution/index.js +7 -0
  128. package/dist/squad/execution/index.js.map +1 -0
  129. package/dist/squad/execution/instance.d.ts +40 -0
  130. package/dist/squad/execution/instance.d.ts.map +1 -0
  131. package/dist/squad/execution/instance.js +138 -0
  132. package/dist/squad/execution/instance.js.map +1 -0
  133. package/dist/squad/execution/meeting.d.ts +25 -0
  134. package/dist/squad/execution/meeting.d.ts.map +1 -0
  135. package/dist/squad/execution/meeting.js +140 -0
  136. package/dist/squad/execution/meeting.js.map +1 -0
  137. package/dist/squad/execution/pr.d.ts +15 -0
  138. package/dist/squad/execution/pr.d.ts.map +1 -0
  139. package/dist/squad/execution/pr.js +93 -0
  140. package/dist/squad/execution/pr.js.map +1 -0
  141. package/dist/squad/execution/runner.d.ts +22 -0
  142. package/dist/squad/execution/runner.d.ts.map +1 -0
  143. package/dist/squad/execution/runner.js +68 -0
  144. package/dist/squad/execution/runner.js.map +1 -0
  145. package/dist/squad/execution/tasks.d.ts +11 -0
  146. package/dist/squad/execution/tasks.d.ts.map +1 -0
  147. package/dist/squad/execution/tasks.js +85 -0
  148. package/dist/squad/execution/tasks.js.map +1 -0
  149. package/dist/squad/execution/worktree.d.ts +26 -0
  150. package/dist/squad/execution/worktree.d.ts.map +1 -0
  151. package/dist/squad/execution/worktree.js +111 -0
  152. package/dist/squad/execution/worktree.js.map +1 -0
  153. package/dist/squad/hiring.d.ts +32 -0
  154. package/dist/squad/hiring.d.ts.map +1 -0
  155. package/dist/squad/hiring.js +200 -0
  156. package/dist/squad/hiring.js.map +1 -0
  157. package/dist/squad/index.d.ts +8 -0
  158. package/dist/squad/index.d.ts.map +1 -0
  159. package/dist/squad/index.js +6 -0
  160. package/dist/squad/index.js.map +1 -0
  161. package/dist/squad/manager.d.ts +48 -0
  162. package/dist/squad/manager.d.ts.map +1 -0
  163. package/dist/squad/manager.js +274 -0
  164. package/dist/squad/manager.js.map +1 -0
  165. package/dist/squad/name-generator.d.ts +16 -0
  166. package/dist/squad/name-generator.d.ts.map +1 -0
  167. package/dist/squad/name-generator.js +113 -0
  168. package/dist/squad/name-generator.js.map +1 -0
  169. package/dist/squad/roles/templates.d.ts +5 -0
  170. package/dist/squad/roles/templates.d.ts.map +1 -0
  171. package/dist/squad/roles/templates.js +102 -0
  172. package/dist/squad/roles/templates.js.map +1 -0
  173. package/dist/squad/skill-parser.d.ts +36 -0
  174. package/dist/squad/skill-parser.d.ts.map +1 -0
  175. package/dist/squad/skill-parser.js +83 -0
  176. package/dist/squad/skill-parser.js.map +1 -0
  177. package/dist/squad/source-resolver.d.ts +20 -0
  178. package/dist/squad/source-resolver.d.ts.map +1 -0
  179. package/dist/squad/source-resolver.js +52 -0
  180. package/dist/squad/source-resolver.js.map +1 -0
  181. package/dist/store/activity.d.ts +43 -0
  182. package/dist/store/activity.d.ts.map +1 -0
  183. package/dist/store/activity.js +131 -0
  184. package/dist/store/activity.js.map +1 -0
  185. package/dist/store/db.d.ts +5 -0
  186. package/dist/store/db.d.ts.map +1 -0
  187. package/dist/store/db.js +209 -248
  188. package/dist/store/db.js.map +1 -0
  189. package/dist/store/inbox.d.ts +53 -0
  190. package/dist/store/inbox.d.ts.map +1 -0
  191. package/dist/store/inbox.js +151 -0
  192. package/dist/store/inbox.js.map +1 -0
  193. package/dist/store/schedules.d.ts +53 -0
  194. package/dist/store/schedules.d.ts.map +1 -0
  195. package/dist/store/schedules.js +149 -54
  196. package/dist/store/schedules.js.map +1 -0
  197. package/dist/wiki/index.d.ts +3 -0
  198. package/dist/wiki/index.d.ts.map +1 -0
  199. package/dist/wiki/index.js +2 -0
  200. package/dist/wiki/index.js.map +1 -0
  201. package/dist/wiki/store.d.ts +49 -0
  202. package/dist/wiki/store.d.ts.map +1 -0
  203. package/dist/wiki/store.js +115 -0
  204. package/dist/wiki/store.js.map +1 -0
  205. package/package.json +52 -59
  206. package/src/api/middleware/auth.ts +76 -0
  207. package/src/api/notifications.ts +122 -0
  208. package/src/api/routes/activity.ts +29 -0
  209. package/src/api/routes/attachments.ts +93 -0
  210. package/src/api/routes/config.ts +115 -0
  211. package/src/api/routes/conversations.ts +87 -0
  212. package/src/api/routes/health.ts +18 -0
  213. package/src/api/routes/inbox.ts +98 -0
  214. package/src/api/routes/schedules.ts +121 -0
  215. package/src/api/routes/skills.ts +105 -0
  216. package/src/api/routes/squads.ts +145 -0
  217. package/src/api/routes/usage.ts +57 -0
  218. package/src/api/routes/wiki.ts +49 -0
  219. package/src/api/server.ts +186 -0
  220. package/src/config.ts +3 -0
  221. package/src/copilot/client.ts +42 -0
  222. package/src/copilot/health-monitor.ts +85 -0
  223. package/src/copilot/orchestrator.ts +222 -0
  224. package/src/copilot/tools.ts +707 -0
  225. package/src/index.ts +112 -0
  226. package/src/logging/logger.ts +26 -0
  227. package/src/models/index.ts +11 -0
  228. package/src/models/pricing.ts +121 -0
  229. package/src/models/registry.ts +131 -0
  230. package/src/models/token-tracker.ts +151 -0
  231. package/src/scheduler/engine.ts +146 -0
  232. package/src/skills/index.ts +13 -0
  233. package/src/skills/store.ts +188 -0
  234. package/src/squad/agent.ts +326 -0
  235. package/src/squad/autonomy.ts +78 -0
  236. package/src/squad/event-bus.ts +71 -0
  237. package/src/squad/execution/index.ts +17 -0
  238. package/src/squad/execution/instance.ts +186 -0
  239. package/src/squad/execution/meeting.ts +191 -0
  240. package/src/squad/execution/pr.ts +127 -0
  241. package/src/squad/execution/runner.ts +97 -0
  242. package/src/squad/execution/tasks.ts +111 -0
  243. package/src/squad/execution/worktree.ts +138 -0
  244. package/src/squad/hiring.ts +222 -0
  245. package/src/squad/index.ts +17 -0
  246. package/src/squad/manager.ts +337 -0
  247. package/src/squad/name-generator.ts +135 -0
  248. package/src/squad/roles/templates.ts +104 -0
  249. package/src/squad/skill-parser.ts +120 -0
  250. package/src/squad/source-resolver.ts +57 -0
  251. package/src/store/activity.ts +176 -0
  252. package/src/store/db.ts +237 -0
  253. package/src/store/inbox.ts +199 -0
  254. package/src/store/schedules.ts +199 -0
  255. package/src/wiki/index.ts +12 -0
  256. package/src/wiki/store.ts +139 -0
  257. package/tsconfig.json +9 -0
  258. package/LICENSE +0 -21
  259. package/README.md +0 -333
  260. package/dist/api/auth.js +0 -46
  261. package/dist/chat/attachments.js +0 -112
  262. package/dist/copilot/agents.js +0 -309
  263. package/dist/copilot/ceremonies.js +0 -174
  264. package/dist/copilot/gh-token.js +0 -64
  265. package/dist/copilot/io-scheduler.js +0 -79
  266. package/dist/copilot/model-router.js +0 -114
  267. package/dist/copilot/scheduler.js +0 -88
  268. package/dist/copilot/skills.js +0 -252
  269. package/dist/copilot/specialist-runner.js +0 -191
  270. package/dist/copilot/squad-tools.js +0 -258
  271. package/dist/copilot/system-message.js +0 -86
  272. package/dist/copilot/token-tracker.js +0 -98
  273. package/dist/copilot/trigger-schedule.js +0 -33
  274. package/dist/daemon.js +0 -67
  275. package/dist/logging.js +0 -27
  276. package/dist/mcp/config.js +0 -29
  277. package/dist/mcp/index.js +0 -3
  278. package/dist/mcp/registry.js +0 -42
  279. package/dist/notify.js +0 -25
  280. package/dist/paths.js +0 -17
  281. package/dist/setup.js +0 -35
  282. package/dist/store/agent-events.js +0 -19
  283. package/dist/store/audit-log.js +0 -71
  284. package/dist/store/conversations.js +0 -164
  285. package/dist/store/feed.js +0 -44
  286. package/dist/store/instances.js +0 -75
  287. package/dist/store/squad-colors.js +0 -23
  288. package/dist/store/squads.js +0 -60
  289. package/dist/store/tasks.js +0 -78
  290. package/dist/store/token-usage.js +0 -94
  291. package/dist/telegram/bot.js +0 -41
  292. package/dist/telegram/handlers.js +0 -42
  293. package/dist/watchdog.js +0 -37
  294. package/dist/wiki/backlinks.js +0 -51
  295. package/dist/wiki/fs.js +0 -108
  296. package/dist/wiki/search.js +0 -47
  297. package/web-dist/assets/AuditLogView-BzfjNXBT.js +0 -6
  298. package/web-dist/assets/ChatView-BdMukPKG.js +0 -1
  299. package/web-dist/assets/FeedView-BfPIabGr.js +0 -6
  300. package/web-dist/assets/HistoryView-BmEEk3Rs.js +0 -1
  301. package/web-dist/assets/LoginView-D7LrkeX7.js +0 -1
  302. package/web-dist/assets/McpView-BAP_ah3T.js +0 -1
  303. package/web-dist/assets/SchedulesView-CAtsUPCZ.js +0 -6
  304. package/web-dist/assets/SettingsView-BovjWZDa.js +0 -1
  305. package/web-dist/assets/SkillsView-DQSMM5LN.js +0 -16
  306. package/web-dist/assets/SquadDetailView-DBscu0m2.js +0 -26
  307. package/web-dist/assets/SquadHealthView-D686BuQo.js +0 -11
  308. package/web-dist/assets/SquadsView-AzMht2NJ.js +0 -6
  309. package/web-dist/assets/ToggleSwitch.vue_vue_type_script_setup_true_lang-DtShZAjW.js +0 -1
  310. package/web-dist/assets/UsageView-DiVn97aI.js +0 -16
  311. package/web-dist/assets/WikiView-Cn7KipkZ.js +0 -26
  312. package/web-dist/assets/api-D4mHJ3u0.js +0 -1
  313. package/web-dist/assets/arrow-left-D_qUNUWW.js +0 -6
  314. package/web-dist/assets/git-branch-DOM-orcl.js +0 -6
  315. package/web-dist/assets/index-Bo83B1LR.css +0 -1
  316. package/web-dist/assets/index-ELvnkQjd.js +0 -273
  317. package/web-dist/assets/pencil-CFsi7ufI.js +0 -6
  318. package/web-dist/assets/plus-BAzlGFd_.js +0 -6
  319. package/web-dist/assets/save-BmgCYJ1g.js +0 -6
  320. package/web-dist/assets/search-CS9zSIeW.js +0 -6
  321. package/web-dist/assets/squad-colors-B8B_Y-lz.js +0 -1
  322. package/web-dist/assets/trash-2-DLveUEsd.js +0 -6
  323. package/web-dist/assets/triangle-alert-lj4I30rL.js +0 -6
  324. package/web-dist/assets/x-CjXR97Fa.js +0 -6
  325. package/web-dist/favicon.svg +0 -10
  326. package/web-dist/index.html +0 -14
  327. package/web-dist/logo.svg +0 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/store/inbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ export type ScheduleTargetType = 'squad' | 'orchestrator';
2
+ export interface Schedule {
3
+ id: string;
4
+ name: string;
5
+ targetType: ScheduleTargetType;
6
+ targetId: string | null;
7
+ cron: string;
8
+ prompt: string;
9
+ enabled: boolean;
10
+ lastRun: string | null;
11
+ nextRun: string | null;
12
+ createdAt: string;
13
+ }
14
+ /**
15
+ * Calculate the next run time from a cron expression.
16
+ */
17
+ export declare function calculateNextRun(cron: string, from?: Date): Date;
18
+ /**
19
+ * Create a new schedule.
20
+ */
21
+ export declare function createSchedule(params: {
22
+ name: string;
23
+ targetType: ScheduleTargetType;
24
+ targetId?: string;
25
+ cron: string;
26
+ prompt: string;
27
+ enabled?: boolean;
28
+ }): Promise<Schedule>;
29
+ /**
30
+ * List all schedules with optional enabled filter.
31
+ */
32
+ export declare function listSchedules(enabledOnly?: boolean): Promise<Schedule[]>;
33
+ /**
34
+ * Get a single schedule by ID.
35
+ */
36
+ export declare function getSchedule(id: string): Promise<Schedule | null>;
37
+ /**
38
+ * Update a schedule (partial update).
39
+ */
40
+ export declare function updateSchedule(id: string, updates: Partial<Pick<Schedule, 'name' | 'cron' | 'prompt' | 'enabled'>>): Promise<void>;
41
+ /**
42
+ * Delete a schedule.
43
+ */
44
+ export declare function deleteSchedule(id: string): Promise<void>;
45
+ /**
46
+ * Mark a schedule as fired (update last_run and next_run).
47
+ */
48
+ export declare function markScheduleFired(id: string, cron: string): Promise<void>;
49
+ /**
50
+ * Get all schedules that are due to fire (next_run <= now and enabled).
51
+ */
52
+ export declare function getDueSchedules(): Promise<Schedule[]>;
53
+ //# sourceMappingURL=schedules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedules.d.ts","sourceRoot":"","sources":["../../src/store/schedules.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,cAAc,CAAC;AAE1D,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,kBAAkB,CAAC;IAC/B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAGhE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,kBAAkB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmCpB;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAO9E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAKtE;AAED;;GAEG;AACH,wBAAsB,cAAc,CACnC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC,GACtE,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG9D;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS/E;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAQ3D"}
@@ -1,65 +1,160 @@
1
- import { randomUUID } from "node:crypto";
2
- import { getDb } from "./db.js";
3
- export function createSchedule(input) {
4
- const squadId = input.squad_id.trim();
5
- if (!squadId) {
6
- throw new Error("squad_id is required");
7
- }
8
- const db = getDb();
9
- const id = randomUUID();
10
- db.prepare(`INSERT INTO schedules (id, type, squad_id, cron, agenda, prompt)
11
- VALUES (?, ?, ?, ?, ?, ?)`).run(id, input.type, squadId, input.cron, input.agenda ?? "", input.prompt ?? "");
12
- return db.prepare("SELECT * FROM schedules WHERE id = ?").get(id);
13
- }
14
- export function getSchedule(id) {
15
- const db = getDb();
16
- return db.prepare("SELECT * FROM schedules WHERE id = ?").get(id);
1
+ import { CronExpressionParser } from 'cron-parser';
2
+ import { createChildLogger } from '../logging/logger.js';
3
+ import { getDatabase } from './db.js';
4
+ const logger = () => createChildLogger('schedules-store');
5
+ /**
6
+ * Calculate the next run time from a cron expression.
7
+ */
8
+ export function calculateNextRun(cron, from) {
9
+ const interval = CronExpressionParser.parse(cron, { currentDate: from ?? new Date() });
10
+ return interval.next().toDate();
17
11
  }
18
- export function listSchedules(type) {
19
- const db = getDb();
20
- if (type) {
21
- return db
22
- .prepare("SELECT * FROM schedules WHERE type = ? ORDER BY created_at")
23
- .all(type);
24
- }
25
- return db.prepare("SELECT * FROM schedules ORDER BY created_at").all();
12
+ /**
13
+ * Create a new schedule.
14
+ */
15
+ export async function createSchedule(params) {
16
+ const db = getDatabase();
17
+ const id = crypto.randomUUID();
18
+ const enabled = params.enabled ?? true;
19
+ const nextRun = enabled ? calculateNextRun(params.cron).toISOString() : null;
20
+ await db.execute({
21
+ sql: `INSERT INTO schedules (id, name, target_type, target_id, cron, prompt, enabled, next_run)
22
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)`,
23
+ args: [
24
+ id,
25
+ params.name,
26
+ params.targetType,
27
+ params.targetId ?? null,
28
+ params.cron,
29
+ params.prompt,
30
+ enabled ? 1 : 0,
31
+ nextRun,
32
+ ],
33
+ });
34
+ logger().info({ id, name: params.name, cron: params.cron }, 'Schedule created');
35
+ return {
36
+ id,
37
+ name: params.name,
38
+ targetType: params.targetType,
39
+ targetId: params.targetId ?? null,
40
+ cron: params.cron,
41
+ prompt: params.prompt,
42
+ enabled,
43
+ lastRun: null,
44
+ nextRun,
45
+ createdAt: new Date().toISOString(),
46
+ };
26
47
  }
27
- export function updateScheduleLastRun(id) {
28
- const db = getDb();
29
- db.prepare("UPDATE schedules SET last_run = datetime('now') WHERE id = ?").run(id);
48
+ /**
49
+ * List all schedules with optional enabled filter.
50
+ */
51
+ export async function listSchedules(enabledOnly) {
52
+ const db = getDatabase();
53
+ const sql = enabledOnly
54
+ ? 'SELECT * FROM schedules WHERE enabled = 1 ORDER BY next_run ASC'
55
+ : 'SELECT * FROM schedules ORDER BY created_at DESC';
56
+ const result = await db.execute(sql);
57
+ return result.rows.map(rowToSchedule);
30
58
  }
31
- export function toggleSchedule(id, enabled) {
32
- const db = getDb();
33
- db.prepare("UPDATE schedules SET enabled = ? WHERE id = ?").run(enabled ? 1 : 0, id);
59
+ /**
60
+ * Get a single schedule by ID.
61
+ */
62
+ export async function getSchedule(id) {
63
+ const db = getDatabase();
64
+ const result = await db.execute({ sql: 'SELECT * FROM schedules WHERE id = ?', args: [id] });
65
+ if (result.rows.length === 0)
66
+ return null;
67
+ return rowToSchedule(result.rows[0]);
34
68
  }
35
- export function updateSchedule(id, input) {
36
- const db = getDb();
37
- const fields = [];
38
- const params = [];
39
- if (input.cron !== undefined) {
40
- fields.push("cron = ?");
41
- params.push(input.cron);
42
- }
43
- if (input.agenda !== undefined) {
44
- fields.push("agenda = ?");
45
- params.push(input.agenda);
69
+ /**
70
+ * Update a schedule (partial update).
71
+ */
72
+ export async function updateSchedule(id, updates) {
73
+ const db = getDatabase();
74
+ const sets = [];
75
+ const args = [];
76
+ if (updates.name !== undefined) {
77
+ sets.push('name = ?');
78
+ args.push(updates.name);
46
79
  }
47
- if (input.prompt !== undefined) {
48
- fields.push("prompt = ?");
49
- params.push(input.prompt);
80
+ if (updates.cron !== undefined) {
81
+ sets.push('cron = ?');
82
+ args.push(updates.cron);
83
+ // Recalculate next_run
84
+ sets.push('next_run = ?');
85
+ args.push(calculateNextRun(updates.cron).toISOString());
50
86
  }
51
- if (input.enabled !== undefined) {
52
- fields.push("enabled = ?");
53
- params.push(input.enabled ? 1 : 0);
87
+ if (updates.prompt !== undefined) {
88
+ sets.push('prompt = ?');
89
+ args.push(updates.prompt);
54
90
  }
55
- if (fields.length > 0) {
56
- params.push(id);
57
- db.prepare(`UPDATE schedules SET ${fields.join(", ")} WHERE id = ?`).run(...params);
91
+ if (updates.enabled !== undefined) {
92
+ sets.push('enabled = ?');
93
+ args.push(updates.enabled ? 1 : 0);
94
+ if (updates.enabled && !updates.cron) {
95
+ // Need to recalculate next_run from existing cron
96
+ const existing = await getSchedule(id);
97
+ if (existing) {
98
+ sets.push('next_run = ?');
99
+ args.push(calculateNextRun(existing.cron).toISOString());
100
+ }
101
+ }
102
+ if (!updates.enabled) {
103
+ sets.push('next_run = ?');
104
+ args.push(null);
105
+ }
58
106
  }
59
- return db.prepare("SELECT * FROM schedules WHERE id = ?").get(id);
107
+ if (sets.length === 0)
108
+ return;
109
+ args.push(id);
110
+ await db.execute({
111
+ sql: `UPDATE schedules SET ${sets.join(', ')} WHERE id = ?`,
112
+ args,
113
+ });
114
+ }
115
+ /**
116
+ * Delete a schedule.
117
+ */
118
+ export async function deleteSchedule(id) {
119
+ const db = getDatabase();
120
+ await db.execute({ sql: 'DELETE FROM schedules WHERE id = ?', args: [id] });
121
+ }
122
+ /**
123
+ * Mark a schedule as fired (update last_run and next_run).
124
+ */
125
+ export async function markScheduleFired(id, cron) {
126
+ const db = getDatabase();
127
+ const now = new Date().toISOString();
128
+ const nextRun = calculateNextRun(cron).toISOString();
129
+ await db.execute({
130
+ sql: 'UPDATE schedules SET last_run = ?, next_run = ? WHERE id = ?',
131
+ args: [now, nextRun, id],
132
+ });
133
+ }
134
+ /**
135
+ * Get all schedules that are due to fire (next_run <= now and enabled).
136
+ */
137
+ export async function getDueSchedules() {
138
+ const db = getDatabase();
139
+ const now = new Date().toISOString();
140
+ const result = await db.execute({
141
+ sql: 'SELECT * FROM schedules WHERE enabled = 1 AND next_run IS NOT NULL AND next_run <= ?',
142
+ args: [now],
143
+ });
144
+ return result.rows.map(rowToSchedule);
60
145
  }
61
- export function deleteSchedule(id) {
62
- const db = getDb();
63
- db.prepare("DELETE FROM schedules WHERE id = ?").run(id);
146
+ function rowToSchedule(row) {
147
+ return {
148
+ id: row.id,
149
+ name: row.name,
150
+ targetType: row.target_type,
151
+ targetId: row.target_id,
152
+ cron: row.cron,
153
+ prompt: row.prompt,
154
+ enabled: row.enabled === 1,
155
+ lastRun: row.last_run,
156
+ nextRun: row.next_run,
157
+ createdAt: row.created_at,
158
+ };
64
159
  }
65
160
  //# sourceMappingURL=schedules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedules.js","sourceRoot":"","sources":["../../src/store/schedules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { initWiki, ensureSquadWiki, listWikiPages, readWikiPage, writeWikiPage, searchWiki, getSquadScopes, getOrchestratorScopes, getPageListing, } from './store.js';
2
+ export type { WikiScope, WikiPage, WikiSearchResult } from './store.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wiki/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,QAAQ,EACR,eAAe,EACf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,cAAc,GACd,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { initWiki, ensureSquadWiki, listWikiPages, readWikiPage, writeWikiPage, searchWiki, getSquadScopes, getOrchestratorScopes, getPageListing, } from './store.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wiki/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,QAAQ,EACR,eAAe,EACf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,cAAc,GACd,MAAM,YAAY,CAAC"}
@@ -0,0 +1,49 @@
1
+ export type WikiScope = 'io' | 'shared' | string;
2
+ export interface WikiPage {
3
+ scope: string;
4
+ name: string;
5
+ content: string;
6
+ }
7
+ export interface WikiSearchResult {
8
+ scope: string;
9
+ name: string;
10
+ matches: string[];
11
+ }
12
+ /**
13
+ * Initialize the wiki directory structure.
14
+ */
15
+ export declare function initWiki(dataDir: string): void;
16
+ /**
17
+ * Ensure a squad wiki folder exists.
18
+ */
19
+ export declare function ensureSquadWiki(squadName: string): void;
20
+ /**
21
+ * List all page names in a scope.
22
+ */
23
+ export declare function listWikiPages(scope: WikiScope): string[];
24
+ /**
25
+ * Read a wiki page. Returns null if it doesn't exist.
26
+ */
27
+ export declare function readWikiPage(scope: WikiScope, pageName: string): WikiPage | null;
28
+ /**
29
+ * Write (create or overwrite) a wiki page.
30
+ */
31
+ export declare function writeWikiPage(scope: WikiScope, pageName: string, content: string): WikiPage;
32
+ /**
33
+ * Search wiki pages by keyword across one or more scopes.
34
+ * Returns matching pages with context lines.
35
+ */
36
+ export declare function searchWiki(keyword: string, scopes: WikiScope[]): WikiSearchResult[];
37
+ /**
38
+ * Get accessible scopes for a squad agent.
39
+ */
40
+ export declare function getSquadScopes(squadName: string): WikiScope[];
41
+ /**
42
+ * Get accessible scopes for the orchestrator.
43
+ */
44
+ export declare function getOrchestratorScopes(): WikiScope[];
45
+ /**
46
+ * Get a summary of available pages for injection into system prompts.
47
+ */
48
+ export declare function getPageListing(scopes: WikiScope[]): string;
49
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/wiki/store.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB;AAID;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAM9C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAGvD;AAQD;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE,CAMxD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAKhF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,QAAQ,CAO3F;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,gBAAgB,EAAE,CAyBnF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,CAE7D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,SAAS,EAAE,CAEnD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAU1D"}
@@ -0,0 +1,115 @@
1
+ import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { createChildLogger } from '../logging/logger.js';
4
+ const logger = () => createChildLogger('wiki');
5
+ let wikiRoot = '';
6
+ /**
7
+ * Initialize the wiki directory structure.
8
+ */
9
+ export function initWiki(dataDir) {
10
+ wikiRoot = join(dataDir, 'wiki');
11
+ mkdirSync(join(wikiRoot, 'io'), { recursive: true });
12
+ mkdirSync(join(wikiRoot, 'shared'), { recursive: true });
13
+ mkdirSync(join(wikiRoot, 'squads'), { recursive: true });
14
+ logger().info({ wikiRoot }, 'Wiki initialized');
15
+ }
16
+ /**
17
+ * Ensure a squad wiki folder exists.
18
+ */
19
+ export function ensureSquadWiki(squadName) {
20
+ const dir = join(wikiRoot, 'squads', squadName);
21
+ mkdirSync(dir, { recursive: true });
22
+ }
23
+ function scopeDir(scope) {
24
+ if (scope === 'io')
25
+ return join(wikiRoot, 'io');
26
+ if (scope === 'shared')
27
+ return join(wikiRoot, 'shared');
28
+ return join(wikiRoot, 'squads', scope);
29
+ }
30
+ /**
31
+ * List all page names in a scope.
32
+ */
33
+ export function listWikiPages(scope) {
34
+ const dir = scopeDir(scope);
35
+ if (!existsSync(dir))
36
+ return [];
37
+ return readdirSync(dir)
38
+ .filter((f) => f.endsWith('.md'))
39
+ .map((f) => f.replace(/\.md$/, ''));
40
+ }
41
+ /**
42
+ * Read a wiki page. Returns null if it doesn't exist.
43
+ */
44
+ export function readWikiPage(scope, pageName) {
45
+ const filePath = join(scopeDir(scope), `${pageName}.md`);
46
+ if (!existsSync(filePath))
47
+ return null;
48
+ const content = readFileSync(filePath, 'utf-8');
49
+ return { scope, name: pageName, content };
50
+ }
51
+ /**
52
+ * Write (create or overwrite) a wiki page.
53
+ */
54
+ export function writeWikiPage(scope, pageName, content) {
55
+ const dir = scopeDir(scope);
56
+ mkdirSync(dir, { recursive: true });
57
+ const filePath = join(dir, `${pageName}.md`);
58
+ writeFileSync(filePath, content, 'utf-8');
59
+ logger().info({ scope, pageName }, 'Wiki page written');
60
+ return { scope, name: pageName, content };
61
+ }
62
+ /**
63
+ * Search wiki pages by keyword across one or more scopes.
64
+ * Returns matching pages with context lines.
65
+ */
66
+ export function searchWiki(keyword, scopes) {
67
+ const results = [];
68
+ const lower = keyword.toLowerCase();
69
+ for (const scope of scopes) {
70
+ const pages = listWikiPages(scope);
71
+ for (const pageName of pages) {
72
+ const page = readWikiPage(scope, pageName);
73
+ if (!page)
74
+ continue;
75
+ const lines = page.content.split('\n');
76
+ const matches = [];
77
+ for (const line of lines) {
78
+ if (line.toLowerCase().includes(lower)) {
79
+ matches.push(line.trim());
80
+ }
81
+ }
82
+ if (matches.length > 0) {
83
+ results.push({ scope, name: pageName, matches: matches.slice(0, 5) });
84
+ }
85
+ }
86
+ }
87
+ return results;
88
+ }
89
+ /**
90
+ * Get accessible scopes for a squad agent.
91
+ */
92
+ export function getSquadScopes(squadName) {
93
+ return ['shared', squadName];
94
+ }
95
+ /**
96
+ * Get accessible scopes for the orchestrator.
97
+ */
98
+ export function getOrchestratorScopes() {
99
+ return ['io', 'shared'];
100
+ }
101
+ /**
102
+ * Get a summary of available pages for injection into system prompts.
103
+ */
104
+ export function getPageListing(scopes) {
105
+ const sections = [];
106
+ for (const scope of scopes) {
107
+ const pages = listWikiPages(scope);
108
+ if (pages.length > 0) {
109
+ const label = scope === 'io' ? 'IO' : scope === 'shared' ? 'Shared' : `Squad (${scope})`;
110
+ sections.push(`${label}: ${pages.join(', ')}`);
111
+ }
112
+ }
113
+ return sections.length > 0 ? sections.join('\n') : '(no wiki pages yet)';
114
+ }
115
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/wiki/store.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,61 +1,54 @@
1
1
  {
2
- "name": "heyio",
3
- "version": "1.13.0",
4
- "description": "IO — a personal AI assistant daemon built on the GitHub Copilot SDK",
5
- "bin": {
6
- "io": "dist/index.js"
7
- },
8
- "files": [
9
- "dist/**/*.js",
10
- "web-dist/**/*",
11
- "README.md"
12
- ],
13
- "scripts": {
14
- "build": "tsc",
15
- "build:web": "cd web && npm install && npx vite build",
16
- "build:all": "npm run build && npm run build:web",
17
- "postinstall": "npm rebuild better-sqlite3",
18
- "daemon": "tsx src/daemon.ts",
19
- "dev": "tsx --watch src/daemon.ts",
20
- "prepublishOnly": "npm run build:all",
21
- "test": "node --import tsx --test 'src/**/*.test.ts' 'web/src/**/*.test.ts'",
22
- "test:coverage": "c8 node --import tsx --test 'src/**/*.test.ts' 'web/src/**/*.test.ts'",
23
- "coverage:check": "c8 report --reporter=text --reporter=text-summary --check-coverage --lines 40 --functions 35 --branches 60 --statements 40"
24
- },
25
- "engines": {
26
- "node": ">=22"
27
- },
28
- "type": "module",
29
- "keywords": [
30
- "copilot",
31
- "telegram",
32
- "orchestrator",
33
- "ai",
34
- "cli",
35
- "assistant"
36
- ],
37
- "author": "Michael Jolley",
38
- "license": "MIT",
39
- "repository": {
40
- "type": "git",
41
- "url": "git+https://github.com/michaeljolley/io.git"
42
- },
43
- "homepage": "https://github.com/michaeljolley/io#readme",
44
- "dependencies": {
45
- "@github/copilot-sdk": "^0.2.2",
46
- "@modelcontextprotocol/sdk": "^1.29.0",
47
- "better-sqlite3": "^12.6.2",
48
- "commander": "^14.0.0",
49
- "express": "^5.2.1",
50
- "grammy": "^1.40.0",
51
- "zod": "^4.3.6"
52
- },
53
- "devDependencies": {
54
- "@types/better-sqlite3": "^7.6.13",
55
- "@types/express": "^5.0.6",
56
- "@types/node": "^22.15.0",
57
- "c8": "^10.1.3",
58
- "tsx": "^4.21.0",
59
- "typescript": "^5.8.0"
60
- }
2
+ "name": "heyio",
3
+ "version": "3.0.0",
4
+ "description": "IO — a personal AI assistant built on the GitHub Copilot SDK",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "bin": {
8
+ "io": "./dist/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "dev": "tsx --watch src/index.ts",
13
+ "start": "node dist/index.js"
14
+ },
15
+ "engines": {
16
+ "node": ">=22"
17
+ },
18
+ "keywords": [
19
+ "copilot",
20
+ "telegram",
21
+ "orchestrator",
22
+ "ai",
23
+ "cli",
24
+ "assistant"
25
+ ],
26
+ "author": "Michael Jolley",
27
+ "license": "MIT",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/michaeljolley/io.git"
31
+ },
32
+ "homepage": "https://github.com/michaeljolley/io#readme",
33
+ "dependencies": {
34
+ "@github/copilot-sdk": "^1.0.0-beta.9",
35
+ "@io/shared": "*",
36
+ "@libsql/client": "^0.14.0",
37
+ "cron-parser": "^5.5.0",
38
+ "express": "^5.1.0",
39
+ "gray-matter": "^4.0.3",
40
+ "jsonwebtoken": "^9.0.3",
41
+ "multer": "^2.1.1",
42
+ "pino": "^9.6.0",
43
+ "ws": "^8.18.0",
44
+ "zod": "^4.4.3"
45
+ },
46
+ "devDependencies": {
47
+ "@types/express": "^5.0.0",
48
+ "@types/jsonwebtoken": "^9.0.10",
49
+ "@types/multer": "^2.1.0",
50
+ "@types/ws": "^8.5.13",
51
+ "pino-pretty": "^13.1.3",
52
+ "tsx": "^4.19.0"
53
+ }
61
54
  }