spidersan 0.10.0 → 0.20.2
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/CHANGELOG.md +171 -0
- package/README.md +39 -280
- package/dist/bin/command-registry.d.ts +25 -0
- package/dist/bin/command-registry.d.ts.map +1 -0
- package/dist/bin/command-registry.js +29 -0
- package/dist/bin/command-registry.js.map +1 -0
- package/dist/bin/spidersan.d.ts +7 -0
- package/dist/bin/spidersan.d.ts.map +1 -1
- package/dist/bin/spidersan.js +38 -57
- package/dist/bin/spidersan.js.map +1 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +17 -3
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +11 -39
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/conflicts.d.ts +22 -0
- package/dist/commands/conflicts.d.ts.map +1 -1
- package/dist/commands/conflicts.js +459 -256
- package/dist/commands/conflicts.js.map +1 -1
- package/dist/commands/cross-conflicts.d.ts.map +1 -1
- package/dist/commands/cross-conflicts.js +7 -8
- package/dist/commands/cross-conflicts.js.map +1 -1
- package/dist/commands/depends.d.ts +4 -1
- package/dist/commands/depends.d.ts.map +1 -1
- package/dist/commands/depends.js +35 -8
- package/dist/commands/depends.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +25 -7
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/git-watch.d.ts +1 -1
- package/dist/commands/git-watch.js +1 -1
- package/dist/commands/github-sync.d.ts +33 -0
- package/dist/commands/github-sync.d.ts.map +1 -1
- package/dist/commands/github-sync.js +68 -57
- package/dist/commands/github-sync.js.map +1 -1
- package/dist/commands/index.d.ts +2 -13
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +5 -20
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/merge-order.d.ts.map +1 -1
- package/dist/commands/merge-order.js +8 -4
- package/dist/commands/merge-order.js.map +1 -1
- package/dist/commands/merged.d.ts.map +1 -1
- package/dist/commands/merged.js +5 -1
- package/dist/commands/merged.js.map +1 -1
- package/dist/commands/pr-check.d.ts +24 -0
- package/dist/commands/pr-check.d.ts.map +1 -0
- package/dist/commands/pr-check.js +85 -0
- package/dist/commands/pr-check.js.map +1 -0
- package/dist/commands/ready-check.d.ts.map +1 -1
- package/dist/commands/ready-check.js +6 -3
- package/dist/commands/ready-check.js.map +1 -1
- package/dist/commands/register.d.ts +5 -0
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +14 -1
- package/dist/commands/register.js.map +1 -1
- package/dist/commands/registry-sync.d.ts.map +1 -1
- package/dist/commands/registry-sync.js +12 -46
- package/dist/commands/registry-sync.js.map +1 -1
- package/dist/commands/stale.d.ts.map +1 -1
- package/dist/commands/stale.js +8 -3
- package/dist/commands/stale.js.map +1 -1
- package/dist/commands/sync.d.ts +14 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +49 -31
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/verify-trunk.d.ts +18 -0
- package/dist/commands/verify-trunk.d.ts.map +1 -0
- package/dist/commands/verify-trunk.js +77 -0
- package/dist/commands/verify-trunk.js.map +1 -0
- package/dist/commands/watch.d.ts +0 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +50 -77
- package/dist/commands/watch.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/activity.d.ts.map +1 -1
- package/dist/lib/activity.js +6 -2
- package/dist/lib/activity.js.map +1 -1
- package/dist/lib/ai/context-builder.d.ts.map +1 -1
- package/dist/lib/ai/context-builder.js +19 -6
- package/dist/lib/ai/context-builder.js.map +1 -1
- package/dist/lib/ai/event-handler.d.ts.map +1 -1
- package/dist/lib/ai/event-handler.js +15 -2
- package/dist/lib/ai/event-handler.js.map +1 -1
- package/dist/lib/ai/reasoner.d.ts.map +1 -1
- package/dist/lib/ai/reasoner.js +63 -82
- package/dist/lib/ai/reasoner.js.map +1 -1
- package/dist/lib/ai/setup.d.ts +1 -1
- package/dist/lib/ai/setup.d.ts.map +1 -1
- package/dist/lib/ai/types.d.ts.map +1 -1
- package/dist/lib/ai/types.js +5 -2
- package/dist/lib/ai/types.js.map +1 -1
- package/dist/lib/ast.d.ts +10 -2
- package/dist/lib/ast.d.ts.map +1 -1
- package/dist/lib/ast.js +52 -27
- package/dist/lib/ast.js.map +1 -1
- package/dist/lib/carries.d.ts +22 -0
- package/dist/lib/carries.d.ts.map +1 -0
- package/dist/lib/carries.js +56 -0
- package/dist/lib/carries.js.map +1 -0
- package/dist/lib/colony-subscriber.d.ts +1 -1
- package/dist/lib/colony-subscriber.js +1 -1
- package/dist/lib/config.d.ts +2 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +13 -8
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/conflict-renderer.d.ts.map +1 -1
- package/dist/lib/conflict-renderer.js +17 -34
- package/dist/lib/conflict-renderer.js.map +1 -1
- package/dist/lib/ecosystem-env.d.ts +33 -0
- package/dist/lib/ecosystem-env.d.ts.map +1 -0
- package/dist/lib/ecosystem-env.js +62 -0
- package/dist/lib/ecosystem-env.js.map +1 -0
- package/dist/lib/git-events-subscriber.d.ts +27 -0
- package/dist/lib/git-events-subscriber.d.ts.map +1 -1
- package/dist/lib/git-events-subscriber.js +149 -58
- package/dist/lib/git-events-subscriber.js.map +1 -1
- package/dist/lib/git-merge-analyzer.d.ts +38 -0
- package/dist/lib/git-merge-analyzer.d.ts.map +1 -0
- package/dist/lib/git-merge-analyzer.js +23 -0
- package/dist/lib/git-merge-analyzer.js.map +1 -0
- package/dist/lib/git.d.ts +88 -0
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +499 -9
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/github.d.ts +69 -1
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +230 -16
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/graph.d.ts +15 -0
- package/dist/lib/graph.d.ts.map +1 -1
- package/dist/lib/graph.js +31 -0
- package/dist/lib/graph.js.map +1 -1
- package/dist/lib/machine.d.ts +14 -0
- package/dist/lib/machine.d.ts.map +1 -0
- package/dist/lib/machine.js +38 -0
- package/dist/lib/machine.js.map +1 -0
- package/dist/lib/notify.d.ts +68 -0
- package/dist/lib/notify.d.ts.map +1 -0
- package/dist/lib/notify.js +111 -0
- package/dist/lib/notify.js.map +1 -0
- package/dist/lib/outline.d.ts +6 -0
- package/dist/lib/outline.d.ts.map +1 -0
- package/dist/lib/outline.js +60 -0
- package/dist/lib/outline.js.map +1 -0
- package/dist/lib/push-registry.d.ts +22 -0
- package/dist/lib/push-registry.d.ts.map +1 -0
- package/dist/lib/push-registry.js +21 -0
- package/dist/lib/push-registry.js.map +1 -0
- package/dist/lib/reconcile.d.ts +100 -0
- package/dist/lib/reconcile.d.ts.map +1 -0
- package/dist/lib/reconcile.js +121 -0
- package/dist/lib/reconcile.js.map +1 -0
- package/dist/lib/security.d.ts +1 -6
- package/dist/lib/security.d.ts.map +1 -1
- package/dist/lib/security.js +1 -11
- package/dist/lib/security.js.map +1 -1
- package/dist/lib/semantic-analysis.d.ts +31 -0
- package/dist/lib/semantic-analysis.d.ts.map +1 -0
- package/dist/lib/semantic-analysis.js +120 -0
- package/dist/lib/semantic-analysis.js.map +1 -0
- package/dist/lib/supabase-credentials.d.ts +36 -0
- package/dist/lib/supabase-credentials.d.ts.map +1 -0
- package/dist/lib/supabase-credentials.js +43 -0
- package/dist/lib/supabase-credentials.js.map +1 -0
- package/dist/lib/trunk.d.ts +39 -0
- package/dist/lib/trunk.d.ts.map +1 -0
- package/dist/lib/trunk.js +116 -0
- package/dist/lib/trunk.js.map +1 -0
- package/dist/storage/adapter.d.ts +20 -1
- package/dist/storage/adapter.d.ts.map +1 -1
- package/dist/storage/branch-registry-store.d.ts +1 -1
- package/dist/storage/branch-registry-store.d.ts.map +1 -1
- package/dist/storage/factory.d.ts +0 -4
- package/dist/storage/factory.d.ts.map +1 -1
- package/dist/storage/factory.js +2 -26
- package/dist/storage/factory.js.map +1 -1
- package/dist/storage/json-branch-registry-store.d.ts +1 -1
- package/dist/storage/json-branch-registry-store.d.ts.map +1 -1
- package/dist/storage/json-branch-registry-store.js +33 -7
- package/dist/storage/json-branch-registry-store.js.map +1 -1
- package/dist/storage/local.d.ts +1 -1
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/local.js +2 -2
- package/dist/storage/local.js.map +1 -1
- package/dist/storage/memory-branch-registry-store.d.ts +1 -1
- package/dist/storage/memory-branch-registry-store.d.ts.map +1 -1
- package/dist/storage/memory-branch-registry-store.js +4 -1
- package/dist/storage/memory-branch-registry-store.js.map +1 -1
- package/dist/storage/supabase-registry-sync-client-impl.d.ts +1 -7
- package/dist/storage/supabase-registry-sync-client-impl.d.ts.map +1 -1
- package/dist/storage/supabase-registry-sync-client-impl.js +17 -61
- package/dist/storage/supabase-registry-sync-client-impl.js.map +1 -1
- package/dist/storage/supabase-registry-sync-client.d.ts +1 -1
- package/dist/storage/supabase-registry-sync-client.d.ts.map +1 -1
- package/dist/storage/supabase.d.ts +3 -9
- package/dist/storage/supabase.d.ts.map +1 -1
- package/dist/storage/supabase.js +4 -22
- package/dist/storage/supabase.js.map +1 -1
- package/dist/types/cloud.d.ts +1 -0
- package/dist/types/cloud.d.ts.map +1 -1
- package/package.json +88 -90
- package/dist/commands/activate.d.ts +0 -9
- package/dist/commands/activate.d.ts.map +0 -1
- package/dist/commands/activate.js +0 -45
- package/dist/commands/activate.js.map +0 -1
- package/dist/commands/active-windows.d.ts +0 -16
- package/dist/commands/active-windows.d.ts.map +0 -1
- package/dist/commands/active-windows.js +0 -373
- package/dist/commands/active-windows.js.map +0 -1
- package/dist/commands/ai.d.ts +0 -15
- package/dist/commands/ai.d.ts.map +0 -1
- package/dist/commands/ai.js +0 -498
- package/dist/commands/ai.js.map +0 -1
- package/dist/commands/audit-mark.d.ts +0 -12
- package/dist/commands/audit-mark.d.ts.map +0 -1
- package/dist/commands/audit-mark.js +0 -204
- package/dist/commands/audit-mark.js.map +0 -1
- package/dist/commands/auto.d.ts +0 -8
- package/dist/commands/auto.d.ts.map +0 -1
- package/dist/commands/auto.js +0 -207
- package/dist/commands/auto.js.map +0 -1
- package/dist/commands/bot.d.ts +0 -16
- package/dist/commands/bot.d.ts.map +0 -1
- package/dist/commands/bot.js +0 -416
- package/dist/commands/bot.js.map +0 -1
- package/dist/commands/close.d.ts +0 -9
- package/dist/commands/close.d.ts.map +0 -1
- package/dist/commands/close.js +0 -129
- package/dist/commands/close.js.map +0 -1
- package/dist/commands/collab-sync.d.ts +0 -14
- package/dist/commands/collab-sync.d.ts.map +0 -1
- package/dist/commands/collab-sync.js +0 -264
- package/dist/commands/collab-sync.js.map +0 -1
- package/dist/commands/collab.d.ts +0 -6
- package/dist/commands/collab.d.ts.map +0 -1
- package/dist/commands/collab.js +0 -103
- package/dist/commands/collab.js.map +0 -1
- package/dist/commands/completions.d.ts +0 -8
- package/dist/commands/completions.d.ts.map +0 -1
- package/dist/commands/completions.js +0 -83
- package/dist/commands/completions.js.map +0 -1
- package/dist/commands/daily.d.ts +0 -7
- package/dist/commands/daily.d.ts.map +0 -1
- package/dist/commands/daily.js +0 -171
- package/dist/commands/daily.js.map +0 -1
- package/dist/commands/dashboard.d.ts +0 -22
- package/dist/commands/dashboard.d.ts.map +0 -1
- package/dist/commands/dashboard.js +0 -401
- package/dist/commands/dashboard.js.map +0 -1
- package/dist/commands/demo.d.ts +0 -3
- package/dist/commands/demo.d.ts.map +0 -1
- package/dist/commands/demo.js +0 -118
- package/dist/commands/demo.js.map +0 -1
- package/dist/commands/ecosystem-loader.d.ts +0 -14
- package/dist/commands/ecosystem-loader.d.ts.map +0 -1
- package/dist/commands/ecosystem-loader.js +0 -90
- package/dist/commands/ecosystem-loader.js.map +0 -1
- package/dist/commands/fleet-status.d.ts +0 -14
- package/dist/commands/fleet-status.d.ts.map +0 -1
- package/dist/commands/fleet-status.js +0 -127
- package/dist/commands/fleet-status.js.map +0 -1
- package/dist/commands/inbox.d.ts +0 -3
- package/dist/commands/inbox.d.ts.map +0 -1
- package/dist/commands/inbox.js +0 -120
- package/dist/commands/inbox.js.map +0 -1
- package/dist/commands/intent-scan.d.ts +0 -17
- package/dist/commands/intent-scan.d.ts.map +0 -1
- package/dist/commands/intent-scan.js +0 -336
- package/dist/commands/intent-scan.js.map +0 -1
- package/dist/commands/key-import.d.ts +0 -3
- package/dist/commands/key-import.d.ts.map +0 -1
- package/dist/commands/key-import.js +0 -54
- package/dist/commands/key-import.js.map +0 -1
- package/dist/commands/keygen.d.ts +0 -3
- package/dist/commands/keygen.d.ts.map +0 -1
- package/dist/commands/keygen.js +0 -53
- package/dist/commands/keygen.js.map +0 -1
- package/dist/commands/keys.d.ts +0 -3
- package/dist/commands/keys.d.ts.map +0 -1
- package/dist/commands/keys.js +0 -56
- package/dist/commands/keys.js.map +0 -1
- package/dist/commands/lock.d.ts +0 -11
- package/dist/commands/lock.d.ts.map +0 -1
- package/dist/commands/lock.js +0 -257
- package/dist/commands/lock.js.map +0 -1
- package/dist/commands/mcp-health.d.ts +0 -3
- package/dist/commands/mcp-health.d.ts.map +0 -1
- package/dist/commands/mcp-health.js +0 -305
- package/dist/commands/mcp-health.js.map +0 -1
- package/dist/commands/mcp-restart.d.ts +0 -3
- package/dist/commands/mcp-restart.d.ts.map +0 -1
- package/dist/commands/mcp-restart.js +0 -176
- package/dist/commands/mcp-restart.js.map +0 -1
- package/dist/commands/monitor.d.ts +0 -3
- package/dist/commands/monitor.d.ts.map +0 -1
- package/dist/commands/monitor.js +0 -153
- package/dist/commands/monitor.js.map +0 -1
- package/dist/commands/msg-read.d.ts +0 -3
- package/dist/commands/msg-read.d.ts.map +0 -1
- package/dist/commands/msg-read.js +0 -95
- package/dist/commands/msg-read.js.map +0 -1
- package/dist/commands/pulse.d.ts +0 -13
- package/dist/commands/pulse.d.ts.map +0 -1
- package/dist/commands/pulse.js +0 -174
- package/dist/commands/pulse.js.map +0 -1
- package/dist/commands/queen.d.ts +0 -25
- package/dist/commands/queen.d.ts.map +0 -1
- package/dist/commands/queen.js +0 -326
- package/dist/commands/queen.js.map +0 -1
- package/dist/commands/radar.d.ts +0 -3
- package/dist/commands/radar.d.ts.map +0 -1
- package/dist/commands/radar.js +0 -147
- package/dist/commands/radar.js.map +0 -1
- package/dist/commands/rescue.d.ts +0 -11
- package/dist/commands/rescue.d.ts.map +0 -1
- package/dist/commands/rescue.js +0 -147
- package/dist/commands/rescue.js.map +0 -1
- package/dist/commands/semantic.d.ts +0 -3
- package/dist/commands/semantic.d.ts.map +0 -1
- package/dist/commands/semantic.js +0 -62
- package/dist/commands/semantic.js.map +0 -1
- package/dist/commands/send.d.ts +0 -3
- package/dist/commands/send.d.ts.map +0 -1
- package/dist/commands/send.js +0 -121
- package/dist/commands/send.js.map +0 -1
- package/dist/commands/status.d.ts +0 -9
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -41
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/sync-advisor.d.ts +0 -14
- package/dist/commands/sync-advisor.d.ts.map +0 -1
- package/dist/commands/sync-advisor.js +0 -110
- package/dist/commands/sync-advisor.js.map +0 -1
- package/dist/commands/tension.d.ts +0 -12
- package/dist/commands/tension.d.ts.map +0 -1
- package/dist/commands/tension.js +0 -262
- package/dist/commands/tension.js.map +0 -1
- package/dist/commands/torrent.d.ts +0 -9
- package/dist/commands/torrent.d.ts.map +0 -1
- package/dist/commands/torrent.js +0 -470
- package/dist/commands/torrent.js.map +0 -1
- package/dist/commands/tui.d.ts +0 -8
- package/dist/commands/tui.d.ts.map +0 -1
- package/dist/commands/tui.js +0 -15
- package/dist/commands/tui.js.map +0 -1
- package/dist/commands/wake.d.ts +0 -9
- package/dist/commands/wake.d.ts.map +0 -1
- package/dist/commands/wake.js +0 -188
- package/dist/commands/wake.js.map +0 -1
- package/dist/commands/welcome.d.ts +0 -8
- package/dist/commands/welcome.d.ts.map +0 -1
- package/dist/commands/welcome.js +0 -85
- package/dist/commands/welcome.js.map +0 -1
- package/dist/commands/who-owns.d.ts +0 -3
- package/dist/commands/who-owns.d.ts.map +0 -1
- package/dist/commands/who-owns.js +0 -68
- package/dist/commands/who-owns.js.map +0 -1
- package/dist/commands/who-touched.d.ts +0 -9
- package/dist/commands/who-touched.d.ts.map +0 -1
- package/dist/commands/who-touched.js +0 -198
- package/dist/commands/who-touched.js.map +0 -1
- package/dist/lib/crdt.d.ts +0 -83
- package/dist/lib/crdt.d.ts.map +0 -1
- package/dist/lib/crdt.js +0 -160
- package/dist/lib/crdt.js.map +0 -1
- package/dist/lib/daily-bridge.d.ts +0 -41
- package/dist/lib/daily-bridge.d.ts.map +0 -1
- package/dist/lib/daily-bridge.js +0 -186
- package/dist/lib/daily-bridge.js.map +0 -1
- package/dist/lib/hub.d.ts +0 -31
- package/dist/lib/hub.d.ts.map +0 -1
- package/dist/lib/hub.js +0 -92
- package/dist/lib/hub.js.map +0 -1
- package/dist/lib/license.d.ts +0 -61
- package/dist/lib/license.d.ts.map +0 -1
- package/dist/lib/license.js +0 -171
- package/dist/lib/license.js.map +0 -1
- package/dist/lib/pulse-renderer.d.ts +0 -19
- package/dist/lib/pulse-renderer.d.ts.map +0 -1
- package/dist/lib/pulse-renderer.js +0 -108
- package/dist/lib/pulse-renderer.js.map +0 -1
- package/dist/lib/repo-scanner.d.ts +0 -32
- package/dist/lib/repo-scanner.d.ts.map +0 -1
- package/dist/lib/repo-scanner.js +0 -160
- package/dist/lib/repo-scanner.js.map +0 -1
- package/dist/lib/salvage-analyzer.d.ts +0 -29
- package/dist/lib/salvage-analyzer.d.ts.map +0 -1
- package/dist/lib/salvage-analyzer.js +0 -121
- package/dist/lib/salvage-analyzer.js.map +0 -1
- package/dist/lib/session-logger.d.ts +0 -54
- package/dist/lib/session-logger.d.ts.map +0 -1
- package/dist/lib/session-logger.js +0 -136
- package/dist/lib/session-logger.js.map +0 -1
- package/dist/lib/symbol-extractor.d.ts +0 -41
- package/dist/lib/symbol-extractor.d.ts.map +0 -1
- package/dist/lib/symbol-extractor.js +0 -78
- package/dist/lib/symbol-extractor.js.map +0 -1
- package/dist/storage/git-messages.d.ts +0 -53
- package/dist/storage/git-messages.d.ts.map +0 -1
- package/dist/storage/git-messages.js +0 -376
- package/dist/storage/git-messages.js.map +0 -1
- package/dist/storage/local-messages.d.ts +0 -37
- package/dist/storage/local-messages.d.ts.map +0 -1
- package/dist/storage/local-messages.js +0 -151
- package/dist/storage/local-messages.js.map +0 -1
- package/dist/storage/message-adapter.d.ts +0 -86
- package/dist/storage/message-adapter.d.ts.map +0 -1
- package/dist/storage/message-adapter.js +0 -28
- package/dist/storage/message-adapter.js.map +0 -1
- package/dist/storage/message-factory.d.ts +0 -36
- package/dist/storage/message-factory.d.ts.map +0 -1
- package/dist/storage/message-factory.js +0 -99
- package/dist/storage/message-factory.js.map +0 -1
- package/dist/storage/mycmail-adapter.d.ts +0 -38
- package/dist/storage/mycmail-adapter.d.ts.map +0 -1
- package/dist/storage/mycmail-adapter.js +0 -300
- package/dist/storage/mycmail-adapter.js.map +0 -1
- package/dist/tui/dashboard.d.ts +0 -35
- package/dist/tui/dashboard.d.ts.map +0 -1
- package/dist/tui/dashboard.js +0 -199
- package/dist/tui/dashboard.js.map +0 -1
- package/dist/tui/screen.d.ts +0 -14
- package/dist/tui/screen.d.ts.map +0 -1
- package/dist/tui/screen.js +0 -138
- package/dist/tui/screen.js.map +0 -1
package/dist/lib/crdt.d.ts
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Spidersan CRDT State
|
|
3
|
-
*
|
|
4
|
-
* Decentralized symbol locking using Yjs CRDTs.
|
|
5
|
-
* Allows agents to claim symbols before editing, preventing conflicts.
|
|
6
|
-
*
|
|
7
|
-
* @module crdt
|
|
8
|
-
*/
|
|
9
|
-
import * as Y from 'yjs';
|
|
10
|
-
export interface SymbolLock {
|
|
11
|
-
symbolId: string;
|
|
12
|
-
agentId: string;
|
|
13
|
-
astHash: string;
|
|
14
|
-
timestamp: number;
|
|
15
|
-
description?: string;
|
|
16
|
-
}
|
|
17
|
-
export interface SwarmStateOptions {
|
|
18
|
-
agentId: string;
|
|
19
|
-
onUpdate?: (update: Uint8Array) => void;
|
|
20
|
-
}
|
|
21
|
-
export declare class SwarmState {
|
|
22
|
-
doc: Y.Doc;
|
|
23
|
-
locks: Y.Map<SymbolLock>;
|
|
24
|
-
intents: Y.Map<string>;
|
|
25
|
-
agentId: string;
|
|
26
|
-
private onUpdate?;
|
|
27
|
-
constructor(options: SwarmStateOptions);
|
|
28
|
-
/**
|
|
29
|
-
* Try to acquire a lock on a symbol
|
|
30
|
-
* Returns true if lock acquired, false if already locked by another agent
|
|
31
|
-
*/
|
|
32
|
-
acquireLock(symbolId: string, astHash: string, description?: string): boolean;
|
|
33
|
-
/**
|
|
34
|
-
* Release a lock on a symbol
|
|
35
|
-
*/
|
|
36
|
-
releaseLock(symbolId: string): boolean;
|
|
37
|
-
/**
|
|
38
|
-
* Release all locks held by this agent
|
|
39
|
-
*/
|
|
40
|
-
releaseAllLocks(): number;
|
|
41
|
-
/**
|
|
42
|
-
* Get lock info for a symbol
|
|
43
|
-
*/
|
|
44
|
-
getLock(symbolId: string): SymbolLock | undefined;
|
|
45
|
-
/**
|
|
46
|
-
* Check if a symbol is locked by another agent
|
|
47
|
-
*/
|
|
48
|
-
isLockedByOther(symbolId: string): boolean;
|
|
49
|
-
/**
|
|
50
|
-
* Get all locks held by a specific agent
|
|
51
|
-
*/
|
|
52
|
-
getAgentLocks(agentId: string): SymbolLock[];
|
|
53
|
-
/**
|
|
54
|
-
* Get all active locks
|
|
55
|
-
*/
|
|
56
|
-
getAllLocks(): SymbolLock[];
|
|
57
|
-
/**
|
|
58
|
-
* Set current intent for this agent
|
|
59
|
-
*/
|
|
60
|
-
setIntent(intent: string): void;
|
|
61
|
-
/**
|
|
62
|
-
* Get intent for an agent
|
|
63
|
-
*/
|
|
64
|
-
getIntent(agentId: string): string | undefined;
|
|
65
|
-
/**
|
|
66
|
-
* Get all agent intents
|
|
67
|
-
*/
|
|
68
|
-
getAllIntents(): Map<string, string>;
|
|
69
|
-
/**
|
|
70
|
-
* Apply an update from another agent
|
|
71
|
-
*/
|
|
72
|
-
applyUpdate(update: Uint8Array): void;
|
|
73
|
-
/**
|
|
74
|
-
* Get the current state as an update (for initial sync)
|
|
75
|
-
*/
|
|
76
|
-
getStateAsUpdate(): Uint8Array;
|
|
77
|
-
/**
|
|
78
|
-
* Merge state from another SwarmState instance
|
|
79
|
-
*/
|
|
80
|
-
mergeFrom(other: SwarmState): void;
|
|
81
|
-
}
|
|
82
|
-
export declare function createSwarmState(agentId: string, onUpdate?: (update: Uint8Array) => void): SwarmState;
|
|
83
|
-
//# sourceMappingURL=crdt.d.ts.map
|
package/dist/lib/crdt.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crdt.d.ts","sourceRoot":"","sources":["../../src/lib/crdt.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;CAC3C;AAED,qBAAa,UAAU;IACZ,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;IACX,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,CAA+B;gBAEpC,OAAO,EAAE,iBAAiB;IAgBtC;;;OAGG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO;IA0B7E;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAStC;;OAEG;IACH,eAAe,IAAI,MAAM;IAWzB;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIjD;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAK1C;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAU5C;;OAEG;IACH,WAAW,IAAI,UAAU,EAAE;IAM3B;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C;;OAEG;IACH,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAQpC;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAIrC;;OAEG;IACH,gBAAgB,IAAI,UAAU;IAI9B;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAIrC;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,GAAG,UAAU,CAErG"}
|
package/dist/lib/crdt.js
DELETED
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Spidersan CRDT State
|
|
3
|
-
*
|
|
4
|
-
* Decentralized symbol locking using Yjs CRDTs.
|
|
5
|
-
* Allows agents to claim symbols before editing, preventing conflicts.
|
|
6
|
-
*
|
|
7
|
-
* @module crdt
|
|
8
|
-
*/
|
|
9
|
-
import * as Y from 'yjs';
|
|
10
|
-
export class SwarmState {
|
|
11
|
-
doc;
|
|
12
|
-
locks;
|
|
13
|
-
intents; // agentId -> current intent
|
|
14
|
-
agentId;
|
|
15
|
-
onUpdate;
|
|
16
|
-
constructor(options) {
|
|
17
|
-
this.doc = new Y.Doc();
|
|
18
|
-
this.agentId = options.agentId;
|
|
19
|
-
this.onUpdate = options.onUpdate;
|
|
20
|
-
this.locks = this.doc.getMap('locks');
|
|
21
|
-
this.intents = this.doc.getMap('intents');
|
|
22
|
-
// Propagate updates to sync callback
|
|
23
|
-
this.doc.on('update', (update) => {
|
|
24
|
-
if (this.onUpdate) {
|
|
25
|
-
this.onUpdate(update);
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Try to acquire a lock on a symbol
|
|
31
|
-
* Returns true if lock acquired, false if already locked by another agent
|
|
32
|
-
*/
|
|
33
|
-
acquireLock(symbolId, astHash, description) {
|
|
34
|
-
const existingLock = this.locks.get(symbolId);
|
|
35
|
-
// Check if locked by another agent
|
|
36
|
-
if (existingLock && existingLock.agentId !== this.agentId) {
|
|
37
|
-
// Check if lock is stale (older than 30 minutes)
|
|
38
|
-
const staleThreshold = 30 * 60 * 1000;
|
|
39
|
-
if (Date.now() - existingLock.timestamp > staleThreshold) {
|
|
40
|
-
console.warn(`🕷️ Taking over stale lock on ${symbolId} from ${existingLock.agentId}`);
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
return false; // Still locked by active agent
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// Acquire or refresh lock
|
|
47
|
-
const lock = {
|
|
48
|
-
symbolId,
|
|
49
|
-
agentId: this.agentId,
|
|
50
|
-
astHash,
|
|
51
|
-
timestamp: Date.now(),
|
|
52
|
-
description,
|
|
53
|
-
};
|
|
54
|
-
this.locks.set(symbolId, lock);
|
|
55
|
-
return true;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Release a lock on a symbol
|
|
59
|
-
*/
|
|
60
|
-
releaseLock(symbolId) {
|
|
61
|
-
const lock = this.locks.get(symbolId);
|
|
62
|
-
if (lock && lock.agentId === this.agentId) {
|
|
63
|
-
this.locks.delete(symbolId);
|
|
64
|
-
return true;
|
|
65
|
-
}
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Release all locks held by this agent
|
|
70
|
-
*/
|
|
71
|
-
releaseAllLocks() {
|
|
72
|
-
let released = 0;
|
|
73
|
-
this.locks.forEach((lock, symbolId) => {
|
|
74
|
-
if (lock.agentId === this.agentId) {
|
|
75
|
-
this.locks.delete(symbolId);
|
|
76
|
-
released++;
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
return released;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Get lock info for a symbol
|
|
83
|
-
*/
|
|
84
|
-
getLock(symbolId) {
|
|
85
|
-
return this.locks.get(symbolId);
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Check if a symbol is locked by another agent
|
|
89
|
-
*/
|
|
90
|
-
isLockedByOther(symbolId) {
|
|
91
|
-
const lock = this.locks.get(symbolId);
|
|
92
|
-
return lock !== undefined && lock.agentId !== this.agentId;
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Get all locks held by a specific agent
|
|
96
|
-
*/
|
|
97
|
-
getAgentLocks(agentId) {
|
|
98
|
-
const locks = [];
|
|
99
|
-
this.locks.forEach((lock) => {
|
|
100
|
-
if (lock.agentId === agentId) {
|
|
101
|
-
locks.push(lock);
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
return locks;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Get all active locks
|
|
108
|
-
*/
|
|
109
|
-
getAllLocks() {
|
|
110
|
-
const locks = [];
|
|
111
|
-
this.locks.forEach((lock) => locks.push(lock));
|
|
112
|
-
return locks;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Set current intent for this agent
|
|
116
|
-
*/
|
|
117
|
-
setIntent(intent) {
|
|
118
|
-
this.intents.set(this.agentId, intent);
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Get intent for an agent
|
|
122
|
-
*/
|
|
123
|
-
getIntent(agentId) {
|
|
124
|
-
return this.intents.get(agentId);
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Get all agent intents
|
|
128
|
-
*/
|
|
129
|
-
getAllIntents() {
|
|
130
|
-
const intents = new Map();
|
|
131
|
-
this.intents.forEach((intent, agentId) => {
|
|
132
|
-
intents.set(agentId, intent);
|
|
133
|
-
});
|
|
134
|
-
return intents;
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Apply an update from another agent
|
|
138
|
-
*/
|
|
139
|
-
applyUpdate(update) {
|
|
140
|
-
Y.applyUpdate(this.doc, update);
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Get the current state as an update (for initial sync)
|
|
144
|
-
*/
|
|
145
|
-
getStateAsUpdate() {
|
|
146
|
-
return Y.encodeStateAsUpdate(this.doc);
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Merge state from another SwarmState instance
|
|
150
|
-
*/
|
|
151
|
-
mergeFrom(other) {
|
|
152
|
-
const update = other.getStateAsUpdate();
|
|
153
|
-
this.applyUpdate(update);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
// Factory function for creating connected swarm states
|
|
157
|
-
export function createSwarmState(agentId, onUpdate) {
|
|
158
|
-
return new SwarmState({ agentId, onUpdate });
|
|
159
|
-
}
|
|
160
|
-
//# sourceMappingURL=crdt.js.map
|
package/dist/lib/crdt.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"crdt.js","sourceRoot":"","sources":["../../src/lib/crdt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Daily Bridge — L2
|
|
3
|
-
* Reads treebird-internal daily collab files and filters for branch-relevant entries.
|
|
4
|
-
* Read-only: never writes to collab (toak owns writes).
|
|
5
|
-
*/
|
|
6
|
-
export interface DailyEntry {
|
|
7
|
-
date: string;
|
|
8
|
-
time: string;
|
|
9
|
-
agent: string;
|
|
10
|
-
agentId: string;
|
|
11
|
-
content: string;
|
|
12
|
-
excerpt: string;
|
|
13
|
-
matchedTerms: string[];
|
|
14
|
-
}
|
|
15
|
-
export interface DailyBridgeOptions {
|
|
16
|
-
/** Path to daily collab directory. Defaults to TREEBIRD_DAILY or ~/Dev/treebird-internal/collab/daily */
|
|
17
|
-
dailyDir?: string;
|
|
18
|
-
/** Only parse this specific date (YYYY-MM-DD) */
|
|
19
|
-
date?: string;
|
|
20
|
-
/** How many days back to scan (default 14) */
|
|
21
|
-
lookback?: number;
|
|
22
|
-
/** Extra terms to match (branch names, file paths, etc.) */
|
|
23
|
-
terms?: string[];
|
|
24
|
-
/** Agent IDs to filter by */
|
|
25
|
-
agents?: string[];
|
|
26
|
-
/** If true, only return entries that matched at least one term */
|
|
27
|
-
requireMatch?: boolean;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Query daily collab files for branch-relevant entries.
|
|
31
|
-
*/
|
|
32
|
-
export declare function queryDaily(options?: DailyBridgeOptions): DailyEntry[];
|
|
33
|
-
/**
|
|
34
|
-
* Get today's date string YYYY-MM-DD
|
|
35
|
-
*/
|
|
36
|
-
export declare function todayStr(): string;
|
|
37
|
-
/**
|
|
38
|
-
* List all available daily dates (newest first)
|
|
39
|
-
*/
|
|
40
|
-
export declare function listDailyDates(dailyDir?: string): string[];
|
|
41
|
-
//# sourceMappingURL=daily-bridge.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"daily-bridge.d.ts","sourceRoot":"","sources":["../../src/lib/daily-bridge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IAC/B,yGAAyG;IACzG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,kEAAkE;IAClE,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B;AAqID;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,kBAAuB,GAAG,UAAU,EAAE,CA2CzE;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ1D"}
|
package/dist/lib/daily-bridge.js
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Daily Bridge — L2
|
|
3
|
-
* Reads treebird-internal daily collab files and filters for branch-relevant entries.
|
|
4
|
-
* Read-only: never writes to collab (toak owns writes).
|
|
5
|
-
*/
|
|
6
|
-
import { existsSync, readdirSync, readFileSync } from 'fs';
|
|
7
|
-
import { join } from 'path';
|
|
8
|
-
import { homedir } from 'os';
|
|
9
|
-
const BRANCH_KEYWORDS = [
|
|
10
|
-
'merge', 'cherry-pick', 'cherry pick', 'rebase', 'conflict',
|
|
11
|
-
'branch', 'abandon', 'stale', 'pr', 'pull request', 'push', 'worktree',
|
|
12
|
-
'tidy', 'cleanup', 'register',
|
|
13
|
-
];
|
|
14
|
-
const DAILY_FILE_REGEX = /^\d{4}-\d{2}-\d{2}-daily\.md$/;
|
|
15
|
-
const AGENT_EMOJI_MAP = {
|
|
16
|
-
'🌳': 'treesan',
|
|
17
|
-
'🐦': 'birdsan',
|
|
18
|
-
'🔍': 'sherlocksan',
|
|
19
|
-
'🍄': 'mycsan',
|
|
20
|
-
'🕷️': 'spidersan',
|
|
21
|
-
'🤖': 'codex',
|
|
22
|
-
'📚': 'teachersan',
|
|
23
|
-
'🗺️': 'mappersan',
|
|
24
|
-
'🌊': 'watsan',
|
|
25
|
-
'🦅': 'artisan',
|
|
26
|
-
'🐛': 'birdsan',
|
|
27
|
-
'💎': 'nanoclaw',
|
|
28
|
-
};
|
|
29
|
-
function getDailyDir() {
|
|
30
|
-
if (process.env.TREEBIRD_DAILY)
|
|
31
|
-
return process.env.TREEBIRD_DAILY;
|
|
32
|
-
const internal = process.env.TREEBIRD_INTERNAL
|
|
33
|
-
|| join(homedir(), 'Dev', 'treebird-internal');
|
|
34
|
-
return join(internal, 'collab', 'daily');
|
|
35
|
-
}
|
|
36
|
-
function normaliseAgent(raw) {
|
|
37
|
-
// Try emoji map first
|
|
38
|
-
for (const [emoji, id] of Object.entries(AGENT_EMOJI_MAP)) {
|
|
39
|
-
if (raw.includes(emoji))
|
|
40
|
-
return id;
|
|
41
|
-
}
|
|
42
|
-
// Strip emoji + trim
|
|
43
|
-
return raw.replace(/[\p{Emoji_Presentation}\p{Extended_Pictographic}]/gu, '').trim().toLowerCase();
|
|
44
|
-
}
|
|
45
|
-
// Known non-entry table headers (Start/Stop/Continue, etc.)
|
|
46
|
-
const NON_ENTRY_HEADERS = new Set(['start', 'stop', 'continue', 'time', 'agent', 'entry', 'summary', 'what', 'when', 'why', 'branch', 'status', 'repo', 'owner', 'blockedby', '#']);
|
|
47
|
-
function looksLikeTimeOrAgent(s) {
|
|
48
|
-
// Time-like: HH:MM, "dawn", "today", "morning", "closing", "late", "evening", "--", "session", "afternoon"
|
|
49
|
-
if (/^\d{2}:\d{2}/.test(s))
|
|
50
|
-
return true;
|
|
51
|
-
if (/^(dawn|today|morning|closing|late|evening|afternoon|session|--|\d+:\d+|`\d+:\d+`)$/i.test(s))
|
|
52
|
-
return true;
|
|
53
|
-
// Agent-like: contains emoji or known agent name
|
|
54
|
-
if (/[\p{Emoji_Presentation}\p{Extended_Pictographic}]/u.test(s))
|
|
55
|
-
return true;
|
|
56
|
-
if (/\b(treesan|birdsan|sherlocksan|mycsan|spidersan|codex|artisan|watsan|nanoclaw|sasusan|mappersan|teachersan|copilot)\b/i.test(s))
|
|
57
|
-
return true;
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
function parseTableEntries(content, date) {
|
|
61
|
-
const entries = [];
|
|
62
|
-
const lines = content.split('\n');
|
|
63
|
-
for (const line of lines) {
|
|
64
|
-
// Match 3-column table rows: | col1 | col2 | col3 |
|
|
65
|
-
const m = line.match(/^\|\s*([^|]+?)\s*\|\s*([^|]+?)\s*\|\s*(.+?)\s*\|?\s*$/);
|
|
66
|
-
if (!m)
|
|
67
|
-
continue;
|
|
68
|
-
const time = m[1].trim();
|
|
69
|
-
const agentRaw = m[2].trim();
|
|
70
|
-
const entryContent = m[3].trim();
|
|
71
|
-
// Skip separator rows
|
|
72
|
-
if (time === '---' || agentRaw === '---' || entryContent === '---')
|
|
73
|
-
continue;
|
|
74
|
-
// Skip known non-entry table headers
|
|
75
|
-
if (NON_ENTRY_HEADERS.has(time.toLowerCase()) && NON_ENTRY_HEADERS.has(agentRaw.toLowerCase()))
|
|
76
|
-
continue;
|
|
77
|
-
// Must look like a time/agent pattern
|
|
78
|
-
if (!looksLikeTimeOrAgent(time) && !looksLikeTimeOrAgent(agentRaw))
|
|
79
|
-
continue;
|
|
80
|
-
// Content must be substantial (>20 chars) to be a real entry
|
|
81
|
-
if (!entryContent || entryContent.length < 20)
|
|
82
|
-
continue;
|
|
83
|
-
const agentId = normaliseAgent(agentRaw);
|
|
84
|
-
const excerpt = entryContent.replace(/\*\*/g, '').slice(0, 120) + (entryContent.length > 120 ? '…' : '');
|
|
85
|
-
entries.push({
|
|
86
|
-
date,
|
|
87
|
-
time,
|
|
88
|
-
agent: agentRaw,
|
|
89
|
-
agentId,
|
|
90
|
-
content: entryContent,
|
|
91
|
-
excerpt,
|
|
92
|
-
matchedTerms: [],
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
return entries;
|
|
96
|
-
}
|
|
97
|
-
function scoreEntry(entry, terms, _agents) {
|
|
98
|
-
const text = entry.content.toLowerCase();
|
|
99
|
-
const matched = [];
|
|
100
|
-
for (const term of terms) {
|
|
101
|
-
if (text.includes(term.toLowerCase())) {
|
|
102
|
-
matched.push(term);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
// Always match branch keywords
|
|
106
|
-
for (const kw of BRANCH_KEYWORDS) {
|
|
107
|
-
if (text.includes(kw) && !matched.includes(kw)) {
|
|
108
|
-
matched.push(kw);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return matched;
|
|
112
|
-
}
|
|
113
|
-
function listDailyFiles(dailyDir, lookback) {
|
|
114
|
-
if (!existsSync(dailyDir))
|
|
115
|
-
return [];
|
|
116
|
-
const files = readdirSync(dailyDir)
|
|
117
|
-
.filter(f => DAILY_FILE_REGEX.test(f))
|
|
118
|
-
.sort()
|
|
119
|
-
.reverse();
|
|
120
|
-
const cutoff = new Date();
|
|
121
|
-
cutoff.setDate(cutoff.getDate() - lookback);
|
|
122
|
-
const cutoffStr = cutoff.toISOString().split('T')[0];
|
|
123
|
-
return files
|
|
124
|
-
.map(f => ({ date: f.slice(0, 10), path: join(dailyDir, f) }))
|
|
125
|
-
.filter(f => f.date >= cutoffStr);
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Query daily collab files for branch-relevant entries.
|
|
129
|
-
*/
|
|
130
|
-
export function queryDaily(options = {}) {
|
|
131
|
-
const dailyDir = options.dailyDir || getDailyDir();
|
|
132
|
-
const lookback = options.lookback ?? 14;
|
|
133
|
-
const requireMatch = options.requireMatch ?? true;
|
|
134
|
-
const terms = options.terms ?? [];
|
|
135
|
-
const agents = options.agents ?? [];
|
|
136
|
-
let files;
|
|
137
|
-
if (options.date) {
|
|
138
|
-
const p = join(dailyDir, `${options.date}-daily.md`);
|
|
139
|
-
files = existsSync(p) ? [{ date: options.date, path: p }] : [];
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
files = listDailyFiles(dailyDir, lookback);
|
|
143
|
-
}
|
|
144
|
-
const results = [];
|
|
145
|
-
for (const { date, path } of files) {
|
|
146
|
-
let content;
|
|
147
|
-
try {
|
|
148
|
-
content = readFileSync(path, 'utf-8');
|
|
149
|
-
}
|
|
150
|
-
catch {
|
|
151
|
-
continue;
|
|
152
|
-
}
|
|
153
|
-
const entries = parseTableEntries(content, date);
|
|
154
|
-
for (const entry of entries) {
|
|
155
|
-
// Agent filter
|
|
156
|
-
if (agents.length > 0 && !agents.some(a => entry.agentId.includes(a.toLowerCase()))) {
|
|
157
|
-
continue;
|
|
158
|
-
}
|
|
159
|
-
entry.matchedTerms = scoreEntry(entry, terms, agents);
|
|
160
|
-
if (requireMatch && entry.matchedTerms.length === 0)
|
|
161
|
-
continue;
|
|
162
|
-
results.push(entry);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
return results;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Get today's date string YYYY-MM-DD
|
|
169
|
-
*/
|
|
170
|
-
export function todayStr() {
|
|
171
|
-
return new Date().toISOString().split('T')[0];
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* List all available daily dates (newest first)
|
|
175
|
-
*/
|
|
176
|
-
export function listDailyDates(dailyDir) {
|
|
177
|
-
const dir = dailyDir || getDailyDir();
|
|
178
|
-
if (!existsSync(dir))
|
|
179
|
-
return [];
|
|
180
|
-
return readdirSync(dir)
|
|
181
|
-
.filter(f => DAILY_FILE_REGEX.test(f))
|
|
182
|
-
.map(f => f.slice(0, 10))
|
|
183
|
-
.sort()
|
|
184
|
-
.reverse();
|
|
185
|
-
}
|
|
186
|
-
//# sourceMappingURL=daily-bridge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"daily-bridge.js","sourceRoot":"","sources":["../../src/lib/daily-bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/hub.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export interface ChatPayload {
|
|
2
|
-
message: string;
|
|
3
|
-
agent?: string;
|
|
4
|
-
name?: string;
|
|
5
|
-
glyph?: string;
|
|
6
|
-
}
|
|
7
|
-
export interface WakePayload {
|
|
8
|
-
sender: string;
|
|
9
|
-
reason: string;
|
|
10
|
-
}
|
|
11
|
-
export interface HubAdapter {
|
|
12
|
-
postToChat(payload: ChatPayload): Promise<void>;
|
|
13
|
-
wakeAgent(agentId: string, payload: WakePayload): Promise<boolean>;
|
|
14
|
-
}
|
|
15
|
-
export declare class HubClient {
|
|
16
|
-
private readonly adapter;
|
|
17
|
-
readonly url: string;
|
|
18
|
-
constructor(adapter: HubAdapter, url?: string);
|
|
19
|
-
postToChat(payload: ChatPayload): Promise<void>;
|
|
20
|
-
notifyConflict(branch: string, conflicts: Array<{
|
|
21
|
-
branch: string;
|
|
22
|
-
files: string[];
|
|
23
|
-
tier: number;
|
|
24
|
-
}>): Promise<void>;
|
|
25
|
-
wakeAgent(agentId: string, reason: string): Promise<boolean>;
|
|
26
|
-
}
|
|
27
|
-
export declare function createHubClient(options?: {
|
|
28
|
-
url?: string;
|
|
29
|
-
adapter?: HubAdapter;
|
|
30
|
-
}): HubClient;
|
|
31
|
-
//# sourceMappingURL=hub.d.ts.map
|
package/dist/lib/hub.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hub.d.ts","sourceRoot":"","sources":["../../src/lib/hub.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACvB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtE;AAgDD,qBAAa,SAAS;IAId,OAAO,CAAC,QAAQ,CAAC,OAAO;IAH5B,SAAgB,GAAG,EAAE,MAAM,CAAC;gBAGP,OAAO,EAAE,UAAU,EACpC,GAAG,GAAE,MAAwB;IAK3B,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/C,cAAc,CAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,GACpE,OAAO,CAAC,IAAI,CAAC;IAiBV,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAWrE;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,UAAU,CAAC;CACnB,GAAG,SAAS,CAIjB"}
|
package/dist/lib/hub.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
const DEFAULT_HUB_URL = process.env.HUB_URL || 'https://hub.treebird.uk';
|
|
2
|
-
function warnHubError(action, error) {
|
|
3
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
4
|
-
console.warn(`⚠️ Hub ${action} failed: ${message}`);
|
|
5
|
-
}
|
|
6
|
-
class FetchHubAdapter {
|
|
7
|
-
url;
|
|
8
|
-
constructor(url) {
|
|
9
|
-
this.url = url;
|
|
10
|
-
}
|
|
11
|
-
async postToChat(payload) {
|
|
12
|
-
try {
|
|
13
|
-
const response = await fetch(`${this.url}/api/chat`, {
|
|
14
|
-
method: 'POST',
|
|
15
|
-
headers: { 'Content-Type': 'application/json' },
|
|
16
|
-
body: JSON.stringify(payload),
|
|
17
|
-
});
|
|
18
|
-
if (!response.ok) {
|
|
19
|
-
console.warn(`⚠️ Hub chat post failed: ${response.status}`);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
catch (error) {
|
|
23
|
-
warnHubError('chat post', error);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
async wakeAgent(agentId, payload) {
|
|
27
|
-
try {
|
|
28
|
-
const response = await fetch(`${this.url}/api/wake/${encodeURIComponent(agentId)}`, {
|
|
29
|
-
method: 'POST',
|
|
30
|
-
headers: { 'Content-Type': 'application/json' },
|
|
31
|
-
body: JSON.stringify(payload),
|
|
32
|
-
});
|
|
33
|
-
if (!response.ok) {
|
|
34
|
-
console.warn(`⚠️ Hub wake failed for ${agentId}: ${response.status}`);
|
|
35
|
-
}
|
|
36
|
-
return response.ok;
|
|
37
|
-
}
|
|
38
|
-
catch (error) {
|
|
39
|
-
warnHubError(`wake for ${agentId}`, error);
|
|
40
|
-
return false;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
export class HubClient {
|
|
45
|
-
adapter;
|
|
46
|
-
url;
|
|
47
|
-
constructor(adapter, url = DEFAULT_HUB_URL) {
|
|
48
|
-
this.adapter = adapter;
|
|
49
|
-
this.url = url;
|
|
50
|
-
}
|
|
51
|
-
async postToChat(payload) {
|
|
52
|
-
try {
|
|
53
|
-
await this.adapter.postToChat(payload);
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
warnHubError('chat post', error);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
async notifyConflict(branch, conflicts) {
|
|
60
|
-
const actionableConflicts = conflicts.filter((conflict) => conflict.tier >= 2);
|
|
61
|
-
if (actionableConflicts.length === 0)
|
|
62
|
-
return;
|
|
63
|
-
const severity = actionableConflicts.some((conflict) => conflict.tier === 3)
|
|
64
|
-
? '🔴 TIER 3 BLOCK'
|
|
65
|
-
: '🟠 TIER 2 PAUSE';
|
|
66
|
-
const message = `🕷️⚠️ **Conflict Alert** on \`${branch}\`\n\n${severity}\n\nConflicting files require coordination.`;
|
|
67
|
-
await this.postToChat({
|
|
68
|
-
agent: 'spidersan',
|
|
69
|
-
name: 'Spidersan',
|
|
70
|
-
message,
|
|
71
|
-
glyph: '🕷️',
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
async wakeAgent(agentId, reason) {
|
|
75
|
-
try {
|
|
76
|
-
return await this.adapter.wakeAgent(agentId, {
|
|
77
|
-
sender: 'spidersan',
|
|
78
|
-
reason,
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
catch (error) {
|
|
82
|
-
warnHubError(`wake for ${agentId}`, error);
|
|
83
|
-
return false;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
export function createHubClient(options = {}) {
|
|
88
|
-
const url = options.url || DEFAULT_HUB_URL;
|
|
89
|
-
const adapter = options.adapter || new FetchHubAdapter(url);
|
|
90
|
-
return new HubClient(adapter, url);
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=hub.js.map
|
package/dist/lib/hub.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hub.js","sourceRoot":"","sources":["../../src/lib/hub.ts"],"names":[],"mappings":"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"}
|