@claude-flow/cli 3.32.1 → 3.32.3
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/.claude/helpers/.helpers-version +1 -1
- package/.claude/helpers/helpers.manifest.json +3 -3
- package/.claude/helpers/statusline.cjs +24 -17
- package/.claude/helpers/statusline.js +19 -31
- package/catalog-manifest.json +2 -2
- package/package.json +1 -1
- package/plugins/ruflo-metaharness/.claude-plugin/plugin.json +1 -1
- package/plugins/ruflo-metaharness/scripts/smoke.sh +8 -5
- package/plugins/ruflo-metaharness/skills/harness-similarity/SKILL.md +1 -1
- package/dist/src/agenticow/speculative-exploration.d.ts +0 -148
- package/dist/src/agenticow/speculative-exploration.js +0 -218
- package/dist/src/appliance/gguf-engine.d.ts +0 -91
- package/dist/src/appliance/gguf-engine.js +0 -425
- package/dist/src/appliance/ruvllm-bridge.d.ts +0 -102
- package/dist/src/appliance/ruvllm-bridge.js +0 -292
- package/dist/src/appliance/rvfa-builder.d.ts +0 -44
- package/dist/src/appliance/rvfa-builder.js +0 -329
- package/dist/src/appliance/rvfa-distribution.d.ts +0 -97
- package/dist/src/appliance/rvfa-distribution.js +0 -370
- package/dist/src/appliance/rvfa-format.d.ts +0 -111
- package/dist/src/appliance/rvfa-format.js +0 -393
- package/dist/src/appliance/rvfa-runner.d.ts +0 -69
- package/dist/src/appliance/rvfa-runner.js +0 -237
- package/dist/src/appliance/rvfa-signing.d.ts +0 -123
- package/dist/src/appliance/rvfa-signing.js +0 -347
- package/dist/src/autopilot-state.d.ts +0 -77
- package/dist/src/autopilot-state.js +0 -271
- package/dist/src/benchmarks/gaia-agent-planning.smoke.d.ts +0 -18
- package/dist/src/benchmarks/gaia-agent-planning.smoke.js +0 -253
- package/dist/src/benchmarks/gaia-agent.d.ts +0 -198
- package/dist/src/benchmarks/gaia-agent.js +0 -651
- package/dist/src/benchmarks/gaia-causal-memory.d.ts +0 -133
- package/dist/src/benchmarks/gaia-causal-memory.js +0 -281
- package/dist/src/benchmarks/gaia-causal-memory.smoke.d.ts +0 -22
- package/dist/src/benchmarks/gaia-causal-memory.smoke.js +0 -300
- package/dist/src/benchmarks/gaia-convergence.d.ts +0 -138
- package/dist/src/benchmarks/gaia-convergence.js +0 -260
- package/dist/src/benchmarks/gaia-convergence.smoke.d.ts +0 -19
- package/dist/src/benchmarks/gaia-convergence.smoke.js +0 -246
- package/dist/src/benchmarks/gaia-critic.d.ts +0 -123
- package/dist/src/benchmarks/gaia-critic.js +0 -312
- package/dist/src/benchmarks/gaia-critic.smoke.d.ts +0 -21
- package/dist/src/benchmarks/gaia-critic.smoke.js +0 -327
- package/dist/src/benchmarks/gaia-decomposer.d.ts +0 -125
- package/dist/src/benchmarks/gaia-decomposer.js +0 -350
- package/dist/src/benchmarks/gaia-decomposer.smoke.d.ts +0 -21
- package/dist/src/benchmarks/gaia-decomposer.smoke.js +0 -228
- package/dist/src/benchmarks/gaia-e2e-smoke.d.ts +0 -27
- package/dist/src/benchmarks/gaia-e2e-smoke.js +0 -136
- package/dist/src/benchmarks/gaia-extract.smoke.d.ts +0 -45
- package/dist/src/benchmarks/gaia-extract.smoke.js +0 -242
- package/dist/src/benchmarks/gaia-hardness/features.d.ts +0 -46
- package/dist/src/benchmarks/gaia-hardness/features.js +0 -170
- package/dist/src/benchmarks/gaia-hardness/predictor.d.ts +0 -105
- package/dist/src/benchmarks/gaia-hardness/predictor.js +0 -260
- package/dist/src/benchmarks/gaia-hardness/predictor.smoke.d.ts +0 -20
- package/dist/src/benchmarks/gaia-hardness/predictor.smoke.js +0 -235
- package/dist/src/benchmarks/gaia-hardness/train-data-loader.d.ts +0 -51
- package/dist/src/benchmarks/gaia-hardness/train-data-loader.js +0 -179
- package/dist/src/benchmarks/gaia-judge.d.ts +0 -88
- package/dist/src/benchmarks/gaia-judge.js +0 -437
- package/dist/src/benchmarks/gaia-loader.d.ts +0 -87
- package/dist/src/benchmarks/gaia-loader.js +0 -326
- package/dist/src/benchmarks/gaia-tools/file_read.d.ts +0 -35
- package/dist/src/benchmarks/gaia-tools/file_read.js +0 -403
- package/dist/src/benchmarks/gaia-tools/grounded_query.d.ts +0 -126
- package/dist/src/benchmarks/gaia-tools/grounded_query.js +0 -225
- package/dist/src/benchmarks/gaia-tools/index.d.ts +0 -32
- package/dist/src/benchmarks/gaia-tools/index.js +0 -36
- package/dist/src/benchmarks/gaia-tools/types.d.ts +0 -62
- package/dist/src/benchmarks/gaia-tools/types.js +0 -12
- package/dist/src/benchmarks/gaia-tools/web_search.d.ts +0 -30
- package/dist/src/benchmarks/gaia-tools/web_search.js +0 -210
- package/dist/src/benchmarks/gaia-voting.d.ts +0 -88
- package/dist/src/benchmarks/gaia-voting.js +0 -297
- package/dist/src/benchmarks/gaia-voting.smoke.d.ts +0 -20
- package/dist/src/benchmarks/gaia-voting.smoke.js +0 -332
- package/dist/src/benchmarks/pretrain/index.d.ts +0 -58
- package/dist/src/benchmarks/pretrain/index.js +0 -404
- package/dist/src/business-pods/bbs-budget-tracker.d.ts +0 -139
- package/dist/src/business-pods/bbs-budget-tracker.js +0 -358
- package/dist/src/business-pods/domain-affinity-policy.d.ts +0 -47
- package/dist/src/business-pods/domain-affinity-policy.js +0 -65
- package/dist/src/business-pods/pod-schema.d.ts +0 -96
- package/dist/src/business-pods/pod-schema.js +0 -225
- package/dist/src/commands/advisor.d.ts +0 -15
- package/dist/src/commands/advisor.js +0 -94
- package/dist/src/commands/agent-wasm.d.ts +0 -14
- package/dist/src/commands/agent-wasm.js +0 -333
- package/dist/src/commands/agent.d.ts +0 -8
- package/dist/src/commands/agent.js +0 -927
- package/dist/src/commands/analyze.d.ts +0 -19
- package/dist/src/commands/analyze.js +0 -2047
- package/dist/src/commands/announcements.d.ts +0 -17
- package/dist/src/commands/announcements.js +0 -0
- package/dist/src/commands/appliance-advanced.d.ts +0 -9
- package/dist/src/commands/appliance-advanced.js +0 -215
- package/dist/src/commands/appliance.d.ts +0 -8
- package/dist/src/commands/appliance.js +0 -404
- package/dist/src/commands/autopilot.d.ts +0 -15
- package/dist/src/commands/autopilot.js +0 -407
- package/dist/src/commands/benchmark.d.ts +0 -10
- package/dist/src/commands/benchmark.js +0 -460
- package/dist/src/commands/claims.d.ts +0 -10
- package/dist/src/commands/claims.js +0 -620
- package/dist/src/commands/cleanup.d.ts +0 -13
- package/dist/src/commands/cleanup.js +0 -250
- package/dist/src/commands/completions.d.ts +0 -10
- package/dist/src/commands/completions.js +0 -539
- package/dist/src/commands/config.d.ts +0 -8
- package/dist/src/commands/config.js +0 -428
- package/dist/src/commands/daemon.d.ts +0 -59
- package/dist/src/commands/daemon.js +0 -1733
- package/dist/src/commands/deployment.d.ts +0 -10
- package/dist/src/commands/deployment.js +0 -672
- package/dist/src/commands/doctor.d.ts +0 -10
- package/dist/src/commands/doctor.js +0 -1695
- package/dist/src/commands/eject.d.ts +0 -33
- package/dist/src/commands/eject.js +0 -195
- package/dist/src/commands/embeddings.d.ts +0 -18
- package/dist/src/commands/embeddings.js +0 -1623
- package/dist/src/commands/funnel.d.ts +0 -18
- package/dist/src/commands/funnel.js +0 -302
- package/dist/src/commands/gaia-bench.d.ts +0 -40
- package/dist/src/commands/gaia-bench.js +0 -597
- package/dist/src/commands/guidance.d.ts +0 -8
- package/dist/src/commands/guidance.js +0 -556
- package/dist/src/commands/hive-mind.d.ts +0 -11
- package/dist/src/commands/hive-mind.js +0 -1319
- package/dist/src/commands/hooks.d.ts +0 -8
- package/dist/src/commands/hooks.js +0 -4595
- package/dist/src/commands/index.d.ts +0 -118
- package/dist/src/commands/index.js +0 -364
- package/dist/src/commands/init.d.ts +0 -13
- package/dist/src/commands/init.js +0 -1297
- package/dist/src/commands/issues.d.ts +0 -21
- package/dist/src/commands/issues.js +0 -567
- package/dist/src/commands/mcp.d.ts +0 -11
- package/dist/src/commands/mcp.js +0 -732
- package/dist/src/commands/memory-backup.d.ts +0 -11
- package/dist/src/commands/memory-backup.js +0 -46
- package/dist/src/commands/memory-distill.d.ts +0 -27
- package/dist/src/commands/memory-distill.js +0 -374
- package/dist/src/commands/memory.d.ts +0 -8
- package/dist/src/commands/memory.js +0 -1596
- package/dist/src/commands/metaharness.d.ts +0 -39
- package/dist/src/commands/metaharness.js +0 -215
- package/dist/src/commands/migrate.d.ts +0 -8
- package/dist/src/commands/migrate.js +0 -742
- package/dist/src/commands/neural.d.ts +0 -10
- package/dist/src/commands/neural.js +0 -4331
- package/dist/src/commands/performance.d.ts +0 -10
- package/dist/src/commands/performance.js +0 -583
- package/dist/src/commands/plugins.d.ts +0 -11
- package/dist/src/commands/plugins.js +0 -826
- package/dist/src/commands/process.d.ts +0 -10
- package/dist/src/commands/process.js +0 -694
- package/dist/src/commands/progress.d.ts +0 -11
- package/dist/src/commands/progress.js +0 -259
- package/dist/src/commands/providers.d.ts +0 -10
- package/dist/src/commands/providers.js +0 -502
- package/dist/src/commands/proxy.d.ts +0 -21
- package/dist/src/commands/proxy.js +0 -310
- package/dist/src/commands/route.d.ts +0 -16
- package/dist/src/commands/route.js +0 -822
- package/dist/src/commands/ruvector/backup.d.ts +0 -11
- package/dist/src/commands/ruvector/backup.js +0 -747
- package/dist/src/commands/ruvector/benchmark.d.ts +0 -11
- package/dist/src/commands/ruvector/benchmark.js +0 -490
- package/dist/src/commands/ruvector/import.d.ts +0 -18
- package/dist/src/commands/ruvector/import.js +0 -373
- package/dist/src/commands/ruvector/index.d.ts +0 -29
- package/dist/src/commands/ruvector/index.js +0 -129
- package/dist/src/commands/ruvector/init.d.ts +0 -11
- package/dist/src/commands/ruvector/init.js +0 -467
- package/dist/src/commands/ruvector/migrate.d.ts +0 -11
- package/dist/src/commands/ruvector/migrate.js +0 -498
- package/dist/src/commands/ruvector/optimize.d.ts +0 -11
- package/dist/src/commands/ruvector/optimize.js +0 -505
- package/dist/src/commands/ruvector/pg-utils.d.ts +0 -14
- package/dist/src/commands/ruvector/pg-utils.js +0 -41
- package/dist/src/commands/ruvector/setup.d.ts +0 -18
- package/dist/src/commands/ruvector/setup.js +0 -765
- package/dist/src/commands/ruvector/status.d.ts +0 -11
- package/dist/src/commands/ruvector/status.js +0 -479
- package/dist/src/commands/security.d.ts +0 -10
- package/dist/src/commands/security.js +0 -1007
- package/dist/src/commands/session.d.ts +0 -8
- package/dist/src/commands/session.js +0 -757
- package/dist/src/commands/settings.d.ts +0 -19
- package/dist/src/commands/settings.js +0 -180
- package/dist/src/commands/spinner.d.ts +0 -16
- package/dist/src/commands/spinner.js +0 -329
- package/dist/src/commands/start.d.ts +0 -8
- package/dist/src/commands/start.js +0 -418
- package/dist/src/commands/status.d.ts +0 -8
- package/dist/src/commands/status.js +0 -608
- package/dist/src/commands/swarm.d.ts +0 -8
- package/dist/src/commands/swarm.js +0 -891
- package/dist/src/commands/task.d.ts +0 -8
- package/dist/src/commands/task.js +0 -675
- package/dist/src/commands/transfer-store.d.ts +0 -13
- package/dist/src/commands/transfer-store.js +0 -428
- package/dist/src/commands/update.d.ts +0 -8
- package/dist/src/commands/update.js +0 -276
- package/dist/src/commands/verify.d.ts +0 -19
- package/dist/src/commands/verify.js +0 -261
- package/dist/src/commands/version.d.ts +0 -42
- package/dist/src/commands/version.js +0 -106
- package/dist/src/commands/workflow.d.ts +0 -8
- package/dist/src/commands/workflow.js +0 -617
- package/dist/src/config/harness-feedback-applier.d.ts +0 -50
- package/dist/src/config/harness-feedback-applier.js +0 -122
- package/dist/src/config/proven-config-refresh.d.ts +0 -39
- package/dist/src/config/proven-config-refresh.js +0 -154
- package/dist/src/config/proven-config-rvfa.d.ts +0 -23
- package/dist/src/config/proven-config-rvfa.js +0 -73
- package/dist/src/config/proven-config.d.ts +0 -86
- package/dist/src/config/proven-config.js +0 -176
- package/dist/src/config-adapter.d.ts +0 -15
- package/dist/src/config-adapter.js +0 -186
- package/dist/src/encryption/vault.d.ts +0 -94
- package/dist/src/encryption/vault.js +0 -172
- package/dist/src/fs-secure.d.ts +0 -86
- package/dist/src/fs-secure.js +0 -133
- package/dist/src/funnel/advisor-tip.d.ts +0 -58
- package/dist/src/funnel/advisor-tip.js +0 -92
- package/dist/src/funnel/attribution.d.ts +0 -37
- package/dist/src/funnel/attribution.js +0 -101
- package/dist/src/funnel/consent.d.ts +0 -22
- package/dist/src/funnel/consent.js +0 -58
- package/dist/src/funnel/credit-errors.d.ts +0 -31
- package/dist/src/funnel/credit-errors.js +0 -88
- package/dist/src/funnel/credit-notifier.d.ts +0 -44
- package/dist/src/funnel/credit-notifier.js +0 -74
- package/dist/src/funnel/disclosure.d.ts +0 -47
- package/dist/src/funnel/disclosure.js +0 -109
- package/dist/src/funnel/enrollment.d.ts +0 -36
- package/dist/src/funnel/enrollment.js +0 -64
- package/dist/src/funnel/environment.d.ts +0 -17
- package/dist/src/funnel/environment.js +0 -39
- package/dist/src/funnel/event-transport.d.ts +0 -51
- package/dist/src/funnel/event-transport.js +0 -199
- package/dist/src/funnel/events.d.ts +0 -42
- package/dist/src/funnel/events.js +0 -150
- package/dist/src/funnel/index.d.ts +0 -21
- package/dist/src/funnel/index.js +0 -21
- package/dist/src/funnel/insights.d.ts +0 -49
- package/dist/src/funnel/insights.js +0 -120
- package/dist/src/funnel/local-signals.d.ts +0 -15
- package/dist/src/funnel/local-signals.js +0 -68
- package/dist/src/funnel/message-transport.d.ts +0 -51
- package/dist/src/funnel/message-transport.js +0 -149
- package/dist/src/funnel/messages.d.ts +0 -55
- package/dist/src/funnel/messages.js +0 -160
- package/dist/src/funnel/payout.d.ts +0 -40
- package/dist/src/funnel/payout.js +0 -60
- package/dist/src/funnel/power-saver-notifier.d.ts +0 -44
- package/dist/src/funnel/power-saver-notifier.js +0 -92
- package/dist/src/funnel/precedence.d.ts +0 -16
- package/dist/src/funnel/precedence.js +0 -85
- package/dist/src/funnel/promo.d.ts +0 -41
- package/dist/src/funnel/promo.js +0 -144
- package/dist/src/funnel/rate-limit-notifier.d.ts +0 -55
- package/dist/src/funnel/rate-limit-notifier.js +0 -102
- package/dist/src/funnel/rotation.d.ts +0 -19
- package/dist/src/funnel/rotation.js +0 -70
- package/dist/src/funnel/state.d.ts +0 -13
- package/dist/src/funnel/state.js +0 -52
- package/dist/src/funnel/toggle-cooldown.d.ts +0 -17
- package/dist/src/funnel/toggle-cooldown.js +0 -32
- package/dist/src/funnel/types.d.ts +0 -98
- package/dist/src/funnel/types.js +0 -26
- package/dist/src/index.d.ts +0 -81
- package/dist/src/index.js +0 -609
- package/dist/src/infrastructure/in-memory-repositories.d.ts +0 -68
- package/dist/src/infrastructure/in-memory-repositories.js +0 -264
- package/dist/src/init/claudemd-generator.d.ts +0 -16
- package/dist/src/init/claudemd-generator.js +0 -368
- package/dist/src/init/executor.d.ts +0 -41
- package/dist/src/init/executor.js +0 -2142
- package/dist/src/init/helper-refresh.d.ts +0 -79
- package/dist/src/init/helper-refresh.js +0 -347
- package/dist/src/init/helper-signing.d.ts +0 -37
- package/dist/src/init/helper-signing.js +0 -67
- package/dist/src/init/helpers-generator.d.ts +0 -87
- package/dist/src/init/helpers-generator.js +0 -1456
- package/dist/src/init/index.d.ts +0 -13
- package/dist/src/init/index.js +0 -15
- package/dist/src/init/mcp-generator.d.ts +0 -26
- package/dist/src/init/mcp-generator.js +0 -126
- package/dist/src/init/memory-package-resolver.d.ts +0 -53
- package/dist/src/init/memory-package-resolver.js +0 -118
- package/dist/src/init/settings-generator.d.ts +0 -14
- package/dist/src/init/settings-generator.js +0 -462
- package/dist/src/init/statusline-generator.d.ts +0 -28
- package/dist/src/init/statusline-generator.js +0 -177
- package/dist/src/init/types.d.ts +0 -331
- package/dist/src/init/types.js +0 -276
- package/dist/src/log-filters.d.ts +0 -46
- package/dist/src/log-filters.js +0 -107
- package/dist/src/mcp-client.d.ts +0 -92
- package/dist/src/mcp-client.js +0 -397
- package/dist/src/mcp-server.d.ts +0 -163
- package/dist/src/mcp-server.js +0 -751
- package/dist/src/mcp-tools/agent-execute-core.d.ts +0 -115
- package/dist/src/mcp-tools/agent-execute-core.js +0 -587
- package/dist/src/mcp-tools/agent-tools.d.ts +0 -9
- package/dist/src/mcp-tools/agent-tools.js +0 -837
- package/dist/src/mcp-tools/agentbbs-tools.d.ts +0 -28
- package/dist/src/mcp-tools/agentbbs-tools.js +0 -394
- package/dist/src/mcp-tools/agentdb-tools.d.ts +0 -35
- package/dist/src/mcp-tools/agentdb-tools.js +0 -1473
- package/dist/src/mcp-tools/agenticow-loader.d.ts +0 -59
- package/dist/src/mcp-tools/agenticow-loader.js +0 -105
- package/dist/src/mcp-tools/agenticow-speculate-tools.d.ts +0 -24
- package/dist/src/mcp-tools/agenticow-speculate-tools.js +0 -209
- package/dist/src/mcp-tools/agenticow-tools.d.ts +0 -36
- package/dist/src/mcp-tools/agenticow-tools.js +0 -360
- package/dist/src/mcp-tools/analyze-tools.d.ts +0 -38
- package/dist/src/mcp-tools/analyze-tools.js +0 -346
- package/dist/src/mcp-tools/auto-install.d.ts +0 -83
- package/dist/src/mcp-tools/auto-install.js +0 -131
- package/dist/src/mcp-tools/autopilot-tools.d.ts +0 -12
- package/dist/src/mcp-tools/autopilot-tools.js +0 -231
- package/dist/src/mcp-tools/browser-intent-tools.d.ts +0 -162
- package/dist/src/mcp-tools/browser-intent-tools.js +0 -548
- package/dist/src/mcp-tools/browser-session-tools.d.ts +0 -27
- package/dist/src/mcp-tools/browser-session-tools.js +0 -398
- package/dist/src/mcp-tools/browser-tools.d.ts +0 -21
- package/dist/src/mcp-tools/browser-tools.js +0 -760
- package/dist/src/mcp-tools/business-pod-tools.d.ts +0 -20
- package/dist/src/mcp-tools/business-pod-tools.js +0 -169
- package/dist/src/mcp-tools/claims-tools.d.ts +0 -12
- package/dist/src/mcp-tools/claims-tools.js +0 -863
- package/dist/src/mcp-tools/config-tools.d.ts +0 -8
- package/dist/src/mcp-tools/config-tools.js +0 -411
- package/dist/src/mcp-tools/coordination-tools.d.ts +0 -13
- package/dist/src/mcp-tools/coordination-tools.js +0 -729
- package/dist/src/mcp-tools/daa-tools.d.ts +0 -13
- package/dist/src/mcp-tools/daa-tools.js +0 -534
- package/dist/src/mcp-tools/embeddings-tools.d.ts +0 -9
- package/dist/src/mcp-tools/embeddings-tools.js +0 -904
- package/dist/src/mcp-tools/github-tools.d.ts +0 -9
- package/dist/src/mcp-tools/github-tools.js +0 -659
- package/dist/src/mcp-tools/guidance-tools.d.ts +0 -15
- package/dist/src/mcp-tools/guidance-tools.js +0 -639
- package/dist/src/mcp-tools/hive-mind-tools.d.ts +0 -8
- package/dist/src/mcp-tools/hive-mind-tools.js +0 -953
- package/dist/src/mcp-tools/hooks-tools.d.ts +0 -65
- package/dist/src/mcp-tools/hooks-tools.js +0 -4824
- package/dist/src/mcp-tools/http-fetch-tools.d.ts +0 -55
- package/dist/src/mcp-tools/http-fetch-tools.js +0 -329
- package/dist/src/mcp-tools/index.d.ts +0 -34
- package/dist/src/mcp-tools/index.js +0 -40
- package/dist/src/mcp-tools/managed-agent-tools.d.ts +0 -22
- package/dist/src/mcp-tools/managed-agent-tools.js +0 -357
- package/dist/src/mcp-tools/memory-tools.d.ts +0 -14
- package/dist/src/mcp-tools/memory-tools.js +0 -1330
- package/dist/src/mcp-tools/metaharness-tools.d.ts +0 -51
- package/dist/src/mcp-tools/metaharness-tools.js +0 -684
- package/dist/src/mcp-tools/neural-tools.d.ts +0 -54
- package/dist/src/mcp-tools/neural-tools.js +0 -1168
- package/dist/src/mcp-tools/performance-tools.d.ts +0 -16
- package/dist/src/mcp-tools/performance-tools.js +0 -675
- package/dist/src/mcp-tools/progress-tools.d.ts +0 -14
- package/dist/src/mcp-tools/progress-tools.js +0 -348
- package/dist/src/mcp-tools/request-tracker.d.ts +0 -17
- package/dist/src/mcp-tools/request-tracker.js +0 -27
- package/dist/src/mcp-tools/ruvllm-tools.d.ts +0 -9
- package/dist/src/mcp-tools/ruvllm-tools.js +0 -355
- package/dist/src/mcp-tools/security-tools.d.ts +0 -18
- package/dist/src/mcp-tools/security-tools.js +0 -556
- package/dist/src/mcp-tools/session-tools.d.ts +0 -8
- package/dist/src/mcp-tools/session-tools.js +0 -517
- package/dist/src/mcp-tools/swarm-tools.d.ts +0 -37
- package/dist/src/mcp-tools/swarm-tools.js +0 -390
- package/dist/src/mcp-tools/system-tools.d.ts +0 -13
- package/dist/src/mcp-tools/system-tools.js +0 -688
- package/dist/src/mcp-tools/task-tools.d.ts +0 -8
- package/dist/src/mcp-tools/task-tools.js +0 -487
- package/dist/src/mcp-tools/terminal-tools.d.ts +0 -8
- package/dist/src/mcp-tools/terminal-tools.js +0 -306
- package/dist/src/mcp-tools/testgen-tools.d.ts +0 -26
- package/dist/src/mcp-tools/testgen-tools.js +0 -168
- package/dist/src/mcp-tools/tool-loop-guardrail.d.ts +0 -31
- package/dist/src/mcp-tools/tool-loop-guardrail.js +0 -71
- package/dist/src/mcp-tools/transfer-tools.d.ts +0 -14
- package/dist/src/mcp-tools/transfer-tools.js +0 -447
- package/dist/src/mcp-tools/types.d.ts +0 -8
- package/dist/src/mcp-tools/types.js +0 -8
- package/dist/src/mcp-tools/validate-input.d.ts +0 -9
- package/dist/src/mcp-tools/validate-input.js +0 -9
- package/dist/src/mcp-tools/wasm-agent-tools.d.ts +0 -13
- package/dist/src/mcp-tools/wasm-agent-tools.js +0 -840
- package/dist/src/mcp-tools/workflow-tools.d.ts +0 -8
- package/dist/src/mcp-tools/workflow-tools.js +0 -884
- package/dist/src/memory/bge-embedder.d.ts +0 -25
- package/dist/src/memory/bge-embedder.js +0 -121
- package/dist/src/memory/cross-encoder-rerank.d.ts +0 -33
- package/dist/src/memory/cross-encoder-rerank.js +0 -123
- package/dist/src/memory/embedding-policy.d.ts +0 -21
- package/dist/src/memory/embedding-policy.js +0 -30
- package/dist/src/memory/embedding-quantization.d.ts +0 -62
- package/dist/src/memory/embedding-quantization.js +0 -156
- package/dist/src/memory/ewc-consolidation.d.ts +0 -305
- package/dist/src/memory/ewc-consolidation.js +0 -611
- package/dist/src/memory/graph-edge-writer.d.ts +0 -95
- package/dist/src/memory/graph-edge-writer.js +0 -217
- package/dist/src/memory/hybrid-retrieval.d.ts +0 -77
- package/dist/src/memory/hybrid-retrieval.js +0 -192
- package/dist/src/memory/intelligence.d.ts +0 -405
- package/dist/src/memory/intelligence.js +0 -1316
- package/dist/src/memory/lucene-bm25.d.ts +0 -19
- package/dist/src/memory/lucene-bm25.js +0 -308
- package/dist/src/memory/memory-bridge.d.ts +0 -537
- package/dist/src/memory/memory-bridge.js +0 -2460
- package/dist/src/memory/memory-initializer.d.ts +0 -556
- package/dist/src/memory/memory-initializer.js +0 -3021
- package/dist/src/memory/neural-package-bridge.d.ts +0 -48
- package/dist/src/memory/neural-package-bridge.js +0 -87
- package/dist/src/memory/rabitq-index.d.ts +0 -60
- package/dist/src/memory/rabitq-index.js +0 -242
- package/dist/src/memory/sona-optimizer.d.ts +0 -267
- package/dist/src/memory/sona-optimizer.js +0 -779
- package/dist/src/memory/structured-distill.d.ts +0 -48
- package/dist/src/memory/structured-distill.js +0 -125
- package/dist/src/output.d.ts +0 -9
- package/dist/src/output.js +0 -9
- package/dist/src/parser.d.ts +0 -89
- package/dist/src/parser.js +0 -516
- package/dist/src/plugins/manager.d.ts +0 -133
- package/dist/src/plugins/manager.js +0 -415
- package/dist/src/plugins/store/discovery.d.ts +0 -99
- package/dist/src/plugins/store/discovery.js +0 -1224
- package/dist/src/plugins/store/index.d.ts +0 -76
- package/dist/src/plugins/store/index.js +0 -141
- package/dist/src/plugins/store/search.d.ts +0 -46
- package/dist/src/plugins/store/search.js +0 -230
- package/dist/src/plugins/store/types.d.ts +0 -279
- package/dist/src/plugins/store/types.js +0 -7
- package/dist/src/plugins/tests/demo-plugin-store.d.ts +0 -7
- package/dist/src/plugins/tests/demo-plugin-store.js +0 -126
- package/dist/src/plugins/tests/standalone-test.d.ts +0 -12
- package/dist/src/plugins/tests/standalone-test.js +0 -188
- package/dist/src/plugins/tests/test-plugin-store.d.ts +0 -7
- package/dist/src/plugins/tests/test-plugin-store.js +0 -206
- package/dist/src/production/circuit-breaker.d.ts +0 -101
- package/dist/src/production/circuit-breaker.js +0 -241
- package/dist/src/production/error-handler.d.ts +0 -92
- package/dist/src/production/error-handler.js +0 -299
- package/dist/src/production/index.d.ts +0 -23
- package/dist/src/production/index.js +0 -18
- package/dist/src/production/monitoring.d.ts +0 -161
- package/dist/src/production/monitoring.js +0 -356
- package/dist/src/production/rate-limiter.d.ts +0 -80
- package/dist/src/production/rate-limiter.js +0 -201
- package/dist/src/production/retry.d.ts +0 -48
- package/dist/src/production/retry.js +0 -179
- package/dist/src/prompt.d.ts +0 -44
- package/dist/src/prompt.js +0 -501
- package/dist/src/runtime/headless.d.ts +0 -60
- package/dist/src/runtime/headless.js +0 -284
- package/dist/src/runtime/parent-death-watchdog.d.ts +0 -42
- package/dist/src/runtime/parent-death-watchdog.js +0 -70
- package/dist/src/ruvector/agent-wasm.d.ts +0 -228
- package/dist/src/ruvector/agent-wasm.js +0 -463
- package/dist/src/ruvector/ast-analyzer.d.ts +0 -67
- package/dist/src/ruvector/ast-analyzer.js +0 -277
- package/dist/src/ruvector/codemods/engine.d.ts +0 -45
- package/dist/src/ruvector/codemods/engine.js +0 -291
- package/dist/src/ruvector/codemods/scope-analysis.d.ts +0 -29
- package/dist/src/ruvector/codemods/scope-analysis.js +0 -162
- package/dist/src/ruvector/coverage-router.d.ts +0 -160
- package/dist/src/ruvector/coverage-router.js +0 -531
- package/dist/src/ruvector/coverage-tools.d.ts +0 -33
- package/dist/src/ruvector/coverage-tools.js +0 -157
- package/dist/src/ruvector/diff-classifier.d.ts +0 -175
- package/dist/src/ruvector/diff-classifier.js +0 -699
- package/dist/src/ruvector/diskann-backend.d.ts +0 -78
- package/dist/src/ruvector/diskann-backend.js +0 -310
- package/dist/src/ruvector/enhanced-model-router.d.ts +0 -172
- package/dist/src/ruvector/enhanced-model-router.js +0 -577
- package/dist/src/ruvector/graph-analyzer.d.ts +0 -187
- package/dist/src/ruvector/graph-analyzer.js +0 -929
- package/dist/src/ruvector/graph-backend.d.ts +0 -79
- package/dist/src/ruvector/graph-backend.js +0 -220
- package/dist/src/ruvector/index.d.ts +0 -38
- package/dist/src/ruvector/index.js +0 -86
- package/dist/src/ruvector/lora-adapter.d.ts +0 -292
- package/dist/src/ruvector/lora-adapter.js +0 -710
- package/dist/src/ruvector/model-prices.d.ts +0 -50
- package/dist/src/ruvector/model-prices.js +0 -72
- package/dist/src/ruvector/model-router.d.ts +0 -408
- package/dist/src/ruvector/model-router.js +0 -1162
- package/dist/src/ruvector/neural-router.d.ts +0 -182
- package/dist/src/ruvector/neural-router.js +0 -825
- package/dist/src/ruvector/output-verifier.d.ts +0 -83
- package/dist/src/ruvector/output-verifier.js +0 -277
- package/dist/src/ruvector/q-learning-router.d.ts +0 -227
- package/dist/src/ruvector/q-learning-router.js +0 -721
- package/dist/src/ruvector/router-calibrator.d.ts +0 -65
- package/dist/src/ruvector/router-calibrator.js +0 -120
- package/dist/src/ruvector/router-parallel-recorder.d.ts +0 -127
- package/dist/src/ruvector/router-parallel-recorder.js +0 -183
- package/dist/src/ruvector/router-trajectory.d.ts +0 -194
- package/dist/src/ruvector/router-trajectory.js +0 -281
- package/dist/src/ruvector/run-transcript-recorder.d.ts +0 -154
- package/dist/src/ruvector/run-transcript-recorder.js +0 -209
- package/dist/src/ruvector/ruvllm-wasm.d.ts +0 -179
- package/dist/src/ruvector/ruvllm-wasm.js +0 -379
- package/dist/src/ruvector/semantic-router.d.ts +0 -77
- package/dist/src/ruvector/semantic-router.js +0 -178
- package/dist/src/ruvector/task-embedder.d.ts +0 -56
- package/dist/src/ruvector/task-embedder.js +0 -237
- package/dist/src/ruvector/trajectory-tree.d.ts +0 -113
- package/dist/src/ruvector/trajectory-tree.js +0 -237
- package/dist/src/ruvector/vector-db.d.ts +0 -73
- package/dist/src/ruvector/vector-db.js +0 -301
- package/dist/src/ruvector/wasm-embedder.d.ts +0 -13
- package/dist/src/ruvector/wasm-embedder.js +0 -143
- package/dist/src/services/agentic-flow-bridge.d.ts +0 -50
- package/dist/src/services/agentic-flow-bridge.js +0 -95
- package/dist/src/services/ai-job-dedup.d.ts +0 -61
- package/dist/src/services/ai-job-dedup.js +0 -136
- package/dist/src/services/checkpoint-gate.d.ts +0 -140
- package/dist/src/services/checkpoint-gate.js +0 -223
- package/dist/src/services/claim-service.d.ts +0 -204
- package/dist/src/services/claim-service.js +0 -818
- package/dist/src/services/config-file-manager.d.ts +0 -37
- package/dist/src/services/config-file-manager.js +0 -224
- package/dist/src/services/container-worker-pool.d.ts +0 -204
- package/dist/src/services/container-worker-pool.js +0 -589
- package/dist/src/services/daemon-autostart.d.ts +0 -17
- package/dist/src/services/daemon-autostart.js +0 -102
- package/dist/src/services/distill-oracle.d.ts +0 -190
- package/dist/src/services/distill-oracle.js +0 -349
- package/dist/src/services/distill-tuning.d.ts +0 -111
- package/dist/src/services/distill-tuning.js +0 -510
- package/dist/src/services/evolve-proof.d.ts +0 -253
- package/dist/src/services/evolve-proof.js +0 -343
- package/dist/src/services/fable-harness.d.ts +0 -207
- package/dist/src/services/fable-harness.js +0 -388
- package/dist/src/services/git-workspace-identity.d.ts +0 -42
- package/dist/src/services/git-workspace-identity.js +0 -99
- package/dist/src/services/global-ai-budget.d.ts +0 -135
- package/dist/src/services/global-ai-budget.js +0 -415
- package/dist/src/services/harness-benchmark.d.ts +0 -68
- package/dist/src/services/harness-benchmark.js +0 -94
- package/dist/src/services/harness-canary.d.ts +0 -60
- package/dist/src/services/harness-canary.js +0 -69
- package/dist/src/services/harness-corpus-harvester.d.ts +0 -51
- package/dist/src/services/harness-corpus-harvester.js +0 -74
- package/dist/src/services/harness-flywheel-generations.d.ts +0 -115
- package/dist/src/services/harness-flywheel-generations.js +0 -360
- package/dist/src/services/harness-flywheel-runtime.d.ts +0 -25
- package/dist/src/services/harness-flywheel-runtime.js +0 -92
- package/dist/src/services/harness-flywheel.d.ts +0 -48
- package/dist/src/services/harness-flywheel.js +0 -207
- package/dist/src/services/harness-frozen-eval.d.ts +0 -22
- package/dist/src/services/harness-frozen-eval.js +0 -66
- package/dist/src/services/harness-hosts.d.ts +0 -40
- package/dist/src/services/harness-hosts.js +0 -88
- package/dist/src/services/harness-improvement-ledger.d.ts +0 -63
- package/dist/src/services/harness-improvement-ledger.js +0 -101
- package/dist/src/services/harness-loop.d.ts +0 -53
- package/dist/src/services/harness-loop.js +0 -85
- package/dist/src/services/harness-qualification.d.ts +0 -66
- package/dist/src/services/harness-qualification.js +0 -143
- package/dist/src/services/harness-replay.d.ts +0 -37
- package/dist/src/services/harness-replay.js +0 -92
- package/dist/src/services/harness-verify.d.ts +0 -33
- package/dist/src/services/harness-verify.js +0 -26
- package/dist/src/services/harness-worker.d.ts +0 -23
- package/dist/src/services/harness-worker.js +0 -66
- package/dist/src/services/headless-worker-executor.d.ts +0 -358
- package/dist/src/services/headless-worker-executor.js +0 -1269
- package/dist/src/services/index.d.ts +0 -13
- package/dist/src/services/index.js +0 -11
- package/dist/src/services/memory-backup.d.ts +0 -53
- package/dist/src/services/memory-backup.js +0 -198
- package/dist/src/services/memory-distillation.d.ts +0 -41
- package/dist/src/services/memory-distillation.js +0 -277
- package/dist/src/services/native-training.d.ts +0 -68
- package/dist/src/services/native-training.js +0 -141
- package/dist/src/services/registry-api.d.ts +0 -58
- package/dist/src/services/registry-api.js +0 -146
- package/dist/src/services/repo-supervisor.d.ts +0 -70
- package/dist/src/services/repo-supervisor.js +0 -228
- package/dist/src/services/ruvector-training.d.ts +0 -222
- package/dist/src/services/ruvector-training.js +0 -693
- package/dist/src/services/swarm-memory-branches.d.ts +0 -135
- package/dist/src/services/swarm-memory-branches.js +0 -213
- package/dist/src/services/weight-eft.d.ts +0 -305
- package/dist/src/services/weight-eft.js +0 -296
- package/dist/src/services/worker-daemon.d.ts +0 -439
- package/dist/src/services/worker-daemon.js +0 -1865
- package/dist/src/services/worker-queue.d.ts +0 -194
- package/dist/src/services/worker-queue.js +0 -513
- package/dist/src/services/workspace-lease.d.ts +0 -55
- package/dist/src/services/workspace-lease.js +0 -191
- package/dist/src/suggest.d.ts +0 -53
- package/dist/src/suggest.js +0 -200
- package/dist/src/transfer/anonymization/index.d.ts +0 -25
- package/dist/src/transfer/anonymization/index.js +0 -175
- package/dist/src/transfer/deploy-seraphine.d.ts +0 -13
- package/dist/src/transfer/deploy-seraphine.js +0 -205
- package/dist/src/transfer/export.d.ts +0 -25
- package/dist/src/transfer/export.js +0 -113
- package/dist/src/transfer/index.d.ts +0 -12
- package/dist/src/transfer/index.js +0 -31
- package/dist/src/transfer/ipfs/client.d.ts +0 -109
- package/dist/src/transfer/ipfs/client.js +0 -307
- package/dist/src/transfer/ipfs/upload.d.ts +0 -95
- package/dist/src/transfer/ipfs/upload.js +0 -413
- package/dist/src/transfer/models/seraphine.d.ts +0 -72
- package/dist/src/transfer/models/seraphine.js +0 -373
- package/dist/src/transfer/serialization/cfp.d.ts +0 -49
- package/dist/src/transfer/serialization/cfp.js +0 -183
- package/dist/src/transfer/storage/gcs.d.ts +0 -82
- package/dist/src/transfer/storage/gcs.js +0 -272
- package/dist/src/transfer/storage/index.d.ts +0 -6
- package/dist/src/transfer/storage/index.js +0 -6
- package/dist/src/transfer/store/discovery.d.ts +0 -84
- package/dist/src/transfer/store/discovery.js +0 -382
- package/dist/src/transfer/store/download.d.ts +0 -70
- package/dist/src/transfer/store/download.js +0 -334
- package/dist/src/transfer/store/index.d.ts +0 -84
- package/dist/src/transfer/store/index.js +0 -153
- package/dist/src/transfer/store/publish.d.ts +0 -76
- package/dist/src/transfer/store/publish.js +0 -294
- package/dist/src/transfer/store/registry.d.ts +0 -58
- package/dist/src/transfer/store/registry.js +0 -285
- package/dist/src/transfer/store/search.d.ts +0 -54
- package/dist/src/transfer/store/search.js +0 -232
- package/dist/src/transfer/store/tests/standalone-test.d.ts +0 -12
- package/dist/src/transfer/store/tests/standalone-test.js +0 -190
- package/dist/src/transfer/store/types.d.ts +0 -193
- package/dist/src/transfer/store/types.js +0 -6
- package/dist/src/transfer/test-seraphine.d.ts +0 -6
- package/dist/src/transfer/test-seraphine.js +0 -105
- package/dist/src/transfer/tests/test-store.d.ts +0 -7
- package/dist/src/transfer/tests/test-store.js +0 -214
- package/dist/src/transfer/types.d.ts +0 -245
- package/dist/src/transfer/types.js +0 -6
- package/dist/src/types.d.ts +0 -13
- package/dist/src/types.js +0 -13
- package/dist/src/update/checker.d.ts +0 -34
- package/dist/src/update/checker.js +0 -191
- package/dist/src/update/executor.d.ts +0 -33
- package/dist/src/update/executor.js +0 -217
- package/dist/src/update/index.d.ts +0 -33
- package/dist/src/update/index.js +0 -64
- package/dist/src/update/rate-limiter.d.ts +0 -20
- package/dist/src/update/rate-limiter.js +0 -96
- package/dist/src/update/validator.d.ts +0 -17
- package/dist/src/update/validator.js +0 -123
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AST Analyzer for Code Analysis
|
|
3
|
-
*
|
|
4
|
-
* Analyzes Abstract Syntax Trees for code understanding
|
|
5
|
-
* and intelligent routing decisions.
|
|
6
|
-
*
|
|
7
|
-
* @module ast-analyzer
|
|
8
|
-
*/
|
|
9
|
-
const DEFAULT_CONFIG = {
|
|
10
|
-
maxFileSize: 1024 * 1024,
|
|
11
|
-
languages: ['typescript', 'javascript', 'python', 'rust', 'go'],
|
|
12
|
-
includeComments: true,
|
|
13
|
-
extractTypes: true,
|
|
14
|
-
maxDepth: 20,
|
|
15
|
-
};
|
|
16
|
-
const LANGUAGE_PATTERNS = {
|
|
17
|
-
typescript: [/\.tsx?$/, /^import\s+.*from\s+['"]/, /:\s*(string|number|boolean|void)/],
|
|
18
|
-
javascript: [/\.jsx?$/, /^(const|let|var)\s+\w+\s*=/, /module\.exports/],
|
|
19
|
-
python: [/\.py$/, /^(def|class|import|from)\s+/, /^#!/],
|
|
20
|
-
rust: [/\.rs$/, /^(fn|struct|impl|use)\s+/, /^(pub\s+)?mod\s+/],
|
|
21
|
-
go: [/\.go$/, /^package\s+/, /^func\s+/],
|
|
22
|
-
};
|
|
23
|
-
export class ASTAnalyzer {
|
|
24
|
-
config;
|
|
25
|
-
ruvectorEngine = null;
|
|
26
|
-
useNative = false;
|
|
27
|
-
analysisCache = new Map();
|
|
28
|
-
constructor(config = {}) {
|
|
29
|
-
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
30
|
-
}
|
|
31
|
-
async initialize() {
|
|
32
|
-
try {
|
|
33
|
-
// @ruvector/ast is optional - gracefully fallback if not installed
|
|
34
|
-
const ruvector = await import('@ruvector/ast').catch(() => null);
|
|
35
|
-
if (ruvector) {
|
|
36
|
-
this.ruvectorEngine = ruvector.createASTAnalyzer?.(this.config);
|
|
37
|
-
this.useNative = !!this.ruvectorEngine;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
catch {
|
|
41
|
-
this.useNative = false;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
analyze(code, filePath = 'unknown') {
|
|
45
|
-
const startTime = performance.now();
|
|
46
|
-
if (code.length > this.config.maxFileSize) {
|
|
47
|
-
throw new Error(`File too large: ${code.length} bytes exceeds ${this.config.maxFileSize}`);
|
|
48
|
-
}
|
|
49
|
-
const cacheKey = this.getCacheKey(code, filePath);
|
|
50
|
-
const cached = this.analysisCache.get(cacheKey);
|
|
51
|
-
if (cached)
|
|
52
|
-
return cached;
|
|
53
|
-
const language = this.detectLanguage(code, filePath);
|
|
54
|
-
const root = this.parseAST(code, language);
|
|
55
|
-
const functions = this.extractFunctions(root);
|
|
56
|
-
const classes = this.extractClasses(root);
|
|
57
|
-
const imports = this.extractImports(code, language);
|
|
58
|
-
const exports = this.extractExports(code, language);
|
|
59
|
-
const complexity = this.calculateComplexity(code, root);
|
|
60
|
-
const durationMs = performance.now() - startTime;
|
|
61
|
-
const analysis = {
|
|
62
|
-
filePath, language, root, functions, classes, imports, exports,
|
|
63
|
-
complexity, timestamp: Date.now(), durationMs,
|
|
64
|
-
};
|
|
65
|
-
this.analysisCache.set(cacheKey, analysis);
|
|
66
|
-
return analysis;
|
|
67
|
-
}
|
|
68
|
-
getFunctionAtLine(analysis, line) {
|
|
69
|
-
for (const func of analysis.functions) {
|
|
70
|
-
if (line >= func.startLine && line <= func.endLine)
|
|
71
|
-
return func;
|
|
72
|
-
}
|
|
73
|
-
return null;
|
|
74
|
-
}
|
|
75
|
-
getClassAtLine(analysis, line) {
|
|
76
|
-
for (const cls of analysis.classes) {
|
|
77
|
-
if (line >= cls.startLine && line <= cls.endLine)
|
|
78
|
-
return cls;
|
|
79
|
-
}
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
getSymbols(analysis) {
|
|
83
|
-
const symbols = [];
|
|
84
|
-
for (const func of analysis.functions)
|
|
85
|
-
symbols.push(func.name);
|
|
86
|
-
for (const cls of analysis.classes)
|
|
87
|
-
symbols.push(cls.name);
|
|
88
|
-
return symbols;
|
|
89
|
-
}
|
|
90
|
-
getStats() {
|
|
91
|
-
return { cacheSize: this.analysisCache.size, useNative: this.useNative ? 1 : 0 };
|
|
92
|
-
}
|
|
93
|
-
clearCache() { this.analysisCache.clear(); }
|
|
94
|
-
getCacheKey(code, filePath) {
|
|
95
|
-
let hash = 0;
|
|
96
|
-
const str = filePath + code.substring(0, 1000);
|
|
97
|
-
for (let i = 0; i < str.length; i++) {
|
|
98
|
-
const char = str.charCodeAt(i);
|
|
99
|
-
hash = ((hash << 5) - hash) + char;
|
|
100
|
-
hash = hash & hash;
|
|
101
|
-
}
|
|
102
|
-
return `ast_${hash}_${code.length}`;
|
|
103
|
-
}
|
|
104
|
-
detectLanguage(code, filePath) {
|
|
105
|
-
for (const [lang, patterns] of Object.entries(LANGUAGE_PATTERNS)) {
|
|
106
|
-
for (const pattern of patterns) {
|
|
107
|
-
if (pattern.test(filePath) || pattern.test(code))
|
|
108
|
-
return lang;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return 'unknown';
|
|
112
|
-
}
|
|
113
|
-
parseAST(code, language) {
|
|
114
|
-
const lines = code.split('\n');
|
|
115
|
-
const root = { type: 'program', name: 'root', startLine: 1, endLine: lines.length, children: [] };
|
|
116
|
-
for (let i = 0; i < lines.length; i++) {
|
|
117
|
-
const line = lines[i];
|
|
118
|
-
const lineNum = i + 1;
|
|
119
|
-
const funcMatch = this.matchFunction(line, language);
|
|
120
|
-
if (funcMatch) {
|
|
121
|
-
const funcNode = {
|
|
122
|
-
type: 'function', name: funcMatch.name, startLine: lineNum,
|
|
123
|
-
endLine: lineNum + this.findBlockEnd(lines, i), children: [],
|
|
124
|
-
metadata: { params: funcMatch.params },
|
|
125
|
-
};
|
|
126
|
-
root.children.push(funcNode);
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
const classMatch = this.matchClass(line, language);
|
|
130
|
-
if (classMatch) {
|
|
131
|
-
const classNode = {
|
|
132
|
-
type: 'class', name: classMatch.name, startLine: lineNum,
|
|
133
|
-
endLine: lineNum + this.findBlockEnd(lines, i), children: [],
|
|
134
|
-
metadata: { extends: classMatch.extends },
|
|
135
|
-
};
|
|
136
|
-
root.children.push(classNode);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return root;
|
|
140
|
-
}
|
|
141
|
-
matchFunction(line, language) {
|
|
142
|
-
const patterns = {
|
|
143
|
-
typescript: /(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\(([^)]*)\)/,
|
|
144
|
-
javascript: /(?:export\s+)?(?:async\s+)?function\s+(\w+)\s*\(([^)]*)\)/,
|
|
145
|
-
python: /def\s+(\w+)\s*\(([^)]*)\)/,
|
|
146
|
-
rust: /(?:pub\s+)?(?:async\s+)?fn\s+(\w+)\s*\(([^)]*)\)/,
|
|
147
|
-
go: /func\s+(?:\([^)]*\)\s+)?(\w+)\s*\(([^)]*)\)/,
|
|
148
|
-
};
|
|
149
|
-
const pattern = patterns[language];
|
|
150
|
-
if (!pattern)
|
|
151
|
-
return null;
|
|
152
|
-
const match = line.match(pattern);
|
|
153
|
-
if (match)
|
|
154
|
-
return { name: match[1], params: match[2] || '' };
|
|
155
|
-
const arrowMatch = line.match(/(?:const|let|var)\s+(\w+)\s*=\s*(?:async\s+)?\([^)]*\)\s*=>/);
|
|
156
|
-
if (arrowMatch)
|
|
157
|
-
return { name: arrowMatch[1], params: '' };
|
|
158
|
-
const methodMatch = line.match(/^\s*(?:async\s+)?(\w+)\s*\([^)]*\)\s*(?::\s*\w+)?\s*\{/);
|
|
159
|
-
if (methodMatch && methodMatch[1] !== 'if' && methodMatch[1] !== 'while' && methodMatch[1] !== 'for') {
|
|
160
|
-
return { name: methodMatch[1], params: '' };
|
|
161
|
-
}
|
|
162
|
-
return null;
|
|
163
|
-
}
|
|
164
|
-
matchClass(line, language) {
|
|
165
|
-
const patterns = {
|
|
166
|
-
typescript: /(?:export\s+)?class\s+(\w+)(?:\s+extends\s+(\w+))?/,
|
|
167
|
-
javascript: /(?:export\s+)?class\s+(\w+)(?:\s+extends\s+(\w+))?/,
|
|
168
|
-
python: /class\s+(\w+)(?:\((\w+)\))?/,
|
|
169
|
-
rust: /(?:pub\s+)?struct\s+(\w+)/,
|
|
170
|
-
go: /type\s+(\w+)\s+struct/,
|
|
171
|
-
};
|
|
172
|
-
const pattern = patterns[language];
|
|
173
|
-
if (!pattern)
|
|
174
|
-
return null;
|
|
175
|
-
const match = line.match(pattern);
|
|
176
|
-
if (match)
|
|
177
|
-
return { name: match[1], extends: match[2] };
|
|
178
|
-
return null;
|
|
179
|
-
}
|
|
180
|
-
findBlockEnd(lines, startIdx) {
|
|
181
|
-
let depth = 0;
|
|
182
|
-
let inBlock = false;
|
|
183
|
-
for (let i = startIdx; i < lines.length; i++) {
|
|
184
|
-
const line = lines[i];
|
|
185
|
-
const opens = (line.match(/[\{]/g) || []).length;
|
|
186
|
-
const closes = (line.match(/[\}]/g) || []).length;
|
|
187
|
-
if (opens > 0)
|
|
188
|
-
inBlock = true;
|
|
189
|
-
depth += opens - closes;
|
|
190
|
-
if (inBlock && depth <= 0)
|
|
191
|
-
return i - startIdx;
|
|
192
|
-
}
|
|
193
|
-
return Math.min(50, lines.length - startIdx);
|
|
194
|
-
}
|
|
195
|
-
extractFunctions(root) {
|
|
196
|
-
const functions = [];
|
|
197
|
-
const visit = (node) => {
|
|
198
|
-
if (node.type === 'function')
|
|
199
|
-
functions.push(node);
|
|
200
|
-
for (const child of node.children)
|
|
201
|
-
visit(child);
|
|
202
|
-
};
|
|
203
|
-
visit(root);
|
|
204
|
-
return functions;
|
|
205
|
-
}
|
|
206
|
-
extractClasses(root) {
|
|
207
|
-
const classes = [];
|
|
208
|
-
const visit = (node) => {
|
|
209
|
-
if (node.type === 'class')
|
|
210
|
-
classes.push(node);
|
|
211
|
-
for (const child of node.children)
|
|
212
|
-
visit(child);
|
|
213
|
-
};
|
|
214
|
-
visit(root);
|
|
215
|
-
return classes;
|
|
216
|
-
}
|
|
217
|
-
extractImports(code, language) {
|
|
218
|
-
const imports = [];
|
|
219
|
-
const lines = code.split('\n');
|
|
220
|
-
const patterns = {
|
|
221
|
-
typescript: /import\s+(?:.*\s+from\s+)?['"]([^'"]+)['"]/,
|
|
222
|
-
javascript: /(?:import\s+.*from\s+|require\s*\(\s*)['"]([^'"]+)['"]/,
|
|
223
|
-
python: /(?:from\s+(\S+)\s+import|import\s+(\S+))/,
|
|
224
|
-
rust: /use\s+(\S+)/,
|
|
225
|
-
go: /import\s+(?:\(\s*)?["']([^"']+)["']/,
|
|
226
|
-
};
|
|
227
|
-
const pattern = patterns[language];
|
|
228
|
-
if (!pattern)
|
|
229
|
-
return imports;
|
|
230
|
-
for (const line of lines) {
|
|
231
|
-
const match = line.match(pattern);
|
|
232
|
-
if (match)
|
|
233
|
-
imports.push(match[1] || match[2]);
|
|
234
|
-
}
|
|
235
|
-
return imports;
|
|
236
|
-
}
|
|
237
|
-
extractExports(code, language) {
|
|
238
|
-
const exports = [];
|
|
239
|
-
const lines = code.split('\n');
|
|
240
|
-
for (const line of lines) {
|
|
241
|
-
const exportMatch = line.match(/export\s+(?:default\s+)?(?:const|let|var|function|class|interface|type|enum)\s+(\w+)/);
|
|
242
|
-
if (exportMatch)
|
|
243
|
-
exports.push(exportMatch[1]);
|
|
244
|
-
const namedExportMatch = line.match(/export\s*\{\s*([^}]+)\s*\}/);
|
|
245
|
-
if (namedExportMatch) {
|
|
246
|
-
const names = namedExportMatch[1].split(',').map(n => n.trim().split(/\s+as\s+/)[0]);
|
|
247
|
-
exports.push(...names);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
return exports;
|
|
251
|
-
}
|
|
252
|
-
calculateComplexity(code, root) {
|
|
253
|
-
const lines = code.split('\n');
|
|
254
|
-
const nonEmptyLines = lines.filter(l => l.trim().length > 0);
|
|
255
|
-
const commentLines = lines.filter(l => /^\s*(\/\/|\/\*|\*|#)/.test(l));
|
|
256
|
-
const decisionPoints = (code.match(/\b(if|else|for|while|switch|case|catch|&&|\|\||\?)\b/g) || []).length;
|
|
257
|
-
const cyclomatic = decisionPoints + 1;
|
|
258
|
-
let cognitive = 0;
|
|
259
|
-
let nestingLevel = 0;
|
|
260
|
-
for (const line of lines) {
|
|
261
|
-
const opens = (line.match(/[\{]/g) || []).length;
|
|
262
|
-
const closes = (line.match(/[\}]/g) || []).length;
|
|
263
|
-
if (/\b(if|for|while|switch)\b/.test(line))
|
|
264
|
-
cognitive += 1 + nestingLevel;
|
|
265
|
-
nestingLevel += opens - closes;
|
|
266
|
-
nestingLevel = Math.max(0, nestingLevel);
|
|
267
|
-
}
|
|
268
|
-
return {
|
|
269
|
-
cyclomatic, cognitive, loc: nonEmptyLines.length,
|
|
270
|
-
commentDensity: lines.length > 0 ? commentLines.length / lines.length : 0,
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
export function createASTAnalyzer(config) {
|
|
275
|
-
return new ASTAnalyzer(config);
|
|
276
|
-
}
|
|
277
|
-
//# sourceMappingURL=ast-analyzer.js.map
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Deterministic Codemod Engine (ADR-143)
|
|
3
|
-
*
|
|
4
|
-
* Truly $0, no-LLM Tier-1 code transforms. Uses the TypeScript compiler API to
|
|
5
|
-
* locate exact AST nodes, then applies formatting-preserving text-range edits to
|
|
6
|
-
* the original source string (we never re-print the whole file, so comments and
|
|
7
|
-
* formatting survive).
|
|
8
|
-
*
|
|
9
|
-
* Only intents that can be transformed *deterministically and safely* live here.
|
|
10
|
-
* Intents that need inference or judgement (add-types, add-error-handling,
|
|
11
|
-
* async-await) are intentionally NOT codemods — they route to a model. See
|
|
12
|
-
* ADR-143 for the rationale.
|
|
13
|
-
*
|
|
14
|
-
* @module ruvector/codemods/engine
|
|
15
|
-
*/
|
|
16
|
-
export type CodemodIntent = 'var-to-const' | 'remove-console' | 'add-logging';
|
|
17
|
-
/** Intents this engine can apply deterministically with $0 cost. */
|
|
18
|
-
export declare const DETERMINISTIC_CODEMOD_INTENTS: readonly CodemodIntent[];
|
|
19
|
-
/** Intents recognised by the router but NOT safe as deterministic codemods. */
|
|
20
|
-
export declare const MODEL_ROUTED_INTENTS: readonly string[];
|
|
21
|
-
export type CodemodLanguage = 'javascript' | 'typescript' | 'jsx' | 'tsx';
|
|
22
|
-
export interface CodemodResult {
|
|
23
|
-
intent: CodemodIntent;
|
|
24
|
-
success: boolean;
|
|
25
|
-
/** true if the output differs from the input. */
|
|
26
|
-
changed: boolean;
|
|
27
|
-
output: string;
|
|
28
|
-
/** number of discrete edit sites applied. */
|
|
29
|
-
edits: number;
|
|
30
|
-
language: CodemodLanguage;
|
|
31
|
-
reason?: string;
|
|
32
|
-
}
|
|
33
|
-
export declare function isDeterministicCodemod(intent: string): intent is CodemodIntent;
|
|
34
|
-
export interface ApplyCodemodOptions {
|
|
35
|
-
language?: CodemodLanguage;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Apply a deterministic codemod to a source string.
|
|
39
|
-
*
|
|
40
|
-
* Returns the transformed source plus metadata. Never throws on malformed input
|
|
41
|
-
* — it reports `success: false` with a reason instead. Guarantees the output
|
|
42
|
-
* does not introduce new parse errors (otherwise it returns the input unchanged).
|
|
43
|
-
*/
|
|
44
|
-
export declare function applyCodemod(intent: string, code: string, opts?: ApplyCodemodOptions): CodemodResult;
|
|
45
|
-
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -1,291 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Deterministic Codemod Engine (ADR-143)
|
|
3
|
-
*
|
|
4
|
-
* Truly $0, no-LLM Tier-1 code transforms. Uses the TypeScript compiler API to
|
|
5
|
-
* locate exact AST nodes, then applies formatting-preserving text-range edits to
|
|
6
|
-
* the original source string (we never re-print the whole file, so comments and
|
|
7
|
-
* formatting survive).
|
|
8
|
-
*
|
|
9
|
-
* Only intents that can be transformed *deterministically and safely* live here.
|
|
10
|
-
* Intents that need inference or judgement (add-types, add-error-handling,
|
|
11
|
-
* async-await) are intentionally NOT codemods — they route to a model. See
|
|
12
|
-
* ADR-143 for the rationale.
|
|
13
|
-
*
|
|
14
|
-
* @module ruvector/codemods/engine
|
|
15
|
-
*/
|
|
16
|
-
import ts from 'typescript';
|
|
17
|
-
import { buildReassignmentResolver } from './scope-analysis.js';
|
|
18
|
-
/** Intents this engine can apply deterministically with $0 cost. */
|
|
19
|
-
export const DETERMINISTIC_CODEMOD_INTENTS = [
|
|
20
|
-
'var-to-const',
|
|
21
|
-
'remove-console',
|
|
22
|
-
'add-logging',
|
|
23
|
-
];
|
|
24
|
-
/** Intents recognised by the router but NOT safe as deterministic codemods. */
|
|
25
|
-
export const MODEL_ROUTED_INTENTS = [
|
|
26
|
-
'add-types',
|
|
27
|
-
'add-error-handling',
|
|
28
|
-
'async-await',
|
|
29
|
-
];
|
|
30
|
-
export function isDeterministicCodemod(intent) {
|
|
31
|
-
return DETERMINISTIC_CODEMOD_INTENTS.includes(intent);
|
|
32
|
-
}
|
|
33
|
-
// ============================================================================
|
|
34
|
-
// Parsing & edit application
|
|
35
|
-
// ============================================================================
|
|
36
|
-
function scriptKind(language) {
|
|
37
|
-
switch (language) {
|
|
38
|
-
case 'typescript':
|
|
39
|
-
return ts.ScriptKind.TS;
|
|
40
|
-
case 'tsx':
|
|
41
|
-
return ts.ScriptKind.TSX;
|
|
42
|
-
case 'jsx':
|
|
43
|
-
return ts.ScriptKind.JSX;
|
|
44
|
-
default:
|
|
45
|
-
return ts.ScriptKind.JS;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
function parse(code, language) {
|
|
49
|
-
return ts.createSourceFile(`codemod-input.${language}`, code, ts.ScriptTarget.Latest,
|
|
50
|
-
/* setParentNodes */ true, scriptKind(language));
|
|
51
|
-
}
|
|
52
|
-
function parseDiagnosticCount(sf) {
|
|
53
|
-
// parseDiagnostics is internal but stable; guard so a missing field never throws.
|
|
54
|
-
return sf.parseDiagnostics?.length ?? 0;
|
|
55
|
-
}
|
|
56
|
-
/** Apply edits to the original source, right-to-left so offsets stay valid. */
|
|
57
|
-
function applyEdits(code, edits) {
|
|
58
|
-
const sorted = [...edits].sort((a, b) => b.start - a.start);
|
|
59
|
-
let out = code;
|
|
60
|
-
for (const e of sorted) {
|
|
61
|
-
out = out.slice(0, e.start) + e.replacement + out.slice(e.end);
|
|
62
|
-
}
|
|
63
|
-
return out;
|
|
64
|
-
}
|
|
65
|
-
function lineStartOffset(code, pos) {
|
|
66
|
-
let i = pos;
|
|
67
|
-
while (i > 0 && code[i - 1] !== '\n')
|
|
68
|
-
i--;
|
|
69
|
-
return i;
|
|
70
|
-
}
|
|
71
|
-
function leadingIndent(code, lineStart) {
|
|
72
|
-
let i = lineStart;
|
|
73
|
-
while (i < code.length && (code[i] === ' ' || code[i] === '\t'))
|
|
74
|
-
i++;
|
|
75
|
-
return code.slice(lineStart, i);
|
|
76
|
-
}
|
|
77
|
-
// ============================================================================
|
|
78
|
-
// var-to-const (scope-aware reassignment analysis — see scope-analysis.ts)
|
|
79
|
-
// ============================================================================
|
|
80
|
-
function isVarList(list) {
|
|
81
|
-
return !(list.flags & (ts.NodeFlags.Let | ts.NodeFlags.Const));
|
|
82
|
-
}
|
|
83
|
-
function collectBindingNames(name, out) {
|
|
84
|
-
if (ts.isIdentifier(name)) {
|
|
85
|
-
out.add(name.text);
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
for (const el of name.elements) {
|
|
89
|
-
if (ts.isBindingElement(el))
|
|
90
|
-
collectBindingNames(el.name, out);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
function varToConstEdits(code, sf) {
|
|
94
|
-
const resolver = buildReassignmentResolver(sf);
|
|
95
|
-
const edits = [];
|
|
96
|
-
const visit = (node) => {
|
|
97
|
-
if (ts.isVariableDeclarationList(node) && isVarList(node)) {
|
|
98
|
-
const names = new Set();
|
|
99
|
-
for (const decl of node.declarations)
|
|
100
|
-
collectBindingNames(decl.name, names);
|
|
101
|
-
// `const` only when no declared binding is reassigned *within its own scope*.
|
|
102
|
-
const anyReassigned = [...names].some((n) => resolver.isReassigned(n, node));
|
|
103
|
-
const keyword = anyReassigned ? 'let' : 'const';
|
|
104
|
-
// The `var` keyword is the first token of the declaration list.
|
|
105
|
-
const start = node.getStart(sf);
|
|
106
|
-
// Only rewrite when the literal text really is `var` (guards against odd trivia).
|
|
107
|
-
if (code.slice(start, start + 3) === 'var') {
|
|
108
|
-
edits.push({ start, end: start + 3, replacement: keyword });
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
ts.forEachChild(node, visit);
|
|
112
|
-
};
|
|
113
|
-
visit(sf);
|
|
114
|
-
return edits;
|
|
115
|
-
}
|
|
116
|
-
// ============================================================================
|
|
117
|
-
// remove-console
|
|
118
|
-
// ============================================================================
|
|
119
|
-
function rootIdentifier(expr) {
|
|
120
|
-
let cur = expr;
|
|
121
|
-
while (ts.isPropertyAccessExpression(cur) || ts.isElementAccessExpression(cur)) {
|
|
122
|
-
cur = cur.expression;
|
|
123
|
-
}
|
|
124
|
-
return ts.isIdentifier(cur) ? cur : undefined;
|
|
125
|
-
}
|
|
126
|
-
function isConsoleCallStatement(stmt) {
|
|
127
|
-
if (!ts.isExpressionStatement(stmt))
|
|
128
|
-
return false;
|
|
129
|
-
let expr = stmt.expression;
|
|
130
|
-
// unwrap `void console.log(x)` and awaited/comma forms defensively
|
|
131
|
-
if (ts.isCallExpression(expr)) {
|
|
132
|
-
const root = rootIdentifier(expr.expression);
|
|
133
|
-
return !!root && root.text === 'console';
|
|
134
|
-
}
|
|
135
|
-
return false;
|
|
136
|
-
}
|
|
137
|
-
function removeConsoleEdits(code, sf) {
|
|
138
|
-
const edits = [];
|
|
139
|
-
const visit = (node) => {
|
|
140
|
-
if (isConsoleCallStatement(node)) {
|
|
141
|
-
const stmt = node;
|
|
142
|
-
const start = stmt.getStart(sf);
|
|
143
|
-
const end = stmt.getEnd();
|
|
144
|
-
const ls = lineStartOffset(code, start);
|
|
145
|
-
const beforeIsBlank = code.slice(ls, start).trim() === '';
|
|
146
|
-
// Is the rest of the line after the statement only whitespace?
|
|
147
|
-
let lineEnd = end;
|
|
148
|
-
while (lineEnd < code.length && code[lineEnd] !== '\n')
|
|
149
|
-
lineEnd++;
|
|
150
|
-
const afterIsBlank = code.slice(end, lineEnd).trim() === '';
|
|
151
|
-
if (beforeIsBlank && afterIsBlank) {
|
|
152
|
-
// Statement owns its line(s): drop the whole line incl. trailing newline.
|
|
153
|
-
const dropEnd = lineEnd < code.length ? lineEnd + 1 : lineEnd;
|
|
154
|
-
edits.push({ start: ls, end: dropEnd, replacement: '' });
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
// Inline with other code: remove just the statement, tidy one trailing space.
|
|
158
|
-
let e = end;
|
|
159
|
-
if (code[e] === ' ')
|
|
160
|
-
e++;
|
|
161
|
-
edits.push({ start, end: e, replacement: '' });
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
ts.forEachChild(node, visit);
|
|
165
|
-
};
|
|
166
|
-
visit(sf);
|
|
167
|
-
return edits;
|
|
168
|
-
}
|
|
169
|
-
function isFunctionLikeWithBlock(node) {
|
|
170
|
-
return ((ts.isFunctionDeclaration(node) ||
|
|
171
|
-
ts.isFunctionExpression(node) ||
|
|
172
|
-
ts.isArrowFunction(node) ||
|
|
173
|
-
ts.isMethodDeclaration(node) ||
|
|
174
|
-
ts.isConstructorDeclaration(node) ||
|
|
175
|
-
ts.isGetAccessor(node) ||
|
|
176
|
-
ts.isSetAccessor(node)) &&
|
|
177
|
-
!!node.body &&
|
|
178
|
-
ts.isBlock(node.body));
|
|
179
|
-
}
|
|
180
|
-
function functionName(node) {
|
|
181
|
-
if (ts.isConstructorDeclaration(node))
|
|
182
|
-
return 'constructor';
|
|
183
|
-
if ((ts.isFunctionDeclaration(node) ||
|
|
184
|
-
ts.isFunctionExpression(node) ||
|
|
185
|
-
ts.isMethodDeclaration(node) ||
|
|
186
|
-
ts.isGetAccessor(node) ||
|
|
187
|
-
ts.isSetAccessor(node)) &&
|
|
188
|
-
node.name &&
|
|
189
|
-
(ts.isIdentifier(node.name) || ts.isStringLiteral(node.name))) {
|
|
190
|
-
return node.name.text;
|
|
191
|
-
}
|
|
192
|
-
// function expression / arrow assigned to a variable or property
|
|
193
|
-
const parent = node.parent;
|
|
194
|
-
if (parent && ts.isVariableDeclaration(parent) && ts.isIdentifier(parent.name))
|
|
195
|
-
return parent.name.text;
|
|
196
|
-
if (parent && ts.isPropertyAssignment(parent) && ts.isIdentifier(parent.name))
|
|
197
|
-
return parent.name.text;
|
|
198
|
-
return 'anonymous';
|
|
199
|
-
}
|
|
200
|
-
function alreadyLogsEntry(body, name) {
|
|
201
|
-
const first = body.statements[0];
|
|
202
|
-
if (!first || !isConsoleCallStatement(first))
|
|
203
|
-
return false;
|
|
204
|
-
const text = first.getText();
|
|
205
|
-
return text.includes(`'${name} called'`) || text.includes(`"${name} called"`);
|
|
206
|
-
}
|
|
207
|
-
function addLoggingEdits(code, sf) {
|
|
208
|
-
const edits = [];
|
|
209
|
-
const visit = (node) => {
|
|
210
|
-
if (isFunctionLikeWithBlock(node)) {
|
|
211
|
-
const body = node.body;
|
|
212
|
-
const name = functionName(node);
|
|
213
|
-
if (!alreadyLogsEntry(body, name)) {
|
|
214
|
-
const braceOffset = body.getStart(sf); // position of '{'
|
|
215
|
-
const headerLineStart = lineStartOffset(code, node.getStart(sf));
|
|
216
|
-
const indent = leadingIndent(code, headerLineStart);
|
|
217
|
-
const bodyIndent = indent + ' ';
|
|
218
|
-
const insertion = `\n${bodyIndent}console.log(${JSON.stringify(`${name} called`)});`;
|
|
219
|
-
edits.push({ start: braceOffset + 1, end: braceOffset + 1, replacement: insertion });
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
ts.forEachChild(node, visit);
|
|
223
|
-
};
|
|
224
|
-
visit(sf);
|
|
225
|
-
return edits;
|
|
226
|
-
}
|
|
227
|
-
// ============================================================================
|
|
228
|
-
// Public API
|
|
229
|
-
// ============================================================================
|
|
230
|
-
const TRANSFORMS = {
|
|
231
|
-
'var-to-const': varToConstEdits,
|
|
232
|
-
'remove-console': removeConsoleEdits,
|
|
233
|
-
'add-logging': addLoggingEdits,
|
|
234
|
-
};
|
|
235
|
-
/**
|
|
236
|
-
* Apply a deterministic codemod to a source string.
|
|
237
|
-
*
|
|
238
|
-
* Returns the transformed source plus metadata. Never throws on malformed input
|
|
239
|
-
* — it reports `success: false` with a reason instead. Guarantees the output
|
|
240
|
-
* does not introduce new parse errors (otherwise it returns the input unchanged).
|
|
241
|
-
*/
|
|
242
|
-
export function applyCodemod(intent, code, opts = {}) {
|
|
243
|
-
const language = opts.language ?? 'typescript';
|
|
244
|
-
if (!isDeterministicCodemod(intent)) {
|
|
245
|
-
return {
|
|
246
|
-
intent: intent,
|
|
247
|
-
success: false,
|
|
248
|
-
changed: false,
|
|
249
|
-
output: code,
|
|
250
|
-
edits: 0,
|
|
251
|
-
language,
|
|
252
|
-
reason: `"${intent}" is not a deterministic codemod — route it to a model (Tier 2/3).`,
|
|
253
|
-
};
|
|
254
|
-
}
|
|
255
|
-
let sf;
|
|
256
|
-
try {
|
|
257
|
-
sf = parse(code, language);
|
|
258
|
-
}
|
|
259
|
-
catch (err) {
|
|
260
|
-
return {
|
|
261
|
-
intent,
|
|
262
|
-
success: false,
|
|
263
|
-
changed: false,
|
|
264
|
-
output: code,
|
|
265
|
-
edits: 0,
|
|
266
|
-
language,
|
|
267
|
-
reason: `parse failed: ${err.message}`,
|
|
268
|
-
};
|
|
269
|
-
}
|
|
270
|
-
const beforeDiagnostics = parseDiagnosticCount(sf);
|
|
271
|
-
const edits = TRANSFORMS[intent](code, sf);
|
|
272
|
-
if (edits.length === 0) {
|
|
273
|
-
return { intent, success: true, changed: false, output: code, edits: 0, language };
|
|
274
|
-
}
|
|
275
|
-
const output = applyEdits(code, edits);
|
|
276
|
-
// Safety net: never hand back source that parses worse than the input.
|
|
277
|
-
const afterDiagnostics = parseDiagnosticCount(parse(output, language));
|
|
278
|
-
if (afterDiagnostics > beforeDiagnostics) {
|
|
279
|
-
return {
|
|
280
|
-
intent,
|
|
281
|
-
success: false,
|
|
282
|
-
changed: false,
|
|
283
|
-
output: code,
|
|
284
|
-
edits: 0,
|
|
285
|
-
language,
|
|
286
|
-
reason: 'transform would introduce parse errors — aborted (input returned unchanged).',
|
|
287
|
-
};
|
|
288
|
-
}
|
|
289
|
-
return { intent, success: true, changed: true, output, edits: edits.length, language };
|
|
290
|
-
}
|
|
291
|
-
//# sourceMappingURL=engine.js.map
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Scope-aware reassignment analysis for the `var-to-const` codemod (ADR-143).
|
|
3
|
-
*
|
|
4
|
-
* The naive version marks a `var` as reassigned if its name is assigned to
|
|
5
|
-
* *anywhere* in the file. That is correct but over-conservative: a `var x` in
|
|
6
|
-
* one function is forced to `let` just because an unrelated function also has
|
|
7
|
-
* an `x = …`. This module resolves each assignment to the binding it actually
|
|
8
|
-
* mutates (function-scope hoisting semantics), so a `var` becomes `const`
|
|
9
|
-
* unless *its own* binding is reassigned.
|
|
10
|
-
*
|
|
11
|
-
* Soundness: resolution only ever attributes a reassignment to a scope that
|
|
12
|
-
* actually hoists the name (i.e. genuinely declares that binding). It therefore
|
|
13
|
-
* never marks a truly-reassigned binding as un-reassigned — so a `var` is only
|
|
14
|
-
* promoted to `const` when it is provably never reassigned. Block-scoped
|
|
15
|
-
* shadowing (let/const) is ignored for resolution, which can only make us *more*
|
|
16
|
-
* conservative (fall back to `let`), never wrong.
|
|
17
|
-
*
|
|
18
|
-
* @module ruvector/codemods/scope-analysis
|
|
19
|
-
*/
|
|
20
|
-
import ts from 'typescript';
|
|
21
|
-
export interface ReassignmentResolver {
|
|
22
|
-
/** True if the `var` binding declared by `declarationList` (for `name`) is reassigned within its scope. */
|
|
23
|
-
isReassigned(name: string, declarationList: ts.VariableDeclarationList): boolean;
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Build a scope-aware resolver: which `var` bindings are actually reassigned.
|
|
27
|
-
*/
|
|
28
|
-
export declare function buildReassignmentResolver(sf: ts.SourceFile): ReassignmentResolver;
|
|
29
|
-
//# sourceMappingURL=scope-analysis.d.ts.map
|