diff --git a/src/local-agent.ts b/src/local-agent.ts index 04fd555..5018cda 100644 --- a/src/local-agent.ts +++ b/src/local-agent.ts @@ -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; rules: Set } { const skills = new Set(); const rules = new Set(); 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 }; diff --git a/src/status-report.ts b/src/status-report.ts index 6dea261..4561340 100644 --- a/src/status-report.ts +++ b/src/status-report.ts @@ -172,6 +172,7 @@ async function flushQueue(apiKey: string): Promise { } 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 {