Files
PaperClipAI/scripts/create-runner-remote-companion.mjs
DottaandPaperclip f96195a7a6 feat(runner): import verified Linux companions for normal Pi execution
Add explicit public CLI setup and full async source/profile/byte admission for an operator-pinned Linux companion. Preserve existing remote integrity checks and explicit overrides.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-02 00:09:04 -05:00

15 lines
1.1 KiB
JavaScript

#!/usr/bin/env node
/** Run after the final server build and Linux daemon/provider-pack assembly. */
import { createHash } from 'node:crypto';
import { writeFile, realpath } from 'node:fs/promises';
import { resolve } from 'node:path';
import { pathToFileURL } from 'node:url';
const [directory, sourceRevision, ...extra] = process.argv.slice(2);
if (!directory || !/^[a-f0-9]{40}$/.test(sourceRevision ?? '') || extra.length) throw new Error('Usage: node scripts/create-runner-remote-companion.mjs DIRECTORY SOURCE_SHA');
const root = await realpath(directory);
const { createRemotePiCompanionManifest } = await import(pathToFileURL(resolve('server/dist/services/native-runtime/remote-pi-companion.js')).href);
const manifest = await createRemotePiCompanionManifest(root, sourceRevision);
const bytes = JSON.stringify(manifest, null, 2) + '\n';
await writeFile(resolve(root, 'companion.json'), bytes, { flag: 'wx', mode: 0o644 });
console.log(JSON.stringify({ directory: root, sourceRevision, target: manifest.target, manifestSha256: createHash('sha256').update(bytes).digest('hex'), providerPackDigest: manifest.providerPackDigest, daemonSha256: manifest.daemonSha256 }));