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
|
@@ -1,570 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* spidersan conflicts
|
|
3
|
-
*
|
|
4
|
-
* Detect file conflicts between branches.
|
|
5
|
-
* Supports tiered conflict blocking:
|
|
6
|
-
* TIER 1: Warning only (informational)
|
|
7
|
-
* TIER 2: Pause (notify agent, recommend action)
|
|
8
|
-
* TIER 3: Block (exit with error, prevent merge)
|
|
9
|
-
*/
|
|
10
|
-
import { Command } from 'commander';
|
|
11
|
-
import { compilePatterns } from '../lib/regex-utils.js';
|
|
12
|
-
import { execFileSync, spawnSync } from 'child_process';
|
|
13
|
-
import { basename } from 'path';
|
|
14
|
-
import { homedir } from 'os';
|
|
15
|
-
import { getStorage } from '../storage/index.js';
|
|
16
|
-
import { ASTParser } from '../lib/ast.js';
|
|
17
|
-
import { validateBranchName } from '../lib/security.js';
|
|
18
|
-
import { isExcludedPath } from './register.js';
|
|
19
|
-
import { loadConfig } from '../lib/config.js';
|
|
20
|
-
import { logActivity } from '../lib/activity.js';
|
|
21
|
-
import { isGhAvailable, getPRDetails } from '../lib/github.js';
|
|
22
|
-
import { classifyWithLabel } from '../lib/conflict-tier.js';
|
|
23
|
-
// Config
|
|
24
|
-
const HUB_URL = process.env.HUB_URL || 'https://hub.treebird.uk';
|
|
25
|
-
function getCurrentBranch() {
|
|
26
|
-
try {
|
|
27
|
-
return execFileSync('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { encoding: 'utf-8' }).trim();
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
throw new Error('Not in a git repository');
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
async function notifyHub(branch, conflicts) {
|
|
34
|
-
let hasTier3 = false;
|
|
35
|
-
let hasTier2 = false;
|
|
36
|
-
for (const c of conflicts) {
|
|
37
|
-
if (c.tier === 3)
|
|
38
|
-
hasTier3 = true;
|
|
39
|
-
else if (c.tier === 2)
|
|
40
|
-
hasTier2 = true;
|
|
41
|
-
if (hasTier3 && hasTier2)
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
if (!hasTier3 && !hasTier2)
|
|
45
|
-
return;
|
|
46
|
-
const severity = hasTier3 ? 'š“ TIER 3 BLOCK' : 'š TIER 2 PAUSE';
|
|
47
|
-
const message = `š·ļøā ļø **Conflict Alert** on \`${branch}\`\n\n${severity}\n\nConflicting files require coordination.`;
|
|
48
|
-
try {
|
|
49
|
-
await fetch(`${HUB_URL}/api/chat`, {
|
|
50
|
-
method: 'POST',
|
|
51
|
-
headers: { 'Content-Type': 'application/json' },
|
|
52
|
-
body: JSON.stringify({
|
|
53
|
-
agent: 'spidersan',
|
|
54
|
-
name: 'Spidersan',
|
|
55
|
-
message,
|
|
56
|
-
glyph: 'š·ļø'
|
|
57
|
-
})
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
// Hub offline - silent fail
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Wake a conflicting agent and send them a message about what to fix
|
|
66
|
-
*/
|
|
67
|
-
async function wakeConflictingAgent(agentId, myBranch, theirBranch, _conflictingFiles) {
|
|
68
|
-
// 1. Wake the agent via Hub
|
|
69
|
-
try {
|
|
70
|
-
const wakeResponse = await fetch(`${HUB_URL}/api/wake/${agentId}`, {
|
|
71
|
-
method: 'POST',
|
|
72
|
-
headers: { 'Content-Type': 'application/json' },
|
|
73
|
-
body: JSON.stringify({
|
|
74
|
-
sender: 'spidersan',
|
|
75
|
-
reason: `Conflict on ${theirBranch} - need resolution`
|
|
76
|
-
})
|
|
77
|
-
});
|
|
78
|
-
if (wakeResponse.ok) {
|
|
79
|
-
console.log(` š Wake signal sent to ${agentId}`);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
catch {
|
|
83
|
-
console.log(` ā ļø Could not wake ${agentId} via Hub`);
|
|
84
|
-
}
|
|
85
|
-
return true;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Wait for a specified time
|
|
89
|
-
*/
|
|
90
|
-
function sleep(ms) {
|
|
91
|
-
return new Promise(resolve => setTimeout(resolve, ms));
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Suggest simple resolutions for add/add style conflicts where both branches added the same file
|
|
95
|
-
* Typically occurs with docs or generated files. This prints guidance and a recommended sequence
|
|
96
|
-
* to preserve both variants for auditability (e.g., create a .incoming copy).
|
|
97
|
-
*/
|
|
98
|
-
function suggestAddAddResolution(conflicts) {
|
|
99
|
-
const addAddFiles = new Set();
|
|
100
|
-
for (const conflict of conflicts) {
|
|
101
|
-
for (const f of conflict.files) {
|
|
102
|
-
// Simple heuristic: docs and markdown files are common add/add candidates
|
|
103
|
-
if (/\.md$/.test(f) || /docs\//.test(f)) {
|
|
104
|
-
addAddFiles.add(f);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
if (addAddFiles.size === 0)
|
|
109
|
-
return;
|
|
110
|
-
console.log('\nš” Add/Add Conflict Helper');
|
|
111
|
-
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
112
|
-
console.log('Detected files added in both branches. Recommended actions:');
|
|
113
|
-
console.log(' 1. Preserve incoming variant for auditability:');
|
|
114
|
-
console.log(' git checkout --theirs <file> && mv <file> <file>.<their-branch>.incoming && git add <file>.<their-branch>.incoming');
|
|
115
|
-
console.log(' 2. Keep canonical version in main branch and include note linking the incoming variant.');
|
|
116
|
-
console.log(' 3. Commit and continue rebase: git add -A && git rebase --continue');
|
|
117
|
-
console.log('\nExamples:');
|
|
118
|
-
for (const f of addAddFiles) {
|
|
119
|
-
console.log(` ⢠${f} -> preserve incoming as ${f}.incoming`);
|
|
120
|
-
}
|
|
121
|
-
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\n');
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Prompt user for Y/N confirmation (prevents Ralph Wiggum loops)
|
|
125
|
-
* @param prompt - The question to ask
|
|
126
|
-
* @param autoConfirm - If true, skip prompt and return true (for --auto mode)
|
|
127
|
-
*/
|
|
128
|
-
async function confirmAction(prompt, autoConfirm = false) {
|
|
129
|
-
if (autoConfirm) {
|
|
130
|
-
console.log(`${prompt} [Y/n]: Y (auto)`);
|
|
131
|
-
return true;
|
|
132
|
-
}
|
|
133
|
-
const readline = await import('readline');
|
|
134
|
-
const rl = readline.createInterface({
|
|
135
|
-
input: process.stdin,
|
|
136
|
-
output: process.stdout
|
|
137
|
-
});
|
|
138
|
-
return new Promise((resolve) => {
|
|
139
|
-
rl.question(`${prompt} [Y/n]: `, (answer) => {
|
|
140
|
-
rl.close();
|
|
141
|
-
const normalized = answer.toLowerCase().trim();
|
|
142
|
-
resolve(normalized === '' || normalized === 'y' || normalized === 'yes');
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
// āā Ecosystem scan āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
147
|
-
/**
|
|
148
|
-
* Default ecosystem repos. Configurable via SPIDERSAN_ECOSYSTEM env var.
|
|
149
|
-
* Falls back to ~/Dev/ structure (old) or ~/Dev/projects/ structure (new).
|
|
150
|
-
*/
|
|
151
|
-
function getDefaultEcosystemRepos() {
|
|
152
|
-
if (process.env.SPIDERSAN_ECOSYSTEM) {
|
|
153
|
-
return process.env.SPIDERSAN_ECOSYSTEM.split(':').map((r) => r.trim()).filter(Boolean);
|
|
154
|
-
}
|
|
155
|
-
const homeDir = process.env.HOME || homedir();
|
|
156
|
-
return [
|
|
157
|
-
`${homeDir}/Dev/Envoak`,
|
|
158
|
-
`${homeDir}/Dev/treebird-internal`,
|
|
159
|
-
`${homeDir}/Dev/spidersan`,
|
|
160
|
-
`${homeDir}/Dev/Toak`,
|
|
161
|
-
`${homeDir}/Dev/flockview`,
|
|
162
|
-
`${homeDir}/Dev/mappersan`,
|
|
163
|
-
`${homeDir}/Dev/treebird`,
|
|
164
|
-
`${homeDir}/Dev/treementor`,
|
|
165
|
-
// Agent repos
|
|
166
|
-
`${homeDir}/Dev/Artisan`,
|
|
167
|
-
`${homeDir}/Dev/Birdsan`,
|
|
168
|
-
`${homeDir}/Dev/Cosan`,
|
|
169
|
-
`${homeDir}/Dev/Marksan`,
|
|
170
|
-
`${homeDir}/Dev/Sherlocksan`,
|
|
171
|
-
`${homeDir}/Dev/Teachersan`,
|
|
172
|
-
`${homeDir}/Dev/Watsan`,
|
|
173
|
-
`${homeDir}/Dev/Yosef`,
|
|
174
|
-
// Tools & libs
|
|
175
|
-
`${homeDir}/Dev/boidz`,
|
|
176
|
-
`${homeDir}/Dev/beads`,
|
|
177
|
-
`${homeDir}/Dev/birdseye`,
|
|
178
|
-
`${homeDir}/Dev/invoak`,
|
|
179
|
-
`${homeDir}/Dev/myceliumail`,
|
|
180
|
-
`${homeDir}/Dev/nanoclaw`,
|
|
181
|
-
`${homeDir}/Dev/nanoclaw-private`,
|
|
182
|
-
`${homeDir}/Dev/proaksy`,
|
|
183
|
-
`${homeDir}/Dev/sasu`,
|
|
184
|
-
`${homeDir}/Dev/skills`,
|
|
185
|
-
`${homeDir}/Dev/spidersan`,
|
|
186
|
-
`${homeDir}/Dev/treebird-heavy`,
|
|
187
|
-
`${homeDir}/Dev/Recovery-Tree-New`,
|
|
188
|
-
];
|
|
189
|
-
}
|
|
190
|
-
const DEFAULT_ECOSYSTEM_REPOS = getDefaultEcosystemRepos();
|
|
191
|
-
function runEcosystemScan(repos, asJson) {
|
|
192
|
-
const results = [];
|
|
193
|
-
for (const repo of repos) {
|
|
194
|
-
const name = basename(repo);
|
|
195
|
-
const result = spawnSync('spidersan', ['conflicts', '--json'], { cwd: repo, encoding: 'utf-8', timeout: 15000 });
|
|
196
|
-
if (result.status === null || result.error) {
|
|
197
|
-
results.push({ repo, name, tier3: 0, tier2: 0, tier1: 0, error: 'spawn failed' });
|
|
198
|
-
continue;
|
|
199
|
-
}
|
|
200
|
-
if (result.status !== 0) {
|
|
201
|
-
// Exit 1 can be --strict mode; try to parse stdout anyway
|
|
202
|
-
// If it says "not initialized", mark as skipped
|
|
203
|
-
const combinedOut = (result.stderr ?? '') + (result.stdout ?? '');
|
|
204
|
-
if (combinedOut.includes('not initialized') || combinedOut.includes('not registered')) {
|
|
205
|
-
results.push({ repo, name, tier3: 0, tier2: 0, tier1: 0, skipped: true });
|
|
206
|
-
continue;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
try {
|
|
210
|
-
const data = JSON.parse(result.stdout);
|
|
211
|
-
results.push({
|
|
212
|
-
repo,
|
|
213
|
-
name,
|
|
214
|
-
tier3: data.summary.tier3,
|
|
215
|
-
tier2: data.summary.tier2,
|
|
216
|
-
tier1: data.summary.tier1,
|
|
217
|
-
});
|
|
218
|
-
}
|
|
219
|
-
catch {
|
|
220
|
-
results.push({ repo, name, tier3: 0, tier2: 0, tier1: 0, error: 'parse failed' });
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
const totals = results.reduce((acc, r) => ({ tier3: acc.tier3 + r.tier3, tier2: acc.tier2 + r.tier2, tier1: acc.tier1 + r.tier1 }), { tier3: 0, tier2: 0, tier1: 0 });
|
|
224
|
-
const reposWithConflicts = results.filter(r => r.tier3 + r.tier2 + r.tier1 > 0).length;
|
|
225
|
-
if (asJson) {
|
|
226
|
-
console.log(JSON.stringify({
|
|
227
|
-
ecosystem: true,
|
|
228
|
-
repos: results,
|
|
229
|
-
summary: { ...totals, repos_scanned: results.length, repos_with_conflicts: reposWithConflicts },
|
|
230
|
-
}, null, 2));
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
console.log(`
|
|
234
|
-
š·ļø ECOSYSTEM CONFLICT SCAN
|
|
235
|
-
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
236
|
-
`);
|
|
237
|
-
for (const r of results) {
|
|
238
|
-
if (r.skipped) {
|
|
239
|
-
console.log(` ⬠${r.name.padEnd(22)} (not initialized)`);
|
|
240
|
-
continue;
|
|
241
|
-
}
|
|
242
|
-
if (r.error) {
|
|
243
|
-
console.log(` ā ${r.name.padEnd(22)} (${r.error})`);
|
|
244
|
-
continue;
|
|
245
|
-
}
|
|
246
|
-
const icon = r.tier3 > 0 ? 'š“' : r.tier2 > 0 ? 'š ' : r.tier1 > 0 ? 'š”' : 'ā
';
|
|
247
|
-
const counts = r.tier3 + r.tier2 + r.tier1 > 0
|
|
248
|
-
? ` T3:${r.tier3} T2:${r.tier2} T1:${r.tier1}`
|
|
249
|
-
: ' clean';
|
|
250
|
-
console.log(` ${icon} ${r.name.padEnd(22)}${counts}`);
|
|
251
|
-
}
|
|
252
|
-
console.log(`\nāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā`);
|
|
253
|
-
console.log(`š Total: š“ ${totals.tier3} BLOCK | š ${totals.tier2} PAUSE | š” ${totals.tier1} WARN`);
|
|
254
|
-
console.log(` Repos scanned: ${results.length} | With conflicts: ${reposWithConflicts}`);
|
|
255
|
-
}
|
|
256
|
-
export const conflictsCommand = new Command('conflicts')
|
|
257
|
-
.description('Detect file conflicts between branches (with tiered blocking)')
|
|
258
|
-
.option('--branch <name>', 'Check conflicts for specific branch')
|
|
259
|
-
.option('--pr <number>', 'Check conflicts for a GitHub pull request by number')
|
|
260
|
-
.option('--json', 'Output as JSON')
|
|
261
|
-
.option('--tier <level>', 'Filter by minimum tier (1, 2, or 3)', '1')
|
|
262
|
-
.option('--strict', 'Strict mode: exit with error if TIER 2+ conflicts found')
|
|
263
|
-
.option('--notify', 'Notify Hub of TIER 2+ conflicts')
|
|
264
|
-
.option('--wake', 'Wake conflicting agents and send them fix instructions')
|
|
265
|
-
.option('--retry <seconds>', 'After waking, wait N seconds and re-check conflicts')
|
|
266
|
-
.option('--auto', 'Auto mode: skip confirmations (enables Ralph Wiggum loop)')
|
|
267
|
-
.option('--max-retries <count>', 'Maximum retry attempts in auto mode (default: 5)', '5')
|
|
268
|
-
.option('--semantic', 'Use semantic (AST) analysis for symbol-level conflict detection')
|
|
269
|
-
.option('--ecosystem', 'Scan all ecosystem repos and aggregate conflict tiers')
|
|
270
|
-
.option('--repos <paths>', 'Comma-separated repo paths for --ecosystem scan')
|
|
271
|
-
.action(async (options) => {
|
|
272
|
-
// āā Ecosystem shortcut āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
273
|
-
if (options.ecosystem) {
|
|
274
|
-
const repos = options.repos
|
|
275
|
-
? options.repos.split(',').map((r) => r.trim()).filter(Boolean)
|
|
276
|
-
: DEFAULT_ECOSYSTEM_REPOS;
|
|
277
|
-
runEcosystemScan(repos, !!options.json);
|
|
278
|
-
return;
|
|
279
|
-
}
|
|
280
|
-
const storage = await getStorage();
|
|
281
|
-
const config = await loadConfig();
|
|
282
|
-
if (!await storage.isInitialized()) {
|
|
283
|
-
console.error('ā Spidersan not initialized. Run: spidersan init');
|
|
284
|
-
process.exit(1);
|
|
285
|
-
}
|
|
286
|
-
const minTier = parseInt(options.tier, 10);
|
|
287
|
-
// Load custom patterns from config
|
|
288
|
-
const highSeverity = (config.conflicts?.highSeverityPatterns || []).map(p => new RegExp(p));
|
|
289
|
-
const mediumSeverity = (config.conflicts?.mediumSeverityPatterns || []).map(p => new RegExp(p));
|
|
290
|
-
const compiledHigh = compilePatterns(highSeverity);
|
|
291
|
-
const compiledMedium = compilePatterns(mediumSeverity);
|
|
292
|
-
let targetBranch;
|
|
293
|
-
let targetFiles;
|
|
294
|
-
if (options.pr) {
|
|
295
|
-
// --pr mode: fetch PR head branch + changed files from GitHub
|
|
296
|
-
const prNumber = parseInt(options.pr, 10);
|
|
297
|
-
if (isNaN(prNumber) || prNumber <= 0) {
|
|
298
|
-
console.error('ā Invalid PR number. Provide a positive integer, e.g. --pr 42');
|
|
299
|
-
process.exit(1);
|
|
300
|
-
}
|
|
301
|
-
if (!isGhAvailable()) {
|
|
302
|
-
console.error('ā GitHub CLI (gh) is not available or not authenticated.');
|
|
303
|
-
console.error(' Install: https://cli.github.com ā gh auth login');
|
|
304
|
-
process.exit(1);
|
|
305
|
-
}
|
|
306
|
-
let prDetails;
|
|
307
|
-
try {
|
|
308
|
-
prDetails = await getPRDetails(prNumber);
|
|
309
|
-
}
|
|
310
|
-
catch (err) {
|
|
311
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
312
|
-
console.error(`ā Failed to fetch PR #${prNumber}: ${msg}`);
|
|
313
|
-
process.exit(1);
|
|
314
|
-
}
|
|
315
|
-
targetBranch = prDetails.headBranch;
|
|
316
|
-
targetFiles = prDetails.files;
|
|
317
|
-
console.log(`š·ļø Checking conflicts for PR #${prNumber}: "${prDetails.title}"`);
|
|
318
|
-
console.log(` Branch: ${targetBranch} (${targetFiles.length} file(s) changed)`);
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
// Normal --branch or current branch mode
|
|
322
|
-
targetBranch = options.branch || getCurrentBranch();
|
|
323
|
-
const target = await storage.get(targetBranch);
|
|
324
|
-
if (!target) {
|
|
325
|
-
console.error(`ā Branch "${targetBranch}" is not registered.`);
|
|
326
|
-
console.error(' Run: spidersan register --files "..."');
|
|
327
|
-
process.exit(1);
|
|
328
|
-
}
|
|
329
|
-
targetFiles = target.files;
|
|
330
|
-
}
|
|
331
|
-
const allBranches = await storage.list();
|
|
332
|
-
const conflicts = [];
|
|
333
|
-
// Performance Optimization: Convert target files to Set for O(1) lookup
|
|
334
|
-
// Reduces complexity from O(N*M*K) to O(N*M) where N=branches, M=files/branch, K=target_files
|
|
335
|
-
// Filter excluded paths (node_modules/, dist/, etc.) at query time to handle stale registrations
|
|
336
|
-
const targetFilesSet = new Set(targetFiles.filter(f => !isExcludedPath(f)));
|
|
337
|
-
for (const branch of allBranches) {
|
|
338
|
-
if (branch.name === targetBranch || branch.status !== 'active')
|
|
339
|
-
continue;
|
|
340
|
-
// Performance Optimization: Replace .filter() with a standard loop to avoid array allocation.
|
|
341
|
-
// Short-circuit using O(1) Set lookup (targetFilesSet.has) before calling the expensive isExcludedPath.
|
|
342
|
-
const overlappingFiles = [];
|
|
343
|
-
for (let i = 0; i < branch.files.length; i++) {
|
|
344
|
-
const f = branch.files[i];
|
|
345
|
-
if (targetFilesSet.has(f) && !isExcludedPath(f)) {
|
|
346
|
-
overlappingFiles.push(f);
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
if (overlappingFiles.length > 0) {
|
|
350
|
-
// Get highest tier for this conflict
|
|
351
|
-
let maxTier = { tier: 1, label: 'WARN', icon: 'š”', action: '' };
|
|
352
|
-
for (const file of overlappingFiles) {
|
|
353
|
-
const fileTier = classifyWithLabel(file, {
|
|
354
|
-
extraTier3: compiledHigh,
|
|
355
|
-
extraTier2: compiledMedium,
|
|
356
|
-
});
|
|
357
|
-
if (fileTier.tier > maxTier.tier) {
|
|
358
|
-
maxTier = fileTier;
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
if (maxTier.tier >= minTier) {
|
|
362
|
-
conflicts.push({
|
|
363
|
-
branch: branch.name,
|
|
364
|
-
files: overlappingFiles,
|
|
365
|
-
tier: maxTier.tier,
|
|
366
|
-
tierInfo: maxTier
|
|
367
|
-
});
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
// SEMANTIC ANALYSIS with AST parser
|
|
372
|
-
const semanticConflicts = [];
|
|
373
|
-
if (options.semantic && conflicts.length > 0) {
|
|
374
|
-
console.log('\nš¬ Running semantic (AST) analysis...');
|
|
375
|
-
const astParser = new ASTParser();
|
|
376
|
-
for (const conflict of conflicts) {
|
|
377
|
-
for (const file of conflict.files) {
|
|
378
|
-
// Only analyze TypeScript/JavaScript files
|
|
379
|
-
if (!/\.(ts|js|tsx|jsx)$/.test(file))
|
|
380
|
-
continue;
|
|
381
|
-
try {
|
|
382
|
-
// Get file content from both branches
|
|
383
|
-
// Security: Use execFileSync to prevent command injection via file names
|
|
384
|
-
const currentContent = execFileSync('git', ['show', `HEAD:${file}`], { encoding: 'utf-8' });
|
|
385
|
-
const otherContent = execFileSync('git', ['show', `${conflict.branch}:${file}`], { encoding: 'utf-8' });
|
|
386
|
-
const symbolConflicts = astParser.findSymbolConflicts(currentContent, `${targetBranch}:${file}`, otherContent, `${conflict.branch}:${file}`);
|
|
387
|
-
semanticConflicts.push(...symbolConflicts);
|
|
388
|
-
}
|
|
389
|
-
catch {
|
|
390
|
-
// File might not exist in one branch, skip
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
// Sort by tier (highest first)
|
|
396
|
-
conflicts.sort((a, b) => b.tier - a.tier);
|
|
397
|
-
let tier3Count = 0;
|
|
398
|
-
let tier2Count = 0;
|
|
399
|
-
let tier1Count = 0;
|
|
400
|
-
for (const c of conflicts) {
|
|
401
|
-
if (c.tier === 3)
|
|
402
|
-
tier3Count++;
|
|
403
|
-
else if (c.tier === 2)
|
|
404
|
-
tier2Count++;
|
|
405
|
-
else if (c.tier === 1)
|
|
406
|
-
tier1Count++;
|
|
407
|
-
}
|
|
408
|
-
// Log conflict detection to activity log
|
|
409
|
-
if (conflicts.length > 0) {
|
|
410
|
-
logActivity({
|
|
411
|
-
event: 'conflict_detected',
|
|
412
|
-
branch: targetBranch,
|
|
413
|
-
details: {
|
|
414
|
-
tier3: tier3Count,
|
|
415
|
-
tier2: tier2Count,
|
|
416
|
-
tier1: tier1Count,
|
|
417
|
-
conflicting_branches: conflicts.map(c => c.branch),
|
|
418
|
-
}
|
|
419
|
-
});
|
|
420
|
-
}
|
|
421
|
-
// Check for blocking conditions
|
|
422
|
-
const shouldBlock = options.strict && (tier3Count > 0 || tier2Count > 0);
|
|
423
|
-
// Notify Hub if requested
|
|
424
|
-
if (options.notify && (tier3Count > 0 || tier2Count > 0)) {
|
|
425
|
-
await notifyHub(targetBranch, conflicts);
|
|
426
|
-
}
|
|
427
|
-
if (options.json) {
|
|
428
|
-
console.log(JSON.stringify({
|
|
429
|
-
branch: targetBranch,
|
|
430
|
-
conflicts,
|
|
431
|
-
summary: {
|
|
432
|
-
tier3: tier3Count,
|
|
433
|
-
tier2: tier2Count,
|
|
434
|
-
tier1: tier1Count,
|
|
435
|
-
blocked: shouldBlock
|
|
436
|
-
}
|
|
437
|
-
}, null, 2));
|
|
438
|
-
if (shouldBlock)
|
|
439
|
-
process.exit(1);
|
|
440
|
-
return;
|
|
441
|
-
}
|
|
442
|
-
if (conflicts.length === 0) {
|
|
443
|
-
console.log(`š·ļø No conflicts detected for "${targetBranch}"`);
|
|
444
|
-
console.log(' ā
You\'re good to merge!');
|
|
445
|
-
return;
|
|
446
|
-
}
|
|
447
|
-
console.log(`
|
|
448
|
-
š·ļø CONFLICT ANALYSIS: "${targetBranch}"
|
|
449
|
-
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
450
|
-
`);
|
|
451
|
-
for (const conflict of conflicts) {
|
|
452
|
-
console.log(`${conflict.tierInfo.icon} TIER ${conflict.tier} (${conflict.tierInfo.label}): ${conflict.branch}`);
|
|
453
|
-
for (const file of conflict.files) {
|
|
454
|
-
const fileTier = classifyWithLabel(file, {
|
|
455
|
-
extraTier3: compiledHigh,
|
|
456
|
-
extraTier2: compiledMedium,
|
|
457
|
-
});
|
|
458
|
-
console.log(` ${fileTier.icon} ${file}`);
|
|
459
|
-
}
|
|
460
|
-
console.log(` ā ${conflict.tierInfo.action}`);
|
|
461
|
-
console.log('');
|
|
462
|
-
}
|
|
463
|
-
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
464
|
-
console.log(`š Summary: š“ ${tier3Count} BLOCK | š ${tier2Count} PAUSE | š” ${tier1Count} WARN`);
|
|
465
|
-
// Offer add/add resolution suggestions for likely add/add files
|
|
466
|
-
suggestAddAddResolution(conflicts);
|
|
467
|
-
// Show semantic analysis results
|
|
468
|
-
if (options.semantic && semanticConflicts.length > 0) {
|
|
469
|
-
console.log(`\nš¬ SEMANTIC CONFLICTS DETECTED (${semanticConflicts.length} symbols):`);
|
|
470
|
-
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
471
|
-
for (const sc of semanticConflicts) {
|
|
472
|
-
console.log(` ā” ${sc.symbolType} '${sc.symbolName}'`);
|
|
473
|
-
console.log(` Modified in BOTH branches (different content)`);
|
|
474
|
-
}
|
|
475
|
-
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
476
|
-
console.log('\nš” TIP: Coordinate on these specific functions/classes,');
|
|
477
|
-
console.log(' not just the files. One of you should rebase.');
|
|
478
|
-
}
|
|
479
|
-
else if (options.semantic && semanticConflicts.length === 0) {
|
|
480
|
-
console.log('\nš¬ SEMANTIC ANALYSIS: No symbol-level conflicts!');
|
|
481
|
-
console.log(' Files overlap, but different functions were modified.');
|
|
482
|
-
console.log(' ā
Likely safe to merge (git will auto-merge).');
|
|
483
|
-
}
|
|
484
|
-
if (tier3Count > 0) {
|
|
485
|
-
console.log(`
|
|
486
|
-
š“ TIER 3 CONFLICTS FOUND
|
|
487
|
-
These files are security-critical and MUST be resolved.
|
|
488
|
-
Merge is BLOCKED until conflicts are cleared.
|
|
489
|
-
`);
|
|
490
|
-
}
|
|
491
|
-
else if (tier2Count > 0) {
|
|
492
|
-
console.log(`
|
|
493
|
-
š TIER 2 CONFLICTS FOUND
|
|
494
|
-
Coordinate with the other agent before proceeding.
|
|
495
|
-
`);
|
|
496
|
-
}
|
|
497
|
-
// Wake conflicting agents if --wake flag is set
|
|
498
|
-
if (options.wake && conflicts.length > 0) {
|
|
499
|
-
// Collect agents to wake
|
|
500
|
-
const agentsToWake = new Map();
|
|
501
|
-
// Performance Optimization: Use the already fetched allBranches
|
|
502
|
-
// to avoid N+1 slow network requests to storage.get()
|
|
503
|
-
const branchMap = new Map(allBranches.map(b => [b.name, b]));
|
|
504
|
-
for (const conflict of conflicts) {
|
|
505
|
-
const conflictBranch = branchMap.get(conflict.branch);
|
|
506
|
-
const agentId = conflictBranch?.agent;
|
|
507
|
-
if (agentId && !agentsToWake.has(agentId)) {
|
|
508
|
-
agentsToWake.set(agentId, { branch: conflict.branch, files: conflict.files });
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
if (agentsToWake.size === 0) {
|
|
512
|
-
console.log('\nā ļø No agents registered on conflicting branches.');
|
|
513
|
-
}
|
|
514
|
-
else {
|
|
515
|
-
// Show what will happen and ask for confirmation
|
|
516
|
-
console.log('\nš WAKE AGENTS?');
|
|
517
|
-
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
518
|
-
for (const [agent, info] of agentsToWake) {
|
|
519
|
-
console.log(` ⢠${agent} (${info.branch})`);
|
|
520
|
-
}
|
|
521
|
-
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
522
|
-
console.log('This will:');
|
|
523
|
-
console.log(' 1. Send wake signal via Hub\n');
|
|
524
|
-
const confirmed = await confirmAction('Wake these agents?', options.auto);
|
|
525
|
-
if (confirmed) {
|
|
526
|
-
console.log('\nš WAKING AGENTS...\n');
|
|
527
|
-
for (const [agentId, info] of agentsToWake) {
|
|
528
|
-
await wakeConflictingAgent(agentId, targetBranch, info.branch, info.files);
|
|
529
|
-
}
|
|
530
|
-
console.log(`\nā
Woke ${agentsToWake.size} agent(s)`);
|
|
531
|
-
// If --retry is set, ask before waiting
|
|
532
|
-
if (options.retry) {
|
|
533
|
-
const waitSeconds = parseInt(options.retry, 10);
|
|
534
|
-
const retryConfirmed = await confirmAction(`\nWait ${waitSeconds}s and re-check conflicts?`, options.auto);
|
|
535
|
-
if (retryConfirmed) {
|
|
536
|
-
console.log(`\nā³ Waiting ${waitSeconds}s for agents to resolve conflicts...`);
|
|
537
|
-
await sleep(waitSeconds * 1000);
|
|
538
|
-
console.log('\nš RE-CHECKING CONFLICTS...\n');
|
|
539
|
-
const { execFileSync } = await import('child_process');
|
|
540
|
-
try {
|
|
541
|
-
const { getCLIPath } = await import('../lib/security.js');
|
|
542
|
-
// Security: Use execFileSync with argument array
|
|
543
|
-
const safeBranch = validateBranchName(targetBranch);
|
|
544
|
-
const tierArg = String(parseInt(options.tier, 10) || 1);
|
|
545
|
-
execFileSync(process.execPath, [getCLIPath(), 'conflicts', '--branch', safeBranch, '--tier', tierArg], {
|
|
546
|
-
encoding: 'utf-8',
|
|
547
|
-
stdio: 'inherit'
|
|
548
|
-
});
|
|
549
|
-
return;
|
|
550
|
-
}
|
|
551
|
-
catch {
|
|
552
|
-
console.log('ā Conflicts still exist after retry.');
|
|
553
|
-
}
|
|
554
|
-
}
|
|
555
|
-
else {
|
|
556
|
-
console.log('āļø Skipping retry.');
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
|
-
else {
|
|
561
|
-
console.log('āļø Skipping wake.');
|
|
562
|
-
}
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
if (shouldBlock) {
|
|
566
|
-
console.log('ā Strict mode: Exiting with error due to TIER 2+ conflicts.');
|
|
567
|
-
process.exit(1);
|
|
568
|
-
}
|
|
569
|
-
});
|
|
570
|
-
//# sourceMappingURL=conflicts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"conflicts.js","sourceRoot":"","sources":["../../src/commands/conflicts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/commands/context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2EpC,eAAO,MAAM,cAAc,SAsBvB,CAAC"}
|