@agentxm/client-core 0.2.0 → 0.3.2
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/dist/src/unstable/commands/operations/disable.d.ts +2 -2
- package/dist/src/unstable/commands/operations/disable.d.ts.map +1 -1
- package/dist/src/unstable/commands/operations/enable.d.ts +2 -2
- package/dist/src/unstable/commands/operations/enable.d.ts.map +1 -1
- package/dist/src/unstable/commands/operations/install.d.ts +1 -1
- package/dist/src/unstable/commands/operations/install.d.ts.map +1 -1
- package/dist/src/unstable/commands/operations/new-command.d.ts +2 -2
- package/dist/src/unstable/commands/operations/new-command.d.ts.map +1 -1
- package/dist/src/unstable/commands/operations/publish.d.ts +1 -1
- package/dist/src/unstable/commands/operations/publish.d.ts.map +1 -1
- package/dist/src/unstable/commands/operations/uninstall.d.ts +1 -1
- package/dist/src/unstable/commands/operations/uninstall.d.ts.map +1 -1
- package/dist/src/unstable/extensions/operations.d.ts +1 -1
- package/dist/src/unstable/extensions/operations.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/index.d.ts +39 -0
- package/dist/src/unstable/lint/catalog/index.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/index.js +49 -0
- package/dist/src/unstable/lint/catalog/index.js.map +1 -0
- package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.d.ts +31 -0
- package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.js +41 -0
- package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.js.map +1 -0
- package/dist/src/unstable/lint/catalog/pack/manifest-present.d.ts +18 -0
- package/dist/src/unstable/lint/catalog/pack/manifest-present.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/pack/manifest-present.js +41 -0
- package/dist/src/unstable/lint/catalog/pack/manifest-present.js.map +1 -0
- package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.d.ts +26 -0
- package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.js +34 -0
- package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.js.map +1 -0
- package/dist/src/unstable/lint/catalog/pack-accessor/contexts.d.ts +61 -0
- package/dist/src/unstable/lint/catalog/pack-accessor/contexts.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/pack-accessor/contexts.js +46 -0
- package/dist/src/unstable/lint/catalog/pack-accessor/contexts.js.map +1 -0
- package/dist/src/unstable/lint/catalog/pack-accessor/platform.d.ts +53 -0
- package/dist/src/unstable/lint/catalog/pack-accessor/platform.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/pack-accessor/platform.js +90 -0
- package/dist/src/unstable/lint/catalog/pack-accessor/platform.js.map +1 -0
- package/dist/src/unstable/lint/catalog/pack-accessor/vft.d.ts +60 -0
- package/dist/src/unstable/lint/catalog/pack-accessor/vft.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/pack-accessor/vft.js +85 -0
- package/dist/src/unstable/lint/catalog/pack-accessor/vft.js.map +1 -0
- package/dist/src/unstable/lint/catalog/pack.d.ts +37 -0
- package/dist/src/unstable/lint/catalog/pack.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/pack.js +47 -0
- package/dist/src/unstable/lint/catalog/pack.js.map +1 -0
- package/dist/src/unstable/lint/catalog/shared/schema-rule.d.ts +59 -0
- package/dist/src/unstable/lint/catalog/shared/schema-rule.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/shared/schema-rule.js +99 -0
- package/dist/src/unstable/lint/catalog/shared/schema-rule.js.map +1 -0
- package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.d.ts +31 -0
- package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.js +151 -0
- package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.js.map +1 -0
- package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.d.ts +26 -0
- package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.js +41 -0
- package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.js.map +1 -0
- package/dist/src/unstable/lint/catalog/skill/manifest-present.d.ts +18 -0
- package/dist/src/unstable/lint/catalog/skill/manifest-present.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/skill/manifest-present.js +46 -0
- package/dist/src/unstable/lint/catalog/skill/manifest-present.js.map +1 -0
- package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.d.ts +22 -0
- package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.js +37 -0
- package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.js.map +1 -0
- package/dist/src/unstable/lint/catalog/skill/skill-md-present.d.ts +17 -0
- package/dist/src/unstable/lint/catalog/skill/skill-md-present.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/skill/skill-md-present.js +38 -0
- package/dist/src/unstable/lint/catalog/skill/skill-md-present.js.map +1 -0
- package/dist/src/unstable/lint/catalog/skill-accessor/contexts.d.ts +65 -0
- package/dist/src/unstable/lint/catalog/skill-accessor/contexts.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/skill-accessor/contexts.js +50 -0
- package/dist/src/unstable/lint/catalog/skill-accessor/contexts.js.map +1 -0
- package/dist/src/unstable/lint/catalog/skill-accessor/platform.d.ts +52 -0
- package/dist/src/unstable/lint/catalog/skill-accessor/platform.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/skill-accessor/platform.js +89 -0
- package/dist/src/unstable/lint/catalog/skill-accessor/platform.js.map +1 -0
- package/dist/src/unstable/lint/catalog/skill-accessor/vft.d.ts +58 -0
- package/dist/src/unstable/lint/catalog/skill-accessor/vft.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/skill-accessor/vft.js +83 -0
- package/dist/src/unstable/lint/catalog/skill-accessor/vft.js.map +1 -0
- package/dist/src/unstable/lint/catalog/skill.d.ts +38 -0
- package/dist/src/unstable/lint/catalog/skill.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/skill.js +52 -0
- package/dist/src/unstable/lint/catalog/skill.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.d.ts +23 -0
- package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.js +75 -0
- package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/agents-recognized.d.ts +23 -0
- package/dist/src/unstable/lint/catalog/workspace/agents-recognized.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/agents-recognized.js +76 -0
- package/dist/src/unstable/lint/catalog/workspace/agents-recognized.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/empty.d.ts +18 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/empty.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/empty.js +16 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/empty.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/install-ops.d.ts +133 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/install-ops.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/install-ops.js +149 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/install-ops.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/registry-source.d.ts +25 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/registry-source.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/registry-source.js +30 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/registry-source.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/initialized.d.ts +22 -0
- package/dist/src/unstable/lint/catalog/workspace/initialized.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/initialized.js +55 -0
- package/dist/src/unstable/lint/catalog/workspace/initialized.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.d.ts +33 -0
- package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.js +125 -0
- package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.d.ts +19 -0
- package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.js +145 -0
- package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.d.ts +17 -0
- package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.js +107 -0
- package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.d.ts +22 -0
- package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.js +163 -0
- package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.d.ts +28 -0
- package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.js +67 -0
- package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.d.ts +30 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.js +232 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.d.ts +26 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.js +129 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.d.ts +26 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.js +151 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.d.ts +29 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.js +149 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.d.ts +29 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.js +242 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/contexts.d.ts +141 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/contexts.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/contexts.js +123 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/contexts.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/interpret-ops.d.ts +38 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/interpret-ops.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/interpret-ops.js +311 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/interpret-ops.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/platform.d.ts +60 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/platform.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/platform.js +201 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/platform.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/test-state.d.ts +65 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/test-state.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/test-state.js +95 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/test-state.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace.d.ts +47 -0
- package/dist/src/unstable/lint/catalog/workspace.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace.js +80 -0
- package/dist/src/unstable/lint/catalog/workspace.js.map +1 -0
- package/dist/src/unstable/lint/cli.d.ts +297 -0
- package/dist/src/unstable/lint/cli.d.ts.map +1 -0
- package/dist/src/unstable/lint/cli.js +388 -0
- package/dist/src/unstable/lint/cli.js.map +1 -0
- package/dist/src/unstable/lint/compose-path.d.ts +27 -0
- package/dist/src/unstable/lint/compose-path.d.ts.map +1 -0
- package/dist/src/unstable/lint/compose-path.js +61 -0
- package/dist/src/unstable/lint/compose-path.js.map +1 -0
- package/dist/src/unstable/lint/config.d.ts +103 -0
- package/dist/src/unstable/lint/config.d.ts.map +1 -0
- package/dist/src/unstable/lint/config.js +137 -0
- package/dist/src/unstable/lint/config.js.map +1 -0
- package/dist/src/unstable/lint/context.d.ts +265 -0
- package/dist/src/unstable/lint/context.d.ts.map +1 -0
- package/dist/src/unstable/lint/context.js +21 -0
- package/dist/src/unstable/lint/context.js.map +1 -0
- package/dist/src/unstable/lint/evaluate.d.ts +68 -0
- package/dist/src/unstable/lint/evaluate.d.ts.map +1 -0
- package/dist/src/unstable/lint/evaluate.js +147 -0
- package/dist/src/unstable/lint/evaluate.js.map +1 -0
- package/dist/src/unstable/lint/index.d.ts +28 -0
- package/dist/src/unstable/lint/index.d.ts.map +1 -0
- package/dist/src/unstable/lint/index.js +35 -0
- package/dist/src/unstable/lint/index.js.map +1 -0
- package/dist/src/unstable/lint/issues-to-findings.d.ts +35 -0
- package/dist/src/unstable/lint/issues-to-findings.d.ts.map +1 -0
- package/dist/src/unstable/lint/issues-to-findings.js +97 -0
- package/dist/src/unstable/lint/issues-to-findings.js.map +1 -0
- package/dist/src/unstable/lint/rule.d.ts +139 -0
- package/dist/src/unstable/lint/rule.d.ts.map +1 -0
- package/dist/src/unstable/lint/rule.js +25 -0
- package/dist/src/unstable/lint/rule.js.map +1 -0
- package/dist/src/unstable/mcp-servers/operations/install.d.ts +1 -1
- package/dist/src/unstable/mcp-servers/operations/install.d.ts.map +1 -1
- package/dist/src/unstable/mcp-servers/operations/publish.d.ts +1 -1
- package/dist/src/unstable/mcp-servers/operations/publish.d.ts.map +1 -1
- package/dist/src/unstable/mcp-servers/operations/uninstall.d.ts +1 -1
- package/dist/src/unstable/mcp-servers/operations/uninstall.d.ts.map +1 -1
- package/dist/src/unstable/packs/operations/add-to-pack.d.ts +2 -2
- package/dist/src/unstable/packs/operations/add-to-pack.d.ts.map +1 -1
- package/dist/src/unstable/packs/operations/install.d.ts +2 -2
- package/dist/src/unstable/packs/operations/install.d.ts.map +1 -1
- package/dist/src/unstable/packs/operations/new-pack.d.ts +2 -2
- package/dist/src/unstable/packs/operations/new-pack.d.ts.map +1 -1
- package/dist/src/unstable/packs/operations/publish.d.ts +2 -2
- package/dist/src/unstable/packs/operations/publish.d.ts.map +1 -1
- package/dist/src/unstable/packs/operations/remove-from-pack.d.ts +2 -2
- package/dist/src/unstable/packs/operations/remove-from-pack.d.ts.map +1 -1
- package/dist/src/unstable/packs/operations/uninstall.d.ts +2 -2
- package/dist/src/unstable/packs/operations/uninstall.d.ts.map +1 -1
- package/dist/src/unstable/packs/operations/unpack.d.ts +2 -2
- package/dist/src/unstable/packs/operations/unpack.d.ts.map +1 -1
- package/dist/src/unstable/{workspace → plan}/apply-plan.d.ts +9 -0
- package/dist/src/unstable/plan/apply-plan.d.ts.map +1 -0
- package/dist/src/unstable/{workspace → plan}/apply-plan.js +10 -1
- package/dist/src/unstable/plan/apply-plan.js.map +1 -0
- package/dist/src/unstable/plan/index.d.ts +24 -0
- package/dist/src/unstable/plan/index.d.ts.map +1 -0
- package/dist/src/unstable/plan/index.js +28 -0
- package/dist/src/unstable/plan/index.js.map +1 -0
- package/dist/src/unstable/{workspace → plan}/plan.d.ts +6 -0
- package/dist/src/unstable/plan/plan.d.ts.map +1 -0
- package/dist/src/unstable/{workspace → plan}/plan.js +6 -0
- package/dist/src/unstable/plan/plan.js.map +1 -0
- package/dist/src/unstable/{workspace → plan}/resolve-plan.d.ts +30 -2
- package/dist/src/unstable/plan/resolve-plan.d.ts.map +1 -0
- package/dist/src/unstable/{workspace → plan}/resolve-plan.js +37 -6
- package/dist/src/unstable/plan/resolve-plan.js.map +1 -0
- package/dist/src/unstable/publish/manifest-policy.d.ts +8 -8
- package/dist/src/unstable/settings/index.d.ts +2 -0
- package/dist/src/unstable/settings/index.d.ts.map +1 -1
- package/dist/src/unstable/settings/index.js +1 -0
- package/dist/src/unstable/settings/index.js.map +1 -1
- package/dist/src/unstable/settings/schema.d.ts +3 -0
- package/dist/src/unstable/settings/schema.d.ts.map +1 -1
- package/dist/src/unstable/settings/schema.js +3 -0
- package/dist/src/unstable/settings/schema.js.map +1 -1
- package/dist/src/unstable/settings/settings.d.ts +10 -0
- package/dist/src/unstable/settings/settings.d.ts.map +1 -1
- package/dist/src/unstable/skills/operations/copy.d.ts +2 -2
- package/dist/src/unstable/skills/operations/copy.d.ts.map +1 -1
- package/dist/src/unstable/skills/operations/disable.d.ts +2 -2
- package/dist/src/unstable/skills/operations/disable.d.ts.map +1 -1
- package/dist/src/unstable/skills/operations/enable.d.ts +2 -2
- package/dist/src/unstable/skills/operations/enable.d.ts.map +1 -1
- package/dist/src/unstable/skills/operations/install.d.ts +2 -2
- package/dist/src/unstable/skills/operations/install.d.ts.map +1 -1
- package/dist/src/unstable/skills/operations/new-skill.d.ts +2 -2
- package/dist/src/unstable/skills/operations/new-skill.d.ts.map +1 -1
- package/dist/src/unstable/skills/operations/publish.d.ts +2 -2
- package/dist/src/unstable/skills/operations/publish.d.ts.map +1 -1
- package/dist/src/unstable/skills/operations/rename.d.ts +2 -2
- package/dist/src/unstable/skills/operations/rename.d.ts.map +1 -1
- package/dist/src/unstable/skills/operations/uninstall.d.ts +2 -2
- package/dist/src/unstable/skills/operations/uninstall.d.ts.map +1 -1
- package/dist/src/unstable/subagents/operations/disable.d.ts +2 -2
- package/dist/src/unstable/subagents/operations/disable.d.ts.map +1 -1
- package/dist/src/unstable/subagents/operations/enable.d.ts +2 -2
- package/dist/src/unstable/subagents/operations/enable.d.ts.map +1 -1
- package/dist/src/unstable/subagents/operations/publish.d.ts +2 -2
- package/dist/src/unstable/subagents/operations/publish.d.ts.map +1 -1
- package/dist/src/unstable/workflows/install-command/workflow.d.ts +1 -1
- package/dist/src/unstable/workflows/install-command/workflow.d.ts.map +1 -1
- package/dist/src/unstable/workflows/install-command/workflow.js +1 -1
- package/dist/src/unstable/workflows/install-command/workflow.js.map +1 -1
- package/dist/src/unstable/workflows/uninstall-command/workflow.d.ts +1 -1
- package/dist/src/unstable/workflows/uninstall-command/workflow.d.ts.map +1 -1
- package/dist/src/unstable/workflows/uninstall-command/workflow.js +1 -1
- package/dist/src/unstable/workflows/uninstall-command/workflow.js.map +1 -1
- package/dist/src/unstable/workspace/augment-plan.d.ts +1 -1
- package/dist/src/unstable/workspace/augment-plan.d.ts.map +1 -1
- package/dist/src/unstable/workspace/display-plan.d.ts +1 -1
- package/dist/src/unstable/workspace/display-plan.d.ts.map +1 -1
- package/dist/src/unstable/workspace/display-plan.js.map +1 -1
- package/dist/src/unstable/workspace/index.d.ts +0 -5
- package/dist/src/unstable/workspace/index.d.ts.map +1 -1
- package/dist/src/unstable/workspace/index.js +3 -7
- package/dist/src/unstable/workspace/index.js.map +1 -1
- package/dist/src/unstable/workspace/initialization.d.ts +15 -0
- package/dist/src/unstable/workspace/initialization.d.ts.map +1 -1
- package/dist/src/unstable/workspace/paths.d.ts +0 -18
- package/dist/src/unstable/workspace/paths.d.ts.map +1 -1
- package/dist/src/unstable/workspace/paths.js +12 -2
- package/dist/src/unstable/workspace/paths.js.map +1 -1
- package/dist/src/unstable/workspace/reconciliation.d.ts +1 -1
- package/dist/src/unstable/workspace/reconciliation.d.ts.map +1 -1
- package/dist/src/unstable/workspace/scan-plan-readiness.d.ts +1 -1
- package/dist/src/unstable/workspace/scan-plan-readiness.d.ts.map +1 -1
- package/dist/src/unstable/workspace/settings-validation/types.d.ts +11 -1
- package/dist/src/unstable/workspace/settings-validation/types.d.ts.map +1 -1
- package/package.json +10 -2
- package/site-content/__generated__/schemas/axm-lock.schema.json +727 -1124
- package/site-content/__generated__/schemas/axm-package-meta.schema.json +3 -16
- package/site-content/__generated__/schemas/command.schema.json +29 -130
- package/site-content/__generated__/schemas/extension-pack.schema.json +36 -154
- package/site-content/__generated__/schemas/mcp-server.schema.json +21 -134
- package/site-content/__generated__/schemas/settings.schema.json +111 -291
- package/site-content/__generated__/schemas/skill.schema.json +23 -143
- package/dist/src/unstable/workspace/apply-plan.d.ts.map +0 -1
- package/dist/src/unstable/workspace/apply-plan.js.map +0 -1
- package/dist/src/unstable/workspace/doctor/check-def.d.ts +0 -29
- package/dist/src/unstable/workspace/doctor/check-def.d.ts.map +0 -1
- package/dist/src/unstable/workspace/doctor/check-def.js +0 -17
- package/dist/src/unstable/workspace/doctor/check-def.js.map +0 -1
- package/dist/src/unstable/workspace/doctor/checks/agents-configured.d.ts +0 -5
- package/dist/src/unstable/workspace/doctor/checks/agents-configured.d.ts.map +0 -1
- package/dist/src/unstable/workspace/doctor/checks/agents-configured.js +0 -170
- package/dist/src/unstable/workspace/doctor/checks/agents-configured.js.map +0 -1
- package/dist/src/unstable/workspace/doctor/checks/extensions-active.d.ts +0 -4
- package/dist/src/unstable/workspace/doctor/checks/extensions-active.d.ts.map +0 -1
- package/dist/src/unstable/workspace/doctor/checks/extensions-active.js +0 -238
- package/dist/src/unstable/workspace/doctor/checks/extensions-active.js.map +0 -1
- package/dist/src/unstable/workspace/doctor/checks/extensions-current.d.ts +0 -18
- package/dist/src/unstable/workspace/doctor/checks/extensions-current.d.ts.map +0 -1
- package/dist/src/unstable/workspace/doctor/checks/extensions-current.js +0 -92
- package/dist/src/unstable/workspace/doctor/checks/extensions-current.js.map +0 -1
- package/dist/src/unstable/workspace/doctor/checks/extensions-installed.d.ts +0 -5
- package/dist/src/unstable/workspace/doctor/checks/extensions-installed.d.ts.map +0 -1
- package/dist/src/unstable/workspace/doctor/checks/extensions-installed.js +0 -472
- package/dist/src/unstable/workspace/doctor/checks/extensions-installed.js.map +0 -1
- package/dist/src/unstable/workspace/doctor/checks/workspace-ready.d.ts +0 -5
- package/dist/src/unstable/workspace/doctor/checks/workspace-ready.d.ts.map +0 -1
- package/dist/src/unstable/workspace/doctor/checks/workspace-ready.js +0 -201
- package/dist/src/unstable/workspace/doctor/checks/workspace-ready.js.map +0 -1
- package/dist/src/unstable/workspace/doctor/diagnose.d.ts +0 -49
- package/dist/src/unstable/workspace/doctor/diagnose.d.ts.map +0 -1
- package/dist/src/unstable/workspace/doctor/diagnose.js +0 -78
- package/dist/src/unstable/workspace/doctor/diagnose.js.map +0 -1
- package/dist/src/unstable/workspace/doctor/index.d.ts +0 -8
- package/dist/src/unstable/workspace/doctor/index.d.ts.map +0 -1
- package/dist/src/unstable/workspace/doctor/index.js +0 -6
- package/dist/src/unstable/workspace/doctor/index.js.map +0 -1
- package/dist/src/unstable/workspace/doctor/rollup.d.ts +0 -4
- package/dist/src/unstable/workspace/doctor/rollup.d.ts.map +0 -1
- package/dist/src/unstable/workspace/doctor/rollup.js +0 -28
- package/dist/src/unstable/workspace/doctor/rollup.js.map +0 -1
- package/dist/src/unstable/workspace/doctor/runner.d.ts +0 -6
- package/dist/src/unstable/workspace/doctor/runner.d.ts.map +0 -1
- package/dist/src/unstable/workspace/doctor/runner.js +0 -179
- package/dist/src/unstable/workspace/doctor/runner.js.map +0 -1
- package/dist/src/unstable/workspace/doctor/types.d.ts +0 -127
- package/dist/src/unstable/workspace/doctor/types.d.ts.map +0 -1
- package/dist/src/unstable/workspace/doctor/types.js +0 -60
- package/dist/src/unstable/workspace/doctor/types.js.map +0 -1
- package/dist/src/unstable/workspace/plan.d.ts.map +0 -1
- package/dist/src/unstable/workspace/plan.js.map +0 -1
- package/dist/src/unstable/workspace/resolve-plan.d.ts.map +0 -1
- package/dist/src/unstable/workspace/resolve-plan.js.map +0 -1
- package/dist/src/unstable/workspace/sync.d.ts +0 -17
- package/dist/src/unstable/workspace/sync.d.ts.map +0 -1
- package/dist/src/unstable/workspace/sync.js +0 -142
- package/dist/src/unstable/workspace/sync.js.map +0 -1
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-backed `SkillFileAccessor` for `axm lint`.
|
|
3
|
+
*
|
|
4
|
+
* Maps accessor-relative posix paths to on-disk absolute paths rooted at
|
|
5
|
+
* the caller-supplied skill-root directory. Layout conventions per
|
|
6
|
+
* `docs/design/lint-engine.md §3` "Skill accessor root":
|
|
7
|
+
*
|
|
8
|
+
* - **Native (registry-installed):**
|
|
9
|
+
* `<workspaceRoot>/.axm/extensions/<@owner>/skills/<sanitized-name>/src/`
|
|
10
|
+
* - **Non-native (managed external):**
|
|
11
|
+
* `<workspaceRoot>/.axm/extensions/external/skills/<sanitized-name>/`
|
|
12
|
+
*
|
|
13
|
+
* The accessor is provenance-agnostic — rules see one uniform contract and
|
|
14
|
+
* never branch on native-vs-non-native. The caller (`buildSkillRuleContexts`
|
|
15
|
+
* or the CLI entry point) picks the root.
|
|
16
|
+
*
|
|
17
|
+
* Bounds enforcement:
|
|
18
|
+
*
|
|
19
|
+
* - No `..` segments in accessor-relative paths.
|
|
20
|
+
* - No absolute paths (posix or Windows drive letters).
|
|
21
|
+
* - Resolved absolute paths are verified to stay under the accessor root.
|
|
22
|
+
*
|
|
23
|
+
* The accessor is built via a factory that captures a pre-resolved
|
|
24
|
+
* `FileSystem.FileSystem` + `Path.Path` services and an absolute root, so
|
|
25
|
+
* `SkillFileAccessor` stays Layer-free at rule-evaluation time (per
|
|
26
|
+
* `lint-engine` spec "Rule contexts expose narrow caller-bound accessors").
|
|
27
|
+
*
|
|
28
|
+
* @experimental This API is unstable and may change without notice.
|
|
29
|
+
* @packageDocumentation
|
|
30
|
+
*/
|
|
31
|
+
import * as Effect from "effect/Effect";
|
|
32
|
+
/**
|
|
33
|
+
* Build a platform-backed `SkillFileAccessor` rooted at `absoluteRoot`.
|
|
34
|
+
*
|
|
35
|
+
* `absoluteRoot` SHOULD be the absolute path to the skill root directory
|
|
36
|
+
* (either `.../src/` for native, or `.../external/skills/<name>/` for
|
|
37
|
+
* non-native). The caller typically sources it from `computeSkillPaths` in
|
|
38
|
+
* `../../../skills/paths.ts`.
|
|
39
|
+
*
|
|
40
|
+
* @experimental This API is unstable and may change without notice.
|
|
41
|
+
*/
|
|
42
|
+
export const makePlatformSkillFileAccessor = (platform, absoluteRoot) => {
|
|
43
|
+
const { fs, path } = platform;
|
|
44
|
+
const normalizedRoot = path.resolve(absoluteRoot);
|
|
45
|
+
const resolveWithinRoot = (input) => {
|
|
46
|
+
if (input === "" || input === "." || input === "./") {
|
|
47
|
+
return { kind: "ok", absolute: normalizedRoot };
|
|
48
|
+
}
|
|
49
|
+
if (/^[a-z]:[\\/]/i.test(input) || input.startsWith("/") || input.startsWith("\\")) {
|
|
50
|
+
return { kind: "escape" };
|
|
51
|
+
}
|
|
52
|
+
const normalized = input.replace(/\\/g, "/").replace(/^\.\//, "");
|
|
53
|
+
for (const segment of normalized.split("/")) {
|
|
54
|
+
if (segment === "..") {
|
|
55
|
+
return { kind: "escape" };
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const absolute = path.resolve(normalizedRoot, normalized);
|
|
59
|
+
if (absolute !== normalizedRoot && !absolute.startsWith(`${normalizedRoot}${path.sep}`)) {
|
|
60
|
+
return { kind: "escape" };
|
|
61
|
+
}
|
|
62
|
+
return { kind: "ok", absolute };
|
|
63
|
+
};
|
|
64
|
+
const makeAccessError = (p, reason, message) => ({
|
|
65
|
+
_tag: "FileAccessError",
|
|
66
|
+
path: p,
|
|
67
|
+
reason,
|
|
68
|
+
message,
|
|
69
|
+
});
|
|
70
|
+
return {
|
|
71
|
+
exists: (p) => {
|
|
72
|
+
const resolved = resolveWithinRoot(p);
|
|
73
|
+
if (resolved.kind !== "ok") {
|
|
74
|
+
return Effect.succeed(false);
|
|
75
|
+
}
|
|
76
|
+
return fs.exists(resolved.absolute).pipe(Effect.catch(() => Effect.succeed(false)));
|
|
77
|
+
},
|
|
78
|
+
readBytes: (p) => {
|
|
79
|
+
const resolved = resolveWithinRoot(p);
|
|
80
|
+
if (resolved.kind === "escape") {
|
|
81
|
+
return Effect.fail(makeAccessError(p, "path-escape", `path escapes the accessor root: ${p}`));
|
|
82
|
+
}
|
|
83
|
+
return fs
|
|
84
|
+
.readFile(resolved.absolute)
|
|
85
|
+
.pipe(Effect.mapError((cause) => makeAccessError(p, "read-error", `read failed at ${p}: ${String(cause)}`)));
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill-accessor/platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAqBxC;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,QAA+B,EAC/B,YAAoB,EACD,EAAE;IACrB,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;IAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAElD,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAiB,EAAE;QACzD,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACpD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QAClD,CAAC;QACD,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACnF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B,CAAC;QACD,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClE,KAAK,MAAM,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,QAAQ,KAAK,cAAc,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;YACxF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,CACtB,CAAS,EACT,MAAiC,EACjC,OAAe,EACE,EAAE,CAAC,CAAC;QACrB,IAAI,EAAE,iBAA0B;QAChC,IAAI,EAAE,CAAC;QACP,MAAM;QACN,OAAO;KACR,CAAC,CAAC;IAEH,OAAO;QACL,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;YACZ,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC3B,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtF,CAAC;QACD,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YACf,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/B,OAAO,MAAM,CAAC,IAAI,CAChB,eAAe,CAAC,CAAC,EAAE,aAAa,EAAE,mCAAmC,CAAC,EAAE,CAAC,CAC1E,CAAC;YACJ,CAAC;YACD,OAAO,EAAE;iBACN,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;iBAC3B,IAAI,CACH,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,eAAe,CAAC,CAAC,EAAE,YAAY,EAAE,kBAAkB,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAC1E,CACF,CAAC;QACN,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VFT-backed `SkillFileAccessor` for publish callers.
|
|
3
|
+
*
|
|
4
|
+
* A Virtual File Tree (VFT) is an in-memory representation of an extracted
|
|
5
|
+
* archive — the registry publish pipeline extracts an upload into a VFT, then
|
|
6
|
+
* passes that tree into Phase 4 decode/lint. The VFT's schema and bounds
|
|
7
|
+
* (max size, file count, path depth) are owned by the registry extract phase
|
|
8
|
+
* (Phase 4 concern); this accessor treats the tree as a read-only
|
|
9
|
+
* `path -> Uint8Array` map and enforces its own rooted-read + no-`..`-escape
|
|
10
|
+
* invariants at the rule boundary.
|
|
11
|
+
*
|
|
12
|
+
* Bounds enforcement here:
|
|
13
|
+
*
|
|
14
|
+
* - Paths are normalized to posix, `./` prefixes are stripped.
|
|
15
|
+
* - Empty path resolves to the accessor root itself (useful for
|
|
16
|
+
* `location.file = ""` findings but not currently exercised by the v1
|
|
17
|
+
* catalog).
|
|
18
|
+
* - Any path containing a `..` segment raises `FileAccessError {
|
|
19
|
+
* reason: "path-escape" }` from `readBytes` and resolves to `false` from
|
|
20
|
+
* `exists`.
|
|
21
|
+
* - Absolute paths (starting with `/` or a Windows drive letter) are
|
|
22
|
+
* treated as escape attempts.
|
|
23
|
+
*
|
|
24
|
+
* @experimental This API is unstable and may change without notice.
|
|
25
|
+
* @packageDocumentation
|
|
26
|
+
*/
|
|
27
|
+
import type { SkillFileAccessor } from "../../context.js";
|
|
28
|
+
/**
|
|
29
|
+
* Minimal shape of a Virtual File Tree consumed by the accessor.
|
|
30
|
+
*
|
|
31
|
+
* The registry VFT (Phase 4, this-repo) MUST satisfy this interface. The
|
|
32
|
+
* registry may (and will) expose additional methods — file count, archive
|
|
33
|
+
* bounds, iteration — but those are the extract phase's concern.
|
|
34
|
+
*
|
|
35
|
+
* @experimental This API is unstable and may change without notice.
|
|
36
|
+
*/
|
|
37
|
+
export interface VFTNode {
|
|
38
|
+
/**
|
|
39
|
+
* Whether the given posix path points to a file within the tree.
|
|
40
|
+
*/
|
|
41
|
+
readonly hasFile: (posixPath: string) => boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Return the bytes for the given posix path, or `undefined` when the path
|
|
44
|
+
* does not resolve to a file (missing, directory, or outside the tree).
|
|
45
|
+
*/
|
|
46
|
+
readonly getFile: (posixPath: string) => Uint8Array | undefined;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Build a VFT-backed `SkillFileAccessor` rooted at the tree's root.
|
|
50
|
+
*
|
|
51
|
+
* Callers that root the skill at a sub-path of the archive should pre-strip
|
|
52
|
+
* that sub-path before constructing the tree — the accessor enforces no
|
|
53
|
+
* `..` escape above the root it was given.
|
|
54
|
+
*
|
|
55
|
+
* @experimental This API is unstable and may change without notice.
|
|
56
|
+
*/
|
|
57
|
+
export declare const makeVftSkillFileAccessor: (tree: VFTNode) => SkillFileAccessor;
|
|
58
|
+
//# sourceMappingURL=vft.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vft.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill-accessor/vft.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,KAAK,EAAmB,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAM3E;;;;;;;;GAQG;AACH,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IACjD;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,UAAU,GAAG,SAAS,CAAC;CACjE;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GAAI,MAAM,OAAO,KAAG,iBAqBxD,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VFT-backed `SkillFileAccessor` for publish callers.
|
|
3
|
+
*
|
|
4
|
+
* A Virtual File Tree (VFT) is an in-memory representation of an extracted
|
|
5
|
+
* archive — the registry publish pipeline extracts an upload into a VFT, then
|
|
6
|
+
* passes that tree into Phase 4 decode/lint. The VFT's schema and bounds
|
|
7
|
+
* (max size, file count, path depth) are owned by the registry extract phase
|
|
8
|
+
* (Phase 4 concern); this accessor treats the tree as a read-only
|
|
9
|
+
* `path -> Uint8Array` map and enforces its own rooted-read + no-`..`-escape
|
|
10
|
+
* invariants at the rule boundary.
|
|
11
|
+
*
|
|
12
|
+
* Bounds enforcement here:
|
|
13
|
+
*
|
|
14
|
+
* - Paths are normalized to posix, `./` prefixes are stripped.
|
|
15
|
+
* - Empty path resolves to the accessor root itself (useful for
|
|
16
|
+
* `location.file = ""` findings but not currently exercised by the v1
|
|
17
|
+
* catalog).
|
|
18
|
+
* - Any path containing a `..` segment raises `FileAccessError {
|
|
19
|
+
* reason: "path-escape" }` from `readBytes` and resolves to `false` from
|
|
20
|
+
* `exists`.
|
|
21
|
+
* - Absolute paths (starting with `/` or a Windows drive letter) are
|
|
22
|
+
* treated as escape attempts.
|
|
23
|
+
*
|
|
24
|
+
* @experimental This API is unstable and may change without notice.
|
|
25
|
+
* @packageDocumentation
|
|
26
|
+
*/
|
|
27
|
+
import * as Effect from "effect/Effect";
|
|
28
|
+
/**
|
|
29
|
+
* Build a VFT-backed `SkillFileAccessor` rooted at the tree's root.
|
|
30
|
+
*
|
|
31
|
+
* Callers that root the skill at a sub-path of the archive should pre-strip
|
|
32
|
+
* that sub-path before constructing the tree — the accessor enforces no
|
|
33
|
+
* `..` escape above the root it was given.
|
|
34
|
+
*
|
|
35
|
+
* @experimental This API is unstable and may change without notice.
|
|
36
|
+
*/
|
|
37
|
+
export const makeVftSkillFileAccessor = (tree) => {
|
|
38
|
+
return {
|
|
39
|
+
exists: (path) => {
|
|
40
|
+
const normalized = normalizeAndCheck(path);
|
|
41
|
+
if (normalized.kind !== "ok") {
|
|
42
|
+
return Effect.succeed(false);
|
|
43
|
+
}
|
|
44
|
+
return Effect.succeed(tree.hasFile(normalized.path));
|
|
45
|
+
},
|
|
46
|
+
readBytes: (path) => {
|
|
47
|
+
const normalized = normalizeAndCheck(path);
|
|
48
|
+
if (normalized.kind === "escape") {
|
|
49
|
+
return failFileAccess(path, "path-escape", `path escapes the accessor root: ${path}`);
|
|
50
|
+
}
|
|
51
|
+
const bytes = tree.getFile(normalized.path);
|
|
52
|
+
if (bytes === undefined) {
|
|
53
|
+
return failFileAccess(path, "read-error", `file not found at ${path}`);
|
|
54
|
+
}
|
|
55
|
+
return Effect.succeed(bytes);
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
const normalizeAndCheck = (path) => {
|
|
60
|
+
if (path === "" || path === "." || path === "./") {
|
|
61
|
+
return { kind: "ok", path: "" };
|
|
62
|
+
}
|
|
63
|
+
// Windows drive letters (`C:/`) and absolute posix paths both count as
|
|
64
|
+
// escape attempts at a skill-rooted accessor.
|
|
65
|
+
if (/^[a-z]:[\\/]/i.test(path) || path.startsWith("/") || path.startsWith("\\")) {
|
|
66
|
+
return { kind: "escape" };
|
|
67
|
+
}
|
|
68
|
+
const normalized = path.replace(/\\/g, "/").replace(/^\.\//, "");
|
|
69
|
+
const segments = normalized.split("/");
|
|
70
|
+
for (const segment of segments) {
|
|
71
|
+
if (segment === "..") {
|
|
72
|
+
return { kind: "escape" };
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return { kind: "ok", path: normalized };
|
|
76
|
+
};
|
|
77
|
+
const failFileAccess = (path, reason, message) => Effect.fail({
|
|
78
|
+
_tag: "FileAccessError",
|
|
79
|
+
path,
|
|
80
|
+
reason,
|
|
81
|
+
message,
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=vft.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vft.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/skill-accessor/vft.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AA4BxC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAa,EAAqB,EAAE;IAC3E,OAAO;QACL,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC7B,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;YAClB,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACjC,OAAO,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,mCAAmC,IAAI,EAAE,CAAC,CAAC;YACxF,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,qBAAqB,IAAI,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAQF,MAAM,iBAAiB,GAAG,CAAC,IAAY,EAAmB,EAAE;IAC1D,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACjD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAClC,CAAC;IACD,uEAAuE;IACvE,8CAA8C;IAC9C,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAChF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACrB,IAAY,EACZ,MAAiC,EACjC,OAAe,EAC6B,EAAE,CAC9C,MAAM,CAAC,IAAI,CAAC;IACV,IAAI,EAAE,iBAA0B;IAChC,IAAI;IACJ,MAAM;IACN,OAAO;CACR,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `skill/*` rule catalog — the v1 five-rule set.
|
|
3
|
+
*
|
|
4
|
+
* Per `docs/design/lint-engine.md §10.skill`, registry publish and `axm lint`
|
|
5
|
+
* run exactly these rules against each skill context:
|
|
6
|
+
*
|
|
7
|
+
* | ID | Severity | Autofix |
|
|
8
|
+
* | -------------------------------- | -------- | ------- |
|
|
9
|
+
* | `skill/skill-md-present` | error | — |
|
|
10
|
+
* | `skill/manifest-present` | error | — |
|
|
11
|
+
* | `skill/frontmatter-parseable` | error | — |
|
|
12
|
+
* | `skill/manifest-schema-valid` | error | — |
|
|
13
|
+
* | `skill/manifest-keys-recognized` | warning | — |
|
|
14
|
+
*
|
|
15
|
+
* All five ship `kind: "advisory"`. Native-vs-non-native applicability is
|
|
16
|
+
* expressed via `check` early-return (no separate `applies` predicate); see
|
|
17
|
+
* each rule's module for the guard.
|
|
18
|
+
*
|
|
19
|
+
* Rule ids are **registered with the lint config allowlist at module-load
|
|
20
|
+
* time**, so importing this catalog extends the set of accepted
|
|
21
|
+
* `.axm/settings.json` `lint.rules` keys. Consumers that never import the
|
|
22
|
+
* catalog (the registry Worker bundle for `pack`-only routes, e.g.) don't pay
|
|
23
|
+
* the registration cost.
|
|
24
|
+
*
|
|
25
|
+
* @experimental This API is unstable and may change without notice.
|
|
26
|
+
* @packageDocumentation
|
|
27
|
+
*/
|
|
28
|
+
import type { LintRule } from "../rule.js";
|
|
29
|
+
import type { SkillRuleContext } from "../context.js";
|
|
30
|
+
/**
|
|
31
|
+
* Ordered v1 `skill/*` rule catalog. Declaration order is the evaluation
|
|
32
|
+
* order within a single `evaluateContexts` call (deterministic ordering is
|
|
33
|
+
* test-observable; see `evaluate.ts`).
|
|
34
|
+
*
|
|
35
|
+
* @experimental This API is unstable and may change without notice.
|
|
36
|
+
*/
|
|
37
|
+
export declare const skillRules: ReadonlyArray<LintRule<SkillRuleContext>>;
|
|
38
|
+
//# sourceMappingURL=skill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../../../src/unstable/lint/catalog/skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAOtD;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAMhE,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `skill/*` rule catalog — the v1 five-rule set.
|
|
3
|
+
*
|
|
4
|
+
* Per `docs/design/lint-engine.md §10.skill`, registry publish and `axm lint`
|
|
5
|
+
* run exactly these rules against each skill context:
|
|
6
|
+
*
|
|
7
|
+
* | ID | Severity | Autofix |
|
|
8
|
+
* | -------------------------------- | -------- | ------- |
|
|
9
|
+
* | `skill/skill-md-present` | error | — |
|
|
10
|
+
* | `skill/manifest-present` | error | — |
|
|
11
|
+
* | `skill/frontmatter-parseable` | error | — |
|
|
12
|
+
* | `skill/manifest-schema-valid` | error | — |
|
|
13
|
+
* | `skill/manifest-keys-recognized` | warning | — |
|
|
14
|
+
*
|
|
15
|
+
* All five ship `kind: "advisory"`. Native-vs-non-native applicability is
|
|
16
|
+
* expressed via `check` early-return (no separate `applies` predicate); see
|
|
17
|
+
* each rule's module for the guard.
|
|
18
|
+
*
|
|
19
|
+
* Rule ids are **registered with the lint config allowlist at module-load
|
|
20
|
+
* time**, so importing this catalog extends the set of accepted
|
|
21
|
+
* `.axm/settings.json` `lint.rules` keys. Consumers that never import the
|
|
22
|
+
* catalog (the registry Worker bundle for `pack`-only routes, e.g.) don't pay
|
|
23
|
+
* the registration cost.
|
|
24
|
+
*
|
|
25
|
+
* @experimental This API is unstable and may change without notice.
|
|
26
|
+
* @packageDocumentation
|
|
27
|
+
*/
|
|
28
|
+
import { registerLintRuleIds } from "../config.js";
|
|
29
|
+
import { skillMdPresentRule } from "./skill/skill-md-present.js";
|
|
30
|
+
import { manifestPresentRule } from "./skill/manifest-present.js";
|
|
31
|
+
import { frontmatterParseableRule } from "./skill/frontmatter-parseable.js";
|
|
32
|
+
import { manifestSchemaValidRule } from "./skill/manifest-schema-valid.js";
|
|
33
|
+
import { manifestKeysRecognizedRule } from "./skill/manifest-keys-recognized.js";
|
|
34
|
+
/**
|
|
35
|
+
* Ordered v1 `skill/*` rule catalog. Declaration order is the evaluation
|
|
36
|
+
* order within a single `evaluateContexts` call (deterministic ordering is
|
|
37
|
+
* test-observable; see `evaluate.ts`).
|
|
38
|
+
*
|
|
39
|
+
* @experimental This API is unstable and may change without notice.
|
|
40
|
+
*/
|
|
41
|
+
export const skillRules = [
|
|
42
|
+
skillMdPresentRule,
|
|
43
|
+
manifestPresentRule,
|
|
44
|
+
frontmatterParseableRule,
|
|
45
|
+
manifestSchemaValidRule,
|
|
46
|
+
manifestKeysRecognizedRule,
|
|
47
|
+
];
|
|
48
|
+
// Register ids into the `LintConfig.rules` allowlist. Module-load side effect:
|
|
49
|
+
// a consumer that imports this catalog (or the `catalog/index` barrel) enables
|
|
50
|
+
// `.axm/settings.json` `lint.rules` to reference any of the above rule ids.
|
|
51
|
+
registerLintRuleIds(skillRules.map((r) => r.id));
|
|
52
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../../../../src/unstable/lint/catalog/skill.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,UAAU,GAA8C;IACnE,kBAAkB;IAClB,mBAAmB;IACnB,wBAAwB;IACxB,uBAAuB;IACvB,0BAA0B;CAC3B,CAAC;AAEF,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `workspace/agents-detected-declared` — every agent footprint detected on
|
|
3
|
+
* disk appears in `settings.agents[]`.
|
|
4
|
+
*
|
|
5
|
+
* Per `docs/design/lint-engine.md §10.workspace`:
|
|
6
|
+
*
|
|
7
|
+
* Project scope only (early-returns at user scope). For each detected
|
|
8
|
+
* agent whose id is missing from settings.agents[], emit one finding.
|
|
9
|
+
*
|
|
10
|
+
* Project scope only: detection relies on scanning workspace-root-adjacent
|
|
11
|
+
* agent dirs (`.claude/`, `.cursor/`, …). At user scope the detection target
|
|
12
|
+
* is ambiguous, so the rule early-returns `[]`.
|
|
13
|
+
*
|
|
14
|
+
* Advisory, warning — the user may be intentionally using an agent AXM
|
|
15
|
+
* doesn't manage.
|
|
16
|
+
*
|
|
17
|
+
* @experimental This API is unstable and may change without notice.
|
|
18
|
+
* @packageDocumentation
|
|
19
|
+
*/
|
|
20
|
+
import type { WorkspaceRuleContext } from "../../context.js";
|
|
21
|
+
import type { AdvisoryRule } from "../../rule.js";
|
|
22
|
+
export declare const agentsDetectedDeclaredRule: AdvisoryRule<WorkspaceRuleContext>;
|
|
23
|
+
//# sourceMappingURL=agents-detected-declared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-detected-declared.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/agents-detected-declared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,eAAe,CAAC;AAenE,eAAO,MAAM,0BAA0B,EAAE,YAAY,CAAC,oBAAoB,CA0CzE,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `workspace/agents-detected-declared` — every agent footprint detected on
|
|
3
|
+
* disk appears in `settings.agents[]`.
|
|
4
|
+
*
|
|
5
|
+
* Per `docs/design/lint-engine.md §10.workspace`:
|
|
6
|
+
*
|
|
7
|
+
* Project scope only (early-returns at user scope). For each detected
|
|
8
|
+
* agent whose id is missing from settings.agents[], emit one finding.
|
|
9
|
+
*
|
|
10
|
+
* Project scope only: detection relies on scanning workspace-root-adjacent
|
|
11
|
+
* agent dirs (`.claude/`, `.cursor/`, …). At user scope the detection target
|
|
12
|
+
* is ambiguous, so the rule early-returns `[]`.
|
|
13
|
+
*
|
|
14
|
+
* Advisory, warning — the user may be intentionally using an agent AXM
|
|
15
|
+
* doesn't manage.
|
|
16
|
+
*
|
|
17
|
+
* @experimental This API is unstable and may change without notice.
|
|
18
|
+
* @packageDocumentation
|
|
19
|
+
*/
|
|
20
|
+
import * as Effect from "effect/Effect";
|
|
21
|
+
import * as Option from "effect/Option";
|
|
22
|
+
import * as Result from "effect/Result";
|
|
23
|
+
import * as Schema from "effect/Schema";
|
|
24
|
+
import { SettingsSchema } from "../../../settings/schema.js";
|
|
25
|
+
import { EMPTY_ADVISORY_FINDINGS } from "./helpers/empty.js";
|
|
26
|
+
const RULE_ID = "workspace/agents-detected-declared";
|
|
27
|
+
const SETTINGS_REL = ".axm/settings.json";
|
|
28
|
+
const decodeSettings = (input) => {
|
|
29
|
+
const result = Schema.decodeUnknownResult(SettingsSchema)(input, {
|
|
30
|
+
onExcessProperty: "ignore",
|
|
31
|
+
errors: "all",
|
|
32
|
+
});
|
|
33
|
+
return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
|
|
34
|
+
};
|
|
35
|
+
export const agentsDetectedDeclaredRule = {
|
|
36
|
+
id: RULE_ID,
|
|
37
|
+
description: "Every agent detected on disk appears in settings.agents[].",
|
|
38
|
+
kind: "advisory",
|
|
39
|
+
severity: "warning",
|
|
40
|
+
check: (context) => Effect.gen(function* () {
|
|
41
|
+
// Scope-aware early-return — detection only applies at project scope.
|
|
42
|
+
if (context.subject.scope === "user") {
|
|
43
|
+
return EMPTY_ADVISORY_FINDINGS;
|
|
44
|
+
}
|
|
45
|
+
const settingsResult = yield* Effect.result(context.workspace.settings);
|
|
46
|
+
if (Result.isFailure(settingsResult)) {
|
|
47
|
+
return EMPTY_ADVISORY_FINDINGS;
|
|
48
|
+
}
|
|
49
|
+
const decoded = decodeSettings(settingsResult.success);
|
|
50
|
+
if (Option.isNone(decoded)) {
|
|
51
|
+
return EMPTY_ADVISORY_FINDINGS;
|
|
52
|
+
}
|
|
53
|
+
const declared = new Set(decoded.value.agents ?? []);
|
|
54
|
+
const detected = yield* context.workspace.detectAgents("project");
|
|
55
|
+
const findings = [];
|
|
56
|
+
for (const detection of detected) {
|
|
57
|
+
if (declared.has(detection.id)) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
findings.push({
|
|
61
|
+
kind: "advisory",
|
|
62
|
+
ruleId: RULE_ID,
|
|
63
|
+
severity: "warning",
|
|
64
|
+
message: `Detected agent '${detection.id}' is not declared in settings.agents[].`,
|
|
65
|
+
suggestions: [
|
|
66
|
+
`Add '${detection.id}' to settings.agents[] to manage this agent.`,
|
|
67
|
+
`Set workspace/agents-detected-declared to 'off' in lint.rules to silence this rule.`,
|
|
68
|
+
],
|
|
69
|
+
location: { file: SETTINGS_REL },
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return findings;
|
|
73
|
+
}),
|
|
74
|
+
};
|
|
75
|
+
//# sourceMappingURL=agents-detected-declared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-detected-declared.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/agents-detected-declared.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAiB,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,OAAO,GAAG,oCAAoC,CAAC;AACrD,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAE1C,MAAM,cAAc,GAAG,CAAC,KAAc,EAA2B,EAAE;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE;QAC/D,gBAAgB,EAAE,QAAQ;QAC1B,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAuC;IAC5E,EAAE,EAAE,OAAO;IACX,WAAW,EAAE,4DAA4D;IACzE,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,SAAS;IACnB,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,sEAAsE;QACtE,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YACrC,OAAO,uBAAuB,CAAC;QACjC,CAAC;QAED,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;YACrC,OAAO,uBAAuB,CAAC;QACjC,CAAC;QACD,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,uBAAuB,CAAC;QACjC,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAErD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAClE,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAC5C,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;YACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC/B,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,mBAAmB,SAAS,CAAC,EAAE,yCAAyC;gBACjF,WAAW,EAAE;oBACX,QAAQ,SAAS,CAAC,EAAE,8CAA8C;oBAClE,qFAAqF;iBACtF;gBACD,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;aACjC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `workspace/agents-recognized` — every agent id in `settings.agents[]` is
|
|
3
|
+
* in AXM's known-agent catalog.
|
|
4
|
+
*
|
|
5
|
+
* Per `docs/design/lint-engine.md §10.workspace` "Foundation" row:
|
|
6
|
+
*
|
|
7
|
+
* Agent recognition invariant — unknown IDs can't be materialized into.
|
|
8
|
+
* Absorbs doctor `agents-configured.unrecognized`. Known-agent catalog
|
|
9
|
+
* lives at `packages/core/src/unstable/agents/types.ts`.
|
|
10
|
+
*
|
|
11
|
+
* Cascade: the rule walks `settings.agents[]` and checks each id against
|
|
12
|
+
* the set returned by `workspace.knownAgents`. Unknown ids each emit one
|
|
13
|
+
* finding — the cascade is per-entity, not per-cascade-arm.
|
|
14
|
+
*
|
|
15
|
+
* Advisory — fixing an unrecognized id is a user-authored settings edit.
|
|
16
|
+
*
|
|
17
|
+
* @experimental This API is unstable and may change without notice.
|
|
18
|
+
* @packageDocumentation
|
|
19
|
+
*/
|
|
20
|
+
import type { WorkspaceRuleContext } from "../../context.js";
|
|
21
|
+
import type { AdvisoryRule } from "../../rule.js";
|
|
22
|
+
export declare const agentsRecognizedRule: AdvisoryRule<WorkspaceRuleContext>;
|
|
23
|
+
//# sourceMappingURL=agents-recognized.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-recognized.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/agents-recognized.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,eAAe,CAAC;AAenE,eAAO,MAAM,oBAAoB,EAAE,YAAY,CAAC,oBAAoB,CA0CnE,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `workspace/agents-recognized` — every agent id in `settings.agents[]` is
|
|
3
|
+
* in AXM's known-agent catalog.
|
|
4
|
+
*
|
|
5
|
+
* Per `docs/design/lint-engine.md §10.workspace` "Foundation" row:
|
|
6
|
+
*
|
|
7
|
+
* Agent recognition invariant — unknown IDs can't be materialized into.
|
|
8
|
+
* Absorbs doctor `agents-configured.unrecognized`. Known-agent catalog
|
|
9
|
+
* lives at `packages/core/src/unstable/agents/types.ts`.
|
|
10
|
+
*
|
|
11
|
+
* Cascade: the rule walks `settings.agents[]` and checks each id against
|
|
12
|
+
* the set returned by `workspace.knownAgents`. Unknown ids each emit one
|
|
13
|
+
* finding — the cascade is per-entity, not per-cascade-arm.
|
|
14
|
+
*
|
|
15
|
+
* Advisory — fixing an unrecognized id is a user-authored settings edit.
|
|
16
|
+
*
|
|
17
|
+
* @experimental This API is unstable and may change without notice.
|
|
18
|
+
* @packageDocumentation
|
|
19
|
+
*/
|
|
20
|
+
import * as Effect from "effect/Effect";
|
|
21
|
+
import * as Option from "effect/Option";
|
|
22
|
+
import * as Result from "effect/Result";
|
|
23
|
+
import * as Schema from "effect/Schema";
|
|
24
|
+
import { SettingsSchema } from "../../../settings/schema.js";
|
|
25
|
+
import { EMPTY_ADVISORY_FINDINGS } from "./helpers/empty.js";
|
|
26
|
+
const RULE_ID = "workspace/agents-recognized";
|
|
27
|
+
const SETTINGS_REL = ".axm/settings.json";
|
|
28
|
+
const decodeSettings = (input) => {
|
|
29
|
+
const result = Schema.decodeUnknownResult(SettingsSchema)(input, {
|
|
30
|
+
onExcessProperty: "ignore",
|
|
31
|
+
errors: "all",
|
|
32
|
+
});
|
|
33
|
+
return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
|
|
34
|
+
};
|
|
35
|
+
export const agentsRecognizedRule = {
|
|
36
|
+
id: RULE_ID,
|
|
37
|
+
description: "Every agent id in settings.agents[] is in the known-agent catalog.",
|
|
38
|
+
kind: "advisory",
|
|
39
|
+
severity: "error",
|
|
40
|
+
check: (context) => Effect.gen(function* () {
|
|
41
|
+
const settingsResult = yield* Effect.result(context.workspace.settings);
|
|
42
|
+
if (Result.isFailure(settingsResult)) {
|
|
43
|
+
return EMPTY_ADVISORY_FINDINGS;
|
|
44
|
+
}
|
|
45
|
+
const decoded = decodeSettings(settingsResult.success);
|
|
46
|
+
if (Option.isNone(decoded)) {
|
|
47
|
+
// workspace/settings-schema-valid owns the decode arm.
|
|
48
|
+
return EMPTY_ADVISORY_FINDINGS;
|
|
49
|
+
}
|
|
50
|
+
const declared = decoded.value.agents ?? [];
|
|
51
|
+
if (declared.length === 0) {
|
|
52
|
+
return EMPTY_ADVISORY_FINDINGS;
|
|
53
|
+
}
|
|
54
|
+
const known = yield* context.workspace.knownAgents;
|
|
55
|
+
const knownIds = new Set(known.map((a) => a.id));
|
|
56
|
+
const findings = [];
|
|
57
|
+
for (const id of declared) {
|
|
58
|
+
if (knownIds.has(id)) {
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
findings.push({
|
|
62
|
+
kind: "advisory",
|
|
63
|
+
ruleId: RULE_ID,
|
|
64
|
+
severity: "error",
|
|
65
|
+
message: `Agent id '${id}' is not in the known-agent catalog.`,
|
|
66
|
+
suggestions: [
|
|
67
|
+
`Remove '${id}' from settings.agents[].`,
|
|
68
|
+
`Correct the typo if '${id}' was meant to be another agent id.`,
|
|
69
|
+
],
|
|
70
|
+
location: { file: SETTINGS_REL },
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return findings;
|
|
74
|
+
}),
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=agents-recognized.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents-recognized.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/agents-recognized.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAiB,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,OAAO,GAAG,6BAA6B,CAAC;AAC9C,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAE1C,MAAM,cAAc,GAAG,CAAC,KAAc,EAA2B,EAAE;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE;QAC/D,gBAAgB,EAAE,QAAQ;QAC1B,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAuC;IACtE,EAAE,EAAE,OAAO;IACX,WAAW,EAAE,oEAAoE;IACjF,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;YACrC,OAAO,uBAAuB,CAAC;QACjC,CAAC;QACD,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,uDAAuD;YACvD,OAAO,uBAAuB,CAAC;QACjC,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,uBAAuB,CAAC;QACjC,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEjD,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAC5C,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrB,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,OAAO;gBACf,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,aAAa,EAAE,sCAAsC;gBAC9D,WAAW,EAAE;oBACX,WAAW,EAAE,2BAA2B;oBACxC,wBAAwB,EAAE,qCAAqC;iBAChE;gBACD,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;aACjC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed empty constants used by workspace rules to satisfy return types
|
|
3
|
+
* without resorting to `[]` + type assertion. Using a shared `const` avoids
|
|
4
|
+
* repeated `as ReadonlyArray<T>` assertions (banned by the repo style guide)
|
|
5
|
+
* while keeping the inferred type stable.
|
|
6
|
+
*
|
|
7
|
+
* @experimental This API is unstable and may change without notice.
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
import type { AdvisoryFinding, LintFinding } from "../../../rule.js";
|
|
11
|
+
import type { Operation } from "../../../../plan/plan.js";
|
|
12
|
+
/** Shared empty AdvisoryFinding array. */
|
|
13
|
+
export declare const EMPTY_ADVISORY_FINDINGS: ReadonlyArray<AdvisoryFinding>;
|
|
14
|
+
/** Shared empty LintFinding array. */
|
|
15
|
+
export declare const EMPTY_LINT_FINDINGS: ReadonlyArray<LintFinding>;
|
|
16
|
+
/** Shared empty Operation array. */
|
|
17
|
+
export declare const EMPTY_OPERATIONS: ReadonlyArray<Operation<string, unknown>>;
|
|
18
|
+
//# sourceMappingURL=empty.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty.d.ts","sourceRoot":"","sources":["../../../../../../../src/unstable/lint/catalog/workspace/helpers/empty.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,0CAA0C;AAC1C,eAAO,MAAM,uBAAuB,EAAE,aAAa,CAAC,eAAe,CAAM,CAAC;AAE1E,sCAAsC;AACtC,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,WAAW,CAAM,CAAC;AAElE,oCAAoC;AACpC,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed empty constants used by workspace rules to satisfy return types
|
|
3
|
+
* without resorting to `[]` + type assertion. Using a shared `const` avoids
|
|
4
|
+
* repeated `as ReadonlyArray<T>` assertions (banned by the repo style guide)
|
|
5
|
+
* while keeping the inferred type stable.
|
|
6
|
+
*
|
|
7
|
+
* @experimental This API is unstable and may change without notice.
|
|
8
|
+
* @packageDocumentation
|
|
9
|
+
*/
|
|
10
|
+
/** Shared empty AdvisoryFinding array. */
|
|
11
|
+
export const EMPTY_ADVISORY_FINDINGS = [];
|
|
12
|
+
/** Shared empty LintFinding array. */
|
|
13
|
+
export const EMPTY_LINT_FINDINGS = [];
|
|
14
|
+
/** Shared empty Operation array. */
|
|
15
|
+
export const EMPTY_OPERATIONS = [];
|
|
16
|
+
//# sourceMappingURL=empty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty.js","sourceRoot":"","sources":["../../../../../../../src/unstable/lint/catalog/workspace/helpers/empty.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,0CAA0C;AAC1C,MAAM,CAAC,MAAM,uBAAuB,GAAmC,EAAE,CAAC;AAE1E,sCAAsC;AACtC,MAAM,CAAC,MAAM,mBAAmB,GAA+B,EAAE,CAAC;AAElE,oCAAoC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAA8C,EAAE,CAAC"}
|