Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
JavaScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611import assert from "node:assert/strict";import { test } from "node:test";import { build } from "esbuild";import { Miniflare, convertV4MiniflareOptions } from "miniflare";import { mkdtemp, rm } from "node:fs/promises";import { tmpdir } from "node:os";import { join } from "node:path";
const packageOf = ( version = "1.0.0", text = "Use these exact reviewed instructions.", name = "reviewed-skill",) => ({ formatVersion: 1, files: [ { path: "SKILL.md", content: `---\nname: ${name}\ndescription: A reviewed package\nmetadata:\n version: "${version}"\nallowed-tools: "shell network"\n---\n${text}`, }, { path: "references/guide.md", content: "# Reference\nUseful source material.", }, { path: "scripts/run.js", content: 'throw new Error("This script must never execute during review or installation");', }, ],});const select = (skill, enabled) => ({ source: "installed", name: skill.name, fingerprint: skill.fingerprint, revision: skill.revision, enabled,});async function until(check) { const deadline = Date.now() + 10_000; while (!(await check())) { if (Date.now() >= deadline) assert.fail("Fixture download did not start"); await new Promise((resolve) => setTimeout(resolve, 10)); }}
test( "Skill review requires explicit confirmation of an immutable native upload or URL snapshot", { timeout: 90_000 }, async (t) => { const bundle = await build({ entryPoints: ["tests/fixtures/skill-installer-worker.ts"], alias: { path: "node:path" }, target: "es2022", bundle: true, write: false, format: "esm", platform: "neutral", conditions: ["workerd", "worker", "browser"], mainFields: ["module", "main"], external: ["cloudflare:*", "node:*"], }); const persistence = await mkdtemp( join(tmpdir(), "flarebot-skill-installer-"), ); const requests = []; let remotePackage = packageOf(); let releaseHeld; const slowTimers = new Set(); const options = { ...convertV4MiniflareOptions({ modules: true, script: bundle.outputFiles[0].text, compatibilityDate: "2026-09-04", compatibilityFlags: ["nodejs_compat"], durableObjects: { MODEL: { className: "SkillInstallerFixture", useSQLite: true }, }, r2Buckets: ["PACKAGES"], async outboundService(request) { requests.push(request.url); const path = new URL(request.url).pathname; if (path === "/redirect") return new Response(null, { status: 302, headers: { location: "https://packages.example/final" }, }); if (path === "/error") return new Response("private-provider-response", { status: 503 }); if (path === "/invalid") return new Response("not a JSON package"); if (path === "/oversized") return new Response(" ".repeat(13 * 1024 * 1024 + 1)); if (path === "/held") await new Promise((resolve) => { releaseHeld = resolve; }); if (path === "/slow") await new Promise((resolve) => { const timer = setTimeout(() => { slowTimers.delete(timer); resolve(); }, 30_000); slowTimers.add(timer); }); return Response.json(remotePackage); }, }), resourcePersistencePath: persistence, }; let worker = new Miniflare(options); const request = async ( path, body, { owner = "alice", method = "POST", headers = {} } = {}, ) => { const response = await worker.dispatchFetch( `https://fixture.example${path}`, { method, headers: { "X-Fixture-Owner": owner, ...headers }, ...(body === undefined ? {} : { body }), }, ); assert.equal(response.headers.get("Cache-Control"), "no-store"); return { status: response.status, body: await response.json() }; }; const control = async (action, value, owner = "alice") => ( await worker.dispatchFetch("https://fixture.example/control", { method: "POST", headers: { "X-Fixture-Owner": owner }, body: JSON.stringify({ action, value }), }) ).json(); const upload = (contents = packageOf(), options = {}) => request("/api/skills/review-upload", JSON.stringify(contents), { ...options, headers: { "X-Filename": encodeURIComponent("my Skill package.json"), ...options.headers, }, }); const url = (value, options) => request( "/api/skills/review-url", JSON.stringify({ url: value }), options, ); const confirm = (review, options) => request( "/api/skills/install", JSON.stringify({ reviewId: review.reviewId }), options, ); const error = (result, status, code) => { assert.equal(result.status, status, JSON.stringify(result)); assert.equal(result.body.error.code, code, JSON.stringify(result)); assert.deepEqual(Object.keys(result.body.error).sort(), [ "code", "message", "path", ]); assert.equal(typeof result.body.error.path, "string"); assert.ok( result.body.error.message.length > 0 && result.body.error.message.length <= 512, ); return result.body.error; }; try { await t.test( "pending review owns a native inactivity lease", async () => { const preview = await upload(packageOf(), { owner: "lifetime" }); assert.equal(preview.status, 200); const metrics = await control("metrics", undefined, "lifetime"); assert.ok( metrics.alarm !== null, "native Agent keepAlive must arm its heartbeat", ); assert.ok(metrics.alarm <= Date.now() + 31_000); assert.equal(metrics.leases, 1); // No requests or polling reach this owner while its native alarm fires. await new Promise((resolve) => setTimeout(resolve, 31_000)); const afterIdle = await control("metrics", undefined, "lifetime"); assert.ok( afterIdle.alarm > metrics.alarm, "the SDK heartbeat must rearm during idle review", ); assert.equal(afterIdle.leases, 1); assert.equal(afterIdle.puts, 0); const installed = await confirm(preview.body, { owner: "lifetime" }); assert.equal(installed.status, 201, JSON.stringify(installed)); assert.equal(installed.body.fingerprint, preview.body.fingerprint); assert.equal(installed.body.enabled, false); const consumed = await control("metrics", undefined, "lifetime"); assert.equal(consumed.leases, 0); assert.equal(consumed.releasedLeases, 1); }, ); await t.test( "replacement, expiry and failure release the pending review lease", async () => { const owner = "lifetime-cleanup"; const first = (await upload(packageOf(), { owner })).body; const replacement = (await upload(packageOf("1.1.0"), { owner })) .body; let metrics = await control("metrics", undefined, owner); assert.equal(metrics.leases, 1); assert.equal(metrics.acquiredLeases, 2); assert.equal(metrics.releasedLeases, 1); error(await confirm(first, { owner }), 409, "review_expired"); assert.equal((await control("metrics", undefined, owner)).leases, 1); await control("advance", 5 * 60_000, owner); error(await confirm(replacement, { owner }), 409, "review_expired"); metrics = await control("metrics", undefined, owner); assert.equal(metrics.leases, 0); assert.equal(metrics.releasedLeases, 2); assert.equal(metrics.puts, 0); const invalidated = (await upload(packageOf(), { owner })).body; error( await request("/api/skills/review-upload", "{bad json", { owner }), 400, "invalid_package", ); assert.equal((await control("metrics", undefined, owner)).leases, 0); error(await confirm(invalidated, { owner }), 409, "review_expired"); await control("lease", { fail: true }, owner); error(await upload(packageOf(), { owner }), 503, "unavailable"); metrics = await control("metrics", undefined, owner); assert.equal(metrics.leases, 0); assert.equal(metrics.acquiredLeases, metrics.releasedLeases); assert.equal(metrics.puts, 0); }, ); await t.test( "late acquisition cannot replace or release a newer review", async () => { const owner = "lifetime-race"; await control("lease", { hold: true }, owner); const older = upload(packageOf(), { owner }); await until( async () => (await control("metrics", undefined, owner)).heldLease, ); const newer = await upload(packageOf("2.0.0"), { owner }); assert.equal(newer.status, 200, JSON.stringify(newer)); assert.equal((await control("metrics", undefined, owner)).leases, 2); await control("release-lease", undefined, owner); error(await older, 409, "review_expired"); let metrics = await control("metrics", undefined, owner); assert.equal(metrics.leases, 1); assert.equal(metrics.releasedLeases, 1); const installed = await confirm(newer.body, { owner }); assert.equal(installed.status, 201, JSON.stringify(installed)); assert.equal(installed.body.version, "2.0.0"); metrics = await control("metrics", undefined, owner); assert.equal(metrics.leases, 0); assert.equal(metrics.acquiredLeases, metrics.releasedLeases); }, ); await t.test( "cancelled acquisition releases its late native lease", async () => { const owner = "lifetime-cancelled"; await control("lease", { hold: true }, owner); const pending = control( "cancellable-review", { path: "review-upload", body: packageOf(), }, owner, ); await until( async () => (await control("metrics", undefined, owner)).heldLease, ); await control("abort-review", undefined, owner); assert.equal((await pending).rejected, true); await control("release-lease", undefined, owner); await until( async () => (await control("metrics", undefined, owner)).leases === 0, ); const metrics = await control("metrics", undefined, owner); assert.equal(metrics.acquiredLeases, metrics.releasedLeases); assert.equal(metrics.puts, 0); assert.deepEqual(await control("list", undefined, owner), []); }, ); await t.test( "native expiry timer releases the snapshot without another request", async () => { const owner = "timer-expiry"; await control("lease", { hold: true }, owner); const pending = upload(packageOf(), { owner }); await until( async () => (await control("metrics", undefined, owner)).heldLease, ); // Advance only the injected expiry clock while lease acquisition is held; // the production timer remains a real workerd timer for the final 50 ms. await control("advance", 5 * 60_000 - 50, owner); await control("release-lease", undefined, owner); const preview = await pending; assert.equal(preview.status, 200, JSON.stringify(preview)); await new Promise((resolve) => setTimeout(resolve, 100)); const metrics = await control("metrics", undefined, owner); assert.equal( metrics.leases, 0, "timer must retire the snapshot before confirmation", ); assert.equal(metrics.releasedLeases, 1); assert.equal(metrics.puts, 0); error(await confirm(preview.body, { owner }), 409, "review_expired"); }, ); await t.test( "review includes validated optional frontmatter", async () => { const metadataPackage = packageOf(); metadataPackage.files[0].content = metadataPackage.files[0].content.replace( "metadata:\n", "license: Internal-use-only\ncompatibility: Requires Python 3.12\nmetadata:\n author: Alice\n", ); const preview = await upload(metadataPackage, { owner: "metadata" }); assert.equal(preview.status, 200, JSON.stringify(preview)); assert.equal(preview.body.license, "Internal-use-only"); assert.equal(preview.body.compatibility, "Requires Python 3.12"); assert.deepEqual(preview.body.metadata, { version: "1.0.0", author: "Alice", }); assert.equal( (await control("metrics", undefined, "metadata")).puts, 0, ); }, ); for (const path of ["review-upload", "review-url"]) await t.test( `pre-aborted ${path} preserves an existing review`, async () => { const owner = `abort-${path}`; const preview = (await upload(packageOf(), { owner })).body; const downloads = requests.length; const before = await control("metrics", undefined, owner); const cancelled = await control( "pre-aborted", { path, body: path === "review-upload" ? packageOf("2.0.0") : { url: "https://packages.example/never-download" }, }, owner, ); assert.equal(cancelled.rejected, true); assert.equal(requests.length, downloads); assert.deepEqual( await control("metrics", undefined, owner), before, ); const installed = await confirm(preview, { owner }); assert.equal(installed.status, 201, JSON.stringify(installed)); assert.equal(installed.body.fingerprint, preview.fingerprint); }, ); let result = await upload(); assert.equal(result.status, 200, JSON.stringify(result)); let review = result.body; assert.equal(review.name, "reviewed-skill"); assert.equal(review.version, "1.0.0"); assert.equal( review.instructions, "Use these exact reviewed instructions.", ); assert.deepEqual(review.origin, { kind: "upload", filename: "my Skill package.json", }); assert.equal(review.allowedTools, "shell network"); assert.deepEqual(review.scripts, ["scripts/run.js"]); assert.deepEqual( review.resources.map(({ path, kind }) => ({ path, kind })), [ { path: "references/guide.md", kind: "reference" }, { path: "scripts/run.js", kind: "script" }, ], ); assert.ok(review.resources.every((resource) => resource.size > 0)); assert.equal(review.replaces, null); assert.equal((await control("metrics")).puts, 0); assert.deepEqual(await control("list"), []); error(await confirm(review, { owner: "bob" }), 409, "review_expired"); const outcomes = await Promise.all([confirm(review), confirm(review)]); assert.deepEqual( outcomes.map((outcome) => outcome.status).sort(), [201, 409], ); let installed = outcomes.find((outcome) => outcome.status === 201).body; assert.equal(installed.enabled, false); assert.equal(installed.fingerprint, review.fingerprint); assert.equal((await control("metrics")).puts, 1); assert.equal( (await control("load", installed.name)).entry.body, review.instructions, ); error(await confirm(review), 409, "review_expired");
const incoming = packageOf("1.1.0", "Replacement instructions."); review = (await upload(incoming)).body; assert.deepEqual(review.replaces, { version: installed.version, revision: installed.revision, }); installed = await control("set", select(installed, true)); error(await confirm(review), 409, "skill_changed"); assert.equal((await control("metrics")).puts, 1); assert.equal( (await control("load", installed.name)).entry.body, "Use these exact reviewed instructions.", ); review = (await upload(incoming)).body; result = await confirm(review); assert.equal(result.status, 201, JSON.stringify(result)); installed = result.body; assert.equal(installed.version, "1.1.0"); assert.equal(installed.enabled, false); const beforeReviews = (await control("metrics")).puts; const replaced = (await upload()).body; const newest = (await upload(incoming)).body; error(await confirm(replaced), 409, "review_expired"); await control("advance", 5 * 60_000); error(await confirm(newest), 409, "review_expired"); assert.equal((await control("metrics")).puts, beforeReviews); const beforeRestart = (await upload(incoming)).body; await worker.dispose(); worker = new Miniflare(options); error(await confirm(beforeRestart), 409, "review_expired"); assert.deepEqual(await control("list"), [installed]);
remotePackage = packageOf("2.0.0", "Downloaded snapshot.", "url-skill"); const count = requests.length; result = await url( "https://packages.example/package.json?token=private#fragment", ); assert.equal(result.status, 200, JSON.stringify(result)); review = result.body; assert.deepEqual(review.origin, { kind: "url", url: "https://packages.example/package.json", }); assert.equal(review.instructions, "Downloaded snapshot."); assert.equal(requests.length, count + 1); assert.ok(requests.at(-1).includes("?token=private")); remotePackage = packageOf("3.0.0", "Changed after review.", "url-skill"); result = await confirm(review); assert.equal(result.status, 201, JSON.stringify(result)); assert.equal( requests.length, count + 1, "confirmation never downloads the URL again", ); assert.equal( (await control("load", "url-skill")).entry.body, "Downloaded snapshot.", ); assert.equal(result.body.enabled, false);
const pendingUrl = url("https://packages.example/held"); await until(() => requests.some((address) => address.endsWith("/held"))); const winning = (await upload(incoming)).body; releaseHeld(); error(await pendingUrl, 409, "review_expired"); assert.equal((await confirm(winning)).status, 201);
const putsBeforeInvalid = (await control("metrics")).puts; const invalidated = (await upload()).body; error( await request("/api/skills/review-upload", "{bad json"), 400, "invalid_package", ); error(await confirm(invalidated), 409, "review_expired"); error( await upload({ ...packageOf(), origin: { kind: "bundled", release: "claimed" }, }), 400, "invalid_package", ); const unsafe = packageOf(); unsafe.files.push({ path: "resources/../escape.md", content: "bad" }); const unsafeError = error(await upload(unsafe), 400, "invalid_path"); assert.equal(unsafeError.path, "files.3.path"); error( await upload(packageOf("1.0.0", "Reserved", "summarize-report")), 400, "duplicate_skill", ); for (const filename of [ "%ZZ", "%2Ftmp%2Fpackage.json", "line%0Abreak.json", "..%5Cpackage.json", ]) error( await upload(packageOf(), { headers: { "X-Filename": filename } }), 400, "invalid_filename", ); error( await request( "/api/skills/review-upload", " ".repeat(13 * 1024 * 1024 + 1), ), 400, "invalid_package", ); error( await request( "/api/skills/install", JSON.stringify({ reviewId: crypto.randomUUID(), approved: true }), ), 400, "invalid_package", ); error( await request( "/api/skills/install", JSON.stringify({ reviewId: "not-a-uuid" }), ), 400, "invalid_package", ); error( await request("/api/skills/review-upload", undefined, { method: "GET", }), 405, "method_not_allowed", ); error(await request("/api/skills/missing", "{}"), 404, "not_found"); error( await upload(packageOf(), { owner: "unavailable" }), 503, "storage_unavailable", ); const beforeBlocked = requests.length; for (const address of [ "http://packages.example/skill", "https://127.0.0.1/skill", "https://10.0.0.1/skill", "https://[::1]/skill", "https://2130706433/skill", "https://localhost/skill", "https://lan.internal/skill", "https://user:password@packages.example/skill", ]) error(await url(address), 400, "invalid_url"); assert.equal( requests.length, beforeBlocked, "blocked URL inputs never reach native fetch", ); error( await request( "/api/skills/review-url", JSON.stringify({ url: "https://packages.example/package.json", trusted: true, }), ), 400, "invalid_url", ); for (const path of ["redirect", "error", "oversized"]) error( await url(`https://packages.example/${path}`), 502, "download_failed", ); assert.ok( !requests.some((address) => new URL(address).pathname === "/final"), "native fetch does not follow redirects", ); error( await url("https://packages.example/invalid"), 400, "invalid_package", ); assert.equal((await control("metrics")).puts, putsBeforeInvalid); const timeoutStarted = Date.now(); error(await url("https://packages.example/slow"), 502, "download_failed"); assert.ok( Date.now() - timeoutStarted < 22_000, "native fetch's15s deadline precedes the installer25s deadline", ); assert.ok(requests.some((address) => address.endsWith("/slow"))); assert.equal((await control("metrics")).puts, putsBeforeInvalid); } finally { releaseHeld?.(); for (const timer of slowTimers) clearTimeout(timer); await worker.dispose(); await rm(persistence, { recursive: true, force: true }); } },);