@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,370 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Quality service for assessing research source quality
|
|
3
|
+
*
|
|
4
|
+
* @module research/services/quality
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Quality service for assessing and reporting on source quality
|
|
8
|
+
*/
|
|
9
|
+
export class QualityService {
|
|
10
|
+
constructor(_config = {}) {
|
|
11
|
+
// Config values will be used when threshold checking is implemented
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Assess GRADE evidence quality level
|
|
15
|
+
*/
|
|
16
|
+
assessGRADE(source) {
|
|
17
|
+
const paper = source.paper;
|
|
18
|
+
// Start with baseline based on publication type
|
|
19
|
+
let level = this.getBaselineGRADE(paper.type);
|
|
20
|
+
// Adjust based on other factors
|
|
21
|
+
if (paper.type === 'preprint' && !paper.doi) {
|
|
22
|
+
level = this.downgrade(level); // Not peer-reviewed and no DOI
|
|
23
|
+
}
|
|
24
|
+
if (paper.citationCount && paper.citationCount > 100) {
|
|
25
|
+
level = this.upgrade(level); // High citation count indicates quality
|
|
26
|
+
}
|
|
27
|
+
if (!paper.abstract) {
|
|
28
|
+
level = this.downgrade(level); // Missing metadata
|
|
29
|
+
}
|
|
30
|
+
return level;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Validate FAIR compliance
|
|
34
|
+
*/
|
|
35
|
+
validateFAIR(source) {
|
|
36
|
+
const findable = this.assessFindable(source);
|
|
37
|
+
const accessible = this.assessAccessible(source);
|
|
38
|
+
const interoperable = this.assessInteroperable(source);
|
|
39
|
+
const reusable = this.assessReusable(source);
|
|
40
|
+
const overall = (findable.score +
|
|
41
|
+
accessible.score +
|
|
42
|
+
interoperable.score +
|
|
43
|
+
reusable.score) / 4;
|
|
44
|
+
const notes = [];
|
|
45
|
+
if (overall >= 0.9) {
|
|
46
|
+
notes.push('Excellent FAIR compliance');
|
|
47
|
+
}
|
|
48
|
+
else if (overall >= 0.7) {
|
|
49
|
+
notes.push('Good FAIR compliance with room for improvement');
|
|
50
|
+
}
|
|
51
|
+
else if (overall >= 0.5) {
|
|
52
|
+
notes.push('Moderate FAIR compliance - consider enhancements');
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
notes.push('Low FAIR compliance - significant improvements needed');
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
overall,
|
|
59
|
+
findable,
|
|
60
|
+
accessible,
|
|
61
|
+
interoperable,
|
|
62
|
+
reusable,
|
|
63
|
+
notes,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Calculate multi-dimensional quality score
|
|
68
|
+
*/
|
|
69
|
+
calculateQualityScore(source) {
|
|
70
|
+
const gradeLevel = this.assessGRADE(source);
|
|
71
|
+
const fairScore = source.fairScore || this.validateFAIR(source);
|
|
72
|
+
const dimensions = {
|
|
73
|
+
methodological: this.assessMethodological(source),
|
|
74
|
+
evidential: this.assessEvidential(source),
|
|
75
|
+
transparency: this.assessTransparency(source),
|
|
76
|
+
reproducibility: this.assessReproducibility(source),
|
|
77
|
+
fairCompliance: fairScore.overall,
|
|
78
|
+
};
|
|
79
|
+
const overall = (dimensions.methodological +
|
|
80
|
+
dimensions.evidential +
|
|
81
|
+
dimensions.transparency +
|
|
82
|
+
dimensions.reproducibility +
|
|
83
|
+
dimensions.fairCompliance) / 5;
|
|
84
|
+
const notes = [];
|
|
85
|
+
if (overall >= 0.8) {
|
|
86
|
+
notes.push('High-quality source suitable for critical decisions');
|
|
87
|
+
}
|
|
88
|
+
else if (overall >= 0.6) {
|
|
89
|
+
notes.push('Moderate-quality source suitable for general reference');
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
notes.push('Lower-quality source - use with caution');
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
overall,
|
|
96
|
+
dimensions,
|
|
97
|
+
gradeLevel,
|
|
98
|
+
sourceType: source.paper.type || 'other',
|
|
99
|
+
notes,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Generate aggregate quality report
|
|
104
|
+
*/
|
|
105
|
+
generateReport(sources) {
|
|
106
|
+
const gradeDistribution = {
|
|
107
|
+
HIGH: 0,
|
|
108
|
+
MODERATE: 0,
|
|
109
|
+
LOW: 0,
|
|
110
|
+
VERY_LOW: 0,
|
|
111
|
+
};
|
|
112
|
+
const sourceTypeDistribution = {};
|
|
113
|
+
let totalMethodological = 0;
|
|
114
|
+
let totalEvidential = 0;
|
|
115
|
+
let totalTransparency = 0;
|
|
116
|
+
let totalReproducibility = 0;
|
|
117
|
+
let totalFAIR = 0;
|
|
118
|
+
let totalOverall = 0;
|
|
119
|
+
for (const source of sources) {
|
|
120
|
+
const grade = this.assessGRADE(source);
|
|
121
|
+
gradeDistribution[grade]++;
|
|
122
|
+
const type = source.paper.type || 'other';
|
|
123
|
+
sourceTypeDistribution[type] = (sourceTypeDistribution[type] || 0) + 1;
|
|
124
|
+
const quality = this.calculateQualityScore(source);
|
|
125
|
+
totalMethodological += quality.dimensions.methodological;
|
|
126
|
+
totalEvidential += quality.dimensions.evidential;
|
|
127
|
+
totalTransparency += quality.dimensions.transparency;
|
|
128
|
+
totalReproducibility += quality.dimensions.reproducibility;
|
|
129
|
+
totalFAIR += quality.dimensions.fairCompliance;
|
|
130
|
+
totalOverall += quality.overall;
|
|
131
|
+
}
|
|
132
|
+
const count = sources.length;
|
|
133
|
+
const averageScores = {
|
|
134
|
+
overall: totalOverall / count,
|
|
135
|
+
methodological: totalMethodological / count,
|
|
136
|
+
evidential: totalEvidential / count,
|
|
137
|
+
transparency: totalTransparency / count,
|
|
138
|
+
reproducibility: totalReproducibility / count,
|
|
139
|
+
fairCompliance: totalFAIR / count,
|
|
140
|
+
};
|
|
141
|
+
const summary = this.buildSummary(count, averageScores.overall, gradeDistribution);
|
|
142
|
+
const recommendations = this.buildRecommendations(averageScores, gradeDistribution);
|
|
143
|
+
return {
|
|
144
|
+
generatedAt: new Date().toISOString(),
|
|
145
|
+
totalSources: count,
|
|
146
|
+
gradeDistribution,
|
|
147
|
+
sourceTypeDistribution,
|
|
148
|
+
averageScores,
|
|
149
|
+
summary,
|
|
150
|
+
recommendations,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get baseline GRADE level for publication type
|
|
155
|
+
*/
|
|
156
|
+
getBaselineGRADE(type) {
|
|
157
|
+
if (type === 'journal')
|
|
158
|
+
return 'HIGH';
|
|
159
|
+
if (type === 'conference')
|
|
160
|
+
return 'HIGH';
|
|
161
|
+
if (type === 'preprint')
|
|
162
|
+
return 'MODERATE';
|
|
163
|
+
if (type === 'thesis')
|
|
164
|
+
return 'MODERATE';
|
|
165
|
+
return 'LOW';
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Upgrade GRADE level
|
|
169
|
+
*/
|
|
170
|
+
upgrade(level) {
|
|
171
|
+
const levels = ['HIGH', 'MODERATE', 'LOW', 'VERY_LOW'];
|
|
172
|
+
const index = levels.indexOf(level);
|
|
173
|
+
return index > 0 ? levels[index - 1] : level;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Downgrade GRADE level
|
|
177
|
+
*/
|
|
178
|
+
downgrade(level) {
|
|
179
|
+
const levels = ['HIGH', 'MODERATE', 'LOW', 'VERY_LOW'];
|
|
180
|
+
const index = levels.indexOf(level);
|
|
181
|
+
return index < levels.length - 1 ? levels[index + 1] : level;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Assess Findable dimension
|
|
185
|
+
*/
|
|
186
|
+
assessFindable(source) {
|
|
187
|
+
const criteria = [
|
|
188
|
+
{
|
|
189
|
+
id: 'F1',
|
|
190
|
+
description: 'Assigned globally unique identifier',
|
|
191
|
+
met: !!source.refId,
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
id: 'F2',
|
|
195
|
+
description: 'Rich metadata',
|
|
196
|
+
met: !!source.paper.abstract && source.paper.authors.length > 0,
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
id: 'F3',
|
|
200
|
+
description: 'Metadata includes identifier',
|
|
201
|
+
met: !!(source.paper.doi || source.paper.arxivId),
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
id: 'F4',
|
|
205
|
+
description: 'Indexed in searchable resource',
|
|
206
|
+
met: true,
|
|
207
|
+
},
|
|
208
|
+
];
|
|
209
|
+
const score = criteria.filter((c) => c.met).length / criteria.length;
|
|
210
|
+
return { score, criteria };
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Assess Accessible dimension
|
|
214
|
+
*/
|
|
215
|
+
assessAccessible(source) {
|
|
216
|
+
const criteria = [
|
|
217
|
+
{
|
|
218
|
+
id: 'A1',
|
|
219
|
+
description: 'Retrievable by identifier',
|
|
220
|
+
met: !!source.filePath,
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
id: 'A2',
|
|
224
|
+
description: 'Metadata accessible',
|
|
225
|
+
met: true,
|
|
226
|
+
},
|
|
227
|
+
];
|
|
228
|
+
const score = criteria.filter((c) => c.met).length / criteria.length;
|
|
229
|
+
return { score, criteria };
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Assess Interoperable dimension
|
|
233
|
+
*/
|
|
234
|
+
assessInteroperable(source) {
|
|
235
|
+
const criteria = [
|
|
236
|
+
{
|
|
237
|
+
id: 'I1',
|
|
238
|
+
description: 'Formal knowledge representation',
|
|
239
|
+
met: true,
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
id: 'I2',
|
|
243
|
+
description: 'FAIR-compliant vocabularies',
|
|
244
|
+
met: true,
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
id: 'I3',
|
|
248
|
+
description: 'Qualified references',
|
|
249
|
+
met: !!(source.paper.doi || source.paper.arxivId),
|
|
250
|
+
},
|
|
251
|
+
];
|
|
252
|
+
const score = criteria.filter((c) => c.met).length / criteria.length;
|
|
253
|
+
return { score, criteria };
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Assess Reusable dimension
|
|
257
|
+
*/
|
|
258
|
+
assessReusable(source) {
|
|
259
|
+
const criteria = [
|
|
260
|
+
{
|
|
261
|
+
id: 'R1',
|
|
262
|
+
description: 'Accurate metadata',
|
|
263
|
+
met: !!source.paper.abstract,
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
id: 'R2',
|
|
267
|
+
description: 'Detailed provenance',
|
|
268
|
+
met: !!source.acquiredAt,
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
id: 'R3',
|
|
272
|
+
description: 'Meets community standards',
|
|
273
|
+
met: true,
|
|
274
|
+
},
|
|
275
|
+
];
|
|
276
|
+
const score = criteria.filter((c) => c.met).length / criteria.length;
|
|
277
|
+
return { score, criteria };
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Assess methodological quality
|
|
281
|
+
*/
|
|
282
|
+
assessMethodological(source) {
|
|
283
|
+
let score = 0.5; // Base score
|
|
284
|
+
if (source.paper.type === 'journal' || source.paper.type === 'conference') {
|
|
285
|
+
score += 0.3; // Peer-reviewed
|
|
286
|
+
}
|
|
287
|
+
if (source.paper.abstract && source.paper.abstract.length > 100) {
|
|
288
|
+
score += 0.1; // Substantial abstract
|
|
289
|
+
}
|
|
290
|
+
if (source.paper.venue) {
|
|
291
|
+
score += 0.1; // Published in venue
|
|
292
|
+
}
|
|
293
|
+
return Math.min(score, 1.0);
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Assess evidential quality
|
|
297
|
+
*/
|
|
298
|
+
assessEvidential(source) {
|
|
299
|
+
let score = 0.5; // Base score
|
|
300
|
+
if (source.paper.citationCount) {
|
|
301
|
+
// Log scale for citation count
|
|
302
|
+
const citationScore = Math.log10(source.paper.citationCount + 1) / 3;
|
|
303
|
+
score += Math.min(citationScore, 0.3);
|
|
304
|
+
}
|
|
305
|
+
if (source.paper.year && source.paper.year >= new Date().getFullYear() - 5) {
|
|
306
|
+
score += 0.2; // Recent publication
|
|
307
|
+
}
|
|
308
|
+
return Math.min(score, 1.0);
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Assess transparency
|
|
312
|
+
*/
|
|
313
|
+
assessTransparency(source) {
|
|
314
|
+
let score = 0.5; // Base score
|
|
315
|
+
if (source.paper.doi) {
|
|
316
|
+
score += 0.2; // Has DOI
|
|
317
|
+
}
|
|
318
|
+
if (source.paper.pdfUrl) {
|
|
319
|
+
score += 0.2; // Accessible PDF
|
|
320
|
+
}
|
|
321
|
+
if (source.paper.authors.length > 0) {
|
|
322
|
+
score += 0.1; // Author information
|
|
323
|
+
}
|
|
324
|
+
return Math.min(score, 1.0);
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Assess reproducibility
|
|
328
|
+
*/
|
|
329
|
+
assessReproducibility(source) {
|
|
330
|
+
let score = 0.5; // Base score
|
|
331
|
+
if (source.checksum) {
|
|
332
|
+
score += 0.2; // File integrity
|
|
333
|
+
}
|
|
334
|
+
if (source.paper.source) {
|
|
335
|
+
score += 0.2; // Source tracked
|
|
336
|
+
}
|
|
337
|
+
if (source.acquiredAt) {
|
|
338
|
+
score += 0.1; // Acquisition metadata
|
|
339
|
+
}
|
|
340
|
+
return Math.min(score, 1.0);
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Build summary text
|
|
344
|
+
*/
|
|
345
|
+
buildSummary(count, averageOverall, gradeDistribution) {
|
|
346
|
+
const highCount = gradeDistribution.HIGH;
|
|
347
|
+
const percentage = ((averageOverall * 100) | 0);
|
|
348
|
+
return `Analyzed ${count} sources with average quality score of ${percentage}%. ${highCount} sources rated as HIGH quality.`;
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Build recommendations
|
|
352
|
+
*/
|
|
353
|
+
buildRecommendations(averageScores, gradeDistribution) {
|
|
354
|
+
const recommendations = [];
|
|
355
|
+
if (averageScores.methodological < 0.7) {
|
|
356
|
+
recommendations.push('Consider increasing proportion of peer-reviewed sources');
|
|
357
|
+
}
|
|
358
|
+
if (averageScores.fairCompliance < 0.7) {
|
|
359
|
+
recommendations.push('Improve FAIR compliance by ensuring all sources have DOIs or persistent identifiers');
|
|
360
|
+
}
|
|
361
|
+
if (averageScores.reproducibility < 0.7) {
|
|
362
|
+
recommendations.push('Enhance reproducibility by maintaining complete acquisition metadata');
|
|
363
|
+
}
|
|
364
|
+
if (gradeDistribution.VERY_LOW > 0) {
|
|
365
|
+
recommendations.push('Review VERY_LOW quality sources and consider replacement with higher-quality alternatives');
|
|
366
|
+
}
|
|
367
|
+
return recommendations;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=quality.js.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Research storage CLI — `aiwg research-store <subcommand>`
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around `runSubsystemCli('research', ...)`. Used by
|
|
5
|
+
* research-acquire / corpus-* skills (#968) so the research corpus
|
|
6
|
+
* honors `.aiwg/storage.config` redirection (e.g., `roots.research`
|
|
7
|
+
* pointing at a secondary drive — one of the headline use cases in #934).
|
|
8
|
+
*
|
|
9
|
+
* Note: AIWG already has many `research-*` commands (research-discover,
|
|
10
|
+
* research-acquire, etc.). This new command is named `research-store`
|
|
11
|
+
* to disambiguate — it's the storage primitive layer, not a workflow.
|
|
12
|
+
*
|
|
13
|
+
* @issue #934
|
|
14
|
+
* @issue #968
|
|
15
|
+
*/
|
|
16
|
+
import { runSubsystemCli } from '../storage/subsystem-cli.js';
|
|
17
|
+
export async function main(args) {
|
|
18
|
+
await runSubsystemCli('research', args, { displayName: 'research-store' });
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=storage-cli.js.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the Research Framework
|
|
3
|
+
*
|
|
4
|
+
* @module research/types
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Research Framework error codes
|
|
8
|
+
*/
|
|
9
|
+
export var ResearchErrorCode;
|
|
10
|
+
(function (ResearchErrorCode) {
|
|
11
|
+
// RF-1xx: Client errors
|
|
12
|
+
ResearchErrorCode["RF_100"] = "RF-100: Invalid request parameters";
|
|
13
|
+
ResearchErrorCode["RF_101"] = "RF-101: Missing required parameter";
|
|
14
|
+
ResearchErrorCode["RF_102"] = "RF-102: Invalid API key";
|
|
15
|
+
ResearchErrorCode["RF_103"] = "RF-103: Rate limit exceeded";
|
|
16
|
+
ResearchErrorCode["RF_104"] = "RF-104: Request timeout";
|
|
17
|
+
// RF-2xx: Server errors
|
|
18
|
+
ResearchErrorCode["RF_200"] = "RF-200: API server error";
|
|
19
|
+
ResearchErrorCode["RF_201"] = "RF-201: Service unavailable";
|
|
20
|
+
ResearchErrorCode["RF_202"] = "RF-202: Gateway timeout";
|
|
21
|
+
// RF-3xx: Data errors
|
|
22
|
+
ResearchErrorCode["RF_300"] = "RF-300: Resource not found";
|
|
23
|
+
ResearchErrorCode["RF_301"] = "RF-301: Invalid response format";
|
|
24
|
+
ResearchErrorCode["RF_302"] = "RF-302: Missing required field";
|
|
25
|
+
// RF-4xx: Cache errors
|
|
26
|
+
ResearchErrorCode["RF_400"] = "RF-400: Cache read error";
|
|
27
|
+
ResearchErrorCode["RF_401"] = "RF-401: Cache write error";
|
|
28
|
+
ResearchErrorCode["RF_402"] = "RF-402: Cache invalidation error";
|
|
29
|
+
// RF-5xx: Network errors
|
|
30
|
+
ResearchErrorCode["RF_500"] = "RF-500: Network error";
|
|
31
|
+
ResearchErrorCode["RF_501"] = "RF-501: Connection refused";
|
|
32
|
+
ResearchErrorCode["RF_502"] = "RF-502: DNS resolution failed";
|
|
33
|
+
})(ResearchErrorCode || (ResearchErrorCode = {}));
|
|
34
|
+
/**
|
|
35
|
+
* Research Framework error
|
|
36
|
+
*/
|
|
37
|
+
export class ResearchError extends Error {
|
|
38
|
+
code;
|
|
39
|
+
cause;
|
|
40
|
+
constructor(code, message, cause) {
|
|
41
|
+
super(message);
|
|
42
|
+
this.code = code;
|
|
43
|
+
this.cause = cause;
|
|
44
|
+
this.name = 'ResearchError';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
export declare const DEFAULT_RESOURCE_BASE_URL = "https://releases.aiwg.io";
|
|
2
|
+
export declare const AIWG_RELEASE_PUBLIC_KEY_PEM = "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEA8BsJ2vjuHBReexz328sknfL7MKUtxynX6MGfqFVMD38=\n-----END PUBLIC KEY-----";
|
|
3
|
+
export type ResourceSource = "local" | "web" | "auto";
|
|
4
|
+
export type ResourceSelector = {
|
|
5
|
+
kind: "exact";
|
|
6
|
+
value: string;
|
|
7
|
+
} | {
|
|
8
|
+
kind: "channel";
|
|
9
|
+
value: string;
|
|
10
|
+
};
|
|
11
|
+
export interface ResourceFetchResponse {
|
|
12
|
+
ok: boolean;
|
|
13
|
+
status: number;
|
|
14
|
+
headers: {
|
|
15
|
+
get(name: string): string | null;
|
|
16
|
+
};
|
|
17
|
+
body?: {
|
|
18
|
+
getReader(): {
|
|
19
|
+
read(): Promise<{
|
|
20
|
+
done: boolean;
|
|
21
|
+
value?: Uint8Array;
|
|
22
|
+
}>;
|
|
23
|
+
cancel?(reason?: unknown): Promise<void>;
|
|
24
|
+
};
|
|
25
|
+
} | null;
|
|
26
|
+
arrayBuffer(): Promise<ArrayBuffer>;
|
|
27
|
+
}
|
|
28
|
+
export type ResourceFetcher = (input: string | URL, init?: {
|
|
29
|
+
redirect?: "error";
|
|
30
|
+
headers?: Record<string, string>;
|
|
31
|
+
signal?: AbortSignal;
|
|
32
|
+
}) => Promise<ResourceFetchResponse>;
|
|
33
|
+
export interface WebReleaseOptions {
|
|
34
|
+
selector?: string;
|
|
35
|
+
offline?: boolean;
|
|
36
|
+
baseUrl?: string;
|
|
37
|
+
cacheRoot?: string;
|
|
38
|
+
publicKeyPem?: string | Buffer;
|
|
39
|
+
fetcher?: ResourceFetcher;
|
|
40
|
+
/** Test/development escape hatch. HTTP remains restricted to loopback. */
|
|
41
|
+
allowInsecureLoopbackHttp?: boolean;
|
|
42
|
+
}
|
|
43
|
+
export interface VerifiedReleaseDescriptor {
|
|
44
|
+
path: string;
|
|
45
|
+
size: number;
|
|
46
|
+
sha256: string;
|
|
47
|
+
}
|
|
48
|
+
export interface VerifiedWebRelease {
|
|
49
|
+
selector: string;
|
|
50
|
+
selectorKind: ResourceSelector["kind"];
|
|
51
|
+
version: string;
|
|
52
|
+
manifestDigest: string;
|
|
53
|
+
baseUrl: string;
|
|
54
|
+
manifestUrl: string;
|
|
55
|
+
cacheDir: string;
|
|
56
|
+
releaseManifestPath: string;
|
|
57
|
+
releaseSignaturePath: string;
|
|
58
|
+
fortemiManifestPath: string;
|
|
59
|
+
fortemiExportPath: string;
|
|
60
|
+
fortemiManifestSha256: string;
|
|
61
|
+
fortemiManifestSize: number;
|
|
62
|
+
fortemiExportSha256: string;
|
|
63
|
+
fortemiExportSize: number;
|
|
64
|
+
channelSequence?: number;
|
|
65
|
+
descriptors: ReadonlyMap<string, VerifiedReleaseDescriptor>;
|
|
66
|
+
}
|
|
67
|
+
export interface VerifiedRawResourceOptions extends Pick<WebReleaseOptions, "baseUrl" | "fetcher" | "allowInsecureLoopbackHttp"> {
|
|
68
|
+
offline?: boolean;
|
|
69
|
+
}
|
|
70
|
+
export declare function verifySignedResourceBytes(bytes: Uint8Array, signatureBytes: Uint8Array, publicKeyPem?: string | Buffer, label?: string): string;
|
|
71
|
+
export declare function parseResourceSelector(selector: string): ResourceSelector;
|
|
72
|
+
export declare function getResourceCacheRoot(cacheRoot?: string): string;
|
|
73
|
+
export interface BoundedFileReadOptions {
|
|
74
|
+
label: string;
|
|
75
|
+
maxBytes: number;
|
|
76
|
+
expectedSize?: number;
|
|
77
|
+
expectedSha256?: string;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Read a bounded regular file through one descriptor. O_NOFOLLOW closes the
|
|
81
|
+
* final-component symlink race on platforms that support it; lstat/fstat and
|
|
82
|
+
* digest checks retain fail-closed behavior elsewhere.
|
|
83
|
+
*/
|
|
84
|
+
export declare function readVerifiedRegularFile(pathname: string, options: BoundedFileReadOptions): Buffer;
|
|
85
|
+
export declare function loadResourceTrustRootFile(pathname: string): Buffer;
|
|
86
|
+
export declare function resolveWebRelease(options?: WebReleaseOptions): Promise<VerifiedWebRelease>;
|
|
87
|
+
export declare function fetchVerifiedRawResource(release: VerifiedWebRelease, resourcePath: string, options?: VerifiedRawResourceOptions): Promise<Buffer>;
|
|
88
|
+
export declare function createWebReleaseTestOptions(baseUrl: string, overrides?: Omit<WebReleaseOptions, "baseUrl" | "allowInsecureLoopbackHttp">): WebReleaseOptions;
|
|
89
|
+
//# sourceMappingURL=web-release.d.ts.map
|