Skip to content

Commit 4792c3a

Browse files
fix: prevent bundled fallback from overwriting partial remote seeds
When seedFromRemote partially fails, the bundled fallback now skips skills already in the manifest (installed by the partial remote seed). Also adds Content-Length early check before downloading the full catalog response body.
1 parent 09f9a73 commit 4792c3a

2 files changed

Lines changed: 8 additions & 0 deletions

File tree

packages/browseros-agent/apps/server/src/skills/remote-sync.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,13 @@ export async function fetchRemoteCatalog(): Promise<RemoteSkillCatalog | null> {
9191
})
9292
return null
9393
}
94+
const contentLength = Number(response.headers.get('content-length') ?? 0)
95+
if (contentLength > SKILLS_LIMITS.MAX_CATALOG_BYTES) {
96+
logger.warn('Remote skill catalog Content-Length too large', {
97+
contentLength,
98+
})
99+
return null
100+
}
94101
const text = await response.text()
95102
if (text.length > SKILLS_LIMITS.MAX_CATALOG_BYTES) {
96103
logger.warn('Remote skill catalog response too large', {

packages/browseros-agent/apps/server/src/skills/seed.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export async function seedDefaultSkills(): Promise<void> {
3232
let seeded = 0
3333

3434
for (const skill of DEFAULT_SKILLS) {
35+
if (manifest.skills[skill.id]) continue
3536
try {
3637
const version = extractVersion(skill.content)
3738
await writeSkillFile(skill.id, skill.content)

0 commit comments

Comments
 (0)