opencode-swarm-plugin 0.44.1 → 0.45.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.
- package/README.md +277 -54
- package/bin/swarm.ts +3 -3
- package/dist/decision-trace-integration.d.ts +204 -0
- package/dist/decision-trace-integration.d.ts.map +1 -0
- package/dist/hive.d.ts.map +1 -1
- package/dist/hive.js +14834 -0
- package/dist/index.d.ts +50 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +640 -27
- package/dist/plugin.js +395 -27
- package/dist/query-tools.d.ts +20 -12
- package/dist/query-tools.d.ts.map +1 -1
- package/dist/swarm-decompose.d.ts +4 -4
- package/dist/swarm-decompose.d.ts.map +1 -1
- package/dist/swarm-prompts.d.ts.map +1 -1
- package/dist/swarm-prompts.js +39605 -0
- package/dist/swarm-review.d.ts.map +1 -1
- package/dist/swarm-signature.d.ts +106 -0
- package/dist/swarm-signature.d.ts.map +1 -0
- package/dist/swarm-strategies.d.ts +16 -3
- package/dist/swarm-strategies.d.ts.map +1 -1
- package/dist/swarm-validation.d.ts +127 -0
- package/dist/swarm-validation.d.ts.map +1 -0
- package/dist/swarm.d.ts +4 -2
- package/dist/swarm.d.ts.map +1 -1
- package/dist/validators/index.d.ts +7 -0
- package/dist/validators/index.d.ts.map +1 -0
- package/dist/validators/schema-validator.d.ts +58 -0
- package/dist/validators/schema-validator.d.ts.map +1 -0
- package/examples/commands/swarm.md +745 -0
- package/examples/plugin-wrapper-template.ts +2611 -0
- package/examples/skills/hive-workflow/SKILL.md +212 -0
- package/examples/skills/skill-creator/SKILL.md +223 -0
- package/examples/skills/swarm-coordination/SKILL.md +292 -0
- package/global-skills/cli-builder/SKILL.md +344 -0
- package/global-skills/cli-builder/references/advanced-patterns.md +244 -0
- package/global-skills/learning-systems/SKILL.md +644 -0
- package/global-skills/skill-creator/LICENSE.txt +202 -0
- package/global-skills/skill-creator/SKILL.md +352 -0
- package/global-skills/skill-creator/references/output-patterns.md +82 -0
- package/global-skills/skill-creator/references/workflows.md +28 -0
- package/global-skills/swarm-coordination/SKILL.md +995 -0
- package/global-skills/swarm-coordination/references/coordinator-patterns.md +235 -0
- package/global-skills/swarm-coordination/references/strategies.md +138 -0
- package/global-skills/system-design/SKILL.md +213 -0
- package/global-skills/testing-patterns/SKILL.md +430 -0
- package/global-skills/testing-patterns/references/dependency-breaking-catalog.md +586 -0
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -446,78 +446,211 @@ swarm migrate # Migrate from legacy PGLite to libSQL
|
|
|
446
446
|
swarm version # Show version info
|
|
447
447
|
```
|
|
448
448
|
|
|
449
|
-
###
|
|
449
|
+
### Observability Commands
|
|
450
450
|
|
|
451
|
-
|
|
451
|
+
**swarm query** - SQL analytics with presets
|
|
452
452
|
|
|
453
453
|
```bash
|
|
454
|
-
#
|
|
455
|
-
|
|
454
|
+
# Execute custom SQL query against event store
|
|
455
|
+
swarm query --sql "SELECT * FROM events WHERE type='worker_spawned' LIMIT 10"
|
|
456
456
|
|
|
457
|
-
#
|
|
458
|
-
swarm
|
|
459
|
-
swarm
|
|
460
|
-
swarm
|
|
461
|
-
swarm
|
|
462
|
-
swarm
|
|
457
|
+
# Use preset query (10+ presets available)
|
|
458
|
+
swarm query --preset failed_decompositions
|
|
459
|
+
swarm query --preset duration_by_strategy
|
|
460
|
+
swarm query --preset file_conflicts
|
|
461
|
+
swarm query --preset worker_success_rate
|
|
462
|
+
swarm query --preset review_rejections
|
|
463
|
+
swarm query --preset blocked_tasks
|
|
464
|
+
swarm query --preset agent_activity
|
|
465
|
+
swarm query --preset event_frequency
|
|
466
|
+
swarm query --preset error_patterns
|
|
467
|
+
swarm query --preset compaction_stats
|
|
468
|
+
|
|
469
|
+
# Output formats
|
|
470
|
+
swarm query --preset failed_decompositions --format table # Default
|
|
471
|
+
swarm query --preset duration_by_strategy --format csv
|
|
472
|
+
swarm query --preset file_conflicts --format json
|
|
463
473
|
```
|
|
464
474
|
|
|
465
|
-
**
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
475
|
+
**swarm dashboard** - Live terminal UI
|
|
476
|
+
|
|
477
|
+
```bash
|
|
478
|
+
# Launch dashboard (auto-refresh every 1s)
|
|
479
|
+
swarm dashboard
|
|
480
|
+
|
|
481
|
+
# Focus on specific epic
|
|
482
|
+
swarm dashboard --epic mjmas3zxlmg
|
|
483
|
+
|
|
484
|
+
# Custom refresh rate (milliseconds)
|
|
485
|
+
swarm dashboard --refresh 2000
|
|
486
|
+
```
|
|
469
487
|
|
|
470
|
-
|
|
488
|
+
**Dashboard shows:**
|
|
489
|
+
- Active workers and their current tasks
|
|
490
|
+
- Progress bars for in-progress work
|
|
491
|
+
- File reservations (who owns what)
|
|
492
|
+
- Recent messages between agents
|
|
493
|
+
- Error alerts
|
|
471
494
|
|
|
472
|
-
|
|
495
|
+
**swarm replay** - Event replay with timing
|
|
473
496
|
|
|
474
497
|
```bash
|
|
475
|
-
#
|
|
476
|
-
swarm
|
|
498
|
+
# Replay epic at normal speed
|
|
499
|
+
swarm replay mjmas3zxlmg
|
|
500
|
+
|
|
501
|
+
# Fast playback
|
|
502
|
+
swarm replay mjmas3zxlmg --speed 2x
|
|
503
|
+
swarm replay mjmas3zxlmg --speed instant
|
|
504
|
+
|
|
505
|
+
# Filter by event type
|
|
506
|
+
swarm replay mjmas3zxlmg --type worker_spawned,task_completed
|
|
507
|
+
|
|
508
|
+
# Filter by agent
|
|
509
|
+
swarm replay mjmas3zxlmg --agent DarkHawk
|
|
510
|
+
|
|
511
|
+
# Time range filters
|
|
512
|
+
swarm replay mjmas3zxlmg --since "2025-12-25T10:00:00"
|
|
513
|
+
swarm replay mjmas3zxlmg --until "2025-12-25T12:00:00"
|
|
514
|
+
|
|
515
|
+
# Combine filters
|
|
516
|
+
swarm replay mjmas3zxlmg --speed 2x --type worker_spawned --agent BlueLake
|
|
517
|
+
```
|
|
477
518
|
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
519
|
+
**swarm export** - Data export for analysis
|
|
520
|
+
|
|
521
|
+
```bash
|
|
522
|
+
# Export all events as JSON (stdout)
|
|
523
|
+
swarm export
|
|
524
|
+
|
|
525
|
+
# Export specific epic
|
|
526
|
+
swarm export --epic mjmas3zxlmg
|
|
482
527
|
|
|
483
528
|
# Export formats
|
|
484
|
-
swarm
|
|
485
|
-
swarm
|
|
486
|
-
swarm
|
|
529
|
+
swarm export --format json --output events.json
|
|
530
|
+
swarm export --format csv --output events.csv
|
|
531
|
+
swarm export --format otlp --output events.otlp # OpenTelemetry Protocol
|
|
487
532
|
|
|
488
|
-
#
|
|
489
|
-
swarm
|
|
490
|
-
swarm history # Recent swarm activity summary
|
|
533
|
+
# Pipe to jq for filtering
|
|
534
|
+
swarm export --format json | jq '.[] | select(.type=="worker_spawned")'
|
|
491
535
|
```
|
|
492
536
|
|
|
493
|
-
|
|
537
|
+
**swarm stats** - Health metrics
|
|
494
538
|
|
|
495
539
|
```bash
|
|
496
|
-
#
|
|
497
|
-
swarm
|
|
498
|
-
|
|
499
|
-
|
|
540
|
+
# Last 7 days (default)
|
|
541
|
+
swarm stats
|
|
542
|
+
|
|
543
|
+
# Custom time period
|
|
544
|
+
swarm stats --since 24h
|
|
545
|
+
swarm stats --since 30m
|
|
500
546
|
|
|
501
|
-
#
|
|
502
|
-
swarm
|
|
503
|
-
swarm replay mjmas3zxlmg --speed 2.0 # 2x speed
|
|
504
|
-
swarm replay mjmas3zxlmg --type DECISION # Only DECISION events
|
|
505
|
-
swarm replay mjmas3zxlmg --agent Worker1 # Single agent's perspective
|
|
506
|
-
swarm replay mjmas3zxlmg --since "2h" # Last 2 hours
|
|
507
|
-
swarm replay mjmas3zxlmg --until "1h" # Up to 1 hour ago
|
|
547
|
+
# JSON output for scripting
|
|
548
|
+
swarm stats --json
|
|
508
549
|
```
|
|
509
550
|
|
|
510
|
-
|
|
551
|
+
**swarm history** - Activity timeline
|
|
511
552
|
|
|
512
553
|
```bash
|
|
513
|
-
#
|
|
514
|
-
swarm
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
swarm
|
|
518
|
-
|
|
554
|
+
# Last 10 swarms (default)
|
|
555
|
+
swarm history
|
|
556
|
+
|
|
557
|
+
# More results
|
|
558
|
+
swarm history --limit 20
|
|
559
|
+
|
|
560
|
+
# Filter by status
|
|
561
|
+
swarm history --status success
|
|
562
|
+
swarm history --status failed
|
|
563
|
+
swarm history --status in_progress
|
|
564
|
+
|
|
565
|
+
# Filter by strategy
|
|
566
|
+
swarm history --strategy file-based
|
|
567
|
+
swarm history --strategy feature-based
|
|
568
|
+
|
|
569
|
+
# Verbose mode (show subtasks)
|
|
570
|
+
swarm history --verbose
|
|
519
571
|
```
|
|
520
572
|
|
|
573
|
+
**swarm log** - Query/tail logs
|
|
574
|
+
|
|
575
|
+
```bash
|
|
576
|
+
# Recent logs (last 50 lines)
|
|
577
|
+
swarm log
|
|
578
|
+
|
|
579
|
+
# Filter by module
|
|
580
|
+
swarm log compaction
|
|
581
|
+
|
|
582
|
+
# Filter by level
|
|
583
|
+
swarm log --level error
|
|
584
|
+
swarm log --level warn
|
|
585
|
+
|
|
586
|
+
# Time filters
|
|
587
|
+
swarm log --since 30s
|
|
588
|
+
swarm log --since 5m
|
|
589
|
+
swarm log --since 2h
|
|
590
|
+
|
|
591
|
+
# JSON output
|
|
592
|
+
swarm log --json
|
|
593
|
+
|
|
594
|
+
# Limit output
|
|
595
|
+
swarm log --limit 100
|
|
596
|
+
|
|
597
|
+
# Watch mode (live tail)
|
|
598
|
+
swarm log --watch
|
|
599
|
+
swarm log --watch --interval 500 # Poll every 500ms
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
**swarm log sessions** - View coordinator sessions
|
|
603
|
+
|
|
604
|
+
```bash
|
|
605
|
+
# List all sessions
|
|
606
|
+
swarm log sessions
|
|
607
|
+
|
|
608
|
+
# View specific session
|
|
609
|
+
swarm log sessions <session_id>
|
|
610
|
+
|
|
611
|
+
# Most recent session
|
|
612
|
+
swarm log sessions --latest
|
|
613
|
+
|
|
614
|
+
# Filter by event type
|
|
615
|
+
swarm log sessions --type DECISION
|
|
616
|
+
swarm log sessions --type VIOLATION
|
|
617
|
+
swarm log sessions --type OUTCOME
|
|
618
|
+
swarm log sessions --type COMPACTION
|
|
619
|
+
|
|
620
|
+
# JSON output for jq
|
|
621
|
+
swarm log sessions --json
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
### Debug Logging
|
|
625
|
+
|
|
626
|
+
Use `DEBUG` env var to enable swarm debug logs:
|
|
627
|
+
|
|
628
|
+
```bash
|
|
629
|
+
# All swarm logs
|
|
630
|
+
DEBUG=swarm:* swarm dashboard
|
|
631
|
+
|
|
632
|
+
# Coordinator only
|
|
633
|
+
DEBUG=swarm:coordinator swarm replay <epic-id>
|
|
634
|
+
|
|
635
|
+
# Workers only
|
|
636
|
+
DEBUG=swarm:worker swarm export
|
|
637
|
+
|
|
638
|
+
# Swarm mail only
|
|
639
|
+
DEBUG=swarm:mail swarm query --preset agent_activity
|
|
640
|
+
|
|
641
|
+
# Multiple namespaces (comma-separated)
|
|
642
|
+
DEBUG=swarm:coordinator,swarm:worker swarm dashboard
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
**Namespaces:**
|
|
646
|
+
|
|
647
|
+
| Namespace | What It Logs |
|
|
648
|
+
|-----------|--------------|
|
|
649
|
+
| `swarm:*` | All swarm activity |
|
|
650
|
+
| `swarm:coordinator` | Coordinator decisions (spawn, review, approve/reject) |
|
|
651
|
+
| `swarm:worker` | Worker progress, reservations, completions |
|
|
652
|
+
| `swarm:mail` | Inter-agent messages, inbox/outbox activity |
|
|
653
|
+
|
|
521
654
|
## Observability Architecture
|
|
522
655
|
|
|
523
656
|
Swarm uses **event sourcing** for complete observability. Every coordination action is an event - nothing is lost, everything is queryable.
|
|
@@ -573,16 +706,65 @@ Swarm uses **event sourcing** for complete observability. Every coordination act
|
|
|
573
706
|
|
|
574
707
|
### Key Event Types
|
|
575
708
|
|
|
709
|
+
**Agent Lifecycle:**
|
|
576
710
|
| Event Type | When It Fires | Used For |
|
|
577
711
|
|------------|---------------|----------|
|
|
578
712
|
| `agent_registered` | Agent calls `swarmmail_init()` | Agent discovery, project tracking |
|
|
579
|
-
| `
|
|
580
|
-
|
|
581
|
-
|
|
713
|
+
| `agent_active` | Periodic heartbeat | Last-seen tracking |
|
|
714
|
+
|
|
715
|
+
**Messages:**
|
|
716
|
+
| Event Type | When It Fires | Used For |
|
|
717
|
+
|------------|---------------|----------|
|
|
718
|
+
| `message_sent` | Agent sends swarm mail | Coordination, thread tracking |
|
|
719
|
+
| `message_read` | Agent reads message | Read receipts |
|
|
720
|
+
| `message_acked` | Agent acknowledges | Confirmation tracking |
|
|
721
|
+
| `thread_created` | First message in thread | Thread lifecycle |
|
|
722
|
+
| `thread_activity` | Thread stats update | Unread counts, participants |
|
|
723
|
+
|
|
724
|
+
**File Reservations:**
|
|
725
|
+
| Event Type | When It Fires | Used For |
|
|
726
|
+
|------------|---------------|----------|
|
|
727
|
+
| `file_reserved` | Agent reserves files | Conflict detection, lock management |
|
|
728
|
+
| `file_released` | Agent releases files | Lock cleanup, reservation tracking |
|
|
729
|
+
| `file_conflict` | Reservation collision | Conflict resolution, deadlock detection |
|
|
730
|
+
|
|
731
|
+
**Task Tracking:**
|
|
732
|
+
| Event Type | When It Fires | Used For |
|
|
733
|
+
|------------|---------------|----------|
|
|
582
734
|
| `task_started` | Agent starts cell work | Progress tracking, timeline |
|
|
583
735
|
| `task_progress` | Agent reports milestone | Real-time monitoring, ETA |
|
|
584
736
|
| `task_completed` | Agent calls `swarm_complete()` | Outcome tracking, learning signals |
|
|
737
|
+
| `task_blocked` | Agent hits blocker | Dependency tracking, alerts |
|
|
738
|
+
|
|
739
|
+
**Swarm Coordination:**
|
|
740
|
+
| Event Type | When It Fires | Used For |
|
|
741
|
+
|------------|---------------|----------|
|
|
742
|
+
| `swarm_started` | Coordinator begins epic | Swarm lifecycle tracking |
|
|
743
|
+
| `worker_spawned` | Coordinator spawns worker | Worker tracking, spawn order |
|
|
744
|
+
| `worker_completed` | Worker finishes subtask | Outcome tracking, duration |
|
|
745
|
+
| `review_started` | Coordinator begins review | Review tracking, attempts |
|
|
746
|
+
| `review_completed` | Review finishes | Approval/rejection tracking |
|
|
747
|
+
| `swarm_completed` | All subtasks done | Epic completion, success rate |
|
|
748
|
+
| `decomposition_generated` | Task decomposed | Strategy tracking, subtask planning |
|
|
749
|
+
| `subtask_outcome` | Subtask finishes | Learning signals, scope violations |
|
|
750
|
+
|
|
751
|
+
**Checkpoints & Recovery:**
|
|
752
|
+
| Event Type | When It Fires | Used For |
|
|
753
|
+
|------------|---------------|----------|
|
|
585
754
|
| `swarm_checkpointed` | Auto at 25/50/75% or manual | Recovery, context preservation |
|
|
755
|
+
| `swarm_recovered` | Resume from checkpoint | Recovery tracking, checkpoint age |
|
|
756
|
+
| `checkpoint_created` | Checkpoint saved | Checkpoint lifecycle |
|
|
757
|
+
| `context_compacted` | Context compaction runs | Context compression tracking |
|
|
758
|
+
|
|
759
|
+
**Validation & Learning:**
|
|
760
|
+
| Event Type | When It Fires | Used For |
|
|
761
|
+
|------------|---------------|----------|
|
|
762
|
+
| `validation_started` | Validation begins | Validation lifecycle |
|
|
763
|
+
| `validation_issue` | Validation finds issue | Issue tracking, debugging |
|
|
764
|
+
| `validation_completed` | Validation finishes | Pass/fail tracking |
|
|
765
|
+
| `human_feedback` | Human accepts/modifies | Human-in-loop learning |
|
|
766
|
+
|
|
767
|
+
**Full Schema:** See [swarm-mail/src/streams/events.ts](../swarm-mail/src/streams/events.ts) for complete Zod schemas (30+ event types)
|
|
586
768
|
|
|
587
769
|
### Analytics Queries
|
|
588
770
|
|
|
@@ -667,13 +849,16 @@ swarm query --preset file-conflicts
|
|
|
667
849
|
swarm query --sql "SELECT * FROM events WHERE json_extract(data, '$.bead_id') = 'mjmas411jtj' ORDER BY timestamp"
|
|
668
850
|
|
|
669
851
|
# 2. Check for file reservation conflicts
|
|
670
|
-
swarm query --preset
|
|
852
|
+
swarm query --preset file_conflicts
|
|
671
853
|
|
|
672
854
|
# 3. Replay to see execution timeline
|
|
673
855
|
swarm replay mjmas3zxlmg --agent WorkerName
|
|
674
856
|
|
|
675
857
|
# 4. Check if agent is still registered
|
|
676
858
|
swarm stats
|
|
859
|
+
|
|
860
|
+
# 5. Enable debug logging for live tracking
|
|
861
|
+
DEBUG=swarm:worker swarm dashboard --epic mjmas3zxlmg
|
|
677
862
|
```
|
|
678
863
|
|
|
679
864
|
**Scenario 2: High failure rate for a specific epic**
|
|
@@ -682,24 +867,62 @@ swarm stats
|
|
|
682
867
|
# 1. Get stats by epic
|
|
683
868
|
swarm query --sql "SELECT type, COUNT(*) FROM events WHERE json_extract(data, '$.epic_id') = 'mjmas3zxlmg' GROUP BY type"
|
|
684
869
|
|
|
685
|
-
# 2. Find failures
|
|
870
|
+
# 2. Find failures with reasons
|
|
686
871
|
swarm query --sql "SELECT * FROM events WHERE type = 'task_completed' AND json_extract(data, '$.epic_id') = 'mjmas3zxlmg' AND json_extract(data, '$.success') = 0"
|
|
687
872
|
|
|
688
873
|
# 3. Export for analysis
|
|
689
874
|
swarm export --epic mjmas3zxlmg --format csv > failures.csv
|
|
875
|
+
|
|
876
|
+
# 4. Check coordinator session for violations
|
|
877
|
+
swarm log sessions --type VIOLATION --json
|
|
690
878
|
```
|
|
691
879
|
|
|
692
880
|
**Scenario 3: Performance regression (tasks slower than before)**
|
|
693
881
|
|
|
694
882
|
```bash
|
|
695
883
|
# 1. Check latency trends
|
|
696
|
-
swarm query --preset
|
|
884
|
+
swarm query --preset duration_by_strategy
|
|
697
885
|
|
|
698
886
|
# 2. Compare with historical baselines
|
|
699
|
-
swarm history
|
|
887
|
+
swarm history --limit 50
|
|
700
888
|
|
|
701
889
|
# 3. Identify bottlenecks
|
|
702
890
|
swarm dashboard --epic mjmas3zxlmg --refresh 2
|
|
891
|
+
|
|
892
|
+
# 4. Analyze worker spawn efficiency
|
|
893
|
+
swarm query --preset worker_success_rate
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
**Scenario 4: File reservation conflicts**
|
|
897
|
+
|
|
898
|
+
```bash
|
|
899
|
+
# 1. Check active locks
|
|
900
|
+
swarm query --preset file_conflicts
|
|
901
|
+
|
|
902
|
+
# 2. See who's holding what
|
|
903
|
+
swarm dashboard # Shows file locks section
|
|
904
|
+
|
|
905
|
+
# 3. View full conflict history
|
|
906
|
+
swarm query --sql "SELECT * FROM events WHERE type = 'file_conflict' ORDER BY timestamp DESC LIMIT 20"
|
|
907
|
+
|
|
908
|
+
# 4. Replay to see conflict sequence
|
|
909
|
+
swarm replay mjmas3zxlmg --type file_reserved,file_released,file_conflict
|
|
910
|
+
```
|
|
911
|
+
|
|
912
|
+
**Scenario 5: Coordinator not spawning workers**
|
|
913
|
+
|
|
914
|
+
```bash
|
|
915
|
+
# 1. Check coordinator session for violations
|
|
916
|
+
swarm log sessions --latest --type DECISION,VIOLATION
|
|
917
|
+
|
|
918
|
+
# 2. Verify decomposition was generated
|
|
919
|
+
swarm query --sql "SELECT * FROM events WHERE type = 'decomposition_generated' ORDER BY timestamp DESC LIMIT 5"
|
|
920
|
+
|
|
921
|
+
# 3. Debug coordinator logic
|
|
922
|
+
DEBUG=swarm:coordinator swarm replay mjmas3zxlmg
|
|
923
|
+
|
|
924
|
+
# 4. Check for blocked tasks
|
|
925
|
+
swarm query --preset blocked_tasks
|
|
703
926
|
```
|
|
704
927
|
|
|
705
928
|
### Event Store Schema
|
package/bin/swarm.ts
CHANGED
|
@@ -34,8 +34,8 @@ import {
|
|
|
34
34
|
importJsonlToPGLite,
|
|
35
35
|
ensureHiveDirectory,
|
|
36
36
|
getHiveAdapter,
|
|
37
|
-
} from "../
|
|
38
|
-
import { formatCoordinatorPrompt } from "../
|
|
37
|
+
} from "../dist/hive.js";
|
|
38
|
+
import { formatCoordinatorPrompt } from "../dist/swarm-prompts.js";
|
|
39
39
|
import {
|
|
40
40
|
legacyDatabaseExists,
|
|
41
41
|
migratePGliteToLibSQL,
|
|
@@ -2536,7 +2536,7 @@ async function query() {
|
|
|
2536
2536
|
const parsed = parseQueryArgs(args);
|
|
2537
2537
|
|
|
2538
2538
|
// Import query tools
|
|
2539
|
-
const { executeQuery, executePreset, formatAsTable, formatAsCSV, formatAsJSON } = await import("../src/
|
|
2539
|
+
const { executeQuery, executePreset, formatAsTable, formatAsCSV, formatAsJSON } = await import("../src/query-tools.js");
|
|
2540
2540
|
|
|
2541
2541
|
p.intro("swarm query");
|
|
2542
2542
|
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decision Trace Integration
|
|
3
|
+
*
|
|
4
|
+
* Wires decision trace capture into swarm coordination tools.
|
|
5
|
+
* Provides helper functions that tools can call to record decisions.
|
|
6
|
+
*
|
|
7
|
+
* ## Decision Types Captured
|
|
8
|
+
*
|
|
9
|
+
* - **strategy_selection** - Coordinator choosing decomposition strategy
|
|
10
|
+
* - **worker_spawn** - Coordinator spawning a worker agent
|
|
11
|
+
* - **review_decision** - Coordinator approving/rejecting worker output
|
|
12
|
+
* - **file_selection** - Worker choosing which files to modify
|
|
13
|
+
* - **scope_change** - Worker expanding/contracting task scope
|
|
14
|
+
*
|
|
15
|
+
* ## Usage
|
|
16
|
+
*
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { traceStrategySelection, traceWorkerSpawn } from "./decision-trace-integration.js";
|
|
19
|
+
*
|
|
20
|
+
* // In swarm_delegate_planning:
|
|
21
|
+
* await traceStrategySelection({
|
|
22
|
+
* projectKey: "/path/to/project",
|
|
23
|
+
* agentName: "coordinator",
|
|
24
|
+
* epicId: "epic-123",
|
|
25
|
+
* strategy: "file-based",
|
|
26
|
+
* reasoning: "File-based chosen due to clear file boundaries",
|
|
27
|
+
* alternatives: [{ strategy: "feature-based", reason: "rejected" }],
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @module decision-trace-integration
|
|
32
|
+
*/
|
|
33
|
+
/**
|
|
34
|
+
* Extract memory IDs from precedent_cited object
|
|
35
|
+
*
|
|
36
|
+
* Handles both single memoryId and array memoryIds fields.
|
|
37
|
+
*
|
|
38
|
+
* @param precedentCited - Precedent object from decision trace
|
|
39
|
+
* @returns Array of memory IDs (empty if none found)
|
|
40
|
+
*/
|
|
41
|
+
export declare function extractMemoryIds(precedentCited?: {
|
|
42
|
+
memoryId?: string;
|
|
43
|
+
memoryIds?: string[];
|
|
44
|
+
similarity?: number;
|
|
45
|
+
} | null): string[];
|
|
46
|
+
/**
|
|
47
|
+
* Input for tracing strategy selection decisions
|
|
48
|
+
*/
|
|
49
|
+
export interface StrategySelectionInput {
|
|
50
|
+
projectKey: string;
|
|
51
|
+
agentName: string;
|
|
52
|
+
epicId?: string;
|
|
53
|
+
beadId?: string;
|
|
54
|
+
strategy: string;
|
|
55
|
+
reasoning: string;
|
|
56
|
+
confidence?: number;
|
|
57
|
+
taskPreview?: string;
|
|
58
|
+
inputsGathered?: Array<{
|
|
59
|
+
source: string;
|
|
60
|
+
query?: string;
|
|
61
|
+
results?: number;
|
|
62
|
+
}>;
|
|
63
|
+
alternatives?: Array<{
|
|
64
|
+
strategy: string;
|
|
65
|
+
score?: number;
|
|
66
|
+
reason?: string;
|
|
67
|
+
}>;
|
|
68
|
+
precedentCited?: {
|
|
69
|
+
memoryId?: string;
|
|
70
|
+
memoryIds?: string[];
|
|
71
|
+
similarity?: number;
|
|
72
|
+
cassResults?: number;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Trace a strategy selection decision
|
|
77
|
+
*
|
|
78
|
+
* Call this when the coordinator selects a decomposition strategy.
|
|
79
|
+
* Automatically creates entity links to any memory patterns cited as precedent.
|
|
80
|
+
*
|
|
81
|
+
* @param input - Strategy selection details
|
|
82
|
+
* @returns Created decision trace ID
|
|
83
|
+
*/
|
|
84
|
+
export declare function traceStrategySelection(input: StrategySelectionInput): Promise<string>;
|
|
85
|
+
/**
|
|
86
|
+
* Input for tracing worker spawn decisions
|
|
87
|
+
*/
|
|
88
|
+
export interface WorkerSpawnInput {
|
|
89
|
+
projectKey: string;
|
|
90
|
+
agentName: string;
|
|
91
|
+
epicId: string;
|
|
92
|
+
beadId: string;
|
|
93
|
+
workerName?: string;
|
|
94
|
+
subtaskTitle: string;
|
|
95
|
+
files: string[];
|
|
96
|
+
model?: string;
|
|
97
|
+
spawnOrder?: number;
|
|
98
|
+
isParallel?: boolean;
|
|
99
|
+
rationale?: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Trace a worker spawn decision
|
|
103
|
+
*
|
|
104
|
+
* Call this when the coordinator spawns a worker agent.
|
|
105
|
+
* Automatically creates entity links to assigned files.
|
|
106
|
+
*
|
|
107
|
+
* @param input - Worker spawn details
|
|
108
|
+
* @returns Created decision trace ID
|
|
109
|
+
*/
|
|
110
|
+
export declare function traceWorkerSpawn(input: WorkerSpawnInput): Promise<string>;
|
|
111
|
+
/**
|
|
112
|
+
* Input for tracing review decisions
|
|
113
|
+
*/
|
|
114
|
+
export interface ReviewDecisionInput {
|
|
115
|
+
projectKey: string;
|
|
116
|
+
agentName: string;
|
|
117
|
+
epicId: string;
|
|
118
|
+
beadId: string;
|
|
119
|
+
workerId: string;
|
|
120
|
+
status: "approved" | "needs_changes";
|
|
121
|
+
summary?: string;
|
|
122
|
+
issues?: Array<{
|
|
123
|
+
file: string;
|
|
124
|
+
line?: number;
|
|
125
|
+
issue: string;
|
|
126
|
+
suggestion?: string;
|
|
127
|
+
}>;
|
|
128
|
+
attemptNumber?: number;
|
|
129
|
+
remainingAttempts?: number;
|
|
130
|
+
rationale?: string;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Trace a review decision
|
|
134
|
+
*
|
|
135
|
+
* Call this when the coordinator approves or rejects worker output.
|
|
136
|
+
* Automatically creates entity link to the worker agent being reviewed.
|
|
137
|
+
*
|
|
138
|
+
* @param input - Review decision details
|
|
139
|
+
* @returns Created decision trace ID
|
|
140
|
+
*/
|
|
141
|
+
export declare function traceReviewDecision(input: ReviewDecisionInput): Promise<string>;
|
|
142
|
+
/**
|
|
143
|
+
* Input for tracing file selection decisions
|
|
144
|
+
*/
|
|
145
|
+
export interface FileSelectionInput {
|
|
146
|
+
projectKey: string;
|
|
147
|
+
agentName: string;
|
|
148
|
+
epicId?: string;
|
|
149
|
+
beadId: string;
|
|
150
|
+
filesSelected: string[];
|
|
151
|
+
filesOwned: string[];
|
|
152
|
+
rationale?: string;
|
|
153
|
+
scopeExpanded?: boolean;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Trace a file selection decision
|
|
157
|
+
*
|
|
158
|
+
* Call this when a worker selects which files to modify.
|
|
159
|
+
*
|
|
160
|
+
* @param input - File selection details
|
|
161
|
+
* @returns Created decision trace ID
|
|
162
|
+
*/
|
|
163
|
+
export declare function traceFileSelection(input: FileSelectionInput): Promise<string>;
|
|
164
|
+
/**
|
|
165
|
+
* Input for tracing scope change decisions
|
|
166
|
+
*/
|
|
167
|
+
export interface ScopeChangeInput {
|
|
168
|
+
projectKey: string;
|
|
169
|
+
agentName: string;
|
|
170
|
+
epicId?: string;
|
|
171
|
+
beadId: string;
|
|
172
|
+
filesAdded?: string[];
|
|
173
|
+
filesRemoved?: string[];
|
|
174
|
+
reason: string;
|
|
175
|
+
coordinatorApproved?: boolean;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Trace a scope change decision
|
|
179
|
+
*
|
|
180
|
+
* Call this when a worker expands or contracts their task scope.
|
|
181
|
+
*
|
|
182
|
+
* @param input - Scope change details
|
|
183
|
+
* @returns Created decision trace ID
|
|
184
|
+
*/
|
|
185
|
+
export declare function traceScopeChange(input: ScopeChangeInput): Promise<string>;
|
|
186
|
+
/**
|
|
187
|
+
* Get all decision traces for an epic
|
|
188
|
+
*
|
|
189
|
+
* Useful for post-hoc analysis of how an epic was coordinated.
|
|
190
|
+
*
|
|
191
|
+
* @param projectKey - Project path
|
|
192
|
+
* @param epicId - Epic ID to query
|
|
193
|
+
* @returns Array of decision traces
|
|
194
|
+
*/
|
|
195
|
+
export declare function getEpicDecisionTraces(projectKey: string, epicId: string): Promise<import("swarm-mail").DecisionTrace[]>;
|
|
196
|
+
/**
|
|
197
|
+
* Get decision traces by type for analysis
|
|
198
|
+
*
|
|
199
|
+
* @param projectKey - Project path
|
|
200
|
+
* @param decisionType - Type of decision to query
|
|
201
|
+
* @returns Array of decision traces
|
|
202
|
+
*/
|
|
203
|
+
export declare function getDecisionTracesByType(projectKey: string, decisionType: string): Promise<import("swarm-mail").DecisionTrace[]>;
|
|
204
|
+
//# sourceMappingURL=decision-trace-integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-trace-integration.d.ts","sourceRoot":"","sources":["../src/decision-trace-integration.ts"],"names":[],"mappings":"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"}
|
package/dist/hive.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hive.d.ts","sourceRoot":"","sources":["../src/hive.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAKL,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"hive.d.ts","sourceRoot":"","sources":["../src/hive.ts"],"names":[],"mappings":"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"}
|