@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,271 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Validator
|
|
3
|
+
*
|
|
4
|
+
* Validates agent metadata, content, and dependencies.
|
|
5
|
+
*/
|
|
6
|
+
import { validateCanonicalModelPolicy } from '../models/provider-policy.js';
|
|
7
|
+
const VALID_TOOLS = [
|
|
8
|
+
'Read',
|
|
9
|
+
'Write',
|
|
10
|
+
'Bash',
|
|
11
|
+
'Grep',
|
|
12
|
+
'Glob',
|
|
13
|
+
'WebFetch',
|
|
14
|
+
'MultiEdit',
|
|
15
|
+
'Task',
|
|
16
|
+
];
|
|
17
|
+
const REQUIRED_FIELDS = [
|
|
18
|
+
'name',
|
|
19
|
+
'description',
|
|
20
|
+
];
|
|
21
|
+
export class AgentValidator {
|
|
22
|
+
/**
|
|
23
|
+
* Validate an agent
|
|
24
|
+
*/
|
|
25
|
+
async validate(agent) {
|
|
26
|
+
const issues = [];
|
|
27
|
+
// Validate metadata
|
|
28
|
+
issues.push(...this.validateMetadata(agent.metadata));
|
|
29
|
+
// Validate tools
|
|
30
|
+
if (agent.metadata.tools) {
|
|
31
|
+
issues.push(...this.validateTools(agent.metadata.tools));
|
|
32
|
+
}
|
|
33
|
+
// Validate content
|
|
34
|
+
issues.push(...this.validatePrompt(agent.content));
|
|
35
|
+
// Check for errors
|
|
36
|
+
const hasErrors = issues.some((issue) => issue.type === 'error');
|
|
37
|
+
return {
|
|
38
|
+
valid: !hasErrors,
|
|
39
|
+
issues,
|
|
40
|
+
agent,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Validate metadata fields
|
|
45
|
+
*/
|
|
46
|
+
validateMetadata(metadata) {
|
|
47
|
+
const issues = [];
|
|
48
|
+
// Check required fields
|
|
49
|
+
for (const field of REQUIRED_FIELDS) {
|
|
50
|
+
const value = metadata[field];
|
|
51
|
+
if (!value || (typeof value === 'string' && value.trim() === '')) {
|
|
52
|
+
issues.push({
|
|
53
|
+
type: 'error',
|
|
54
|
+
field,
|
|
55
|
+
message: `Required field '${field}' is missing or empty`,
|
|
56
|
+
suggestion: `Add ${field} to agent frontmatter`,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Validate name format
|
|
61
|
+
if (metadata.name) {
|
|
62
|
+
if (!/^[a-z0-9-]+$/.test(metadata.name)) {
|
|
63
|
+
issues.push({
|
|
64
|
+
type: 'error',
|
|
65
|
+
field: 'name',
|
|
66
|
+
message: 'Agent name must be lowercase alphanumeric with hyphens',
|
|
67
|
+
suggestion: `Use format: ${metadata.name.toLowerCase().replace(/[^a-z0-9-]/g, '-')}`,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Validate description length
|
|
72
|
+
if (metadata.description) {
|
|
73
|
+
if (metadata.description.length < 20) {
|
|
74
|
+
issues.push({
|
|
75
|
+
type: 'warning',
|
|
76
|
+
field: 'description',
|
|
77
|
+
message: 'Description is too short (minimum 20 characters)',
|
|
78
|
+
suggestion: 'Provide a more detailed description of agent capabilities',
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
if (metadata.description.length > 500) {
|
|
82
|
+
issues.push({
|
|
83
|
+
type: 'warning',
|
|
84
|
+
field: 'description',
|
|
85
|
+
message: 'Description is very long (maximum 500 characters recommended)',
|
|
86
|
+
suggestion: 'Keep description concise',
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (metadata.modelRole || metadata.modelTier) {
|
|
91
|
+
const policy = validateCanonicalModelPolicy({
|
|
92
|
+
role: metadata.modelRole ?? 'coding',
|
|
93
|
+
tier: metadata.modelTier ?? 'standard',
|
|
94
|
+
});
|
|
95
|
+
if (!policy.valid) {
|
|
96
|
+
issues.push(...policy.diagnostics.map(diagnostic => ({
|
|
97
|
+
type: diagnostic.severity === 'error' ? 'error' : 'warning',
|
|
98
|
+
field: 'model-policy',
|
|
99
|
+
message: diagnostic.message,
|
|
100
|
+
suggestion: 'Use canonical model-role/model-tier values from the shared model policy schema',
|
|
101
|
+
})));
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
// Legacy exact model aliases remain readable, but new scaffolds should use
|
|
105
|
+
// canonical model-role/model-tier intent so providers compile the final ID.
|
|
106
|
+
if (metadata.model) {
|
|
107
|
+
const compatibilityAliases = new Set(['sonnet', 'opus', 'haiku', 'gpt-4', 'gpt-3.5-turbo']);
|
|
108
|
+
if (!compatibilityAliases.has(metadata.model)) {
|
|
109
|
+
issues.push({
|
|
110
|
+
type: 'warning',
|
|
111
|
+
field: 'model',
|
|
112
|
+
message: `Legacy exact model field is provider-specific: ${metadata.model}`,
|
|
113
|
+
suggestion: 'Prefer model-role and model-tier; exact IDs should be compiled from the effective provider catalog',
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Validate version format
|
|
118
|
+
if (metadata.version) {
|
|
119
|
+
if (!/^\d+\.\d+\.\d+$/.test(metadata.version)) {
|
|
120
|
+
issues.push({
|
|
121
|
+
type: 'warning',
|
|
122
|
+
field: 'version',
|
|
123
|
+
message: 'Version should follow semantic versioning (e.g., 1.0.0)',
|
|
124
|
+
suggestion: 'Use format: MAJOR.MINOR.PATCH',
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Validate triggers completeness (#1623). When `triggers` is declared it
|
|
129
|
+
// must be a non-empty array of non-empty phrases. An explicit empty
|
|
130
|
+
// `triggers: []` (or whitespace-only entries) is the discoverability
|
|
131
|
+
// anti-pattern: a declared-but-empty NL routing surface that silently
|
|
132
|
+
// fails `aiwg discover`. Omitting the field is allowed; declaring it
|
|
133
|
+
// empty is an error so the persona-metadata regression cannot recur.
|
|
134
|
+
if (metadata.triggers !== undefined) {
|
|
135
|
+
if (!Array.isArray(metadata.triggers) || metadata.triggers.length === 0) {
|
|
136
|
+
issues.push({
|
|
137
|
+
type: 'error',
|
|
138
|
+
field: 'triggers',
|
|
139
|
+
message: 'triggers is declared but empty — the discoverability anti-pattern',
|
|
140
|
+
suggestion: 'Add at least one natural-language trigger phrase, or remove the empty field',
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
else if (metadata.triggers.some((t) => typeof t !== 'string' || t.trim() === '')) {
|
|
144
|
+
issues.push({
|
|
145
|
+
type: 'error',
|
|
146
|
+
field: 'triggers',
|
|
147
|
+
message: 'triggers contains an empty or non-string phrase',
|
|
148
|
+
suggestion: 'Remove empty trigger entries; each phrase must be a non-empty string',
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return issues;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Validate tool names
|
|
156
|
+
*/
|
|
157
|
+
validateTools(tools) {
|
|
158
|
+
const issues = [];
|
|
159
|
+
if (!Array.isArray(tools)) {
|
|
160
|
+
issues.push({
|
|
161
|
+
type: 'error',
|
|
162
|
+
field: 'tools',
|
|
163
|
+
message: 'Tools must be an array',
|
|
164
|
+
suggestion: 'Provide tools as comma-separated list or array',
|
|
165
|
+
});
|
|
166
|
+
return issues;
|
|
167
|
+
}
|
|
168
|
+
if (tools.length === 0) {
|
|
169
|
+
issues.push({
|
|
170
|
+
type: 'warning',
|
|
171
|
+
field: 'tools',
|
|
172
|
+
message: 'No tools specified',
|
|
173
|
+
suggestion: 'Agents typically need at least Read and Write tools',
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
// Check each tool
|
|
177
|
+
for (const tool of tools) {
|
|
178
|
+
const trimmedTool = tool.trim();
|
|
179
|
+
if (!VALID_TOOLS.includes(trimmedTool)) {
|
|
180
|
+
issues.push({
|
|
181
|
+
type: 'warning',
|
|
182
|
+
field: 'tools',
|
|
183
|
+
message: `Unknown tool: ${trimmedTool}`,
|
|
184
|
+
suggestion: `Valid tools: ${VALID_TOOLS.join(', ')}`,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return issues;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Validate prompt content
|
|
192
|
+
*/
|
|
193
|
+
validatePrompt(prompt) {
|
|
194
|
+
const issues = [];
|
|
195
|
+
if (!prompt || prompt.trim() === '') {
|
|
196
|
+
issues.push({
|
|
197
|
+
type: 'error',
|
|
198
|
+
field: 'content',
|
|
199
|
+
message: 'Agent content/prompt is empty',
|
|
200
|
+
suggestion: 'Provide agent instructions and behavior',
|
|
201
|
+
});
|
|
202
|
+
return issues;
|
|
203
|
+
}
|
|
204
|
+
// Check minimum length
|
|
205
|
+
if (prompt.length < 100) {
|
|
206
|
+
issues.push({
|
|
207
|
+
type: 'warning',
|
|
208
|
+
field: 'content',
|
|
209
|
+
message: 'Agent content is very short (< 100 characters)',
|
|
210
|
+
suggestion: 'Provide more detailed instructions for the agent',
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
// Check for common issues
|
|
214
|
+
if (!prompt.includes('#')) {
|
|
215
|
+
issues.push({
|
|
216
|
+
type: 'info',
|
|
217
|
+
field: 'content',
|
|
218
|
+
message: 'Content has no headings - consider adding structure',
|
|
219
|
+
suggestion: 'Use markdown headings to organize agent instructions',
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
return issues;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Check dependencies
|
|
226
|
+
*/
|
|
227
|
+
checkDependencies(agent, availableAgents) {
|
|
228
|
+
const issues = [];
|
|
229
|
+
if (!agent.metadata.dependencies || agent.metadata.dependencies.length === 0) {
|
|
230
|
+
return issues;
|
|
231
|
+
}
|
|
232
|
+
const availableNames = new Set(availableAgents.map((a) => a.metadata.name));
|
|
233
|
+
for (const dep of agent.metadata.dependencies) {
|
|
234
|
+
if (!availableNames.has(dep)) {
|
|
235
|
+
issues.push({
|
|
236
|
+
type: 'error',
|
|
237
|
+
field: 'dependencies',
|
|
238
|
+
message: `Dependency not found: ${dep}`,
|
|
239
|
+
suggestion: 'Ensure all dependencies are available for deployment',
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Check for circular dependencies (simple check)
|
|
244
|
+
if (agent.metadata.dependencies.includes(agent.metadata.name)) {
|
|
245
|
+
issues.push({
|
|
246
|
+
type: 'error',
|
|
247
|
+
field: 'dependencies',
|
|
248
|
+
message: 'Agent cannot depend on itself',
|
|
249
|
+
suggestion: 'Remove self-reference from dependencies',
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
return issues;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Validate batch of agents
|
|
256
|
+
*/
|
|
257
|
+
async validateBatch(agents) {
|
|
258
|
+
const results = [];
|
|
259
|
+
for (const agent of agents) {
|
|
260
|
+
const result = await this.validate(agent);
|
|
261
|
+
// Also check dependencies
|
|
262
|
+
const depIssues = this.checkDependencies(agent, agents);
|
|
263
|
+
result.issues.push(...depIssues);
|
|
264
|
+
// Re-evaluate validity
|
|
265
|
+
result.valid = !result.issues.some((issue) => issue.type === 'error');
|
|
266
|
+
results.push(result);
|
|
267
|
+
}
|
|
268
|
+
return results;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=agent-validator.js.map
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knowledge Base — load and search domain knowledge for grounding agents
|
|
3
|
+
*
|
|
4
|
+
* @module agents/grounding/knowledge-base
|
|
5
|
+
* @issue #184
|
|
6
|
+
*/
|
|
7
|
+
import { promises as fs } from 'fs';
|
|
8
|
+
import path from 'path';
|
|
9
|
+
import { projectAiwgPath } from '../../config/project-artifacts.js';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// KnowledgeStore
|
|
12
|
+
// ============================================================================
|
|
13
|
+
export class KnowledgeStore {
|
|
14
|
+
bases;
|
|
15
|
+
projectPath;
|
|
16
|
+
constructor(projectPath) {
|
|
17
|
+
this.projectPath = projectPath;
|
|
18
|
+
this.bases = new Map();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Load knowledge bases from .aiwg/knowledge/
|
|
22
|
+
*/
|
|
23
|
+
async load() {
|
|
24
|
+
const knowledgeDir = projectAiwgPath(this.projectPath, 'knowledge');
|
|
25
|
+
try {
|
|
26
|
+
const domains = await fs.readdir(knowledgeDir);
|
|
27
|
+
for (const domain of domains) {
|
|
28
|
+
const domainPath = path.join(knowledgeDir, domain);
|
|
29
|
+
const stat = await fs.stat(domainPath);
|
|
30
|
+
if (!stat.isDirectory())
|
|
31
|
+
continue;
|
|
32
|
+
const files = await fs.readdir(domainPath);
|
|
33
|
+
const entries = [];
|
|
34
|
+
for (const file of files) {
|
|
35
|
+
if (!file.endsWith('.json'))
|
|
36
|
+
continue;
|
|
37
|
+
try {
|
|
38
|
+
const content = await fs.readFile(path.join(domainPath, file), 'utf-8');
|
|
39
|
+
const parsed = JSON.parse(content);
|
|
40
|
+
if (Array.isArray(parsed.entries)) {
|
|
41
|
+
entries.push(...parsed.entries);
|
|
42
|
+
}
|
|
43
|
+
else if (parsed.id) {
|
|
44
|
+
entries.push(parsed);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Skip malformed files
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (entries.length > 0) {
|
|
52
|
+
this.bases.set(domain, {
|
|
53
|
+
domain,
|
|
54
|
+
version: '1.0.0',
|
|
55
|
+
entries,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Knowledge directory doesn't exist yet
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Add a knowledge base from a JSON file
|
|
66
|
+
*/
|
|
67
|
+
async addFromFile(domain, filePath) {
|
|
68
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
69
|
+
const parsed = JSON.parse(content);
|
|
70
|
+
const entries = Array.isArray(parsed.entries)
|
|
71
|
+
? parsed.entries
|
|
72
|
+
: Array.isArray(parsed) ? parsed : [parsed];
|
|
73
|
+
const existing = this.bases.get(domain) || { domain, version: '1.0.0', entries: [] };
|
|
74
|
+
existing.entries.push(...entries);
|
|
75
|
+
this.bases.set(domain, existing);
|
|
76
|
+
// Persist
|
|
77
|
+
const domainDir = projectAiwgPath(this.projectPath, 'knowledge', domain);
|
|
78
|
+
await fs.mkdir(domainDir, { recursive: true });
|
|
79
|
+
const outFile = path.join(domainDir, path.basename(filePath));
|
|
80
|
+
await fs.copyFile(filePath, outFile);
|
|
81
|
+
return entries.length;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Search knowledge across all domains or a specific domain
|
|
85
|
+
*/
|
|
86
|
+
search(query, options) {
|
|
87
|
+
const limit = options?.limit ?? 5;
|
|
88
|
+
const queryTerms = query.toLowerCase().split(/\s+/).filter((t) => t.length > 2);
|
|
89
|
+
const results = [];
|
|
90
|
+
const domains = options?.domain
|
|
91
|
+
? [this.bases.get(options.domain)].filter(Boolean)
|
|
92
|
+
: Array.from(this.bases.values());
|
|
93
|
+
for (const base of domains) {
|
|
94
|
+
for (const entry of base.entries) {
|
|
95
|
+
const score = calculateRelevance(entry, queryTerms);
|
|
96
|
+
if (score > 0) {
|
|
97
|
+
results.push({
|
|
98
|
+
content: entry.content,
|
|
99
|
+
source: `${base.domain}/${entry.source || entry.id}`,
|
|
100
|
+
relevance_score: score,
|
|
101
|
+
metadata: { topic: entry.topic, id: entry.id },
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return results
|
|
107
|
+
.sort((a, b) => b.relevance_score - a.relevance_score)
|
|
108
|
+
.slice(0, limit);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Verify a claim against domain knowledge
|
|
112
|
+
*/
|
|
113
|
+
verifyClaim(claim, domain) {
|
|
114
|
+
const fragments = this.search(claim, { domain, limit: 3 });
|
|
115
|
+
if (fragments.length === 0) {
|
|
116
|
+
return {
|
|
117
|
+
claim,
|
|
118
|
+
verified: false,
|
|
119
|
+
confidence: 0,
|
|
120
|
+
sources: [],
|
|
121
|
+
correction: 'No relevant knowledge found in knowledge base',
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
// Simple verification: check if top fragments support or contradict
|
|
125
|
+
const topFragment = fragments[0];
|
|
126
|
+
const confidence = Math.min(topFragment.relevance_score, 1.0);
|
|
127
|
+
return {
|
|
128
|
+
claim,
|
|
129
|
+
verified: confidence > 0.3,
|
|
130
|
+
confidence,
|
|
131
|
+
sources: fragments.map((f) => f.source),
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
listDomains() {
|
|
135
|
+
return Array.from(this.bases.keys());
|
|
136
|
+
}
|
|
137
|
+
getDomainStats() {
|
|
138
|
+
return Array.from(this.bases.entries()).map(([domain, base]) => ({
|
|
139
|
+
domain,
|
|
140
|
+
entries: base.entries.length,
|
|
141
|
+
}));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// ============================================================================
|
|
145
|
+
// Helpers
|
|
146
|
+
// ============================================================================
|
|
147
|
+
function calculateRelevance(entry, queryTerms) {
|
|
148
|
+
const searchable = [
|
|
149
|
+
entry.topic,
|
|
150
|
+
entry.content,
|
|
151
|
+
...(entry.keywords || []),
|
|
152
|
+
].join(' ').toLowerCase();
|
|
153
|
+
let matches = 0;
|
|
154
|
+
for (const term of queryTerms) {
|
|
155
|
+
if (searchable.includes(term)) {
|
|
156
|
+
matches++;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return queryTerms.length > 0 ? matches / queryTerms.length : 0;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=knowledge-base.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Grounding Agent Types
|
|
3
|
+
*
|
|
4
|
+
* Interfaces for domain knowledge injection agents that verify claims,
|
|
5
|
+
* retrieve knowledge, and ground conversations with factual context.
|
|
6
|
+
*
|
|
7
|
+
* @module agents/grounding/types
|
|
8
|
+
* @issue #184
|
|
9
|
+
* @research REF-022 AutoGen (ALFChat case study — 40% domain accuracy improvement)
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Deployment System
|
|
3
|
+
*
|
|
4
|
+
* Multi-platform agent deployment with validation and packaging.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types.js';
|
|
7
|
+
export { AgentDeployer } from './agent-deployer.js';
|
|
8
|
+
export { AgentValidator } from './agent-validator.js';
|
|
9
|
+
export { AgentPackager } from './agent-packager.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
const MANAGED_MARKER_RE = /(?:^|\n)(?:#|<!--)\s*aiwg:managed\s+v?([^\s]+)\s+([^\s>]+)(?:\s*-->)?/;
|
|
4
|
+
/** Normalize provider-specific deployed filenames to the source agent id. */
|
|
5
|
+
export function normalizeAgentArtifactName(filename) {
|
|
6
|
+
return path.basename(filename)
|
|
7
|
+
.replace(/\.agent\.md$/i, '')
|
|
8
|
+
.replace(/\.soul\.md$/i, '')
|
|
9
|
+
.replace(/\.(?:md|mdc|toml)$/i, '');
|
|
10
|
+
}
|
|
11
|
+
export function parseManagedArtifactMarker(content) {
|
|
12
|
+
const match = MANAGED_MARKER_RE.exec(content);
|
|
13
|
+
return match ? { version: match[1], source: match[2] } : null;
|
|
14
|
+
}
|
|
15
|
+
async function collectAgentSources(frameworkRoot, rootDir, inventory, allMarkdownFiles) {
|
|
16
|
+
let entries;
|
|
17
|
+
try {
|
|
18
|
+
entries = await fs.readdir(rootDir, { withFileTypes: true });
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
await Promise.all(entries.map(async (entry) => {
|
|
24
|
+
const absolute = path.join(rootDir, entry.name);
|
|
25
|
+
if (entry.isDirectory()) {
|
|
26
|
+
await collectAgentSources(frameworkRoot, absolute, inventory, allMarkdownFiles);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (!entry.isFile() || !entry.name.endsWith('.md'))
|
|
30
|
+
return;
|
|
31
|
+
if (!allMarkdownFiles && path.basename(rootDir) !== 'agents')
|
|
32
|
+
return;
|
|
33
|
+
let stat;
|
|
34
|
+
try {
|
|
35
|
+
stat = await fs.stat(absolute);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const name = normalizeAgentArtifactName(entry.name);
|
|
41
|
+
const sources = inventory.get(name) ?? [];
|
|
42
|
+
sources.push({
|
|
43
|
+
path: path.relative(frameworkRoot, absolute),
|
|
44
|
+
size: stat.size,
|
|
45
|
+
});
|
|
46
|
+
inventory.set(name, sources);
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Inventory every packaged agent source that can contribute to provider output.
|
|
51
|
+
* Framework, addon, and plugin agents live in named `agents/` directories;
|
|
52
|
+
* root personas live recursively below `agentic/code/agents/`.
|
|
53
|
+
*/
|
|
54
|
+
export async function collectPackagedAgentInventory(frameworkRoot) {
|
|
55
|
+
const inventory = new Map();
|
|
56
|
+
const codeRoot = path.join(frameworkRoot, 'agentic', 'code');
|
|
57
|
+
await Promise.all([
|
|
58
|
+
collectAgentSources(frameworkRoot, path.join(codeRoot, 'frameworks'), inventory, false),
|
|
59
|
+
collectAgentSources(frameworkRoot, path.join(codeRoot, 'addons'), inventory, false),
|
|
60
|
+
collectAgentSources(frameworkRoot, path.join(codeRoot, 'plugins'), inventory, false),
|
|
61
|
+
collectAgentSources(frameworkRoot, path.join(codeRoot, 'agents'), inventory, true),
|
|
62
|
+
]);
|
|
63
|
+
return inventory;
|
|
64
|
+
}
|
|
65
|
+
/** Classify a deployed oversized file without assuming it came from the package. */
|
|
66
|
+
export function diagnoseOversizedAgent(filename, content, inventory, ceilingBytes) {
|
|
67
|
+
const packaged = inventory.get(normalizeAgentArtifactName(filename)) ?? [];
|
|
68
|
+
if (packaged.some((source) => source.size > ceilingBytes))
|
|
69
|
+
return 'current-package';
|
|
70
|
+
const marker = parseManagedArtifactMarker(content);
|
|
71
|
+
if (marker?.source === 'bundled')
|
|
72
|
+
return 'stale-deployment';
|
|
73
|
+
return 'unmanaged-local';
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=packaged-agent-inventory.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supported programmatic entry points for the installed AIWG package.
|
|
3
|
+
*
|
|
4
|
+
* `run()` dispatches through the same router used by `bin/aiwg.mjs`. Resource
|
|
5
|
+
* helpers expose the signed web-release contract without requiring callers to
|
|
6
|
+
* import private `dist/` paths.
|
|
7
|
+
*/
|
|
8
|
+
export { run } from '../cli/router.js';
|
|
9
|
+
export * from '../resources/index.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Supported programmatic entry points for the installed AIWG package.
|
|
3
|
+
*
|
|
4
|
+
* `run()` dispatches through the same router used by `bin/aiwg.mjs`. Resource
|
|
5
|
+
* helpers expose the signed web-release contract without requiring callers to
|
|
6
|
+
* import private `dist/` paths.
|
|
7
|
+
*/
|
|
8
|
+
export { run } from '../cli/router.js';
|
|
9
|
+
export * from '../resources/index.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Address Parser — parse hybrid addressing syntax into queries
|
|
3
|
+
*
|
|
4
|
+
* Syntaxes:
|
|
5
|
+
* @.aiwg/requirements/UC-001.md → location
|
|
6
|
+
* @?"user authentication" → semantic
|
|
7
|
+
* @.aiwg/requirements/?"auth" → hybrid
|
|
8
|
+
* @#security,authentication → tags
|
|
9
|
+
* @phase:requirements → phase
|
|
10
|
+
*
|
|
11
|
+
* @module artifacts/address-parser
|
|
12
|
+
* @issue #187
|
|
13
|
+
*/
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Parser
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* Parse an address string into a HybridQuery.
|
|
19
|
+
*/
|
|
20
|
+
export function parseAddress(input) {
|
|
21
|
+
const raw = input.trim();
|
|
22
|
+
// Remove leading @ if present
|
|
23
|
+
const addr = raw.startsWith('@') ? raw.slice(1) : raw;
|
|
24
|
+
// @#tag1,tag2 → tags
|
|
25
|
+
if (addr.startsWith('#')) {
|
|
26
|
+
const tags = addr.slice(1).split(',').map((t) => t.trim()).filter(Boolean);
|
|
27
|
+
return { type: 'tags', query: { tags }, raw };
|
|
28
|
+
}
|
|
29
|
+
// @phase:requirements → phase
|
|
30
|
+
if (addr.startsWith('phase:')) {
|
|
31
|
+
const phase = addr.slice(6).trim();
|
|
32
|
+
return { type: 'phase', query: { phase }, raw };
|
|
33
|
+
}
|
|
34
|
+
// @?"query" → semantic
|
|
35
|
+
if (addr.startsWith('?"') || addr.startsWith('?\'')) {
|
|
36
|
+
const semanticQuery = addr.slice(2, -1);
|
|
37
|
+
return { type: 'semantic', query: { semanticQuery }, raw };
|
|
38
|
+
}
|
|
39
|
+
// @path/?"query" → hybrid
|
|
40
|
+
const hybridMatch = addr.match(/^(.+?)\/\?"([^"]+)"$/);
|
|
41
|
+
if (hybridMatch) {
|
|
42
|
+
return {
|
|
43
|
+
type: 'hybrid',
|
|
44
|
+
query: { path: hybridMatch[1], semanticQuery: hybridMatch[2] },
|
|
45
|
+
raw,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
const hybridMatchSingle = addr.match(/^(.+?)\/\?'([^']+)'$/);
|
|
49
|
+
if (hybridMatchSingle) {
|
|
50
|
+
return {
|
|
51
|
+
type: 'hybrid',
|
|
52
|
+
query: { path: hybridMatchSingle[1], semanticQuery: hybridMatchSingle[2] },
|
|
53
|
+
raw,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// Default: location (file path or glob)
|
|
57
|
+
return { type: 'location', query: { path: addr }, raw };
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Build a HybridQuery from multiple criteria (CLI-style).
|
|
61
|
+
*/
|
|
62
|
+
export function buildQuery(options) {
|
|
63
|
+
return {
|
|
64
|
+
path: options.path,
|
|
65
|
+
semanticQuery: options.query,
|
|
66
|
+
tags: options.tags?.split(',').map((t) => t.trim()).filter(Boolean),
|
|
67
|
+
phase: options.phase,
|
|
68
|
+
type: options.type,
|
|
69
|
+
updatedAfter: options.since,
|
|
70
|
+
limit: options.limit,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=address-parser.js.map
|