@aiwg/cli 0.0.0-bootstrap.0 → 2026.7.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -1
- package/bin/aiwg.mjs +349 -0
- package/dist/src/a2a/agent-card.js +145 -0
- package/dist/src/a2a/client.js +411 -0
- package/dist/src/a2a/hitl-cli.js +171 -0
- package/dist/src/a2a/hitl-driver.js +370 -0
- package/dist/src/a2a/hitl.js +181 -0
- package/dist/src/a2a/http.js +193 -0
- package/dist/src/a2a/jcs.js +128 -0
- package/dist/src/a2a/jws.js +187 -0
- package/dist/src/a2a/types.js +24 -0
- package/dist/src/a2a/webhook.js +240 -0
- package/dist/src/activity-log/cli.js +348 -0
- package/dist/src/activity-log/parser.js +81 -0
- package/dist/src/activity-log/types.js +50 -0
- package/dist/src/agents/agent-deployer.js +367 -0
- package/dist/src/agents/agent-packager.js +271 -0
- package/dist/src/agents/agent-validator.js +271 -0
- package/dist/src/agents/grounding/knowledge-base.js +161 -0
- package/dist/src/agents/grounding/types.js +12 -0
- package/dist/src/agents/index.js +10 -0
- package/dist/src/agents/packaged-agent-inventory.js +75 -0
- package/dist/src/agents/types.js +7 -0
- package/dist/src/api/index.d.ts +10 -0
- package/dist/src/api/index.js +10 -0
- package/dist/src/artifacts/address-parser.js +73 -0
- package/dist/src/artifacts/audit/cli.js +183 -0
- package/dist/src/artifacts/audit/drift.js +122 -0
- package/dist/src/artifacts/audit/types.js +12 -0
- package/dist/src/artifacts/backends/graphology-backend.js +160 -0
- package/dist/src/artifacts/backends/json-backend.js +129 -0
- package/dist/src/artifacts/backends/sqlite-backend.js +199 -0
- package/dist/src/artifacts/browser-export.js +622 -0
- package/dist/src/artifacts/capability-resolver.js +94 -0
- package/dist/src/artifacts/checksum-manifest.js +91 -0
- package/dist/src/artifacts/citation-parser.js +162 -0
- package/dist/src/artifacts/cli.js +1462 -0
- package/dist/src/artifacts/corpus-tools/citation-densify.js +311 -0
- package/dist/src/artifacts/corpus-tools/cli.js +393 -0
- package/dist/src/artifacts/corpus-tools/corpus-graph.js +225 -0
- package/dist/src/artifacts/corpus-tools/curator.js +186 -0
- package/dist/src/artifacts/corpus-tools/discovery-log.js +70 -0
- package/dist/src/artifacts/corpus-tools/funder-network.js +141 -0
- package/dist/src/artifacts/corpus-tools/induction-audit.js +233 -0
- package/dist/src/artifacts/corpus-tools/integrity-scan.js +202 -0
- package/dist/src/artifacts/corpus-tools/profile-communities.js +166 -0
- package/dist/src/artifacts/corpus-tools/profile-edges.js +72 -0
- package/dist/src/artifacts/corpus-tools/profile-embed.js +113 -0
- package/dist/src/artifacts/corpus-tools/profile-generate-fm.js +167 -0
- package/dist/src/artifacts/corpus-tools/profile-generate.js +181 -0
- package/dist/src/artifacts/corpus-tools/profile-metrics.js +98 -0
- package/dist/src/artifacts/corpus-tools/profile-status.js +86 -0
- package/dist/src/artifacts/corpus-tools/profile-temporal.js +139 -0
- package/dist/src/artifacts/corpus-tools/radar-init.js +93 -0
- package/dist/src/artifacts/corpus-tools/radar-report.js +118 -0
- package/dist/src/artifacts/corpus-tools/radar-shared.js +189 -0
- package/dist/src/artifacts/corpus-tools/radar-status.js +68 -0
- package/dist/src/artifacts/corpus-tools/sidecar-lint.js +233 -0
- package/dist/src/artifacts/corpus-tools/sidecar-repair.js +277 -0
- package/dist/src/artifacts/corpus-tools/snapshot.js +591 -0
- package/dist/src/artifacts/corpus-tools/source-types.js +164 -0
- package/dist/src/artifacts/corpus-tools/vision-extract.js +243 -0
- package/dist/src/artifacts/corpus-views/build.js +126 -0
- package/dist/src/artifacts/corpus-views/corpus-config.js +124 -0
- package/dist/src/artifacts/corpus-views/ref-parser.js +437 -0
- package/dist/src/artifacts/corpus-views/renderers.js +353 -0
- package/dist/src/artifacts/corpus-views/taxonomies.js +131 -0
- package/dist/src/artifacts/dep-graph.js +173 -0
- package/dist/src/artifacts/discover-facets.js +375 -0
- package/dist/src/artifacts/embedding-index.js +354 -0
- package/dist/src/artifacts/enrichment/cli.js +240 -0
- package/dist/src/artifacts/enrichment/prompt.js +47 -0
- package/dist/src/artifacts/enrichment/store.js +90 -0
- package/dist/src/artifacts/enrichment/types.js +12 -0
- package/dist/src/artifacts/fortemi-core-query-adapter.js +475 -0
- package/dist/src/artifacts/fortemi-core-sync.js +251 -0
- package/dist/src/artifacts/fortemi-shard-export.js +44 -0
- package/dist/src/artifacts/fulltext.js +108 -0
- package/dist/src/artifacts/graph-backend.js +51 -0
- package/dist/src/artifacts/graph-query.js +247 -0
- package/dist/src/artifacts/hybrid-query.js +225 -0
- package/dist/src/artifacts/index-builder.js +1089 -0
- package/dist/src/artifacts/index-reader.js +112 -0
- package/dist/src/artifacts/index-status.js +193 -0
- package/dist/src/artifacts/legacy-index-migration.js +169 -0
- package/dist/src/artifacts/move.js +154 -0
- package/dist/src/artifacts/operational-state.js +239 -0
- package/dist/src/artifacts/prebuilt-build-lock.js +49 -0
- package/dist/src/artifacts/query-engine.js +1955 -0
- package/dist/src/artifacts/source-graph.js +529 -0
- package/dist/src/artifacts/stats.js +169 -0
- package/dist/src/artifacts/types.js +606 -0
- package/dist/src/artifacts/views/cli.js +293 -0
- package/dist/src/artifacts/views/definition.js +170 -0
- package/dist/src/artifacts/views/store.js +149 -0
- package/dist/src/artifacts/views/types.js +8 -0
- package/dist/src/artifacts/watcher.js +255 -0
- package/dist/src/catalog/builtin-models.json +636 -0
- package/dist/src/catalog/cli.js +228 -0
- package/dist/src/catalog/cli.mjs +289 -0
- package/dist/src/catalog/index.js +15 -0
- package/dist/src/catalog/loader.js +217 -0
- package/dist/src/catalog/loader.mjs +251 -0
- package/dist/src/catalog/sources.json +41 -0
- package/dist/src/catalog/types.js +8 -0
- package/dist/src/channel/manager.mjs +504 -0
- package/dist/src/cli/agent-spawn.js +178 -0
- package/dist/src/cli/cli-extension-loader.js +245 -0
- package/dist/src/cli/command-log.js +275 -0
- package/dist/src/cli/config-loader.js +232 -0
- package/dist/src/cli/env.js +82 -0
- package/dist/src/cli/errors.js +150 -0
- package/dist/src/cli/find-package-root.js +40 -0
- package/dist/src/cli/git-hooks.js +250 -0
- package/dist/src/cli/handlers/agentcard.js +206 -0
- package/dist/src/cli/handlers/artifacts.js +76 -0
- package/dist/src/cli/handlers/best-practices-audit.js +280 -0
- package/dist/src/cli/handlers/cockpit.js +137 -0
- package/dist/src/cli/handlers/command-log.js +37 -0
- package/dist/src/cli/handlers/daemon.js +59 -0
- package/dist/src/cli/handlers/diagnose.js +300 -0
- package/dist/src/cli/handlers/execution-mode.js +105 -0
- package/dist/src/cli/handlers/feedback.js +341 -0
- package/dist/src/cli/handlers/help.js +147 -0
- package/dist/src/cli/handlers/index.js +302 -0
- package/dist/src/cli/handlers/init.js +179 -0
- package/dist/src/cli/handlers/install.js +129 -0
- package/dist/src/cli/handlers/issues.js +46 -0
- package/dist/src/cli/handlers/lint.js +42 -0
- package/dist/src/cli/handlers/local-executor.js +315 -0
- package/dist/src/cli/handlers/marketplace.js +168 -0
- package/dist/src/cli/handlers/mc.js +1010 -0
- package/dist/src/cli/handlers/models.js +352 -0
- package/dist/src/cli/handlers/packages.js +155 -0
- package/dist/src/cli/handlers/ralph-launcher.js +717 -0
- package/dist/src/cli/handlers/ralph.js +575 -0
- package/dist/src/cli/handlers/refresh.js +432 -0
- package/dist/src/cli/handlers/regenerate.js +336 -0
- package/dist/src/cli/handlers/repo-access.js +109 -0
- package/dist/src/cli/handlers/run.js +165 -0
- package/dist/src/cli/handlers/runtime-info.js +301 -0
- package/dist/src/cli/handlers/sandbox.js +197 -0
- package/dist/src/cli/handlers/scaffolding.js +149 -0
- package/dist/src/cli/handlers/script-runner.js +121 -0
- package/dist/src/cli/handlers/sdlc-accelerate.js +148 -0
- package/dist/src/cli/handlers/serve.js +1835 -0
- package/dist/src/cli/handlers/session.js +348 -0
- package/dist/src/cli/handlers/setup.js +440 -0
- package/dist/src/cli/handlers/skill-lint.js +367 -0
- package/dist/src/cli/handlers/skill-usage.js +74 -0
- package/dist/src/cli/handlers/steward.js +567 -0
- package/dist/src/cli/handlers/subcommands.js +1702 -0
- package/dist/src/cli/handlers/team.js +337 -0
- package/dist/src/cli/handlers/types.js +11 -0
- package/dist/src/cli/handlers/use.js +2772 -0
- package/dist/src/cli/handlers/utilities.js +703 -0
- package/dist/src/cli/handlers/version.js +134 -0
- package/dist/src/cli/handlers/workspace-context.js +93 -0
- package/dist/src/cli/handlers/workspace.js +126 -0
- package/dist/src/cli/help-generator.js +178 -0
- package/dist/src/cli/hooks/builtin/activity-log-hook.js +126 -0
- package/dist/src/cli/hooks/executor.js +96 -0
- package/dist/src/cli/hooks/index.js +15 -0
- package/dist/src/cli/hooks/registry.js +143 -0
- package/dist/src/cli/hooks/types.js +13 -0
- package/dist/src/cli/log.js +492 -0
- package/dist/src/cli/project-isolation/detect.js +70 -0
- package/dist/src/cli/project-isolation/index.js +7 -0
- package/dist/src/cli/project-isolation/signals.js +17 -0
- package/dist/src/cli/project-isolation/warning.js +102 -0
- package/dist/src/cli/prompt-utils.js +155 -0
- package/dist/src/cli/provider-deployment-plan.js +126 -0
- package/dist/src/cli/provider-resolution.js +119 -0
- package/dist/src/cli/router.js +305 -0
- package/dist/src/cli/scope-resolver.js +392 -0
- package/dist/src/cli/skill-usage.js +616 -0
- package/dist/src/cli/ui.js +224 -0
- package/dist/src/cli/watch-service.js +203 -0
- package/dist/src/cli/workflow-orchestrator.js +478 -0
- package/dist/src/cli/workspace-signals.js +321 -0
- package/dist/src/community/footer.js +14 -0
- package/dist/src/community/links.js +123 -0
- package/dist/src/community/milestones.js +46 -0
- package/dist/src/community/nudge-policy.js +93 -0
- package/dist/src/config/aiwg-config.js +883 -0
- package/dist/src/config/cli.js +703 -0
- package/dist/src/config/gitignore.js +156 -0
- package/dist/src/config/project-artifacts.js +76 -0
- package/dist/src/config/user-config.js +428 -0
- package/dist/src/config/user-registry.js +127 -0
- package/dist/src/config/workspace.js +276 -0
- package/dist/src/contributors/detect.js +39 -0
- package/dist/src/contributors/discover.js +172 -0
- package/dist/src/contributors/heuristic.js +186 -0
- package/dist/src/contributors/index.js +11 -0
- package/dist/src/contributors/types.js +13 -0
- package/dist/src/contributors/validation.js +116 -0
- package/dist/src/data/community.schema.json +43 -0
- package/dist/src/data/community.yaml +16 -0
- package/dist/src/extensions/capability-index.js +270 -0
- package/dist/src/extensions/claude-hooks-installer.js +268 -0
- package/dist/src/extensions/commands/definitions.js +3485 -0
- package/dist/src/extensions/deployment-registration.js +463 -0
- package/dist/src/extensions/index.js +22 -0
- package/dist/src/extensions/loader.js +132 -0
- package/dist/src/extensions/managed-marker.js +100 -0
- package/dist/src/extensions/manifest.js +196 -0
- package/dist/src/extensions/project-local-activity.js +114 -0
- package/dist/src/extensions/project-local-discovery.js +261 -0
- package/dist/src/extensions/project-local-doctor.js +281 -0
- package/dist/src/extensions/project-local-gitignore.js +176 -0
- package/dist/src/extensions/project-local-paths.js +121 -0
- package/dist/src/extensions/project-local-promote.js +218 -0
- package/dist/src/extensions/project-local-remove.js +373 -0
- package/dist/src/extensions/project-local-scaffold.js +252 -0
- package/dist/src/extensions/project-quickref.js +291 -0
- package/dist/src/extensions/registry.js +368 -0
- package/dist/src/extensions/shadow-resolver.js +271 -0
- package/dist/src/extensions/types.js +86 -0
- package/dist/src/extensions/upstream-registry.js +195 -0
- package/dist/src/extensions/validation.js +631 -0
- package/dist/src/features/catalog.js +88 -0
- package/dist/src/features/cli.js +197 -0
- package/dist/src/features/installer.js +57 -0
- package/dist/src/features/paths.js +14 -0
- package/dist/src/features/runtime.js +21 -0
- package/dist/src/features/status.js +134 -0
- package/dist/src/hooks/laziness-detection.js +532 -0
- package/dist/src/intake/git-history-analyzer.js +486 -0
- package/dist/src/intake/index.js +9 -0
- package/dist/src/issues/cli.js +327 -0
- package/dist/src/issues/index.js +5 -0
- package/dist/src/issues/live.js +154 -0
- package/dist/src/issues/local.js +666 -0
- package/dist/src/issues/sync.js +143 -0
- package/dist/src/issues/types.js +2 -0
- package/dist/src/issues/workflows.js +164 -0
- package/dist/src/kb/cli.js +173 -0
- package/dist/src/lint/cli.js +171 -0
- package/dist/src/lint/loader.js +225 -0
- package/dist/src/lint/reporters.js +141 -0
- package/dist/src/lint/runner.js +364 -0
- package/dist/src/lint/types.js +10 -0
- package/dist/src/marketplace/cache.js +110 -0
- package/dist/src/marketplace/identifier.js +63 -0
- package/dist/src/marketplace/registry.js +36 -0
- package/dist/src/marketplace/sources/clawhub.js +53 -0
- package/dist/src/marketplace/sources/git.js +45 -0
- package/dist/src/marketplace/types.js +9 -0
- package/dist/src/mcp/adapters/codex-runtime.js +224 -0
- package/dist/src/mcp/cli.mjs +1197 -0
- package/dist/src/mcp/elicitation.mjs +149 -0
- package/dist/src/mcp/helpers.mjs +287 -0
- package/dist/src/mcp/index.mjs +11 -0
- package/dist/src/mcp/profiles.js +263 -0
- package/dist/src/mcp/profiles.mjs +360 -0
- package/dist/src/mcp/registry.js +376 -0
- package/dist/src/mcp/registry.mjs +387 -0
- package/dist/src/mcp/server.mjs +633 -0
- package/dist/src/mcp/test-simple.mjs +271 -0
- package/dist/src/mcp/tools/command-run.mjs +101 -0
- package/dist/src/mcp/tools/discovery.mjs +291 -0
- package/dist/src/mcp/tools/interaction.mjs +87 -0
- package/dist/src/mcp/tools/orchestration.mjs +320 -0
- package/dist/src/mcp/tools/subsystems.mjs +640 -0
- package/dist/src/memory/cli.js +166 -0
- package/dist/src/memory/project-registry.js +282 -0
- package/dist/src/metrics/artifact-metrics.js +184 -0
- package/dist/src/metrics/context-budget.js +174 -0
- package/dist/src/metrics/token-counter.js +133 -0
- package/dist/src/models/config-loader.js +228 -0
- package/dist/src/models/index.js +22 -0
- package/dist/src/models/model-capabilities.v1.json +120 -0
- package/dist/src/models/model-catalog.v1.json +96 -0
- package/dist/src/models/model-discovery.js +521 -0
- package/dist/src/models/provider-models.js +73 -0
- package/dist/src/models/provider-policy.js +273 -0
- package/dist/src/models/resolver.js +245 -0
- package/dist/src/models/router.js +70 -0
- package/dist/src/models/types.js +8 -0
- package/dist/src/models/wrapper-deployment.js +178 -0
- package/dist/src/models/wrapper-route.js +54 -0
- package/dist/src/ops/cli.js +268 -0
- package/dist/src/ops/registry.js +623 -0
- package/dist/src/packages/adapters/clawhub.js +113 -0
- package/dist/src/packages/adapters/git.js +153 -0
- package/dist/src/packages/adapters/gitea.js +93 -0
- package/dist/src/packages/adapters/github.js +69 -0
- package/dist/src/packages/adapters/local-cache.js +89 -0
- package/dist/src/packages/package-registry.js +143 -0
- package/dist/src/packages/registry.js +238 -0
- package/dist/src/packages/types.js +11 -0
- package/dist/src/plugin/cross-framework-ops.js +475 -0
- package/dist/src/plugin/framework-config-loader.js +235 -0
- package/dist/src/plugin/framework-detector.js +186 -0
- package/dist/src/plugin/framework-isolator.js +341 -0
- package/dist/src/plugin/framework-migration.js +371 -0
- package/dist/src/plugin/metadata-validator.js +906 -0
- package/dist/src/plugin/plugin-installer.js +436 -0
- package/dist/src/plugin/plugin-status.js +369 -0
- package/dist/src/plugin/plugin-uninstaller.js +473 -0
- package/dist/src/plugin/registry-validator.js +344 -0
- package/dist/src/plugin/skill-command-translator.js +415 -0
- package/dist/src/plugin/workspace-creator.js +189 -0
- package/dist/src/plugin/workspace-migrator.js +821 -0
- package/dist/src/policy/authorization.js +390 -0
- package/dist/src/policy/repo-access.js +215 -0
- package/dist/src/provenance/cli.js +16 -0
- package/dist/src/providers/capability-matrix.js +300 -0
- package/dist/src/providers/capability-matrix.yaml +514 -0
- package/dist/src/providers/provider-definitions.js +977 -0
- package/dist/src/providers/provider-definitions.mjs +159 -0
- package/dist/src/providers/provider-inventory.js +169 -0
- package/dist/src/quality/feedback-ab.js +174 -0
- package/dist/src/quality/feedback-collector.js +176 -0
- package/dist/src/quality/feedback-tracker.js +123 -0
- package/dist/src/quality/patterns/adr.json +24 -0
- package/dist/src/quality/patterns/sad.json +24 -0
- package/dist/src/quality/patterns/test-plan.json +24 -0
- package/dist/src/quality/patterns/use-case.json +24 -0
- package/dist/src/quality/scoring.js +157 -0
- package/dist/src/reflections/cli.js +15 -0
- package/dist/src/release/plan.js +139 -0
- package/dist/src/research/cache/manager.js +227 -0
- package/dist/src/research/clients/arxiv.js +156 -0
- package/dist/src/research/clients/base.js +197 -0
- package/dist/src/research/clients/crossref.js +112 -0
- package/dist/src/research/clients/semantic-scholar.js +126 -0
- package/dist/src/research/clients/unpaywall.js +87 -0
- package/dist/src/research/index.js +14 -0
- package/dist/src/research/query-cli.js +336 -0
- package/dist/src/research/services/acquisition.js +313 -0
- package/dist/src/research/services/archival.js +225 -0
- package/dist/src/research/services/citation.js +279 -0
- package/dist/src/research/services/discovery.js +243 -0
- package/dist/src/research/services/documentation.js +269 -0
- package/dist/src/research/services/index.js +14 -0
- package/dist/src/research/services/provenance.js +279 -0
- package/dist/src/research/services/quality.js +370 -0
- package/dist/src/research/services/types.js +7 -0
- package/dist/src/research/storage-cli.js +20 -0
- package/dist/src/research/types.js +47 -0
- package/dist/src/resources/index.d.ts +2 -0
- package/dist/src/resources/index.js +2 -0
- package/dist/src/resources/web-release.d.ts +89 -0
- package/dist/src/resources/web-release.js +882 -0
- package/dist/src/rlm/cache/cli.js +162 -0
- package/dist/src/rlm/cache/hash.js +35 -0
- package/dist/src/rlm/cache/store.js +170 -0
- package/dist/src/rlm/cache/types.js +8 -0
- package/dist/src/rlm/cli.js +650 -0
- package/dist/src/serve/a2a-terminal-observer.js +120 -0
- package/dist/src/serve/agent-router.js +205 -0
- package/dist/src/serve/dispatch-router.js +171 -0
- package/dist/src/serve/executor-registry.js +715 -0
- package/dist/src/serve/mission-conductor.js +177 -0
- package/dist/src/serve/orchestrator-adapter.js +113 -0
- package/dist/src/serve/orchestrator-override.js +94 -0
- package/dist/src/serve/orchestrator-pty.js +133 -0
- package/dist/src/serve/pty-bridge.js +799 -0
- package/dist/src/serve/sandbox-registry.js +832 -0
- package/dist/src/serve/screen-reader.js +228 -0
- package/dist/src/serve/stack-adapters.js +68 -0
- package/dist/src/serve/telemetry.js +143 -0
- package/dist/src/skills/adapters/clawhub.js +250 -0
- package/dist/src/skills/adapters/local.js +335 -0
- package/dist/src/skills/adapters/openclaw.js +316 -0
- package/dist/src/skills/cli.js +334 -0
- package/dist/src/skills/registry.js +117 -0
- package/dist/src/skills/run.js +259 -0
- package/dist/src/skills/runtime.js +94 -0
- package/dist/src/skills/types.js +10 -0
- package/dist/src/smiths/agentsmith/demo.js +116 -0
- package/dist/src/smiths/agentsmith/examples.js +300 -0
- package/dist/src/smiths/agentsmith/generator.js +503 -0
- package/dist/src/smiths/agentsmith/index.js +11 -0
- package/dist/src/smiths/agentsmith/types.js +8 -0
- package/dist/src/smiths/commandsmith/example.js +220 -0
- package/dist/src/smiths/commandsmith/generator.js +288 -0
- package/dist/src/smiths/commandsmith/index.js +41 -0
- package/dist/src/smiths/commandsmith/templates.js +296 -0
- package/dist/src/smiths/commandsmith/types.js +7 -0
- package/dist/src/smiths/context-pipeline/aiwg-md.js +104 -0
- package/dist/src/smiths/context-pipeline/allowlist.js +195 -0
- package/dist/src/smiths/context-pipeline/claude-hook.js +127 -0
- package/dist/src/smiths/context-pipeline/discovery.js +187 -0
- package/dist/src/smiths/context-pipeline/external-links-section.js +49 -0
- package/dist/src/smiths/context-pipeline/finalization.js +147 -0
- package/dist/src/smiths/context-pipeline/generator.js +477 -0
- package/dist/src/smiths/context-pipeline/index.js +30 -0
- package/dist/src/smiths/context-pipeline/legacy-inject.js +103 -0
- package/dist/src/smiths/context-pipeline/managed-hook.js +95 -0
- package/dist/src/smiths/context-pipeline/overflow.js +212 -0
- package/dist/src/smiths/context-pipeline/parallelism-section.js +94 -0
- package/dist/src/smiths/context-pipeline/provider-policy.js +64 -0
- package/dist/src/smiths/context-pipeline/sanitizer.js +93 -0
- package/dist/src/smiths/context-pipeline/types.js +23 -0
- package/dist/src/smiths/context-pipeline/workspace-context.js +988 -0
- package/dist/src/smiths/hook-bridge/codex-translator.js +129 -0
- package/dist/src/smiths/hook-bridge/copilot-translator.js +64 -0
- package/dist/src/smiths/hook-bridge/factory-translator.js +43 -0
- package/dist/src/smiths/hook-bridge/hermes-translator.js +88 -0
- package/dist/src/smiths/hook-bridge/index.js +79 -0
- package/dist/src/smiths/hook-bridge/loader.js +116 -0
- package/dist/src/smiths/hook-bridge/shim.js +89 -0
- package/dist/src/smiths/hook-bridge/types.js +31 -0
- package/dist/src/smiths/index.js +39 -0
- package/dist/src/smiths/mcpsmith/analyzers/cli-analyzer.js +390 -0
- package/dist/src/smiths/mcpsmith/example.js +119 -0
- package/dist/src/smiths/mcpsmith/generator.js +236 -0
- package/dist/src/smiths/mcpsmith/index.js +17 -0
- package/dist/src/smiths/mcpsmith/types.js +10 -0
- package/dist/src/smiths/platform-paths.js +101 -0
- package/dist/src/smiths/skillsmith/codex-sidecar.js +85 -0
- package/dist/src/smiths/skillsmith/collision-detector.js +249 -0
- package/dist/src/smiths/skillsmith/demo.js +83 -0
- package/dist/src/smiths/skillsmith/examples.js +161 -0
- package/dist/src/smiths/skillsmith/generator.js +316 -0
- package/dist/src/smiths/skillsmith/index.js +12 -0
- package/dist/src/smiths/skillsmith/namespace-adapter.js +180 -0
- package/dist/src/smiths/skillsmith/platform-resolver.js +157 -0
- package/dist/src/smiths/skillsmith/types.js +9 -0
- package/dist/src/smiths/toolsmith/index.js +10 -0
- package/dist/src/smiths/toolsmith/runtime-discovery.mjs +710 -0
- package/dist/src/smiths/toolsmith/types.js +8 -0
- package/dist/src/storage/backends/fortemi.js +227 -0
- package/dist/src/storage/backends/fs.js +134 -0
- package/dist/src/storage/backends/logseq.js +309 -0
- package/dist/src/storage/backends/obsidian.js +233 -0
- package/dist/src/storage/cli.js +468 -0
- package/dist/src/storage/config.js +272 -0
- package/dist/src/storage/index.js +108 -0
- package/dist/src/storage/subsystem-cli.js +201 -0
- package/dist/src/storage/types.js +33 -0
- package/dist/src/testing/corpus/corpus-builder.js +383 -0
- package/dist/src/testing/corpus/ground-truth-manager.js +460 -0
- package/dist/src/testing/corpus/index.js +10 -0
- package/dist/src/testing/fixtures/index.js +9 -0
- package/dist/src/testing/fixtures/test-data-factory.js +472 -0
- package/dist/src/testing/generators/index.js +11 -0
- package/dist/src/testing/generators/test-case-generator.js +393 -0
- package/dist/src/testing/generators/test-code-generator.js +384 -0
- package/dist/src/testing/generators/use-case-parser.js +325 -0
- package/dist/src/testing/index.js +11 -0
- package/dist/src/tracker/capability-protocol.js +118 -0
- package/dist/src/update/checker.mjs +396 -0
- package/dist/src/update/notifier.mjs +235 -0
- package/dist/src/writing/content-diversifier.js +804 -0
- package/dist/src/writing/example-generator.js +959 -0
- package/dist/src/writing/example-templates.js +99 -0
- package/dist/src/writing/pattern-library.js +486 -0
- package/dist/src/writing/patterns/banned-phrases.json +4413 -0
- package/dist/src/writing/patterns/formulaic-structures.json +1300 -0
- package/dist/src/writing/patterns/generic-adjectives.json +1510 -0
- package/dist/src/writing/patterns/hedging-language.json +2096 -0
- package/dist/src/writing/patterns/transition-words.json +1285 -0
- package/dist/src/writing/patterns/weak-verbs.json +1112 -0
- package/dist/src/writing/prompt-optimizer.js +660 -0
- package/dist/src/writing/prompt-templates.js +583 -0
- package/dist/src/writing/scoring-config-loader.js +168 -0
- package/dist/src/writing/validation-engine.js +595 -0
- package/dist/src/writing/validation-rules.js +380 -0
- package/dist/src/writing/voice-analyzer.js +439 -0
- package/dist/src/writing/voice-calibration.js +661 -0
- package/dist/src/writing/voice-profiles.json +588 -0
- package/package.json +64 -9
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCPsmith Server Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates complete MCP servers from analyzer results.
|
|
5
|
+
*
|
|
6
|
+
* @architecture @.aiwg/architecture/mcpsmith-architecture.md - Section 5.5
|
|
7
|
+
* @implements @.aiwg/architecture/decisions/ADR-014-mcpsmith-mcp-server-generator.md
|
|
8
|
+
*/
|
|
9
|
+
import fs from 'fs/promises';
|
|
10
|
+
import path from 'path';
|
|
11
|
+
import { fileURLToPath } from 'url';
|
|
12
|
+
import crypto from 'crypto';
|
|
13
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
/**
|
|
15
|
+
* Generate MCP server from analyzer result
|
|
16
|
+
*/
|
|
17
|
+
export async function generateServer(options) {
|
|
18
|
+
const { serverId, serverName, description, analyzerResult, config, outputDir } = options;
|
|
19
|
+
// Create server directory
|
|
20
|
+
const serverPath = path.join(outputDir, serverId);
|
|
21
|
+
await fs.mkdir(serverPath, { recursive: true });
|
|
22
|
+
await fs.mkdir(path.join(serverPath, 'tools'), { recursive: true });
|
|
23
|
+
// Generate config
|
|
24
|
+
const serverConfig = createConfig(serverId, serverName, description, analyzerResult, config);
|
|
25
|
+
const configPath = path.join(serverPath, 'config.json');
|
|
26
|
+
await fs.writeFile(configPath, JSON.stringify(serverConfig, null, 2), 'utf-8');
|
|
27
|
+
// Generate tool definition files
|
|
28
|
+
const toolPaths = [];
|
|
29
|
+
for (const tool of analyzerResult.tools) {
|
|
30
|
+
const toolPath = path.join(serverPath, 'tools', `${tool.name}.json`);
|
|
31
|
+
await fs.writeFile(toolPath, JSON.stringify(tool, null, 2), 'utf-8');
|
|
32
|
+
toolPaths.push(toolPath);
|
|
33
|
+
}
|
|
34
|
+
// Generate server.mjs from template
|
|
35
|
+
const serverCode = await generateServerCode(serverId, serverName, analyzerResult);
|
|
36
|
+
const serverCodePath = path.join(serverPath, 'server.mjs');
|
|
37
|
+
await fs.writeFile(serverCodePath, serverCode, 'utf-8');
|
|
38
|
+
await fs.chmod(serverCodePath, 0o755); // Make executable
|
|
39
|
+
// Generate manifest
|
|
40
|
+
const manifest = createManifest(serverId, serverName, analyzerResult, serverConfig);
|
|
41
|
+
const manifestPath = path.join(serverPath, 'manifest.json');
|
|
42
|
+
await fs.writeFile(manifestPath, JSON.stringify(manifest, null, 2), 'utf-8');
|
|
43
|
+
// Create .mcpsmith marker file
|
|
44
|
+
await fs.writeFile(path.join(serverPath, '.mcpsmith'), JSON.stringify({
|
|
45
|
+
generated_at: new Date().toISOString(),
|
|
46
|
+
mcpsmith_version: '1.0.0'
|
|
47
|
+
}, null, 2), 'utf-8');
|
|
48
|
+
return {
|
|
49
|
+
id: serverId,
|
|
50
|
+
path: serverPath,
|
|
51
|
+
files: {
|
|
52
|
+
server: serverCodePath,
|
|
53
|
+
manifest: manifestPath,
|
|
54
|
+
config: configPath,
|
|
55
|
+
tools: toolPaths
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create server configuration
|
|
61
|
+
*/
|
|
62
|
+
function createConfig(serverId, serverName, description, analyzerResult, userConfig) {
|
|
63
|
+
const sourceCommand = analyzerResult.metadata.sourceName;
|
|
64
|
+
return {
|
|
65
|
+
$schema: 'https://aiwg.io/schemas/mcpsmith-server-config.json',
|
|
66
|
+
server: {
|
|
67
|
+
name: serverName,
|
|
68
|
+
version: userConfig.server?.version || '1.0.0',
|
|
69
|
+
description
|
|
70
|
+
},
|
|
71
|
+
transport: userConfig.transport || {
|
|
72
|
+
type: 'stdio',
|
|
73
|
+
options: {}
|
|
74
|
+
},
|
|
75
|
+
source: {
|
|
76
|
+
type: analyzerResult.metadata.sourceType,
|
|
77
|
+
command: sourceCommand,
|
|
78
|
+
workingDirectory: userConfig.source?.workingDirectory || process.cwd(),
|
|
79
|
+
environment: userConfig.source?.environment || {},
|
|
80
|
+
timeout: userConfig.source?.timeout || 30000
|
|
81
|
+
},
|
|
82
|
+
tools: {
|
|
83
|
+
prefix: userConfig.tools?.prefix || `${serverId}-`,
|
|
84
|
+
allowlist: userConfig.tools?.allowlist || analyzerResult.tools.map((t) => t.name),
|
|
85
|
+
denylist: userConfig.tools?.denylist || [],
|
|
86
|
+
dangerousCommands: {
|
|
87
|
+
require_confirmation: userConfig.tools?.dangerousCommands?.require_confirmation ||
|
|
88
|
+
analyzerResult.tools.filter((t) => t.metadata.requiresConfirmation).map((t) => t.name),
|
|
89
|
+
blocked: userConfig.tools?.dangerousCommands?.blocked || []
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
resources: {
|
|
93
|
+
enabled: userConfig.resources?.enabled ?? false,
|
|
94
|
+
patterns: userConfig.resources?.patterns || []
|
|
95
|
+
},
|
|
96
|
+
prompts: {
|
|
97
|
+
enabled: userConfig.prompts?.enabled ?? false
|
|
98
|
+
},
|
|
99
|
+
security: {
|
|
100
|
+
sandboxed: userConfig.security?.sandboxed ?? true,
|
|
101
|
+
maxExecutionTime: userConfig.security?.maxExecutionTime || 60000,
|
|
102
|
+
allowedPaths: userConfig.security?.allowedPaths || [process.cwd()],
|
|
103
|
+
blockedCommands: userConfig.security?.blockedCommands || [],
|
|
104
|
+
requireConfirmation: userConfig.security?.requireConfirmation ||
|
|
105
|
+
analyzerResult.tools.filter((t) => t.metadata.requiresConfirmation).map((t) => t.name)
|
|
106
|
+
},
|
|
107
|
+
logging: {
|
|
108
|
+
enabled: userConfig.logging?.enabled ?? true,
|
|
109
|
+
level: userConfig.logging?.level || 'info',
|
|
110
|
+
maxFiles: userConfig.logging?.maxFiles || 10,
|
|
111
|
+
maxSize: userConfig.logging?.maxSize || '10mb'
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Create server manifest
|
|
117
|
+
*/
|
|
118
|
+
function createManifest(serverId, serverName, analyzerResult, config) {
|
|
119
|
+
const tools = analyzerResult.tools.map((t) => ({
|
|
120
|
+
name: t.name,
|
|
121
|
+
description: t.description,
|
|
122
|
+
inputSchema: t.inputSchema,
|
|
123
|
+
outputSchema: t.outputSchema,
|
|
124
|
+
dangerous: t.metadata.dangerous,
|
|
125
|
+
requiresConfirmation: t.metadata.requiresConfirmation
|
|
126
|
+
}));
|
|
127
|
+
const files = [
|
|
128
|
+
'server.mjs',
|
|
129
|
+
'config.json',
|
|
130
|
+
'manifest.json',
|
|
131
|
+
'.mcpsmith',
|
|
132
|
+
...analyzerResult.tools.map((t) => `tools/${t.name}.json`)
|
|
133
|
+
];
|
|
134
|
+
const checksum = crypto.createHash('sha256')
|
|
135
|
+
.update(JSON.stringify({ serverId, config, tools }))
|
|
136
|
+
.digest('hex');
|
|
137
|
+
return {
|
|
138
|
+
$schema: 'https://aiwg.io/schemas/mcpsmith-manifest.json',
|
|
139
|
+
id: serverId,
|
|
140
|
+
name: serverName,
|
|
141
|
+
version: config.server.version,
|
|
142
|
+
mcpVersion: '2025-11-25',
|
|
143
|
+
generated: {
|
|
144
|
+
at: new Date().toISOString(),
|
|
145
|
+
by: 'mcpsmith/1.0.0',
|
|
146
|
+
from: {
|
|
147
|
+
type: analyzerResult.metadata.sourceType,
|
|
148
|
+
source: analyzerResult.metadata.sourceName,
|
|
149
|
+
version: analyzerResult.metadata.sourceVersion
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
capabilities: {
|
|
153
|
+
tools: true,
|
|
154
|
+
resources: config.resources.enabled,
|
|
155
|
+
prompts: config.prompts.enabled,
|
|
156
|
+
sampling: false,
|
|
157
|
+
logging: config.logging.enabled
|
|
158
|
+
},
|
|
159
|
+
tools,
|
|
160
|
+
resources: [],
|
|
161
|
+
prompts: [],
|
|
162
|
+
dependencies: {
|
|
163
|
+
runtime: ['node >= 18.0.0'],
|
|
164
|
+
external: [
|
|
165
|
+
`${analyzerResult.metadata.sourceName}${analyzerResult.metadata.sourceVersion ? ' >= ' + analyzerResult.metadata.sourceVersion : ''}`
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
files,
|
|
169
|
+
checksum
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Generate server code from template
|
|
174
|
+
*/
|
|
175
|
+
async function generateServerCode(serverId, serverName, analyzerResult) {
|
|
176
|
+
// Load template
|
|
177
|
+
const templatePath = path.join(path.dirname(__dirname), '..', '..', '.aiwg', 'smiths', 'mcpsmith', 'templates', 'server-template.mjs');
|
|
178
|
+
let template = await fs.readFile(templatePath, 'utf-8');
|
|
179
|
+
// Replace template variables
|
|
180
|
+
const now = new Date().toISOString();
|
|
181
|
+
const replacements = {
|
|
182
|
+
'{{SERVER_ID}}': serverId,
|
|
183
|
+
'{{SERVER_NAME}}': serverName,
|
|
184
|
+
'{{GENERATED_AT}}': now,
|
|
185
|
+
'{{SOURCE_TYPE}}': analyzerResult.metadata.sourceType,
|
|
186
|
+
'{{SOURCE_COMMAND}}': analyzerResult.metadata.sourceName,
|
|
187
|
+
'{{MCPSMITH_VERSION}}': '1.0.0'
|
|
188
|
+
};
|
|
189
|
+
for (const [key, value] of Object.entries(replacements)) {
|
|
190
|
+
template = template.replace(new RegExp(key, 'g'), value);
|
|
191
|
+
}
|
|
192
|
+
return template;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Update registry with new server
|
|
196
|
+
*/
|
|
197
|
+
export async function updateRegistry(registryPath, serverId, serverInfo) {
|
|
198
|
+
let registry;
|
|
199
|
+
try {
|
|
200
|
+
const content = await fs.readFile(registryPath, 'utf-8');
|
|
201
|
+
registry = JSON.parse(content);
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
// Create new registry
|
|
205
|
+
registry = {
|
|
206
|
+
$schema: 'https://aiwg.io/schemas/mcpsmith-registry.json',
|
|
207
|
+
version: '1.0',
|
|
208
|
+
servers: [],
|
|
209
|
+
integration: {
|
|
210
|
+
aiwgMcp: {
|
|
211
|
+
enabled: true,
|
|
212
|
+
autoRegister: true,
|
|
213
|
+
resourcePrefix: 'mcpsmith://'
|
|
214
|
+
},
|
|
215
|
+
platforms: {
|
|
216
|
+
claude: false,
|
|
217
|
+
factory: false,
|
|
218
|
+
codex: false,
|
|
219
|
+
cursor: false
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
defaults: {
|
|
223
|
+
transport: 'stdio',
|
|
224
|
+
sandbox: true,
|
|
225
|
+
timeout: 30000
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
// Remove existing entry if present
|
|
230
|
+
registry.servers = registry.servers.filter((s) => s.id !== serverId);
|
|
231
|
+
// Add new entry
|
|
232
|
+
registry.servers.push(serverInfo);
|
|
233
|
+
// Write back
|
|
234
|
+
await fs.writeFile(registryPath, JSON.stringify(registry, null, 2), 'utf-8');
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCPsmith - MCP Server Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates MCP (Model Context Protocol) servers from:
|
|
5
|
+
* - CLI tools (--help parsing)
|
|
6
|
+
* - REST APIs (OpenAPI specs)
|
|
7
|
+
* - Tool catalogs (YAML/JSON)
|
|
8
|
+
* - Natural language descriptions
|
|
9
|
+
*
|
|
10
|
+
* @module smiths/mcpsmith
|
|
11
|
+
* @architecture @.aiwg/architecture/mcpsmith-architecture.md
|
|
12
|
+
* @implements @.aiwg/architecture/decisions/ADR-014-mcpsmith-mcp-server-generator.md
|
|
13
|
+
*/
|
|
14
|
+
export * from './types.js';
|
|
15
|
+
export * from './analyzers/cli-analyzer.js';
|
|
16
|
+
export * from './generator.js';
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCPsmith Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Types for MCP server generation from various sources.
|
|
5
|
+
*
|
|
6
|
+
* @architecture @.aiwg/architecture/mcpsmith-architecture.md
|
|
7
|
+
* @implements @.aiwg/architecture/decisions/ADR-014-mcpsmith-mcp-server-generator.md
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared platform directory path utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides consistent path resolution for agents, commands, and skills across all platforms.
|
|
5
|
+
*/
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
import { getProviderDefinition, resolveProviderPathValue } from '../providers/provider-definitions.js';
|
|
8
|
+
function getSmithPaths(platform) {
|
|
9
|
+
const definition = getProviderDefinition(platform);
|
|
10
|
+
if (!definition)
|
|
11
|
+
throw new Error(`Missing provider definition for ${platform}`);
|
|
12
|
+
return definition.smithPaths;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get the commands directory for a given platform
|
|
16
|
+
*
|
|
17
|
+
* @param platform - Target platform
|
|
18
|
+
* @param projectPath - Project root directory
|
|
19
|
+
* @returns Full path to commands directory
|
|
20
|
+
*/
|
|
21
|
+
export function getCommandsDirectory(platform, projectPath) {
|
|
22
|
+
return resolveProviderPathValue(getSmithPaths(platform).commands, projectPath);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get the agents directory for a given platform
|
|
26
|
+
*
|
|
27
|
+
* @param platform - Target platform
|
|
28
|
+
* @param projectPath - Project root directory
|
|
29
|
+
* @returns Full path to agents directory
|
|
30
|
+
*/
|
|
31
|
+
export function getAgentsDirectory(platform, projectPath) {
|
|
32
|
+
return resolveProviderPathValue(getSmithPaths(platform).agents, projectPath);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get the skills directory for a given platform
|
|
36
|
+
*
|
|
37
|
+
* Skills are mainly a Claude concept; other platforms map to commands/agents.
|
|
38
|
+
*
|
|
39
|
+
* @param platform - Target platform
|
|
40
|
+
* @param projectPath - Project root directory
|
|
41
|
+
* @returns Full path to skills directory
|
|
42
|
+
*/
|
|
43
|
+
export function getSkillsDirectory(platform, projectPath) {
|
|
44
|
+
return resolveProviderPathValue(getSmithPaths(platform).skills, projectPath);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get the file extension for artifacts on a given platform
|
|
48
|
+
*
|
|
49
|
+
* @param platform - Target platform
|
|
50
|
+
* @returns File extension (with dot)
|
|
51
|
+
*/
|
|
52
|
+
export function getFileExtension(platform) {
|
|
53
|
+
return getSmithPaths(platform).fileExtension;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get the rules/config directory for a given platform
|
|
57
|
+
*
|
|
58
|
+
* @param platform - Target platform
|
|
59
|
+
* @param projectPath - Project root directory
|
|
60
|
+
* @returns Full path to rules/config directory
|
|
61
|
+
*/
|
|
62
|
+
export function getRulesDirectory(platform, projectPath) {
|
|
63
|
+
return resolveProviderPathValue(getSmithPaths(platform).rules, projectPath);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if platform uses aggregated files (vs individual files)
|
|
67
|
+
*
|
|
68
|
+
* @param platform - Target platform
|
|
69
|
+
* @returns True if platform uses aggregated agent/command files
|
|
70
|
+
*/
|
|
71
|
+
export function usesAggregatedFiles(platform) {
|
|
72
|
+
return getSmithPaths(platform).aggregated;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get the main config file name for a platform
|
|
76
|
+
*
|
|
77
|
+
* @param platform - Target platform
|
|
78
|
+
* @returns Config file name
|
|
79
|
+
*/
|
|
80
|
+
export function getConfigFileName(platform) {
|
|
81
|
+
return getSmithPaths(platform).configFile ?? '';
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get all platform directories for a project
|
|
85
|
+
*
|
|
86
|
+
* @param platform - Target platform
|
|
87
|
+
* @param projectPath - Project root directory
|
|
88
|
+
* @returns Object with all platform-specific directories
|
|
89
|
+
*/
|
|
90
|
+
export function getPlatformDirectories(platform, projectPath) {
|
|
91
|
+
return {
|
|
92
|
+
agents: getAgentsDirectory(platform, projectPath),
|
|
93
|
+
commands: getCommandsDirectory(platform, projectPath),
|
|
94
|
+
skills: getSkillsDirectory(platform, projectPath),
|
|
95
|
+
rules: getRulesDirectory(platform, projectPath),
|
|
96
|
+
extension: getFileExtension(platform),
|
|
97
|
+
config: join(projectPath, getConfigFileName(platform)),
|
|
98
|
+
aggregated: usesAggregatedFiles(platform),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=platform-paths.js.map
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex `agents/openai.yaml` UI sidecar emission.
|
|
3
|
+
*
|
|
4
|
+
* Per ADR-1 sign-off (2026-05-05) and #1129 PUW-028: when AIWG deploys a skill
|
|
5
|
+
* to a Codex skills directory, also emit `agents/openai.yaml` inside the skill
|
|
6
|
+
* folder so Codex's skill-picker UI surfaces display name, icon, brand color,
|
|
7
|
+
* and default prompt.
|
|
8
|
+
*
|
|
9
|
+
* Sidecar is purely additive — its absence is graceful (Codex falls back to
|
|
10
|
+
* SKILL.md frontmatter for picker metadata). Sidecar emission must not block
|
|
11
|
+
* the skill deploy path on failure; the deploy succeeds even when the sidecar
|
|
12
|
+
* write errors out.
|
|
13
|
+
*
|
|
14
|
+
* Per ADR-1 sign-off: AIWG-wide brand defaults for icon and brand color
|
|
15
|
+
* (single brand identity). Per-category mapping is a follow-up if demand
|
|
16
|
+
* surfaces. Sidecar contents are sanitized through the AGENTS.md sanitizer
|
|
17
|
+
* to keep the same prompt-injection defense surface.
|
|
18
|
+
*/
|
|
19
|
+
import { promises as fs } from 'node:fs';
|
|
20
|
+
import * as path from 'node:path';
|
|
21
|
+
import * as yaml from 'js-yaml';
|
|
22
|
+
import { sanitizeDescription } from '../context-pipeline/sanitizer.js';
|
|
23
|
+
import { AIWG_BRAND_DEFAULTS } from '../context-pipeline/types.js';
|
|
24
|
+
/**
|
|
25
|
+
* Build the sidecar payload from skill metadata.
|
|
26
|
+
*
|
|
27
|
+
* Returns null when the skill has no usable name AND no description — there
|
|
28
|
+
* is nothing meaningful to emit. Caller skips sidecar in that case.
|
|
29
|
+
*/
|
|
30
|
+
export function buildSidecarPayload(metadata, folderName) {
|
|
31
|
+
const name = (metadata.name && metadata.name.trim()) || folderName;
|
|
32
|
+
if (!name)
|
|
33
|
+
return null;
|
|
34
|
+
// default_prompt is sanitized through the same surface as AGENTS.md fields
|
|
35
|
+
// because the sidecar payload reaches the model context once Codex loads
|
|
36
|
+
// the skill picker. Same prompt-injection blast radius applies.
|
|
37
|
+
const desc = metadata.description ? sanitizeDescription(metadata.description) : null;
|
|
38
|
+
const default_prompt = desc?.ok ? desc.value : `Run the ${name} skill.`;
|
|
39
|
+
return {
|
|
40
|
+
display_name: name,
|
|
41
|
+
icon: AIWG_BRAND_DEFAULTS.icon,
|
|
42
|
+
brand_color: AIWG_BRAND_DEFAULTS.brandColor,
|
|
43
|
+
default_prompt,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Render a sidecar payload as YAML.
|
|
48
|
+
*
|
|
49
|
+
* Wraps js-yaml.dump with a stable formatting set (no anchor refs, sorted
|
|
50
|
+
* keys, double-quoted scalars where needed).
|
|
51
|
+
*/
|
|
52
|
+
export function renderSidecarYaml(payload) {
|
|
53
|
+
return yaml.dump(payload, {
|
|
54
|
+
sortKeys: true,
|
|
55
|
+
noRefs: true,
|
|
56
|
+
quotingType: '"',
|
|
57
|
+
forceQuotes: false,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Emit `agents/openai.yaml` inside a deployed skill folder.
|
|
62
|
+
*
|
|
63
|
+
* - skillFolder: absolute path to the deployed skill folder (e.g.
|
|
64
|
+
* `~/.codex/skills/address-issues/` or `.codex/skills/address-issues/`).
|
|
65
|
+
* - metadata: SkillMetadata extracted from the skill's SKILL.md frontmatter.
|
|
66
|
+
*
|
|
67
|
+
* Returns the absolute sidecar path on successful write, or null when there
|
|
68
|
+
* was nothing to emit. Throws on filesystem error so the caller can decide
|
|
69
|
+
* whether to surface the failure as a deploy warning (recommended) or
|
|
70
|
+
* abort. The PUW-028 contract requires sidecar absence to be graceful, so
|
|
71
|
+
* callers should treat throws as warnings, not errors.
|
|
72
|
+
*/
|
|
73
|
+
export async function emitCodexSidecar(skillFolder, metadata) {
|
|
74
|
+
const folderName = path.basename(skillFolder);
|
|
75
|
+
const payload = buildSidecarPayload(metadata, folderName);
|
|
76
|
+
if (!payload)
|
|
77
|
+
return null;
|
|
78
|
+
const sidecarDir = path.join(skillFolder, 'agents');
|
|
79
|
+
await fs.mkdir(sidecarDir, { recursive: true });
|
|
80
|
+
const sidecarPath = path.join(sidecarDir, 'openai.yaml');
|
|
81
|
+
const content = renderSidecarYaml(payload);
|
|
82
|
+
await fs.writeFile(sidecarPath, content, 'utf8');
|
|
83
|
+
return sidecarPath;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=codex-sidecar.js.map
|