spidersan 0.10.0 β 0.20.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/CHANGELOG.md +163 -0
- package/README.md +39 -280
- package/package.json +88 -90
- package/dist/bin/spidersan.d.ts +0 -9
- package/dist/bin/spidersan.d.ts.map +0 -1
- package/dist/bin/spidersan.js +0 -117
- package/dist/bin/spidersan.js.map +0 -1
- package/dist/commands/abandon.d.ts +0 -8
- package/dist/commands/abandon.d.ts.map +0 -1
- package/dist/commands/abandon.js +0 -43
- package/dist/commands/abandon.js.map +0 -1
- 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/cleanup.d.ts +0 -8
- package/dist/commands/cleanup.d.ts.map +0 -1
- package/dist/commands/cleanup.js +0 -36
- package/dist/commands/cleanup.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/config.d.ts +0 -15
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -337
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/conflicts.d.ts +0 -12
- package/dist/commands/conflicts.d.ts.map +0 -1
- package/dist/commands/conflicts.js +0 -570
- package/dist/commands/conflicts.js.map +0 -1
- package/dist/commands/context.d.ts +0 -8
- package/dist/commands/context.d.ts.map +0 -1
- package/dist/commands/context.js +0 -104
- package/dist/commands/context.js.map +0 -1
- package/dist/commands/cross-conflicts.d.ts +0 -17
- package/dist/commands/cross-conflicts.d.ts.map +0 -1
- package/dist/commands/cross-conflicts.js +0 -274
- package/dist/commands/cross-conflicts.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/depends.d.ts +0 -8
- package/dist/commands/depends.d.ts.map +0 -1
- package/dist/commands/depends.js +0 -36
- package/dist/commands/depends.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -30
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -540
- package/dist/commands/doctor.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/git-watch.d.ts +0 -24
- package/dist/commands/git-watch.d.ts.map +0 -1
- package/dist/commands/git-watch.js +0 -84
- package/dist/commands/git-watch.js.map +0 -1
- package/dist/commands/github-sync.d.ts +0 -9
- package/dist/commands/github-sync.d.ts.map +0 -1
- package/dist/commands/github-sync.js +0 -180
- package/dist/commands/github-sync.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/index.d.ts +0 -36
- package/dist/commands/index.d.ts.map +0 -1
- package/dist/commands/index.js +0 -44
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/init.d.ts +0 -8
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -23
- package/dist/commands/init.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/list.d.ts +0 -3
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -45
- package/dist/commands/list.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/log.d.ts +0 -7
- package/dist/commands/log.d.ts.map +0 -1
- package/dist/commands/log.js +0 -110
- package/dist/commands/log.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/merge-order.d.ts +0 -9
- package/dist/commands/merge-order.d.ts.map +0 -1
- package/dist/commands/merge-order.js +0 -96
- package/dist/commands/merge-order.js.map +0 -1
- package/dist/commands/merged.d.ts +0 -8
- package/dist/commands/merged.d.ts.map +0 -1
- package/dist/commands/merged.js +0 -33
- package/dist/commands/merged.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/ready-check.d.ts +0 -11
- package/dist/commands/ready-check.d.ts.map +0 -1
- package/dist/commands/ready-check.js +0 -147
- package/dist/commands/ready-check.js.map +0 -1
- package/dist/commands/rebase-helper.d.ts +0 -3
- package/dist/commands/rebase-helper.d.ts.map +0 -1
- package/dist/commands/rebase-helper.js +0 -52
- package/dist/commands/rebase-helper.js.map +0 -1
- package/dist/commands/register.d.ts +0 -5
- package/dist/commands/register.d.ts.map +0 -1
- package/dist/commands/register.js +0 -163
- package/dist/commands/register.js.map +0 -1
- package/dist/commands/registry-sync.d.ts +0 -9
- package/dist/commands/registry-sync.d.ts.map +0 -1
- package/dist/commands/registry-sync.js +0 -163
- package/dist/commands/registry-sync.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/stale.d.ts +0 -17
- package/dist/commands/stale.d.ts.map +0 -1
- package/dist/commands/stale.js +0 -131
- package/dist/commands/stale.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/sync.d.ts +0 -8
- package/dist/commands/sync.d.ts.map +0 -1
- package/dist/commands/sync.js +0 -60
- package/dist/commands/sync.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/watch.d.ts +0 -9
- package/dist/commands/watch.d.ts.map +0 -1
- package/dist/commands/watch.js +0 -536
- package/dist/commands/watch.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/index.d.ts +0 -11
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -11
- package/dist/index.js.map +0 -1
- package/dist/lib/activity.d.ts +0 -53
- package/dist/lib/activity.d.ts.map +0 -1
- package/dist/lib/activity.js +0 -267
- package/dist/lib/activity.js.map +0 -1
- package/dist/lib/agent-errors.d.ts +0 -41
- package/dist/lib/agent-errors.d.ts.map +0 -1
- package/dist/lib/agent-errors.js +0 -145
- package/dist/lib/agent-errors.js.map +0 -1
- package/dist/lib/ai/context-builder.d.ts +0 -16
- package/dist/lib/ai/context-builder.d.ts.map +0 -1
- package/dist/lib/ai/context-builder.js +0 -216
- package/dist/lib/ai/context-builder.js.map +0 -1
- package/dist/lib/ai/event-handler.d.ts +0 -21
- package/dist/lib/ai/event-handler.d.ts.map +0 -1
- package/dist/lib/ai/event-handler.js +0 -98
- package/dist/lib/ai/event-handler.js.map +0 -1
- package/dist/lib/ai/index.d.ts +0 -13
- package/dist/lib/ai/index.d.ts.map +0 -1
- package/dist/lib/ai/index.js +0 -11
- package/dist/lib/ai/index.js.map +0 -1
- package/dist/lib/ai/llm-client.d.ts +0 -37
- package/dist/lib/ai/llm-client.d.ts.map +0 -1
- package/dist/lib/ai/llm-client.js +0 -225
- package/dist/lib/ai/llm-client.js.map +0 -1
- package/dist/lib/ai/reasoner.d.ts +0 -11
- package/dist/lib/ai/reasoner.d.ts.map +0 -1
- package/dist/lib/ai/reasoner.js +0 -246
- package/dist/lib/ai/reasoner.js.map +0 -1
- package/dist/lib/ai/setup.d.ts +0 -40
- package/dist/lib/ai/setup.d.ts.map +0 -1
- package/dist/lib/ai/setup.js +0 -154
- package/dist/lib/ai/setup.js.map +0 -1
- package/dist/lib/ai/types.d.ts +0 -135
- package/dist/lib/ai/types.d.ts.map +0 -1
- package/dist/lib/ai/types.js +0 -39
- package/dist/lib/ai/types.js.map +0 -1
- package/dist/lib/ast.d.ts +0 -36
- package/dist/lib/ast.d.ts.map +0 -1
- package/dist/lib/ast.js +0 -135
- package/dist/lib/ast.js.map +0 -1
- package/dist/lib/colony-subscriber.d.ts +0 -56
- package/dist/lib/colony-subscriber.d.ts.map +0 -1
- package/dist/lib/colony-subscriber.js +0 -265
- package/dist/lib/colony-subscriber.js.map +0 -1
- package/dist/lib/config.d.ts +0 -62
- package/dist/lib/config.d.ts.map +0 -1
- package/dist/lib/config.js +0 -230
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/conflict-analyzer.d.ts +0 -33
- package/dist/lib/conflict-analyzer.d.ts.map +0 -1
- package/dist/lib/conflict-analyzer.js +0 -114
- package/dist/lib/conflict-analyzer.js.map +0 -1
- package/dist/lib/conflict-renderer.d.ts +0 -7
- package/dist/lib/conflict-renderer.d.ts.map +0 -1
- package/dist/lib/conflict-renderer.js +0 -162
- package/dist/lib/conflict-renderer.js.map +0 -1
- package/dist/lib/conflict-tier.d.ts +0 -20
- package/dist/lib/conflict-tier.d.ts.map +0 -1
- package/dist/lib/conflict-tier.js +0 -49
- package/dist/lib/conflict-tier.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/crypto.d.ts +0 -71
- package/dist/lib/crypto.d.ts.map +0 -1
- package/dist/lib/crypto.js +0 -176
- package/dist/lib/crypto.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/errors.d.ts +0 -35
- package/dist/lib/errors.d.ts.map +0 -1
- package/dist/lib/errors.js +0 -71
- package/dist/lib/errors.js.map +0 -1
- package/dist/lib/git-events-subscriber.d.ts +0 -59
- package/dist/lib/git-events-subscriber.d.ts.map +0 -1
- package/dist/lib/git-events-subscriber.js +0 -779
- package/dist/lib/git-events-subscriber.js.map +0 -1
- package/dist/lib/git.d.ts +0 -15
- package/dist/lib/git.d.ts.map +0 -1
- package/dist/lib/git.js +0 -180
- package/dist/lib/git.js.map +0 -1
- package/dist/lib/github.d.ts +0 -83
- package/dist/lib/github.d.ts.map +0 -1
- package/dist/lib/github.js +0 -211
- package/dist/lib/github.js.map +0 -1
- package/dist/lib/graph.d.ts +0 -23
- package/dist/lib/graph.d.ts.map +0 -1
- package/dist/lib/graph.js +0 -134
- package/dist/lib/graph.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/regex-utils.d.ts +0 -6
- package/dist/lib/regex-utils.d.ts.map +0 -1
- package/dist/lib/regex-utils.js +0 -24
- package/dist/lib/regex-utils.js.map +0 -1
- package/dist/lib/register-renderer.d.ts +0 -10
- package/dist/lib/register-renderer.d.ts.map +0 -1
- package/dist/lib/register-renderer.js +0 -19
- package/dist/lib/register-renderer.js.map +0 -1
- package/dist/lib/remote-drift.d.ts +0 -61
- package/dist/lib/remote-drift.d.ts.map +0 -1
- package/dist/lib/remote-drift.js +0 -227
- package/dist/lib/remote-drift.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/security.d.ts +0 -77
- package/dist/lib/security.d.ts.map +0 -1
- package/dist/lib/security.js +0 -190
- package/dist/lib/security.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/lib/update-check.d.ts +0 -11
- package/dist/lib/update-check.d.ts.map +0 -1
- package/dist/lib/update-check.js +0 -113
- package/dist/lib/update-check.js.map +0 -1
- package/dist/lib/watch-renderer.d.ts +0 -13
- package/dist/lib/watch-renderer.d.ts.map +0 -1
- package/dist/lib/watch-renderer.js +0 -35
- package/dist/lib/watch-renderer.js.map +0 -1
- package/dist/storage/adapter.d.ts +0 -62
- package/dist/storage/adapter.d.ts.map +0 -1
- package/dist/storage/adapter.js +0 -8
- package/dist/storage/adapter.js.map +0 -1
- package/dist/storage/branch-registry-store.d.ts +0 -13
- package/dist/storage/branch-registry-store.d.ts.map +0 -1
- package/dist/storage/branch-registry-store.js +0 -2
- package/dist/storage/branch-registry-store.js.map +0 -1
- package/dist/storage/factory.d.ts +0 -10
- package/dist/storage/factory.d.ts.map +0 -1
- package/dist/storage/factory.js +0 -38
- package/dist/storage/factory.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/index.d.ts +0 -10
- package/dist/storage/index.d.ts.map +0 -1
- package/dist/storage/index.js +0 -11
- package/dist/storage/index.js.map +0 -1
- package/dist/storage/json-branch-registry-store.d.ts +0 -19
- package/dist/storage/json-branch-registry-store.d.ts.map +0 -1
- package/dist/storage/json-branch-registry-store.js +0 -112
- package/dist/storage/json-branch-registry-store.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/local.d.ts +0 -20
- package/dist/storage/local.d.ts.map +0 -1
- package/dist/storage/local.js +0 -40
- package/dist/storage/local.js.map +0 -1
- package/dist/storage/memory-branch-registry-store.d.ts +0 -16
- package/dist/storage/memory-branch-registry-store.d.ts.map +0 -1
- package/dist/storage/memory-branch-registry-store.js +0 -65
- package/dist/storage/memory-branch-registry-store.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/storage/supabase-registry-sync-client-impl.d.ts +0 -46
- package/dist/storage/supabase-registry-sync-client-impl.d.ts.map +0 -1
- package/dist/storage/supabase-registry-sync-client-impl.js +0 -322
- package/dist/storage/supabase-registry-sync-client-impl.js.map +0 -1
- package/dist/storage/supabase-registry-sync-client.d.ts +0 -9
- package/dist/storage/supabase-registry-sync-client.d.ts.map +0 -1
- package/dist/storage/supabase-registry-sync-client.js +0 -2
- package/dist/storage/supabase-registry-sync-client.js.map +0 -1
- package/dist/storage/supabase.d.ts +0 -34
- package/dist/storage/supabase.d.ts.map +0 -1
- package/dist/storage/supabase.js +0 -74
- package/dist/storage/supabase.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/types/cloud.d.ts +0 -101
- package/dist/types/cloud.d.ts.map +0 -1
- package/dist/types/cloud.js +0 -13
- package/dist/types/cloud.js.map +0 -1
package/dist/commands/watch.js
DELETED
|
@@ -1,536 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { execFileSync, spawnSync } from 'child_process';
|
|
3
|
-
import { getStorage } from '../storage/index.js';
|
|
4
|
-
import * as chokidar from 'chokidar';
|
|
5
|
-
import * as path from 'path';
|
|
6
|
-
import { homedir } from 'os';
|
|
7
|
-
import { io } from 'socket.io-client';
|
|
8
|
-
import { loadConfig } from '../lib/config.js';
|
|
9
|
-
import { syncFromColony } from '../lib/colony-subscriber.js';
|
|
10
|
-
import { getCurrentBranch, getRemoteHead } from '../lib/git.js';
|
|
11
|
-
import { createHubClient } from '../lib/hub.js';
|
|
12
|
-
import { computeDriftResult } from '../lib/remote-drift.js';
|
|
13
|
-
import { renderFetchPollDrift, renderFetchPollHeartbeat } from '../lib/watch-renderer.js';
|
|
14
|
-
const DEBOUNCE_MS = 1000; // Debounce file changes
|
|
15
|
-
const hub = createHubClient();
|
|
16
|
-
function getRepoRoot() {
|
|
17
|
-
try {
|
|
18
|
-
return execFileSync('git', ['rev-parse', '--show-toplevel'], { encoding: 'utf-8' }).trim();
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
return process.cwd();
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
function parsePaths(value) {
|
|
25
|
-
return value.split(',').map((entry) => entry.trim()).filter(Boolean);
|
|
26
|
-
}
|
|
27
|
-
function formatConflictChatMessage(branch, conflicts) {
|
|
28
|
-
const conflictDetails = conflicts
|
|
29
|
-
.map(c => `β’ **${c.branch}**: ${c.files.join(', ')}`)
|
|
30
|
-
.join('\n');
|
|
31
|
-
return `π·οΈβ οΈ **CONFLICT DETECTED** on branch \`${branch}\`\n\n${conflictDetails}`;
|
|
32
|
-
}
|
|
33
|
-
function formatFetchPollTime(date) {
|
|
34
|
-
return date.toLocaleTimeString('en-GB', { hour12: false });
|
|
35
|
-
}
|
|
36
|
-
function runInRepoDir(repoDir, work) {
|
|
37
|
-
const originalDir = process.cwd();
|
|
38
|
-
const shouldChangeDir = repoDir && originalDir !== repoDir;
|
|
39
|
-
let restoreInFinally = true;
|
|
40
|
-
if (shouldChangeDir) {
|
|
41
|
-
process.chdir(repoDir);
|
|
42
|
-
}
|
|
43
|
-
try {
|
|
44
|
-
const result = work();
|
|
45
|
-
if (result instanceof Promise) {
|
|
46
|
-
restoreInFinally = false;
|
|
47
|
-
return result.finally(() => {
|
|
48
|
-
if (shouldChangeDir) {
|
|
49
|
-
process.chdir(originalDir);
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
return result;
|
|
54
|
-
}
|
|
55
|
-
finally {
|
|
56
|
-
if (restoreInFinally && shouldChangeDir && process.cwd() === repoDir) {
|
|
57
|
-
process.chdir(originalDir);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
function isDriftSkipped(result) {
|
|
62
|
-
return 'skipped' in result;
|
|
63
|
-
}
|
|
64
|
-
export async function startFetchPollLoop(opts) {
|
|
65
|
-
const intervalMs = Math.max(1, opts.intervalSecs) * 1000;
|
|
66
|
-
try {
|
|
67
|
-
const branch = runInRepoDir(opts.repoDir, () => getCurrentBranch());
|
|
68
|
-
const storage = await getStorage();
|
|
69
|
-
const hubClient = opts.hubSync ? createHubClient() : null;
|
|
70
|
-
let lastRemoteHead = runInRepoDir(opts.repoDir, () => getRemoteHead('origin', branch));
|
|
71
|
-
let inFlight = false;
|
|
72
|
-
setInterval(() => {
|
|
73
|
-
if (inFlight)
|
|
74
|
-
return;
|
|
75
|
-
inFlight = true;
|
|
76
|
-
void (async () => {
|
|
77
|
-
try {
|
|
78
|
-
const currentRemoteHead = runInRepoDir(opts.repoDir, () => getRemoteHead('origin', branch));
|
|
79
|
-
if (currentRemoteHead === lastRemoteHead) {
|
|
80
|
-
if (!opts.quiet) {
|
|
81
|
-
console.log(renderFetchPollHeartbeat({
|
|
82
|
-
branch,
|
|
83
|
-
timestamp: formatFetchPollTime(new Date()),
|
|
84
|
-
}));
|
|
85
|
-
}
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
lastRemoteHead = currentRemoteHead;
|
|
89
|
-
const registeredFiles = (await storage.get(branch))?.files ?? [];
|
|
90
|
-
const result = await runInRepoDir(opts.repoDir, () => computeDriftResult(registeredFiles, { remote: 'origin', branch }));
|
|
91
|
-
if (isDriftSkipped(result)) {
|
|
92
|
-
if (!opts.quiet) {
|
|
93
|
-
console.log(renderFetchPollDrift({ branch, drift: result }));
|
|
94
|
-
}
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
if (result.remoteAhead === 0) {
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
const warningOutput = renderFetchPollDrift({ branch, drift: result });
|
|
101
|
-
console.log(warningOutput);
|
|
102
|
-
if (hubClient) {
|
|
103
|
-
await hubClient.postToChat({
|
|
104
|
-
agent: 'spidersan',
|
|
105
|
-
name: 'Spidersan',
|
|
106
|
-
message: warningOutput,
|
|
107
|
-
glyph: 'π·οΈ',
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
catch (error) {
|
|
112
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
113
|
-
console.warn(`β οΈ [FETCH-POLL] ${message}`);
|
|
114
|
-
}
|
|
115
|
-
finally {
|
|
116
|
-
inFlight = false;
|
|
117
|
-
}
|
|
118
|
-
})();
|
|
119
|
-
}, intervalMs);
|
|
120
|
-
}
|
|
121
|
-
catch (error) {
|
|
122
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
123
|
-
console.warn(`β οΈ [FETCH-POLL] ${message}`);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
export const watchCommand = new Command('watch')
|
|
127
|
-
.description('π·οΈ Watch files and auto-register changes (daemon mode)')
|
|
128
|
-
.argument('[directory]', 'Directory to watch (default: current repo)')
|
|
129
|
-
.option('-d, --dir <directory>', 'Directory to watch (alias for positional arg)')
|
|
130
|
-
.option('--paths <paths>', 'Comma-separated list of files or folders to watch')
|
|
131
|
-
.option('--root <root>', 'Project root for relative paths (default: git root)')
|
|
132
|
-
.option('-a, --agent <agent>', 'Agent identifier for registration')
|
|
133
|
-
.option('--hub', 'Connect to Hub and emit real-time conflict warnings')
|
|
134
|
-
.option('--hub-sync', 'Post conflicts to Hub chat via REST API')
|
|
135
|
-
.option('-q, --quiet', 'Only log conflicts, not file changes')
|
|
136
|
-
.option('--fetch-poll [seconds]', 'Poll git ls-remote origin every N seconds (default: 60)')
|
|
137
|
-
.option('--legacy', 'Legacy mode: use old watcher settings (more file descriptors)')
|
|
138
|
-
.action(async (directory, options) => {
|
|
139
|
-
const storage = await getStorage();
|
|
140
|
-
const config = await loadConfig();
|
|
141
|
-
if (!await storage.isInitialized()) {
|
|
142
|
-
console.error('β Spidersan not initialized. Run: spidersan init');
|
|
143
|
-
process.exit(1);
|
|
144
|
-
}
|
|
145
|
-
const branch = getCurrentBranch();
|
|
146
|
-
const repoRoot = options.root || getRepoRoot();
|
|
147
|
-
const watchTargets = options.paths
|
|
148
|
-
? parsePaths(options.paths).map((entry) => path.isAbsolute(entry) ? entry : path.join(repoRoot, entry))
|
|
149
|
-
: [directory || options.dir || repoRoot];
|
|
150
|
-
const configuredAgent = config.agent.name?.trim();
|
|
151
|
-
const agent = options.agent || process.env.SPIDERSAN_AGENT || configuredAgent || 'unknown';
|
|
152
|
-
const watchLabel = watchTargets.length === 1 ? watchTargets[0] : `${watchTargets.length} paths`;
|
|
153
|
-
console.log(`
|
|
154
|
-
π·οΈ SPIDERSAN WATCH MODE
|
|
155
|
-
βββββββββββββββββββββββ
|
|
156
|
-
Branch: ${branch}
|
|
157
|
-
Agent: ${agent}
|
|
158
|
-
Root: ${repoRoot}
|
|
159
|
-
Watching: ${watchLabel}
|
|
160
|
-
Hub: ${options.hub ? hub.url : 'disabled'}
|
|
161
|
-
Hub Sync: ${options.hubSync ? 'enabled (posts to chat)' : 'disabled'}
|
|
162
|
-
βββββββββββββββββββββββ
|
|
163
|
-
Press Ctrl+C to stop.
|
|
164
|
-
`);
|
|
165
|
-
// Hub socket connection (optional)
|
|
166
|
-
let hubSocket = null;
|
|
167
|
-
if (options.hub) {
|
|
168
|
-
try {
|
|
169
|
-
hubSocket = io(hub.url, {
|
|
170
|
-
reconnection: true,
|
|
171
|
-
reconnectionAttempts: 5,
|
|
172
|
-
timeout: 5000
|
|
173
|
-
});
|
|
174
|
-
hubSocket.on('connect', () => {
|
|
175
|
-
console.log('π Connected to Hub');
|
|
176
|
-
});
|
|
177
|
-
hubSocket.on('disconnect', () => {
|
|
178
|
-
console.log('π Disconnected from Hub');
|
|
179
|
-
});
|
|
180
|
-
hubSocket.on('connect_error', (err) => {
|
|
181
|
-
if (!options.quiet) {
|
|
182
|
-
console.log(`β οΈ Hub connection failed: ${err.message}`);
|
|
183
|
-
}
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
catch {
|
|
187
|
-
console.log('β οΈ Could not connect to Hub');
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
// Track recently changed files for debouncing
|
|
191
|
-
const pendingFiles = new Set();
|
|
192
|
-
let debounceTimer = null;
|
|
193
|
-
// Process accumulated file changes
|
|
194
|
-
async function processChanges() {
|
|
195
|
-
if (pendingFiles.size === 0)
|
|
196
|
-
return;
|
|
197
|
-
const files = Array.from(pendingFiles);
|
|
198
|
-
pendingFiles.clear();
|
|
199
|
-
// Register files
|
|
200
|
-
const existing = await storage.get(branch);
|
|
201
|
-
const allFiles = existing
|
|
202
|
-
? [...new Set([...existing.files, ...files])]
|
|
203
|
-
: files;
|
|
204
|
-
if (existing) {
|
|
205
|
-
await storage.update(branch, { files: allFiles, agent });
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
await storage.register({
|
|
209
|
-
name: branch,
|
|
210
|
-
files: allFiles,
|
|
211
|
-
status: 'active',
|
|
212
|
-
agent,
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
if (!options.quiet) {
|
|
216
|
-
console.log(`π Registered: ${files.join(', ')}`);
|
|
217
|
-
}
|
|
218
|
-
// Check for conflicts
|
|
219
|
-
const allBranches = await storage.list();
|
|
220
|
-
const conflicts = [];
|
|
221
|
-
// Performance Optimization: Convert changed files to Set for O(1) lookup
|
|
222
|
-
const filesSet = new Set(files);
|
|
223
|
-
for (const otherBranch of allBranches) {
|
|
224
|
-
if (otherBranch.name === branch || otherBranch.status !== 'active')
|
|
225
|
-
continue;
|
|
226
|
-
const overlapping = otherBranch.files.filter(f => filesSet.has(f));
|
|
227
|
-
if (overlapping.length > 0) {
|
|
228
|
-
conflicts.push({ branch: otherBranch.name, files: overlapping });
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
if (conflicts.length > 0) {
|
|
232
|
-
console.log(`\nβ οΈ CONFLICT DETECTED!`);
|
|
233
|
-
conflicts.forEach(c => {
|
|
234
|
-
console.log(` π΄ ${c.branch}: ${c.files.join(', ')}`);
|
|
235
|
-
});
|
|
236
|
-
console.log('');
|
|
237
|
-
// Emit to Hub via socket if connected
|
|
238
|
-
if (hubSocket?.connected) {
|
|
239
|
-
hubSocket.emit('conflicts:warning', {
|
|
240
|
-
branch,
|
|
241
|
-
agent,
|
|
242
|
-
files,
|
|
243
|
-
conflicts,
|
|
244
|
-
timestamp: new Date().toISOString()
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
// Post to Hub chat if --hub-sync enabled
|
|
248
|
-
if (options.hubSync) {
|
|
249
|
-
await hub.postToChat({
|
|
250
|
-
agent: 'spidersan',
|
|
251
|
-
name: 'Spidersan',
|
|
252
|
-
message: formatConflictChatMessage(branch, conflicts),
|
|
253
|
-
glyph: 'π·οΈ',
|
|
254
|
-
});
|
|
255
|
-
console.log('π€ Posted conflict to Hub chat');
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
// Build extended ignore patterns for smart mode
|
|
260
|
-
const smartIgnores = [
|
|
261
|
-
'**/.next/**', '**/build/**', '**/out/**', '**/coverage/**',
|
|
262
|
-
'**/.cache/**', '**/__pycache__/**', '**/target/**',
|
|
263
|
-
'**/vendor/**', '**/bower_components/**', '**/.pnpm/**',
|
|
264
|
-
'**/.idea/**', '**/.vscode/**', '**/*.swp', '**/*.swo',
|
|
265
|
-
'**/.DS_Store', '**/Thumbs.db',
|
|
266
|
-
'**/package-lock.json', '**/yarn.lock', '**/pnpm-lock.yaml',
|
|
267
|
-
'**/*.png', '**/*.jpg', '**/*.jpeg', '**/*.gif', '**/*.ico',
|
|
268
|
-
'**/*.woff', '**/*.woff2', '**/*.ttf', '**/*.pdf',
|
|
269
|
-
];
|
|
270
|
-
if (options.legacy) {
|
|
271
|
-
console.log('β οΈ Legacy mode: Using old watcher settings (more file descriptors)');
|
|
272
|
-
}
|
|
273
|
-
// Start watching
|
|
274
|
-
// SECURITY FIX: Always limit depth to prevent EMFILE errors (Sherlocksan 2026-01-02)
|
|
275
|
-
const watcher = chokidar.watch(watchTargets, {
|
|
276
|
-
ignored: !options.legacy ? [
|
|
277
|
-
...smartIgnores,
|
|
278
|
-
/(^|[/\\])\../, // dotfiles
|
|
279
|
-
'**/node_modules/**',
|
|
280
|
-
'**/dist/**',
|
|
281
|
-
'**/*.log',
|
|
282
|
-
'**/.git/**', // ALWAYS ignore .git
|
|
283
|
-
] : [
|
|
284
|
-
/(^|[/\\])\../, // dotfiles (ALWAYS ignore)
|
|
285
|
-
'**/node_modules/**',
|
|
286
|
-
'**/dist/**',
|
|
287
|
-
'**/*.log',
|
|
288
|
-
'**/.git/**', // ALWAYS ignore .git
|
|
289
|
-
],
|
|
290
|
-
persistent: true,
|
|
291
|
-
ignoreInitial: true,
|
|
292
|
-
awaitWriteFinish: {
|
|
293
|
-
stabilityThreshold: 500,
|
|
294
|
-
pollInterval: 100
|
|
295
|
-
},
|
|
296
|
-
// ALWAYS limit depth to prevent EMFILE (default: 5, legacy: 10)
|
|
297
|
-
depth: !options.legacy ? 5 : 10,
|
|
298
|
-
// Smart mode (default): use polling to reduce file descriptor usage
|
|
299
|
-
...(!options.legacy && {
|
|
300
|
-
usePolling: true,
|
|
301
|
-
interval: 1000, // Check every 1 second
|
|
302
|
-
binaryInterval: 3000,
|
|
303
|
-
})
|
|
304
|
-
});
|
|
305
|
-
watcher.on('change', (filePath) => {
|
|
306
|
-
const relativePath = path.relative(repoRoot, filePath);
|
|
307
|
-
pendingFiles.add(relativePath);
|
|
308
|
-
// Debounce: wait for more changes before processing
|
|
309
|
-
if (debounceTimer)
|
|
310
|
-
clearTimeout(debounceTimer);
|
|
311
|
-
debounceTimer = setTimeout(processChanges, DEBOUNCE_MS);
|
|
312
|
-
});
|
|
313
|
-
watcher.on('add', (filePath) => {
|
|
314
|
-
const relativePath = path.relative(repoRoot, filePath);
|
|
315
|
-
pendingFiles.add(relativePath);
|
|
316
|
-
if (debounceTimer)
|
|
317
|
-
clearTimeout(debounceTimer);
|
|
318
|
-
debounceTimer = setTimeout(processChanges, DEBOUNCE_MS);
|
|
319
|
-
});
|
|
320
|
-
watcher.on('error', (err) => {
|
|
321
|
-
const errorMsg = err instanceof Error ? err.message : String(err);
|
|
322
|
-
console.error(`β Watcher error: ${errorMsg}`);
|
|
323
|
-
});
|
|
324
|
-
if (options.fetchPoll) {
|
|
325
|
-
const parsedSecs = typeof options.fetchPoll === 'string'
|
|
326
|
-
? Number.parseInt(options.fetchPoll, 10)
|
|
327
|
-
: Number.NaN;
|
|
328
|
-
const intervalSecs = Number.isFinite(parsedSecs) && parsedSecs > 0 ? parsedSecs : 60;
|
|
329
|
-
void startFetchPollLoop({
|
|
330
|
-
intervalSecs,
|
|
331
|
-
hubSync: !!options.hubSync,
|
|
332
|
-
quiet: !!options.quiet,
|
|
333
|
-
repoDir: repoRoot,
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
// Handle graceful shutdown
|
|
337
|
-
process.on('SIGINT', () => {
|
|
338
|
-
console.log('\nπ·οΈ Watch mode stopped.');
|
|
339
|
-
watcher.close();
|
|
340
|
-
hubSocket?.disconnect();
|
|
341
|
-
process.exit(0);
|
|
342
|
-
});
|
|
343
|
-
process.on('SIGTERM', () => {
|
|
344
|
-
watcher.close();
|
|
345
|
-
hubSocket?.disconnect();
|
|
346
|
-
process.exit(0);
|
|
347
|
-
});
|
|
348
|
-
});
|
|
349
|
-
// ββ Mode 1: Treetop Observer ββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
350
|
-
/**
|
|
351
|
-
* Default ecosystem repos to watch. Override with --repos flag or
|
|
352
|
-
* SPIDERSAN_REPOS env var (colon-separated paths).
|
|
353
|
-
*/
|
|
354
|
-
function getDefaultTreetopRepos() {
|
|
355
|
-
if (process.env.SPIDERSAN_REPOS) {
|
|
356
|
-
return process.env.SPIDERSAN_REPOS.split(':').map((r) => r.trim()).filter(Boolean);
|
|
357
|
-
}
|
|
358
|
-
const homeDir = process.env.HOME || homedir();
|
|
359
|
-
return [
|
|
360
|
-
`${homeDir}/Dev/Envoak`,
|
|
361
|
-
`${homeDir}/Dev/treebird-internal`,
|
|
362
|
-
`${homeDir}/Dev/spidersan`,
|
|
363
|
-
`${homeDir}/Dev/Toak`,
|
|
364
|
-
`${homeDir}/Dev/flockview`,
|
|
365
|
-
`${homeDir}/Dev/mappersan`,
|
|
366
|
-
];
|
|
367
|
-
}
|
|
368
|
-
const DEFAULT_TREETOP_REPOS = getDefaultTreetopRepos();
|
|
369
|
-
/**
|
|
370
|
-
* Run one full observer tick: SYNC β SCAN β TEND β SURFACE.
|
|
371
|
-
* Returns tier counts and idle status for adaptive sleep calculation.
|
|
372
|
-
*/
|
|
373
|
-
async function runObserverTick(repos, dryRun, broadcastedConflicts) {
|
|
374
|
-
let totalTier3 = 0;
|
|
375
|
-
let totalTier2 = 0;
|
|
376
|
-
let totalBranches = 0;
|
|
377
|
-
const tier3Alerts = [];
|
|
378
|
-
// ββ STEP 1: SYNC ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
379
|
-
// Pull colony gradient into local registry per repo.
|
|
380
|
-
for (const repo of repos) {
|
|
381
|
-
try {
|
|
382
|
-
process.chdir(repo);
|
|
383
|
-
await syncFromColony();
|
|
384
|
-
}
|
|
385
|
-
catch {
|
|
386
|
-
// Repo not initialized or colony unreachable β continue
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
// ββ STEP 2: SCAN βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
390
|
-
// Detect conflicts in each repo. spawnSync captures output even on exit 1.
|
|
391
|
-
for (const repo of repos) {
|
|
392
|
-
try {
|
|
393
|
-
const result = spawnSync('spidersan', ['conflicts', '--json'], {
|
|
394
|
-
cwd: repo,
|
|
395
|
-
encoding: 'utf-8',
|
|
396
|
-
timeout: 15000,
|
|
397
|
-
});
|
|
398
|
-
if (result.stdout) {
|
|
399
|
-
const data = JSON.parse(result.stdout);
|
|
400
|
-
const summary = data.summary ?? { tier3: 0, tier2: 0, tier1: 0 };
|
|
401
|
-
totalTier3 += summary.tier3 ?? 0;
|
|
402
|
-
totalTier2 += summary.tier2 ?? 0;
|
|
403
|
-
// Count active branches via conflicts (each conflict references another branch)
|
|
404
|
-
const otherBranches = new Set(data.conflicts?.map((c) => c.branch).filter(Boolean) ?? []);
|
|
405
|
-
totalBranches += otherBranches.size;
|
|
406
|
-
if ((summary.tier3 ?? 0) > 0) {
|
|
407
|
-
const files = data.conflicts
|
|
408
|
-
.filter((c) => c.tier === 3)
|
|
409
|
-
.flatMap((c) => c.files ?? [])
|
|
410
|
-
.slice(0, 3);
|
|
411
|
-
tier3Alerts.push({ repo, files });
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
catch {
|
|
416
|
-
// Repo not initialized or spidersan unavailable β skip
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
// ββ STEP 3: TEND βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
420
|
-
// Colony GC (non-critical β always continue on failure).
|
|
421
|
-
try {
|
|
422
|
-
spawnSync('envoak', ['colony', 'gc'], { encoding: 'utf-8', timeout: 10000 });
|
|
423
|
-
}
|
|
424
|
-
catch {
|
|
425
|
-
/* ignore */
|
|
426
|
-
}
|
|
427
|
-
// Stale check per repo (informational β no --auto-cleanup yet).
|
|
428
|
-
for (const repo of repos) {
|
|
429
|
-
try {
|
|
430
|
-
spawnSync('spidersan', ['stale'], {
|
|
431
|
-
cwd: repo,
|
|
432
|
-
encoding: 'utf-8',
|
|
433
|
-
timeout: 10000,
|
|
434
|
-
});
|
|
435
|
-
}
|
|
436
|
-
catch {
|
|
437
|
-
/* ignore */
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
// ββ STEP 4: SURFACE βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
441
|
-
// Broadcast TIER 3 alerts (deduplicated). Clear resolved conflicts.
|
|
442
|
-
const currentKeys = new Set(tier3Alerts.map((a) => `${a.repo}:${a.files.join(',')}`));
|
|
443
|
-
for (const alert of tier3Alerts) {
|
|
444
|
-
const key = `${alert.repo}:${alert.files.join(',')}`;
|
|
445
|
-
if (!broadcastedConflicts.has(key)) {
|
|
446
|
-
broadcastedConflicts.add(key);
|
|
447
|
-
const repoName = path.basename(alert.repo);
|
|
448
|
-
const filesStr = alert.files.length > 0 ? alert.files.join(', ') : 'multiple files';
|
|
449
|
-
const message = `ssan TIER 3: conflict in ${repoName} β ${filesStr}. Halt writes on affected files.`;
|
|
450
|
-
if (dryRun) {
|
|
451
|
-
console.log(`[DRY-RUN] Would broadcast TIER 3 alert: ${message}`);
|
|
452
|
-
}
|
|
453
|
-
else {
|
|
454
|
-
const r = spawnSync('envoak', ['colony', 'broadcast', '--type', 'alert', '--message', message], { encoding: 'utf-8', timeout: 10000 });
|
|
455
|
-
if (r.status === 0) {
|
|
456
|
-
console.log(`[TIER 3] Broadcast: ${message}`);
|
|
457
|
-
}
|
|
458
|
-
else {
|
|
459
|
-
console.error(`[TIER 3] Broadcast failed: ${r.stderr ?? r.stdout}`);
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
// Evict resolved conflicts from dedup set
|
|
465
|
-
for (const key of broadcastedConflicts) {
|
|
466
|
-
if (!currentKeys.has(key)) {
|
|
467
|
-
broadcastedConflicts.delete(key);
|
|
468
|
-
}
|
|
469
|
-
}
|
|
470
|
-
const allIdle = totalTier3 === 0 && totalTier2 === 0 && totalBranches === 0;
|
|
471
|
-
// Emit treetop heartbeat (skipped in dry-run)
|
|
472
|
-
const summary = `Watching ${repos.length} repos, ${totalBranches} active branches. ` +
|
|
473
|
-
`T3:${totalTier3} T2:${totalTier2}. GC run. Stale checked.`;
|
|
474
|
-
console.log(`[TICK] ${new Date().toISOString()} β ${summary}`);
|
|
475
|
-
if (!dryRun) {
|
|
476
|
-
spawnSync('envoak', ['colony', 'signal', '--status', 'idle', '--task', 'treetop watch', '--summary', summary], { encoding: 'utf-8', timeout: 10000 });
|
|
477
|
-
}
|
|
478
|
-
return { tier3: totalTier3, tier2: totalTier2, repoCount: repos.length, branchCount: totalBranches, allIdle };
|
|
479
|
-
}
|
|
480
|
-
function resolveRepos(reposOption) {
|
|
481
|
-
if (reposOption) {
|
|
482
|
-
return reposOption.split(',').map((r) => r.trim()).filter(Boolean);
|
|
483
|
-
}
|
|
484
|
-
const envRepos = process.env['SPIDERSAN_REPOS'];
|
|
485
|
-
if (envRepos) {
|
|
486
|
-
return envRepos.split(':').map((r) => r.trim()).filter(Boolean);
|
|
487
|
-
}
|
|
488
|
-
return DEFAULT_TREETOP_REPOS;
|
|
489
|
-
}
|
|
490
|
-
function adaptiveInterval(result, baseMs) {
|
|
491
|
-
if (result.tier3 > 0)
|
|
492
|
-
return 15_000; // Stay alert
|
|
493
|
-
if (result.tier2 > 0)
|
|
494
|
-
return 30_000; // Watch closely
|
|
495
|
-
if (result.allIdle)
|
|
496
|
-
return 300_000; // Colony quiet β back off
|
|
497
|
-
return baseMs;
|
|
498
|
-
}
|
|
499
|
-
const watchTreetopCommand = new Command('treetop')
|
|
500
|
-
.description('Mode 1: treetop observer β periodic multi-repo conflict scan + colony gradient sync')
|
|
501
|
-
.option('--interval <seconds>', 'Base tick interval in seconds (default: 120)', '120')
|
|
502
|
-
.option('--repos <paths>', 'Comma-separated repo paths (overrides ecosystem defaults)')
|
|
503
|
-
.option('--dry-run', 'Run one tick and exit β no sleep, no colony writes')
|
|
504
|
-
.action(async (options) => {
|
|
505
|
-
const repos = resolveRepos(options.repos);
|
|
506
|
-
const baseMs = parseInt(options.interval, 10) * 1000;
|
|
507
|
-
const dryRun = options.dryRun ?? false;
|
|
508
|
-
console.log(`
|
|
509
|
-
π·οΈ SPIDERSAN TREETOP OBSERVER (Mode 1)
|
|
510
|
-
ββββββββββββββββββββββββββββββββββββββ
|
|
511
|
-
Repos: ${repos.length} (${repos.map((r) => path.basename(r)).join(', ')})
|
|
512
|
-
Interval: ${options.interval}s base (adaptive)
|
|
513
|
-
Dry-run: ${dryRun}
|
|
514
|
-
ββββββββββββββββββββββββββββββββββββββ
|
|
515
|
-
${dryRun ? 'Running one tick then exiting.' : 'Press Ctrl+C to stop.'}
|
|
516
|
-
`);
|
|
517
|
-
const broadcastedConflicts = new Set();
|
|
518
|
-
if (dryRun) {
|
|
519
|
-
await runObserverTick(repos, true, broadcastedConflicts);
|
|
520
|
-
console.log('[DRY-RUN] Tick complete. Exiting.');
|
|
521
|
-
return;
|
|
522
|
-
}
|
|
523
|
-
// Graceful shutdown
|
|
524
|
-
let running = true;
|
|
525
|
-
process.on('SIGINT', () => { running = false; console.log('\nπ·οΈ Treetop observer stopped.'); process.exit(0); });
|
|
526
|
-
process.on('SIGTERM', () => { running = false; process.exit(0); });
|
|
527
|
-
while (running) {
|
|
528
|
-
const result = await runObserverTick(repos, false, broadcastedConflicts);
|
|
529
|
-
const nextMs = adaptiveInterval(result, baseMs);
|
|
530
|
-
console.log(`[SLEEP] Next tick in ${nextMs / 1000}s`);
|
|
531
|
-
await new Promise((resolve) => setTimeout(resolve, nextMs));
|
|
532
|
-
}
|
|
533
|
-
});
|
|
534
|
-
// Attach Mode 1 as a subcommand of watch
|
|
535
|
-
watchCommand.addCommand(watchTreetopCommand);
|
|
536
|
-
//# sourceMappingURL=watch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/commands/welcome.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoFpC,eAAO,MAAM,cAAc,SAIrB,CAAC"}
|
package/dist/commands/welcome.js
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* spidersan welcome
|
|
3
|
-
*
|
|
4
|
-
* Friendly onboarding and quick start for core CLI.
|
|
5
|
-
*/
|
|
6
|
-
import { Command } from 'commander';
|
|
7
|
-
import { existsSync } from 'fs';
|
|
8
|
-
import { join } from 'path';
|
|
9
|
-
const colors = {
|
|
10
|
-
reset: '\x1b[0m',
|
|
11
|
-
bright: '\x1b[1m',
|
|
12
|
-
dim: '\x1b[2m',
|
|
13
|
-
yellow: '\x1b[33m',
|
|
14
|
-
magenta: '\x1b[35m',
|
|
15
|
-
cyan: '\x1b[36m',
|
|
16
|
-
green: '\x1b[32m',
|
|
17
|
-
};
|
|
18
|
-
const c = colors;
|
|
19
|
-
function sleep(ms) {
|
|
20
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
21
|
-
}
|
|
22
|
-
async function runWelcome() {
|
|
23
|
-
console.log(`
|
|
24
|
-
${c.bright}${c.magenta}π·οΈ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${c.reset}
|
|
25
|
-
${c.bright}${c.magenta} SPIDERSAN WELCOMES YOU TO THE WEB${c.reset}
|
|
26
|
-
${c.bright}${c.magenta}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${c.reset}
|
|
27
|
-
`);
|
|
28
|
-
await sleep(500);
|
|
29
|
-
console.log(`${c.cyan} You are not alone in this codebase.${c.reset}`);
|
|
30
|
-
await sleep(450);
|
|
31
|
-
console.log(`${c.cyan} Other agents weave alongside you.${c.reset}`);
|
|
32
|
-
await sleep(450);
|
|
33
|
-
console.log(`${c.cyan} The web keeps you from colliding.${c.reset}`);
|
|
34
|
-
await sleep(700);
|
|
35
|
-
const initialized = existsSync(join(process.cwd(), '.spidersan', 'registry.json'));
|
|
36
|
-
if (!initialized) {
|
|
37
|
-
console.log(`
|
|
38
|
-
${c.yellow}πΈοΈ FIRST TIME HERE?${c.reset}
|
|
39
|
-
${c.bright}Step 1:${c.reset} Initialize the web in your project
|
|
40
|
-
${c.green}$ spidersan init${c.reset}
|
|
41
|
-
`);
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
console.log(`
|
|
45
|
-
${c.green}β Web initialized in this project${c.reset}
|
|
46
|
-
`);
|
|
47
|
-
}
|
|
48
|
-
console.log(`${c.cyan}πΈοΈ QUICK START:${c.reset}
|
|
49
|
-
|
|
50
|
-
${c.bright}Register your branch:${c.reset}
|
|
51
|
-
${c.green}$ spidersan register --files "src/myfile.ts" --agent myname${c.reset}
|
|
52
|
-
|
|
53
|
-
${c.bright}Check for conflicts:${c.reset}
|
|
54
|
-
${c.green}$ spidersan conflicts${c.reset}
|
|
55
|
-
|
|
56
|
-
${c.bright}When done:${c.reset}
|
|
57
|
-
${c.green}$ spidersan merged${c.reset}
|
|
58
|
-
`);
|
|
59
|
-
await sleep(600);
|
|
60
|
-
console.log(`${c.bright}${c.cyan}βοΈ CONFIG SETUP${c.reset}
|
|
61
|
-
|
|
62
|
-
${c.dim}Set your default agent + storage in a guided wizard:${c.reset}
|
|
63
|
-
${c.green}$ spidersan config wizard${c.reset}
|
|
64
|
-
`);
|
|
65
|
-
await sleep(600);
|
|
66
|
-
console.log(`${c.bright}${c.cyan}β‘ AUTO-WATCH${c.reset}
|
|
67
|
-
|
|
68
|
-
${c.dim}Start a background watcher from config paths:${c.reset}
|
|
69
|
-
${c.green}$ spidersan auto start${c.reset}
|
|
70
|
-
|
|
71
|
-
${c.dim}Or run a foreground watcher:${c.reset}
|
|
72
|
-
${c.green}$ spidersan watch --agent myname${c.reset}
|
|
73
|
-
`);
|
|
74
|
-
await sleep(600);
|
|
75
|
-
console.log(`${c.magenta}βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${c.reset}
|
|
76
|
-
${c.bright}${c.magenta} The web sees all. The web protects all.${c.reset}
|
|
77
|
-
${c.bright}${c.magenta}π·οΈ βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ${c.reset}
|
|
78
|
-
`);
|
|
79
|
-
}
|
|
80
|
-
export const welcomeCommand = new Command('welcome')
|
|
81
|
-
.description('π·οΈ Welcome ritual - start here if you are new')
|
|
82
|
-
.action(async () => {
|
|
83
|
-
await runWelcome();
|
|
84
|
-
});
|
|
85
|
-
//# sourceMappingURL=welcome.js.map
|