@agentxm/client-core 0.1.6 → 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/agents/coding-agent.d.ts +1 -1
- package/dist/src/unstable/agents/coding-agent.d.ts.map +1 -1
- package/dist/src/unstable/agents/coding-agent.js +1 -1
- package/dist/src/unstable/agents/coding-agent.js.map +1 -1
- package/dist/src/unstable/auth/auth-client.d.ts +1 -1
- package/dist/src/unstable/auth/auth-client.d.ts.map +1 -1
- package/dist/src/unstable/auth/auth-client.js +1 -1
- package/dist/src/unstable/auth/auth-client.js.map +1 -1
- package/dist/src/unstable/auth/credential-store.d.ts +1 -1
- package/dist/src/unstable/auth/credential-store.d.ts.map +1 -1
- package/dist/src/unstable/auth/credential-store.js +1 -1
- package/dist/src/unstable/auth/credential-store.js.map +1 -1
- package/dist/src/unstable/auth/device-login.d.ts +1 -1
- package/dist/src/unstable/auth/device-login.d.ts.map +1 -1
- package/dist/src/unstable/auth/device-login.js +1 -1
- package/dist/src/unstable/auth/device-login.js.map +1 -1
- package/dist/src/unstable/auth/guard-interaction.d.ts +1 -1
- package/dist/src/unstable/auth/guard-interaction.d.ts.map +1 -1
- package/dist/src/unstable/auth/guard-interaction.js +1 -1
- package/dist/src/unstable/auth/guard-interaction.js.map +1 -1
- package/dist/src/unstable/auth/login-interaction.d.ts +1 -1
- package/dist/src/unstable/auth/login-interaction.d.ts.map +1 -1
- package/dist/src/unstable/auth/login-interaction.js +1 -1
- package/dist/src/unstable/auth/login-interaction.js.map +1 -1
- package/dist/src/unstable/auth/registry-url.d.ts +1 -1
- package/dist/src/unstable/auth/registry-url.d.ts.map +1 -1
- package/dist/src/unstable/auth/registry-url.js +1 -1
- package/dist/src/unstable/auth/registry-url.js.map +1 -1
- package/dist/src/unstable/auth/schema.d.ts +3 -3
- package/dist/src/unstable/cli-flags/verbosity.d.ts +1 -1
- package/dist/src/unstable/cli-flags/verbosity.d.ts.map +1 -1
- package/dist/src/unstable/cli-flags/verbosity.js +1 -1
- package/dist/src/unstable/cli-flags/verbosity.js.map +1 -1
- package/dist/src/unstable/cli-renderer/cli-renderer.d.ts +1 -1
- package/dist/src/unstable/cli-renderer/cli-renderer.d.ts.map +1 -1
- package/dist/src/unstable/cli-renderer/cli-renderer.js +1 -1
- package/dist/src/unstable/cli-renderer/cli-renderer.js.map +1 -1
- package/dist/src/unstable/cli-runtime/command-argv.d.ts +1 -1
- package/dist/src/unstable/cli-runtime/command-argv.d.ts.map +1 -1
- package/dist/src/unstable/cli-runtime/command-argv.js +1 -1
- package/dist/src/unstable/cli-runtime/command-argv.js.map +1 -1
- package/dist/src/unstable/cli-runtime/graceful-shutdown.js +1 -1
- package/dist/src/unstable/cli-runtime/graceful-shutdown.js.map +1 -1
- package/dist/src/unstable/cli-runtime/telemetry.d.ts +1 -1
- package/dist/src/unstable/cli-runtime/telemetry.d.ts.map +1 -1
- package/dist/src/unstable/cli-runtime/telemetry.js +1 -1
- package/dist/src/unstable/cli-runtime/telemetry.js.map +1 -1
- package/dist/src/unstable/commands/manager.d.ts +1 -1
- package/dist/src/unstable/commands/manager.d.ts.map +1 -1
- package/dist/src/unstable/commands/manager.js +1 -1
- package/dist/src/unstable/commands/manager.js.map +1 -1
- 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/date-time.d.ts +2 -2
- package/dist/src/unstable/date-time.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/install-meta/install-meta.d.ts +1 -1
- package/dist/src/unstable/install-meta/install-meta.d.ts.map +1 -1
- package/dist/src/unstable/install-meta/install-meta.js +1 -1
- package/dist/src/unstable/install-meta/install-meta.js.map +1 -1
- package/dist/src/unstable/install-method/install-method.d.ts +1 -1
- package/dist/src/unstable/install-method/install-method.d.ts.map +1 -1
- package/dist/src/unstable/install-method/install-method.js +1 -1
- package/dist/src/unstable/install-method/install-method.js.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/lockfile/schema.d.ts +404 -404
- package/dist/src/unstable/mcp-servers/manager.d.ts +1 -1
- package/dist/src/unstable/mcp-servers/manager.d.ts.map +1 -1
- package/dist/src/unstable/mcp-servers/manager.js +1 -1
- package/dist/src/unstable/mcp-servers/manager.js.map +1 -1
- 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/manager.d.ts +1 -1
- package/dist/src/unstable/packs/manager.d.ts.map +1 -1
- package/dist/src/unstable/packs/manager.js +1 -1
- package/dist/src/unstable/packs/manager.js.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/install.js +41 -0
- package/dist/src/unstable/packs/operations/install.js.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/publish.js +1 -0
- package/dist/src/unstable/packs/operations/publish.js.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/registry/__generated__/registry-client.d.ts +675 -518
- package/dist/src/unstable/registry/__generated__/registry-client.d.ts.map +1 -1
- package/dist/src/unstable/registry/__generated__/registry-client.js +546 -396
- package/dist/src/unstable/registry/__generated__/registry-client.js.map +1 -1
- package/dist/src/unstable/registry/remote-client.d.ts.map +1 -1
- package/dist/src/unstable/registry/remote-client.js +123 -18
- package/dist/src/unstable/registry/remote-client.js.map +1 -1
- package/dist/src/unstable/registry/schema.d.ts +2 -2
- 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/manager.d.ts +1 -1
- package/dist/src/unstable/skills/manager.d.ts.map +1 -1
- package/dist/src/unstable/skills/manager.js +2 -2
- package/dist/src/unstable/skills/manager.js.map +1 -1
- package/dist/src/unstable/skills/materialization.js +1 -1
- package/dist/src/unstable/skills/materialization.js.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/install.js +1 -1
- package/dist/src/unstable/skills/operations/install.js.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/skills/operations/uninstall.js +1 -1
- package/dist/src/unstable/skills/operations/uninstall.js.map +1 -1
- package/dist/src/unstable/source-resolution/service.d.ts +1 -1
- package/dist/src/unstable/source-resolution/service.d.ts.map +1 -1
- package/dist/src/unstable/source-resolution/service.js +1 -1
- package/dist/src/unstable/source-resolution/service.js.map +1 -1
- package/dist/src/unstable/sources/types.d.ts +29 -29
- package/dist/src/unstable/sources/types.d.ts.map +1 -1
- package/dist/src/unstable/subagents/manager.d.ts +1 -1
- package/dist/src/unstable/subagents/manager.d.ts.map +1 -1
- package/dist/src/unstable/subagents/manager.js +4 -4
- package/dist/src/unstable/subagents/manager.js.map +1 -1
- package/dist/src/unstable/subagents/manifest-schema.js +2 -2
- package/dist/src/unstable/subagents/manifest-schema.js.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/telemetry/__generated__/telemetry-client.d.ts +20 -12
- package/dist/src/unstable/telemetry/__generated__/telemetry-client.d.ts.map +1 -1
- package/dist/src/unstable/telemetry/__generated__/telemetry-client.js +11 -3
- package/dist/src/unstable/telemetry/__generated__/telemetry-client.js.map +1 -1
- package/dist/src/unstable/telemetry/client.d.ts +1 -1
- package/dist/src/unstable/telemetry/client.d.ts.map +1 -1
- package/dist/src/unstable/telemetry/client.js +1 -1
- package/dist/src/unstable/telemetry/client.js.map +1 -1
- package/dist/src/unstable/update-check/update-check.d.ts +1 -1
- package/dist/src/unstable/update-check/update-check.d.ts.map +1 -1
- package/dist/src/unstable/update-check/update-check.js +1 -1
- package/dist/src/unstable/update-check/update-check.js.map +1 -1
- package/dist/src/unstable/utils/fs-helpers.d.ts +7 -6
- package/dist/src/unstable/utils/fs-helpers.d.ts.map +1 -1
- package/dist/src/unstable/utils/fs-helpers.js +9 -9
- package/dist/src/unstable/utils/fs-helpers.js.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 +1 -1
- package/dist/src/unstable/workspace/display-plan.js.map +1 -1
- package/dist/src/unstable/workspace/index.d.ts +1 -5
- package/dist/src/unstable/workspace/index.d.ts.map +1 -1
- package/dist/src/unstable/workspace/index.js +5 -7
- package/dist/src/unstable/workspace/index.js.map +1 -1
- package/dist/src/unstable/workspace/initialization-interaction.d.ts +1 -1
- package/dist/src/unstable/workspace/initialization-interaction.d.ts.map +1 -1
- package/dist/src/unstable/workspace/initialization-interaction.js +1 -1
- package/dist/src/unstable/workspace/initialization-interaction.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/initialization.js +2 -2
- package/dist/src/unstable/workspace/initialization.js.map +1 -1
- package/dist/src/unstable/workspace/paths.d.ts +4 -21
- package/dist/src/unstable/workspace/paths.d.ts.map +1 -1
- package/dist/src/unstable/workspace/paths.js +19 -8
- 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/resolve-plan-interaction.d.ts +1 -1
- package/dist/src/unstable/workspace/resolve-plan-interaction.d.ts.map +1 -1
- package/dist/src/unstable/workspace/resolve-plan-interaction.js +1 -1
- package/dist/src/unstable/workspace/resolve-plan-interaction.js.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/service-interface.d.ts +3 -1
- package/dist/src/unstable/workspace/service-interface.d.ts.map +1 -1
- package/dist/src/unstable/workspace/service-interface.js +1 -1
- package/dist/src/unstable/workspace/service-interface.js.map +1 -1
- package/dist/src/unstable/workspace/service.js +1 -1
- package/dist/src/unstable/workspace/service.js.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/dist/src/unstable/workspace/version-currency/check-currency.d.ts +41 -0
- package/dist/src/unstable/workspace/version-currency/check-currency.d.ts.map +1 -0
- package/dist/src/unstable/workspace/version-currency/check-currency.js +50 -0
- package/dist/src/unstable/workspace/version-currency/check-currency.js.map +1 -0
- package/dist/src/unstable/workspace/version-currency/collectors.d.ts +55 -0
- package/dist/src/unstable/workspace/version-currency/collectors.d.ts.map +1 -0
- package/dist/src/unstable/workspace/version-currency/collectors.js +127 -0
- package/dist/src/unstable/workspace/version-currency/collectors.js.map +1 -0
- package/dist/src/unstable/workspace/version-currency/index.d.ts +11 -0
- package/dist/src/unstable/workspace/version-currency/index.d.ts.map +1 -0
- package/dist/src/unstable/workspace/version-currency/index.js +11 -0
- package/dist/src/unstable/workspace/version-currency/index.js.map +1 -0
- package/dist/src/unstable/workspace/version-currency/test-stubs.d.ts +5 -0
- package/dist/src/unstable/workspace/version-currency/test-stubs.d.ts.map +1 -0
- package/dist/src/unstable/workspace/version-currency/test-stubs.js +31 -0
- package/dist/src/unstable/workspace/version-currency/test-stubs.js.map +1 -0
- package/package.json +14 -6
- 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-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 -65
- 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 -125
- package/dist/src/unstable/workspace/doctor/types.d.ts.map +0 -1
- package/dist/src/unstable/workspace/doctor/types.js +0 -58
- 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,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `workspace/skills-artifacts-correct` — each enabled skill has artifacts in
|
|
3
|
+
* every declared agent's skill target; disabled skills have none.
|
|
4
|
+
*
|
|
5
|
+
* Three symptoms of the same invariant (§10.workspace.Skills note):
|
|
6
|
+
*
|
|
7
|
+
* - **Enabled-but-not-linked** — a skill declared `enabled: true` is missing
|
|
8
|
+
* its per-agent artifact for at least one declared agent. Autofix:
|
|
9
|
+
* `enable-skill` (the handler recreates symlinks across configured agents).
|
|
10
|
+
* - **Disabled-but-still-present** — a skill declared `enabled: false` still
|
|
11
|
+
* has a per-agent artifact for at least one declared agent. Autofix:
|
|
12
|
+
* `disable-skill`.
|
|
13
|
+
* - **Cross-agent-inconsistent** — an enabled skill has artifacts in some
|
|
14
|
+
* declared agents but not others. Autofix: `enable-skill`.
|
|
15
|
+
*
|
|
16
|
+
* One finding per affected skill (per-entity cascade); the first arm that
|
|
17
|
+
* fires for a skill emits its finding and the other arms for the same skill
|
|
18
|
+
* do not.
|
|
19
|
+
*
|
|
20
|
+
* @experimental This API is unstable and may change without notice.
|
|
21
|
+
* @packageDocumentation
|
|
22
|
+
*/
|
|
23
|
+
import * as Effect from "effect/Effect";
|
|
24
|
+
import * as Option from "effect/Option";
|
|
25
|
+
import * as Result from "effect/Result";
|
|
26
|
+
import * as Schema from "effect/Schema";
|
|
27
|
+
import { SettingsSchema } from "../../../settings/schema.js";
|
|
28
|
+
import { disableSkillOp, enableSkillOp } from "./helpers/install-ops.js";
|
|
29
|
+
import { EMPTY_LINT_FINDINGS, EMPTY_OPERATIONS } from "./helpers/empty.js";
|
|
30
|
+
const RULE_ID = "workspace/skills-artifacts-correct";
|
|
31
|
+
const SETTINGS_REL = ".axm/settings.json";
|
|
32
|
+
const SUG_ENABLE_PREFIX = "Re-enable skill ";
|
|
33
|
+
const SUG_DISABLE_PREFIX = "Disable skill ";
|
|
34
|
+
const decodeSettings = (input) => {
|
|
35
|
+
const result = Schema.decodeUnknownResult(SettingsSchema)(input, {
|
|
36
|
+
onExcessProperty: "ignore",
|
|
37
|
+
errors: "all",
|
|
38
|
+
});
|
|
39
|
+
return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
|
|
40
|
+
};
|
|
41
|
+
const artifactPath = (agent, skillName) => `${agent.skills.dir}/${skillName}`;
|
|
42
|
+
const enableFinding = (name, reason) => ({
|
|
43
|
+
kind: "autofixable",
|
|
44
|
+
ruleId: RULE_ID,
|
|
45
|
+
severity: "error",
|
|
46
|
+
message: `Skill '${name}' is enabled but missing per-agent artifacts (${reason}).`,
|
|
47
|
+
suggestions: [`${SUG_ENABLE_PREFIX}'${name}' to recreate agent artifacts.`],
|
|
48
|
+
location: { file: SETTINGS_REL },
|
|
49
|
+
});
|
|
50
|
+
const disableFinding = (name, reason) => ({
|
|
51
|
+
kind: "autofixable",
|
|
52
|
+
ruleId: RULE_ID,
|
|
53
|
+
severity: "error",
|
|
54
|
+
message: `Skill '${name}' is disabled but still has per-agent artifacts (${reason}).`,
|
|
55
|
+
suggestions: [`${SUG_DISABLE_PREFIX}'${name}' to clean up stale artifacts.`],
|
|
56
|
+
location: { file: SETTINGS_REL },
|
|
57
|
+
});
|
|
58
|
+
const inconsistentFinding = (name, details) => ({
|
|
59
|
+
kind: "autofixable",
|
|
60
|
+
ruleId: RULE_ID,
|
|
61
|
+
severity: "error",
|
|
62
|
+
message: `Skill '${name}' has inconsistent artifacts across declared agents (${details}).`,
|
|
63
|
+
suggestions: [`${SUG_ENABLE_PREFIX}'${name}' to normalize across declared agents.`],
|
|
64
|
+
location: { file: SETTINGS_REL },
|
|
65
|
+
});
|
|
66
|
+
const NAME_FROM_SUGGESTION_RE = /'([^']+)'/;
|
|
67
|
+
const extractSkillName = (suggestion) => NAME_FROM_SUGGESTION_RE.exec(suggestion)?.[1];
|
|
68
|
+
export const skillsArtifactsCorrectRule = {
|
|
69
|
+
id: RULE_ID,
|
|
70
|
+
description: "Enabled skills have artifacts in every declared agent; disabled skills have none.",
|
|
71
|
+
kind: "autofixing",
|
|
72
|
+
severity: "error",
|
|
73
|
+
check: (context) => Effect.gen(function* () {
|
|
74
|
+
const settingsResult = yield* Effect.result(context.workspace.settings);
|
|
75
|
+
if (Result.isFailure(settingsResult)) {
|
|
76
|
+
return EMPTY_LINT_FINDINGS;
|
|
77
|
+
}
|
|
78
|
+
const settings = decodeSettings(settingsResult.success);
|
|
79
|
+
if (Option.isNone(settings)) {
|
|
80
|
+
return EMPTY_LINT_FINDINGS;
|
|
81
|
+
}
|
|
82
|
+
const declaredAgentIds = new Set(settings.value.agents ?? []);
|
|
83
|
+
if (declaredAgentIds.size === 0) {
|
|
84
|
+
return EMPTY_LINT_FINDINGS;
|
|
85
|
+
}
|
|
86
|
+
const knownAgents = yield* context.workspace.knownAgents;
|
|
87
|
+
const declaredAgents = knownAgents.filter((a) => declaredAgentIds.has(a.id));
|
|
88
|
+
const declaredSkills = settings.value.skills ?? {};
|
|
89
|
+
const findings = [];
|
|
90
|
+
for (const [name, entry] of Object.entries(declaredSkills)) {
|
|
91
|
+
const perAgentExists = yield* Effect.all(declaredAgents.map((agent) => context.workspace
|
|
92
|
+
.exists(artifactPath(agent, name))
|
|
93
|
+
.pipe(Effect.map((exists) => ({ agentId: agent.id, exists })))), { concurrency: "unbounded" });
|
|
94
|
+
const missingAgents = perAgentExists.filter((p) => !p.exists).map((p) => p.agentId);
|
|
95
|
+
const presentAgents = perAgentExists.filter((p) => p.exists).map((p) => p.agentId);
|
|
96
|
+
if (entry.enabled) {
|
|
97
|
+
if (missingAgents.length === 0) {
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (presentAgents.length === 0) {
|
|
101
|
+
findings.push(enableFinding(name, `missing in: ${missingAgents.join(", ")}`));
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
findings.push(inconsistentFinding(name, `present in ${presentAgents.join(", ")}, missing in ${missingAgents.join(", ")}`));
|
|
105
|
+
}
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
// Disabled skill: flag if any artifact is still present.
|
|
109
|
+
if (presentAgents.length > 0) {
|
|
110
|
+
findings.push(disableFinding(name, `present in: ${presentAgents.join(", ")}`));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return findings;
|
|
114
|
+
}),
|
|
115
|
+
fix: (_context, finding) => Effect.sync(() => {
|
|
116
|
+
const name = extractSkillName(finding.suggestions[0]);
|
|
117
|
+
if (name === undefined) {
|
|
118
|
+
return EMPTY_OPERATIONS;
|
|
119
|
+
}
|
|
120
|
+
if (finding.suggestions[0].startsWith(SUG_ENABLE_PREFIX)) {
|
|
121
|
+
return [enableSkillOp({ name })];
|
|
122
|
+
}
|
|
123
|
+
if (finding.suggestions[0].startsWith(SUG_DISABLE_PREFIX)) {
|
|
124
|
+
return [disableSkillOp({ name })];
|
|
125
|
+
}
|
|
126
|
+
return EMPTY_OPERATIONS;
|
|
127
|
+
}),
|
|
128
|
+
};
|
|
129
|
+
//# sourceMappingURL=skills-artifacts-correct.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-artifacts-correct.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/skills-artifacts-correct.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `workspace/skills-declarations-valid` — declared skills name a resolvable,
|
|
3
|
+
* owner-qualified, unique source.
|
|
4
|
+
*
|
|
5
|
+
* Cascade per `docs/design/lint-engine.md §10.workspace.Skills` (reports the
|
|
6
|
+
* first failing arm per affected entity):
|
|
7
|
+
*
|
|
8
|
+
* 1. Source resolvability — the source string is shaped like a ref we can
|
|
9
|
+
* route (owner-qualified FQN like `@owner/skills/name`, a known source
|
|
10
|
+
* host, `file://` URL, local path). Bare names (`just-a-name`) fail.
|
|
11
|
+
* 2. Owner qualification — registry-shaped sources carry an `@owner`
|
|
12
|
+
* prefix; entries whose source looks registry-ish but omits the owner
|
|
13
|
+
* fail.
|
|
14
|
+
* 3. Duplicate FQNs — when two settings entries normalize to the same
|
|
15
|
+
* owner/type/name FQN, both entries emit a finding.
|
|
16
|
+
*
|
|
17
|
+
* One finding per affected entity (per-entity cascade). Advisory — fixing
|
|
18
|
+
* requires a settings edit.
|
|
19
|
+
*
|
|
20
|
+
* @experimental This API is unstable and may change without notice.
|
|
21
|
+
* @packageDocumentation
|
|
22
|
+
*/
|
|
23
|
+
import type { WorkspaceRuleContext } from "../../context.js";
|
|
24
|
+
import type { AdvisoryRule } from "../../rule.js";
|
|
25
|
+
export declare const skillsDeclarationsValidRule: AdvisoryRule<WorkspaceRuleContext>;
|
|
26
|
+
//# sourceMappingURL=skills-declarations-valid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-declarations-valid.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/skills-declarations-valid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAmB,YAAY,EAAE,MAAM,eAAe,CAAC;AA+FnE,eAAO,MAAM,2BAA2B,EAAE,YAAY,CAAC,oBAAoB,CAuD1E,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `workspace/skills-declarations-valid` — declared skills name a resolvable,
|
|
3
|
+
* owner-qualified, unique source.
|
|
4
|
+
*
|
|
5
|
+
* Cascade per `docs/design/lint-engine.md §10.workspace.Skills` (reports the
|
|
6
|
+
* first failing arm per affected entity):
|
|
7
|
+
*
|
|
8
|
+
* 1. Source resolvability — the source string is shaped like a ref we can
|
|
9
|
+
* route (owner-qualified FQN like `@owner/skills/name`, a known source
|
|
10
|
+
* host, `file://` URL, local path). Bare names (`just-a-name`) fail.
|
|
11
|
+
* 2. Owner qualification — registry-shaped sources carry an `@owner`
|
|
12
|
+
* prefix; entries whose source looks registry-ish but omits the owner
|
|
13
|
+
* fail.
|
|
14
|
+
* 3. Duplicate FQNs — when two settings entries normalize to the same
|
|
15
|
+
* owner/type/name FQN, both entries emit a finding.
|
|
16
|
+
*
|
|
17
|
+
* One finding per affected entity (per-entity cascade). Advisory — fixing
|
|
18
|
+
* requires a settings edit.
|
|
19
|
+
*
|
|
20
|
+
* @experimental This API is unstable and may change without notice.
|
|
21
|
+
* @packageDocumentation
|
|
22
|
+
*/
|
|
23
|
+
import * as Effect from "effect/Effect";
|
|
24
|
+
import * as Option from "effect/Option";
|
|
25
|
+
import * as Result from "effect/Result";
|
|
26
|
+
import * as Schema from "effect/Schema";
|
|
27
|
+
import { SettingsSchema } from "../../../settings/schema.js";
|
|
28
|
+
import { parseRegistrySource } from "./helpers/registry-source.js";
|
|
29
|
+
import { EMPTY_ADVISORY_FINDINGS } from "./helpers/empty.js";
|
|
30
|
+
const RULE_ID = "workspace/skills-declarations-valid";
|
|
31
|
+
const SETTINGS_REL = ".axm/settings.json";
|
|
32
|
+
const decodeSettings = (input) => {
|
|
33
|
+
const result = Schema.decodeUnknownResult(SettingsSchema)(input, {
|
|
34
|
+
onExcessProperty: "ignore",
|
|
35
|
+
errors: "all",
|
|
36
|
+
});
|
|
37
|
+
return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
|
|
38
|
+
};
|
|
39
|
+
// Pattern definitions — follow the existing doctor check's logic (see
|
|
40
|
+
// `workspace/doctor/checks/extensions-installed.ts`).
|
|
41
|
+
const BARE_NAME_RE = /^[a-z0-9][a-z0-9-]*(?:@[^\s/:]+)?$/i;
|
|
42
|
+
const NON_REGISTRY_MARKERS = [
|
|
43
|
+
/^\.\//,
|
|
44
|
+
/^\.\.\//,
|
|
45
|
+
/^\//,
|
|
46
|
+
/^file:\/\//,
|
|
47
|
+
/:\/\//,
|
|
48
|
+
/^[a-z][a-z0-9+.-]*:/i,
|
|
49
|
+
];
|
|
50
|
+
const isClearlyNonRegistrySource = (source) => NON_REGISTRY_MARKERS.some((pattern) => pattern.test(source));
|
|
51
|
+
const categorizeEntry = (name, source) => {
|
|
52
|
+
// Delegate to the canonical parser — it handles `@owner/type/name@version`.
|
|
53
|
+
const parsed = parseRegistrySource(source);
|
|
54
|
+
if (parsed !== undefined) {
|
|
55
|
+
return {
|
|
56
|
+
name,
|
|
57
|
+
source,
|
|
58
|
+
kind: "registry",
|
|
59
|
+
registryFqn: `${parsed.owner}/${parsed.type}/${parsed.name}`,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (isClearlyNonRegistrySource(source)) {
|
|
63
|
+
return { name, source, kind: "non-registry" };
|
|
64
|
+
}
|
|
65
|
+
if (BARE_NAME_RE.test(source)) {
|
|
66
|
+
return { name, source, kind: "bare" };
|
|
67
|
+
}
|
|
68
|
+
return { name, source, kind: "registry-no-owner" };
|
|
69
|
+
};
|
|
70
|
+
const findingForBareName = (entry) => ({
|
|
71
|
+
kind: "advisory",
|
|
72
|
+
ruleId: RULE_ID,
|
|
73
|
+
severity: "error",
|
|
74
|
+
message: `Skill '${entry.name}' has a bare-name source '${entry.source}'; declare a host or use @owner/skills/name.`,
|
|
75
|
+
suggestions: [
|
|
76
|
+
`Prefix the source with @owner/ to resolve via the default registry.`,
|
|
77
|
+
`Declare the source host explicitly in settings.sources[].`,
|
|
78
|
+
],
|
|
79
|
+
location: { file: SETTINGS_REL },
|
|
80
|
+
});
|
|
81
|
+
const findingForMissingOwner = (entry) => ({
|
|
82
|
+
kind: "advisory",
|
|
83
|
+
ruleId: RULE_ID,
|
|
84
|
+
severity: "error",
|
|
85
|
+
message: `Skill '${entry.name}' has a registry-shaped source '${entry.source}' missing the @owner prefix.`,
|
|
86
|
+
suggestions: [`Rewrite the source as @owner/skills/${entry.name}.`],
|
|
87
|
+
location: { file: SETTINGS_REL },
|
|
88
|
+
});
|
|
89
|
+
const findingForDuplicate = (entry, duplicates) => ({
|
|
90
|
+
kind: "advisory",
|
|
91
|
+
ruleId: RULE_ID,
|
|
92
|
+
severity: "error",
|
|
93
|
+
message: `Skill '${entry.name}' resolves to a registry FQN declared more than once: ${duplicates.join(", ")}.`,
|
|
94
|
+
suggestions: [
|
|
95
|
+
`Remove duplicate entries and keep one per FQN.`,
|
|
96
|
+
`Rename conflicting entries to distinct keys.`,
|
|
97
|
+
],
|
|
98
|
+
location: { file: SETTINGS_REL },
|
|
99
|
+
});
|
|
100
|
+
export const skillsDeclarationsValidRule = {
|
|
101
|
+
id: RULE_ID,
|
|
102
|
+
description: "Declared skills name a resolvable, owner-qualified, unique source.",
|
|
103
|
+
kind: "advisory",
|
|
104
|
+
severity: "error",
|
|
105
|
+
check: (context) => Effect.gen(function* () {
|
|
106
|
+
const settingsResult = yield* Effect.result(context.workspace.settings);
|
|
107
|
+
if (Result.isFailure(settingsResult)) {
|
|
108
|
+
return EMPTY_ADVISORY_FINDINGS;
|
|
109
|
+
}
|
|
110
|
+
const decoded = decodeSettings(settingsResult.success);
|
|
111
|
+
if (Option.isNone(decoded)) {
|
|
112
|
+
return EMPTY_ADVISORY_FINDINGS;
|
|
113
|
+
}
|
|
114
|
+
const skills = decoded.value.skills ?? {};
|
|
115
|
+
const entries = Object.entries(skills).map(([name, entry]) => categorizeEntry(name, entry.source));
|
|
116
|
+
// Group by registry FQN for duplicate detection.
|
|
117
|
+
const byFqn = new Map();
|
|
118
|
+
for (const entry of entries) {
|
|
119
|
+
if (entry.kind !== "registry" || entry.registryFqn === undefined) {
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
const group = byFqn.get(entry.registryFqn) ?? [];
|
|
123
|
+
group.push(entry);
|
|
124
|
+
byFqn.set(entry.registryFqn, group);
|
|
125
|
+
}
|
|
126
|
+
const findings = [];
|
|
127
|
+
for (const entry of entries) {
|
|
128
|
+
if (entry.kind === "bare") {
|
|
129
|
+
findings.push(findingForBareName(entry));
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
if (entry.kind === "registry-no-owner") {
|
|
133
|
+
findings.push(findingForMissingOwner(entry));
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (entry.kind === "non-registry") {
|
|
137
|
+
// Non-registry sources are allowed for skills (local, git-hosted)
|
|
138
|
+
// and don't fire this rule. Move on.
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (entry.kind === "registry" && entry.registryFqn !== undefined) {
|
|
142
|
+
const group = byFqn.get(entry.registryFqn) ?? [];
|
|
143
|
+
if (group.length > 1) {
|
|
144
|
+
findings.push(findingForDuplicate(entry, group.map((g) => g.name).sort()));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return findings;
|
|
149
|
+
}),
|
|
150
|
+
};
|
|
151
|
+
//# sourceMappingURL=skills-declarations-valid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-declarations-valid.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/skills-declarations-valid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
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 type { WorkspaceRuleContext } from "../../context.js";
|
|
27
|
+
import type { AutofixingRule } from "../../rule.js";
|
|
28
|
+
export declare const skillsIntegrityValidRule: AutofixingRule<WorkspaceRuleContext>;
|
|
29
|
+
//# sourceMappingURL=skills-integrity-valid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-integrity-valid.d.ts","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/skills-integrity-valid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAMH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAsB,cAAc,EAAe,MAAM,eAAe,CAAC;AAyErF,eAAO,MAAM,wBAAwB,EAAE,cAAc,CAAC,oBAAoB,CA+DzE,CAAC"}
|
|
@@ -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"}
|