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.
- package/README.md +59 -2
- package/dist/db/dao/__tests__/agent.sqlite-dao.test.d.ts +2 -0
- package/dist/db/dao/__tests__/agent.sqlite-dao.test.d.ts.map +1 -0
- package/dist/db/dao/__tests__/agent.sqlite-dao.test.js +133 -0
- package/dist/db/dao/__tests__/agent.sqlite-dao.test.js.map +1 -0
- package/dist/db/dao/__tests__/dao-broader.sqlite-dao.test.d.ts +2 -0
- package/dist/db/dao/__tests__/dao-broader.sqlite-dao.test.d.ts.map +1 -0
- package/dist/db/dao/__tests__/dao-broader.sqlite-dao.test.js +409 -0
- package/dist/db/dao/__tests__/dao-broader.sqlite-dao.test.js.map +1 -0
- package/dist/db/dao/__tests__/dao-interface.sqlite-dao.test.d.ts +2 -0
- package/dist/db/dao/__tests__/dao-interface.sqlite-dao.test.d.ts.map +1 -0
- package/dist/db/dao/__tests__/dao-interface.sqlite-dao.test.js +145 -0
- package/dist/db/dao/__tests__/dao-interface.sqlite-dao.test.js.map +1 -0
- package/dist/db/dao/__tests__/edge-cases.sqlite-dao.test.d.ts +2 -0
- package/dist/db/dao/__tests__/edge-cases.sqlite-dao.test.d.ts.map +1 -0
- package/dist/db/dao/__tests__/edge-cases.sqlite-dao.test.js +283 -0
- package/dist/db/dao/__tests__/edge-cases.sqlite-dao.test.js.map +1 -0
- package/dist/db/dao/__tests__/escalation.sqlite-dao.test.d.ts +2 -0
- package/dist/db/dao/__tests__/escalation.sqlite-dao.test.d.ts.map +1 -0
- package/dist/db/dao/__tests__/escalation.sqlite-dao.test.js +156 -0
- package/dist/db/dao/__tests__/escalation.sqlite-dao.test.js.map +1 -0
- package/dist/db/dao/__tests__/helpers.d.ts +6 -0
- package/dist/db/dao/__tests__/helpers.d.ts.map +1 -0
- package/dist/db/dao/__tests__/helpers.js +150 -0
- package/dist/db/dao/__tests__/helpers.js.map +1 -0
- package/dist/db/dao/__tests__/hive-dao.test.d.ts +2 -0
- package/dist/db/dao/__tests__/hive-dao.test.d.ts.map +1 -0
- package/dist/db/dao/__tests__/hive-dao.test.js +110 -0
- package/dist/db/dao/__tests__/hive-dao.test.js.map +1 -0
- package/dist/db/dao/__tests__/leveldb-dao.test.d.ts +2 -0
- package/dist/db/dao/__tests__/leveldb-dao.test.d.ts.map +1 -0
- package/dist/db/dao/__tests__/leveldb-dao.test.js +152 -0
- package/dist/db/dao/__tests__/leveldb-dao.test.js.map +1 -0
- package/dist/db/dao/__tests__/leveldb-helpers.d.ts +7 -0
- package/dist/db/dao/__tests__/leveldb-helpers.d.ts.map +1 -0
- package/dist/db/dao/__tests__/leveldb-helpers.js +17 -0
- package/dist/db/dao/__tests__/leveldb-helpers.js.map +1 -0
- package/dist/db/dao/__tests__/log.sqlite-dao.test.d.ts +2 -0
- package/dist/db/dao/__tests__/log.sqlite-dao.test.d.ts.map +1 -0
- package/dist/db/dao/__tests__/log.sqlite-dao.test.js +148 -0
- package/dist/db/dao/__tests__/log.sqlite-dao.test.js.map +1 -0
- package/dist/db/dao/__tests__/message.sqlite-dao.test.d.ts +2 -0
- package/dist/db/dao/__tests__/message.sqlite-dao.test.d.ts.map +1 -0
- package/dist/db/dao/__tests__/message.sqlite-dao.test.js +77 -0
- package/dist/db/dao/__tests__/message.sqlite-dao.test.js.map +1 -0
- package/dist/db/dao/__tests__/pull-request.sqlite-dao.test.d.ts +2 -0
- package/dist/db/dao/__tests__/pull-request.sqlite-dao.test.d.ts.map +1 -0
- package/dist/db/dao/__tests__/pull-request.sqlite-dao.test.js +149 -0
- package/dist/db/dao/__tests__/pull-request.sqlite-dao.test.js.map +1 -0
- package/dist/db/dao/__tests__/requirement.sqlite-dao.test.d.ts +2 -0
- package/dist/db/dao/__tests__/requirement.sqlite-dao.test.d.ts.map +1 -0
- package/dist/db/dao/__tests__/requirement.sqlite-dao.test.js +98 -0
- package/dist/db/dao/__tests__/requirement.sqlite-dao.test.js.map +1 -0
- package/dist/db/dao/__tests__/story.sqlite-dao.test.d.ts +2 -0
- package/dist/db/dao/__tests__/story.sqlite-dao.test.d.ts.map +1 -0
- package/dist/db/dao/__tests__/story.sqlite-dao.test.js +234 -0
- package/dist/db/dao/__tests__/story.sqlite-dao.test.js.map +1 -0
- package/dist/db/dao/__tests__/team.sqlite-dao.test.d.ts +2 -0
- package/dist/db/dao/__tests__/team.sqlite-dao.test.d.ts.map +1 -0
- package/dist/db/dao/__tests__/team.sqlite-dao.test.js +73 -0
- package/dist/db/dao/__tests__/team.sqlite-dao.test.js.map +1 -0
- package/dist/db/dao/hive-dao.d.ts +21 -0
- package/dist/db/dao/hive-dao.d.ts.map +1 -0
- package/dist/db/dao/hive-dao.js +21 -0
- package/dist/db/dao/hive-dao.js.map +1 -0
- package/dist/db/dao/index.d.ts +14 -0
- package/dist/db/dao/index.d.ts.map +1 -0
- package/dist/db/dao/index.js +7 -0
- package/dist/db/dao/index.js.map +1 -0
- package/dist/db/dao/interfaces/agent.dao.d.ts +27 -0
- package/dist/db/dao/interfaces/agent.dao.d.ts.map +1 -0
- package/dist/db/dao/interfaces/agent.dao.js +2 -0
- package/dist/db/dao/interfaces/agent.dao.js.map +1 -0
- package/dist/db/dao/interfaces/escalation.dao.d.ts +19 -0
- package/dist/db/dao/interfaces/escalation.dao.d.ts.map +1 -0
- package/dist/db/dao/interfaces/escalation.dao.js +2 -0
- package/dist/db/dao/interfaces/escalation.dao.js.map +1 -0
- package/dist/db/dao/interfaces/index.d.ts +17 -0
- package/dist/db/dao/interfaces/index.d.ts.map +1 -0
- package/dist/db/dao/interfaces/index.js +2 -0
- package/dist/db/dao/interfaces/index.js.map +1 -0
- package/dist/db/dao/interfaces/log.dao.d.ts +14 -0
- package/dist/db/dao/interfaces/log.dao.d.ts.map +1 -0
- package/dist/db/dao/interfaces/log.dao.js +2 -0
- package/dist/db/dao/interfaces/log.dao.js.map +1 -0
- package/dist/db/dao/interfaces/message.dao.d.ts +9 -0
- package/dist/db/dao/interfaces/message.dao.d.ts.map +1 -0
- package/dist/db/dao/interfaces/message.dao.js +2 -0
- package/dist/db/dao/interfaces/message.dao.js.map +1 -0
- package/dist/db/dao/interfaces/pull-request.dao.d.ts +19 -0
- package/dist/db/dao/interfaces/pull-request.dao.d.ts.map +1 -0
- package/dist/db/dao/interfaces/pull-request.dao.js +2 -0
- package/dist/db/dao/interfaces/pull-request.dao.js.map +1 -0
- package/dist/db/dao/interfaces/requirement.dao.d.ts +13 -0
- package/dist/db/dao/interfaces/requirement.dao.d.ts.map +1 -0
- package/dist/db/dao/interfaces/requirement.dao.js +2 -0
- package/dist/db/dao/interfaces/requirement.dao.js.map +1 -0
- package/dist/db/dao/interfaces/story.dao.d.ts +29 -0
- package/dist/db/dao/interfaces/story.dao.d.ts.map +1 -0
- package/dist/db/dao/interfaces/story.dao.js +2 -0
- package/dist/db/dao/interfaces/story.dao.js.map +1 -0
- package/dist/db/dao/interfaces/team.dao.d.ts +11 -0
- package/dist/db/dao/interfaces/team.dao.d.ts.map +1 -0
- package/dist/db/dao/interfaces/team.dao.js +2 -0
- package/dist/db/dao/interfaces/team.dao.js.map +1 -0
- package/dist/db/dao/leveldb/agent.leveldb-dao.d.ts +23 -0
- package/dist/db/dao/leveldb/agent.leveldb-dao.d.ts.map +1 -0
- package/dist/db/dao/leveldb/agent.leveldb-dao.js +163 -0
- package/dist/db/dao/leveldb/agent.leveldb-dao.js.map +1 -0
- package/dist/db/dao/leveldb/escalation.leveldb-dao.d.ts +22 -0
- package/dist/db/dao/leveldb/escalation.leveldb-dao.d.ts.map +1 -0
- package/dist/db/dao/leveldb/escalation.leveldb-dao.js +99 -0
- package/dist/db/dao/leveldb/escalation.leveldb-dao.js.map +1 -0
- package/dist/db/dao/leveldb/hive-dao.d.ts +8 -0
- package/dist/db/dao/leveldb/hive-dao.d.ts.map +1 -0
- package/dist/db/dao/leveldb/hive-dao.js +24 -0
- package/dist/db/dao/leveldb/hive-dao.js.map +1 -0
- package/dist/db/dao/leveldb/index.d.ts +11 -0
- package/dist/db/dao/leveldb/index.d.ts.map +1 -0
- package/dist/db/dao/leveldb/index.js +10 -0
- package/dist/db/dao/leveldb/index.js.map +1 -0
- package/dist/db/dao/leveldb/leveldb-store.d.ts +17 -0
- package/dist/db/dao/leveldb/leveldb-store.d.ts.map +1 -0
- package/dist/db/dao/leveldb/leveldb-store.js +44 -0
- package/dist/db/dao/leveldb/leveldb-store.js.map +1 -0
- package/dist/db/dao/leveldb/log.leveldb-dao.d.ts +17 -0
- package/dist/db/dao/leveldb/log.leveldb-dao.d.ts.map +1 -0
- package/dist/db/dao/leveldb/log.leveldb-dao.js +71 -0
- package/dist/db/dao/leveldb/log.leveldb-dao.js.map +1 -0
- package/dist/db/dao/leveldb/message.leveldb-dao.d.ts +12 -0
- package/dist/db/dao/leveldb/message.leveldb-dao.d.ts.map +1 -0
- package/dist/db/dao/leveldb/message.leveldb-dao.js +34 -0
- package/dist/db/dao/leveldb/message.leveldb-dao.js.map +1 -0
- package/dist/db/dao/leveldb/pull-request.leveldb-dao.d.ts +22 -0
- package/dist/db/dao/leveldb/pull-request.leveldb-dao.d.ts.map +1 -0
- package/dist/db/dao/leveldb/pull-request.leveldb-dao.js +116 -0
- package/dist/db/dao/leveldb/pull-request.leveldb-dao.js.map +1 -0
- package/dist/db/dao/leveldb/requirement.leveldb-dao.d.ts +16 -0
- package/dist/db/dao/leveldb/requirement.leveldb-dao.d.ts.map +1 -0
- package/dist/db/dao/leveldb/requirement.leveldb-dao.js +68 -0
- package/dist/db/dao/leveldb/requirement.leveldb-dao.js.map +1 -0
- package/dist/db/dao/leveldb/sort.d.ts +23 -0
- package/dist/db/dao/leveldb/sort.d.ts.map +1 -0
- package/dist/db/dao/leveldb/sort.js +25 -0
- package/dist/db/dao/leveldb/sort.js.map +1 -0
- package/dist/db/dao/leveldb/story.leveldb-dao.d.ts +32 -0
- package/dist/db/dao/leveldb/story.leveldb-dao.d.ts.map +1 -0
- package/dist/db/dao/leveldb/story.leveldb-dao.js +212 -0
- package/dist/db/dao/leveldb/story.leveldb-dao.js.map +1 -0
- package/dist/db/dao/leveldb/team.leveldb-dao.d.ts +14 -0
- package/dist/db/dao/leveldb/team.leveldb-dao.d.ts.map +1 -0
- package/dist/db/dao/leveldb/team.leveldb-dao.js +44 -0
- package/dist/db/dao/leveldb/team.leveldb-dao.js.map +1 -0
- package/dist/db/dao/sqlite/agent.sqlite-dao.d.ts +22 -0
- package/dist/db/dao/sqlite/agent.sqlite-dao.d.ts.map +1 -0
- package/dist/db/dao/sqlite/agent.sqlite-dao.js +131 -0
- package/dist/db/dao/sqlite/agent.sqlite-dao.js.map +1 -0
- package/dist/db/dao/sqlite/escalation.sqlite-dao.d.ts +21 -0
- package/dist/db/dao/sqlite/escalation.sqlite-dao.d.ts.map +1 -0
- package/dist/db/dao/sqlite/escalation.sqlite-dao.js +111 -0
- package/dist/db/dao/sqlite/escalation.sqlite-dao.js.map +1 -0
- package/dist/db/dao/sqlite/index.d.ts +9 -0
- package/dist/db/dao/sqlite/index.d.ts.map +1 -0
- package/dist/db/dao/sqlite/index.js +9 -0
- package/dist/db/dao/sqlite/index.js.map +1 -0
- package/dist/db/dao/sqlite/log.sqlite-dao.d.ts +16 -0
- package/dist/db/dao/sqlite/log.sqlite-dao.d.ts.map +1 -0
- package/dist/db/dao/sqlite/log.sqlite-dao.js +76 -0
- package/dist/db/dao/sqlite/log.sqlite-dao.js.map +1 -0
- package/dist/db/dao/sqlite/message.sqlite-dao.d.ts +12 -0
- package/dist/db/dao/sqlite/message.sqlite-dao.d.ts.map +1 -0
- package/dist/db/dao/sqlite/message.sqlite-dao.js +28 -0
- package/dist/db/dao/sqlite/message.sqlite-dao.js.map +1 -0
- package/dist/db/dao/sqlite/pull-request.sqlite-dao.d.ts +21 -0
- package/dist/db/dao/sqlite/pull-request.sqlite-dao.d.ts.map +1 -0
- package/dist/db/dao/sqlite/pull-request.sqlite-dao.js +135 -0
- package/dist/db/dao/sqlite/pull-request.sqlite-dao.js.map +1 -0
- package/dist/db/dao/sqlite/requirement.sqlite-dao.d.ts +15 -0
- package/dist/db/dao/sqlite/requirement.sqlite-dao.d.ts.map +1 -0
- package/dist/db/dao/sqlite/requirement.sqlite-dao.js +59 -0
- package/dist/db/dao/sqlite/requirement.sqlite-dao.js.map +1 -0
- package/dist/db/dao/sqlite/story.sqlite-dao.d.ts +31 -0
- package/dist/db/dao/sqlite/story.sqlite-dao.d.ts.map +1 -0
- package/dist/db/dao/sqlite/story.sqlite-dao.js +185 -0
- package/dist/db/dao/sqlite/story.sqlite-dao.js.map +1 -0
- package/dist/db/dao/sqlite/team.sqlite-dao.d.ts +13 -0
- package/dist/db/dao/sqlite/team.sqlite-dao.d.ts.map +1 -0
- package/dist/db/dao/sqlite/team.sqlite-dao.js +30 -0
- package/dist/db/dao/sqlite/team.sqlite-dao.js.map +1 -0
- package/dist/db/queries/requirements.js +3 -3
- package/dist/db/queries/requirements.js.map +1 -1
- package/package.json +2 -1
- package/src/db/dao/__tests__/agent.sqlite-dao.test.ts +164 -0
- package/src/db/dao/__tests__/dao-broader.sqlite-dao.test.ts +542 -0
- package/src/db/dao/__tests__/dao-interface.sqlite-dao.test.ts +177 -0
- package/src/db/dao/__tests__/edge-cases.sqlite-dao.test.ts +329 -0
- package/src/db/dao/__tests__/escalation.sqlite-dao.test.ts +193 -0
- package/src/db/dao/__tests__/helpers.ts +164 -0
- package/src/db/dao/__tests__/hive-dao.test.ts +136 -0
- package/src/db/dao/__tests__/leveldb-dao.test.ts +182 -0
- package/src/db/dao/__tests__/leveldb-helpers.ts +23 -0
- package/src/db/dao/__tests__/log.sqlite-dao.test.ts +186 -0
- package/src/db/dao/__tests__/message.sqlite-dao.test.ts +98 -0
- package/src/db/dao/__tests__/pull-request.sqlite-dao.test.ts +185 -0
- package/src/db/dao/__tests__/requirement.sqlite-dao.test.ts +120 -0
- package/src/db/dao/__tests__/story.sqlite-dao.test.ts +289 -0
- package/src/db/dao/__tests__/team.sqlite-dao.test.ts +89 -0
- package/src/db/dao/hive-dao.ts +41 -0
- package/src/db/dao/index.ts +39 -0
- package/src/db/dao/interfaces/agent.dao.ts +30 -0
- package/src/db/dao/interfaces/escalation.dao.ts +20 -0
- package/src/db/dao/interfaces/index.ts +18 -0
- package/src/db/dao/interfaces/log.dao.ts +15 -0
- package/src/db/dao/interfaces/message.dao.ts +10 -0
- package/src/db/dao/interfaces/pull-request.dao.ts +20 -0
- package/src/db/dao/interfaces/requirement.dao.ts +14 -0
- package/src/db/dao/interfaces/story.dao.ts +27 -0
- package/src/db/dao/interfaces/team.dao.ts +12 -0
- package/src/db/dao/leveldb/agent.leveldb-dao.ts +179 -0
- package/src/db/dao/leveldb/escalation.leveldb-dao.ts +117 -0
- package/src/db/dao/leveldb/hive-dao.ts +31 -0
- package/src/db/dao/leveldb/index.ts +10 -0
- package/src/db/dao/leveldb/leveldb-store.ts +52 -0
- package/src/db/dao/leveldb/log.leveldb-dao.ts +85 -0
- package/src/db/dao/leveldb/message.leveldb-dao.ts +38 -0
- package/src/db/dao/leveldb/pull-request.leveldb-dao.ts +132 -0
- package/src/db/dao/leveldb/requirement.leveldb-dao.ts +79 -0
- package/src/db/dao/leveldb/sort.ts +23 -0
- package/src/db/dao/leveldb/story.leveldb-dao.ts +234 -0
- package/src/db/dao/leveldb/team.leveldb-dao.ts +52 -0
- package/src/db/dao/sqlite/agent.sqlite-dao.ts +159 -0
- package/src/db/dao/sqlite/escalation.sqlite-dao.ts +129 -0
- package/src/db/dao/sqlite/index.ts +8 -0
- package/src/db/dao/sqlite/log.sqlite-dao.ts +89 -0
- package/src/db/dao/sqlite/message.sqlite-dao.ts +32 -0
- package/src/db/dao/sqlite/pull-request.sqlite-dao.ts +153 -0
- package/src/db/dao/sqlite/requirement.sqlite-dao.ts +71 -0
- package/src/db/dao/sqlite/story.sqlite-dao.ts +216 -0
- package/src/db/dao/sqlite/team.sqlite-dao.ts +37 -0
- package/src/db/queries/requirements.ts +3 -3
package/README.md
CHANGED
|
@@ -3,13 +3,25 @@
|
|
|
3
3
|
[](https://github.com/nikrich/hungry-ghost-hive/actions/workflows/ci.yml)
|
|
4
4
|
[](https://www.npmjs.com/package/hungry-ghost-hive)
|
|
5
5
|
[](https://nodejs.org/)
|
|
6
|
-
[](LICENSE)
|
|
7
7
|
[](https://www.typescriptlang.org/)
|
|
8
|
+
[](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
|
-
|
|
451
|
+
See [LICENSE](LICENSE) file for details. This project uses a proprietary Hungry Ghost Hive License.
|
|
@@ -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 @@
|
|
|
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":""}
|