spidersan 0.10.0 → 0.20.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +171 -0
- package/README.md +39 -280
- package/dist/bin/command-registry.d.ts +25 -0
- package/dist/bin/command-registry.d.ts.map +1 -0
- package/dist/bin/command-registry.js +29 -0
- package/dist/bin/command-registry.js.map +1 -0
- package/dist/bin/spidersan.d.ts +7 -0
- package/dist/bin/spidersan.d.ts.map +1 -1
- package/dist/bin/spidersan.js +38 -57
- package/dist/bin/spidersan.js.map +1 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +17 -3
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +11 -39
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/conflicts.d.ts +22 -0
- package/dist/commands/conflicts.d.ts.map +1 -1
- package/dist/commands/conflicts.js +459 -256
- package/dist/commands/conflicts.js.map +1 -1
- package/dist/commands/cross-conflicts.d.ts.map +1 -1
- package/dist/commands/cross-conflicts.js +7 -8
- package/dist/commands/cross-conflicts.js.map +1 -1
- package/dist/commands/depends.d.ts +4 -1
- package/dist/commands/depends.d.ts.map +1 -1
- package/dist/commands/depends.js +35 -8
- package/dist/commands/depends.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +25 -7
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/git-watch.d.ts +1 -1
- package/dist/commands/git-watch.js +1 -1
- package/dist/commands/github-sync.d.ts +33 -0
- package/dist/commands/github-sync.d.ts.map +1 -1
- package/dist/commands/github-sync.js +68 -57
- package/dist/commands/github-sync.js.map +1 -1
- package/dist/commands/index.d.ts +2 -13
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +5 -20
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/merge-order.d.ts.map +1 -1
- package/dist/commands/merge-order.js +8 -4
- package/dist/commands/merge-order.js.map +1 -1
- package/dist/commands/merged.d.ts.map +1 -1
- package/dist/commands/merged.js +5 -1
- package/dist/commands/merged.js.map +1 -1
- package/dist/commands/pr-check.d.ts +24 -0
- package/dist/commands/pr-check.d.ts.map +1 -0
- package/dist/commands/pr-check.js +85 -0
- package/dist/commands/pr-check.js.map +1 -0
- package/dist/commands/ready-check.d.ts.map +1 -1
- package/dist/commands/ready-check.js +6 -3
- package/dist/commands/ready-check.js.map +1 -1
- package/dist/commands/register.d.ts +5 -0
- package/dist/commands/register.d.ts.map +1 -1
- package/dist/commands/register.js +14 -1
- package/dist/commands/register.js.map +1 -1
- package/dist/commands/registry-sync.d.ts.map +1 -1
- package/dist/commands/registry-sync.js +12 -46
- package/dist/commands/registry-sync.js.map +1 -1
- package/dist/commands/stale.d.ts.map +1 -1
- package/dist/commands/stale.js +8 -3
- package/dist/commands/stale.js.map +1 -1
- package/dist/commands/sync.d.ts +14 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +49 -31
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/verify-trunk.d.ts +18 -0
- package/dist/commands/verify-trunk.d.ts.map +1 -0
- package/dist/commands/verify-trunk.js +77 -0
- package/dist/commands/verify-trunk.js.map +1 -0
- package/dist/commands/watch.d.ts +0 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js +50 -77
- package/dist/commands/watch.js.map +1 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/activity.d.ts.map +1 -1
- package/dist/lib/activity.js +6 -2
- package/dist/lib/activity.js.map +1 -1
- package/dist/lib/ai/context-builder.d.ts.map +1 -1
- package/dist/lib/ai/context-builder.js +19 -6
- package/dist/lib/ai/context-builder.js.map +1 -1
- package/dist/lib/ai/event-handler.d.ts.map +1 -1
- package/dist/lib/ai/event-handler.js +15 -2
- package/dist/lib/ai/event-handler.js.map +1 -1
- package/dist/lib/ai/reasoner.d.ts.map +1 -1
- package/dist/lib/ai/reasoner.js +63 -82
- package/dist/lib/ai/reasoner.js.map +1 -1
- package/dist/lib/ai/setup.d.ts +1 -1
- package/dist/lib/ai/setup.d.ts.map +1 -1
- package/dist/lib/ai/types.d.ts.map +1 -1
- package/dist/lib/ai/types.js +5 -2
- package/dist/lib/ai/types.js.map +1 -1
- package/dist/lib/ast.d.ts +10 -2
- package/dist/lib/ast.d.ts.map +1 -1
- package/dist/lib/ast.js +52 -27
- package/dist/lib/ast.js.map +1 -1
- package/dist/lib/carries.d.ts +22 -0
- package/dist/lib/carries.d.ts.map +1 -0
- package/dist/lib/carries.js +56 -0
- package/dist/lib/carries.js.map +1 -0
- package/dist/lib/colony-subscriber.d.ts +1 -1
- package/dist/lib/colony-subscriber.js +1 -1
- package/dist/lib/config.d.ts +2 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +13 -8
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/conflict-renderer.d.ts.map +1 -1
- package/dist/lib/conflict-renderer.js +17 -34
- package/dist/lib/conflict-renderer.js.map +1 -1
- package/dist/lib/ecosystem-env.d.ts +33 -0
- package/dist/lib/ecosystem-env.d.ts.map +1 -0
- package/dist/lib/ecosystem-env.js +62 -0
- package/dist/lib/ecosystem-env.js.map +1 -0
- package/dist/lib/git-events-subscriber.d.ts +27 -0
- package/dist/lib/git-events-subscriber.d.ts.map +1 -1
- package/dist/lib/git-events-subscriber.js +149 -58
- package/dist/lib/git-events-subscriber.js.map +1 -1
- package/dist/lib/git-merge-analyzer.d.ts +38 -0
- package/dist/lib/git-merge-analyzer.d.ts.map +1 -0
- package/dist/lib/git-merge-analyzer.js +23 -0
- package/dist/lib/git-merge-analyzer.js.map +1 -0
- package/dist/lib/git.d.ts +88 -0
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +499 -9
- package/dist/lib/git.js.map +1 -1
- package/dist/lib/github.d.ts +69 -1
- package/dist/lib/github.d.ts.map +1 -1
- package/dist/lib/github.js +230 -16
- package/dist/lib/github.js.map +1 -1
- package/dist/lib/graph.d.ts +15 -0
- package/dist/lib/graph.d.ts.map +1 -1
- package/dist/lib/graph.js +31 -0
- package/dist/lib/graph.js.map +1 -1
- package/dist/lib/machine.d.ts +14 -0
- package/dist/lib/machine.d.ts.map +1 -0
- package/dist/lib/machine.js +38 -0
- package/dist/lib/machine.js.map +1 -0
- package/dist/lib/notify.d.ts +68 -0
- package/dist/lib/notify.d.ts.map +1 -0
- package/dist/lib/notify.js +111 -0
- package/dist/lib/notify.js.map +1 -0
- package/dist/lib/outline.d.ts +6 -0
- package/dist/lib/outline.d.ts.map +1 -0
- package/dist/lib/outline.js +60 -0
- package/dist/lib/outline.js.map +1 -0
- package/dist/lib/push-registry.d.ts +22 -0
- package/dist/lib/push-registry.d.ts.map +1 -0
- package/dist/lib/push-registry.js +21 -0
- package/dist/lib/push-registry.js.map +1 -0
- package/dist/lib/reconcile.d.ts +100 -0
- package/dist/lib/reconcile.d.ts.map +1 -0
- package/dist/lib/reconcile.js +121 -0
- package/dist/lib/reconcile.js.map +1 -0
- package/dist/lib/security.d.ts +1 -6
- package/dist/lib/security.d.ts.map +1 -1
- package/dist/lib/security.js +1 -11
- package/dist/lib/security.js.map +1 -1
- package/dist/lib/semantic-analysis.d.ts +31 -0
- package/dist/lib/semantic-analysis.d.ts.map +1 -0
- package/dist/lib/semantic-analysis.js +120 -0
- package/dist/lib/semantic-analysis.js.map +1 -0
- package/dist/lib/supabase-credentials.d.ts +36 -0
- package/dist/lib/supabase-credentials.d.ts.map +1 -0
- package/dist/lib/supabase-credentials.js +43 -0
- package/dist/lib/supabase-credentials.js.map +1 -0
- package/dist/lib/trunk.d.ts +39 -0
- package/dist/lib/trunk.d.ts.map +1 -0
- package/dist/lib/trunk.js +116 -0
- package/dist/lib/trunk.js.map +1 -0
- package/dist/storage/adapter.d.ts +20 -1
- package/dist/storage/adapter.d.ts.map +1 -1
- package/dist/storage/branch-registry-store.d.ts +1 -1
- package/dist/storage/branch-registry-store.d.ts.map +1 -1
- package/dist/storage/factory.d.ts +0 -4
- package/dist/storage/factory.d.ts.map +1 -1
- package/dist/storage/factory.js +2 -26
- package/dist/storage/factory.js.map +1 -1
- package/dist/storage/json-branch-registry-store.d.ts +1 -1
- package/dist/storage/json-branch-registry-store.d.ts.map +1 -1
- package/dist/storage/json-branch-registry-store.js +33 -7
- package/dist/storage/json-branch-registry-store.js.map +1 -1
- package/dist/storage/local.d.ts +1 -1
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/local.js +2 -2
- package/dist/storage/local.js.map +1 -1
- package/dist/storage/memory-branch-registry-store.d.ts +1 -1
- package/dist/storage/memory-branch-registry-store.d.ts.map +1 -1
- package/dist/storage/memory-branch-registry-store.js +4 -1
- package/dist/storage/memory-branch-registry-store.js.map +1 -1
- package/dist/storage/supabase-registry-sync-client-impl.d.ts +1 -7
- package/dist/storage/supabase-registry-sync-client-impl.d.ts.map +1 -1
- package/dist/storage/supabase-registry-sync-client-impl.js +17 -61
- package/dist/storage/supabase-registry-sync-client-impl.js.map +1 -1
- package/dist/storage/supabase-registry-sync-client.d.ts +1 -1
- package/dist/storage/supabase-registry-sync-client.d.ts.map +1 -1
- package/dist/storage/supabase.d.ts +3 -9
- package/dist/storage/supabase.d.ts.map +1 -1
- package/dist/storage/supabase.js +4 -22
- package/dist/storage/supabase.js.map +1 -1
- package/dist/types/cloud.d.ts +1 -0
- package/dist/types/cloud.d.ts.map +1 -1
- package/package.json +88 -90
- package/dist/commands/activate.d.ts +0 -9
- package/dist/commands/activate.d.ts.map +0 -1
- package/dist/commands/activate.js +0 -45
- package/dist/commands/activate.js.map +0 -1
- package/dist/commands/active-windows.d.ts +0 -16
- package/dist/commands/active-windows.d.ts.map +0 -1
- package/dist/commands/active-windows.js +0 -373
- package/dist/commands/active-windows.js.map +0 -1
- package/dist/commands/ai.d.ts +0 -15
- package/dist/commands/ai.d.ts.map +0 -1
- package/dist/commands/ai.js +0 -498
- package/dist/commands/ai.js.map +0 -1
- package/dist/commands/audit-mark.d.ts +0 -12
- package/dist/commands/audit-mark.d.ts.map +0 -1
- package/dist/commands/audit-mark.js +0 -204
- package/dist/commands/audit-mark.js.map +0 -1
- package/dist/commands/auto.d.ts +0 -8
- package/dist/commands/auto.d.ts.map +0 -1
- package/dist/commands/auto.js +0 -207
- package/dist/commands/auto.js.map +0 -1
- package/dist/commands/bot.d.ts +0 -16
- package/dist/commands/bot.d.ts.map +0 -1
- package/dist/commands/bot.js +0 -416
- package/dist/commands/bot.js.map +0 -1
- package/dist/commands/close.d.ts +0 -9
- package/dist/commands/close.d.ts.map +0 -1
- package/dist/commands/close.js +0 -129
- package/dist/commands/close.js.map +0 -1
- package/dist/commands/collab-sync.d.ts +0 -14
- package/dist/commands/collab-sync.d.ts.map +0 -1
- package/dist/commands/collab-sync.js +0 -264
- package/dist/commands/collab-sync.js.map +0 -1
- package/dist/commands/collab.d.ts +0 -6
- package/dist/commands/collab.d.ts.map +0 -1
- package/dist/commands/collab.js +0 -103
- package/dist/commands/collab.js.map +0 -1
- package/dist/commands/completions.d.ts +0 -8
- package/dist/commands/completions.d.ts.map +0 -1
- package/dist/commands/completions.js +0 -83
- package/dist/commands/completions.js.map +0 -1
- package/dist/commands/daily.d.ts +0 -7
- package/dist/commands/daily.d.ts.map +0 -1
- package/dist/commands/daily.js +0 -171
- package/dist/commands/daily.js.map +0 -1
- package/dist/commands/dashboard.d.ts +0 -22
- package/dist/commands/dashboard.d.ts.map +0 -1
- package/dist/commands/dashboard.js +0 -401
- package/dist/commands/dashboard.js.map +0 -1
- package/dist/commands/demo.d.ts +0 -3
- package/dist/commands/demo.d.ts.map +0 -1
- package/dist/commands/demo.js +0 -118
- package/dist/commands/demo.js.map +0 -1
- package/dist/commands/ecosystem-loader.d.ts +0 -14
- package/dist/commands/ecosystem-loader.d.ts.map +0 -1
- package/dist/commands/ecosystem-loader.js +0 -90
- package/dist/commands/ecosystem-loader.js.map +0 -1
- package/dist/commands/fleet-status.d.ts +0 -14
- package/dist/commands/fleet-status.d.ts.map +0 -1
- package/dist/commands/fleet-status.js +0 -127
- package/dist/commands/fleet-status.js.map +0 -1
- package/dist/commands/inbox.d.ts +0 -3
- package/dist/commands/inbox.d.ts.map +0 -1
- package/dist/commands/inbox.js +0 -120
- package/dist/commands/inbox.js.map +0 -1
- package/dist/commands/intent-scan.d.ts +0 -17
- package/dist/commands/intent-scan.d.ts.map +0 -1
- package/dist/commands/intent-scan.js +0 -336
- package/dist/commands/intent-scan.js.map +0 -1
- package/dist/commands/key-import.d.ts +0 -3
- package/dist/commands/key-import.d.ts.map +0 -1
- package/dist/commands/key-import.js +0 -54
- package/dist/commands/key-import.js.map +0 -1
- package/dist/commands/keygen.d.ts +0 -3
- package/dist/commands/keygen.d.ts.map +0 -1
- package/dist/commands/keygen.js +0 -53
- package/dist/commands/keygen.js.map +0 -1
- package/dist/commands/keys.d.ts +0 -3
- package/dist/commands/keys.d.ts.map +0 -1
- package/dist/commands/keys.js +0 -56
- package/dist/commands/keys.js.map +0 -1
- package/dist/commands/lock.d.ts +0 -11
- package/dist/commands/lock.d.ts.map +0 -1
- package/dist/commands/lock.js +0 -257
- package/dist/commands/lock.js.map +0 -1
- package/dist/commands/mcp-health.d.ts +0 -3
- package/dist/commands/mcp-health.d.ts.map +0 -1
- package/dist/commands/mcp-health.js +0 -305
- package/dist/commands/mcp-health.js.map +0 -1
- package/dist/commands/mcp-restart.d.ts +0 -3
- package/dist/commands/mcp-restart.d.ts.map +0 -1
- package/dist/commands/mcp-restart.js +0 -176
- package/dist/commands/mcp-restart.js.map +0 -1
- package/dist/commands/monitor.d.ts +0 -3
- package/dist/commands/monitor.d.ts.map +0 -1
- package/dist/commands/monitor.js +0 -153
- package/dist/commands/monitor.js.map +0 -1
- package/dist/commands/msg-read.d.ts +0 -3
- package/dist/commands/msg-read.d.ts.map +0 -1
- package/dist/commands/msg-read.js +0 -95
- package/dist/commands/msg-read.js.map +0 -1
- package/dist/commands/pulse.d.ts +0 -13
- package/dist/commands/pulse.d.ts.map +0 -1
- package/dist/commands/pulse.js +0 -174
- package/dist/commands/pulse.js.map +0 -1
- package/dist/commands/queen.d.ts +0 -25
- package/dist/commands/queen.d.ts.map +0 -1
- package/dist/commands/queen.js +0 -326
- package/dist/commands/queen.js.map +0 -1
- package/dist/commands/radar.d.ts +0 -3
- package/dist/commands/radar.d.ts.map +0 -1
- package/dist/commands/radar.js +0 -147
- package/dist/commands/radar.js.map +0 -1
- package/dist/commands/rescue.d.ts +0 -11
- package/dist/commands/rescue.d.ts.map +0 -1
- package/dist/commands/rescue.js +0 -147
- package/dist/commands/rescue.js.map +0 -1
- package/dist/commands/semantic.d.ts +0 -3
- package/dist/commands/semantic.d.ts.map +0 -1
- package/dist/commands/semantic.js +0 -62
- package/dist/commands/semantic.js.map +0 -1
- package/dist/commands/send.d.ts +0 -3
- package/dist/commands/send.d.ts.map +0 -1
- package/dist/commands/send.js +0 -121
- package/dist/commands/send.js.map +0 -1
- package/dist/commands/status.d.ts +0 -9
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -41
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/sync-advisor.d.ts +0 -14
- package/dist/commands/sync-advisor.d.ts.map +0 -1
- package/dist/commands/sync-advisor.js +0 -110
- package/dist/commands/sync-advisor.js.map +0 -1
- package/dist/commands/tension.d.ts +0 -12
- package/dist/commands/tension.d.ts.map +0 -1
- package/dist/commands/tension.js +0 -262
- package/dist/commands/tension.js.map +0 -1
- package/dist/commands/torrent.d.ts +0 -9
- package/dist/commands/torrent.d.ts.map +0 -1
- package/dist/commands/torrent.js +0 -470
- package/dist/commands/torrent.js.map +0 -1
- package/dist/commands/tui.d.ts +0 -8
- package/dist/commands/tui.d.ts.map +0 -1
- package/dist/commands/tui.js +0 -15
- package/dist/commands/tui.js.map +0 -1
- package/dist/commands/wake.d.ts +0 -9
- package/dist/commands/wake.d.ts.map +0 -1
- package/dist/commands/wake.js +0 -188
- package/dist/commands/wake.js.map +0 -1
- package/dist/commands/welcome.d.ts +0 -8
- package/dist/commands/welcome.d.ts.map +0 -1
- package/dist/commands/welcome.js +0 -85
- package/dist/commands/welcome.js.map +0 -1
- package/dist/commands/who-owns.d.ts +0 -3
- package/dist/commands/who-owns.d.ts.map +0 -1
- package/dist/commands/who-owns.js +0 -68
- package/dist/commands/who-owns.js.map +0 -1
- package/dist/commands/who-touched.d.ts +0 -9
- package/dist/commands/who-touched.d.ts.map +0 -1
- package/dist/commands/who-touched.js +0 -198
- package/dist/commands/who-touched.js.map +0 -1
- package/dist/lib/crdt.d.ts +0 -83
- package/dist/lib/crdt.d.ts.map +0 -1
- package/dist/lib/crdt.js +0 -160
- package/dist/lib/crdt.js.map +0 -1
- package/dist/lib/daily-bridge.d.ts +0 -41
- package/dist/lib/daily-bridge.d.ts.map +0 -1
- package/dist/lib/daily-bridge.js +0 -186
- package/dist/lib/daily-bridge.js.map +0 -1
- package/dist/lib/hub.d.ts +0 -31
- package/dist/lib/hub.d.ts.map +0 -1
- package/dist/lib/hub.js +0 -92
- package/dist/lib/hub.js.map +0 -1
- package/dist/lib/license.d.ts +0 -61
- package/dist/lib/license.d.ts.map +0 -1
- package/dist/lib/license.js +0 -171
- package/dist/lib/license.js.map +0 -1
- package/dist/lib/pulse-renderer.d.ts +0 -19
- package/dist/lib/pulse-renderer.d.ts.map +0 -1
- package/dist/lib/pulse-renderer.js +0 -108
- package/dist/lib/pulse-renderer.js.map +0 -1
- package/dist/lib/repo-scanner.d.ts +0 -32
- package/dist/lib/repo-scanner.d.ts.map +0 -1
- package/dist/lib/repo-scanner.js +0 -160
- package/dist/lib/repo-scanner.js.map +0 -1
- package/dist/lib/salvage-analyzer.d.ts +0 -29
- package/dist/lib/salvage-analyzer.d.ts.map +0 -1
- package/dist/lib/salvage-analyzer.js +0 -121
- package/dist/lib/salvage-analyzer.js.map +0 -1
- package/dist/lib/session-logger.d.ts +0 -54
- package/dist/lib/session-logger.d.ts.map +0 -1
- package/dist/lib/session-logger.js +0 -136
- package/dist/lib/session-logger.js.map +0 -1
- package/dist/lib/symbol-extractor.d.ts +0 -41
- package/dist/lib/symbol-extractor.d.ts.map +0 -1
- package/dist/lib/symbol-extractor.js +0 -78
- package/dist/lib/symbol-extractor.js.map +0 -1
- package/dist/storage/git-messages.d.ts +0 -53
- package/dist/storage/git-messages.d.ts.map +0 -1
- package/dist/storage/git-messages.js +0 -376
- package/dist/storage/git-messages.js.map +0 -1
- package/dist/storage/local-messages.d.ts +0 -37
- package/dist/storage/local-messages.d.ts.map +0 -1
- package/dist/storage/local-messages.js +0 -151
- package/dist/storage/local-messages.js.map +0 -1
- package/dist/storage/message-adapter.d.ts +0 -86
- package/dist/storage/message-adapter.d.ts.map +0 -1
- package/dist/storage/message-adapter.js +0 -28
- package/dist/storage/message-adapter.js.map +0 -1
- package/dist/storage/message-factory.d.ts +0 -36
- package/dist/storage/message-factory.d.ts.map +0 -1
- package/dist/storage/message-factory.js +0 -99
- package/dist/storage/message-factory.js.map +0 -1
- package/dist/storage/mycmail-adapter.d.ts +0 -38
- package/dist/storage/mycmail-adapter.d.ts.map +0 -1
- package/dist/storage/mycmail-adapter.js +0 -300
- package/dist/storage/mycmail-adapter.js.map +0 -1
- package/dist/tui/dashboard.d.ts +0 -35
- package/dist/tui/dashboard.d.ts.map +0 -1
- package/dist/tui/dashboard.js +0 -199
- package/dist/tui/dashboard.js.map +0 -1
- package/dist/tui/screen.d.ts +0 -14
- package/dist/tui/screen.d.ts.map +0 -1
- package/dist/tui/screen.js +0 -138
- package/dist/tui/screen.js.map +0 -1
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* salvage-analyzer.ts — Phase C3 semantic intelligence
|
|
3
|
-
*
|
|
4
|
-
* Diff abandoned branch symbols vs main and report unique symbols
|
|
5
|
-
* not present in main (salvageable code). Wired into `rescue --symbols`.
|
|
6
|
-
*/
|
|
7
|
-
import { execFileSync } from 'child_process';
|
|
8
|
-
import { mkdtempSync, writeFileSync, rmSync } from 'fs';
|
|
9
|
-
import { join } from 'path';
|
|
10
|
-
import { tmpdir } from 'os';
|
|
11
|
-
import { extractSymbols } from './symbol-extractor.js';
|
|
12
|
-
import { validateBranchName } from './security.js';
|
|
13
|
-
/**
|
|
14
|
-
* Analyse an abandoned branch for symbols not present in main.
|
|
15
|
-
* Uses ts-morph (via symbol-extractor) for reliable TypeScript parsing.
|
|
16
|
-
*/
|
|
17
|
-
export async function analyzeSalvage(branch, mainRef = 'main') {
|
|
18
|
-
// Validate inputs before passing to git to prevent injection
|
|
19
|
-
validateBranchName(branch);
|
|
20
|
-
validateBranchName(mainRef);
|
|
21
|
-
const report = {
|
|
22
|
-
branch,
|
|
23
|
-
analysedFiles: 0,
|
|
24
|
-
salvageable: [],
|
|
25
|
-
alreadyInMain: 0,
|
|
26
|
-
};
|
|
27
|
-
// List TypeScript/JavaScript files in the abandoned branch
|
|
28
|
-
let branchFiles;
|
|
29
|
-
try {
|
|
30
|
-
const raw = execFileSync('git', ['ls-tree', '-r', '--name-only', branch], {
|
|
31
|
-
encoding: 'utf-8',
|
|
32
|
-
});
|
|
33
|
-
branchFiles = raw
|
|
34
|
-
.trim()
|
|
35
|
-
.split('\n')
|
|
36
|
-
.filter(f => /\.(ts|js|tsx|jsx)$/.test(f) && !f.includes('node_modules'));
|
|
37
|
-
}
|
|
38
|
-
catch {
|
|
39
|
-
return report;
|
|
40
|
-
}
|
|
41
|
-
const tmpDir = mkdtempSync(join(tmpdir(), 'ssan-salvage-'));
|
|
42
|
-
try {
|
|
43
|
-
for (const file of branchFiles) {
|
|
44
|
-
// Get file content from the abandoned branch
|
|
45
|
-
let branchContent;
|
|
46
|
-
try {
|
|
47
|
-
branchContent = execFileSync('git', ['show', `${branch}:${file}`], {
|
|
48
|
-
encoding: 'utf-8',
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
catch {
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
|
-
// Write to temp file for ts-morph
|
|
55
|
-
const tmpFile = join(tmpDir, file.replace(/\//g, '_'));
|
|
56
|
-
writeFileSync(tmpFile, branchContent, 'utf-8');
|
|
57
|
-
const branchSymbols = extractSymbols(tmpFile);
|
|
58
|
-
report.analysedFiles++;
|
|
59
|
-
// Get main version (may not exist)
|
|
60
|
-
let mainContent = null;
|
|
61
|
-
try {
|
|
62
|
-
mainContent = execFileSync('git', ['show', `${mainRef}:${file}`], {
|
|
63
|
-
encoding: 'utf-8',
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
// File not in main — all its symbols are salvageable
|
|
68
|
-
}
|
|
69
|
-
if (!mainContent) {
|
|
70
|
-
// Entire file is unique to the branch
|
|
71
|
-
for (const sym of branchSymbols.symbols) {
|
|
72
|
-
report.salvageable.push({ ...sym, file, branch });
|
|
73
|
-
}
|
|
74
|
-
continue;
|
|
75
|
-
}
|
|
76
|
-
// Compare symbols with main version
|
|
77
|
-
const mainTmpFile = join(tmpDir, `main_${file.replace(/\//g, '_')}`);
|
|
78
|
-
writeFileSync(mainTmpFile, mainContent, 'utf-8');
|
|
79
|
-
const mainSymbols = extractSymbols(mainTmpFile);
|
|
80
|
-
const mainNames = new Set(mainSymbols.symbols.map(s => s.name));
|
|
81
|
-
for (const sym of branchSymbols.symbols) {
|
|
82
|
-
if (!mainNames.has(sym.name)) {
|
|
83
|
-
report.salvageable.push({ ...sym, file, branch });
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
report.alreadyInMain++;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
finally {
|
|
92
|
-
try {
|
|
93
|
-
rmSync(tmpDir, { recursive: true, force: true });
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
// best-effort cleanup
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return report;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Format a salvage report for CLI display.
|
|
103
|
-
*/
|
|
104
|
-
export function formatSalvageReport(report) {
|
|
105
|
-
const lines = [
|
|
106
|
-
`🔍 Salvage analysis: ${report.branch}`,
|
|
107
|
-
` Files analysed: ${report.analysedFiles}`,
|
|
108
|
-
` Symbols already in main: ${report.alreadyInMain}`,
|
|
109
|
-
` Salvageable symbols: ${report.salvageable.length}`,
|
|
110
|
-
];
|
|
111
|
-
if (report.salvageable.length === 0) {
|
|
112
|
-
lines.push('\n ✅ No unique symbols — branch is fully superseded by main.');
|
|
113
|
-
return lines.join('\n');
|
|
114
|
-
}
|
|
115
|
-
lines.push('\n Salvageable symbols (unique to this branch):');
|
|
116
|
-
for (const sym of report.salvageable) {
|
|
117
|
-
lines.push(` • [${sym.kind.padEnd(9)}] ${sym.name} (${sym.file}:${sym.line})`);
|
|
118
|
-
}
|
|
119
|
-
return lines.join('\n');
|
|
120
|
-
}
|
|
121
|
-
//# sourceMappingURL=salvage-analyzer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"salvage-analyzer.js","sourceRoot":"","sources":["../../src/lib/salvage-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session Logger — captures raw spidersan ask/advise/explain sessions for training.
|
|
3
|
-
*
|
|
4
|
-
* Writes to ~/.spidersan/sessions/YYYY-MM-DD.jsonl (one JSON object per line).
|
|
5
|
-
* Each entry is a raw session: context + result + outcome.
|
|
6
|
-
*
|
|
7
|
-
* Outcome is what makes this a gold pair. Without it we just have questions.
|
|
8
|
-
* Outcome is captured inline (TTY prompt after response) or left null.
|
|
9
|
-
*
|
|
10
|
-
* Anonymization + gold pair transformation happens at `watsan index-pair` time,
|
|
11
|
-
* not here. This logger stores raw data locally — nothing leaves the machine.
|
|
12
|
-
*
|
|
13
|
-
* Design:
|
|
14
|
-
* - Never throws — session logging must not crash spidersan ask
|
|
15
|
-
* - Append-only JSONL — safe for concurrent writes, easy to process
|
|
16
|
-
* - File per day — easy to hand to watsan for a given date range
|
|
17
|
-
*/
|
|
18
|
-
import type { Interface as ReadlineInterface } from 'readline';
|
|
19
|
-
import type { SpiderContext } from './ai/types.js';
|
|
20
|
-
import type { ReasoningResult, ReasoningMode } from './ai/index.js';
|
|
21
|
-
export type SessionOutcome = 'followed' | 'ignored' | `modified:${string}` | null;
|
|
22
|
-
export interface RawSession {
|
|
23
|
-
session_id: string;
|
|
24
|
-
logged_at: string;
|
|
25
|
-
mode: ReasoningMode;
|
|
26
|
-
question?: string;
|
|
27
|
-
branch?: string;
|
|
28
|
-
context: SpiderContext;
|
|
29
|
-
result: ReasoningResult;
|
|
30
|
-
outcome: SessionOutcome;
|
|
31
|
-
outcome_captured_at: string | null;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Append a session entry to today's log file.
|
|
35
|
-
* Returns the session_id so the caller can later capture the outcome.
|
|
36
|
-
* Never throws.
|
|
37
|
-
*/
|
|
38
|
-
export declare function logSession(mode: ReasoningMode, context: SpiderContext, result: ReasoningResult, opts?: {
|
|
39
|
-
question?: string;
|
|
40
|
-
branch?: string;
|
|
41
|
-
}): string;
|
|
42
|
-
/**
|
|
43
|
-
* Update the outcome for a previously logged session.
|
|
44
|
-
* Checks today's and yesterday's log files.
|
|
45
|
-
* Never throws.
|
|
46
|
-
*/
|
|
47
|
-
export declare function captureOutcome(session_id: string, outcome: SessionOutcome): void;
|
|
48
|
-
/**
|
|
49
|
-
* Show a brief outcome prompt after a response (TTY only).
|
|
50
|
-
* Non-blocking: skips if stdin is not a TTY or SPIDERSAN_NO_OUTCOME_PROMPT=1.
|
|
51
|
-
* Returns the captured outcome (or null if skipped).
|
|
52
|
-
*/
|
|
53
|
-
export declare function promptOutcome(session_id: string, rl: ReadlineInterface): Promise<SessionOutcome>;
|
|
54
|
-
//# sourceMappingURL=session-logger.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-logger.d.ts","sourceRoot":"","sources":["../../src/lib/session-logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,OAAO,KAAK,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAIpE,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,SAAS,GACT,YAAY,MAAM,EAAE,GACpB,IAAI,CAAC;AAET,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,cAAc,CAAC;IACxB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAqBD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,eAAe,EACvB,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C,MAAM,CAoBR;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI,CAuBhF;AAID;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,iBAAiB,GACpB,OAAO,CAAC,cAAc,CAAC,CA8BzB"}
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Session Logger — captures raw spidersan ask/advise/explain sessions for training.
|
|
3
|
-
*
|
|
4
|
-
* Writes to ~/.spidersan/sessions/YYYY-MM-DD.jsonl (one JSON object per line).
|
|
5
|
-
* Each entry is a raw session: context + result + outcome.
|
|
6
|
-
*
|
|
7
|
-
* Outcome is what makes this a gold pair. Without it we just have questions.
|
|
8
|
-
* Outcome is captured inline (TTY prompt after response) or left null.
|
|
9
|
-
*
|
|
10
|
-
* Anonymization + gold pair transformation happens at `watsan index-pair` time,
|
|
11
|
-
* not here. This logger stores raw data locally — nothing leaves the machine.
|
|
12
|
-
*
|
|
13
|
-
* Design:
|
|
14
|
-
* - Never throws — session logging must not crash spidersan ask
|
|
15
|
-
* - Append-only JSONL — safe for concurrent writes, easy to process
|
|
16
|
-
* - File per day — easy to hand to watsan for a given date range
|
|
17
|
-
*/
|
|
18
|
-
import { appendFileSync, readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
19
|
-
import { join } from 'path';
|
|
20
|
-
import { homedir } from 'os';
|
|
21
|
-
import { randomUUID } from 'crypto';
|
|
22
|
-
// ─── Paths ────────────────────────────────────────────────────
|
|
23
|
-
function sessionsDir() {
|
|
24
|
-
return join(homedir(), '.spidersan', 'sessions');
|
|
25
|
-
}
|
|
26
|
-
function dateFile(offsetDays = 0) {
|
|
27
|
-
const d = new Date(Date.now() - offsetDays * 86_400_000);
|
|
28
|
-
const ymd = `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;
|
|
29
|
-
return join(sessionsDir(), `${ymd}.jsonl`);
|
|
30
|
-
}
|
|
31
|
-
function ensureDir() {
|
|
32
|
-
const dir = sessionsDir();
|
|
33
|
-
if (!existsSync(dir))
|
|
34
|
-
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
35
|
-
}
|
|
36
|
-
// ─── Write ────────────────────────────────────────────────────
|
|
37
|
-
/**
|
|
38
|
-
* Append a session entry to today's log file.
|
|
39
|
-
* Returns the session_id so the caller can later capture the outcome.
|
|
40
|
-
* Never throws.
|
|
41
|
-
*/
|
|
42
|
-
export function logSession(mode, context, result, opts) {
|
|
43
|
-
const session_id = randomUUID();
|
|
44
|
-
try {
|
|
45
|
-
ensureDir();
|
|
46
|
-
const entry = {
|
|
47
|
-
session_id,
|
|
48
|
-
logged_at: new Date().toISOString(),
|
|
49
|
-
mode,
|
|
50
|
-
question: opts?.question,
|
|
51
|
-
branch: opts?.branch,
|
|
52
|
-
context,
|
|
53
|
-
result,
|
|
54
|
-
outcome: null,
|
|
55
|
-
outcome_captured_at: null,
|
|
56
|
-
};
|
|
57
|
-
appendFileSync(dateFile(), JSON.stringify(entry) + '\n', { encoding: 'utf-8' });
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
// Silent — logging must never crash the main command
|
|
61
|
-
}
|
|
62
|
-
return session_id;
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Update the outcome for a previously logged session.
|
|
66
|
-
* Checks today's and yesterday's log files.
|
|
67
|
-
* Never throws.
|
|
68
|
-
*/
|
|
69
|
-
export function captureOutcome(session_id, outcome) {
|
|
70
|
-
try {
|
|
71
|
-
const now = new Date().toISOString();
|
|
72
|
-
// Check today and yesterday (covers sessions that started near midnight)
|
|
73
|
-
for (const filePath of [dateFile(0), dateFile(1)]) {
|
|
74
|
-
if (!existsSync(filePath))
|
|
75
|
-
continue;
|
|
76
|
-
const lines = readFileSync(filePath, 'utf-8').split('\n').filter(Boolean);
|
|
77
|
-
const idx = lines.findIndex(line => {
|
|
78
|
-
try {
|
|
79
|
-
return JSON.parse(line).session_id === session_id;
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
return false;
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
if (idx === -1)
|
|
86
|
-
continue;
|
|
87
|
-
const entry = JSON.parse(lines[idx]);
|
|
88
|
-
entry.outcome = outcome;
|
|
89
|
-
entry.outcome_captured_at = now;
|
|
90
|
-
lines[idx] = JSON.stringify(entry);
|
|
91
|
-
writeFileSync(filePath, lines.join('\n') + '\n', { encoding: 'utf-8' });
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
catch {
|
|
96
|
-
// Silent
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
// ─── Inline outcome prompt ────────────────────────────────────
|
|
100
|
-
/**
|
|
101
|
-
* Show a brief outcome prompt after a response (TTY only).
|
|
102
|
-
* Non-blocking: skips if stdin is not a TTY or SPIDERSAN_NO_OUTCOME_PROMPT=1.
|
|
103
|
-
* Returns the captured outcome (or null if skipped).
|
|
104
|
-
*/
|
|
105
|
-
export async function promptOutcome(session_id, rl) {
|
|
106
|
-
if (!process.stdin.isTTY || process.env['SPIDERSAN_NO_OUTCOME_PROMPT'] === '1') {
|
|
107
|
-
return null;
|
|
108
|
-
}
|
|
109
|
-
return new Promise((resolve) => {
|
|
110
|
-
process.stdout.write('\x1b[2m Follow this advice? [y/n/m=modified, Enter to skip] \x1b[0m');
|
|
111
|
-
rl.once('line', (answer) => {
|
|
112
|
-
const a = answer.trim().toLowerCase();
|
|
113
|
-
if (a === 'y' || a === 'yes') {
|
|
114
|
-
captureOutcome(session_id, 'followed');
|
|
115
|
-
resolve('followed');
|
|
116
|
-
}
|
|
117
|
-
else if (a === 'n' || a === 'no') {
|
|
118
|
-
captureOutcome(session_id, 'ignored');
|
|
119
|
-
resolve('ignored');
|
|
120
|
-
}
|
|
121
|
-
else if (a.startsWith('m')) {
|
|
122
|
-
process.stdout.write('\x1b[2m What changed? (one line) \x1b[0m');
|
|
123
|
-
rl.once('line', (desc) => {
|
|
124
|
-
const outcome = `modified:${desc.trim().slice(0, 200)}`;
|
|
125
|
-
captureOutcome(session_id, outcome);
|
|
126
|
-
resolve(outcome);
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
// Enter / anything else → skip
|
|
131
|
-
resolve(null);
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
}
|
|
136
|
-
//# sourceMappingURL=session-logger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-logger.js","sourceRoot":"","sources":["../../src/lib/session-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* symbol-extractor.ts — Phase C semantic intelligence
|
|
3
|
-
*
|
|
4
|
-
* Extract exported symbols (functions, classes, types, consts) from a TS file
|
|
5
|
-
* using ts-morph. Used by `spidersan conflicts --semantic`.
|
|
6
|
-
*/
|
|
7
|
-
export interface ExtractedSymbol {
|
|
8
|
-
name: string;
|
|
9
|
-
kind: 'function' | 'class' | 'type' | 'interface' | 'const' | 'enum' | 'other';
|
|
10
|
-
line: number;
|
|
11
|
-
}
|
|
12
|
-
export interface FileSymbols {
|
|
13
|
-
file: string;
|
|
14
|
-
symbols: ExtractedSymbol[];
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Extract all exported symbols from a TypeScript file.
|
|
18
|
-
* Returns an empty symbols array if the file doesn't exist or isn't parseable.
|
|
19
|
-
*/
|
|
20
|
-
export declare function extractSymbols(filePath: string): FileSymbols;
|
|
21
|
-
/**
|
|
22
|
-
* Find symbol-level overlaps between two sets of file symbols.
|
|
23
|
-
* Returns symbols that share the same name across different branches.
|
|
24
|
-
*/
|
|
25
|
-
export interface SymbolOverlap {
|
|
26
|
-
name: string;
|
|
27
|
-
kind: ExtractedSymbol['kind'];
|
|
28
|
-
branches: Array<{
|
|
29
|
-
branch: string;
|
|
30
|
-
file: string;
|
|
31
|
-
line: number;
|
|
32
|
-
}>;
|
|
33
|
-
}
|
|
34
|
-
export declare function findSymbolOverlaps(left: {
|
|
35
|
-
branch: string;
|
|
36
|
-
symbols: FileSymbols;
|
|
37
|
-
}, right: {
|
|
38
|
-
branch: string;
|
|
39
|
-
symbols: FileSymbols;
|
|
40
|
-
}): SymbolOverlap[];
|
|
41
|
-
//# sourceMappingURL=symbol-extractor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-extractor.d.ts","sourceRoot":"","sources":["../../src/lib/symbol-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/E,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CA0B5D;AAyBD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,EAC9C,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,GAC9C,aAAa,EAAE,CAmBjB"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* symbol-extractor.ts — Phase C semantic intelligence
|
|
3
|
-
*
|
|
4
|
-
* Extract exported symbols (functions, classes, types, consts) from a TS file
|
|
5
|
-
* using ts-morph. Used by `spidersan conflicts --semantic`.
|
|
6
|
-
*/
|
|
7
|
-
import { Project, SyntaxKind } from 'ts-morph';
|
|
8
|
-
import { existsSync } from 'fs';
|
|
9
|
-
/**
|
|
10
|
-
* Extract all exported symbols from a TypeScript file.
|
|
11
|
-
* Returns an empty symbols array if the file doesn't exist or isn't parseable.
|
|
12
|
-
*/
|
|
13
|
-
export function extractSymbols(filePath) {
|
|
14
|
-
if (!existsSync(filePath)) {
|
|
15
|
-
return { file: filePath, symbols: [] };
|
|
16
|
-
}
|
|
17
|
-
try {
|
|
18
|
-
const project = new Project({
|
|
19
|
-
compilerOptions: { allowJs: true },
|
|
20
|
-
skipAddingFilesFromTsConfig: true,
|
|
21
|
-
});
|
|
22
|
-
const sourceFile = project.addSourceFileAtPath(filePath);
|
|
23
|
-
const symbols = [];
|
|
24
|
-
for (const decl of sourceFile.getExportedDeclarations()) {
|
|
25
|
-
const [name, nodes] = decl;
|
|
26
|
-
for (const node of nodes) {
|
|
27
|
-
const kind = kindOf(node.getKind());
|
|
28
|
-
const line = node.getStartLineNumber();
|
|
29
|
-
symbols.push({ name, kind, line });
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return { file: filePath, symbols };
|
|
33
|
-
}
|
|
34
|
-
catch {
|
|
35
|
-
return { file: filePath, symbols: [] };
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
function kindOf(syntaxKind) {
|
|
39
|
-
switch (syntaxKind) {
|
|
40
|
-
case SyntaxKind.FunctionDeclaration:
|
|
41
|
-
case SyntaxKind.ArrowFunction:
|
|
42
|
-
case SyntaxKind.FunctionExpression:
|
|
43
|
-
case SyntaxKind.MethodDeclaration:
|
|
44
|
-
return 'function';
|
|
45
|
-
case SyntaxKind.ClassDeclaration:
|
|
46
|
-
return 'class';
|
|
47
|
-
case SyntaxKind.TypeAliasDeclaration:
|
|
48
|
-
return 'type';
|
|
49
|
-
case SyntaxKind.InterfaceDeclaration:
|
|
50
|
-
return 'interface';
|
|
51
|
-
case SyntaxKind.EnumDeclaration:
|
|
52
|
-
return 'enum';
|
|
53
|
-
case SyntaxKind.VariableDeclaration:
|
|
54
|
-
case SyntaxKind.VariableStatement:
|
|
55
|
-
return 'const';
|
|
56
|
-
default:
|
|
57
|
-
return 'other';
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
export function findSymbolOverlaps(left, right) {
|
|
61
|
-
const leftMap = new Map(left.symbols.symbols.map(s => [s.name, s]));
|
|
62
|
-
const overlaps = [];
|
|
63
|
-
for (const rs of right.symbols.symbols) {
|
|
64
|
-
const ls = leftMap.get(rs.name);
|
|
65
|
-
if (ls) {
|
|
66
|
-
overlaps.push({
|
|
67
|
-
name: rs.name,
|
|
68
|
-
kind: rs.kind,
|
|
69
|
-
branches: [
|
|
70
|
-
{ branch: left.branch, file: left.symbols.file, line: ls.line },
|
|
71
|
-
{ branch: right.branch, file: right.symbols.file, line: rs.line },
|
|
72
|
-
],
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return overlaps;
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=symbol-extractor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"symbol-extractor.js","sourceRoot":"","sources":["../../src/lib/symbol-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Git Coordination Branch Message Storage Adapter (Tier 2)
|
|
3
|
-
*
|
|
4
|
-
* Stores messages in an orphan branch: spidersan/messages
|
|
5
|
-
* Structure:
|
|
6
|
-
* inbox/<agent-id>/<timestamp>_<from>_<subject-slug>.json
|
|
7
|
-
* outbox/<agent-id>/<timestamp>_<to>_<subject-slug>.json
|
|
8
|
-
*
|
|
9
|
-
* Near-real-time coordination on pull. Works across machines with git remote.
|
|
10
|
-
*/
|
|
11
|
-
import type { MessageStorageAdapter, Message, SendMessageInput, InboxOptions, TierStatus } from './message-adapter.js';
|
|
12
|
-
export declare class GitMessagesAdapter implements MessageStorageAdapter {
|
|
13
|
-
private basePath;
|
|
14
|
-
private branchInitialized;
|
|
15
|
-
constructor(basePath?: string);
|
|
16
|
-
getTier(): number;
|
|
17
|
-
getTierName(): string;
|
|
18
|
-
isAvailable(): Promise<boolean>;
|
|
19
|
-
getStatus(): Promise<TierStatus>;
|
|
20
|
-
/**
|
|
21
|
-
* Check if the messages branch exists
|
|
22
|
-
*/
|
|
23
|
-
private branchExists;
|
|
24
|
-
/**
|
|
25
|
-
* Initialize the orphan branch if it doesn't exist
|
|
26
|
-
*/
|
|
27
|
-
private ensureBranch;
|
|
28
|
-
/**
|
|
29
|
-
* Generate filename for a message
|
|
30
|
-
*/
|
|
31
|
-
private generateFilename;
|
|
32
|
-
/**
|
|
33
|
-
* Read a file from the messages branch without checkout
|
|
34
|
-
*/
|
|
35
|
-
private readFromBranch;
|
|
36
|
-
/**
|
|
37
|
-
* List files in a directory on the messages branch
|
|
38
|
-
*/
|
|
39
|
-
private listFromBranch;
|
|
40
|
-
/**
|
|
41
|
-
* Write a file to the messages branch
|
|
42
|
-
*/
|
|
43
|
-
private writeToBranch;
|
|
44
|
-
/**
|
|
45
|
-
* Update a file on the messages branch (for marking read)
|
|
46
|
-
*/
|
|
47
|
-
private updateOnBranch;
|
|
48
|
-
send(input: SendMessageInput): Promise<Message>;
|
|
49
|
-
inbox(agentId: string, options?: InboxOptions): Promise<Message[]>;
|
|
50
|
-
read(messageId: string): Promise<Message | null>;
|
|
51
|
-
markRead(messageId: string): Promise<boolean>;
|
|
52
|
-
}
|
|
53
|
-
//# sourceMappingURL=git-messages.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"git-messages.d.ts","sourceRoot":"","sources":["../../src/storage/git-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EACR,qBAAqB,EACrB,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACb,MAAM,sBAAsB,CAAC;AAM9B,qBAAa,kBAAmB,YAAW,qBAAqB;IAC5D,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,iBAAiB,CAAwB;gBAErC,QAAQ,GAAE,MAAsB;IAI5C,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM;IAIf,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAa/B,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAYtC;;OAEG;IACH,OAAO,CAAC,YAAY;IAYpB;;OAEG;YACW,YAAY;IAuE1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;YACW,aAAa;IAsF3B;;OAEG;YACW,cAAc;IAOtB,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoC/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA8CtE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAwChD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAWtD"}
|