Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions src/local-agent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -638,12 +638,19 @@ async function scanRulesFromDisk(
return results.sort((a, b) => a.slug.localeCompare(b.slug));
}

/** Collect every skill/rule slug recorded across all manifest scopes. */
/** Collect every skill/rule slug recorded across all manifest scopes.
* For skills, also includes dir_name (the on-disk SKILL.md name) so that
* scanSkillsFromDisk — which uses SKILL.md name as the reported slug —
* correctly resolves source as 'enterprise' even when dir_name ≠ slug.
*/
function collectManifestSlugs(manifest: LocalAgentManifest): { skills: Set<string>; rules: Set<string> } {
const skills = new Set<string>();
const rules = new Set<string>();
for (const scope of Object.values(manifest.scopes)) {
for (const slug of Object.keys(scope.skills ?? {})) skills.add(slug);
for (const [slug, entry] of Object.entries(scope.skills ?? {})) {
skills.add(slug);
if (entry.dir_name) skills.add(entry.dir_name);
}
for (const slug of Object.keys(scope.rules ?? {})) rules.add(slug);
}
return { skills, rules };
Expand Down
1 change: 1 addition & 0 deletions src/status-report.ts
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ async function flushQueue(apiKey: string): Promise<void> {
} catch {
continue; // drop malformed
}
if (!req.url || !req.body) continue; // drop non-retryable entries (e.g. diagnostic logs)
try {
await postJson(req.url, apiKey, req.body);
} catch {
Expand Down
Loading