@aiwg/cli 0.0.0-bootstrap.0 → 2026.7.18
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/LICENSE +21 -0
- package/README.md +22 -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 +1486 -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 +886 -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 +65 -9
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Catalog Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads and merges model catalogs from multiple sources:
|
|
5
|
+
* - Builtin models (shipped with AIWG)
|
|
6
|
+
* - Discovered models (from auto-refresh)
|
|
7
|
+
* - Custom models (user-defined)
|
|
8
|
+
*
|
|
9
|
+
* Merge priority: custom > discovered > builtin
|
|
10
|
+
*
|
|
11
|
+
* @implements @.aiwg/architecture/enhanced-model-selection-design.md#9-model-catalog-system
|
|
12
|
+
* @module src/catalog/loader
|
|
13
|
+
*/
|
|
14
|
+
import { readFile } from 'fs/promises';
|
|
15
|
+
import { existsSync } from 'fs';
|
|
16
|
+
import path from 'path';
|
|
17
|
+
import { fileURLToPath } from 'url';
|
|
18
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
19
|
+
const __dirname = path.dirname(__filename);
|
|
20
|
+
/**
|
|
21
|
+
* Get catalog directory in user's data directory
|
|
22
|
+
*/
|
|
23
|
+
function getCatalogDir() {
|
|
24
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
25
|
+
return path.join(homeDir, '.local/share/aiwg/catalog');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Load a catalog file, handling missing files gracefully
|
|
29
|
+
*/
|
|
30
|
+
async function loadCatalogFile(filePath) {
|
|
31
|
+
if (!existsSync(filePath)) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
const content = await readFile(filePath, 'utf-8');
|
|
36
|
+
return JSON.parse(content);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.warn(`Failed to load catalog from ${filePath}:`, error);
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Merge two model catalogs
|
|
45
|
+
* Later catalog takes precedence for conflicts
|
|
46
|
+
*/
|
|
47
|
+
function mergeCatalogs(base, overlay) {
|
|
48
|
+
if (!overlay) {
|
|
49
|
+
return base;
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
models: {
|
|
53
|
+
...(base.models || {}),
|
|
54
|
+
...(overlay.models || {}),
|
|
55
|
+
},
|
|
56
|
+
providers: {
|
|
57
|
+
...(base.providers || {}),
|
|
58
|
+
...(overlay.providers || {}),
|
|
59
|
+
},
|
|
60
|
+
metadata: overlay.metadata || base.metadata,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Load the builtin models catalog
|
|
65
|
+
*/
|
|
66
|
+
async function loadBuiltinCatalog() {
|
|
67
|
+
const builtinPath = path.join(__dirname, 'builtin-models.json');
|
|
68
|
+
const catalog = await loadCatalogFile(builtinPath);
|
|
69
|
+
if (!catalog) {
|
|
70
|
+
throw new Error('Failed to load builtin models catalog');
|
|
71
|
+
}
|
|
72
|
+
return catalog;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Load the discovered models catalog
|
|
76
|
+
*/
|
|
77
|
+
async function loadDiscoveredCatalog() {
|
|
78
|
+
const catalogDir = getCatalogDir();
|
|
79
|
+
const discoveredPath = path.join(catalogDir, 'discovered-models.json');
|
|
80
|
+
return loadCatalogFile(discoveredPath);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Load the custom models catalog
|
|
84
|
+
*/
|
|
85
|
+
async function loadCustomCatalog() {
|
|
86
|
+
const catalogDir = getCatalogDir();
|
|
87
|
+
const customPath = path.join(catalogDir, 'custom-models.json');
|
|
88
|
+
return loadCatalogFile(customPath);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Load and merge all catalog sources
|
|
92
|
+
*
|
|
93
|
+
* Merge order: builtin -> discovered -> custom
|
|
94
|
+
* Later sources override earlier ones
|
|
95
|
+
*/
|
|
96
|
+
export async function loadCatalog() {
|
|
97
|
+
const builtin = await loadBuiltinCatalog();
|
|
98
|
+
const discovered = await loadDiscoveredCatalog();
|
|
99
|
+
const custom = await loadCustomCatalog();
|
|
100
|
+
let merged = mergeCatalogs(builtin, discovered);
|
|
101
|
+
merged = mergeCatalogs(merged, custom);
|
|
102
|
+
// Ensure required fields exist
|
|
103
|
+
const catalog = {
|
|
104
|
+
models: merged.models || {},
|
|
105
|
+
providers: merged.providers || {},
|
|
106
|
+
metadata: merged.metadata || {
|
|
107
|
+
version: '1.0.0',
|
|
108
|
+
lastRefresh: new Date().toISOString(),
|
|
109
|
+
modelCount: 0,
|
|
110
|
+
providerCount: 0,
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
// Update counts
|
|
114
|
+
catalog.metadata.modelCount = Object.keys(catalog.models).length;
|
|
115
|
+
catalog.metadata.providerCount = Object.keys(catalog.providers).length;
|
|
116
|
+
return catalog;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get a single model by ID or alias
|
|
120
|
+
*/
|
|
121
|
+
export async function getModel(modelIdOrAlias) {
|
|
122
|
+
const catalog = await loadCatalog();
|
|
123
|
+
// Try direct ID lookup
|
|
124
|
+
if (catalog.models[modelIdOrAlias]) {
|
|
125
|
+
return catalog.models[modelIdOrAlias];
|
|
126
|
+
}
|
|
127
|
+
// Try alias lookup
|
|
128
|
+
for (const model of Object.values(catalog.models)) {
|
|
129
|
+
if (model.aliases.includes(modelIdOrAlias)) {
|
|
130
|
+
return model;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* List all models, optionally filtered
|
|
137
|
+
*/
|
|
138
|
+
export async function listModels(filter) {
|
|
139
|
+
const catalog = await loadCatalog();
|
|
140
|
+
let models = Object.values(catalog.models);
|
|
141
|
+
if (!filter) {
|
|
142
|
+
return models;
|
|
143
|
+
}
|
|
144
|
+
// Apply filters
|
|
145
|
+
if (filter.provider) {
|
|
146
|
+
models = models.filter((m) => m.provider === filter.provider);
|
|
147
|
+
}
|
|
148
|
+
if (filter.status) {
|
|
149
|
+
models = models.filter((m) => m.status === filter.status);
|
|
150
|
+
}
|
|
151
|
+
if (filter.tag) {
|
|
152
|
+
models = models.filter((m) => m.tags.includes(filter.tag));
|
|
153
|
+
}
|
|
154
|
+
if (filter.minContext !== undefined) {
|
|
155
|
+
const minCtx = filter.minContext;
|
|
156
|
+
models = models.filter((m) => m.capabilities.contextWindow >= minCtx);
|
|
157
|
+
}
|
|
158
|
+
if (filter.capability) {
|
|
159
|
+
const cap = filter.capability;
|
|
160
|
+
models = models.filter((m) => {
|
|
161
|
+
const value = m.capabilities[cap];
|
|
162
|
+
// For boolean capabilities, must be true
|
|
163
|
+
if (typeof value === 'boolean') {
|
|
164
|
+
return value === true;
|
|
165
|
+
}
|
|
166
|
+
// For quality ratings, exclude 'poor' and 'unknown'
|
|
167
|
+
if (typeof value === 'string') {
|
|
168
|
+
return value !== 'poor' && value !== 'unknown';
|
|
169
|
+
}
|
|
170
|
+
// For numbers, must be > 0
|
|
171
|
+
return value > 0;
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
return models;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get provider information
|
|
178
|
+
*/
|
|
179
|
+
export async function getProvider(providerId) {
|
|
180
|
+
const catalog = await loadCatalog();
|
|
181
|
+
return catalog.providers[providerId] || null;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* List all providers
|
|
185
|
+
*/
|
|
186
|
+
export async function listProviders() {
|
|
187
|
+
const catalog = await loadCatalog();
|
|
188
|
+
return Object.entries(catalog.providers).map(([id, info]) => ({ id, info }));
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Search models by query string
|
|
192
|
+
* Searches in: id, displayName, aliases, tags
|
|
193
|
+
*/
|
|
194
|
+
export async function searchModels(query) {
|
|
195
|
+
const catalog = await loadCatalog();
|
|
196
|
+
const lowerQuery = query.toLowerCase();
|
|
197
|
+
return Object.values(catalog.models).filter((model) => {
|
|
198
|
+
// Search in ID
|
|
199
|
+
if (model.id.toLowerCase().includes(lowerQuery)) {
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
// Search in display name
|
|
203
|
+
if (model.displayName.toLowerCase().includes(lowerQuery)) {
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
// Search in aliases
|
|
207
|
+
if (model.aliases.some((alias) => alias.toLowerCase().includes(lowerQuery))) {
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
// Search in tags
|
|
211
|
+
if (model.tags.some((tag) => tag.toLowerCase().includes(lowerQuery))) {
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
return false;
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model Catalog Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads and merges model catalogs from multiple sources:
|
|
5
|
+
* - Builtin models (shipped with AIWG)
|
|
6
|
+
* - Discovered models (from auto-refresh)
|
|
7
|
+
* - Custom models (user-defined)
|
|
8
|
+
*
|
|
9
|
+
* Merge priority: custom > discovered > builtin
|
|
10
|
+
*
|
|
11
|
+
* @implements @.aiwg/architecture/enhanced-model-selection-design.md#9-model-catalog-system
|
|
12
|
+
* @module src/catalog/loader
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { readFile } from 'fs/promises';
|
|
16
|
+
import { existsSync } from 'fs';
|
|
17
|
+
import path from 'path';
|
|
18
|
+
import { fileURLToPath } from 'url';
|
|
19
|
+
|
|
20
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
21
|
+
const __dirname = path.dirname(__filename);
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Get catalog directory in user's data directory
|
|
25
|
+
*/
|
|
26
|
+
function getCatalogDir() {
|
|
27
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
28
|
+
return path.join(homeDir, '.local/share/aiwg/catalog');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Load a catalog file, handling missing files gracefully
|
|
33
|
+
*/
|
|
34
|
+
async function loadCatalogFile(filePath) {
|
|
35
|
+
if (!existsSync(filePath)) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
try {
|
|
40
|
+
const content = await readFile(filePath, 'utf-8');
|
|
41
|
+
return JSON.parse(content);
|
|
42
|
+
} catch (error) {
|
|
43
|
+
console.warn(`Failed to load catalog from ${filePath}:`, error);
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Merge two model catalogs
|
|
50
|
+
* Later catalog takes precedence for conflicts
|
|
51
|
+
*/
|
|
52
|
+
function mergeCatalogs(base, overlay) {
|
|
53
|
+
if (!overlay) {
|
|
54
|
+
return base;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return {
|
|
58
|
+
models: {
|
|
59
|
+
...(base.models || {}),
|
|
60
|
+
...(overlay.models || {}),
|
|
61
|
+
},
|
|
62
|
+
providers: {
|
|
63
|
+
...(base.providers || {}),
|
|
64
|
+
...(overlay.providers || {}),
|
|
65
|
+
},
|
|
66
|
+
metadata: overlay.metadata || base.metadata,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Load the builtin models catalog
|
|
72
|
+
*/
|
|
73
|
+
async function loadBuiltinCatalog() {
|
|
74
|
+
const builtinPath = path.join(__dirname, 'builtin-models.json');
|
|
75
|
+
const catalog = await loadCatalogFile(builtinPath);
|
|
76
|
+
|
|
77
|
+
if (!catalog) {
|
|
78
|
+
throw new Error('Failed to load builtin models catalog');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return catalog;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Load the discovered models catalog
|
|
86
|
+
*/
|
|
87
|
+
async function loadDiscoveredCatalog() {
|
|
88
|
+
const catalogDir = getCatalogDir();
|
|
89
|
+
const discoveredPath = path.join(catalogDir, 'discovered-models.json');
|
|
90
|
+
return loadCatalogFile(discoveredPath);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Load the custom models catalog
|
|
95
|
+
*/
|
|
96
|
+
async function loadCustomCatalog() {
|
|
97
|
+
const catalogDir = getCatalogDir();
|
|
98
|
+
const customPath = path.join(catalogDir, 'custom-models.json');
|
|
99
|
+
return loadCatalogFile(customPath);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Load and merge all catalog sources
|
|
104
|
+
*
|
|
105
|
+
* Merge order: builtin -> discovered -> custom
|
|
106
|
+
* Later sources override earlier ones
|
|
107
|
+
*/
|
|
108
|
+
export async function loadCatalog() {
|
|
109
|
+
const builtin = await loadBuiltinCatalog();
|
|
110
|
+
const discovered = await loadDiscoveredCatalog();
|
|
111
|
+
const custom = await loadCustomCatalog();
|
|
112
|
+
|
|
113
|
+
let merged = mergeCatalogs(builtin, discovered);
|
|
114
|
+
merged = mergeCatalogs(merged, custom);
|
|
115
|
+
|
|
116
|
+
// Ensure required fields exist
|
|
117
|
+
const catalog = {
|
|
118
|
+
models: merged.models || {},
|
|
119
|
+
providers: merged.providers || {},
|
|
120
|
+
metadata: merged.metadata || {
|
|
121
|
+
version: '1.0.0',
|
|
122
|
+
lastRefresh: new Date().toISOString(),
|
|
123
|
+
modelCount: 0,
|
|
124
|
+
providerCount: 0,
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
// Update counts
|
|
129
|
+
catalog.metadata.modelCount = Object.keys(catalog.models).length;
|
|
130
|
+
catalog.metadata.providerCount = Object.keys(catalog.providers).length;
|
|
131
|
+
|
|
132
|
+
return catalog;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Get a single model by ID or alias
|
|
137
|
+
*/
|
|
138
|
+
export async function getModel(modelIdOrAlias) {
|
|
139
|
+
const catalog = await loadCatalog();
|
|
140
|
+
|
|
141
|
+
// Try direct ID lookup
|
|
142
|
+
if (catalog.models[modelIdOrAlias]) {
|
|
143
|
+
return { ...catalog.models[modelIdOrAlias], id: modelIdOrAlias };
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Try alias lookup
|
|
147
|
+
for (const [id, model] of Object.entries(catalog.models)) {
|
|
148
|
+
if (model.aliases.includes(modelIdOrAlias)) {
|
|
149
|
+
return { ...model, id };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* List all models, optionally filtered
|
|
158
|
+
*/
|
|
159
|
+
export async function listModels(filter) {
|
|
160
|
+
const catalog = await loadCatalog();
|
|
161
|
+
let models = Object.entries(catalog.models).map(([id, model]) => ({ ...model, id }));
|
|
162
|
+
|
|
163
|
+
if (!filter) {
|
|
164
|
+
return models;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// Apply filters
|
|
168
|
+
if (filter.provider) {
|
|
169
|
+
models = models.filter((m) => m.provider === filter.provider);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
if (filter.status) {
|
|
173
|
+
models = models.filter((m) => m.status === filter.status);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (filter.tag) {
|
|
177
|
+
models = models.filter((m) => m.tags.includes(filter.tag));
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if (filter.minContext) {
|
|
181
|
+
models = models.filter((m) => m.capabilities.contextWindow >= filter.minContext);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (filter.capability) {
|
|
185
|
+
const cap = filter.capability;
|
|
186
|
+
models = models.filter((m) => {
|
|
187
|
+
const value = m.capabilities[cap];
|
|
188
|
+
// For boolean capabilities, must be true
|
|
189
|
+
if (typeof value === 'boolean') {
|
|
190
|
+
return value === true;
|
|
191
|
+
}
|
|
192
|
+
// For quality ratings, exclude 'poor' and 'unknown'
|
|
193
|
+
if (typeof value === 'string') {
|
|
194
|
+
return value !== 'poor' && value !== 'unknown';
|
|
195
|
+
}
|
|
196
|
+
// For numbers, must be > 0
|
|
197
|
+
return value > 0;
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
return models;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Get provider information
|
|
206
|
+
*/
|
|
207
|
+
export async function getProvider(providerId) {
|
|
208
|
+
const catalog = await loadCatalog();
|
|
209
|
+
return catalog.providers[providerId] || null;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* List all providers
|
|
214
|
+
*/
|
|
215
|
+
export async function listProviders() {
|
|
216
|
+
const catalog = await loadCatalog();
|
|
217
|
+
return Object.entries(catalog.providers).map(([id, info]) => ({ id, info }));
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Search models by query string
|
|
222
|
+
* Searches in: id, displayName, aliases, tags
|
|
223
|
+
*/
|
|
224
|
+
export async function searchModels(query) {
|
|
225
|
+
const catalog = await loadCatalog();
|
|
226
|
+
const lowerQuery = query.toLowerCase();
|
|
227
|
+
|
|
228
|
+
return Object.entries(catalog.models).map(([id, model]) => ({ ...model, id })).filter((model) => {
|
|
229
|
+
// Search in ID
|
|
230
|
+
if (model.id.toLowerCase().includes(lowerQuery)) {
|
|
231
|
+
return true;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// Search in display name
|
|
235
|
+
if (model.displayName.toLowerCase().includes(lowerQuery)) {
|
|
236
|
+
return true;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// Search in aliases
|
|
240
|
+
if (model.aliases.some((alias) => alias.toLowerCase().includes(lowerQuery))) {
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// Search in tags
|
|
245
|
+
if (model.tags.some((tag) => tag.toLowerCase().includes(lowerQuery))) {
|
|
246
|
+
return true;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
return false;
|
|
250
|
+
});
|
|
251
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"refreshSchedule": {
|
|
3
|
+
"automatic": false,
|
|
4
|
+
"intervalDays": 7,
|
|
5
|
+
"onStartup": false,
|
|
6
|
+
"notifyOnNew": true
|
|
7
|
+
},
|
|
8
|
+
"sources": {
|
|
9
|
+
"anthropic": {
|
|
10
|
+
"enabled": true,
|
|
11
|
+
"endpoint": "https://api.anthropic.com/v1/models",
|
|
12
|
+
"requiresAuth": true,
|
|
13
|
+
"authEnvVar": "ANTHROPIC_API_KEY",
|
|
14
|
+
"cacheDuration": "7d"
|
|
15
|
+
},
|
|
16
|
+
"openai": {
|
|
17
|
+
"enabled": true,
|
|
18
|
+
"endpoint": "https://api.openai.com/v1/models",
|
|
19
|
+
"requiresAuth": true,
|
|
20
|
+
"authEnvVar": "OPENAI_API_KEY",
|
|
21
|
+
"cacheDuration": "7d"
|
|
22
|
+
},
|
|
23
|
+
"openrouter": {
|
|
24
|
+
"enabled": true,
|
|
25
|
+
"endpoint": "https://openrouter.ai/api/v1/models",
|
|
26
|
+
"requiresAuth": false,
|
|
27
|
+
"cacheDuration": "1d"
|
|
28
|
+
},
|
|
29
|
+
"github-litellm": {
|
|
30
|
+
"enabled": true,
|
|
31
|
+
"endpoint": "https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json",
|
|
32
|
+
"requiresAuth": false,
|
|
33
|
+
"cacheDuration": "3d"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"fallbackBehavior": {
|
|
37
|
+
"onSourceFailure": "use-cache",
|
|
38
|
+
"maxCacheAge": "30d",
|
|
39
|
+
"alertOnStale": true
|
|
40
|
+
}
|
|
41
|
+
}
|