hungry-ghost-hive 0.12.0 → 0.13.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 (240) hide show
  1. package/README.md +59 -2
  2. package/dist/db/dao/__tests__/agent.sqlite-dao.test.d.ts +2 -0
  3. package/dist/db/dao/__tests__/agent.sqlite-dao.test.d.ts.map +1 -0
  4. package/dist/db/dao/__tests__/agent.sqlite-dao.test.js +133 -0
  5. package/dist/db/dao/__tests__/agent.sqlite-dao.test.js.map +1 -0
  6. package/dist/db/dao/__tests__/dao-broader.sqlite-dao.test.d.ts +2 -0
  7. package/dist/db/dao/__tests__/dao-broader.sqlite-dao.test.d.ts.map +1 -0
  8. package/dist/db/dao/__tests__/dao-broader.sqlite-dao.test.js +409 -0
  9. package/dist/db/dao/__tests__/dao-broader.sqlite-dao.test.js.map +1 -0
  10. package/dist/db/dao/__tests__/dao-interface.sqlite-dao.test.d.ts +2 -0
  11. package/dist/db/dao/__tests__/dao-interface.sqlite-dao.test.d.ts.map +1 -0
  12. package/dist/db/dao/__tests__/dao-interface.sqlite-dao.test.js +145 -0
  13. package/dist/db/dao/__tests__/dao-interface.sqlite-dao.test.js.map +1 -0
  14. package/dist/db/dao/__tests__/edge-cases.sqlite-dao.test.d.ts +2 -0
  15. package/dist/db/dao/__tests__/edge-cases.sqlite-dao.test.d.ts.map +1 -0
  16. package/dist/db/dao/__tests__/edge-cases.sqlite-dao.test.js +283 -0
  17. package/dist/db/dao/__tests__/edge-cases.sqlite-dao.test.js.map +1 -0
  18. package/dist/db/dao/__tests__/escalation.sqlite-dao.test.d.ts +2 -0
  19. package/dist/db/dao/__tests__/escalation.sqlite-dao.test.d.ts.map +1 -0
  20. package/dist/db/dao/__tests__/escalation.sqlite-dao.test.js +156 -0
  21. package/dist/db/dao/__tests__/escalation.sqlite-dao.test.js.map +1 -0
  22. package/dist/db/dao/__tests__/helpers.d.ts +6 -0
  23. package/dist/db/dao/__tests__/helpers.d.ts.map +1 -0
  24. package/dist/db/dao/__tests__/helpers.js +150 -0
  25. package/dist/db/dao/__tests__/helpers.js.map +1 -0
  26. package/dist/db/dao/__tests__/hive-dao.test.d.ts +2 -0
  27. package/dist/db/dao/__tests__/hive-dao.test.d.ts.map +1 -0
  28. package/dist/db/dao/__tests__/hive-dao.test.js +110 -0
  29. package/dist/db/dao/__tests__/hive-dao.test.js.map +1 -0
  30. package/dist/db/dao/__tests__/leveldb-dao.test.d.ts +2 -0
  31. package/dist/db/dao/__tests__/leveldb-dao.test.d.ts.map +1 -0
  32. package/dist/db/dao/__tests__/leveldb-dao.test.js +152 -0
  33. package/dist/db/dao/__tests__/leveldb-dao.test.js.map +1 -0
  34. package/dist/db/dao/__tests__/leveldb-helpers.d.ts +7 -0
  35. package/dist/db/dao/__tests__/leveldb-helpers.d.ts.map +1 -0
  36. package/dist/db/dao/__tests__/leveldb-helpers.js +17 -0
  37. package/dist/db/dao/__tests__/leveldb-helpers.js.map +1 -0
  38. package/dist/db/dao/__tests__/log.sqlite-dao.test.d.ts +2 -0
  39. package/dist/db/dao/__tests__/log.sqlite-dao.test.d.ts.map +1 -0
  40. package/dist/db/dao/__tests__/log.sqlite-dao.test.js +148 -0
  41. package/dist/db/dao/__tests__/log.sqlite-dao.test.js.map +1 -0
  42. package/dist/db/dao/__tests__/message.sqlite-dao.test.d.ts +2 -0
  43. package/dist/db/dao/__tests__/message.sqlite-dao.test.d.ts.map +1 -0
  44. package/dist/db/dao/__tests__/message.sqlite-dao.test.js +77 -0
  45. package/dist/db/dao/__tests__/message.sqlite-dao.test.js.map +1 -0
  46. package/dist/db/dao/__tests__/pull-request.sqlite-dao.test.d.ts +2 -0
  47. package/dist/db/dao/__tests__/pull-request.sqlite-dao.test.d.ts.map +1 -0
  48. package/dist/db/dao/__tests__/pull-request.sqlite-dao.test.js +149 -0
  49. package/dist/db/dao/__tests__/pull-request.sqlite-dao.test.js.map +1 -0
  50. package/dist/db/dao/__tests__/requirement.sqlite-dao.test.d.ts +2 -0
  51. package/dist/db/dao/__tests__/requirement.sqlite-dao.test.d.ts.map +1 -0
  52. package/dist/db/dao/__tests__/requirement.sqlite-dao.test.js +98 -0
  53. package/dist/db/dao/__tests__/requirement.sqlite-dao.test.js.map +1 -0
  54. package/dist/db/dao/__tests__/story.sqlite-dao.test.d.ts +2 -0
  55. package/dist/db/dao/__tests__/story.sqlite-dao.test.d.ts.map +1 -0
  56. package/dist/db/dao/__tests__/story.sqlite-dao.test.js +234 -0
  57. package/dist/db/dao/__tests__/story.sqlite-dao.test.js.map +1 -0
  58. package/dist/db/dao/__tests__/team.sqlite-dao.test.d.ts +2 -0
  59. package/dist/db/dao/__tests__/team.sqlite-dao.test.d.ts.map +1 -0
  60. package/dist/db/dao/__tests__/team.sqlite-dao.test.js +73 -0
  61. package/dist/db/dao/__tests__/team.sqlite-dao.test.js.map +1 -0
  62. package/dist/db/dao/hive-dao.d.ts +21 -0
  63. package/dist/db/dao/hive-dao.d.ts.map +1 -0
  64. package/dist/db/dao/hive-dao.js +21 -0
  65. package/dist/db/dao/hive-dao.js.map +1 -0
  66. package/dist/db/dao/index.d.ts +14 -0
  67. package/dist/db/dao/index.d.ts.map +1 -0
  68. package/dist/db/dao/index.js +7 -0
  69. package/dist/db/dao/index.js.map +1 -0
  70. package/dist/db/dao/interfaces/agent.dao.d.ts +27 -0
  71. package/dist/db/dao/interfaces/agent.dao.d.ts.map +1 -0
  72. package/dist/db/dao/interfaces/agent.dao.js +2 -0
  73. package/dist/db/dao/interfaces/agent.dao.js.map +1 -0
  74. package/dist/db/dao/interfaces/escalation.dao.d.ts +19 -0
  75. package/dist/db/dao/interfaces/escalation.dao.d.ts.map +1 -0
  76. package/dist/db/dao/interfaces/escalation.dao.js +2 -0
  77. package/dist/db/dao/interfaces/escalation.dao.js.map +1 -0
  78. package/dist/db/dao/interfaces/index.d.ts +17 -0
  79. package/dist/db/dao/interfaces/index.d.ts.map +1 -0
  80. package/dist/db/dao/interfaces/index.js +2 -0
  81. package/dist/db/dao/interfaces/index.js.map +1 -0
  82. package/dist/db/dao/interfaces/log.dao.d.ts +14 -0
  83. package/dist/db/dao/interfaces/log.dao.d.ts.map +1 -0
  84. package/dist/db/dao/interfaces/log.dao.js +2 -0
  85. package/dist/db/dao/interfaces/log.dao.js.map +1 -0
  86. package/dist/db/dao/interfaces/message.dao.d.ts +9 -0
  87. package/dist/db/dao/interfaces/message.dao.d.ts.map +1 -0
  88. package/dist/db/dao/interfaces/message.dao.js +2 -0
  89. package/dist/db/dao/interfaces/message.dao.js.map +1 -0
  90. package/dist/db/dao/interfaces/pull-request.dao.d.ts +19 -0
  91. package/dist/db/dao/interfaces/pull-request.dao.d.ts.map +1 -0
  92. package/dist/db/dao/interfaces/pull-request.dao.js +2 -0
  93. package/dist/db/dao/interfaces/pull-request.dao.js.map +1 -0
  94. package/dist/db/dao/interfaces/requirement.dao.d.ts +13 -0
  95. package/dist/db/dao/interfaces/requirement.dao.d.ts.map +1 -0
  96. package/dist/db/dao/interfaces/requirement.dao.js +2 -0
  97. package/dist/db/dao/interfaces/requirement.dao.js.map +1 -0
  98. package/dist/db/dao/interfaces/story.dao.d.ts +29 -0
  99. package/dist/db/dao/interfaces/story.dao.d.ts.map +1 -0
  100. package/dist/db/dao/interfaces/story.dao.js +2 -0
  101. package/dist/db/dao/interfaces/story.dao.js.map +1 -0
  102. package/dist/db/dao/interfaces/team.dao.d.ts +11 -0
  103. package/dist/db/dao/interfaces/team.dao.d.ts.map +1 -0
  104. package/dist/db/dao/interfaces/team.dao.js +2 -0
  105. package/dist/db/dao/interfaces/team.dao.js.map +1 -0
  106. package/dist/db/dao/leveldb/agent.leveldb-dao.d.ts +23 -0
  107. package/dist/db/dao/leveldb/agent.leveldb-dao.d.ts.map +1 -0
  108. package/dist/db/dao/leveldb/agent.leveldb-dao.js +163 -0
  109. package/dist/db/dao/leveldb/agent.leveldb-dao.js.map +1 -0
  110. package/dist/db/dao/leveldb/escalation.leveldb-dao.d.ts +22 -0
  111. package/dist/db/dao/leveldb/escalation.leveldb-dao.d.ts.map +1 -0
  112. package/dist/db/dao/leveldb/escalation.leveldb-dao.js +99 -0
  113. package/dist/db/dao/leveldb/escalation.leveldb-dao.js.map +1 -0
  114. package/dist/db/dao/leveldb/hive-dao.d.ts +8 -0
  115. package/dist/db/dao/leveldb/hive-dao.d.ts.map +1 -0
  116. package/dist/db/dao/leveldb/hive-dao.js +24 -0
  117. package/dist/db/dao/leveldb/hive-dao.js.map +1 -0
  118. package/dist/db/dao/leveldb/index.d.ts +11 -0
  119. package/dist/db/dao/leveldb/index.d.ts.map +1 -0
  120. package/dist/db/dao/leveldb/index.js +10 -0
  121. package/dist/db/dao/leveldb/index.js.map +1 -0
  122. package/dist/db/dao/leveldb/leveldb-store.d.ts +17 -0
  123. package/dist/db/dao/leveldb/leveldb-store.d.ts.map +1 -0
  124. package/dist/db/dao/leveldb/leveldb-store.js +44 -0
  125. package/dist/db/dao/leveldb/leveldb-store.js.map +1 -0
  126. package/dist/db/dao/leveldb/log.leveldb-dao.d.ts +17 -0
  127. package/dist/db/dao/leveldb/log.leveldb-dao.d.ts.map +1 -0
  128. package/dist/db/dao/leveldb/log.leveldb-dao.js +71 -0
  129. package/dist/db/dao/leveldb/log.leveldb-dao.js.map +1 -0
  130. package/dist/db/dao/leveldb/message.leveldb-dao.d.ts +12 -0
  131. package/dist/db/dao/leveldb/message.leveldb-dao.d.ts.map +1 -0
  132. package/dist/db/dao/leveldb/message.leveldb-dao.js +34 -0
  133. package/dist/db/dao/leveldb/message.leveldb-dao.js.map +1 -0
  134. package/dist/db/dao/leveldb/pull-request.leveldb-dao.d.ts +22 -0
  135. package/dist/db/dao/leveldb/pull-request.leveldb-dao.d.ts.map +1 -0
  136. package/dist/db/dao/leveldb/pull-request.leveldb-dao.js +116 -0
  137. package/dist/db/dao/leveldb/pull-request.leveldb-dao.js.map +1 -0
  138. package/dist/db/dao/leveldb/requirement.leveldb-dao.d.ts +16 -0
  139. package/dist/db/dao/leveldb/requirement.leveldb-dao.d.ts.map +1 -0
  140. package/dist/db/dao/leveldb/requirement.leveldb-dao.js +68 -0
  141. package/dist/db/dao/leveldb/requirement.leveldb-dao.js.map +1 -0
  142. package/dist/db/dao/leveldb/sort.d.ts +23 -0
  143. package/dist/db/dao/leveldb/sort.d.ts.map +1 -0
  144. package/dist/db/dao/leveldb/sort.js +25 -0
  145. package/dist/db/dao/leveldb/sort.js.map +1 -0
  146. package/dist/db/dao/leveldb/story.leveldb-dao.d.ts +32 -0
  147. package/dist/db/dao/leveldb/story.leveldb-dao.d.ts.map +1 -0
  148. package/dist/db/dao/leveldb/story.leveldb-dao.js +212 -0
  149. package/dist/db/dao/leveldb/story.leveldb-dao.js.map +1 -0
  150. package/dist/db/dao/leveldb/team.leveldb-dao.d.ts +14 -0
  151. package/dist/db/dao/leveldb/team.leveldb-dao.d.ts.map +1 -0
  152. package/dist/db/dao/leveldb/team.leveldb-dao.js +44 -0
  153. package/dist/db/dao/leveldb/team.leveldb-dao.js.map +1 -0
  154. package/dist/db/dao/sqlite/agent.sqlite-dao.d.ts +22 -0
  155. package/dist/db/dao/sqlite/agent.sqlite-dao.d.ts.map +1 -0
  156. package/dist/db/dao/sqlite/agent.sqlite-dao.js +131 -0
  157. package/dist/db/dao/sqlite/agent.sqlite-dao.js.map +1 -0
  158. package/dist/db/dao/sqlite/escalation.sqlite-dao.d.ts +21 -0
  159. package/dist/db/dao/sqlite/escalation.sqlite-dao.d.ts.map +1 -0
  160. package/dist/db/dao/sqlite/escalation.sqlite-dao.js +111 -0
  161. package/dist/db/dao/sqlite/escalation.sqlite-dao.js.map +1 -0
  162. package/dist/db/dao/sqlite/index.d.ts +9 -0
  163. package/dist/db/dao/sqlite/index.d.ts.map +1 -0
  164. package/dist/db/dao/sqlite/index.js +9 -0
  165. package/dist/db/dao/sqlite/index.js.map +1 -0
  166. package/dist/db/dao/sqlite/log.sqlite-dao.d.ts +16 -0
  167. package/dist/db/dao/sqlite/log.sqlite-dao.d.ts.map +1 -0
  168. package/dist/db/dao/sqlite/log.sqlite-dao.js +76 -0
  169. package/dist/db/dao/sqlite/log.sqlite-dao.js.map +1 -0
  170. package/dist/db/dao/sqlite/message.sqlite-dao.d.ts +12 -0
  171. package/dist/db/dao/sqlite/message.sqlite-dao.d.ts.map +1 -0
  172. package/dist/db/dao/sqlite/message.sqlite-dao.js +28 -0
  173. package/dist/db/dao/sqlite/message.sqlite-dao.js.map +1 -0
  174. package/dist/db/dao/sqlite/pull-request.sqlite-dao.d.ts +21 -0
  175. package/dist/db/dao/sqlite/pull-request.sqlite-dao.d.ts.map +1 -0
  176. package/dist/db/dao/sqlite/pull-request.sqlite-dao.js +135 -0
  177. package/dist/db/dao/sqlite/pull-request.sqlite-dao.js.map +1 -0
  178. package/dist/db/dao/sqlite/requirement.sqlite-dao.d.ts +15 -0
  179. package/dist/db/dao/sqlite/requirement.sqlite-dao.d.ts.map +1 -0
  180. package/dist/db/dao/sqlite/requirement.sqlite-dao.js +59 -0
  181. package/dist/db/dao/sqlite/requirement.sqlite-dao.js.map +1 -0
  182. package/dist/db/dao/sqlite/story.sqlite-dao.d.ts +31 -0
  183. package/dist/db/dao/sqlite/story.sqlite-dao.d.ts.map +1 -0
  184. package/dist/db/dao/sqlite/story.sqlite-dao.js +185 -0
  185. package/dist/db/dao/sqlite/story.sqlite-dao.js.map +1 -0
  186. package/dist/db/dao/sqlite/team.sqlite-dao.d.ts +13 -0
  187. package/dist/db/dao/sqlite/team.sqlite-dao.d.ts.map +1 -0
  188. package/dist/db/dao/sqlite/team.sqlite-dao.js +30 -0
  189. package/dist/db/dao/sqlite/team.sqlite-dao.js.map +1 -0
  190. package/dist/db/queries/requirements.js +3 -3
  191. package/dist/db/queries/requirements.js.map +1 -1
  192. package/package.json +2 -1
  193. package/src/db/dao/__tests__/agent.sqlite-dao.test.ts +164 -0
  194. package/src/db/dao/__tests__/dao-broader.sqlite-dao.test.ts +542 -0
  195. package/src/db/dao/__tests__/dao-interface.sqlite-dao.test.ts +177 -0
  196. package/src/db/dao/__tests__/edge-cases.sqlite-dao.test.ts +329 -0
  197. package/src/db/dao/__tests__/escalation.sqlite-dao.test.ts +193 -0
  198. package/src/db/dao/__tests__/helpers.ts +164 -0
  199. package/src/db/dao/__tests__/hive-dao.test.ts +136 -0
  200. package/src/db/dao/__tests__/leveldb-dao.test.ts +182 -0
  201. package/src/db/dao/__tests__/leveldb-helpers.ts +23 -0
  202. package/src/db/dao/__tests__/log.sqlite-dao.test.ts +186 -0
  203. package/src/db/dao/__tests__/message.sqlite-dao.test.ts +98 -0
  204. package/src/db/dao/__tests__/pull-request.sqlite-dao.test.ts +185 -0
  205. package/src/db/dao/__tests__/requirement.sqlite-dao.test.ts +120 -0
  206. package/src/db/dao/__tests__/story.sqlite-dao.test.ts +289 -0
  207. package/src/db/dao/__tests__/team.sqlite-dao.test.ts +89 -0
  208. package/src/db/dao/hive-dao.ts +41 -0
  209. package/src/db/dao/index.ts +39 -0
  210. package/src/db/dao/interfaces/agent.dao.ts +30 -0
  211. package/src/db/dao/interfaces/escalation.dao.ts +20 -0
  212. package/src/db/dao/interfaces/index.ts +18 -0
  213. package/src/db/dao/interfaces/log.dao.ts +15 -0
  214. package/src/db/dao/interfaces/message.dao.ts +10 -0
  215. package/src/db/dao/interfaces/pull-request.dao.ts +20 -0
  216. package/src/db/dao/interfaces/requirement.dao.ts +14 -0
  217. package/src/db/dao/interfaces/story.dao.ts +27 -0
  218. package/src/db/dao/interfaces/team.dao.ts +12 -0
  219. package/src/db/dao/leveldb/agent.leveldb-dao.ts +179 -0
  220. package/src/db/dao/leveldb/escalation.leveldb-dao.ts +117 -0
  221. package/src/db/dao/leveldb/hive-dao.ts +31 -0
  222. package/src/db/dao/leveldb/index.ts +10 -0
  223. package/src/db/dao/leveldb/leveldb-store.ts +52 -0
  224. package/src/db/dao/leveldb/log.leveldb-dao.ts +85 -0
  225. package/src/db/dao/leveldb/message.leveldb-dao.ts +38 -0
  226. package/src/db/dao/leveldb/pull-request.leveldb-dao.ts +132 -0
  227. package/src/db/dao/leveldb/requirement.leveldb-dao.ts +79 -0
  228. package/src/db/dao/leveldb/sort.ts +23 -0
  229. package/src/db/dao/leveldb/story.leveldb-dao.ts +234 -0
  230. package/src/db/dao/leveldb/team.leveldb-dao.ts +52 -0
  231. package/src/db/dao/sqlite/agent.sqlite-dao.ts +159 -0
  232. package/src/db/dao/sqlite/escalation.sqlite-dao.ts +129 -0
  233. package/src/db/dao/sqlite/index.ts +8 -0
  234. package/src/db/dao/sqlite/log.sqlite-dao.ts +89 -0
  235. package/src/db/dao/sqlite/message.sqlite-dao.ts +32 -0
  236. package/src/db/dao/sqlite/pull-request.sqlite-dao.ts +153 -0
  237. package/src/db/dao/sqlite/requirement.sqlite-dao.ts +71 -0
  238. package/src/db/dao/sqlite/story.sqlite-dao.ts +216 -0
  239. package/src/db/dao/sqlite/team.sqlite-dao.ts +37 -0
  240. package/src/db/queries/requirements.ts +3 -3
package/README.md CHANGED
@@ -3,13 +3,25 @@
3
3
  [![CI](https://img.shields.io/github/actions/workflow/status/nikrich/hungry-ghost-hive/ci.yml?branch=main&style=flat-square)](https://github.com/nikrich/hungry-ghost-hive/actions/workflows/ci.yml)
4
4
  [![npm](https://img.shields.io/npm/v/hungry-ghost-hive?style=flat-square)](https://www.npmjs.com/package/hungry-ghost-hive)
5
5
  [![Node.js](https://img.shields.io/badge/node-%3E%3D18-brightgreen?style=flat-square)](https://nodejs.org/)
6
- [![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](LICENSE)
6
+ [![License](https://img.shields.io/badge/license-Proprietary-blue?style=flat-square)](LICENSE)
7
7
  [![TypeScript](https://img.shields.io/badge/language-TypeScript-blue?style=flat-square)](https://www.typescriptlang.org/)
8
+ [![Codecov](https://img.shields.io/codecov/c/github/nikrich/hungry-ghost-hive?style=flat-square)](https://codecov.io/gh/nikrich/hungry-ghost-hive)
8
9
 
9
10
  <img width="1263" height="651" alt="image" src="https://github.com/user-attachments/assets/76eb8bd9-d5ec-45b7-9ee2-b7ef910f3e88" />
10
11
 
11
12
  Hive is a CLI tool that orchestrates AI agents modeled after agile software development teams. You act as the **Product Owner**, providing requirements. Hive's AI agents handle the rest—from planning through to PR submission.
12
13
 
14
+ ## Key Features
15
+
16
+ - **AI-Powered Team Management**: Orchestrate autonomous teams of AI agents across multiple repositories
17
+ - **Agile Workflow**: Natural hierarchy mirrors real development teams with Tech Lead, Seniors, Intermediates, and Juniors
18
+ - **Requirement to PR Automation**: From initial requirements to merged pull requests, fully automated
19
+ - **Intelligent Task Distribution**: Stories automatically routed to appropriate skill levels (Junior, Intermediate, Senior)
20
+ - **Real-Time Dashboard**: Monitor team progress and agent activity with an interactive TUI dashboard
21
+ - **Multi-Repository Support**: Manage related services and libraries as coordinated git submodules
22
+ - **Escalation Handling**: Built-in escalation protocol when agents need guidance or hit blockers
23
+ - **PR Merge Queue**: Automated QA checks and merge queue management for production readiness
24
+
13
25
  ## Installation
14
26
 
15
27
  ### Via npm (Recommended)
@@ -347,6 +359,51 @@ tmux attach -t hive-senior-alpha # Attach to see what agent is doing
347
359
  hive nuke --all # WARNING: Deletes all data
348
360
  ```
349
361
 
362
+ ## Code Quality
363
+
364
+ Hive is built with production-grade quality standards:
365
+
366
+ - **Comprehensive Testing**: 431+ test cases with automated test execution
367
+ - **Strict TypeScript**: Full type safety with no implicit any
368
+ - **Code Linting**: ESLint configuration enforces consistent code style
369
+ - **Conventional Commits**: Commit messages follow the conventional commits specification for automatic changelog generation
370
+ - **Automated Releases**: Release Please integration for semantic versioning and automated npm publishing
371
+
372
+ ## Contributing
373
+
374
+ We welcome contributions! Here's how to get started:
375
+
376
+ ### Development Setup
377
+
378
+ 1. **Clone and Install**:
379
+ ```bash
380
+ git clone https://github.com/nikrich/hungry-ghost-hive.git
381
+ cd hungry-ghost-hive
382
+ npm ci
383
+ ```
384
+
385
+ 2. **Run Tests**:
386
+ ```bash
387
+ npm test # Run all tests
388
+ npm run test:watch # Watch mode
389
+ ```
390
+
391
+ 3. **Build and Lint**:
392
+ ```bash
393
+ npm run build # Build the project
394
+ npm run lint # Check code style
395
+ npm run type-check # TypeScript type checking
396
+ ```
397
+
398
+ ### Pull Request Guidelines
399
+
400
+ - Create a feature branch: `git checkout -b feature/your-feature-name`
401
+ - Follow the existing code style and patterns
402
+ - Add or update tests for your changes
403
+ - Run linting and tests before committing: `npm run lint && npm test`
404
+ - Use conventional commit messages (e.g., `feat:`, `fix:`, `docs:`, `test:`, `refactor:`)
405
+ - Submit a pull request with a clear description of your changes
406
+
350
407
  ## Environment Variables
351
408
 
352
409
  ```bash
@@ -391,4 +448,4 @@ git status # MUST show "up to date with origin"
391
448
 
392
449
  ## License
393
450
 
394
- MIT
451
+ See [LICENSE](LICENSE) file for details. This project uses a proprietary Hungry Ghost Hive License.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=agent.sqlite-dao.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.sqlite-dao.test.d.ts","sourceRoot":"","sources":["../../../../src/db/dao/__tests__/agent.sqlite-dao.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,133 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
+ import { createTestDb } from './helpers.js';
3
+ import { SqliteAgentDao } from '../sqlite/agent.sqlite-dao.js';
4
+ import { SqliteTeamDao } from '../sqlite/team.sqlite-dao.js';
5
+ describe('SqliteAgentDao', () => {
6
+ let db;
7
+ let dao;
8
+ let teamDao;
9
+ let teamId;
10
+ beforeEach(async () => {
11
+ db = await createTestDb();
12
+ dao = new SqliteAgentDao(db);
13
+ teamDao = new SqliteTeamDao(db);
14
+ const team = await teamDao.createTeam({ repoUrl: 'url', repoPath: '/p', name: 'Team' });
15
+ teamId = team.id;
16
+ });
17
+ afterEach(() => {
18
+ db.close();
19
+ });
20
+ it('agent.sqlite-dao case 1', async () => {
21
+ const agent = await dao.createAgent({ type: 'senior', teamId });
22
+ expect(agent.id).toMatch(/^senior-/);
23
+ expect(agent.type).toBe('senior');
24
+ expect(agent.team_id).toBe(teamId);
25
+ expect(agent.status).toBe('idle');
26
+ });
27
+ it('agent.sqlite-dao case 2', async () => {
28
+ const agent = await dao.createAgent({ type: 'tech_lead', teamId });
29
+ expect(agent.id).toBe('tech-lead');
30
+ expect(agent.type).toBe('tech_lead');
31
+ });
32
+ it('agent.sqlite-dao case 3', async () => {
33
+ const created = await dao.createAgent({ type: 'junior', teamId });
34
+ const found = await dao.getAgentById(created.id);
35
+ expect(found).toEqual(created);
36
+ });
37
+ it('agent.sqlite-dao case 4', async () => {
38
+ expect(await dao.getAgentById('nonexistent')).toBeUndefined();
39
+ });
40
+ it('agent.sqlite-dao case 5', async () => {
41
+ await dao.createAgent({ type: 'senior', teamId });
42
+ await dao.createAgent({ type: 'junior', teamId });
43
+ const team2 = await teamDao.createTeam({ repoUrl: 'url2', repoPath: '/p2', name: 'Team2' });
44
+ await dao.createAgent({ type: 'qa', teamId: team2.id });
45
+ const agents = await dao.getAgentsByTeam(teamId);
46
+ expect(agents).toHaveLength(2);
47
+ });
48
+ it('agent.sqlite-dao case 6', async () => {
49
+ await dao.createAgent({ type: 'senior', teamId });
50
+ await dao.createAgent({ type: 'senior', teamId });
51
+ await dao.createAgent({ type: 'junior', teamId });
52
+ const seniors = await dao.getAgentsByType('senior');
53
+ expect(seniors).toHaveLength(2);
54
+ });
55
+ it('agent.sqlite-dao case 7', async () => {
56
+ const agent = await dao.createAgent({ type: 'senior', teamId });
57
+ await dao.updateAgent(agent.id, { status: 'working' });
58
+ const working = await dao.getAgentsByStatus('working');
59
+ expect(working).toHaveLength(1);
60
+ expect(working[0].id).toBe(agent.id);
61
+ });
62
+ it('agent.sqlite-dao case 8', async () => {
63
+ await dao.createAgent({ type: 'senior', teamId });
64
+ await dao.createAgent({ type: 'junior', teamId });
65
+ const all = await dao.getAllAgents();
66
+ expect(all).toHaveLength(2);
67
+ });
68
+ it('agent.sqlite-dao case 9', async () => {
69
+ const a1 = await dao.createAgent({ type: 'senior', teamId });
70
+ await dao.createAgent({ type: 'junior', teamId });
71
+ await dao.terminateAgent(a1.id);
72
+ const active = await dao.getActiveAgents();
73
+ expect(active).toHaveLength(1);
74
+ expect(active[0].status).not.toBe('terminated');
75
+ });
76
+ it('agent.sqlite-dao case 10', async () => {
77
+ await dao.createAgent({ type: 'tech_lead', teamId });
78
+ await dao.createAgent({ type: 'senior', teamId });
79
+ const tl = await dao.getTechLead();
80
+ expect(tl).toBeDefined();
81
+ expect(tl.type).toBe('tech_lead');
82
+ });
83
+ it('agent.sqlite-dao case 11', async () => {
84
+ expect(await dao.getTechLead()).toBeUndefined();
85
+ });
86
+ it('agent.sqlite-dao case 12', async () => {
87
+ const agent = await dao.createAgent({ type: 'senior', teamId });
88
+ const updated = await dao.updateAgent(agent.id, {
89
+ status: 'working',
90
+ tmuxSession: 'tmux-123',
91
+ currentStoryId: 'STORY-ABC',
92
+ });
93
+ expect(updated.status).toBe('working');
94
+ expect(updated.tmux_session).toBe('tmux-123');
95
+ expect(updated.current_story_id).toBe('STORY-ABC');
96
+ });
97
+ it('agent.sqlite-dao case 13', async () => {
98
+ const agent = await dao.createAgent({ type: 'junior', teamId });
99
+ await dao.deleteAgent(agent.id);
100
+ expect(await dao.getAgentById(agent.id)).toBeUndefined();
101
+ });
102
+ it('agent.sqlite-dao case 14', async () => {
103
+ const agent = await dao.createAgent({ type: 'senior', teamId, tmuxSession: 'tmux-session' });
104
+ await dao.terminateAgent(agent.id);
105
+ const terminated = await dao.getAgentById(agent.id);
106
+ expect(terminated.status).toBe('terminated');
107
+ expect(terminated.tmux_session).toBeNull();
108
+ });
109
+ describe('heartbeat', () => {
110
+ it('agent.sqlite-dao case 14', async () => {
111
+ const agent = await dao.createAgent({ type: 'senior', teamId });
112
+ await dao.updateAgentHeartbeat(agent.id);
113
+ const updated = await dao.getAgentById(agent.id);
114
+ expect(updated.last_seen).toBeDefined();
115
+ });
116
+ it('agent.sqlite-dao case 15', async () => {
117
+ const agent = await dao.createAgent({ type: 'senior', teamId });
118
+ // Agent just created with last_seen = now, so heartbeat should be current
119
+ const isCurrent = await dao.isAgentHeartbeatCurrent(agent.id, 60);
120
+ expect(isCurrent).toBe(true);
121
+ });
122
+ it('agent.sqlite-dao case 16', async () => {
123
+ const isCurrent = await dao.isAgentHeartbeatCurrent('nonexistent', 15);
124
+ expect(isCurrent).toBe(false);
125
+ });
126
+ it('agent.sqlite-dao case 17', async () => {
127
+ await dao.createAgent({ type: 'senior', teamId });
128
+ const stale = await dao.getStaleAgents(9999);
129
+ expect(stale).toEqual([]);
130
+ });
131
+ });
132
+ });
133
+ //# sourceMappingURL=agent.sqlite-dao.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.sqlite-dao.test.js","sourceRoot":"","sources":["../../../../src/db/dao/__tests__/agent.sqlite-dao.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dao-broader.sqlite-dao.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dao-broader.sqlite-dao.test.d.ts","sourceRoot":"","sources":["../../../../src/db/dao/__tests__/dao-broader.sqlite-dao.test.ts"],"names":[],"mappings":""}