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/lib/graph.js
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
function compareNodeIds(left, right, blockingCounts) {
|
|
2
|
-
if (blockingCounts) {
|
|
3
|
-
const leftCount = blockingCounts.get(left) ?? 0;
|
|
4
|
-
const rightCount = blockingCounts.get(right) ?? 0;
|
|
5
|
-
if (leftCount !== rightCount) {
|
|
6
|
-
return rightCount - leftCount;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
return left.localeCompare(right);
|
|
10
|
-
}
|
|
11
|
-
function normalizeGraph(nodes, graph) {
|
|
12
|
-
const knownNodes = new Set(nodes);
|
|
13
|
-
const normalized = new Map();
|
|
14
|
-
for (const node of nodes) {
|
|
15
|
-
const neighbors = graph.get(node) ?? [];
|
|
16
|
-
const uniqueNeighbors = new Set();
|
|
17
|
-
for (const neighbor of neighbors) {
|
|
18
|
-
if (neighbor !== node && knownNodes.has(neighbor)) {
|
|
19
|
-
uniqueNeighbors.add(neighbor);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
normalized.set(node, Array.from(uniqueNeighbors).sort((left, right) => left.localeCompare(right)));
|
|
23
|
-
}
|
|
24
|
-
return normalized;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Build a conflict adjacency map: for each branch, which other branches
|
|
28
|
-
* share overlapping files?
|
|
29
|
-
* Pure function — takes branch data, returns a Map.
|
|
30
|
-
*/
|
|
31
|
-
export function buildConflictGraph(branches) {
|
|
32
|
-
const fileToBranches = new Map();
|
|
33
|
-
for (const branch of branches) {
|
|
34
|
-
for (const file of new Set(branch.files)) {
|
|
35
|
-
let branchNames = fileToBranches.get(file);
|
|
36
|
-
if (!branchNames) {
|
|
37
|
-
branchNames = new Set();
|
|
38
|
-
fileToBranches.set(file, branchNames);
|
|
39
|
-
}
|
|
40
|
-
branchNames.add(branch.name);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
const graph = new Map();
|
|
44
|
-
for (const branch of branches) {
|
|
45
|
-
const conflicts = new Set();
|
|
46
|
-
for (const file of new Set(branch.files)) {
|
|
47
|
-
const branchNames = fileToBranches.get(file);
|
|
48
|
-
if (!branchNames) {
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
for (const otherBranch of branchNames) {
|
|
52
|
-
if (otherBranch !== branch.name) {
|
|
53
|
-
conflicts.add(otherBranch);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
graph.set(branch.name, Array.from(conflicts).sort((left, right) => left.localeCompare(right)));
|
|
58
|
-
}
|
|
59
|
-
return graph;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Topological sort with tie-breaking by blocking count.
|
|
63
|
-
* Returns branches in recommended merge order.
|
|
64
|
-
* Cycles are broken by inserting branches at earliest valid position.
|
|
65
|
-
* blockingCounts is optional; when omitted, sort is alphabetical within tied groups.
|
|
66
|
-
*/
|
|
67
|
-
export function topologicalSort(nodes, graph, blockingCounts) {
|
|
68
|
-
const normalizedGraph = normalizeGraph(nodes, graph);
|
|
69
|
-
const inDegree = new Map();
|
|
70
|
-
const remaining = new Set(nodes);
|
|
71
|
-
const available = [];
|
|
72
|
-
const order = [];
|
|
73
|
-
for (const node of nodes) {
|
|
74
|
-
inDegree.set(node, 0);
|
|
75
|
-
}
|
|
76
|
-
for (const neighbors of normalizedGraph.values()) {
|
|
77
|
-
for (const neighbor of neighbors) {
|
|
78
|
-
inDegree.set(neighbor, (inDegree.get(neighbor) ?? 0) + 1);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
for (const node of nodes) {
|
|
82
|
-
if ((inDegree.get(node) ?? 0) === 0) {
|
|
83
|
-
available.push(node);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
available.sort((left, right) => compareNodeIds(left, right, blockingCounts));
|
|
87
|
-
while (remaining.size > 0) {
|
|
88
|
-
let current = available.shift();
|
|
89
|
-
if (!current) {
|
|
90
|
-
current = Array.from(remaining).sort((left, right) => compareNodeIds(left, right, blockingCounts))[0];
|
|
91
|
-
}
|
|
92
|
-
if (!current || !remaining.has(current)) {
|
|
93
|
-
continue;
|
|
94
|
-
}
|
|
95
|
-
remaining.delete(current);
|
|
96
|
-
order.push(current);
|
|
97
|
-
for (const neighbor of normalizedGraph.get(current) ?? []) {
|
|
98
|
-
const nextDegree = (inDegree.get(neighbor) ?? 0) - 1;
|
|
99
|
-
inDegree.set(neighbor, nextDegree);
|
|
100
|
-
if (nextDegree === 0 && remaining.has(neighbor)) {
|
|
101
|
-
available.push(neighbor);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
available.sort((left, right) => compareNodeIds(left, right, blockingCounts));
|
|
105
|
-
}
|
|
106
|
-
return order;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* For each node, count how many other nodes are (transitively) blocked by it.
|
|
110
|
-
* Used for rarest-first prioritization.
|
|
111
|
-
*/
|
|
112
|
-
export function calculateBlockingCounts(nodes, graph) {
|
|
113
|
-
const normalizedGraph = normalizeGraph(nodes, graph);
|
|
114
|
-
const counts = new Map();
|
|
115
|
-
for (const node of nodes) {
|
|
116
|
-
const seen = new Set();
|
|
117
|
-
const stack = [...(normalizedGraph.get(node) ?? [])];
|
|
118
|
-
while (stack.length > 0) {
|
|
119
|
-
const current = stack.pop();
|
|
120
|
-
if (!current || current === node || seen.has(current)) {
|
|
121
|
-
continue;
|
|
122
|
-
}
|
|
123
|
-
seen.add(current);
|
|
124
|
-
for (const neighbor of normalizedGraph.get(current) ?? []) {
|
|
125
|
-
if (!seen.has(neighbor) && neighbor !== node) {
|
|
126
|
-
stack.push(neighbor);
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
counts.set(node, seen.size);
|
|
131
|
-
}
|
|
132
|
-
return counts;
|
|
133
|
-
}
|
|
134
|
-
//# sourceMappingURL=graph.js.map
|
package/dist/lib/graph.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/lib/graph.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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"}
|
package/dist/lib/license.d.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Spidersan License Verification
|
|
3
|
-
*
|
|
4
|
-
* Ed25519-based license verification for Pro features.
|
|
5
|
-
* Public key is embedded; private key is kept by treebird for signing.
|
|
6
|
-
*/
|
|
7
|
-
export declare const FREE_TIER_LIMITS: {
|
|
8
|
-
maxConcurrentBranches: number;
|
|
9
|
-
};
|
|
10
|
-
export type ProFeature = 'unlimited_branches' | 'mcp_server' | 'conflict_prediction' | 'team_sync';
|
|
11
|
-
export interface LicenseData {
|
|
12
|
-
email: string;
|
|
13
|
-
plan: 'free' | 'pro';
|
|
14
|
-
expiresAt: string;
|
|
15
|
-
issuedAt: string;
|
|
16
|
-
features: ProFeature[];
|
|
17
|
-
}
|
|
18
|
-
export interface License {
|
|
19
|
-
data: LicenseData;
|
|
20
|
-
isValid: boolean;
|
|
21
|
-
isExpired: boolean;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Verify a license string using Ed25519 detached signature
|
|
25
|
-
*/
|
|
26
|
-
export declare function verifyLicense(licenseString: string): License | null;
|
|
27
|
-
/**
|
|
28
|
-
* Save a license key to disk
|
|
29
|
-
*/
|
|
30
|
-
export declare function saveLicense(licenseString: string): boolean;
|
|
31
|
-
/**
|
|
32
|
-
* Load the saved license from disk
|
|
33
|
-
*/
|
|
34
|
-
export declare function loadLicense(): License | null;
|
|
35
|
-
/**
|
|
36
|
-
* Check if user has a valid Pro license
|
|
37
|
-
*/
|
|
38
|
-
export declare function isPro(): boolean;
|
|
39
|
-
/**
|
|
40
|
-
* Check if a specific Pro feature is enabled
|
|
41
|
-
*/
|
|
42
|
-
export declare function hasFeature(feature: ProFeature): boolean;
|
|
43
|
-
/**
|
|
44
|
-
* Get license status summary
|
|
45
|
-
*/
|
|
46
|
-
export declare function getLicenseStatus(): {
|
|
47
|
-
plan: 'free' | 'pro';
|
|
48
|
-
email?: string;
|
|
49
|
-
expiresAt?: string;
|
|
50
|
-
features: ProFeature[];
|
|
51
|
-
daysRemaining?: number;
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* Check branch limit and throw if exceeded (for free tier)
|
|
55
|
-
*/
|
|
56
|
-
export declare function checkBranchLimit(currentBranchCount: number): Promise<void>;
|
|
57
|
-
/**
|
|
58
|
-
* Print Pro upsell message (soft sell)
|
|
59
|
-
*/
|
|
60
|
-
export declare function printProUpsell(feature: string): void;
|
|
61
|
-
//# sourceMappingURL=license.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/lib/license.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,eAAO,MAAM,gBAAgB;;CAE5B,CAAC;AAGF,MAAM,MAAM,UAAU,GAChB,oBAAoB,GACpB,YAAY,GACZ,qBAAqB,GACrB,WAAW,CAAC;AAElB,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,UAAU,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACtB;AAyBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CA8BnE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,GAAG,IAAI,CAS5C;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,OAAO,CAM/B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAIvD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAChC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAqBA;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYhF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMpD"}
|
package/dist/lib/license.js
DELETED
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Spidersan License Verification
|
|
3
|
-
*
|
|
4
|
-
* Ed25519-based license verification for Pro features.
|
|
5
|
-
* Public key is embedded; private key is kept by treebird for signing.
|
|
6
|
-
*/
|
|
7
|
-
import nacl from 'tweetnacl';
|
|
8
|
-
import util from 'tweetnacl-util';
|
|
9
|
-
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
10
|
-
import { join } from 'path';
|
|
11
|
-
import { homedir } from 'os';
|
|
12
|
-
// License storage location
|
|
13
|
-
const LICENSE_DIR = join(homedir(), '.spidersan');
|
|
14
|
-
const LICENSE_FILE = join(LICENSE_DIR, 'license.key');
|
|
15
|
-
// Treebird's public key for license verification (Ed25519)
|
|
16
|
-
// This is the ONLY key that can sign valid licenses
|
|
17
|
-
const TREEBIRD_PUBLIC_KEY = 'XqIqSlybZGKkKemgLKKl8P9MepnObhcJcxxZHtgG8/o=';
|
|
18
|
-
// Free tier limits
|
|
19
|
-
export const FREE_TIER_LIMITS = {
|
|
20
|
-
maxConcurrentBranches: 5,
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Ensure license directory exists
|
|
24
|
-
*/
|
|
25
|
-
function ensureLicenseDir() {
|
|
26
|
-
if (!existsSync(LICENSE_DIR)) {
|
|
27
|
-
mkdirSync(LICENSE_DIR, { recursive: true });
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Parse a license string into components
|
|
32
|
-
* Format: LICENSE_V1.BASE64_DATA.BASE64_SIGNATURE
|
|
33
|
-
*/
|
|
34
|
-
function parseLicenseString(licenseString) {
|
|
35
|
-
const parts = licenseString.trim().split('.');
|
|
36
|
-
if (parts.length !== 3)
|
|
37
|
-
return null;
|
|
38
|
-
const [version, data, signature] = parts;
|
|
39
|
-
if (version !== 'LICENSE_V1')
|
|
40
|
-
return null;
|
|
41
|
-
return { version, data, signature };
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Verify a license string using Ed25519 detached signature
|
|
45
|
-
*/
|
|
46
|
-
export function verifyLicense(licenseString) {
|
|
47
|
-
try {
|
|
48
|
-
const parsed = parseLicenseString(licenseString);
|
|
49
|
-
if (!parsed)
|
|
50
|
-
return null;
|
|
51
|
-
const dataBytes = util.decodeBase64(parsed.data);
|
|
52
|
-
// Production mode - verify detached Ed25519 signature
|
|
53
|
-
const publicKey = util.decodeBase64(TREEBIRD_PUBLIC_KEY);
|
|
54
|
-
const signatureBytes = util.decodeBase64(parsed.signature);
|
|
55
|
-
// Verify the detached signature
|
|
56
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
57
|
-
const isValid = nacl.sign.detached.verify(dataBytes, signatureBytes, publicKey);
|
|
58
|
-
if (!isValid)
|
|
59
|
-
return null;
|
|
60
|
-
const dataString = util.encodeUTF8(dataBytes);
|
|
61
|
-
const data = JSON.parse(dataString);
|
|
62
|
-
const expiresAt = new Date(data.expiresAt);
|
|
63
|
-
const isExpired = expiresAt < new Date();
|
|
64
|
-
return {
|
|
65
|
-
data,
|
|
66
|
-
isValid: true,
|
|
67
|
-
isExpired,
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Save a license key to disk
|
|
76
|
-
*/
|
|
77
|
-
export function saveLicense(licenseString) {
|
|
78
|
-
try {
|
|
79
|
-
ensureLicenseDir();
|
|
80
|
-
writeFileSync(LICENSE_FILE, licenseString.trim(), { mode: 0o600 });
|
|
81
|
-
return true;
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Load the saved license from disk
|
|
89
|
-
*/
|
|
90
|
-
export function loadLicense() {
|
|
91
|
-
if (!existsSync(LICENSE_FILE))
|
|
92
|
-
return null;
|
|
93
|
-
try {
|
|
94
|
-
const licenseString = readFileSync(LICENSE_FILE, 'utf-8');
|
|
95
|
-
return verifyLicense(licenseString);
|
|
96
|
-
}
|
|
97
|
-
catch {
|
|
98
|
-
return null;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Check if user has a valid Pro license
|
|
103
|
-
*/
|
|
104
|
-
export function isPro() {
|
|
105
|
-
const license = loadLicense();
|
|
106
|
-
if (!license)
|
|
107
|
-
return false;
|
|
108
|
-
if (!license.isValid)
|
|
109
|
-
return false;
|
|
110
|
-
if (license.isExpired)
|
|
111
|
-
return false;
|
|
112
|
-
return license.data.plan === 'pro';
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* Check if a specific Pro feature is enabled
|
|
116
|
-
*/
|
|
117
|
-
export function hasFeature(feature) {
|
|
118
|
-
const license = loadLicense();
|
|
119
|
-
if (!license || !license.isValid || license.isExpired)
|
|
120
|
-
return false;
|
|
121
|
-
return license.data.features.includes(feature);
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Get license status summary
|
|
125
|
-
*/
|
|
126
|
-
export function getLicenseStatus() {
|
|
127
|
-
const license = loadLicense();
|
|
128
|
-
if (!license || !license.isValid || license.isExpired) {
|
|
129
|
-
return {
|
|
130
|
-
plan: 'free',
|
|
131
|
-
features: [],
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
const expiresAt = new Date(license.data.expiresAt);
|
|
135
|
-
const now = new Date();
|
|
136
|
-
const daysRemaining = Math.ceil((expiresAt.getTime() - now.getTime()) / (1000 * 60 * 60 * 24));
|
|
137
|
-
return {
|
|
138
|
-
plan: license.data.plan,
|
|
139
|
-
email: license.data.email,
|
|
140
|
-
expiresAt: license.data.expiresAt,
|
|
141
|
-
features: license.data.features,
|
|
142
|
-
daysRemaining,
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Check branch limit and throw if exceeded (for free tier)
|
|
147
|
-
*/
|
|
148
|
-
export async function checkBranchLimit(currentBranchCount) {
|
|
149
|
-
if (isPro())
|
|
150
|
-
return; // Pro has unlimited
|
|
151
|
-
if (currentBranchCount >= FREE_TIER_LIMITS.maxConcurrentBranches) {
|
|
152
|
-
console.error(`\n🕷️ Free tier limit reached: ${currentBranchCount}/${FREE_TIER_LIMITS.maxConcurrentBranches} branches`);
|
|
153
|
-
console.error('');
|
|
154
|
-
console.error(' Options:');
|
|
155
|
-
console.error(' • Clean up: spidersan merged <branch> or spidersan abandon <branch>');
|
|
156
|
-
console.error(' • Upgrade: spidersan.dev/pro for unlimited branches');
|
|
157
|
-
console.error('');
|
|
158
|
-
process.exit(1);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Print Pro upsell message (soft sell)
|
|
163
|
-
*/
|
|
164
|
-
export function printProUpsell(feature) {
|
|
165
|
-
if (isPro())
|
|
166
|
-
return;
|
|
167
|
-
console.log('');
|
|
168
|
-
console.log(`💎 Pro tip: Upgrade for ${feature}`);
|
|
169
|
-
console.log(' spidersan.dev/pro');
|
|
170
|
-
}
|
|
171
|
-
//# sourceMappingURL=license.js.map
|
package/dist/lib/license.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/lib/license.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { DriftResult, DriftSkipped } from './remote-drift.js';
|
|
2
|
-
export interface PulseRenderOptions {
|
|
3
|
-
branch: string;
|
|
4
|
-
registered: boolean;
|
|
5
|
-
colonySynced?: number;
|
|
6
|
-
colonyOffline?: boolean;
|
|
7
|
-
activeBranches?: number;
|
|
8
|
-
conflicts: Array<{
|
|
9
|
-
tier: number;
|
|
10
|
-
branch: string;
|
|
11
|
-
files: string[];
|
|
12
|
-
agent?: string;
|
|
13
|
-
}>;
|
|
14
|
-
drift?: DriftResult | DriftSkipped | null;
|
|
15
|
-
verbose?: boolean;
|
|
16
|
-
}
|
|
17
|
-
/** Pure. Returns terminal string for spidersan pulse human output. */
|
|
18
|
-
export declare function renderPulseReport(opts: PulseRenderOptions): string;
|
|
19
|
-
//# sourceMappingURL=pulse-renderer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pulse-renderer.d.ts","sourceRoot":"","sources":["../../src/lib/pulse-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpF,KAAK,CAAC,EAAE,WAAW,GAAG,YAAY,GAAG,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAqDlE"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/** Pure. Returns terminal string for spidersan pulse human output. */
|
|
2
|
-
export function renderPulseReport(opts) {
|
|
3
|
-
const lines = [];
|
|
4
|
-
if (!opts.registered) {
|
|
5
|
-
lines.push(`🕷️ Branch "${opts.branch}" is not registered.`);
|
|
6
|
-
lines.push(' Run: spidersan register --files "..."');
|
|
7
|
-
if (opts.colonyOffline === false) {
|
|
8
|
-
lines.push(` Colony: synced ${opts.colonySynced ?? 0} claim(s)`);
|
|
9
|
-
}
|
|
10
|
-
appendDrift(lines, opts.drift);
|
|
11
|
-
return lines.join('\n').trimEnd();
|
|
12
|
-
}
|
|
13
|
-
const colonyStatus = opts.colonyOffline
|
|
14
|
-
? '⚠ offline'
|
|
15
|
-
: `✅ synced ${opts.colonySynced ?? 0} claim(s)`;
|
|
16
|
-
lines.push(`🕷️ SPIDERSAN PULSE — "${opts.branch}"`);
|
|
17
|
-
lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
18
|
-
lines.push(`Colony: ${colonyStatus}`);
|
|
19
|
-
lines.push(`Branches: ${opts.activeBranches ?? 1} active`);
|
|
20
|
-
lines.push('');
|
|
21
|
-
if (opts.conflicts.length === 0) {
|
|
22
|
-
lines.push('✅ No conflicts detected. You\'re good to go!');
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
const tierIcons = { 1: '🟡', 2: '🟠', 3: '🔴' };
|
|
26
|
-
const tierLabels = { 1: 'WARN', 2: 'PAUSE', 3: 'BLOCK' };
|
|
27
|
-
for (const conflict of opts.conflicts) {
|
|
28
|
-
const icon = tierIcons[conflict.tier] ?? '🟡';
|
|
29
|
-
const label = tierLabels[conflict.tier] ?? 'WARN';
|
|
30
|
-
const agentTag = conflict.agent ? ` [@${conflict.agent}]` : '';
|
|
31
|
-
lines.push(`${icon} TIER ${conflict.tier} ${label}: ${conflict.branch}${agentTag}`);
|
|
32
|
-
for (const file of conflict.files) {
|
|
33
|
-
lines.push(` • ${file}`);
|
|
34
|
-
}
|
|
35
|
-
lines.push('');
|
|
36
|
-
}
|
|
37
|
-
const tier3 = opts.conflicts.filter((conflict) => conflict.tier === 3).length;
|
|
38
|
-
const tier2 = opts.conflicts.filter((conflict) => conflict.tier === 2).length;
|
|
39
|
-
const tier1 = opts.conflicts.filter((conflict) => conflict.tier === 1).length;
|
|
40
|
-
lines.push('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
|
|
41
|
-
lines.push(`📊 Summary: 🔴 ${tier3} BLOCK | 🟠 ${tier2} PAUSE | 🟡 ${tier1} WARN`);
|
|
42
|
-
}
|
|
43
|
-
appendDrift(lines, opts.drift);
|
|
44
|
-
return lines.join('\n').trimEnd();
|
|
45
|
-
}
|
|
46
|
-
function appendDrift(lines, drift) {
|
|
47
|
-
if (!drift) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
lines.push('');
|
|
51
|
-
if ('skipped' in drift) {
|
|
52
|
-
lines.push(`⚠ Remote drift check skipped: ${drift.reason}`);
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
lines.push(...renderDriftReportLines(drift));
|
|
56
|
-
}
|
|
57
|
-
function tierIcon(tier) {
|
|
58
|
-
if (tier === 3)
|
|
59
|
-
return '🔴';
|
|
60
|
-
if (tier === 2)
|
|
61
|
-
return '🟠';
|
|
62
|
-
if (tier === 1)
|
|
63
|
-
return '🟡';
|
|
64
|
-
return '⚪';
|
|
65
|
-
}
|
|
66
|
-
function renderDriftReportLines(drift) {
|
|
67
|
-
if (drift.state === 'synced' || drift.remoteAhead === 0) {
|
|
68
|
-
return ['✅ Remote drift: 0 commits ahead. Safe to push.'];
|
|
69
|
-
}
|
|
70
|
-
const tierLabels = { 1: 'TIER 1', 2: 'TIER 2', 3: 'TIER 3' };
|
|
71
|
-
const lines = [
|
|
72
|
-
`🕷️ REMOTE DRIFT — "${drift.branch}"`,
|
|
73
|
-
'━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━',
|
|
74
|
-
`Remote is ${drift.remoteAhead} commit(s) ahead of local.`,
|
|
75
|
-
'',
|
|
76
|
-
'Drift zone (files touched by remote commits):',
|
|
77
|
-
];
|
|
78
|
-
for (const entry of drift.driftZone.map((file) => {
|
|
79
|
-
const found = [...drift.registeredInDrift, ...drift.unstagedInDrift].find((item) => item.file === file);
|
|
80
|
-
return found ?? { file, registered: false, tier: null, unstaged: false };
|
|
81
|
-
})) {
|
|
82
|
-
const parts = [];
|
|
83
|
-
if (entry.registered && entry.tier !== null) {
|
|
84
|
-
parts.push(`registered — ${tierIcon(entry.tier)} ${tierLabels[entry.tier]}`);
|
|
85
|
-
}
|
|
86
|
-
if (entry.unstaged) {
|
|
87
|
-
parts.push('unstaged modification ⚠');
|
|
88
|
-
}
|
|
89
|
-
const label = parts.length > 0 ? ` [${parts.join('] [')}]` : ' [not registered, not modified]';
|
|
90
|
-
lines.push(` ${entry.file}${label}`);
|
|
91
|
-
}
|
|
92
|
-
lines.push('');
|
|
93
|
-
if (drift.registeredInDrift.length > 0) {
|
|
94
|
-
lines.push(`⚠ ${drift.registeredInDrift.length} registered file(s) in drift zone. Rebase will conflict.`);
|
|
95
|
-
}
|
|
96
|
-
if (drift.rebaseContinueRisk) {
|
|
97
|
-
lines.push('⚠ File(s) with unstaged modifications — git rebase --continue may block even');
|
|
98
|
-
lines.push(' after resolving conflict markers. Fix: git checkout HEAD -- <file>');
|
|
99
|
-
for (const entry of drift.unstagedInDrift) {
|
|
100
|
-
lines.push(` ${entry.file}`);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
lines.push('');
|
|
104
|
-
lines.push(' git fetch origin');
|
|
105
|
-
lines.push(` git log --oneline ${drift.remote} -3`);
|
|
106
|
-
return lines;
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=pulse-renderer.js.map
|