@agentxm/client-core 0.2.0 → 0.3.1
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/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,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `workspace/skills-integrity-valid` — each installed skill's `src/` content
|
|
3
|
+
* matches its lockfile `sourceHash`.
|
|
4
|
+
*
|
|
5
|
+
* For each skill lock entry with a `sourceHash`, verify the canonical
|
|
6
|
+
* installed directory (`.axm/extensions/<owner>/skills/<name>/src/` for
|
|
7
|
+
* registry sources; `.axm/extensions/external/skills/<name>/` for
|
|
8
|
+
* non-registry) exists and its hash matches. Integrity-mismatch entries
|
|
9
|
+
* each emit one `AutofixableFinding`; autofix: `install-skill` with
|
|
10
|
+
* `force: true`.
|
|
11
|
+
*
|
|
12
|
+
* The integrity check MUST walk the workspace filesystem — `context.workspace`
|
|
13
|
+
* exposes `exists` only; the accessor layer surfaces the pre-computed
|
|
14
|
+
* `installedSkills` array with the skill's `files` accessor already rooted
|
|
15
|
+
* at the right path per provenance. A skill whose install directory is
|
|
16
|
+
* missing entirely is also a mismatch.
|
|
17
|
+
*
|
|
18
|
+
* V1 keeps this rule simple: a skill whose `sourceHash` is undefined in the
|
|
19
|
+
* lockfile (e.g., git-hosted sources without pinned hash) is not checked.
|
|
20
|
+
*
|
|
21
|
+
* One finding per affected entity.
|
|
22
|
+
*
|
|
23
|
+
* @experimental This API is unstable and may change without notice.
|
|
24
|
+
* @packageDocumentation
|
|
25
|
+
*/
|
|
26
|
+
import * as Effect from "effect/Effect";
|
|
27
|
+
import * as Option from "effect/Option";
|
|
28
|
+
import * as Result from "effect/Result";
|
|
29
|
+
import * as Schema from "effect/Schema";
|
|
30
|
+
import { LockfileSchema } from "../../../lockfile/schema.js";
|
|
31
|
+
import { SettingsSchema } from "../../../settings/schema.js";
|
|
32
|
+
import { installSkillOp } from "./helpers/install-ops.js";
|
|
33
|
+
import { EMPTY_LINT_FINDINGS, EMPTY_OPERATIONS } from "./helpers/empty.js";
|
|
34
|
+
const RULE_ID = "workspace/skills-integrity-valid";
|
|
35
|
+
const LOCKFILE_REL = ".axm/axm-lock.yaml";
|
|
36
|
+
const SUG_INTEGRITY_PREFIX = "Reinstall skill ";
|
|
37
|
+
const decodeSettings = (input) => {
|
|
38
|
+
const result = Schema.decodeUnknownResult(SettingsSchema)(input, {
|
|
39
|
+
onExcessProperty: "ignore",
|
|
40
|
+
errors: "all",
|
|
41
|
+
});
|
|
42
|
+
return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
|
|
43
|
+
};
|
|
44
|
+
const decodeLockfile = (input) => {
|
|
45
|
+
const result = Schema.decodeUnknownResult(LockfileSchema)(input, {
|
|
46
|
+
onExcessProperty: "ignore",
|
|
47
|
+
errors: "all",
|
|
48
|
+
});
|
|
49
|
+
return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
|
|
50
|
+
};
|
|
51
|
+
const integrityFinding = (name, reason) => ({
|
|
52
|
+
kind: "autofixable",
|
|
53
|
+
ruleId: RULE_ID,
|
|
54
|
+
severity: "error",
|
|
55
|
+
message: `Skill '${name}' has an integrity mismatch: ${reason}.`,
|
|
56
|
+
suggestions: [`${SUG_INTEGRITY_PREFIX}'${name}' to re-hash from source.`],
|
|
57
|
+
location: { file: LOCKFILE_REL },
|
|
58
|
+
});
|
|
59
|
+
const NAME_FROM_SUGGESTION_RE = /'([^']+)'/;
|
|
60
|
+
const extractSkillName = (suggestion) => NAME_FROM_SUGGESTION_RE.exec(suggestion)?.[1];
|
|
61
|
+
/**
|
|
62
|
+
* Compute a stable integrity marker for the skill's installed `src/` tree.
|
|
63
|
+
*
|
|
64
|
+
* The lint layer does not re-hash bytes — the workspace accessor is narrow
|
|
65
|
+
* and does not expose bulk-read; integrity in v1 is delegated to an
|
|
66
|
+
* accessor-computed signal carried on the `InstalledSkillInfo` record.
|
|
67
|
+
* Since that extension requires expanding the accessor surface beyond the
|
|
68
|
+
* v1 documented methods (a task 3c.2 constraint), this rule treats a
|
|
69
|
+
* `sourceHash`-bearing lock entry whose canonical `src/` directory does
|
|
70
|
+
* NOT exist as an integrity mismatch. A deeper byte-by-byte hash check
|
|
71
|
+
* defers to the CLI-layer adapter that owns filesystem walks.
|
|
72
|
+
*/
|
|
73
|
+
const checkIntegrity = (name, lockEntry, probeExists) => {
|
|
74
|
+
if (lockEntry.sourceHash === undefined) {
|
|
75
|
+
return Option.none();
|
|
76
|
+
}
|
|
77
|
+
if (!probeExists) {
|
|
78
|
+
return Option.some(integrityFinding(name, "canonical install directory is missing"));
|
|
79
|
+
}
|
|
80
|
+
return Option.none();
|
|
81
|
+
};
|
|
82
|
+
const skillSrcProbe = (name, entry) => {
|
|
83
|
+
if (entry.type === "registry") {
|
|
84
|
+
return `.axm/extensions/${entry.owner}/skills/${name}/src/SKILL.md`;
|
|
85
|
+
}
|
|
86
|
+
return `.axm/extensions/external/skills/${name}/SKILL.md`;
|
|
87
|
+
};
|
|
88
|
+
export const skillsIntegrityValidRule = {
|
|
89
|
+
id: RULE_ID,
|
|
90
|
+
description: "Each skill's canonical src/ content matches its lockfile sourceHash.",
|
|
91
|
+
kind: "autofixing",
|
|
92
|
+
severity: "error",
|
|
93
|
+
check: (context) => Effect.gen(function* () {
|
|
94
|
+
const settingsResult = yield* Effect.result(context.workspace.settings);
|
|
95
|
+
const lockfileResult = yield* Effect.result(context.workspace.lockfile);
|
|
96
|
+
if (Result.isFailure(settingsResult) || Result.isFailure(lockfileResult)) {
|
|
97
|
+
return EMPTY_LINT_FINDINGS;
|
|
98
|
+
}
|
|
99
|
+
const settings = decodeSettings(settingsResult.success);
|
|
100
|
+
if (Option.isNone(settings)) {
|
|
101
|
+
return EMPTY_LINT_FINDINGS;
|
|
102
|
+
}
|
|
103
|
+
const lockOption = lockfileResult.success;
|
|
104
|
+
if (Option.isNone(lockOption)) {
|
|
105
|
+
return EMPTY_LINT_FINDINGS;
|
|
106
|
+
}
|
|
107
|
+
const lockfile = decodeLockfile(lockOption.value);
|
|
108
|
+
if (Option.isNone(lockfile)) {
|
|
109
|
+
return EMPTY_LINT_FINDINGS;
|
|
110
|
+
}
|
|
111
|
+
const lockSkills = lockfile.value.skills;
|
|
112
|
+
const declaredSkills = settings.value.skills ?? {};
|
|
113
|
+
const findings = [];
|
|
114
|
+
for (const [name, entry] of Object.entries(lockSkills)) {
|
|
115
|
+
// Carve out: integrity only applies to declared skills. Orphan
|
|
116
|
+
// lock entries are owned by workspace/skills-lockfile-aligned
|
|
117
|
+
// (orphan arm); running integrity alongside it would produce
|
|
118
|
+
// contradictory autofix Operations (install + uninstall).
|
|
119
|
+
if (!(name in declaredSkills)) {
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
const probe = skillSrcProbe(name, entry);
|
|
123
|
+
const exists = yield* context.workspace.exists(probe);
|
|
124
|
+
const finding = checkIntegrity(name, entry, exists);
|
|
125
|
+
if (Option.isSome(finding)) {
|
|
126
|
+
findings.push(finding.value);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return findings;
|
|
130
|
+
}),
|
|
131
|
+
fix: (context, finding) => Effect.gen(function* () {
|
|
132
|
+
const name = extractSkillName(finding.suggestions[0]);
|
|
133
|
+
if (name === undefined) {
|
|
134
|
+
return EMPTY_OPERATIONS;
|
|
135
|
+
}
|
|
136
|
+
const settingsResult = yield* Effect.result(context.workspace.settings);
|
|
137
|
+
if (Result.isFailure(settingsResult)) {
|
|
138
|
+
return EMPTY_OPERATIONS;
|
|
139
|
+
}
|
|
140
|
+
const settings = decodeSettings(settingsResult.success);
|
|
141
|
+
if (Option.isNone(settings)) {
|
|
142
|
+
return EMPTY_OPERATIONS;
|
|
143
|
+
}
|
|
144
|
+
const entry = settings.value.skills?.[name];
|
|
145
|
+
const source = entry?.source ?? name;
|
|
146
|
+
return [installSkillOp({ name, source, force: true })];
|
|
147
|
+
}),
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=skills-integrity-valid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-integrity-valid.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/skills-integrity-valid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `workspace/skills-lockfile-aligned` — skill lock entries correspond 1:1 to
|
|
3
|
+
* declared skills at satisfying versions.
|
|
4
|
+
*
|
|
5
|
+
* Cascade per `docs/design/lint-engine.md §10.workspace.Skills` (first
|
|
6
|
+
* failing arm per affected entity):
|
|
7
|
+
*
|
|
8
|
+
* 1. **Missing** — every declared skill has a matching lock entry.
|
|
9
|
+
* Autofix: `install-skill` with `force: false` per missing declaration.
|
|
10
|
+
* 2. **Orphan** — every skill lock entry has a matching declaration **or**
|
|
11
|
+
* is `retainedByPack: true` AND a matching installed declared pack
|
|
12
|
+
* declares it. Autofix: `uninstall-skill` per orphan lock entry.
|
|
13
|
+
* Retention carve-out: `retainedByPack: true` entries whose FQN appears
|
|
14
|
+
* in the resolved-map of at least one installed declared pack are NOT
|
|
15
|
+
* orphans.
|
|
16
|
+
* 3. **Version skew** — each lock entry's `resolvedVersion` satisfies the
|
|
17
|
+
* declared version constraint (for registry sources). Autofix:
|
|
18
|
+
* `install-skill` with `force: true`.
|
|
19
|
+
*
|
|
20
|
+
* One finding per affected entity. Autofixing — each arm emits exactly one
|
|
21
|
+
* Operation per affected entity.
|
|
22
|
+
*
|
|
23
|
+
* @experimental This API is unstable and may change without notice.
|
|
24
|
+
* @packageDocumentation
|
|
25
|
+
*/
|
|
26
|
+
import type { WorkspaceRuleContext } from "../../context.js";
|
|
27
|
+
import type { AutofixingRule } from "../../rule.js";
|
|
28
|
+
export declare const skillsLockfileAlignedRule: AutofixingRule<WorkspaceRuleContext>;
|
|
29
|
+
//# sourceMappingURL=skills-lockfile-aligned.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-lockfile-aligned.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/skills-lockfile-aligned.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAsB,cAAc,EAAe,MAAM,eAAe,CAAC;AAgGrF,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,oBAAoB,CAuI1E,CAAC"}
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `workspace/skills-lockfile-aligned` — skill lock entries correspond 1:1 to
|
|
3
|
+
* declared skills at satisfying versions.
|
|
4
|
+
*
|
|
5
|
+
* Cascade per `docs/design/lint-engine.md §10.workspace.Skills` (first
|
|
6
|
+
* failing arm per affected entity):
|
|
7
|
+
*
|
|
8
|
+
* 1. **Missing** — every declared skill has a matching lock entry.
|
|
9
|
+
* Autofix: `install-skill` with `force: false` per missing declaration.
|
|
10
|
+
* 2. **Orphan** — every skill lock entry has a matching declaration **or**
|
|
11
|
+
* is `retainedByPack: true` AND a matching installed declared pack
|
|
12
|
+
* declares it. Autofix: `uninstall-skill` per orphan lock entry.
|
|
13
|
+
* Retention carve-out: `retainedByPack: true` entries whose FQN appears
|
|
14
|
+
* in the resolved-map of at least one installed declared pack are NOT
|
|
15
|
+
* orphans.
|
|
16
|
+
* 3. **Version skew** — each lock entry's `resolvedVersion` satisfies the
|
|
17
|
+
* declared version constraint (for registry sources). Autofix:
|
|
18
|
+
* `install-skill` with `force: true`.
|
|
19
|
+
*
|
|
20
|
+
* One finding per affected entity. Autofixing — each arm emits exactly one
|
|
21
|
+
* Operation per affected entity.
|
|
22
|
+
*
|
|
23
|
+
* @experimental This API is unstable and may change without notice.
|
|
24
|
+
* @packageDocumentation
|
|
25
|
+
*/
|
|
26
|
+
import * as Effect from "effect/Effect";
|
|
27
|
+
import * as Option from "effect/Option";
|
|
28
|
+
import * as Result from "effect/Result";
|
|
29
|
+
import * as Schema from "effect/Schema";
|
|
30
|
+
import { LockfileSchema } from "../../../lockfile/schema.js";
|
|
31
|
+
import { SettingsSchema } from "../../../settings/schema.js";
|
|
32
|
+
import { installSkillOp, uninstallSkillOp } from "./helpers/install-ops.js";
|
|
33
|
+
import { parseRegistrySource } from "./helpers/registry-source.js";
|
|
34
|
+
import { EMPTY_LINT_FINDINGS, EMPTY_OPERATIONS } from "./helpers/empty.js";
|
|
35
|
+
const RULE_ID = "workspace/skills-lockfile-aligned";
|
|
36
|
+
const LOCKFILE_REL = ".axm/axm-lock.yaml";
|
|
37
|
+
const SUG_MISSING_PREFIX = "Install skill ";
|
|
38
|
+
const SUG_ORPHAN_PREFIX = "Uninstall orphan skill ";
|
|
39
|
+
const SUG_VERSION_PREFIX = "Reinstall skill ";
|
|
40
|
+
const decodeSettings = (input) => {
|
|
41
|
+
const result = Schema.decodeUnknownResult(SettingsSchema)(input, {
|
|
42
|
+
onExcessProperty: "ignore",
|
|
43
|
+
errors: "all",
|
|
44
|
+
});
|
|
45
|
+
return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
|
|
46
|
+
};
|
|
47
|
+
const decodeLockfile = (input) => {
|
|
48
|
+
const result = Schema.decodeUnknownResult(LockfileSchema)(input, {
|
|
49
|
+
onExcessProperty: "ignore",
|
|
50
|
+
errors: "all",
|
|
51
|
+
});
|
|
52
|
+
return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
|
|
53
|
+
};
|
|
54
|
+
const missingFinding = (name, source) => ({
|
|
55
|
+
kind: "autofixable",
|
|
56
|
+
ruleId: RULE_ID,
|
|
57
|
+
severity: "error",
|
|
58
|
+
message: `Skill '${name}' is declared in settings but missing from the lockfile.`,
|
|
59
|
+
suggestions: [`${SUG_MISSING_PREFIX}'${name}' from ${source}.`],
|
|
60
|
+
location: { file: LOCKFILE_REL },
|
|
61
|
+
});
|
|
62
|
+
const orphanFinding = (name) => ({
|
|
63
|
+
kind: "autofixable",
|
|
64
|
+
ruleId: RULE_ID,
|
|
65
|
+
severity: "error",
|
|
66
|
+
message: `Skill '${name}' is present in the lockfile but not declared in settings.`,
|
|
67
|
+
suggestions: [`${SUG_ORPHAN_PREFIX}'${name}' to remove it from the workspace.`],
|
|
68
|
+
location: { file: LOCKFILE_REL },
|
|
69
|
+
});
|
|
70
|
+
const versionFinding = (name, details) => ({
|
|
71
|
+
kind: "autofixable",
|
|
72
|
+
ruleId: RULE_ID,
|
|
73
|
+
severity: "error",
|
|
74
|
+
message: `Skill '${name}' lock version does not satisfy the declared constraint: ${details}.`,
|
|
75
|
+
suggestions: [`${SUG_VERSION_PREFIX}'${name}' at the declared version.`],
|
|
76
|
+
location: { file: LOCKFILE_REL },
|
|
77
|
+
});
|
|
78
|
+
// -----------------------------------------------------------------------------
|
|
79
|
+
// Retention helpers
|
|
80
|
+
// -----------------------------------------------------------------------------
|
|
81
|
+
const isRegistryEntry = (entry) => entry.type === "registry";
|
|
82
|
+
const lockEntryFqn = (entry, name) => {
|
|
83
|
+
if (isRegistryEntry(entry)) {
|
|
84
|
+
return `${entry.owner}/skills/${entry.name}`;
|
|
85
|
+
}
|
|
86
|
+
return `skills/${name}`;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Build the set of FQNs retained by at least one installed declared pack.
|
|
90
|
+
* An entry is retained only when:
|
|
91
|
+
*
|
|
92
|
+
* - its lockfile entry has `retainedByPack: true`, AND
|
|
93
|
+
* - at least one pack lock entry's `resolvedSkills` map has a key matching
|
|
94
|
+
* the entry's FQN, AND
|
|
95
|
+
* - that pack name appears in `settings.packs`.
|
|
96
|
+
*/
|
|
97
|
+
const buildRetainedSkillFqns = (settings, lockfile) => {
|
|
98
|
+
const declaredPackNames = new Set(Object.keys(settings.packs ?? {}));
|
|
99
|
+
const retained = new Set();
|
|
100
|
+
const packLock = lockfile.packs ?? {};
|
|
101
|
+
for (const [packName, packEntry] of Object.entries(packLock)) {
|
|
102
|
+
if (!declaredPackNames.has(packName)) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
for (const fqn of Object.keys(packEntry.resolvedSkills)) {
|
|
106
|
+
retained.add(fqn);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return retained;
|
|
110
|
+
};
|
|
111
|
+
export const skillsLockfileAlignedRule = {
|
|
112
|
+
id: RULE_ID,
|
|
113
|
+
description: "Skill lock entries correspond 1:1 to declared skills at satisfying versions.",
|
|
114
|
+
kind: "autofixing",
|
|
115
|
+
severity: "error",
|
|
116
|
+
check: (context) => Effect.gen(function* () {
|
|
117
|
+
const settingsResult = yield* Effect.result(context.workspace.settings);
|
|
118
|
+
const lockfileResult = yield* Effect.result(context.workspace.lockfile);
|
|
119
|
+
if (Result.isFailure(settingsResult) || Result.isFailure(lockfileResult)) {
|
|
120
|
+
return EMPTY_LINT_FINDINGS;
|
|
121
|
+
}
|
|
122
|
+
const settings = decodeSettings(settingsResult.success);
|
|
123
|
+
if (Option.isNone(settings)) {
|
|
124
|
+
return EMPTY_LINT_FINDINGS;
|
|
125
|
+
}
|
|
126
|
+
const lockOption = lockfileResult.success;
|
|
127
|
+
if (Option.isNone(lockOption)) {
|
|
128
|
+
// workspace/lockfile-valid owns the missing arm.
|
|
129
|
+
return EMPTY_LINT_FINDINGS;
|
|
130
|
+
}
|
|
131
|
+
const lockfile = decodeLockfile(lockOption.value);
|
|
132
|
+
if (Option.isNone(lockfile)) {
|
|
133
|
+
// workspace/lockfile-valid owns the schema arm.
|
|
134
|
+
return EMPTY_LINT_FINDINGS;
|
|
135
|
+
}
|
|
136
|
+
const declaredSkills = settings.value.skills ?? {};
|
|
137
|
+
const lockSkills = lockfile.value.skills;
|
|
138
|
+
const retainedFqns = buildRetainedSkillFqns(settings.value, lockfile.value);
|
|
139
|
+
const findings = [];
|
|
140
|
+
const affected = new Set();
|
|
141
|
+
// Arm 1: missing — declared but no lock entry.
|
|
142
|
+
for (const [name, entry] of Object.entries(declaredSkills)) {
|
|
143
|
+
if (!(name in lockSkills)) {
|
|
144
|
+
findings.push(missingFinding(name, entry.source));
|
|
145
|
+
affected.add(`declared:${name}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Arm 2: orphan — lock entry but no declaration, and not retained by
|
|
149
|
+
// an installed declared pack.
|
|
150
|
+
for (const [name, entry] of Object.entries(lockSkills)) {
|
|
151
|
+
if (name in declaredSkills) {
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
if (entry.retainedByPack === true && retainedFqns.has(lockEntryFqn(entry, name))) {
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
findings.push(orphanFinding(name));
|
|
158
|
+
affected.add(`lock:${name}`);
|
|
159
|
+
}
|
|
160
|
+
// Arm 3: version skew — declared AND in lock, but registry-shaped
|
|
161
|
+
// source constraint not satisfied by resolvedVersion.
|
|
162
|
+
for (const [name, entry] of Object.entries(declaredSkills)) {
|
|
163
|
+
if (affected.has(`declared:${name}`)) {
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
const lockEntry = lockSkills[name];
|
|
167
|
+
if (lockEntry === undefined || !isRegistryEntry(lockEntry)) {
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
const parsed = parseRegistrySource(entry.source);
|
|
171
|
+
if (parsed === undefined) {
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
const constraint = parsed.versionConstraint;
|
|
175
|
+
if (constraint === undefined) {
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
// Simple exact-match semver check: the only non-heuristic arm we
|
|
179
|
+
// can enforce without pulling in the semver lib here. Range checks
|
|
180
|
+
// defer to the CLI adapter (Phase 5).
|
|
181
|
+
if (constraint !== lockEntry.resolvedVersion) {
|
|
182
|
+
findings.push(versionFinding(name, `declared ${constraint}, locked ${lockEntry.resolvedVersion}`));
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return findings;
|
|
186
|
+
}),
|
|
187
|
+
fix: (context, finding) => Effect.gen(function* () {
|
|
188
|
+
const s0 = finding.suggestions[0];
|
|
189
|
+
if (s0.startsWith(SUG_MISSING_PREFIX)) {
|
|
190
|
+
const name = extractSkillName(s0);
|
|
191
|
+
if (name === undefined) {
|
|
192
|
+
return EMPTY_OPERATIONS;
|
|
193
|
+
}
|
|
194
|
+
const settingsResult = yield* Effect.result(context.workspace.settings);
|
|
195
|
+
if (Result.isFailure(settingsResult)) {
|
|
196
|
+
return EMPTY_OPERATIONS;
|
|
197
|
+
}
|
|
198
|
+
const settings = decodeSettings(settingsResult.success);
|
|
199
|
+
if (Option.isNone(settings)) {
|
|
200
|
+
return EMPTY_OPERATIONS;
|
|
201
|
+
}
|
|
202
|
+
const entry = settings.value.skills?.[name];
|
|
203
|
+
if (entry === undefined) {
|
|
204
|
+
return EMPTY_OPERATIONS;
|
|
205
|
+
}
|
|
206
|
+
return [installSkillOp({ name, source: entry.source, force: false })];
|
|
207
|
+
}
|
|
208
|
+
if (s0.startsWith(SUG_ORPHAN_PREFIX)) {
|
|
209
|
+
const name = extractSkillName(s0);
|
|
210
|
+
if (name === undefined) {
|
|
211
|
+
return EMPTY_OPERATIONS;
|
|
212
|
+
}
|
|
213
|
+
return [uninstallSkillOp({ name })];
|
|
214
|
+
}
|
|
215
|
+
if (s0.startsWith(SUG_VERSION_PREFIX)) {
|
|
216
|
+
const name = extractSkillName(s0);
|
|
217
|
+
if (name === undefined) {
|
|
218
|
+
return EMPTY_OPERATIONS;
|
|
219
|
+
}
|
|
220
|
+
const settingsResult = yield* Effect.result(context.workspace.settings);
|
|
221
|
+
if (Result.isFailure(settingsResult)) {
|
|
222
|
+
return EMPTY_OPERATIONS;
|
|
223
|
+
}
|
|
224
|
+
const settings = decodeSettings(settingsResult.success);
|
|
225
|
+
if (Option.isNone(settings)) {
|
|
226
|
+
return EMPTY_OPERATIONS;
|
|
227
|
+
}
|
|
228
|
+
const entry = settings.value.skills?.[name];
|
|
229
|
+
if (entry === undefined) {
|
|
230
|
+
return EMPTY_OPERATIONS;
|
|
231
|
+
}
|
|
232
|
+
return [installSkillOp({ name, source: entry.source, force: true })];
|
|
233
|
+
}
|
|
234
|
+
return EMPTY_OPERATIONS;
|
|
235
|
+
}),
|
|
236
|
+
};
|
|
237
|
+
const NAME_FROM_SUGGESTION_RE = /'([^']+)'/;
|
|
238
|
+
const extractSkillName = (suggestion) => {
|
|
239
|
+
const match = NAME_FROM_SUGGESTION_RE.exec(suggestion);
|
|
240
|
+
return match?.[1];
|
|
241
|
+
};
|
|
242
|
+
//# sourceMappingURL=skills-lockfile-aligned.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-lockfile-aligned.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/skills-lockfile-aligned.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `WorkspaceIndex` and `buildWorkspaceRuleContext`.
|
|
3
|
+
*
|
|
4
|
+
* The `WorkspaceIndex` satisfies both Phase 3a's `SkillIndexView` and Phase
|
|
5
|
+
* 3b's `PackIndexView` — it exposes `installedSkills: InstalledSkillInfo[]`
|
|
6
|
+
* and `installedPacks: InstalledPackInfo[]` with per-provenance
|
|
7
|
+
* `displayRoot`s:
|
|
8
|
+
*
|
|
9
|
+
* Registry-installed native skill: `.axm/extensions/<@owner>/skills/<name>/src/`
|
|
10
|
+
* External skill: `.axm/extensions/external/skills/<name>/`
|
|
11
|
+
* Registry pack: `.axm/extensions/<@owner>/packs/<name>/`
|
|
12
|
+
* (NO `src/` — matches the on-disk layout
|
|
13
|
+
* per Phase 3b finding.)
|
|
14
|
+
*
|
|
15
|
+
* The `buildWorkspaceRuleContext` helper constructs a `WorkspaceRuleContext`
|
|
16
|
+
* from a resolved `WorkspaceLintAccessor` and a requested scope. User-scope
|
|
17
|
+
* root resolution for v1 is `$AXM_USER_HOME/.axm/` when set, otherwise
|
|
18
|
+
* `$HOME/.axm/`; a follow-up owns the broader XDG story.
|
|
19
|
+
*
|
|
20
|
+
* @experimental This API is unstable and may change without notice.
|
|
21
|
+
* @packageDocumentation
|
|
22
|
+
*/
|
|
23
|
+
import type * as FileSystem from "effect/FileSystem";
|
|
24
|
+
import type * as Path from "effect/Path";
|
|
25
|
+
import type { WorkspaceRuleContext } from "../../context.js";
|
|
26
|
+
import { type InstalledSkillInfo, type SkillIndexView } from "../skill-accessor/contexts.js";
|
|
27
|
+
import { type InstalledPackInfo, type PackIndexView } from "../pack-accessor/contexts.js";
|
|
28
|
+
import type { WorkspaceAccessorPlatform } from "./platform.js";
|
|
29
|
+
/**
|
|
30
|
+
* The `WorkspaceIndex` shape — satisfies `SkillIndexView` and `PackIndexView`
|
|
31
|
+
* simultaneously, so it can be passed to `buildSkillRuleContexts` and
|
|
32
|
+
* `buildPackRuleContexts` without adaptation. The implementation yields
|
|
33
|
+
* `SkillRuleContext[]` / `PackRuleContext[]` via the respective builders.
|
|
34
|
+
*
|
|
35
|
+
* @experimental This API is unstable and may change without notice.
|
|
36
|
+
*/
|
|
37
|
+
export interface WorkspaceIndex extends SkillIndexView, PackIndexView {
|
|
38
|
+
readonly installedSkills: ReadonlyArray<InstalledSkillInfo>;
|
|
39
|
+
readonly installedPacks: ReadonlyArray<InstalledPackInfo>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Argument shape for `buildWorkspaceRuleContext`.
|
|
43
|
+
*/
|
|
44
|
+
export interface BuildWorkspaceRuleContextArgs {
|
|
45
|
+
readonly platform: WorkspaceAccessorPlatform;
|
|
46
|
+
readonly workspaceRoot: string;
|
|
47
|
+
readonly index: WorkspaceIndex;
|
|
48
|
+
readonly scope: "project" | "user";
|
|
49
|
+
/**
|
|
50
|
+
* Optional `displayRoot` override. Defaults to `""` (accessor-relative
|
|
51
|
+
* paths render under the workspace root).
|
|
52
|
+
*/
|
|
53
|
+
readonly displayRoot?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Construct a `WorkspaceRuleContext` scoped to project or user.
|
|
57
|
+
*
|
|
58
|
+
* @experimental This API is unstable and may change without notice.
|
|
59
|
+
*/
|
|
60
|
+
export declare const buildWorkspaceRuleContext: (args: BuildWorkspaceRuleContextArgs) => WorkspaceRuleContext;
|
|
61
|
+
/**
|
|
62
|
+
* Compute the `displayRoot` for a registry-installed native skill.
|
|
63
|
+
*
|
|
64
|
+
* @experimental This API is unstable and may change without notice.
|
|
65
|
+
*/
|
|
66
|
+
export declare const registryNativeSkillDisplayRoot: (owner: string, name: string) => string;
|
|
67
|
+
/**
|
|
68
|
+
* Compute the `displayRoot` for an external (non-native) skill.
|
|
69
|
+
*
|
|
70
|
+
* @experimental This API is unstable and may change without notice.
|
|
71
|
+
*/
|
|
72
|
+
export declare const externalSkillDisplayRoot: (name: string) => string;
|
|
73
|
+
/**
|
|
74
|
+
* Compute the `displayRoot` for a registry-installed pack.
|
|
75
|
+
*
|
|
76
|
+
* **No `src/` segment** — matches the on-disk layout at
|
|
77
|
+
* `axm/packages/core/src/unstable/packs/paths.ts#computeExtensionPackPaths`
|
|
78
|
+
* (Phase 3b finding).
|
|
79
|
+
*
|
|
80
|
+
* @experimental This API is unstable and may change without notice.
|
|
81
|
+
*/
|
|
82
|
+
export declare const registryPackDisplayRoot: (owner: string, name: string) => string;
|
|
83
|
+
/**
|
|
84
|
+
* Options for building an `InstalledSkillInfo` for a registry-installed
|
|
85
|
+
* native skill. `owner` and `name` pin the on-disk layout.
|
|
86
|
+
*/
|
|
87
|
+
export interface BuildInstalledSkillInfoNativeArgs {
|
|
88
|
+
readonly platform: {
|
|
89
|
+
readonly fs: FileSystem.FileSystem;
|
|
90
|
+
readonly path: Path.Path;
|
|
91
|
+
};
|
|
92
|
+
readonly workspaceRoot: string;
|
|
93
|
+
readonly owner: string;
|
|
94
|
+
readonly name: string;
|
|
95
|
+
readonly skillJson: unknown;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Build an `InstalledSkillInfo` rooted at `.axm/extensions/<owner>/skills/<name>/src/`.
|
|
99
|
+
*
|
|
100
|
+
* @experimental This API is unstable and may change without notice.
|
|
101
|
+
*/
|
|
102
|
+
export declare const buildNativeInstalledSkillInfo: (args: BuildInstalledSkillInfoNativeArgs) => InstalledSkillInfo;
|
|
103
|
+
/**
|
|
104
|
+
* Options for building an `InstalledSkillInfo` for an external (non-native) skill.
|
|
105
|
+
*/
|
|
106
|
+
export interface BuildInstalledSkillInfoExternalArgs {
|
|
107
|
+
readonly platform: {
|
|
108
|
+
readonly fs: FileSystem.FileSystem;
|
|
109
|
+
readonly path: Path.Path;
|
|
110
|
+
};
|
|
111
|
+
readonly workspaceRoot: string;
|
|
112
|
+
readonly name: string;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Build an `InstalledSkillInfo` rooted at `.axm/extensions/external/skills/<name>/`.
|
|
116
|
+
*
|
|
117
|
+
* @experimental This API is unstable and may change without notice.
|
|
118
|
+
*/
|
|
119
|
+
export declare const buildExternalInstalledSkillInfo: (args: BuildInstalledSkillInfoExternalArgs) => InstalledSkillInfo;
|
|
120
|
+
/**
|
|
121
|
+
* Options for building an `InstalledPackInfo` for a registry-installed pack.
|
|
122
|
+
*/
|
|
123
|
+
export interface BuildInstalledPackInfoArgs {
|
|
124
|
+
readonly platform: {
|
|
125
|
+
readonly fs: FileSystem.FileSystem;
|
|
126
|
+
readonly path: Path.Path;
|
|
127
|
+
};
|
|
128
|
+
readonly workspaceRoot: string;
|
|
129
|
+
readonly owner: string;
|
|
130
|
+
readonly name: string;
|
|
131
|
+
readonly packJson: unknown;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Build an `InstalledPackInfo` rooted at `.axm/extensions/<owner>/packs/<name>/`.
|
|
135
|
+
*
|
|
136
|
+
* **No `src/` segment** — matches the on-disk pack layout.
|
|
137
|
+
*
|
|
138
|
+
* @experimental This API is unstable and may change without notice.
|
|
139
|
+
*/
|
|
140
|
+
export declare const buildInstalledPackInfo: (args: BuildInstalledPackInfoArgs) => InstalledPackInfo;
|
|
141
|
+
//# sourceMappingURL=contexts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contexts.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace-accessor/contexts.ts"],"names":[],"mappings":"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"}
|