@agentxm/client-core 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/dist/src/unstable/agents/detection.d.ts.map +1 -1
- package/dist/src/unstable/agents/detection.js +2 -1
- package/dist/src/unstable/agents/detection.js.map +1 -1
- package/dist/src/unstable/cli-renderer/ansi-chrome.d.ts.map +1 -1
- package/dist/src/unstable/cli-renderer/ansi-chrome.js +4 -1
- package/dist/src/unstable/cli-renderer/ansi-chrome.js.map +1 -1
- package/dist/src/unstable/extensions/index.d.ts +1 -0
- package/dist/src/unstable/extensions/index.d.ts.map +1 -1
- package/dist/src/unstable/extensions/index.js +1 -0
- package/dist/src/unstable/extensions/index.js.map +1 -1
- package/dist/src/unstable/extensions/universal-skills-dir.d.ts +54 -0
- package/dist/src/unstable/extensions/universal-skills-dir.d.ts.map +1 -0
- package/dist/src/unstable/extensions/universal-skills-dir.js +68 -0
- package/dist/src/unstable/extensions/universal-skills-dir.js.map +1 -0
- package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.js +1 -1
- package/dist/src/unstable/lint/catalog/pack/manifest-keys-recognized.js.map +1 -1
- package/dist/src/unstable/lint/catalog/pack/manifest-present.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/pack/manifest-present.js +2 -5
- package/dist/src/unstable/lint/catalog/pack/manifest-present.js.map +1 -1
- package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.js +1 -1
- package/dist/src/unstable/lint/catalog/pack/manifest-schema-valid.js.map +1 -1
- package/dist/src/unstable/lint/catalog/shared/schema-rule.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/shared/schema-rule.js +12 -5
- package/dist/src/unstable/lint/catalog/shared/schema-rule.js.map +1 -1
- package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.js +8 -11
- package/dist/src/unstable/lint/catalog/skill/frontmatter-parseable.js.map +1 -1
- package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.js +1 -1
- package/dist/src/unstable/lint/catalog/skill/manifest-keys-recognized.js.map +1 -1
- package/dist/src/unstable/lint/catalog/skill/manifest-present.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/skill/manifest-present.js +2 -5
- package/dist/src/unstable/lint/catalog/skill/manifest-present.js.map +1 -1
- package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.js +1 -1
- package/dist/src/unstable/lint/catalog/skill/manifest-schema-valid.js.map +1 -1
- package/dist/src/unstable/lint/catalog/skill/skill-md-present.js +2 -3
- package/dist/src/unstable/lint/catalog/skill/skill-md-present.js.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.js +5 -15
- package/dist/src/unstable/lint/catalog/workspace/agents-detected-declared.js.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/agents-recognized.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/agents-recognized.js +4 -15
- package/dist/src/unstable/lint/catalog/workspace/agents-recognized.js.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/helpers/decode.d.ts +14 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/decode.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/decode.js +28 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/decode.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/finding.d.ts +10 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/finding.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/finding.js +11 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/finding.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/retained-skills.d.ts +24 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/retained-skills.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/retained-skills.js +41 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/retained-skills.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/source-categorize.d.ts +16 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/source-categorize.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/source-categorize.js +37 -0
- package/dist/src/unstable/lint/catalog/workspace/helpers/source-categorize.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/initialized.js +3 -5
- package/dist/src/unstable/lint/catalog/workspace/initialized.js.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.js +8 -21
- package/dist/src/unstable/lint/catalog/workspace/lockfile-valid.js.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.js +12 -49
- package/dist/src/unstable/lint/catalog/workspace/packs-declarations-valid.js.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.js +23 -17
- package/dist/src/unstable/lint/catalog/workspace/packs-dependencies-resolved.js.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.js +24 -29
- package/dist/src/unstable/lint/catalog/workspace/packs-members-retained.js.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.js +3 -6
- package/dist/src/unstable/lint/catalog/workspace/settings-schema-valid.js.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.d.ts +3 -1
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.js +142 -55
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-correct.js.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.d.ts +3 -2
- package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.js +13 -56
- package/dist/src/unstable/lint/catalog/workspace/skills-declarations-valid.js.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.d.ts +3 -2
- package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.js +71 -54
- package/dist/src/unstable/lint/catalog/workspace/skills-integrity-valid.js.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.js +76 -150
- package/dist/src/unstable/lint/catalog/workspace/skills-lockfile-aligned.js.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace/skills-managed.d.ts +15 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-managed.d.ts.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-managed.js +102 -0
- package/dist/src/unstable/lint/catalog/workspace/skills-managed.js.map +1 -0
- package/dist/src/unstable/lint/catalog/workspace-accessor/platform.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace-accessor/platform.js +2 -1
- package/dist/src/unstable/lint/catalog/workspace-accessor/platform.js.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace.d.ts +9 -5
- package/dist/src/unstable/lint/catalog/workspace.d.ts.map +1 -1
- package/dist/src/unstable/lint/catalog/workspace.js +20 -11
- package/dist/src/unstable/lint/catalog/workspace.js.map +1 -1
- package/dist/src/unstable/lint/cli.d.ts +45 -27
- package/dist/src/unstable/lint/cli.d.ts.map +1 -1
- package/dist/src/unstable/lint/cli.js +819 -59
- package/dist/src/unstable/lint/cli.js.map +1 -1
- package/dist/src/unstable/lint/index.d.ts +1 -1
- package/dist/src/unstable/lint/index.d.ts.map +1 -1
- package/dist/src/unstable/lint/index.js +1 -1
- package/dist/src/unstable/lint/index.js.map +1 -1
- package/dist/src/unstable/lint/issues-to-findings.d.ts +5 -5
- package/dist/src/unstable/lint/issues-to-findings.js +78 -15
- package/dist/src/unstable/lint/issues-to-findings.js.map +1 -1
- package/dist/src/unstable/lint/rule.d.ts +0 -8
- package/dist/src/unstable/lint/rule.d.ts.map +1 -1
- package/dist/src/unstable/skills/operations/install.d.ts.map +1 -1
- package/dist/src/unstable/skills/operations/install.js +2 -0
- package/dist/src/unstable/skills/operations/install.js.map +1 -1
- package/dist/src/unstable/workspace/classifier-records.d.ts.map +1 -1
- package/dist/src/unstable/workspace/classifier-records.js +1 -0
- package/dist/src/unstable/workspace/classifier-records.js.map +1 -1
- package/dist/src/unstable/workspace/classifier.d.ts +13 -2
- package/dist/src/unstable/workspace/classifier.d.ts.map +1 -1
- package/dist/src/unstable/workspace/classifier.js +14 -2
- package/dist/src/unstable/workspace/classifier.js.map +1 -1
- package/dist/src/unstable/workspace/service.d.ts.map +1 -1
- package/dist/src/unstable/workspace/service.js +29 -8
- package/dist/src/unstable/workspace/service.js.map +1 -1
- package/dist/src/unstable/workspace/taxonomy-types.d.ts +1 -0
- package/dist/src/unstable/workspace/taxonomy-types.d.ts.map +1 -1
- package/package.json +3 -3
- package/site-content/INSTALL.md +4 -4
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.d.ts +0 -30
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.d.ts.map +0 -1
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.js +0 -232
- package/dist/src/unstable/lint/catalog/workspace/skills-artifacts-clean.js.map +0 -1
|
@@ -1,232 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `workspace/skills-artifacts-clean` — skill artifacts on disk are live,
|
|
3
|
-
* declared, and canonically named.
|
|
4
|
-
*
|
|
5
|
-
* Cascade per `docs/design/lint-engine.md §10.workspace.Skills` (first
|
|
6
|
-
* failing arm per affected entity):
|
|
7
|
-
*
|
|
8
|
-
* - **Dangling** (autofixing) — an artifact exists in a declared agent's
|
|
9
|
-
* skills dir but the canonical source under `.axm/extensions/.../src/`
|
|
10
|
-
* is missing. Autofix: `install-skill` with `force: true`.
|
|
11
|
-
* - **Stale** (advisory) — an artifact exists in a declared agent's skills
|
|
12
|
-
* dir whose name doesn't correspond to any declared enabled skill. No
|
|
13
|
-
* pre-sync Operation applies (the artifact isn't axm-owned after the
|
|
14
|
-
* skill is no longer declared); emit an advisory CLI suggestion.
|
|
15
|
-
* - **Name-mismatch** (advisory) — an artifact exists with a name that
|
|
16
|
-
* doesn't match the sanitized declared skill name (legacy casing,
|
|
17
|
-
* pre-sanitization). Emit an advisory CLI suggestion.
|
|
18
|
-
*
|
|
19
|
-
* Listing per-agent skill targets uses `context.workspace.list(...)`.
|
|
20
|
-
*
|
|
21
|
-
* The rule emits at most one finding per artifact — cascade resolves per
|
|
22
|
-
* filesystem entry.
|
|
23
|
-
*
|
|
24
|
-
* @experimental This API is unstable and may change without notice.
|
|
25
|
-
* @packageDocumentation
|
|
26
|
-
*/
|
|
27
|
-
import * as Effect from "effect/Effect";
|
|
28
|
-
import * as Option from "effect/Option";
|
|
29
|
-
import * as Result from "effect/Result";
|
|
30
|
-
import * as Schema from "effect/Schema";
|
|
31
|
-
import { LockfileSchema } from "../../../lockfile/schema.js";
|
|
32
|
-
import { SettingsSchema } from "../../../settings/schema.js";
|
|
33
|
-
import { installSkillOp } from "./helpers/install-ops.js";
|
|
34
|
-
import { parseRegistrySource } from "./helpers/registry-source.js";
|
|
35
|
-
import { EMPTY_LINT_FINDINGS, EMPTY_OPERATIONS } from "./helpers/empty.js";
|
|
36
|
-
const RULE_ID = "workspace/skills-artifacts-clean";
|
|
37
|
-
const SUG_REINSTALL_PREFIX = "Reinstall skill ";
|
|
38
|
-
const decodeSettings = (input) => {
|
|
39
|
-
const result = Schema.decodeUnknownResult(SettingsSchema)(input, {
|
|
40
|
-
onExcessProperty: "ignore",
|
|
41
|
-
errors: "all",
|
|
42
|
-
});
|
|
43
|
-
return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
|
|
44
|
-
};
|
|
45
|
-
const decodeLockfile = (input) => {
|
|
46
|
-
const result = Schema.decodeUnknownResult(LockfileSchema)(input, {
|
|
47
|
-
onExcessProperty: "ignore",
|
|
48
|
-
errors: "all",
|
|
49
|
-
});
|
|
50
|
-
return Result.isSuccess(result) ? Option.some(result.success) : Option.none();
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Names of skills retained by at least one installed declared pack. These
|
|
54
|
-
* skill artifacts are valid even though the skill isn't in `settings.skills`.
|
|
55
|
-
*/
|
|
56
|
-
const buildRetainedSkillNames = (settings, lockfile) => {
|
|
57
|
-
const declaredPackNames = new Set(Object.keys(settings.packs ?? {}));
|
|
58
|
-
const names = new Set();
|
|
59
|
-
const packLock = lockfile.packs ?? {};
|
|
60
|
-
for (const [packName, packEntry] of Object.entries(packLock)) {
|
|
61
|
-
if (!declaredPackNames.has(packName)) {
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
for (const fqn of Object.keys(packEntry.resolvedSkills)) {
|
|
65
|
-
// FQN is `@owner/skills/<name>`; last segment is the skill name.
|
|
66
|
-
const parts = fqn.split("/");
|
|
67
|
-
const last = parts[parts.length - 1];
|
|
68
|
-
if (last !== undefined) {
|
|
69
|
-
names.add(last);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
// Also add lockfile-level skills with retainedByPack=true so accessor
|
|
74
|
-
// round-trips work even when the pack resolved map misnames them.
|
|
75
|
-
for (const [name, entry] of Object.entries(lockfile.skills)) {
|
|
76
|
-
if (entry.retainedByPack === true) {
|
|
77
|
-
names.add(name);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
return names;
|
|
81
|
-
};
|
|
82
|
-
// Very narrow sanitization: lowercase, replace underscores with hyphens.
|
|
83
|
-
// The authoritative sanitizer lives at axm extensions/utils.ts#sanitizeName;
|
|
84
|
-
// v1 lint checks for exact match and surfaces any divergence as a
|
|
85
|
-
// name-mismatch advisory arm.
|
|
86
|
-
const isCanonicallyNamed = (artifact, declared) => artifact === declared;
|
|
87
|
-
const danglingFinding = (name, agentId) => ({
|
|
88
|
-
kind: "autofixable",
|
|
89
|
-
ruleId: RULE_ID,
|
|
90
|
-
severity: "error",
|
|
91
|
-
message: `Agent '${agentId}' has a dangling artifact for skill '${name}' (canonical source missing).`,
|
|
92
|
-
suggestions: [`${SUG_REINSTALL_PREFIX}'${name}' to re-materialize canonical source.`],
|
|
93
|
-
location: { file: `${agentId}/skills/${name}` },
|
|
94
|
-
});
|
|
95
|
-
const staleFinding = (name, agentId) => ({
|
|
96
|
-
kind: "advisory",
|
|
97
|
-
ruleId: RULE_ID,
|
|
98
|
-
severity: "error",
|
|
99
|
-
message: `Agent '${agentId}' has a stale skill artifact '${name}' not backed by any declaration.`,
|
|
100
|
-
suggestions: [
|
|
101
|
-
`Remove the stale artifact manually if you no longer need skill '${name}'.`,
|
|
102
|
-
`Add '${name}' to settings.skills if it should be declared.`,
|
|
103
|
-
],
|
|
104
|
-
location: { file: `${agentId}/skills/${name}` },
|
|
105
|
-
});
|
|
106
|
-
const nameMismatchFinding = (agentId, artifact, expected) => ({
|
|
107
|
-
kind: "advisory",
|
|
108
|
-
ruleId: RULE_ID,
|
|
109
|
-
severity: "error",
|
|
110
|
-
message: `Agent '${agentId}' has skill artifact '${artifact}' that doesn't match the sanitized name '${expected}'.`,
|
|
111
|
-
suggestions: [
|
|
112
|
-
`Remove '${artifact}' and reinstall to regenerate under the canonical name '${expected}'.`,
|
|
113
|
-
],
|
|
114
|
-
location: { file: `${agentId}/skills/${artifact}` },
|
|
115
|
-
});
|
|
116
|
-
const NAME_FROM_SUGGESTION_RE = /'([^']+)'/;
|
|
117
|
-
const extractSkillName = (suggestion) => NAME_FROM_SUGGESTION_RE.exec(suggestion)?.[1];
|
|
118
|
-
/**
|
|
119
|
-
* Build candidate canonical `SKILL.md` probe paths for `name`, trying the
|
|
120
|
-
* settings-declared registry owner first (if any) and the external layout
|
|
121
|
-
* as a fallback. Non-registry sources fall through to the external probe.
|
|
122
|
-
*/
|
|
123
|
-
const canonicalSrcProbesForName = (name, settings) => {
|
|
124
|
-
const entry = settings.skills?.[name];
|
|
125
|
-
const parsed = entry === undefined ? undefined : parseRegistrySource(entry.source);
|
|
126
|
-
const probes = [];
|
|
127
|
-
if (parsed !== undefined) {
|
|
128
|
-
probes.push(`.axm/extensions/${parsed.owner}/skills/${name}/src/SKILL.md`);
|
|
129
|
-
}
|
|
130
|
-
probes.push(`.axm/extensions/external/skills/${name}/SKILL.md`);
|
|
131
|
-
return probes;
|
|
132
|
-
};
|
|
133
|
-
export const skillsArtifactsCleanRule = {
|
|
134
|
-
id: RULE_ID,
|
|
135
|
-
description: "Skill artifacts on disk are live, declared, and canonically named.",
|
|
136
|
-
kind: "autofixing",
|
|
137
|
-
severity: "error",
|
|
138
|
-
check: (context) => Effect.gen(function* () {
|
|
139
|
-
const settingsResult = yield* Effect.result(context.workspace.settings);
|
|
140
|
-
if (Result.isFailure(settingsResult)) {
|
|
141
|
-
return EMPTY_LINT_FINDINGS;
|
|
142
|
-
}
|
|
143
|
-
const settings = decodeSettings(settingsResult.success);
|
|
144
|
-
if (Option.isNone(settings)) {
|
|
145
|
-
return EMPTY_LINT_FINDINGS;
|
|
146
|
-
}
|
|
147
|
-
const declaredAgentIds = new Set(settings.value.agents ?? []);
|
|
148
|
-
if (declaredAgentIds.size === 0) {
|
|
149
|
-
return EMPTY_LINT_FINDINGS;
|
|
150
|
-
}
|
|
151
|
-
const knownAgents = yield* context.workspace.knownAgents;
|
|
152
|
-
const declaredAgents = knownAgents.filter((a) => declaredAgentIds.has(a.id));
|
|
153
|
-
const declaredSkills = settings.value.skills ?? {};
|
|
154
|
-
const declaredEnabledNames = new Set(Object.entries(declaredSkills)
|
|
155
|
-
.filter(([, v]) => v.enabled)
|
|
156
|
-
.map(([k]) => k));
|
|
157
|
-
// Pull in pack-retained skill names from the lockfile so retained
|
|
158
|
-
// artifacts aren't mis-classified as stale.
|
|
159
|
-
const lockfileResult = yield* Effect.result(context.workspace.lockfile);
|
|
160
|
-
const retainedNames = Result.isSuccess(lockfileResult)
|
|
161
|
-
? Option.match(lockfileResult.success, {
|
|
162
|
-
onNone: () => new Set(),
|
|
163
|
-
onSome: (raw) => Option.match(decodeLockfile(raw), {
|
|
164
|
-
onNone: () => new Set(),
|
|
165
|
-
onSome: (lock) => buildRetainedSkillNames(settings.value, lock),
|
|
166
|
-
}),
|
|
167
|
-
})
|
|
168
|
-
: new Set();
|
|
169
|
-
const findings = [];
|
|
170
|
-
for (const agent of declaredAgents) {
|
|
171
|
-
const listResult = yield* Effect.result(context.workspace.list(agent.skills.dir));
|
|
172
|
-
if (Result.isFailure(listResult)) {
|
|
173
|
-
// Directory doesn't exist or isn't readable. Not an artifact-clean
|
|
174
|
-
// issue — the corresponding enabled arm surfaces missing dirs.
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
177
|
-
const artifacts = listResult.success;
|
|
178
|
-
for (const artifact of artifacts) {
|
|
179
|
-
// Retention carve-out: pack-retained skill artifacts are valid
|
|
180
|
-
// even when not in settings.skills.
|
|
181
|
-
if (retainedNames.has(artifact)) {
|
|
182
|
-
continue;
|
|
183
|
-
}
|
|
184
|
-
// Cascade first-failure per artifact.
|
|
185
|
-
// Arm 1: dangling — artifact links back to a declared skill name
|
|
186
|
-
// but canonical src is missing.
|
|
187
|
-
if (declaredEnabledNames.has(artifact)) {
|
|
188
|
-
const probes = canonicalSrcProbesForName(artifact, settings.value);
|
|
189
|
-
const probeResults = yield* Effect.all(probes.map((probe) => context.workspace.exists(probe)), { concurrency: "unbounded" });
|
|
190
|
-
if (probeResults.every((exists) => !exists)) {
|
|
191
|
-
findings.push(danglingFinding(artifact, agent.id));
|
|
192
|
-
continue;
|
|
193
|
-
}
|
|
194
|
-
continue;
|
|
195
|
-
}
|
|
196
|
-
// Arm 2/3: not a declared enabled name — name-mismatch or stale.
|
|
197
|
-
// Name-mismatch: artifact normalizes to a declared enabled name
|
|
198
|
-
// but differs in casing or similar. v1 check is case-insensitive.
|
|
199
|
-
const caseMatch = Array.from(declaredEnabledNames).find((d) => d.toLowerCase() === artifact.toLowerCase() && !isCanonicallyNamed(artifact, d));
|
|
200
|
-
if (caseMatch !== undefined) {
|
|
201
|
-
findings.push(nameMismatchFinding(agent.id, artifact, caseMatch));
|
|
202
|
-
continue;
|
|
203
|
-
}
|
|
204
|
-
findings.push(staleFinding(artifact, agent.id));
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
return findings;
|
|
208
|
-
}),
|
|
209
|
-
fix: (context, finding) => Effect.gen(function* () {
|
|
210
|
-
// Only the dangling arm emits AutofixableFinding; stale / name-mismatch
|
|
211
|
-
// arms ship AdvisoryFinding and never reach `fix`.
|
|
212
|
-
if (!finding.suggestions[0].startsWith(SUG_REINSTALL_PREFIX)) {
|
|
213
|
-
return EMPTY_OPERATIONS;
|
|
214
|
-
}
|
|
215
|
-
const name = extractSkillName(finding.suggestions[0]);
|
|
216
|
-
if (name === undefined) {
|
|
217
|
-
return EMPTY_OPERATIONS;
|
|
218
|
-
}
|
|
219
|
-
const settingsResult = yield* Effect.result(context.workspace.settings);
|
|
220
|
-
if (Result.isFailure(settingsResult)) {
|
|
221
|
-
return EMPTY_OPERATIONS;
|
|
222
|
-
}
|
|
223
|
-
const settings = decodeSettings(settingsResult.success);
|
|
224
|
-
if (Option.isNone(settings)) {
|
|
225
|
-
return EMPTY_OPERATIONS;
|
|
226
|
-
}
|
|
227
|
-
const entry = settings.value.skills?.[name];
|
|
228
|
-
const source = entry?.source ?? name;
|
|
229
|
-
return [installSkillOp({ name, source, force: true })];
|
|
230
|
-
}),
|
|
231
|
-
};
|
|
232
|
-
//# sourceMappingURL=skills-artifacts-clean.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skills-artifacts-clean.js","sourceRoot":"","sources":["../../../../../../src/unstable/lint/catalog/workspace/skills-artifacts-clean.ts"],"names":[],"mappings":"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"}
|