@claude-flow/cli 3.32.2 → 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.manifest.json +3 -3
- package/.claude/helpers/statusline.cjs +38 -38
- package/catalog-manifest.json +2 -2
- package/package.json +2 -2
- package/plugins/ruflo-metaharness/scripts/smoke.sh +11 -11
- 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 -4606
- 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 -1012
- 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 -50
- package/dist/src/funnel/insights.js +0 -120
- package/dist/src/funnel/local-signals.d.ts +0 -20
- package/dist/src/funnel/local-signals.js +0 -77
- 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 -4836
- 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/security/builtin-aidefence.d.ts +0 -34
- package/dist/src/security/builtin-aidefence.js +0 -86
- 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 -208
- 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,208 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* fable-harness.ts — Cost-disciplined headless Fable LLM-as-judge harness.
|
|
3
|
-
*
|
|
4
|
-
* This is TIER 2 of the tiered `resolved` oracle (see distill-oracle.ts). When
|
|
5
|
-
* a trajectory has NO mechanical test spec to execute, we judge whether its
|
|
6
|
-
* completion actually resolved the task with a headless Fable model — a smarter
|
|
7
|
-
* proxy than the structural verifier, but still a proxy (provenance tag
|
|
8
|
-
* `judge:fable`, never presented as ground truth per ADR-169).
|
|
9
|
-
*
|
|
10
|
-
* ── MEASURED COST DATA (load-bearing — this file is built around it) ────────
|
|
11
|
-
* `claude -p --model claude-fable-5 --output-format json` costs, per call:
|
|
12
|
-
* • ~$1.56 when launched FROM THE PROJECT DIR — it auto-loads CLAUDE.md and
|
|
13
|
-
* ~56k cache tokens of project context we do NOT want for judging.
|
|
14
|
-
* • ~$0.34 from a CLEAN empty cwd with `--append-system-prompt` for the role.
|
|
15
|
-
* • ~$0.02/item when we BATCH ~20 items into a single call (context amortizes
|
|
16
|
-
* ~free across the batch).
|
|
17
|
-
*
|
|
18
|
-
* Therefore this harness MUST, and does:
|
|
19
|
-
* 1. run `claude -p` from a FRESH EMPTY TEMP cwd — never the project dir, so
|
|
20
|
-
* no CLAUDE.md / project context is loaded (the 5x cost driver);
|
|
21
|
-
* 2. carry the judge/reflect role via `--append-system-prompt`, not a project
|
|
22
|
-
* system prompt;
|
|
23
|
-
* 3. BATCH N items per call (default 20) so per-item cost collapses to ~$0.02;
|
|
24
|
-
* 4. pass `--max-budget-usd` as a hard per-call cap and stop launching batches
|
|
25
|
-
* once the cumulative measured spend reaches the caller's budget;
|
|
26
|
-
* 5. be OPT-IN and OFF BY DEFAULT — nothing here runs unless a caller
|
|
27
|
-
* explicitly constructs the harness AND provides a budget cap.
|
|
28
|
-
*
|
|
29
|
-
* SAFETY: constructing this class spends nothing. Only `judgeBatch` /
|
|
30
|
-
* `reflectFailures` spawn `claude`, and only when `maxBudgetUsd > 0`. The
|
|
31
|
-
* `spawnClaude` implementation is injectable so tests never touch the real CLI.
|
|
32
|
-
*
|
|
33
|
-
* @module services/fable-harness
|
|
34
|
-
*/
|
|
35
|
-
export declare const FABLE_COST_MODEL: {
|
|
36
|
-
/** Measured $/call when launched from the project dir (loads CLAUDE.md). Anti-pattern. */
|
|
37
|
-
readonly perCallProjectCwdUsd: 1.56;
|
|
38
|
-
/** Measured $/call from a clean cwd with --append-system-prompt. */
|
|
39
|
-
readonly perCallCleanCwdUsd: 0.34;
|
|
40
|
-
/** Measured amortized $/item when batching ~20 items per call. */
|
|
41
|
-
readonly perItemBatchedUsd: 0.02;
|
|
42
|
-
/** Default items per `claude -p` call. */
|
|
43
|
-
readonly defaultBatchSize: 20;
|
|
44
|
-
/** The judge model. */
|
|
45
|
-
readonly model: "claude-fable-5";
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* Estimate the USD cost of judging `itemCount` items in batches of `batchSize`.
|
|
49
|
-
* Uses the measured amortized per-item figure; callers use this to size a
|
|
50
|
-
* budget cap before opting in.
|
|
51
|
-
*/
|
|
52
|
-
export declare function estimateFableCostUsd(itemCount: number, batchSize?: number): number;
|
|
53
|
-
/** One item to judge: did `output` actually resolve `task`? */
|
|
54
|
-
export interface JudgeItem {
|
|
55
|
-
id: string;
|
|
56
|
-
task: string;
|
|
57
|
-
output: string;
|
|
58
|
-
}
|
|
59
|
-
/** Verdict for a single judged item. */
|
|
60
|
-
export interface JudgeResult {
|
|
61
|
-
id: string;
|
|
62
|
-
resolved: boolean;
|
|
63
|
-
/** 0..1 self-reported judge confidence. */
|
|
64
|
-
confidence: number;
|
|
65
|
-
reason: string;
|
|
66
|
-
}
|
|
67
|
-
/** One item for reflective failure analysis (GEPA/evolve mutation input). */
|
|
68
|
-
export interface ReflectItem {
|
|
69
|
-
id: string;
|
|
70
|
-
task: string;
|
|
71
|
-
output: string;
|
|
72
|
-
/** Optional signal that this trajectory is believed to have failed. */
|
|
73
|
-
failureHint?: string;
|
|
74
|
-
}
|
|
75
|
-
/** Reflective diagnosis for a single item (the reflective-mutation SOTA trick). */
|
|
76
|
-
export interface ReflectResult {
|
|
77
|
-
id: string;
|
|
78
|
-
failureClass: string;
|
|
79
|
-
diagnosis: string;
|
|
80
|
-
mutationHint: string;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* ADR-316 — a compact, STRUCTURAL-ONLY snapshot of the current coding
|
|
84
|
-
* session for the statusline's co-pilot advisor tip. Every field here
|
|
85
|
-
* mirrors funnel/insights.ts's LocalInsightContext — no raw prompt/command/
|
|
86
|
-
* file content, ever (same bar as ADR-309, applied to a different, opt-in
|
|
87
|
-
* data flow). The model sees only what's already surfaced structurally
|
|
88
|
-
* elsewhere in the statusline.
|
|
89
|
-
*/
|
|
90
|
-
export interface CoPilotSnapshot {
|
|
91
|
-
security?: {
|
|
92
|
-
status: string;
|
|
93
|
-
findings?: number;
|
|
94
|
-
cvesFixed: number;
|
|
95
|
-
totalCves: number;
|
|
96
|
-
};
|
|
97
|
-
swarm?: {
|
|
98
|
-
activeAgents: number;
|
|
99
|
-
maxAgents: number;
|
|
100
|
-
coordinationActive: boolean;
|
|
101
|
-
};
|
|
102
|
-
gitUncommittedCount?: number;
|
|
103
|
-
contextPctUsed?: number;
|
|
104
|
-
}
|
|
105
|
-
/** A single proactive suggestion for the insight ticker. */
|
|
106
|
-
export interface CoPilotTip {
|
|
107
|
-
/** Short enough for a single statusline row (caller truncates further). */
|
|
108
|
-
headline: string;
|
|
109
|
-
/** One actionable sentence of extra detail. */
|
|
110
|
-
detail: string;
|
|
111
|
-
confidence: number;
|
|
112
|
-
}
|
|
113
|
-
/** Result of a raw claude spawn. */
|
|
114
|
-
export interface ClaudeSpawnResult {
|
|
115
|
-
stdout: string;
|
|
116
|
-
stderr: string;
|
|
117
|
-
code: number | null;
|
|
118
|
-
/** Measured spend for this call, parsed from the JSON envelope when present. */
|
|
119
|
-
costUsd?: number;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Injectable spawner. Receives the argv (after `claude`), the prompt to pipe to
|
|
123
|
-
* stdin, and the cwd (a fresh empty temp dir). Default implementation shells out
|
|
124
|
-
* to the real `claude` CLI; tests inject a fake.
|
|
125
|
-
*/
|
|
126
|
-
export type ClaudeSpawnFn = (argv: string[], stdinPrompt: string, cwd: string, opts: {
|
|
127
|
-
timeoutMs: number;
|
|
128
|
-
}) => Promise<ClaudeSpawnResult>;
|
|
129
|
-
export interface FableHarnessOptions {
|
|
130
|
-
/** Model id (default claude-fable-5). */
|
|
131
|
-
model?: string;
|
|
132
|
-
/** Items per `claude -p` call (default 20). */
|
|
133
|
-
batchSize?: number;
|
|
134
|
-
/**
|
|
135
|
-
* Hard budget cap in USD across all calls this harness makes. REQUIRED to be
|
|
136
|
-
* > 0 for any spend to happen — 0/undefined means the harness refuses to
|
|
137
|
-
* spawn (safe default).
|
|
138
|
-
*/
|
|
139
|
-
maxBudgetUsd?: number;
|
|
140
|
-
/** Per-call timeout (default 5 min). */
|
|
141
|
-
timeoutMs?: number;
|
|
142
|
-
/** Injected spawner for tests; defaults to the real `claude` CLI. */
|
|
143
|
-
spawnClaude?: ClaudeSpawnFn;
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Default `claude -p` spawner. Pipes the prompt via stdin (never as an argv
|
|
147
|
-
* positional — mirrors the #1852 fix so shell metachars in prompts are never
|
|
148
|
-
* re-tokenized), runs in the provided (temp) cwd, and returns stdout/stderr.
|
|
149
|
-
* Parses `total_cost_usd` from the `--output-format json` envelope when present.
|
|
150
|
-
*/
|
|
151
|
-
export declare const defaultSpawnClaude: ClaudeSpawnFn;
|
|
152
|
-
/** Pull `total_cost_usd`/`cost_usd` out of a claude `--output-format json` envelope. */
|
|
153
|
-
export declare function parseCostFromEnvelope(stdout: string): number | undefined;
|
|
154
|
-
export declare class FableHarness {
|
|
155
|
-
private readonly model;
|
|
156
|
-
private readonly batchSize;
|
|
157
|
-
private readonly maxBudgetUsd;
|
|
158
|
-
private readonly timeoutMs;
|
|
159
|
-
private readonly spawnClaude;
|
|
160
|
-
private spentUsd;
|
|
161
|
-
constructor(opts?: FableHarnessOptions);
|
|
162
|
-
/** Cumulative measured spend across all calls this harness has made. */
|
|
163
|
-
getSpentUsd(): number;
|
|
164
|
-
/** True when a positive budget cap is configured (a precondition for any spend). */
|
|
165
|
-
isEnabled(): boolean;
|
|
166
|
-
/**
|
|
167
|
-
* Judge a set of items in batches. Returns one JudgeResult per input id that
|
|
168
|
-
* the model returned. Items that fall outside the budget, or that the model
|
|
169
|
-
* omits, are simply absent from the result — the caller (distill-oracle) is
|
|
170
|
-
* responsible for falling back to the structural proxy for those.
|
|
171
|
-
*
|
|
172
|
-
* Spends $0 and returns [] when no budget cap is configured.
|
|
173
|
-
*/
|
|
174
|
-
judgeBatch(items: JudgeItem[]): Promise<JudgeResult[]>;
|
|
175
|
-
/**
|
|
176
|
-
* Reflective failure analysis over items — the second cost-disciplined entry
|
|
177
|
-
* point, used by GEPA/evolve for mutation hints. Same batching + budget
|
|
178
|
-
* discipline as judgeBatch. Returns [] when no budget cap is configured.
|
|
179
|
-
*/
|
|
180
|
-
reflectFailures(items: ReflectItem[]): Promise<ReflectResult[]>;
|
|
181
|
-
/**
|
|
182
|
-
* ADR-316 — one proactive co-pilot tip from a structural session snapshot
|
|
183
|
-
* (no raw prompt/command/file content). A single-item "batch" — same
|
|
184
|
-
* budget/cwd/parsing discipline as judgeBatch/reflectFailures, just with
|
|
185
|
-
* exactly one call instead of a loop. Returns null when disabled, over
|
|
186
|
-
* budget, or the model found nothing worth surfacing (an empty verdict
|
|
187
|
-
* array is a valid, non-error answer here, not a parse failure).
|
|
188
|
-
*/
|
|
189
|
-
adviseCoPilotTip(snapshot: CoPilotSnapshot): Promise<CoPilotTip | null>;
|
|
190
|
-
/** Build the argv for a `claude -p` call. Exposed shape for testability. */
|
|
191
|
-
buildArgv(systemPrompt: string): string[];
|
|
192
|
-
/**
|
|
193
|
-
* Run one batch: create a FRESH EMPTY temp cwd (critical — no project
|
|
194
|
-
* context), spawn `claude -p` there with the role via --append-system-prompt,
|
|
195
|
-
* pipe the batch JSON to stdin, parse the verdict array out of the envelope,
|
|
196
|
-
* and account the measured spend.
|
|
197
|
-
*/
|
|
198
|
-
private runBatch;
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Extract the model's verdict array. `claude -p --output-format json` wraps the
|
|
202
|
-
* assistant text in an envelope `{ result: "<text>", ... }`; the text is itself
|
|
203
|
-
* the JSON array we asked for. Handle both the enveloped and bare forms, and
|
|
204
|
-
* arrays fenced in ```json blocks.
|
|
205
|
-
*/
|
|
206
|
-
export declare function extractVerdictArray(stdout: string): unknown[];
|
|
207
|
-
export default FableHarness;
|
|
208
|
-
//# sourceMappingURL=fable-harness.d.ts.map
|
|
@@ -1,388 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* fable-harness.ts — Cost-disciplined headless Fable LLM-as-judge harness.
|
|
3
|
-
*
|
|
4
|
-
* This is TIER 2 of the tiered `resolved` oracle (see distill-oracle.ts). When
|
|
5
|
-
* a trajectory has NO mechanical test spec to execute, we judge whether its
|
|
6
|
-
* completion actually resolved the task with a headless Fable model — a smarter
|
|
7
|
-
* proxy than the structural verifier, but still a proxy (provenance tag
|
|
8
|
-
* `judge:fable`, never presented as ground truth per ADR-169).
|
|
9
|
-
*
|
|
10
|
-
* ── MEASURED COST DATA (load-bearing — this file is built around it) ────────
|
|
11
|
-
* `claude -p --model claude-fable-5 --output-format json` costs, per call:
|
|
12
|
-
* • ~$1.56 when launched FROM THE PROJECT DIR — it auto-loads CLAUDE.md and
|
|
13
|
-
* ~56k cache tokens of project context we do NOT want for judging.
|
|
14
|
-
* • ~$0.34 from a CLEAN empty cwd with `--append-system-prompt` for the role.
|
|
15
|
-
* • ~$0.02/item when we BATCH ~20 items into a single call (context amortizes
|
|
16
|
-
* ~free across the batch).
|
|
17
|
-
*
|
|
18
|
-
* Therefore this harness MUST, and does:
|
|
19
|
-
* 1. run `claude -p` from a FRESH EMPTY TEMP cwd — never the project dir, so
|
|
20
|
-
* no CLAUDE.md / project context is loaded (the 5x cost driver);
|
|
21
|
-
* 2. carry the judge/reflect role via `--append-system-prompt`, not a project
|
|
22
|
-
* system prompt;
|
|
23
|
-
* 3. BATCH N items per call (default 20) so per-item cost collapses to ~$0.02;
|
|
24
|
-
* 4. pass `--max-budget-usd` as a hard per-call cap and stop launching batches
|
|
25
|
-
* once the cumulative measured spend reaches the caller's budget;
|
|
26
|
-
* 5. be OPT-IN and OFF BY DEFAULT — nothing here runs unless a caller
|
|
27
|
-
* explicitly constructs the harness AND provides a budget cap.
|
|
28
|
-
*
|
|
29
|
-
* SAFETY: constructing this class spends nothing. Only `judgeBatch` /
|
|
30
|
-
* `reflectFailures` spawn `claude`, and only when `maxBudgetUsd > 0`. The
|
|
31
|
-
* `spawnClaude` implementation is injectable so tests never touch the real CLI.
|
|
32
|
-
*
|
|
33
|
-
* @module services/fable-harness
|
|
34
|
-
*/
|
|
35
|
-
import { spawn } from 'child_process';
|
|
36
|
-
import { mkdtemp, rm } from 'fs/promises';
|
|
37
|
-
import { tmpdir } from 'os';
|
|
38
|
-
import { join } from 'path';
|
|
39
|
-
// ── Cost model (measured — exported so callers/docs share one source) ────────
|
|
40
|
-
export const FABLE_COST_MODEL = {
|
|
41
|
-
/** Measured $/call when launched from the project dir (loads CLAUDE.md). Anti-pattern. */
|
|
42
|
-
perCallProjectCwdUsd: 1.56,
|
|
43
|
-
/** Measured $/call from a clean cwd with --append-system-prompt. */
|
|
44
|
-
perCallCleanCwdUsd: 0.34,
|
|
45
|
-
/** Measured amortized $/item when batching ~20 items per call. */
|
|
46
|
-
perItemBatchedUsd: 0.02,
|
|
47
|
-
/** Default items per `claude -p` call. */
|
|
48
|
-
defaultBatchSize: 20,
|
|
49
|
-
/** The judge model. */
|
|
50
|
-
model: 'claude-fable-5',
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Estimate the USD cost of judging `itemCount` items in batches of `batchSize`.
|
|
54
|
-
* Uses the measured amortized per-item figure; callers use this to size a
|
|
55
|
-
* budget cap before opting in.
|
|
56
|
-
*/
|
|
57
|
-
export function estimateFableCostUsd(itemCount, batchSize = FABLE_COST_MODEL.defaultBatchSize) {
|
|
58
|
-
if (itemCount <= 0)
|
|
59
|
-
return 0;
|
|
60
|
-
const batches = Math.ceil(itemCount / Math.max(1, batchSize));
|
|
61
|
-
// Amortized per-item dominates; add a tiny floor per batch for the base call.
|
|
62
|
-
const perItem = itemCount * FABLE_COST_MODEL.perItemBatchedUsd;
|
|
63
|
-
const perBatchFloor = batches * 0.0; // per-item figure already includes base amortization
|
|
64
|
-
return Number((perItem + perBatchFloor).toFixed(4));
|
|
65
|
-
}
|
|
66
|
-
// ── Prompt templates (carried via --append-system-prompt) ────────────────────
|
|
67
|
-
const JUDGE_SYSTEM_PROMPT = [
|
|
68
|
-
'You are a strict evaluator judging whether an agent trajectory RESOLVED its task.',
|
|
69
|
-
'You receive a JSON array of items: [{id, task, output}].',
|
|
70
|
-
'For each item decide if `output` genuinely and correctly resolves `task`.',
|
|
71
|
-
'Be conservative: plausible-but-unverified or partial completions are NOT resolved.',
|
|
72
|
-
'Reply with ONLY a JSON array, one object per input id, no prose:',
|
|
73
|
-
'[{"id": "...", "resolved": true|false, "confidence": 0.0-1.0, "reason": "<one sentence>"}]',
|
|
74
|
-
].join('\n');
|
|
75
|
-
const REFLECT_SYSTEM_PROMPT = [
|
|
76
|
-
'You are a failure-analysis expert supporting reflective mutation (GEPA/evolve).',
|
|
77
|
-
'You receive a JSON array of items: [{id, task, output, failureHint?}].',
|
|
78
|
-
'For each item, classify the failure and propose a concrete mutation hint.',
|
|
79
|
-
'Reply with ONLY a JSON array, one object per input id, no prose:',
|
|
80
|
-
'[{"id":"...","failureClass":"<short label>","diagnosis":"<one sentence>","mutationHint":"<actionable>"}]',
|
|
81
|
-
].join('\n');
|
|
82
|
-
const ADVISOR_SYSTEM_PROMPT = [
|
|
83
|
-
"You are RuFlo's co-pilot advisor: ONE short, proactive, actionable tip for",
|
|
84
|
-
'a developer, based on a single JSON object describing STRUCTURAL signals',
|
|
85
|
-
'from their current coding session (security scan status, swarm/agent',
|
|
86
|
-
'state, count of uncommitted files, context-window usage). There is no',
|
|
87
|
-
'prompt, command, or file content in the input — never assume or invent any.',
|
|
88
|
-
'If nothing in the snapshot genuinely warrants a tip, say so by returning',
|
|
89
|
-
'an empty array. Never pad with generic advice not grounded in the snapshot.',
|
|
90
|
-
'Reply with ONLY a JSON array containing zero or one object, no prose:',
|
|
91
|
-
'[] or [{"headline":"<=60 chars","detail":"<one actionable sentence>","confidence":0.0-1.0}]',
|
|
92
|
-
].join('\n');
|
|
93
|
-
// ── Default spawner (real CLI) ───────────────────────────────────────────────
|
|
94
|
-
/**
|
|
95
|
-
* Default `claude -p` spawner. Pipes the prompt via stdin (never as an argv
|
|
96
|
-
* positional — mirrors the #1852 fix so shell metachars in prompts are never
|
|
97
|
-
* re-tokenized), runs in the provided (temp) cwd, and returns stdout/stderr.
|
|
98
|
-
* Parses `total_cost_usd` from the `--output-format json` envelope when present.
|
|
99
|
-
*/
|
|
100
|
-
export const defaultSpawnClaude = (argv, stdinPrompt, cwd, opts) => new Promise((resolve) => {
|
|
101
|
-
let child;
|
|
102
|
-
try {
|
|
103
|
-
child = spawn('claude', argv, {
|
|
104
|
-
cwd,
|
|
105
|
-
env: { ...process.env, CLAUDE_ENTRYPOINT: 'fable-judge' },
|
|
106
|
-
stdio: ['pipe', 'pipe', 'pipe'],
|
|
107
|
-
windowsHide: true,
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
catch (err) {
|
|
111
|
-
resolve({ stdout: '', stderr: err instanceof Error ? err.message : String(err), code: null });
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
let stdout = '';
|
|
115
|
-
let stderr = '';
|
|
116
|
-
let done = false;
|
|
117
|
-
const finish = (r) => {
|
|
118
|
-
if (done)
|
|
119
|
-
return;
|
|
120
|
-
done = true;
|
|
121
|
-
clearTimeout(timer);
|
|
122
|
-
resolve(r);
|
|
123
|
-
};
|
|
124
|
-
const timer = setTimeout(() => {
|
|
125
|
-
try {
|
|
126
|
-
child.kill('SIGTERM');
|
|
127
|
-
}
|
|
128
|
-
catch { /* already dead */ }
|
|
129
|
-
finish({ stdout, stderr: stderr || `timed out after ${opts.timeoutMs}ms`, code: null });
|
|
130
|
-
}, opts.timeoutMs);
|
|
131
|
-
timer.unref?.();
|
|
132
|
-
try {
|
|
133
|
-
child.stdin?.end(stdinPrompt);
|
|
134
|
-
}
|
|
135
|
-
catch { /* surfaced via error */ }
|
|
136
|
-
child.stdout?.on('data', (d) => { stdout += d.toString(); });
|
|
137
|
-
child.stderr?.on('data', (d) => { stderr += d.toString(); });
|
|
138
|
-
child.on('error', (e) => finish({ stdout, stderr: e.message, code: null }));
|
|
139
|
-
child.on('close', (code) => {
|
|
140
|
-
finish({ stdout, stderr, code, costUsd: parseCostFromEnvelope(stdout) });
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
/** Pull `total_cost_usd`/`cost_usd` out of a claude `--output-format json` envelope. */
|
|
144
|
-
export function parseCostFromEnvelope(stdout) {
|
|
145
|
-
const env = tryParseJson(stdout);
|
|
146
|
-
if (env && typeof env === 'object') {
|
|
147
|
-
const o = env;
|
|
148
|
-
for (const k of ['total_cost_usd', 'cost_usd', 'costUsd']) {
|
|
149
|
-
if (typeof o[k] === 'number')
|
|
150
|
-
return o[k];
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return undefined;
|
|
154
|
-
}
|
|
155
|
-
// ── Harness ──────────────────────────────────────────────────────────────
|
|
156
|
-
export class FableHarness {
|
|
157
|
-
model;
|
|
158
|
-
batchSize;
|
|
159
|
-
maxBudgetUsd;
|
|
160
|
-
timeoutMs;
|
|
161
|
-
spawnClaude;
|
|
162
|
-
spentUsd = 0;
|
|
163
|
-
constructor(opts = {}) {
|
|
164
|
-
this.model = opts.model ?? FABLE_COST_MODEL.model;
|
|
165
|
-
this.batchSize = Math.max(1, opts.batchSize ?? FABLE_COST_MODEL.defaultBatchSize);
|
|
166
|
-
this.maxBudgetUsd = opts.maxBudgetUsd ?? 0;
|
|
167
|
-
this.timeoutMs = opts.timeoutMs ?? 5 * 60 * 1000;
|
|
168
|
-
this.spawnClaude = opts.spawnClaude ?? defaultSpawnClaude;
|
|
169
|
-
}
|
|
170
|
-
/** Cumulative measured spend across all calls this harness has made. */
|
|
171
|
-
getSpentUsd() {
|
|
172
|
-
return Number(this.spentUsd.toFixed(4));
|
|
173
|
-
}
|
|
174
|
-
/** True when a positive budget cap is configured (a precondition for any spend). */
|
|
175
|
-
isEnabled() {
|
|
176
|
-
return this.maxBudgetUsd > 0;
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Judge a set of items in batches. Returns one JudgeResult per input id that
|
|
180
|
-
* the model returned. Items that fall outside the budget, or that the model
|
|
181
|
-
* omits, are simply absent from the result — the caller (distill-oracle) is
|
|
182
|
-
* responsible for falling back to the structural proxy for those.
|
|
183
|
-
*
|
|
184
|
-
* Spends $0 and returns [] when no budget cap is configured.
|
|
185
|
-
*/
|
|
186
|
-
async judgeBatch(items) {
|
|
187
|
-
if (items.length === 0)
|
|
188
|
-
return [];
|
|
189
|
-
if (!this.isEnabled())
|
|
190
|
-
return [];
|
|
191
|
-
const out = [];
|
|
192
|
-
for (const batch of chunk(items, this.batchSize)) {
|
|
193
|
-
if (this.spentUsd >= this.maxBudgetUsd)
|
|
194
|
-
break;
|
|
195
|
-
const parsed = await this.runBatch(JUDGE_SYSTEM_PROMPT, batch);
|
|
196
|
-
for (const raw of parsed) {
|
|
197
|
-
const r = normalizeJudge(raw);
|
|
198
|
-
if (r)
|
|
199
|
-
out.push(r);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
return out;
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Reflective failure analysis over items — the second cost-disciplined entry
|
|
206
|
-
* point, used by GEPA/evolve for mutation hints. Same batching + budget
|
|
207
|
-
* discipline as judgeBatch. Returns [] when no budget cap is configured.
|
|
208
|
-
*/
|
|
209
|
-
async reflectFailures(items) {
|
|
210
|
-
if (items.length === 0)
|
|
211
|
-
return [];
|
|
212
|
-
if (!this.isEnabled())
|
|
213
|
-
return [];
|
|
214
|
-
const out = [];
|
|
215
|
-
for (const batch of chunk(items, this.batchSize)) {
|
|
216
|
-
if (this.spentUsd >= this.maxBudgetUsd)
|
|
217
|
-
break;
|
|
218
|
-
const parsed = await this.runBatch(REFLECT_SYSTEM_PROMPT, batch);
|
|
219
|
-
for (const raw of parsed) {
|
|
220
|
-
const r = normalizeReflect(raw);
|
|
221
|
-
if (r)
|
|
222
|
-
out.push(r);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
return out;
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* ADR-316 — one proactive co-pilot tip from a structural session snapshot
|
|
229
|
-
* (no raw prompt/command/file content). A single-item "batch" — same
|
|
230
|
-
* budget/cwd/parsing discipline as judgeBatch/reflectFailures, just with
|
|
231
|
-
* exactly one call instead of a loop. Returns null when disabled, over
|
|
232
|
-
* budget, or the model found nothing worth surfacing (an empty verdict
|
|
233
|
-
* array is a valid, non-error answer here, not a parse failure).
|
|
234
|
-
*/
|
|
235
|
-
async adviseCoPilotTip(snapshot) {
|
|
236
|
-
if (!this.isEnabled())
|
|
237
|
-
return null;
|
|
238
|
-
if (this.spentUsd >= this.maxBudgetUsd)
|
|
239
|
-
return null;
|
|
240
|
-
const parsed = await this.runBatch(ADVISOR_SYSTEM_PROMPT, [snapshot]);
|
|
241
|
-
if (parsed.length === 0)
|
|
242
|
-
return null;
|
|
243
|
-
return normalizeCoPilotTip(parsed[0]);
|
|
244
|
-
}
|
|
245
|
-
/** Build the argv for a `claude -p` call. Exposed shape for testability. */
|
|
246
|
-
buildArgv(systemPrompt) {
|
|
247
|
-
const perCallCap = Math.max(0, this.maxBudgetUsd - this.spentUsd);
|
|
248
|
-
return [
|
|
249
|
-
'-p',
|
|
250
|
-
'--model', this.model,
|
|
251
|
-
'--output-format', 'json',
|
|
252
|
-
'--append-system-prompt', systemPrompt,
|
|
253
|
-
'--max-budget-usd', String(round(perCallCap)),
|
|
254
|
-
];
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* Run one batch: create a FRESH EMPTY temp cwd (critical — no project
|
|
258
|
-
* context), spawn `claude -p` there with the role via --append-system-prompt,
|
|
259
|
-
* pipe the batch JSON to stdin, parse the verdict array out of the envelope,
|
|
260
|
-
* and account the measured spend.
|
|
261
|
-
*/
|
|
262
|
-
async runBatch(systemPrompt, batch) {
|
|
263
|
-
const argv = this.buildArgv(systemPrompt);
|
|
264
|
-
const stdinPrompt = JSON.stringify(batch);
|
|
265
|
-
const cwd = await mkdtemp(join(tmpdir(), 'ruflo-fable-'));
|
|
266
|
-
try {
|
|
267
|
-
const res = await this.spawnClaude(argv, stdinPrompt, cwd, { timeoutMs: this.timeoutMs });
|
|
268
|
-
// Account spend: prefer measured envelope cost, else the amortized estimate.
|
|
269
|
-
this.spentUsd += typeof res.costUsd === 'number'
|
|
270
|
-
? res.costUsd
|
|
271
|
-
: estimateFableCostUsd(batch.length, this.batchSize);
|
|
272
|
-
if (res.code !== 0 && !res.stdout)
|
|
273
|
-
return [];
|
|
274
|
-
return extractVerdictArray(res.stdout);
|
|
275
|
-
}
|
|
276
|
-
finally {
|
|
277
|
-
await rm(cwd, { recursive: true, force: true }).catch(() => { });
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
// ── Parsing helpers ──────────────────────────────────────────────────────
|
|
282
|
-
/**
|
|
283
|
-
* Extract the model's verdict array. `claude -p --output-format json` wraps the
|
|
284
|
-
* assistant text in an envelope `{ result: "<text>", ... }`; the text is itself
|
|
285
|
-
* the JSON array we asked for. Handle both the enveloped and bare forms, and
|
|
286
|
-
* arrays fenced in ```json blocks.
|
|
287
|
-
*/
|
|
288
|
-
export function extractVerdictArray(stdout) {
|
|
289
|
-
const trimmed = (stdout ?? '').trim();
|
|
290
|
-
if (!trimmed)
|
|
291
|
-
return [];
|
|
292
|
-
// 1. Enveloped: parse envelope, then its `result` field.
|
|
293
|
-
const env = tryParseJson(trimmed);
|
|
294
|
-
if (env && typeof env === 'object' && !Array.isArray(env)) {
|
|
295
|
-
const result = env.result;
|
|
296
|
-
if (typeof result === 'string') {
|
|
297
|
-
const inner = findJsonArray(result);
|
|
298
|
-
if (inner)
|
|
299
|
-
return inner;
|
|
300
|
-
}
|
|
301
|
-
// Some envelopes embed the array directly.
|
|
302
|
-
const direct = env.results;
|
|
303
|
-
if (Array.isArray(direct))
|
|
304
|
-
return direct;
|
|
305
|
-
}
|
|
306
|
-
if (Array.isArray(env))
|
|
307
|
-
return env;
|
|
308
|
-
// 2. Bare text: find a JSON array anywhere in stdout.
|
|
309
|
-
const arr = findJsonArray(trimmed);
|
|
310
|
-
return arr ?? [];
|
|
311
|
-
}
|
|
312
|
-
function findJsonArray(text) {
|
|
313
|
-
const fenced = text.match(/```(?:json)?\s*(\[[\s\S]*?\])\s*```/);
|
|
314
|
-
if (fenced) {
|
|
315
|
-
const v = tryParseJson(fenced[1]);
|
|
316
|
-
if (Array.isArray(v))
|
|
317
|
-
return v;
|
|
318
|
-
}
|
|
319
|
-
const bare = text.match(/\[[\s\S]*\]/);
|
|
320
|
-
if (bare) {
|
|
321
|
-
const v = tryParseJson(bare[0]);
|
|
322
|
-
if (Array.isArray(v))
|
|
323
|
-
return v;
|
|
324
|
-
}
|
|
325
|
-
return null;
|
|
326
|
-
}
|
|
327
|
-
function normalizeJudge(raw) {
|
|
328
|
-
if (!raw || typeof raw !== 'object')
|
|
329
|
-
return null;
|
|
330
|
-
const o = raw;
|
|
331
|
-
if (typeof o.id !== 'string')
|
|
332
|
-
return null;
|
|
333
|
-
return {
|
|
334
|
-
id: o.id,
|
|
335
|
-
resolved: o.resolved === true || o.resolved === 'true',
|
|
336
|
-
confidence: clamp01(typeof o.confidence === 'number' ? o.confidence : Number(o.confidence)),
|
|
337
|
-
reason: typeof o.reason === 'string' ? o.reason : '',
|
|
338
|
-
};
|
|
339
|
-
}
|
|
340
|
-
function normalizeReflect(raw) {
|
|
341
|
-
if (!raw || typeof raw !== 'object')
|
|
342
|
-
return null;
|
|
343
|
-
const o = raw;
|
|
344
|
-
if (typeof o.id !== 'string')
|
|
345
|
-
return null;
|
|
346
|
-
return {
|
|
347
|
-
id: o.id,
|
|
348
|
-
failureClass: typeof o.failureClass === 'string' ? o.failureClass : 'unknown',
|
|
349
|
-
diagnosis: typeof o.diagnosis === 'string' ? o.diagnosis : '',
|
|
350
|
-
mutationHint: typeof o.mutationHint === 'string' ? o.mutationHint : '',
|
|
351
|
-
};
|
|
352
|
-
}
|
|
353
|
-
function normalizeCoPilotTip(raw) {
|
|
354
|
-
if (!raw || typeof raw !== 'object')
|
|
355
|
-
return null;
|
|
356
|
-
const o = raw;
|
|
357
|
-
if (typeof o.headline !== 'string' || !o.headline.trim())
|
|
358
|
-
return null;
|
|
359
|
-
return {
|
|
360
|
-
headline: o.headline.slice(0, 80),
|
|
361
|
-
detail: typeof o.detail === 'string' ? o.detail.slice(0, 200) : '',
|
|
362
|
-
confidence: clamp01(typeof o.confidence === 'number' ? o.confidence : Number(o.confidence)),
|
|
363
|
-
};
|
|
364
|
-
}
|
|
365
|
-
function tryParseJson(s) {
|
|
366
|
-
try {
|
|
367
|
-
return JSON.parse(s);
|
|
368
|
-
}
|
|
369
|
-
catch {
|
|
370
|
-
return undefined;
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
function chunk(arr, size) {
|
|
374
|
-
const out = [];
|
|
375
|
-
for (let i = 0; i < arr.length; i += size)
|
|
376
|
-
out.push(arr.slice(i, i + size));
|
|
377
|
-
return out;
|
|
378
|
-
}
|
|
379
|
-
function clamp01(n) {
|
|
380
|
-
if (!Number.isFinite(n))
|
|
381
|
-
return 0;
|
|
382
|
-
return Math.max(0, Math.min(1, n));
|
|
383
|
-
}
|
|
384
|
-
function round(n) {
|
|
385
|
-
return Math.round(n * 100) / 100;
|
|
386
|
-
}
|
|
387
|
-
export default FableHarness;
|
|
388
|
-
//# sourceMappingURL=fable-harness.js.map
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* #2661 — Git workspace identity: separate WORKTREE identity from
|
|
3
|
-
* REPOSITORY identity.
|
|
4
|
-
*
|
|
5
|
-
* Daemon dedup, state, and scheduling have historically been keyed on the
|
|
6
|
-
* worktree path (`process.cwd()`), so N Git worktrees of the same repository
|
|
7
|
-
* behave as N unrelated projects — the cardinality bug behind the worktree
|
|
8
|
-
* daemon fanout. This service resolves the identity that is SHARED across
|
|
9
|
-
* worktrees:
|
|
10
|
-
*
|
|
11
|
-
* worktreeRoot `git rev-parse --show-toplevel` — per-worktree
|
|
12
|
-
* commonGitDir `git rev-parse --git-common-dir` — shared by all worktrees
|
|
13
|
-
* repositoryId sha256(canonical commonGitDir) — stable repo key
|
|
14
|
-
* head `git rev-parse HEAD` — current commit
|
|
15
|
-
*
|
|
16
|
-
* Two worktrees of one repository resolve to the SAME repositoryId (and,
|
|
17
|
-
* when checked out at the same commit, the same head) — the key ingredient
|
|
18
|
-
* for cross-worktree job dedup (issue invariant 5).
|
|
19
|
-
*
|
|
20
|
-
* Non-git directories degrade gracefully: repositoryId falls back to a hash
|
|
21
|
-
* of the resolved directory path (prefixed `dir:`-style via isGit=false), so
|
|
22
|
-
* callers never need a special case.
|
|
23
|
-
*/
|
|
24
|
-
export interface GitWorkspaceIdentity {
|
|
25
|
-
/** Absolute root of this worktree (or the input dir when not a git repo). */
|
|
26
|
-
worktreeRoot: string;
|
|
27
|
-
/** Absolute path of the shared .git directory (equals worktreeRoot/.git for non-worktree clones). */
|
|
28
|
-
commonGitDir: string;
|
|
29
|
-
/** Stable id shared by ALL worktrees of one repository. */
|
|
30
|
-
repositoryId: string;
|
|
31
|
-
/** Current HEAD commit sha ('' when not a git repo or unborn HEAD). */
|
|
32
|
-
head: string;
|
|
33
|
-
/** False when the directory is not inside a git repository. */
|
|
34
|
-
isGit: boolean;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Resolve the git workspace identity for a directory. Never throws.
|
|
38
|
-
*/
|
|
39
|
-
export declare function resolveGitWorkspaceIdentity(dir: string): GitWorkspaceIdentity;
|
|
40
|
-
/** Test hook: clear the per-process identity cache. */
|
|
41
|
-
export declare function resetGitIdentityCacheForTests(): void;
|
|
42
|
-
//# sourceMappingURL=git-workspace-identity.d.ts.map
|