@aiwg/cli 0.0.0-bootstrap.0 → 2026.7.17
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/README.md +21 -1
- package/bin/aiwg.mjs +349 -0
- package/dist/src/a2a/agent-card.js +145 -0
- package/dist/src/a2a/client.js +411 -0
- package/dist/src/a2a/hitl-cli.js +171 -0
- package/dist/src/a2a/hitl-driver.js +370 -0
- package/dist/src/a2a/hitl.js +181 -0
- package/dist/src/a2a/http.js +193 -0
- package/dist/src/a2a/jcs.js +128 -0
- package/dist/src/a2a/jws.js +187 -0
- package/dist/src/a2a/types.js +24 -0
- package/dist/src/a2a/webhook.js +240 -0
- package/dist/src/activity-log/cli.js +348 -0
- package/dist/src/activity-log/parser.js +81 -0
- package/dist/src/activity-log/types.js +50 -0
- package/dist/src/agents/agent-deployer.js +367 -0
- package/dist/src/agents/agent-packager.js +271 -0
- package/dist/src/agents/agent-validator.js +271 -0
- package/dist/src/agents/grounding/knowledge-base.js +161 -0
- package/dist/src/agents/grounding/types.js +12 -0
- package/dist/src/agents/index.js +10 -0
- package/dist/src/agents/packaged-agent-inventory.js +75 -0
- package/dist/src/agents/types.js +7 -0
- package/dist/src/api/index.d.ts +10 -0
- package/dist/src/api/index.js +10 -0
- package/dist/src/artifacts/address-parser.js +73 -0
- package/dist/src/artifacts/audit/cli.js +183 -0
- package/dist/src/artifacts/audit/drift.js +122 -0
- package/dist/src/artifacts/audit/types.js +12 -0
- package/dist/src/artifacts/backends/graphology-backend.js +160 -0
- package/dist/src/artifacts/backends/json-backend.js +129 -0
- package/dist/src/artifacts/backends/sqlite-backend.js +199 -0
- package/dist/src/artifacts/browser-export.js +622 -0
- package/dist/src/artifacts/capability-resolver.js +94 -0
- package/dist/src/artifacts/checksum-manifest.js +91 -0
- package/dist/src/artifacts/citation-parser.js +162 -0
- package/dist/src/artifacts/cli.js +1462 -0
- package/dist/src/artifacts/corpus-tools/citation-densify.js +311 -0
- package/dist/src/artifacts/corpus-tools/cli.js +393 -0
- package/dist/src/artifacts/corpus-tools/corpus-graph.js +225 -0
- package/dist/src/artifacts/corpus-tools/curator.js +186 -0
- package/dist/src/artifacts/corpus-tools/discovery-log.js +70 -0
- package/dist/src/artifacts/corpus-tools/funder-network.js +141 -0
- package/dist/src/artifacts/corpus-tools/induction-audit.js +233 -0
- package/dist/src/artifacts/corpus-tools/integrity-scan.js +202 -0
- package/dist/src/artifacts/corpus-tools/profile-communities.js +166 -0
- package/dist/src/artifacts/corpus-tools/profile-edges.js +72 -0
- package/dist/src/artifacts/corpus-tools/profile-embed.js +113 -0
- package/dist/src/artifacts/corpus-tools/profile-generate-fm.js +167 -0
- package/dist/src/artifacts/corpus-tools/profile-generate.js +181 -0
- package/dist/src/artifacts/corpus-tools/profile-metrics.js +98 -0
- package/dist/src/artifacts/corpus-tools/profile-status.js +86 -0
- package/dist/src/artifacts/corpus-tools/profile-temporal.js +139 -0
- package/dist/src/artifacts/corpus-tools/radar-init.js +93 -0
- package/dist/src/artifacts/corpus-tools/radar-report.js +118 -0
- package/dist/src/artifacts/corpus-tools/radar-shared.js +189 -0
- package/dist/src/artifacts/corpus-tools/radar-status.js +68 -0
- package/dist/src/artifacts/corpus-tools/sidecar-lint.js +233 -0
- package/dist/src/artifacts/corpus-tools/sidecar-repair.js +277 -0
- package/dist/src/artifacts/corpus-tools/snapshot.js +591 -0
- package/dist/src/artifacts/corpus-tools/source-types.js +164 -0
- package/dist/src/artifacts/corpus-tools/vision-extract.js +243 -0
- package/dist/src/artifacts/corpus-views/build.js +126 -0
- package/dist/src/artifacts/corpus-views/corpus-config.js +124 -0
- package/dist/src/artifacts/corpus-views/ref-parser.js +437 -0
- package/dist/src/artifacts/corpus-views/renderers.js +353 -0
- package/dist/src/artifacts/corpus-views/taxonomies.js +131 -0
- package/dist/src/artifacts/dep-graph.js +173 -0
- package/dist/src/artifacts/discover-facets.js +375 -0
- package/dist/src/artifacts/embedding-index.js +354 -0
- package/dist/src/artifacts/enrichment/cli.js +240 -0
- package/dist/src/artifacts/enrichment/prompt.js +47 -0
- package/dist/src/artifacts/enrichment/store.js +90 -0
- package/dist/src/artifacts/enrichment/types.js +12 -0
- package/dist/src/artifacts/fortemi-core-query-adapter.js +475 -0
- package/dist/src/artifacts/fortemi-core-sync.js +251 -0
- package/dist/src/artifacts/fortemi-shard-export.js +44 -0
- package/dist/src/artifacts/fulltext.js +108 -0
- package/dist/src/artifacts/graph-backend.js +51 -0
- package/dist/src/artifacts/graph-query.js +247 -0
- package/dist/src/artifacts/hybrid-query.js +225 -0
- package/dist/src/artifacts/index-builder.js +1089 -0
- package/dist/src/artifacts/index-reader.js +112 -0
- package/dist/src/artifacts/index-status.js +193 -0
- package/dist/src/artifacts/legacy-index-migration.js +169 -0
- package/dist/src/artifacts/move.js +154 -0
- package/dist/src/artifacts/operational-state.js +239 -0
- package/dist/src/artifacts/prebuilt-build-lock.js +49 -0
- package/dist/src/artifacts/query-engine.js +1955 -0
- package/dist/src/artifacts/source-graph.js +529 -0
- package/dist/src/artifacts/stats.js +169 -0
- package/dist/src/artifacts/types.js +606 -0
- package/dist/src/artifacts/views/cli.js +293 -0
- package/dist/src/artifacts/views/definition.js +170 -0
- package/dist/src/artifacts/views/store.js +149 -0
- package/dist/src/artifacts/views/types.js +8 -0
- package/dist/src/artifacts/watcher.js +255 -0
- package/dist/src/catalog/builtin-models.json +636 -0
- package/dist/src/catalog/cli.js +228 -0
- package/dist/src/catalog/cli.mjs +289 -0
- package/dist/src/catalog/index.js +15 -0
- package/dist/src/catalog/loader.js +217 -0
- package/dist/src/catalog/loader.mjs +251 -0
- package/dist/src/catalog/sources.json +41 -0
- package/dist/src/catalog/types.js +8 -0
- package/dist/src/channel/manager.mjs +504 -0
- package/dist/src/cli/agent-spawn.js +178 -0
- package/dist/src/cli/cli-extension-loader.js +245 -0
- package/dist/src/cli/command-log.js +275 -0
- package/dist/src/cli/config-loader.js +232 -0
- package/dist/src/cli/env.js +82 -0
- package/dist/src/cli/errors.js +150 -0
- package/dist/src/cli/find-package-root.js +40 -0
- package/dist/src/cli/git-hooks.js +250 -0
- package/dist/src/cli/handlers/agentcard.js +206 -0
- package/dist/src/cli/handlers/artifacts.js +76 -0
- package/dist/src/cli/handlers/best-practices-audit.js +280 -0
- package/dist/src/cli/handlers/cockpit.js +137 -0
- package/dist/src/cli/handlers/command-log.js +37 -0
- package/dist/src/cli/handlers/daemon.js +59 -0
- package/dist/src/cli/handlers/diagnose.js +300 -0
- package/dist/src/cli/handlers/execution-mode.js +105 -0
- package/dist/src/cli/handlers/feedback.js +341 -0
- package/dist/src/cli/handlers/help.js +147 -0
- package/dist/src/cli/handlers/index.js +302 -0
- package/dist/src/cli/handlers/init.js +179 -0
- package/dist/src/cli/handlers/install.js +129 -0
- package/dist/src/cli/handlers/issues.js +46 -0
- package/dist/src/cli/handlers/lint.js +42 -0
- package/dist/src/cli/handlers/local-executor.js +315 -0
- package/dist/src/cli/handlers/marketplace.js +168 -0
- package/dist/src/cli/handlers/mc.js +1010 -0
- package/dist/src/cli/handlers/models.js +352 -0
- package/dist/src/cli/handlers/packages.js +155 -0
- package/dist/src/cli/handlers/ralph-launcher.js +717 -0
- package/dist/src/cli/handlers/ralph.js +575 -0
- package/dist/src/cli/handlers/refresh.js +432 -0
- package/dist/src/cli/handlers/regenerate.js +336 -0
- package/dist/src/cli/handlers/repo-access.js +109 -0
- package/dist/src/cli/handlers/run.js +165 -0
- package/dist/src/cli/handlers/runtime-info.js +301 -0
- package/dist/src/cli/handlers/sandbox.js +197 -0
- package/dist/src/cli/handlers/scaffolding.js +149 -0
- package/dist/src/cli/handlers/script-runner.js +121 -0
- package/dist/src/cli/handlers/sdlc-accelerate.js +148 -0
- package/dist/src/cli/handlers/serve.js +1835 -0
- package/dist/src/cli/handlers/session.js +348 -0
- package/dist/src/cli/handlers/setup.js +440 -0
- package/dist/src/cli/handlers/skill-lint.js +367 -0
- package/dist/src/cli/handlers/skill-usage.js +74 -0
- package/dist/src/cli/handlers/steward.js +567 -0
- package/dist/src/cli/handlers/subcommands.js +1702 -0
- package/dist/src/cli/handlers/team.js +337 -0
- package/dist/src/cli/handlers/types.js +11 -0
- package/dist/src/cli/handlers/use.js +2772 -0
- package/dist/src/cli/handlers/utilities.js +703 -0
- package/dist/src/cli/handlers/version.js +134 -0
- package/dist/src/cli/handlers/workspace-context.js +93 -0
- package/dist/src/cli/handlers/workspace.js +126 -0
- package/dist/src/cli/help-generator.js +178 -0
- package/dist/src/cli/hooks/builtin/activity-log-hook.js +126 -0
- package/dist/src/cli/hooks/executor.js +96 -0
- package/dist/src/cli/hooks/index.js +15 -0
- package/dist/src/cli/hooks/registry.js +143 -0
- package/dist/src/cli/hooks/types.js +13 -0
- package/dist/src/cli/log.js +492 -0
- package/dist/src/cli/project-isolation/detect.js +70 -0
- package/dist/src/cli/project-isolation/index.js +7 -0
- package/dist/src/cli/project-isolation/signals.js +17 -0
- package/dist/src/cli/project-isolation/warning.js +102 -0
- package/dist/src/cli/prompt-utils.js +155 -0
- package/dist/src/cli/provider-deployment-plan.js +126 -0
- package/dist/src/cli/provider-resolution.js +119 -0
- package/dist/src/cli/router.js +305 -0
- package/dist/src/cli/scope-resolver.js +392 -0
- package/dist/src/cli/skill-usage.js +616 -0
- package/dist/src/cli/ui.js +224 -0
- package/dist/src/cli/watch-service.js +203 -0
- package/dist/src/cli/workflow-orchestrator.js +478 -0
- package/dist/src/cli/workspace-signals.js +321 -0
- package/dist/src/community/footer.js +14 -0
- package/dist/src/community/links.js +123 -0
- package/dist/src/community/milestones.js +46 -0
- package/dist/src/community/nudge-policy.js +93 -0
- package/dist/src/config/aiwg-config.js +883 -0
- package/dist/src/config/cli.js +703 -0
- package/dist/src/config/gitignore.js +156 -0
- package/dist/src/config/project-artifacts.js +76 -0
- package/dist/src/config/user-config.js +428 -0
- package/dist/src/config/user-registry.js +127 -0
- package/dist/src/config/workspace.js +276 -0
- package/dist/src/contributors/detect.js +39 -0
- package/dist/src/contributors/discover.js +172 -0
- package/dist/src/contributors/heuristic.js +186 -0
- package/dist/src/contributors/index.js +11 -0
- package/dist/src/contributors/types.js +13 -0
- package/dist/src/contributors/validation.js +116 -0
- package/dist/src/data/community.schema.json +43 -0
- package/dist/src/data/community.yaml +16 -0
- package/dist/src/extensions/capability-index.js +270 -0
- package/dist/src/extensions/claude-hooks-installer.js +268 -0
- package/dist/src/extensions/commands/definitions.js +3485 -0
- package/dist/src/extensions/deployment-registration.js +463 -0
- package/dist/src/extensions/index.js +22 -0
- package/dist/src/extensions/loader.js +132 -0
- package/dist/src/extensions/managed-marker.js +100 -0
- package/dist/src/extensions/manifest.js +196 -0
- package/dist/src/extensions/project-local-activity.js +114 -0
- package/dist/src/extensions/project-local-discovery.js +261 -0
- package/dist/src/extensions/project-local-doctor.js +281 -0
- package/dist/src/extensions/project-local-gitignore.js +176 -0
- package/dist/src/extensions/project-local-paths.js +121 -0
- package/dist/src/extensions/project-local-promote.js +218 -0
- package/dist/src/extensions/project-local-remove.js +373 -0
- package/dist/src/extensions/project-local-scaffold.js +252 -0
- package/dist/src/extensions/project-quickref.js +291 -0
- package/dist/src/extensions/registry.js +368 -0
- package/dist/src/extensions/shadow-resolver.js +271 -0
- package/dist/src/extensions/types.js +86 -0
- package/dist/src/extensions/upstream-registry.js +195 -0
- package/dist/src/extensions/validation.js +631 -0
- package/dist/src/features/catalog.js +88 -0
- package/dist/src/features/cli.js +197 -0
- package/dist/src/features/installer.js +57 -0
- package/dist/src/features/paths.js +14 -0
- package/dist/src/features/runtime.js +21 -0
- package/dist/src/features/status.js +134 -0
- package/dist/src/hooks/laziness-detection.js +532 -0
- package/dist/src/intake/git-history-analyzer.js +486 -0
- package/dist/src/intake/index.js +9 -0
- package/dist/src/issues/cli.js +327 -0
- package/dist/src/issues/index.js +5 -0
- package/dist/src/issues/live.js +154 -0
- package/dist/src/issues/local.js +666 -0
- package/dist/src/issues/sync.js +143 -0
- package/dist/src/issues/types.js +2 -0
- package/dist/src/issues/workflows.js +164 -0
- package/dist/src/kb/cli.js +173 -0
- package/dist/src/lint/cli.js +171 -0
- package/dist/src/lint/loader.js +225 -0
- package/dist/src/lint/reporters.js +141 -0
- package/dist/src/lint/runner.js +364 -0
- package/dist/src/lint/types.js +10 -0
- package/dist/src/marketplace/cache.js +110 -0
- package/dist/src/marketplace/identifier.js +63 -0
- package/dist/src/marketplace/registry.js +36 -0
- package/dist/src/marketplace/sources/clawhub.js +53 -0
- package/dist/src/marketplace/sources/git.js +45 -0
- package/dist/src/marketplace/types.js +9 -0
- package/dist/src/mcp/adapters/codex-runtime.js +224 -0
- package/dist/src/mcp/cli.mjs +1197 -0
- package/dist/src/mcp/elicitation.mjs +149 -0
- package/dist/src/mcp/helpers.mjs +287 -0
- package/dist/src/mcp/index.mjs +11 -0
- package/dist/src/mcp/profiles.js +263 -0
- package/dist/src/mcp/profiles.mjs +360 -0
- package/dist/src/mcp/registry.js +376 -0
- package/dist/src/mcp/registry.mjs +387 -0
- package/dist/src/mcp/server.mjs +633 -0
- package/dist/src/mcp/test-simple.mjs +271 -0
- package/dist/src/mcp/tools/command-run.mjs +101 -0
- package/dist/src/mcp/tools/discovery.mjs +291 -0
- package/dist/src/mcp/tools/interaction.mjs +87 -0
- package/dist/src/mcp/tools/orchestration.mjs +320 -0
- package/dist/src/mcp/tools/subsystems.mjs +640 -0
- package/dist/src/memory/cli.js +166 -0
- package/dist/src/memory/project-registry.js +282 -0
- package/dist/src/metrics/artifact-metrics.js +184 -0
- package/dist/src/metrics/context-budget.js +174 -0
- package/dist/src/metrics/token-counter.js +133 -0
- package/dist/src/models/config-loader.js +228 -0
- package/dist/src/models/index.js +22 -0
- package/dist/src/models/model-capabilities.v1.json +120 -0
- package/dist/src/models/model-catalog.v1.json +96 -0
- package/dist/src/models/model-discovery.js +521 -0
- package/dist/src/models/provider-models.js +73 -0
- package/dist/src/models/provider-policy.js +273 -0
- package/dist/src/models/resolver.js +245 -0
- package/dist/src/models/router.js +70 -0
- package/dist/src/models/types.js +8 -0
- package/dist/src/models/wrapper-deployment.js +178 -0
- package/dist/src/models/wrapper-route.js +54 -0
- package/dist/src/ops/cli.js +268 -0
- package/dist/src/ops/registry.js +623 -0
- package/dist/src/packages/adapters/clawhub.js +113 -0
- package/dist/src/packages/adapters/git.js +153 -0
- package/dist/src/packages/adapters/gitea.js +93 -0
- package/dist/src/packages/adapters/github.js +69 -0
- package/dist/src/packages/adapters/local-cache.js +89 -0
- package/dist/src/packages/package-registry.js +143 -0
- package/dist/src/packages/registry.js +238 -0
- package/dist/src/packages/types.js +11 -0
- package/dist/src/plugin/cross-framework-ops.js +475 -0
- package/dist/src/plugin/framework-config-loader.js +235 -0
- package/dist/src/plugin/framework-detector.js +186 -0
- package/dist/src/plugin/framework-isolator.js +341 -0
- package/dist/src/plugin/framework-migration.js +371 -0
- package/dist/src/plugin/metadata-validator.js +906 -0
- package/dist/src/plugin/plugin-installer.js +436 -0
- package/dist/src/plugin/plugin-status.js +369 -0
- package/dist/src/plugin/plugin-uninstaller.js +473 -0
- package/dist/src/plugin/registry-validator.js +344 -0
- package/dist/src/plugin/skill-command-translator.js +415 -0
- package/dist/src/plugin/workspace-creator.js +189 -0
- package/dist/src/plugin/workspace-migrator.js +821 -0
- package/dist/src/policy/authorization.js +390 -0
- package/dist/src/policy/repo-access.js +215 -0
- package/dist/src/provenance/cli.js +16 -0
- package/dist/src/providers/capability-matrix.js +300 -0
- package/dist/src/providers/capability-matrix.yaml +514 -0
- package/dist/src/providers/provider-definitions.js +977 -0
- package/dist/src/providers/provider-definitions.mjs +159 -0
- package/dist/src/providers/provider-inventory.js +169 -0
- package/dist/src/quality/feedback-ab.js +174 -0
- package/dist/src/quality/feedback-collector.js +176 -0
- package/dist/src/quality/feedback-tracker.js +123 -0
- package/dist/src/quality/patterns/adr.json +24 -0
- package/dist/src/quality/patterns/sad.json +24 -0
- package/dist/src/quality/patterns/test-plan.json +24 -0
- package/dist/src/quality/patterns/use-case.json +24 -0
- package/dist/src/quality/scoring.js +157 -0
- package/dist/src/reflections/cli.js +15 -0
- package/dist/src/release/plan.js +139 -0
- package/dist/src/research/cache/manager.js +227 -0
- package/dist/src/research/clients/arxiv.js +156 -0
- package/dist/src/research/clients/base.js +197 -0
- package/dist/src/research/clients/crossref.js +112 -0
- package/dist/src/research/clients/semantic-scholar.js +126 -0
- package/dist/src/research/clients/unpaywall.js +87 -0
- package/dist/src/research/index.js +14 -0
- package/dist/src/research/query-cli.js +336 -0
- package/dist/src/research/services/acquisition.js +313 -0
- package/dist/src/research/services/archival.js +225 -0
- package/dist/src/research/services/citation.js +279 -0
- package/dist/src/research/services/discovery.js +243 -0
- package/dist/src/research/services/documentation.js +269 -0
- package/dist/src/research/services/index.js +14 -0
- package/dist/src/research/services/provenance.js +279 -0
- package/dist/src/research/services/quality.js +370 -0
- package/dist/src/research/services/types.js +7 -0
- package/dist/src/research/storage-cli.js +20 -0
- package/dist/src/research/types.js +47 -0
- package/dist/src/resources/index.d.ts +2 -0
- package/dist/src/resources/index.js +2 -0
- package/dist/src/resources/web-release.d.ts +89 -0
- package/dist/src/resources/web-release.js +882 -0
- package/dist/src/rlm/cache/cli.js +162 -0
- package/dist/src/rlm/cache/hash.js +35 -0
- package/dist/src/rlm/cache/store.js +170 -0
- package/dist/src/rlm/cache/types.js +8 -0
- package/dist/src/rlm/cli.js +650 -0
- package/dist/src/serve/a2a-terminal-observer.js +120 -0
- package/dist/src/serve/agent-router.js +205 -0
- package/dist/src/serve/dispatch-router.js +171 -0
- package/dist/src/serve/executor-registry.js +715 -0
- package/dist/src/serve/mission-conductor.js +177 -0
- package/dist/src/serve/orchestrator-adapter.js +113 -0
- package/dist/src/serve/orchestrator-override.js +94 -0
- package/dist/src/serve/orchestrator-pty.js +133 -0
- package/dist/src/serve/pty-bridge.js +799 -0
- package/dist/src/serve/sandbox-registry.js +832 -0
- package/dist/src/serve/screen-reader.js +228 -0
- package/dist/src/serve/stack-adapters.js +68 -0
- package/dist/src/serve/telemetry.js +143 -0
- package/dist/src/skills/adapters/clawhub.js +250 -0
- package/dist/src/skills/adapters/local.js +335 -0
- package/dist/src/skills/adapters/openclaw.js +316 -0
- package/dist/src/skills/cli.js +334 -0
- package/dist/src/skills/registry.js +117 -0
- package/dist/src/skills/run.js +259 -0
- package/dist/src/skills/runtime.js +94 -0
- package/dist/src/skills/types.js +10 -0
- package/dist/src/smiths/agentsmith/demo.js +116 -0
- package/dist/src/smiths/agentsmith/examples.js +300 -0
- package/dist/src/smiths/agentsmith/generator.js +503 -0
- package/dist/src/smiths/agentsmith/index.js +11 -0
- package/dist/src/smiths/agentsmith/types.js +8 -0
- package/dist/src/smiths/commandsmith/example.js +220 -0
- package/dist/src/smiths/commandsmith/generator.js +288 -0
- package/dist/src/smiths/commandsmith/index.js +41 -0
- package/dist/src/smiths/commandsmith/templates.js +296 -0
- package/dist/src/smiths/commandsmith/types.js +7 -0
- package/dist/src/smiths/context-pipeline/aiwg-md.js +104 -0
- package/dist/src/smiths/context-pipeline/allowlist.js +195 -0
- package/dist/src/smiths/context-pipeline/claude-hook.js +127 -0
- package/dist/src/smiths/context-pipeline/discovery.js +187 -0
- package/dist/src/smiths/context-pipeline/external-links-section.js +49 -0
- package/dist/src/smiths/context-pipeline/finalization.js +147 -0
- package/dist/src/smiths/context-pipeline/generator.js +477 -0
- package/dist/src/smiths/context-pipeline/index.js +30 -0
- package/dist/src/smiths/context-pipeline/legacy-inject.js +103 -0
- package/dist/src/smiths/context-pipeline/managed-hook.js +95 -0
- package/dist/src/smiths/context-pipeline/overflow.js +212 -0
- package/dist/src/smiths/context-pipeline/parallelism-section.js +94 -0
- package/dist/src/smiths/context-pipeline/provider-policy.js +64 -0
- package/dist/src/smiths/context-pipeline/sanitizer.js +93 -0
- package/dist/src/smiths/context-pipeline/types.js +23 -0
- package/dist/src/smiths/context-pipeline/workspace-context.js +988 -0
- package/dist/src/smiths/hook-bridge/codex-translator.js +129 -0
- package/dist/src/smiths/hook-bridge/copilot-translator.js +64 -0
- package/dist/src/smiths/hook-bridge/factory-translator.js +43 -0
- package/dist/src/smiths/hook-bridge/hermes-translator.js +88 -0
- package/dist/src/smiths/hook-bridge/index.js +79 -0
- package/dist/src/smiths/hook-bridge/loader.js +116 -0
- package/dist/src/smiths/hook-bridge/shim.js +89 -0
- package/dist/src/smiths/hook-bridge/types.js +31 -0
- package/dist/src/smiths/index.js +39 -0
- package/dist/src/smiths/mcpsmith/analyzers/cli-analyzer.js +390 -0
- package/dist/src/smiths/mcpsmith/example.js +119 -0
- package/dist/src/smiths/mcpsmith/generator.js +236 -0
- package/dist/src/smiths/mcpsmith/index.js +17 -0
- package/dist/src/smiths/mcpsmith/types.js +10 -0
- package/dist/src/smiths/platform-paths.js +101 -0
- package/dist/src/smiths/skillsmith/codex-sidecar.js +85 -0
- package/dist/src/smiths/skillsmith/collision-detector.js +249 -0
- package/dist/src/smiths/skillsmith/demo.js +83 -0
- package/dist/src/smiths/skillsmith/examples.js +161 -0
- package/dist/src/smiths/skillsmith/generator.js +316 -0
- package/dist/src/smiths/skillsmith/index.js +12 -0
- package/dist/src/smiths/skillsmith/namespace-adapter.js +180 -0
- package/dist/src/smiths/skillsmith/platform-resolver.js +157 -0
- package/dist/src/smiths/skillsmith/types.js +9 -0
- package/dist/src/smiths/toolsmith/index.js +10 -0
- package/dist/src/smiths/toolsmith/runtime-discovery.mjs +710 -0
- package/dist/src/smiths/toolsmith/types.js +8 -0
- package/dist/src/storage/backends/fortemi.js +227 -0
- package/dist/src/storage/backends/fs.js +134 -0
- package/dist/src/storage/backends/logseq.js +309 -0
- package/dist/src/storage/backends/obsidian.js +233 -0
- package/dist/src/storage/cli.js +468 -0
- package/dist/src/storage/config.js +272 -0
- package/dist/src/storage/index.js +108 -0
- package/dist/src/storage/subsystem-cli.js +201 -0
- package/dist/src/storage/types.js +33 -0
- package/dist/src/testing/corpus/corpus-builder.js +383 -0
- package/dist/src/testing/corpus/ground-truth-manager.js +460 -0
- package/dist/src/testing/corpus/index.js +10 -0
- package/dist/src/testing/fixtures/index.js +9 -0
- package/dist/src/testing/fixtures/test-data-factory.js +472 -0
- package/dist/src/testing/generators/index.js +11 -0
- package/dist/src/testing/generators/test-case-generator.js +393 -0
- package/dist/src/testing/generators/test-code-generator.js +384 -0
- package/dist/src/testing/generators/use-case-parser.js +325 -0
- package/dist/src/testing/index.js +11 -0
- package/dist/src/tracker/capability-protocol.js +118 -0
- package/dist/src/update/checker.mjs +396 -0
- package/dist/src/update/notifier.mjs +235 -0
- package/dist/src/writing/content-diversifier.js +804 -0
- package/dist/src/writing/example-generator.js +959 -0
- package/dist/src/writing/example-templates.js +99 -0
- package/dist/src/writing/pattern-library.js +486 -0
- package/dist/src/writing/patterns/banned-phrases.json +4413 -0
- package/dist/src/writing/patterns/formulaic-structures.json +1300 -0
- package/dist/src/writing/patterns/generic-adjectives.json +1510 -0
- package/dist/src/writing/patterns/hedging-language.json +2096 -0
- package/dist/src/writing/patterns/transition-words.json +1285 -0
- package/dist/src/writing/patterns/weak-verbs.json +1112 -0
- package/dist/src/writing/prompt-optimizer.js +660 -0
- package/dist/src/writing/prompt-templates.js +583 -0
- package/dist/src/writing/scoring-config-loader.js +168 -0
- package/dist/src/writing/validation-engine.js +595 -0
- package/dist/src/writing/validation-rules.js +380 -0
- package/dist/src/writing/voice-analyzer.js +439 -0
- package/dist/src/writing/voice-calibration.js +661 -0
- package/dist/src/writing/voice-profiles.json +588 -0
- package/package.json +64 -9
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discover facets — curated feature→capability fusion layer (#1623).
|
|
3
|
+
*
|
|
4
|
+
* The capability index (hybrid BM25 + dense) is near-optimal for a ~400-item
|
|
5
|
+
* corpus, but bare domain words ("persona", "expansion") and feature-intent
|
|
6
|
+
* phrases ("author an expansion", "scaffold a project") have weak lexical
|
|
7
|
+
* scent: generic artifacts that merely contain the word out-rank the artifacts
|
|
8
|
+
* that actually OWN the feature. This module adds a small, curated set of
|
|
9
|
+
* **facets** that map feature intents to their owning capabilities and fuses
|
|
10
|
+
* that signal into the single-pass `aiwg discover` ranking (reciprocal-rank
|
|
11
|
+
* spirit: a second ranker combined by max-floor + injection).
|
|
12
|
+
*
|
|
13
|
+
* This is the *single-pass fused* form the ADR ships for #1623. The parallel
|
|
14
|
+
* multi-vector fan-out over these same facets is the deferred #1626 work — the
|
|
15
|
+
* facet table here is the shared contract both consume, so #1626 reuses
|
|
16
|
+
* `DISCOVER_FACETS` rather than redefining domains.
|
|
17
|
+
*
|
|
18
|
+
* Design notes:
|
|
19
|
+
* - Facets are *curated*, not learned — appropriate at this corpus size and
|
|
20
|
+
* portable across all 10 providers (no embedding store, no fine-tuned
|
|
21
|
+
* router). See `.aiwg/architecture/adr-steward-feature-discoverability.md`.
|
|
22
|
+
* - Mapped capabilities are matched against an entry's canonical `name`
|
|
23
|
+
* (falling back to the path basename / parent-dir slug), so the table lists
|
|
24
|
+
* names — not paths — and survives bundle moves.
|
|
25
|
+
* - Activation strength tiers the score floor so an exact domain-word query
|
|
26
|
+
* ("persona") sorts the owning domain to the very top (above generic
|
|
27
|
+
* capped-at-1.0 substring matches, mirroring the exact-name 1.001 floor in
|
|
28
|
+
* query-engine), while looser token-overlap activations apply a gentler
|
|
29
|
+
* floor that lifts the domain into the top-K without dominating.
|
|
30
|
+
*
|
|
31
|
+
* @implements #1623 (U3)
|
|
32
|
+
*/
|
|
33
|
+
/**
|
|
34
|
+
* The curated facet table. Kept deliberately small and legible — it is a
|
|
35
|
+
* routing index, not a knowledge base. Guarded by the discover acceptance
|
|
36
|
+
* test (canonical phrases must rank their targets top-3) and the
|
|
37
|
+
* metadata-completeness lint (empty triggers cannot recur).
|
|
38
|
+
*/
|
|
39
|
+
export const DISCOVER_FACETS = [
|
|
40
|
+
{
|
|
41
|
+
facet: 'authoring-surface',
|
|
42
|
+
label: 'Expansion authoring (extension / addon / framework)',
|
|
43
|
+
intents: [
|
|
44
|
+
'expansion',
|
|
45
|
+
'author an expansion',
|
|
46
|
+
'build an expansion',
|
|
47
|
+
'create an expansion',
|
|
48
|
+
'new expansion',
|
|
49
|
+
'build an extension',
|
|
50
|
+
'create an extension',
|
|
51
|
+
'author an extension',
|
|
52
|
+
'create an addon',
|
|
53
|
+
'author an addon',
|
|
54
|
+
'build an addon',
|
|
55
|
+
'scaffold a framework',
|
|
56
|
+
'author a framework',
|
|
57
|
+
'create a framework',
|
|
58
|
+
'extension authoring',
|
|
59
|
+
'addon authoring',
|
|
60
|
+
'framework authoring',
|
|
61
|
+
],
|
|
62
|
+
capabilities: ['scaffold-extension', 'scaffold-addon', 'scaffold-framework'],
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
facet: 'persona-identity',
|
|
66
|
+
label: 'Persona / SOUL identity (author and select)',
|
|
67
|
+
intents: [
|
|
68
|
+
'persona',
|
|
69
|
+
'soul',
|
|
70
|
+
'identity',
|
|
71
|
+
'create a persona',
|
|
72
|
+
'author a soul',
|
|
73
|
+
'make an identity profile',
|
|
74
|
+
'new persona',
|
|
75
|
+
'generate soul',
|
|
76
|
+
'select a persona',
|
|
77
|
+
'choose a persona',
|
|
78
|
+
'switch persona',
|
|
79
|
+
'pick an identity',
|
|
80
|
+
'character sheet',
|
|
81
|
+
'persona authoring',
|
|
82
|
+
],
|
|
83
|
+
capabilities: [
|
|
84
|
+
'soul-create',
|
|
85
|
+
'soul-apply',
|
|
86
|
+
'soul-enable',
|
|
87
|
+
'aiwg-writer',
|
|
88
|
+
'aiwg-orchestrator',
|
|
89
|
+
'aiwg-reviewer',
|
|
90
|
+
'aiwg-security',
|
|
91
|
+
'aiwg-finder',
|
|
92
|
+
'aiwg-steward',
|
|
93
|
+
'mc-conductor',
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
facet: 'feature-domain',
|
|
98
|
+
label: 'Project creation (aiwg new + project-local bundles)',
|
|
99
|
+
intents: [
|
|
100
|
+
'scaffold a project',
|
|
101
|
+
'create a project',
|
|
102
|
+
'new project',
|
|
103
|
+
'aiwg new',
|
|
104
|
+
'project scaffolding',
|
|
105
|
+
'project-local bundle',
|
|
106
|
+
'start a project',
|
|
107
|
+
'bootstrap a project',
|
|
108
|
+
],
|
|
109
|
+
capabilities: ['new-project', 'new-bundle'],
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
facet: 'provider-capability',
|
|
113
|
+
label: 'Provider capability routing (native vs emulated)',
|
|
114
|
+
intents: [
|
|
115
|
+
'provider support',
|
|
116
|
+
'does my provider support',
|
|
117
|
+
'native support',
|
|
118
|
+
'provider capability',
|
|
119
|
+
'what does my provider support',
|
|
120
|
+
'emulation fallback',
|
|
121
|
+
'is this supported natively',
|
|
122
|
+
],
|
|
123
|
+
capabilities: ['steward', 'aiwg-steward'],
|
|
124
|
+
},
|
|
125
|
+
];
|
|
126
|
+
/** Normalize a phrase/name for comparison (lowercase, collapse separators). */
|
|
127
|
+
function norm(s) {
|
|
128
|
+
return s.toLowerCase().replace(/[\s_-]+/g, ' ').trim();
|
|
129
|
+
}
|
|
130
|
+
const PERSONA_MARKETING_CONTEXT = new Set([
|
|
131
|
+
'audience',
|
|
132
|
+
'brand',
|
|
133
|
+
'brief',
|
|
134
|
+
'buyer',
|
|
135
|
+
'campaign',
|
|
136
|
+
'content',
|
|
137
|
+
'copy',
|
|
138
|
+
'customer',
|
|
139
|
+
'email',
|
|
140
|
+
'execution',
|
|
141
|
+
'landing',
|
|
142
|
+
'market',
|
|
143
|
+
'marketing',
|
|
144
|
+
'product',
|
|
145
|
+
'sales',
|
|
146
|
+
'social',
|
|
147
|
+
]);
|
|
148
|
+
function suppressPersonaIdentityFacet(phrase) {
|
|
149
|
+
const p = norm(phrase);
|
|
150
|
+
if (!/\bpersona(s)?\b/.test(p))
|
|
151
|
+
return null;
|
|
152
|
+
const explicitIdentityIntent = /\b(soul|identity)\b/.test(p) ||
|
|
153
|
+
/\b(select|choose|switch|pick|apply|enable|author|generate)\s+(?:an?\s+)?(?:aiwg\s+)?persona\b/.test(p);
|
|
154
|
+
if (explicitIdentityIntent)
|
|
155
|
+
return null;
|
|
156
|
+
const contextTerms = new Set(p.split(' ').filter((token) => PERSONA_MARKETING_CONTEXT.has(token)));
|
|
157
|
+
if (contextTerms.size < 2)
|
|
158
|
+
return null;
|
|
159
|
+
return 'persona-identity facet suppressed because persona is used as marketing audience context, not AIWG persona/SOUL identity intent';
|
|
160
|
+
}
|
|
161
|
+
/** The score floor a facet activation guarantees for its capabilities. */
|
|
162
|
+
const FLOOR_EXACT = 1.0005; // above generic capped-1.0, below exact-name 1.001
|
|
163
|
+
const FLOOR_STRONG = 0.9; // substring either direction
|
|
164
|
+
const FLOOR_OVERLAP = 0.6; // majority token overlap on a multi-word intent
|
|
165
|
+
/**
|
|
166
|
+
* Compute the strongest activation floor for `phrase` against a facet entry.
|
|
167
|
+
* Returns null when the entry does not activate.
|
|
168
|
+
*/
|
|
169
|
+
function facetActivation(phrase, entry) {
|
|
170
|
+
const p = norm(phrase);
|
|
171
|
+
if (!p)
|
|
172
|
+
return null;
|
|
173
|
+
if (entry.facet === 'persona-identity') {
|
|
174
|
+
const reason = suppressPersonaIdentityFacet(p);
|
|
175
|
+
if (reason) {
|
|
176
|
+
return {
|
|
177
|
+
facet: entry.facet,
|
|
178
|
+
label: entry.label,
|
|
179
|
+
status: 'suppressed',
|
|
180
|
+
floor: 0,
|
|
181
|
+
reason,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const pTokens = p.split(' ').filter(Boolean);
|
|
186
|
+
let best = 0;
|
|
187
|
+
let matchedIntent;
|
|
188
|
+
for (const raw of entry.intents) {
|
|
189
|
+
const intent = norm(raw);
|
|
190
|
+
if (!intent)
|
|
191
|
+
continue;
|
|
192
|
+
if (p === intent) {
|
|
193
|
+
return {
|
|
194
|
+
facet: entry.facet,
|
|
195
|
+
label: entry.label,
|
|
196
|
+
status: 'active',
|
|
197
|
+
floor: FLOOR_EXACT,
|
|
198
|
+
matchedIntent: raw,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
if (p.includes(intent) || intent.includes(p)) {
|
|
202
|
+
if (FLOOR_STRONG > best) {
|
|
203
|
+
best = FLOOR_STRONG;
|
|
204
|
+
matchedIntent = raw;
|
|
205
|
+
}
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
const iTokens = intent.split(' ').filter(Boolean);
|
|
209
|
+
if (iTokens.length > 1 && pTokens.length > 0) {
|
|
210
|
+
const hits = iTokens.filter((t) => pTokens.includes(t)).length;
|
|
211
|
+
if (hits >= Math.ceil(iTokens.length / 2) && FLOOR_OVERLAP > best) {
|
|
212
|
+
best = FLOOR_OVERLAP;
|
|
213
|
+
matchedIntent = raw;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (best <= 0)
|
|
218
|
+
return null;
|
|
219
|
+
return {
|
|
220
|
+
facet: entry.facet,
|
|
221
|
+
label: entry.label,
|
|
222
|
+
status: 'active',
|
|
223
|
+
floor: best,
|
|
224
|
+
matchedIntent,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
export function diagnoseFacetActivations(phrase) {
|
|
228
|
+
return DISCOVER_FACETS
|
|
229
|
+
.map((entry) => facetActivation(phrase, entry))
|
|
230
|
+
.filter((item) => item !== null);
|
|
231
|
+
}
|
|
232
|
+
/** Does a candidate entry correspond to a mapped capability name? */
|
|
233
|
+
function entryMatchesCapability(entry, capability) {
|
|
234
|
+
const cap = norm(capability);
|
|
235
|
+
if (entry.name && norm(entry.name) === cap)
|
|
236
|
+
return true;
|
|
237
|
+
// Fall back to path-derived identity (skills: <name>/SKILL.md; agents: <name>.md).
|
|
238
|
+
const path = entry.path || '';
|
|
239
|
+
const base = path.replace(/\\/g, '/').split('/').filter(Boolean);
|
|
240
|
+
if (base.length === 0)
|
|
241
|
+
return false;
|
|
242
|
+
const file = base[base.length - 1];
|
|
243
|
+
const parent = base.length >= 2 ? base[base.length - 2] : '';
|
|
244
|
+
if (file === 'SKILL.md')
|
|
245
|
+
return norm(parent) === cap;
|
|
246
|
+
return norm(file.replace(/\.[^.]+$/, '')) === cap;
|
|
247
|
+
}
|
|
248
|
+
export const DEFAULT_FACET_WEIGHTS = {
|
|
249
|
+
base: 1.0,
|
|
250
|
+
facets: {
|
|
251
|
+
'feature-domain': 1.0,
|
|
252
|
+
'persona-identity': 1.0,
|
|
253
|
+
'authoring-surface': 1.0,
|
|
254
|
+
// Provider-capability is a narrower router target — weight it slightly
|
|
255
|
+
// lower so it informs ties without dominating feature/persona queries.
|
|
256
|
+
'provider-capability': 0.75,
|
|
257
|
+
},
|
|
258
|
+
};
|
|
259
|
+
/** Standard reciprocal-rank-fusion damping constant. */
|
|
260
|
+
const RRF_K = 60;
|
|
261
|
+
/**
|
|
262
|
+
* Scale that maps an RRF consensus value (~0..0.05) into a sub-display
|
|
263
|
+
* tiebreaker (~0..5e-7). It reorders entries WITHIN an activation-floor tier
|
|
264
|
+
* by cross-vector consensus without perturbing the 2-decimal `score` the CLI
|
|
265
|
+
* emits — so the #1623 score contract (and discover value-assertions) hold.
|
|
266
|
+
*/
|
|
267
|
+
const RRF_TIEBREAK_SCALE = 1e-5;
|
|
268
|
+
const keyOf = (e) => e.path || e.name || e.title;
|
|
269
|
+
/**
|
|
270
|
+
* Rank one facet's mapped, present capabilities for `phrase` — a single
|
|
271
|
+
* "vector" in the multi-vector fan-out (#1626). Returns null when the facet
|
|
272
|
+
* does not activate. Async so the caller can fan out across vectors in
|
|
273
|
+
* parallel via Promise.all; the work itself is CPU-bound and deterministic.
|
|
274
|
+
*/
|
|
275
|
+
async function rankFacetVector(facet, phrase, candidates, baseScoreOf) {
|
|
276
|
+
const activation = facetActivation(phrase, facet);
|
|
277
|
+
if (!activation || activation.status !== 'active' || activation.floor <= 0)
|
|
278
|
+
return null;
|
|
279
|
+
const matched = [];
|
|
280
|
+
const seen = new Set();
|
|
281
|
+
for (const cap of facet.capabilities) {
|
|
282
|
+
const m = candidates.find((c) => entryMatchesCapability(c, cap));
|
|
283
|
+
if (!m)
|
|
284
|
+
continue;
|
|
285
|
+
const k = keyOf(m);
|
|
286
|
+
if (seen.has(k))
|
|
287
|
+
continue;
|
|
288
|
+
seen.add(k);
|
|
289
|
+
matched.push(m);
|
|
290
|
+
}
|
|
291
|
+
// Within the vector, the most lexically-relevant owning capability leads —
|
|
292
|
+
// this is the per-vector ranking RRF consumes.
|
|
293
|
+
matched.sort((a, b) => baseScoreOf(b) - baseScoreOf(a));
|
|
294
|
+
return { facet, activation, ranked: matched };
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Multi-vector facet fan-out + reciprocal-rank fusion (#1623 single-pass →
|
|
298
|
+
* #1626 parallel fan-out). Fans out across the curated facet vectors in
|
|
299
|
+
* parallel, fuses them with the base lexical ranker via RRF, and lifts each
|
|
300
|
+
* facet-matched capability to its activation floor so it out-ranks generic
|
|
301
|
+
* artifacts that merely mention the domain word.
|
|
302
|
+
*
|
|
303
|
+
* The fused result is a SUPERSET of the #1623 single-pass behavior (ADR
|
|
304
|
+
* contract): facet-matched entries are guaranteed a place at no less than the
|
|
305
|
+
* activation floor (injected if the lexical pass missed them), base-only
|
|
306
|
+
* entries keep their lexical score, and RRF consensus orders entries within a
|
|
307
|
+
* floor tier (so multi-facet / more-relevant capabilities sort first) without
|
|
308
|
+
* changing the emitted 2-decimal score. Per-facet weighting is configurable.
|
|
309
|
+
*
|
|
310
|
+
* The returned list is re-sorted but NOT truncated — the caller applies limit.
|
|
311
|
+
* Pure/deterministic: no IO, no mutation of inputs.
|
|
312
|
+
*/
|
|
313
|
+
export async function applyFacetFusion(scored, candidates, phrase, weights = DEFAULT_FACET_WEIGHTS) {
|
|
314
|
+
const baseScore = new Map();
|
|
315
|
+
for (const r of scored)
|
|
316
|
+
baseScore.set(keyOf(r.entry), r.score);
|
|
317
|
+
const baseScoreOf = (e) => baseScore.get(keyOf(e)) ?? 0;
|
|
318
|
+
// Fan out across the facet vectors in parallel.
|
|
319
|
+
const vectors = (await Promise.all(DISCOVER_FACETS.map((f) => rankFacetVector(f, phrase, candidates, baseScoreOf)))).filter((v) => v !== null);
|
|
320
|
+
// RRF: combine the base ranker (the already-ordered `scored` list) with each
|
|
321
|
+
// facet vector by reciprocal rank. `rrf` drives intra-tier ordering; the
|
|
322
|
+
// floor lift preserves the #1623 contract.
|
|
323
|
+
const rrf = new Map();
|
|
324
|
+
const bestFloor = new Map();
|
|
325
|
+
const matchedEntry = new Map();
|
|
326
|
+
const activationsByEntry = new Map();
|
|
327
|
+
scored.forEach((r, i) => {
|
|
328
|
+
const k = keyOf(r.entry);
|
|
329
|
+
rrf.set(k, (rrf.get(k) ?? 0) + weights.base / (RRF_K + i + 1));
|
|
330
|
+
});
|
|
331
|
+
for (const v of vectors) {
|
|
332
|
+
const w = weights.facets[v.facet.facet] ?? 1.0;
|
|
333
|
+
v.ranked.forEach((e, i) => {
|
|
334
|
+
const k = keyOf(e);
|
|
335
|
+
rrf.set(k, (rrf.get(k) ?? 0) + w / (RRF_K + i + 1));
|
|
336
|
+
bestFloor.set(k, Math.max(bestFloor.get(k) ?? 0, v.activation.floor));
|
|
337
|
+
matchedEntry.set(k, e);
|
|
338
|
+
const activations = activationsByEntry.get(k) ?? [];
|
|
339
|
+
activations.push(v.activation);
|
|
340
|
+
activationsByEntry.set(k, activations);
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
const out = new Map();
|
|
344
|
+
for (const r of scored)
|
|
345
|
+
out.set(keyOf(r.entry), { entry: r.entry, score: r.score });
|
|
346
|
+
for (const [k, floor] of bestFloor) {
|
|
347
|
+
const entry = matchedEntry.get(k);
|
|
348
|
+
const base = baseScoreOf(entry);
|
|
349
|
+
const floorApplied = floor > base;
|
|
350
|
+
// RRF only orders entries inside a floor-lifted tier. Applying it when the
|
|
351
|
+
// lexical score already exceeds the floor silently boosts a generic facet
|
|
352
|
+
// match above an equally-scored exact project trigger (#1828).
|
|
353
|
+
const tiebreak = floorApplied ? (rrf.get(k) ?? 0) * RRF_TIEBREAK_SCALE : 0;
|
|
354
|
+
const lifted = floorApplied ? floor + tiebreak : base;
|
|
355
|
+
const facetDiagnostics = (activationsByEntry.get(k) ?? []).map((activation) => ({
|
|
356
|
+
facet: activation.facet,
|
|
357
|
+
label: activation.label,
|
|
358
|
+
matched_intent: activation.matchedIntent,
|
|
359
|
+
activation_floor: activation.floor,
|
|
360
|
+
base_score: base,
|
|
361
|
+
floor_applied: activation.floor > base,
|
|
362
|
+
rrf_tiebreak: activation.floor === floor ? tiebreak : 0,
|
|
363
|
+
}));
|
|
364
|
+
const existing = out.get(k);
|
|
365
|
+
if (existing) {
|
|
366
|
+
existing.score = Math.max(existing.score, lifted);
|
|
367
|
+
existing.facetDiagnostics = facetDiagnostics;
|
|
368
|
+
}
|
|
369
|
+
else {
|
|
370
|
+
out.set(k, { entry, score: lifted, facetDiagnostics });
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return Array.from(out.values()).sort((a, b) => b.score - a.score);
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=discover-facets.js.map
|