@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,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FrameworkConfigLoader - Load and merge framework configurations
|
|
3
|
+
*
|
|
4
|
+
* Handles loading framework-specific configs, merging with shared configs,
|
|
5
|
+
* and managing configuration precedence. Supports JSON and YAML formats.
|
|
6
|
+
*
|
|
7
|
+
* FID-007 Framework-Scoped Workspaces configuration management.
|
|
8
|
+
*
|
|
9
|
+
* @module src/plugin/framework-config-loader
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
* @since 2025-10-23
|
|
12
|
+
*/
|
|
13
|
+
import * as fs from 'fs/promises';
|
|
14
|
+
import * as path from 'path';
|
|
15
|
+
// ===========================
|
|
16
|
+
// FrameworkConfigLoader Class
|
|
17
|
+
// ===========================
|
|
18
|
+
export class FrameworkConfigLoader {
|
|
19
|
+
projectRoot;
|
|
20
|
+
configCache = new Map();
|
|
21
|
+
constructor(projectRoot) {
|
|
22
|
+
this.projectRoot = path.resolve(projectRoot);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Load framework configuration
|
|
26
|
+
*
|
|
27
|
+
* @param framework - Framework name
|
|
28
|
+
* @param options - Load options
|
|
29
|
+
* @returns Merged configuration
|
|
30
|
+
*/
|
|
31
|
+
async loadConfig(framework, options = {}) {
|
|
32
|
+
const cacheKey = `${framework}-${options.environment || 'default'}`;
|
|
33
|
+
// Check cache
|
|
34
|
+
if (this.configCache.has(cacheKey)) {
|
|
35
|
+
return this.configCache.get(cacheKey);
|
|
36
|
+
}
|
|
37
|
+
// Load shared config
|
|
38
|
+
const sharedConfig = await this.loadSharedConfig();
|
|
39
|
+
// Load framework-specific config
|
|
40
|
+
const frameworkConfig = await this.loadFrameworkConfig(framework);
|
|
41
|
+
// Load environment-specific config
|
|
42
|
+
let envConfig = {};
|
|
43
|
+
if (options.environment) {
|
|
44
|
+
envConfig = await this.loadEnvironmentConfig(framework, options.environment);
|
|
45
|
+
}
|
|
46
|
+
// Load local overrides
|
|
47
|
+
let localConfig = {};
|
|
48
|
+
if (options.includeLocal) {
|
|
49
|
+
localConfig = await this.loadLocalConfig(framework);
|
|
50
|
+
}
|
|
51
|
+
// Merge configs (later configs override earlier)
|
|
52
|
+
let merged = this.deepMerge(sharedConfig, frameworkConfig, envConfig, localConfig);
|
|
53
|
+
// Apply merge strategy if requested
|
|
54
|
+
if (options.respectMergeStrategy && sharedConfig.mergeStrategy) {
|
|
55
|
+
merged = this.applyMergeStrategy(merged, sharedConfig.mergeStrategy);
|
|
56
|
+
}
|
|
57
|
+
// Cache result
|
|
58
|
+
this.configCache.set(cacheKey, merged);
|
|
59
|
+
return merged;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Get specific config value
|
|
63
|
+
*
|
|
64
|
+
* @param framework - Framework name
|
|
65
|
+
* @param key - Config key (supports dot notation)
|
|
66
|
+
* @param defaultValue - Default value if key not found
|
|
67
|
+
* @returns Config value
|
|
68
|
+
*/
|
|
69
|
+
getConfigValue(framework, key, defaultValue) {
|
|
70
|
+
const config = this.configCache.get(`${framework}-default`);
|
|
71
|
+
if (!config) {
|
|
72
|
+
return defaultValue;
|
|
73
|
+
}
|
|
74
|
+
const keys = key.split('.');
|
|
75
|
+
let value = config;
|
|
76
|
+
for (const k of keys) {
|
|
77
|
+
if (value && typeof value === 'object' && k in value) {
|
|
78
|
+
value = value[k];
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
return defaultValue;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return value !== undefined ? value : defaultValue;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Save framework configuration
|
|
88
|
+
*
|
|
89
|
+
* @param framework - Framework name
|
|
90
|
+
* @param config - Configuration to save
|
|
91
|
+
*/
|
|
92
|
+
async saveConfig(framework, config) {
|
|
93
|
+
const configPath = path.join(this.projectRoot, '.aiwg', framework, 'settings.json');
|
|
94
|
+
// Ensure directory exists
|
|
95
|
+
await fs.mkdir(path.dirname(configPath), { recursive: true });
|
|
96
|
+
// Write config
|
|
97
|
+
await fs.writeFile(configPath, JSON.stringify(config, null, 2));
|
|
98
|
+
// Invalidate cache
|
|
99
|
+
this.configCache.delete(`${framework}-default`);
|
|
100
|
+
}
|
|
101
|
+
// ===========================
|
|
102
|
+
// Private Methods
|
|
103
|
+
// ===========================
|
|
104
|
+
async loadSharedConfig() {
|
|
105
|
+
const workspacePath = path.join(this.projectRoot, '.aiwg', 'workspace.json');
|
|
106
|
+
try {
|
|
107
|
+
const content = await fs.readFile(workspacePath, 'utf-8');
|
|
108
|
+
const workspace = JSON.parse(content);
|
|
109
|
+
return workspace.shared || {};
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return {};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async loadFrameworkConfig(framework) {
|
|
116
|
+
// Try JSON first
|
|
117
|
+
const jsonPath = path.join(this.projectRoot, '.aiwg', framework, 'settings.json');
|
|
118
|
+
try {
|
|
119
|
+
const content = await fs.readFile(jsonPath, 'utf-8');
|
|
120
|
+
return JSON.parse(content);
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// Try YAML
|
|
124
|
+
const yamlPath = path.join(this.projectRoot, '.aiwg', framework, 'config.yaml');
|
|
125
|
+
try {
|
|
126
|
+
const content = await fs.readFile(yamlPath, 'utf-8');
|
|
127
|
+
return this.parseSimpleYaml(content);
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
// Return default config
|
|
131
|
+
return { framework };
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async loadEnvironmentConfig(framework, environment) {
|
|
136
|
+
const envPath = path.join(this.projectRoot, '.aiwg', framework, `settings.${environment}.json`);
|
|
137
|
+
try {
|
|
138
|
+
const content = await fs.readFile(envPath, 'utf-8');
|
|
139
|
+
return JSON.parse(content);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
return {};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
async loadLocalConfig(framework) {
|
|
146
|
+
const localPath = path.join(this.projectRoot, '.aiwg', framework, 'settings.local.json');
|
|
147
|
+
try {
|
|
148
|
+
const content = await fs.readFile(localPath, 'utf-8');
|
|
149
|
+
return JSON.parse(content);
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
return {};
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
deepMerge(...objects) {
|
|
156
|
+
const result = {};
|
|
157
|
+
for (const obj of objects) {
|
|
158
|
+
if (!obj)
|
|
159
|
+
continue;
|
|
160
|
+
for (const key in obj) {
|
|
161
|
+
if (obj.hasOwnProperty(key)) {
|
|
162
|
+
const value = obj[key];
|
|
163
|
+
if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
|
|
164
|
+
// Merge objects recursively
|
|
165
|
+
result[key] = this.deepMerge(result[key] || {}, value);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
// Override with new value
|
|
169
|
+
result[key] = value;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
applyMergeStrategy(config, strategy) {
|
|
177
|
+
// Apply merge strategies (e.g., append arrays instead of override)
|
|
178
|
+
const result = { ...config };
|
|
179
|
+
for (const key in strategy) {
|
|
180
|
+
if (strategy[key] === 'append' && Array.isArray(config[key])) {
|
|
181
|
+
// Append strategy already handled in initial merge
|
|
182
|
+
// This is a placeholder for more complex strategies
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
parseSimpleYaml(content) {
|
|
188
|
+
const result = {};
|
|
189
|
+
const lines = content.split('\n');
|
|
190
|
+
let currentKey = null;
|
|
191
|
+
for (const line of lines) {
|
|
192
|
+
const trimmed = line.trim();
|
|
193
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
194
|
+
continue;
|
|
195
|
+
// Check for array items
|
|
196
|
+
if (trimmed.startsWith('- ')) {
|
|
197
|
+
const value = trimmed.slice(2).trim();
|
|
198
|
+
if (currentKey) {
|
|
199
|
+
if (!Array.isArray(result[currentKey])) {
|
|
200
|
+
result[currentKey] = [];
|
|
201
|
+
}
|
|
202
|
+
result[currentKey].push(value);
|
|
203
|
+
}
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
const colonIndex = trimmed.indexOf(':');
|
|
207
|
+
if (colonIndex === -1)
|
|
208
|
+
continue;
|
|
209
|
+
const key = trimmed.slice(0, colonIndex).trim();
|
|
210
|
+
const value = trimmed.slice(colonIndex + 1).trim();
|
|
211
|
+
if (value) {
|
|
212
|
+
// Simple key-value - handle booleans and numbers
|
|
213
|
+
if (value === 'true') {
|
|
214
|
+
result[key] = true;
|
|
215
|
+
}
|
|
216
|
+
else if (value === 'false') {
|
|
217
|
+
result[key] = false;
|
|
218
|
+
}
|
|
219
|
+
else if (!isNaN(Number(value))) {
|
|
220
|
+
result[key] = Number(value);
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
result[key] = value;
|
|
224
|
+
}
|
|
225
|
+
currentKey = null;
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
// Key with no value - next lines will be array items or nested object
|
|
229
|
+
currentKey = key;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return result;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=framework-config-loader.js.map
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FrameworkDetector - Detect framework-scoped workspaces
|
|
3
|
+
*
|
|
4
|
+
* Detects frameworks from directory structure (.claude/, .codex/, .cursor/)
|
|
5
|
+
* and configuration files. Distinguishes legacy workspaces from framework-scoped.
|
|
6
|
+
*
|
|
7
|
+
* FID-007 Framework-Scoped Workspaces detection logic.
|
|
8
|
+
*
|
|
9
|
+
* @module src/plugin/framework-detector
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
* @since 2025-10-23
|
|
12
|
+
*/
|
|
13
|
+
import * as fs from 'fs/promises';
|
|
14
|
+
import * as path from 'path';
|
|
15
|
+
// ===========================
|
|
16
|
+
// FrameworkDetector Class
|
|
17
|
+
// ===========================
|
|
18
|
+
export class FrameworkDetector {
|
|
19
|
+
projectRoot;
|
|
20
|
+
// Provider directories (used by detectFrameworks() to enumerate which
|
|
21
|
+
// platforms the workspace is deployed to). These are NOT the same as
|
|
22
|
+
// "framework-scoped workspace" (`.aiwg/frameworks/`). See issue #1516.
|
|
23
|
+
FRAMEWORK_DIRS = ['claude', 'codex', 'cursor'];
|
|
24
|
+
// Marker for framework-scoped workspace layout per PR #54.
|
|
25
|
+
FRAMEWORKS_DIR = 'frameworks';
|
|
26
|
+
// SDLC-canonical artifact dirs. Their presence ALONE is not "legacy" —
|
|
27
|
+
// they coexist with `.aiwg/frameworks/` by design when sdlc-complete is
|
|
28
|
+
// deployed (documented in CLAUDE.md / AIWG.md). Treat as legacy only when
|
|
29
|
+
// `.aiwg/frameworks/` is absent.
|
|
30
|
+
SDLC_CANONICAL_DIRS = [
|
|
31
|
+
'intake', 'requirements', 'architecture', 'planning',
|
|
32
|
+
'risks', 'testing', 'security', 'quality', 'deployment',
|
|
33
|
+
'reports', 'working', 'handoffs', 'gates', 'decisions', 'team', 'management',
|
|
34
|
+
'agents', 'commands', 'memory', 'context'
|
|
35
|
+
];
|
|
36
|
+
// Orphan non-SDLC top-level dirs left over from the pre-#1516 deploy bug.
|
|
37
|
+
// Their presence is always a migration signal regardless of frameworks/.
|
|
38
|
+
ORPHAN_LEGACY_DIRS = [
|
|
39
|
+
'forensics', 'kb', 'media', 'media-curator', 'marketing', 'security-engineering'
|
|
40
|
+
];
|
|
41
|
+
constructor(projectRoot) {
|
|
42
|
+
this.projectRoot = path.resolve(projectRoot);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Detect all frameworks present in the project
|
|
46
|
+
*
|
|
47
|
+
* @returns Array of framework names
|
|
48
|
+
*/
|
|
49
|
+
async detectFrameworks() {
|
|
50
|
+
const frameworks = new Set();
|
|
51
|
+
// Check for .framework/ directories
|
|
52
|
+
for (const framework of this.FRAMEWORK_DIRS) {
|
|
53
|
+
try {
|
|
54
|
+
await fs.access(path.join(this.projectRoot, `.${framework}`));
|
|
55
|
+
frameworks.add(framework);
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Framework directory doesn't exist
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Check for .aiwg/framework/ directories
|
|
62
|
+
const aiwgPath = path.join(this.projectRoot, '.aiwg');
|
|
63
|
+
try {
|
|
64
|
+
const entries = await fs.readdir(aiwgPath, { withFileTypes: true });
|
|
65
|
+
for (const entry of entries) {
|
|
66
|
+
if (entry.isDirectory() && this.FRAMEWORK_DIRS.includes(entry.name)) {
|
|
67
|
+
frameworks.add(entry.name);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// .aiwg doesn't exist
|
|
73
|
+
}
|
|
74
|
+
return Array.from(frameworks).sort();
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Check if workspace is legacy (non-framework-scoped)
|
|
78
|
+
*
|
|
79
|
+
* @returns True if legacy workspace detected
|
|
80
|
+
*/
|
|
81
|
+
async isLegacyWorkspace() {
|
|
82
|
+
const aiwgPath = path.join(this.projectRoot, '.aiwg');
|
|
83
|
+
try {
|
|
84
|
+
await fs.access(aiwgPath);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return false; // No .aiwg directory
|
|
88
|
+
}
|
|
89
|
+
let sdlcCanonicalCount = 0;
|
|
90
|
+
let orphanLegacyCount = 0;
|
|
91
|
+
let hasFrameworksDir = false;
|
|
92
|
+
try {
|
|
93
|
+
const entries = await fs.readdir(aiwgPath, { withFileTypes: true });
|
|
94
|
+
for (const entry of entries) {
|
|
95
|
+
if (!entry.isDirectory())
|
|
96
|
+
continue;
|
|
97
|
+
if (entry.name === this.FRAMEWORKS_DIR) {
|
|
98
|
+
hasFrameworksDir = true;
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (this.SDLC_CANONICAL_DIRS.includes(entry.name)) {
|
|
102
|
+
sdlcCanonicalCount++;
|
|
103
|
+
}
|
|
104
|
+
if (this.ORPHAN_LEGACY_DIRS.includes(entry.name)) {
|
|
105
|
+
orphanLegacyCount++;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
// Orphan non-SDLC top-level dirs always indicate a migration is needed
|
|
113
|
+
// (residue from the pre-#1516 deploy bug).
|
|
114
|
+
if (orphanLegacyCount > 0)
|
|
115
|
+
return true;
|
|
116
|
+
// SDLC top-level dirs are only "legacy" when .aiwg/frameworks/ is absent;
|
|
117
|
+
// otherwise they're the documented canonical SDLC artifact layout.
|
|
118
|
+
return sdlcCanonicalCount > 0 && !hasFrameworksDir;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Get detailed information about a framework
|
|
122
|
+
*
|
|
123
|
+
* @param frameworkName - Framework name
|
|
124
|
+
* @returns Framework information
|
|
125
|
+
*/
|
|
126
|
+
async getFrameworkInfo(frameworkName) {
|
|
127
|
+
// Check .aiwg/framework/ first
|
|
128
|
+
const aiwgPath = path.join(this.projectRoot, '.aiwg', frameworkName);
|
|
129
|
+
const rootPath = path.join(this.projectRoot, `.${frameworkName}`);
|
|
130
|
+
let frameworkPath;
|
|
131
|
+
let configPath;
|
|
132
|
+
try {
|
|
133
|
+
await fs.access(aiwgPath);
|
|
134
|
+
frameworkPath = aiwgPath;
|
|
135
|
+
configPath = path.join(aiwgPath, 'settings.json');
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
try {
|
|
139
|
+
await fs.access(rootPath);
|
|
140
|
+
frameworkPath = rootPath;
|
|
141
|
+
configPath = path.join(rootPath, 'settings.json');
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
throw new Error(`Framework not found: ${frameworkName}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// Load config
|
|
148
|
+
let config = {};
|
|
149
|
+
try {
|
|
150
|
+
const configContent = await fs.readFile(configPath, 'utf-8');
|
|
151
|
+
config = JSON.parse(configContent);
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
// Config doesn't exist or is invalid, use defaults
|
|
155
|
+
}
|
|
156
|
+
// Count agents and commands
|
|
157
|
+
let agentCount = 0;
|
|
158
|
+
let commandCount = 0;
|
|
159
|
+
try {
|
|
160
|
+
const agentsPath = path.join(frameworkPath, 'agents');
|
|
161
|
+
const agents = await fs.readdir(agentsPath);
|
|
162
|
+
agentCount = agents.filter(f => f.endsWith('.md')).length;
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
// Agents directory doesn't exist
|
|
166
|
+
}
|
|
167
|
+
try {
|
|
168
|
+
const commandsPath = path.join(frameworkPath, 'commands');
|
|
169
|
+
const commands = await fs.readdir(commandsPath);
|
|
170
|
+
commandCount = commands.filter(f => f.endsWith('.md')).length;
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
// Commands directory doesn't exist
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
name: frameworkName,
|
|
177
|
+
path: frameworkPath,
|
|
178
|
+
type: 'ide',
|
|
179
|
+
version: config.version,
|
|
180
|
+
capabilities: config.capabilities,
|
|
181
|
+
agentCount,
|
|
182
|
+
commandCount
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=framework-detector.js.map
|