@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,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command templates for different command types
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Generate frontmatter for a command
|
|
6
|
+
*/
|
|
7
|
+
export function generateFrontmatter(name, description, args = [], options = [], modelRole = 'efficiency', modelTier = 'economy') {
|
|
8
|
+
// Build args string
|
|
9
|
+
const argParts = [];
|
|
10
|
+
// Required args
|
|
11
|
+
args.filter(a => a.required).forEach(arg => {
|
|
12
|
+
argParts.push(`<${arg.name}>`);
|
|
13
|
+
});
|
|
14
|
+
// Optional args
|
|
15
|
+
args.filter(a => !a.required).forEach(arg => {
|
|
16
|
+
argParts.push(`[${arg.name}]`);
|
|
17
|
+
});
|
|
18
|
+
// Options
|
|
19
|
+
options.forEach(opt => {
|
|
20
|
+
if (opt.type === 'boolean') {
|
|
21
|
+
argParts.push(`[--${opt.name}]`);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
argParts.push(`[--${opt.name} <value>]`);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
// Always add standard options
|
|
28
|
+
argParts.push('[--interactive]');
|
|
29
|
+
argParts.push('[--guidance "text"]');
|
|
30
|
+
const argsString = argParts.join(' ');
|
|
31
|
+
return `---
|
|
32
|
+
name: ${name}
|
|
33
|
+
description: ${description}
|
|
34
|
+
args: ${argsString}
|
|
35
|
+
commandHint:
|
|
36
|
+
modelRole: ${modelRole}
|
|
37
|
+
modelTier: ${modelTier}
|
|
38
|
+
---`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Generate Arguments section
|
|
42
|
+
*/
|
|
43
|
+
export function generateArgumentsSection(args) {
|
|
44
|
+
if (args.length === 0) {
|
|
45
|
+
return '';
|
|
46
|
+
}
|
|
47
|
+
let section = '\n## Arguments\n\n';
|
|
48
|
+
section += '| Argument | Required | Description |\n';
|
|
49
|
+
section += '|----------|----------|-------------|\n';
|
|
50
|
+
args.forEach(arg => {
|
|
51
|
+
const defaultStr = arg.default ? ` (default: ${arg.default})` : '';
|
|
52
|
+
section += `| ${arg.name} | ${arg.required ? 'Yes' : 'No'} | ${arg.description}${defaultStr} |\n`;
|
|
53
|
+
});
|
|
54
|
+
return section;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Generate Options section
|
|
58
|
+
*/
|
|
59
|
+
export function generateOptionsSection(options) {
|
|
60
|
+
if (options.length === 0) {
|
|
61
|
+
return '';
|
|
62
|
+
}
|
|
63
|
+
let section = '\n## Options\n\n';
|
|
64
|
+
section += '| Option | Type | Description |\n';
|
|
65
|
+
section += '|--------|------|-------------|\n';
|
|
66
|
+
options.forEach(opt => {
|
|
67
|
+
const defaultStr = opt.default !== undefined ? ` (default: ${opt.default})` : '';
|
|
68
|
+
section += `| --${opt.name} | ${opt.type} | ${opt.description}${defaultStr} |\n`;
|
|
69
|
+
});
|
|
70
|
+
// Add standard options
|
|
71
|
+
section += '| --interactive | boolean | Enable interactive mode with guided questions |\n';
|
|
72
|
+
section += '| --guidance | string | Provide strategic guidance for execution |\n';
|
|
73
|
+
return section;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Utility template - simple operation, single action
|
|
77
|
+
*/
|
|
78
|
+
export function generateUtilityTemplate(name, description, args = [], options = [], guidance, modelRole = 'efficiency', modelTier = 'economy') {
|
|
79
|
+
const frontmatter = generateFrontmatter(name, description, args, options, modelRole, modelTier);
|
|
80
|
+
const argsSection = generateArgumentsSection(args);
|
|
81
|
+
const optionsSection = generateOptionsSection(options);
|
|
82
|
+
const titleCase = name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
|
|
83
|
+
return `${frontmatter}
|
|
84
|
+
|
|
85
|
+
# ${titleCase}
|
|
86
|
+
|
|
87
|
+
${description}
|
|
88
|
+
|
|
89
|
+
## Usage
|
|
90
|
+
|
|
91
|
+
\`\`\`
|
|
92
|
+
/${name}${args.length > 0 ? ' ' + args.map(a => a.required ? `<${a.name}>` : `[${a.name}]`).join(' ') : ''}${options.length > 0 ? ' [options]' : ''}
|
|
93
|
+
\`\`\`
|
|
94
|
+
${argsSection}${optionsSection}
|
|
95
|
+
|
|
96
|
+
## Execution
|
|
97
|
+
|
|
98
|
+
1. **Validate inputs**: Verify all required arguments are provided
|
|
99
|
+
2. **Process request**: Execute the primary operation
|
|
100
|
+
3. **Generate output**: Return results in appropriate format
|
|
101
|
+
4. **Report status**: Indicate success or failure with clear messaging
|
|
102
|
+
|
|
103
|
+
${guidance ? `## Guidance\n\n${guidance}\n` : ''}
|
|
104
|
+
## Output
|
|
105
|
+
|
|
106
|
+
The command returns:
|
|
107
|
+
- Success message with operation details
|
|
108
|
+
- Any generated artifacts or file paths
|
|
109
|
+
- Relevant metrics or status information
|
|
110
|
+
|
|
111
|
+
## Examples
|
|
112
|
+
|
|
113
|
+
\`\`\`bash
|
|
114
|
+
# Basic usage
|
|
115
|
+
/${name}${args.length > 0 && args[0].required ? ` <${args[0].name}>` : ''}
|
|
116
|
+
|
|
117
|
+
# With options
|
|
118
|
+
/${name}${args.length > 0 && args[0].required ? ` <${args[0].name}>` : ''}${options.length > 0 ? ` --${options[0].name} value` : ''}
|
|
119
|
+
|
|
120
|
+
# Interactive mode
|
|
121
|
+
/${name}${args.length > 0 && args[0].required ? ` <${args[0].name}>` : ''} --interactive
|
|
122
|
+
\`\`\`
|
|
123
|
+
|
|
124
|
+
## Related Commands
|
|
125
|
+
|
|
126
|
+
- See other commands in the same domain for related functionality
|
|
127
|
+
`;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Transformation template - input/output pipeline
|
|
131
|
+
*/
|
|
132
|
+
export function generateTransformationTemplate(name, description, args = [], options = [], guidance, modelRole = 'efficiency', modelTier = 'economy') {
|
|
133
|
+
const frontmatter = generateFrontmatter(name, description, args, options, modelRole, modelTier);
|
|
134
|
+
const argsSection = generateArgumentsSection(args);
|
|
135
|
+
const optionsSection = generateOptionsSection(options);
|
|
136
|
+
const titleCase = name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
|
|
137
|
+
return `${frontmatter}
|
|
138
|
+
|
|
139
|
+
# ${titleCase}
|
|
140
|
+
|
|
141
|
+
${description}
|
|
142
|
+
|
|
143
|
+
## Usage
|
|
144
|
+
|
|
145
|
+
\`\`\`
|
|
146
|
+
/${name}${args.length > 0 ? ' ' + args.map(a => a.required ? `<${a.name}>` : `[${a.name}]`).join(' ') : ''}${options.length > 0 ? ' [options]' : ''}
|
|
147
|
+
\`\`\`
|
|
148
|
+
${argsSection}${optionsSection}
|
|
149
|
+
|
|
150
|
+
## Transformation Pipeline
|
|
151
|
+
|
|
152
|
+
1. **Input validation**: Verify input format and content
|
|
153
|
+
2. **Pre-processing**: Prepare input for transformation
|
|
154
|
+
3. **Core transformation**: Apply main transformation logic
|
|
155
|
+
4. **Post-processing**: Format and validate output
|
|
156
|
+
5. **Output generation**: Write transformed content to target
|
|
157
|
+
|
|
158
|
+
${guidance ? `## Guidance\n\n${guidance}\n` : ''}
|
|
159
|
+
## Input Requirements
|
|
160
|
+
|
|
161
|
+
Describe expected input format, structure, or constraints.
|
|
162
|
+
|
|
163
|
+
## Output Format
|
|
164
|
+
|
|
165
|
+
Describe output format, structure, and location.
|
|
166
|
+
|
|
167
|
+
## Examples
|
|
168
|
+
|
|
169
|
+
\`\`\`bash
|
|
170
|
+
# Basic transformation
|
|
171
|
+
/${name}${args.length > 0 && args[0].required ? ` <${args[0].name}>` : ''}
|
|
172
|
+
|
|
173
|
+
# With custom options
|
|
174
|
+
/${name}${args.length > 0 && args[0].required ? ` <${args[0].name}>` : ''}${options.length > 0 ? ` --${options[0].name} value` : ''}
|
|
175
|
+
|
|
176
|
+
# Interactive mode
|
|
177
|
+
/${name} --interactive
|
|
178
|
+
\`\`\`
|
|
179
|
+
|
|
180
|
+
## Validation
|
|
181
|
+
|
|
182
|
+
- Input validation criteria
|
|
183
|
+
- Output validation criteria
|
|
184
|
+
- Error handling and recovery
|
|
185
|
+
|
|
186
|
+
## Related Commands
|
|
187
|
+
|
|
188
|
+
- See other transformation commands for similar pipelines
|
|
189
|
+
`;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Orchestration template - multi-agent workflow
|
|
193
|
+
*/
|
|
194
|
+
export function generateOrchestrationTemplate(name, description, args = [], options = [], guidance, modelRole = 'coding', modelTier = 'standard') {
|
|
195
|
+
const frontmatter = generateFrontmatter(name, description, args, options, modelRole, modelTier);
|
|
196
|
+
const argsSection = generateArgumentsSection(args);
|
|
197
|
+
const optionsSection = generateOptionsSection(options);
|
|
198
|
+
const titleCase = name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
|
|
199
|
+
return `${frontmatter}
|
|
200
|
+
|
|
201
|
+
# ${titleCase}
|
|
202
|
+
|
|
203
|
+
${description}
|
|
204
|
+
|
|
205
|
+
## Usage
|
|
206
|
+
|
|
207
|
+
\`\`\`
|
|
208
|
+
/${name}${args.length > 0 ? ' ' + args.map(a => a.required ? `<${a.name}>` : `[${a.name}]`).join(' ') : ''}${options.length > 0 ? ' [options]' : ''}
|
|
209
|
+
\`\`\`
|
|
210
|
+
${argsSection}${optionsSection}
|
|
211
|
+
|
|
212
|
+
## Workflow Phases
|
|
213
|
+
|
|
214
|
+
### Phase 1: Initialization
|
|
215
|
+
- Validate prerequisites
|
|
216
|
+
- Gather required inputs
|
|
217
|
+
- Set up working context
|
|
218
|
+
|
|
219
|
+
### Phase 2: Primary Execution
|
|
220
|
+
- Coordinate agent assignments
|
|
221
|
+
- Execute parallel tasks
|
|
222
|
+
- Monitor progress
|
|
223
|
+
|
|
224
|
+
### Phase 3: Review & Synthesis
|
|
225
|
+
- Collect agent outputs
|
|
226
|
+
- Synthesize results
|
|
227
|
+
- Validate completeness
|
|
228
|
+
|
|
229
|
+
### Phase 4: Finalization
|
|
230
|
+
- Archive artifacts
|
|
231
|
+
- Generate reports
|
|
232
|
+
- Update project state
|
|
233
|
+
|
|
234
|
+
${guidance ? `## Guidance\n\n${guidance}\n` : ''}
|
|
235
|
+
## Agent Coordination
|
|
236
|
+
|
|
237
|
+
### Primary Author
|
|
238
|
+
- Responsible agent for main deliverable
|
|
239
|
+
- Draft initial version
|
|
240
|
+
|
|
241
|
+
### Parallel Reviewers
|
|
242
|
+
Launch in single message for concurrent review:
|
|
243
|
+
- Domain expert reviews
|
|
244
|
+
- Quality validation
|
|
245
|
+
- Technical validation
|
|
246
|
+
|
|
247
|
+
### Synthesizer
|
|
248
|
+
- Merge review feedback
|
|
249
|
+
- Resolve conflicts
|
|
250
|
+
- Generate final version
|
|
251
|
+
|
|
252
|
+
## Artifacts Generated
|
|
253
|
+
|
|
254
|
+
List expected artifacts, their locations, and purposes.
|
|
255
|
+
|
|
256
|
+
## Success Criteria
|
|
257
|
+
|
|
258
|
+
Define what constitutes successful completion:
|
|
259
|
+
- Required deliverables present
|
|
260
|
+
- Quality gates passed
|
|
261
|
+
- All reviews completed
|
|
262
|
+
|
|
263
|
+
## Examples
|
|
264
|
+
|
|
265
|
+
\`\`\`bash
|
|
266
|
+
# Standard execution
|
|
267
|
+
/${name}${args.length > 0 && args[0].required ? ` <${args[0].name}>` : ''}
|
|
268
|
+
|
|
269
|
+
# With strategic guidance
|
|
270
|
+
/${name}${args.length > 0 && args[0].required ? ` <${args[0].name}>` : ''} --guidance "Focus on security and performance"
|
|
271
|
+
|
|
272
|
+
# Interactive mode
|
|
273
|
+
/${name} --interactive
|
|
274
|
+
\`\`\`
|
|
275
|
+
|
|
276
|
+
## Related Workflows
|
|
277
|
+
|
|
278
|
+
- See other orchestration commands for similar multi-agent patterns
|
|
279
|
+
`;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Generate command content based on template type
|
|
283
|
+
*/
|
|
284
|
+
export function generateCommandContent(template, name, description, args = [], options = [], guidance, modelRole, modelTier) {
|
|
285
|
+
switch (template) {
|
|
286
|
+
case 'utility':
|
|
287
|
+
return generateUtilityTemplate(name, description, args, options, guidance, modelRole, modelTier);
|
|
288
|
+
case 'transformation':
|
|
289
|
+
return generateTransformationTemplate(name, description, args, options, guidance, modelRole, modelTier);
|
|
290
|
+
case 'orchestration':
|
|
291
|
+
return generateOrchestrationTemplate(name, description, args, options, guidance, modelRole, modelTier);
|
|
292
|
+
default:
|
|
293
|
+
throw new Error(`Unknown template type: ${template}`);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AIWG.md generator — content-rich CLAUDE.md companion for non-Claude providers.
|
|
3
|
+
*
|
|
4
|
+
* Per ADR-1 §0.5: AIWG.md at project root has the same content shape as
|
|
5
|
+
* CLAUDE.md. Both files `@`-reference the project's `.aiwg/AIWG.md` (the
|
|
6
|
+
* source of truth). Non-Claude providers reach AIWG.md transitively via the
|
|
7
|
+
* provider startup adapters. WORKSPACE.md and AIWG.md contain
|
|
8
|
+
* identical framework prose; they exist as two named files because Claude
|
|
9
|
+
* Code looks for `CLAUDE.md` and the seven AGENTS.md providers reach
|
|
10
|
+
* AIWG.md via the AGENTS.md hook-up.
|
|
11
|
+
*
|
|
12
|
+
* Generation strategy: read the project's CLAUDE.md (which already exists in
|
|
13
|
+
* a properly-configured repo) and emit AIWG.md as the same content with the
|
|
14
|
+
* AIWG signature comment in place. If CLAUDE.md is absent (early-init repos),
|
|
15
|
+
* fall back to a minimal stub that points readers at `.aiwg/AIWG.md`.
|
|
16
|
+
*/
|
|
17
|
+
import { promises as fs } from 'node:fs';
|
|
18
|
+
import * as path from 'node:path';
|
|
19
|
+
import { buildParallelismSection, replaceOrAppendParallelismBlock } from './parallelism-section.js';
|
|
20
|
+
import { buildContextFinalizationBlock, replaceOrAppendFinalizationBlock } from './finalization.js';
|
|
21
|
+
import { buildExternalLinksSection, replaceOrAppendExternalLinksBlock, } from './external-links-section.js';
|
|
22
|
+
const AIWG_SIGNATURE_COMMENT = '<!-- aiwg-managed -->';
|
|
23
|
+
/**
|
|
24
|
+
* Build the AIWG.md content for emission at project root.
|
|
25
|
+
*
|
|
26
|
+
* - When CLAUDE.md exists at project root: copy its content with the AIWG
|
|
27
|
+
* signature comment inserted in the second line so future runs of the
|
|
28
|
+
* generator know the file is AIWG-managed.
|
|
29
|
+
* - When CLAUDE.md does not exist: emit a minimal stub directing readers to
|
|
30
|
+
* the project's `.aiwg/AIWG.md` source.
|
|
31
|
+
*
|
|
32
|
+
* Returns the rendered content as a string. Caller is responsible for the
|
|
33
|
+
* atomic-write emission and the operator-claimed-file detection.
|
|
34
|
+
*/
|
|
35
|
+
export async function buildAiwgMdContent(projectPath, stagedClaudeMdContent) {
|
|
36
|
+
let claudeMdContent = stagedClaudeMdContent;
|
|
37
|
+
if (stagedClaudeMdContent === undefined) {
|
|
38
|
+
const claudeMdPath = path.join(projectPath, 'CLAUDE.md');
|
|
39
|
+
try {
|
|
40
|
+
claudeMdContent = await fs.readFile(claudeMdPath, 'utf8');
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
if (err.code !== 'ENOENT') {
|
|
44
|
+
throw err;
|
|
45
|
+
}
|
|
46
|
+
claudeMdContent = null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// #1362: parallelism cap section, injected after generation so it surfaces
|
|
50
|
+
// in regenerated context files regardless of CLAUDE.md content.
|
|
51
|
+
const parallelismSection = await buildParallelismSection(projectPath);
|
|
52
|
+
const finalizationBlock = await buildContextFinalizationBlock(projectPath);
|
|
53
|
+
const externalLinksSection = await buildExternalLinksSection(projectPath);
|
|
54
|
+
if (claudeMdContent) {
|
|
55
|
+
// Insert the AIWG signature comment as the second line.
|
|
56
|
+
// Top line is typically `# AIWG` or `# Project` heading; preserve it.
|
|
57
|
+
const lines = claudeMdContent.split('\n');
|
|
58
|
+
// #1268: strip `@AIWG.md` self-include directives. CLAUDE.md uses
|
|
59
|
+
// `@AIWG.md` to pull in the framework context; AIWG.md IS that framework
|
|
60
|
+
// context, so the directive becomes a self-reference when copied through.
|
|
61
|
+
// Match the directive when it appears on its own line (possibly indented).
|
|
62
|
+
const SELF_INCLUDE_PATTERN = /^\s*@AIWG\.md\s*$/;
|
|
63
|
+
const filtered = lines.filter((line) => !SELF_INCLUDE_PATTERN.test(line));
|
|
64
|
+
const firstLine = filtered[0] ?? '';
|
|
65
|
+
const rest = filtered.slice(1);
|
|
66
|
+
// If the file already carries the signature elsewhere, don't double-insert.
|
|
67
|
+
const alreadySigned = filtered.slice(0, 4).some((l) => l.includes(AIWG_SIGNATURE_COMMENT));
|
|
68
|
+
const baseContent = alreadySigned
|
|
69
|
+
? filtered.join('\n')
|
|
70
|
+
: [
|
|
71
|
+
firstLine,
|
|
72
|
+
AIWG_SIGNATURE_COMMENT,
|
|
73
|
+
'<!-- AIWG.md is the CLAUDE.md companion for non-Claude providers; same content. -->',
|
|
74
|
+
...rest,
|
|
75
|
+
].join('\n');
|
|
76
|
+
const withParallelism = replaceOrAppendParallelismBlock(baseContent, parallelismSection);
|
|
77
|
+
const withFinalization = replaceOrAppendFinalizationBlock(withParallelism, finalizationBlock);
|
|
78
|
+
return replaceOrAppendExternalLinksBlock(withFinalization, externalLinksSection);
|
|
79
|
+
}
|
|
80
|
+
// Fallback stub.
|
|
81
|
+
const stub = [
|
|
82
|
+
'# AIWG.md',
|
|
83
|
+
AIWG_SIGNATURE_COMMENT,
|
|
84
|
+
'<!-- CLAUDE.md companion for non-Claude providers. -->',
|
|
85
|
+
'',
|
|
86
|
+
'CLAUDE.md was not found at project root. AIWG.md normally mirrors that content.',
|
|
87
|
+
'See [.aiwg/AIWG.md](./.aiwg/AIWG.md) for the project framework context.',
|
|
88
|
+
'',
|
|
89
|
+
].join('\n');
|
|
90
|
+
const withParallelism = replaceOrAppendParallelismBlock(stub, parallelismSection);
|
|
91
|
+
const withFinalization = replaceOrAppendFinalizationBlock(withParallelism, finalizationBlock);
|
|
92
|
+
return replaceOrAppendExternalLinksBlock(withFinalization, externalLinksSection);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Public API: build AIWG.md content for a given project.
|
|
96
|
+
*
|
|
97
|
+
* The wrapper exists so future variants (per-provider AIWG.md customization,
|
|
98
|
+
* AIWG.local.md operator overrides, etc.) have a single entry point in the
|
|
99
|
+
* surface API without callers reaching into the implementation.
|
|
100
|
+
*/
|
|
101
|
+
export async function generateAiwgMd(projectPath) {
|
|
102
|
+
return buildAiwgMdContent(projectPath);
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=aiwg-md.js.map
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path-emission allowlist for AGENTS.md link-index entries.
|
|
3
|
+
*
|
|
4
|
+
* Per ADR-1 §2 (security mitigation R2): the generator MUST only emit `Path:` values
|
|
5
|
+
* that match a path produced by the AIWG-owned ProviderDefinition registry plus
|
|
6
|
+
* the canonical `~/.agents/skills/` cross-provider user-scope target. Files
|
|
7
|
+
* deployed by project-local manifests at non-AIWG paths are not indexed. This
|
|
8
|
+
* closes the link-redirect attack surface where a malicious project-local
|
|
9
|
+
* artifact could cite a shadow file outside AIWG's path-map domain.
|
|
10
|
+
*/
|
|
11
|
+
import { homedir } from 'node:os';
|
|
12
|
+
import * as path from 'node:path';
|
|
13
|
+
/**
|
|
14
|
+
* The AIWG-owned path prefixes that may appear in an AGENTS.md link entry.
|
|
15
|
+
*
|
|
16
|
+
* Mirrors the per-provider directory list from `ProviderDefinition.paths.artifacts`,
|
|
17
|
+
* generalized to prefixes (so per-artifact subpaths under each prefix are accepted).
|
|
18
|
+
*
|
|
19
|
+
* Sources kept in sync:
|
|
20
|
+
* - `src/providers/provider-definitions.ts`
|
|
21
|
+
* - `src/smiths/platform-paths.ts` (TypeScript path resolvers)
|
|
22
|
+
* - `src/config/aiwg-config.ts`
|
|
23
|
+
*
|
|
24
|
+
* If a new platform path is added there, add it here.
|
|
25
|
+
*/
|
|
26
|
+
const AIWG_PATH_PREFIXES_RELATIVE = [
|
|
27
|
+
// Claude Code
|
|
28
|
+
'.claude/agents/',
|
|
29
|
+
'.claude/skills/',
|
|
30
|
+
'.claude/commands/',
|
|
31
|
+
'.claude/rules/',
|
|
32
|
+
'.claude/hooks/',
|
|
33
|
+
// Factory AI
|
|
34
|
+
'.factory/droids/',
|
|
35
|
+
'.factory/skills/',
|
|
36
|
+
'.factory/commands/',
|
|
37
|
+
'.factory/rules/',
|
|
38
|
+
// OpenAI Codex (project scope; user scope handled below via homedir)
|
|
39
|
+
'.codex/agents/',
|
|
40
|
+
'.codex/skills/',
|
|
41
|
+
'.codex/commands/',
|
|
42
|
+
'.codex/rules/',
|
|
43
|
+
// OpenCode
|
|
44
|
+
'.opencode/agent/',
|
|
45
|
+
'.opencode/skill/',
|
|
46
|
+
'.opencode/rule/',
|
|
47
|
+
// Copilot
|
|
48
|
+
'.github/agents/',
|
|
49
|
+
'.github/skills/',
|
|
50
|
+
'.github/copilot-rules/',
|
|
51
|
+
'.github/prompts/',
|
|
52
|
+
'.github/instructions/',
|
|
53
|
+
// Cursor
|
|
54
|
+
'.cursor/agents/',
|
|
55
|
+
'.cursor/skills/',
|
|
56
|
+
'.cursor/commands/',
|
|
57
|
+
'.cursor/rules/',
|
|
58
|
+
// Warp
|
|
59
|
+
'.warp/agents/',
|
|
60
|
+
'.warp/skills/',
|
|
61
|
+
'.warp/commands/',
|
|
62
|
+
'.warp/rules/',
|
|
63
|
+
// Windsurf
|
|
64
|
+
'.windsurf/agents/',
|
|
65
|
+
'.windsurf/skills/',
|
|
66
|
+
'.windsurf/workflows/',
|
|
67
|
+
'.windsurf/rules/',
|
|
68
|
+
// Cross-agent canonical project-scope path (#766 + ADR-1)
|
|
69
|
+
'.agents/agents/',
|
|
70
|
+
'.agents/skills/',
|
|
71
|
+
'.agents/rules/',
|
|
72
|
+
'.agents/behaviors/',
|
|
73
|
+
];
|
|
74
|
+
/**
|
|
75
|
+
* User-scope path prefixes (resolved with homedir() at check time).
|
|
76
|
+
*
|
|
77
|
+
* Per ADR-4 §2 user-global path map.
|
|
78
|
+
*/
|
|
79
|
+
const AIWG_PATH_PREFIXES_USER = [
|
|
80
|
+
// Cross-agent canonical user-scope path (ADR-4)
|
|
81
|
+
'.agents/skills/',
|
|
82
|
+
// Per-provider user-scope paths
|
|
83
|
+
'.claude/agents/',
|
|
84
|
+
'.claude/skills/',
|
|
85
|
+
'.claude/commands/',
|
|
86
|
+
'.claude/rules/',
|
|
87
|
+
'.claude/hooks/',
|
|
88
|
+
'.codex/skills/',
|
|
89
|
+
'.codex/prompts/',
|
|
90
|
+
'.codex/agents/',
|
|
91
|
+
'.codex/rules/',
|
|
92
|
+
'.cursor/agents/',
|
|
93
|
+
'.cursor/skills/',
|
|
94
|
+
'.cursor/commands/',
|
|
95
|
+
'.cursor/rules/',
|
|
96
|
+
'.warp/agents/',
|
|
97
|
+
'.warp/skills/',
|
|
98
|
+
'.warp/commands/',
|
|
99
|
+
'.warp/rules/',
|
|
100
|
+
'.windsurf/agents/',
|
|
101
|
+
'.windsurf/skills/',
|
|
102
|
+
'.windsurf/workflows/',
|
|
103
|
+
'.windsurf/rules/',
|
|
104
|
+
'.opencode/agent/',
|
|
105
|
+
'.opencode/skill/',
|
|
106
|
+
'.opencode/rule/',
|
|
107
|
+
'.openclaw/agents/',
|
|
108
|
+
'.openclaw/skills/',
|
|
109
|
+
'.openclaw/commands/',
|
|
110
|
+
'.openclaw/rules/',
|
|
111
|
+
'.openclaw/behaviors/',
|
|
112
|
+
'.openclaw/hooks/',
|
|
113
|
+
'.factory/droids/',
|
|
114
|
+
'.factory/skills/',
|
|
115
|
+
'.factory/commands/',
|
|
116
|
+
'.factory/rules/',
|
|
117
|
+
'.config/github-copilot/agents/',
|
|
118
|
+
'.config/github-copilot/prompts/',
|
|
119
|
+
'.config/github-copilot/instructions/',
|
|
120
|
+
'.hermes/skills/',
|
|
121
|
+
];
|
|
122
|
+
/**
|
|
123
|
+
* Check whether a path is allowed in an AGENTS.md link-index entry.
|
|
124
|
+
*
|
|
125
|
+
* Accepts both relative project-scope paths and absolute user-scope paths
|
|
126
|
+
* (rooted in homedir()). Rejects all other paths.
|
|
127
|
+
*
|
|
128
|
+
* Path normalization:
|
|
129
|
+
* - Backslashes are converted to forward slashes for cross-platform compatibility.
|
|
130
|
+
* - Leading `./` is stripped.
|
|
131
|
+
* - `..` segments anywhere in the path cause rejection (prevents escaping the project root).
|
|
132
|
+
*/
|
|
133
|
+
export function checkPathAllowed(inputPath) {
|
|
134
|
+
if (typeof inputPath !== 'string' || inputPath.length === 0) {
|
|
135
|
+
return { ok: false, rejectedFor: 'empty or non-string path', isUserScope: false };
|
|
136
|
+
}
|
|
137
|
+
// Reject any path with a parent-dir traversal segment.
|
|
138
|
+
const segments = inputPath.split(/[/\\]/);
|
|
139
|
+
if (segments.includes('..')) {
|
|
140
|
+
return { ok: false, rejectedFor: 'parent-dir traversal (..) not allowed', isUserScope: false };
|
|
141
|
+
}
|
|
142
|
+
// Normalize to forward slashes; strip leading ./
|
|
143
|
+
let normalized = inputPath.replace(/\\/g, '/');
|
|
144
|
+
if (normalized.startsWith('./')) {
|
|
145
|
+
normalized = normalized.slice(2);
|
|
146
|
+
}
|
|
147
|
+
// User-scope: starts with ~/ (or absolute home directory)
|
|
148
|
+
const home = homedir();
|
|
149
|
+
const homeNormalized = home.replace(/\\/g, '/');
|
|
150
|
+
let isUserScope = false;
|
|
151
|
+
let userScopeRelative = '';
|
|
152
|
+
if (normalized.startsWith('~/')) {
|
|
153
|
+
isUserScope = true;
|
|
154
|
+
userScopeRelative = normalized.slice(2);
|
|
155
|
+
}
|
|
156
|
+
else if (normalized.startsWith(homeNormalized + '/')) {
|
|
157
|
+
isUserScope = true;
|
|
158
|
+
userScopeRelative = normalized.slice(homeNormalized.length + 1);
|
|
159
|
+
}
|
|
160
|
+
else if (path.isAbsolute(inputPath)) {
|
|
161
|
+
return {
|
|
162
|
+
ok: false,
|
|
163
|
+
rejectedFor: 'absolute path outside home directory',
|
|
164
|
+
isUserScope: false,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
if (isUserScope) {
|
|
168
|
+
for (const prefix of AIWG_PATH_PREFIXES_USER) {
|
|
169
|
+
if (userScopeRelative === prefix.replace(/\/$/, '') || userScopeRelative.startsWith(prefix)) {
|
|
170
|
+
return { ok: true, rejectedFor: '', isUserScope: true };
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
ok: false,
|
|
175
|
+
rejectedFor: 'user-scope path not in AIWG-owned prefix list',
|
|
176
|
+
isUserScope: true,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
// Project-scope: must start with one of AIWG_PATH_PREFIXES_RELATIVE.
|
|
180
|
+
for (const prefix of AIWG_PATH_PREFIXES_RELATIVE) {
|
|
181
|
+
if (normalized === prefix.replace(/\/$/, '') || normalized.startsWith(prefix)) {
|
|
182
|
+
return { ok: true, rejectedFor: '', isUserScope: false };
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
ok: false,
|
|
187
|
+
rejectedFor: 'project-scope path not in AIWG-owned prefix list',
|
|
188
|
+
isUserScope: false,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
export const ALLOWLIST_INTERNALS = {
|
|
192
|
+
AIWG_PATH_PREFIXES_RELATIVE,
|
|
193
|
+
AIWG_PATH_PREFIXES_USER,
|
|
194
|
+
};
|
|
195
|
+
//# sourceMappingURL=allowlist.js.map
|