pi-forge 0.0.0 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +48 -4
- package/bin/pi-forge.mjs +37 -0
- package/dist/client/assets/CodeMirrorEditor-BqaaP1EE.js +34 -0
- package/dist/client/assets/CodeMirrorEditor-BqaaP1EE.js.map +1 -0
- package/dist/client/assets/index-B-529kgJ.css +32 -0
- package/dist/client/assets/index-BzKzxXFs.js +392 -0
- package/dist/client/assets/index-BzKzxXFs.js.map +1 -0
- package/dist/client/assets/workbox-window.prod.es5-BBnX5xw4.js +3 -0
- package/dist/client/assets/workbox-window.prod.es5-BBnX5xw4.js.map +1 -0
- package/dist/client/icons/icon-192.png +0 -0
- package/dist/client/icons/icon-512.png +0 -0
- package/dist/client/icons/icon-maskable-512.png +0 -0
- package/dist/client/icons/icon.svg +9 -0
- package/dist/client/index.html +24 -0
- package/dist/client/manifest.webmanifest +1 -0
- package/dist/client/offline.html +142 -0
- package/dist/client/sw.js +3 -0
- package/dist/client/sw.js.map +1 -0
- package/dist/client/workbox-6d7155ed.js +3 -0
- package/dist/client/workbox-6d7155ed.js.map +1 -0
- package/dist/server/agent-resource-loader.js +126 -0
- package/dist/server/agent-resource-loader.js.map +1 -0
- package/dist/server/attachment-converters.js +96 -0
- package/dist/server/attachment-converters.js.map +1 -0
- package/dist/server/auth.js +209 -0
- package/dist/server/auth.js.map +1 -0
- package/dist/server/compaction-history.js +106 -0
- package/dist/server/compaction-history.js.map +1 -0
- package/dist/server/concurrency.js +49 -0
- package/dist/server/concurrency.js.map +1 -0
- package/dist/server/config-export.js +220 -0
- package/dist/server/config-export.js.map +1 -0
- package/dist/server/config-manager.js +528 -0
- package/dist/server/config-manager.js.map +1 -0
- package/dist/server/config.js +326 -0
- package/dist/server/config.js.map +1 -0
- package/dist/server/conversion-worker.mjs +90 -0
- package/dist/server/diagnostics.js +137 -0
- package/dist/server/diagnostics.js.map +1 -0
- package/dist/server/extensions-discovery.js +147 -0
- package/dist/server/extensions-discovery.js.map +1 -0
- package/dist/server/file-manager.js +734 -0
- package/dist/server/file-manager.js.map +1 -0
- package/dist/server/file-references.js +215 -0
- package/dist/server/file-references.js.map +1 -0
- package/dist/server/file-searcher.js +385 -0
- package/dist/server/file-searcher.js.map +1 -0
- package/dist/server/git-runner.js +684 -0
- package/dist/server/git-runner.js.map +1 -0
- package/dist/server/index.js +468 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/mcp/config.js +133 -0
- package/dist/server/mcp/config.js.map +1 -0
- package/dist/server/mcp/manager.js +351 -0
- package/dist/server/mcp/manager.js.map +1 -0
- package/dist/server/mcp/tool-bridge.js +173 -0
- package/dist/server/mcp/tool-bridge.js.map +1 -0
- package/dist/server/project-manager.js +301 -0
- package/dist/server/project-manager.js.map +1 -0
- package/dist/server/pty-manager.js +354 -0
- package/dist/server/pty-manager.js.map +1 -0
- package/dist/server/routes/_schemas.js +73 -0
- package/dist/server/routes/_schemas.js.map +1 -0
- package/dist/server/routes/auth.js +164 -0
- package/dist/server/routes/auth.js.map +1 -0
- package/dist/server/routes/config.js +1163 -0
- package/dist/server/routes/config.js.map +1 -0
- package/dist/server/routes/control.js +464 -0
- package/dist/server/routes/control.js.map +1 -0
- package/dist/server/routes/exec.js +217 -0
- package/dist/server/routes/exec.js.map +1 -0
- package/dist/server/routes/files.js +847 -0
- package/dist/server/routes/files.js.map +1 -0
- package/dist/server/routes/git.js +837 -0
- package/dist/server/routes/git.js.map +1 -0
- package/dist/server/routes/health.js +97 -0
- package/dist/server/routes/health.js.map +1 -0
- package/dist/server/routes/mcp.js +300 -0
- package/dist/server/routes/mcp.js.map +1 -0
- package/dist/server/routes/projects.js +259 -0
- package/dist/server/routes/projects.js.map +1 -0
- package/dist/server/routes/prompt.js +496 -0
- package/dist/server/routes/prompt.js.map +1 -0
- package/dist/server/routes/sessions.js +783 -0
- package/dist/server/routes/sessions.js.map +1 -0
- package/dist/server/routes/stream.js +69 -0
- package/dist/server/routes/stream.js.map +1 -0
- package/dist/server/routes/terminal.js +335 -0
- package/dist/server/routes/terminal.js.map +1 -0
- package/dist/server/session-registry.js +1197 -0
- package/dist/server/session-registry.js.map +1 -0
- package/dist/server/skill-overrides.js +151 -0
- package/dist/server/skill-overrides.js.map +1 -0
- package/dist/server/skills-export.js +257 -0
- package/dist/server/skills-export.js.map +1 -0
- package/dist/server/sse-bridge.js +220 -0
- package/dist/server/sse-bridge.js.map +1 -0
- package/dist/server/tool-overrides.js +277 -0
- package/dist/server/tool-overrides.js.map +1 -0
- package/dist/server/turn-diff-builder.js +280 -0
- package/dist/server/turn-diff-builder.js.map +1 -0
- package/package.json +53 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-registry.js","sourceRoot":"","sources":["../src/session-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { chmodSync } from "node:fs";
|
|
2
|
+
import { mkdir, readFile, rename, unlink, writeFile } from "node:fs/promises";
|
|
3
|
+
import { dirname } from "node:path";
|
|
4
|
+
import { randomUUID } from "node:crypto";
|
|
5
|
+
import { config } from "./config.js";
|
|
6
|
+
const EMPTY = { projects: {} };
|
|
7
|
+
async function ensureDir() {
|
|
8
|
+
await mkdir(dirname(config.skillOverridesFile), { recursive: true });
|
|
9
|
+
}
|
|
10
|
+
async function atomicWrite(data) {
|
|
11
|
+
await ensureDir();
|
|
12
|
+
const path = config.skillOverridesFile;
|
|
13
|
+
const tmp = `${path}.${randomUUID()}.tmp`;
|
|
14
|
+
await writeFile(tmp, JSON.stringify(data, null, 2), { mode: 0o600 });
|
|
15
|
+
try {
|
|
16
|
+
chmodSync(tmp, 0o600);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// best-effort
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
await rename(tmp, path);
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
await unlink(tmp).catch(() => undefined);
|
|
26
|
+
throw err;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export async function readSkillOverrides() {
|
|
30
|
+
try {
|
|
31
|
+
const raw = await readFile(config.skillOverridesFile, "utf8");
|
|
32
|
+
if (raw.trim().length === 0)
|
|
33
|
+
return { projects: {} };
|
|
34
|
+
const parsed = JSON.parse(raw);
|
|
35
|
+
if (typeof parsed !== "object" || parsed === null || !("projects" in parsed)) {
|
|
36
|
+
return { projects: {} };
|
|
37
|
+
}
|
|
38
|
+
const projects = parsed.projects;
|
|
39
|
+
if (typeof projects !== "object" || projects === null)
|
|
40
|
+
return { projects: {} };
|
|
41
|
+
// Normalize each project entry — stale/malformed entries silently
|
|
42
|
+
// become empty rather than throwing.
|
|
43
|
+
const out = { projects: {} };
|
|
44
|
+
for (const [pid, val] of Object.entries(projects)) {
|
|
45
|
+
if (typeof val !== "object" || val === null)
|
|
46
|
+
continue;
|
|
47
|
+
const enable = Array.isArray(val.enable)
|
|
48
|
+
? val.enable.filter((s) => typeof s === "string")
|
|
49
|
+
: [];
|
|
50
|
+
const disable = Array.isArray(val.disable)
|
|
51
|
+
? val.disable.filter((s) => typeof s === "string")
|
|
52
|
+
: [];
|
|
53
|
+
out.projects[pid] = { enable, disable };
|
|
54
|
+
}
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
if (err.code === "ENOENT")
|
|
59
|
+
return { projects: {} };
|
|
60
|
+
throw err;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Tri-state set: pass `state = undefined` to clear (inherit). Empty
|
|
65
|
+
* project entries are pruned so the file doesn't grow with stale
|
|
66
|
+
* keys after a series of toggles back to inherit.
|
|
67
|
+
*/
|
|
68
|
+
export async function setProjectSkillOverride(projectId, skillName, state) {
|
|
69
|
+
const cur = await readSkillOverrides();
|
|
70
|
+
const entry = cur.projects[projectId] ?? { enable: [], disable: [] };
|
|
71
|
+
// Always remove from both lists first — flipping enabled→disabled
|
|
72
|
+
// or vice versa is just remove + maybe add.
|
|
73
|
+
entry.enable = entry.enable.filter((n) => n !== skillName);
|
|
74
|
+
entry.disable = entry.disable.filter((n) => n !== skillName);
|
|
75
|
+
if (state === "enabled")
|
|
76
|
+
entry.enable.push(skillName);
|
|
77
|
+
else if (state === "disabled")
|
|
78
|
+
entry.disable.push(skillName);
|
|
79
|
+
if (entry.enable.length === 0 && entry.disable.length === 0) {
|
|
80
|
+
delete cur.projects[projectId];
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
cur.projects[projectId] = entry;
|
|
84
|
+
}
|
|
85
|
+
await atomicWrite(cur);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Lookup helper used by the UI. Returns `undefined` when the project
|
|
89
|
+
* has no opinion on this skill (= inherit from global).
|
|
90
|
+
*/
|
|
91
|
+
export function getProjectSkillState(overrides, projectId, skillName) {
|
|
92
|
+
const entry = overrides.projects[projectId];
|
|
93
|
+
if (entry === undefined)
|
|
94
|
+
return undefined;
|
|
95
|
+
if (entry.enable.includes(skillName))
|
|
96
|
+
return "enabled";
|
|
97
|
+
if (entry.disable.includes(skillName))
|
|
98
|
+
return "disabled";
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Return the set of skill names this project has explicitly disabled.
|
|
103
|
+
* Used by the resource-loader's `skillsOverride` hook to filter out
|
|
104
|
+
* skills that pi's pattern system can't reach — specifically
|
|
105
|
+
* package-contributed skills, which `DefaultPackageManager` registers
|
|
106
|
+
* as `enabled: true` regardless of `settings.skills` patterns. The
|
|
107
|
+
* pattern-based override path in `effectiveSkillsForProject` still
|
|
108
|
+
* handles top-level (auto-discovered) skills; this helper backstops
|
|
109
|
+
* everything pi loads.
|
|
110
|
+
*/
|
|
111
|
+
export async function getProjectDisabledSkillNames(projectId) {
|
|
112
|
+
const cur = await readSkillOverrides();
|
|
113
|
+
const entry = cur.projects[projectId];
|
|
114
|
+
if (entry === undefined)
|
|
115
|
+
return new Set();
|
|
116
|
+
return new Set(entry.disable);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Drop every override mention of a deleted project so the file
|
|
120
|
+
* doesn't accumulate orphaned entries. Called from project-manager
|
|
121
|
+
* on project delete.
|
|
122
|
+
*/
|
|
123
|
+
export async function clearProjectOverrides(projectId) {
|
|
124
|
+
const cur = await readSkillOverrides();
|
|
125
|
+
if (cur.projects[projectId] === undefined)
|
|
126
|
+
return;
|
|
127
|
+
delete cur.projects[projectId];
|
|
128
|
+
await atomicWrite(cur);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Compute the effective skills list a session in `projectId` should
|
|
132
|
+
* see, given the global enabled list (from pi's settings.skills).
|
|
133
|
+
* Project enables ADD to the global list; project disables SUBTRACT.
|
|
134
|
+
* The result is the runtime-override input for SettingsManager
|
|
135
|
+
* (see session-registry.applySkillOverrides).
|
|
136
|
+
*/
|
|
137
|
+
export function effectiveSkillsForProject(globalEnabled, overrides, projectId) {
|
|
138
|
+
const entry = overrides.projects[projectId];
|
|
139
|
+
if (entry === undefined)
|
|
140
|
+
return [...globalEnabled];
|
|
141
|
+
const enabled = new Set(globalEnabled);
|
|
142
|
+
for (const name of entry.enable)
|
|
143
|
+
enabled.add(name);
|
|
144
|
+
for (const name of entry.disable)
|
|
145
|
+
enabled.delete(name);
|
|
146
|
+
return Array.from(enabled);
|
|
147
|
+
}
|
|
148
|
+
/** Suppress an unused-export warning if EMPTY isn't referenced
|
|
149
|
+
* by the importing module — the constant is exported for tests. */
|
|
150
|
+
export const _EMPTY_FOR_TESTS = EMPTY;
|
|
151
|
+
//# sourceMappingURL=skill-overrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-overrides.js","sourceRoot":"","sources":["../src/skill-overrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills export / import as a flat `.tar.gz`.
|
|
3
|
+
*
|
|
4
|
+
* What's included: every file under `${piConfigDir}/skills/`. Skills
|
|
5
|
+
* come in two shapes — single-file (`<name>.md`) or directory
|
|
6
|
+
* (`<name>/SKILL.md` plus any assets the skill references). The
|
|
7
|
+
* exporter mirrors the source tree verbatim; the importer extracts
|
|
8
|
+
* back into the same shape.
|
|
9
|
+
*
|
|
10
|
+
* What's deliberately EXCLUDED on import: anything outside the skills
|
|
11
|
+
* subtree. The tar is rooted AT the skills directory contents (no
|
|
12
|
+
* leading `skills/` prefix), so an entry like `../auth.json` or
|
|
13
|
+
* `/etc/passwd` is rejected by the path-safety filter before any
|
|
14
|
+
* bytes touch disk.
|
|
15
|
+
*
|
|
16
|
+
* Two import shapes are supported by the route layer:
|
|
17
|
+
* - A single `.tar.gz` upload (this module's `importSkillsFromTar`).
|
|
18
|
+
* - A multi-file folder upload (`importSkillsFromFiles`) — when the
|
|
19
|
+
* user picks a folder via `<input webkitdirectory>` the browser
|
|
20
|
+
* sends one multipart entry per file with the relative path in the
|
|
21
|
+
* filename. Same safety rules apply: relative paths only, no
|
|
22
|
+
* traversal, regular files only.
|
|
23
|
+
*
|
|
24
|
+
* Restore policy: per-file `.tmp` + rename so a partially-uploaded
|
|
25
|
+
* archive never leaves a half-written file behind. Directories are
|
|
26
|
+
* created with `recursive: true` as needed. Existing files in the
|
|
27
|
+
* skills tree are OVERWRITTEN — the export is the source of truth on
|
|
28
|
+
* restore, mirroring the config-export contract.
|
|
29
|
+
*/
|
|
30
|
+
import { mkdir, mkdtemp, readdir, rename, rm, stat, writeFile } from "node:fs/promises";
|
|
31
|
+
import { tmpdir } from "node:os";
|
|
32
|
+
import { dirname, join, normalize, relative, sep } from "node:path";
|
|
33
|
+
import { Readable } from "node:stream";
|
|
34
|
+
import { create as tarCreate, extract as tarExtract } from "tar";
|
|
35
|
+
import { config } from "./config.js";
|
|
36
|
+
/**
|
|
37
|
+
* Hard cap on uploaded archive / folder size. Skills directories are
|
|
38
|
+
* usually a handful of small markdown files (<100 KB total); 50 MB
|
|
39
|
+
* accommodates large directory skills with images / scripts while
|
|
40
|
+
* still bounding accidental or malicious uploads.
|
|
41
|
+
*/
|
|
42
|
+
export const MAX_SKILLS_IMPORT_BYTES = 50 * 1024 * 1024;
|
|
43
|
+
function skillsDir() {
|
|
44
|
+
return join(config.piConfigDir, "skills");
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Thrown by `buildSkillsExportTar` when the skills directory is
|
|
48
|
+
* missing or empty. The route layer catches this and returns a 409
|
|
49
|
+
* with a structured body so the UI can show "No skills to export"
|
|
50
|
+
* instead of triggering a download of an empty / malformed archive.
|
|
51
|
+
*
|
|
52
|
+
* (Background: tar 7.x's `create()` throws synchronously with "no
|
|
53
|
+
* paths specified to add to archive" on an empty entries list, and a
|
|
54
|
+
* hand-rolled 1024-zero-byte tar is rejected by tar 7.x's reader as
|
|
55
|
+
* `TAR_BAD_ARCHIVE`. Both round-trip and "ship something to satisfy
|
|
56
|
+
* the download" approaches are worse than just refusing the export.)
|
|
57
|
+
*/
|
|
58
|
+
export class SkillsDirectoryEmptyError extends Error {
|
|
59
|
+
constructor() {
|
|
60
|
+
super("skills directory is empty");
|
|
61
|
+
this.name = "SkillsDirectoryEmptyError";
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Build the export tar. Throws `SkillsDirectoryEmptyError` when the
|
|
66
|
+
* skills tree is missing or contains no files — see the class
|
|
67
|
+
* docstring for why we don't ship an empty archive.
|
|
68
|
+
*
|
|
69
|
+
* Streams from the source dir directly; no staging copy is needed
|
|
70
|
+
* because the skills tree is read-only from this module's
|
|
71
|
+
* perspective (the only writers are the user via the file system or
|
|
72
|
+
* the import path below, which never overlaps with an in-flight
|
|
73
|
+
* export).
|
|
74
|
+
*/
|
|
75
|
+
export async function buildSkillsExportTar() {
|
|
76
|
+
const src = skillsDir();
|
|
77
|
+
let entries = [];
|
|
78
|
+
try {
|
|
79
|
+
entries = await listFilesRelative(src);
|
|
80
|
+
}
|
|
81
|
+
catch (err) {
|
|
82
|
+
if (err.code !== "ENOENT")
|
|
83
|
+
throw err;
|
|
84
|
+
}
|
|
85
|
+
if (entries.length === 0)
|
|
86
|
+
throw new SkillsDirectoryEmptyError();
|
|
87
|
+
const pack = tarCreate({ gzip: true, cwd: src }, entries);
|
|
88
|
+
const stream = pack;
|
|
89
|
+
return { fileCount: entries.length, stream };
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Recursive walk; returns POSIX-style relative paths for each
|
|
93
|
+
* regular file under `dir`. Symlinks are followed via `stat` so a
|
|
94
|
+
* symlinked file gets included as a regular file (matches the
|
|
95
|
+
* upstream pi behavior — a skill can be `ln -s`'d in from elsewhere
|
|
96
|
+
* on the filesystem).
|
|
97
|
+
*/
|
|
98
|
+
async function listFilesRelative(dir) {
|
|
99
|
+
const out = [];
|
|
100
|
+
async function walk(current) {
|
|
101
|
+
const ents = await readdir(current, { withFileTypes: true });
|
|
102
|
+
for (const ent of ents) {
|
|
103
|
+
const abs = join(current, ent.name);
|
|
104
|
+
const st = await stat(abs).catch(() => undefined);
|
|
105
|
+
if (st === undefined)
|
|
106
|
+
continue;
|
|
107
|
+
if (st.isDirectory()) {
|
|
108
|
+
await walk(abs);
|
|
109
|
+
}
|
|
110
|
+
else if (st.isFile()) {
|
|
111
|
+
out.push(relative(dir, abs).split(sep).join("/"));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
await walk(dir);
|
|
116
|
+
return out;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Validate a relative path proposed for write. Returns the safe
|
|
120
|
+
* relative form (using POSIX separators) or `undefined` to reject.
|
|
121
|
+
*
|
|
122
|
+
* Rejection reasons (all silent — caller logs the skip):
|
|
123
|
+
* - absolute path (Windows or POSIX)
|
|
124
|
+
* - parent traversal (`..` segment)
|
|
125
|
+
* - leading dot at the path root (`.` / `..` / `.git` / etc.)
|
|
126
|
+
* - empty after normalisation
|
|
127
|
+
*/
|
|
128
|
+
function safeRelativePath(name) {
|
|
129
|
+
if (name.length === 0)
|
|
130
|
+
return undefined;
|
|
131
|
+
// Block absolute paths early. POSIX leading slash and Windows-style
|
|
132
|
+
// drive letters (`C:\...`) both rejected.
|
|
133
|
+
if (name.startsWith("/") || name.startsWith("\\") || /^[A-Za-z]:[\\/]/.test(name)) {
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
const normalized = normalize(name).split(sep).join("/");
|
|
137
|
+
if (normalized.startsWith("../") || normalized === "..")
|
|
138
|
+
return undefined;
|
|
139
|
+
if (normalized.split("/").some((seg) => seg === ".."))
|
|
140
|
+
return undefined;
|
|
141
|
+
if (normalized.startsWith("./"))
|
|
142
|
+
return undefined;
|
|
143
|
+
if (normalized.length === 0 || normalized === ".")
|
|
144
|
+
return undefined;
|
|
145
|
+
return normalized;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Extract a tar.gz buffer into the skills directory. Path safety is
|
|
149
|
+
* enforced by `tar`'s `strict: true` (rejects absolute paths and
|
|
150
|
+
* `..`) plus our own `filter` callback (final enforcement against
|
|
151
|
+
* the skills root). Each extracted file is renamed atomically into
|
|
152
|
+
* place after the tar finishes — partial failures don't leave
|
|
153
|
+
* mixed state.
|
|
154
|
+
*/
|
|
155
|
+
export async function importSkillsFromTar(buf) {
|
|
156
|
+
if (buf.byteLength > MAX_SKILLS_IMPORT_BYTES) {
|
|
157
|
+
throw new Error(`archive exceeds ${MAX_SKILLS_IMPORT_BYTES} bytes (got ${buf.byteLength}); refusing to import`);
|
|
158
|
+
}
|
|
159
|
+
const stage = await mkdtemp(join(tmpdir(), "pi-skills-import-"));
|
|
160
|
+
try {
|
|
161
|
+
const accepted = [];
|
|
162
|
+
const skipped = [];
|
|
163
|
+
await new Promise((resolve, reject) => {
|
|
164
|
+
const extractStream = tarExtract({
|
|
165
|
+
cwd: stage,
|
|
166
|
+
strict: true,
|
|
167
|
+
filter: (path, entry) => {
|
|
168
|
+
const entryType = entry.type;
|
|
169
|
+
if (entryType !== undefined && entryType !== "File") {
|
|
170
|
+
skipped.push({ name: path, reason: "non_file" });
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
const safe = safeRelativePath(path);
|
|
174
|
+
if (safe === undefined) {
|
|
175
|
+
skipped.push({ name: path, reason: "unsafe_path" });
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
accepted.push(safe);
|
|
179
|
+
return true;
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
extractStream.on("error", reject);
|
|
183
|
+
extractStream.on("finish", () => resolve());
|
|
184
|
+
Readable.from(buf).pipe(extractStream);
|
|
185
|
+
});
|
|
186
|
+
return await commitStaged(stage, accepted, skipped);
|
|
187
|
+
}
|
|
188
|
+
finally {
|
|
189
|
+
await rm(stage, { recursive: true, force: true }).catch(() => undefined);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Write a list of pre-buffered files (e.g. from a folder upload via
|
|
194
|
+
* `<input webkitdirectory>`) into the skills directory. The browser
|
|
195
|
+
* gives us one entry per file with `filename` carrying the relative
|
|
196
|
+
* path inside the user-picked folder. We apply the same path-safety
|
|
197
|
+
* filter as the tar path.
|
|
198
|
+
*
|
|
199
|
+
* Sums each part's size against `MAX_SKILLS_IMPORT_BYTES` so a
|
|
200
|
+
* many-file folder can't bypass the cap by being split across parts.
|
|
201
|
+
*/
|
|
202
|
+
export async function importSkillsFromFiles(files) {
|
|
203
|
+
let total = 0;
|
|
204
|
+
for (const f of files)
|
|
205
|
+
total += f.buffer.byteLength;
|
|
206
|
+
if (total > MAX_SKILLS_IMPORT_BYTES) {
|
|
207
|
+
throw new Error(`combined files exceed ${MAX_SKILLS_IMPORT_BYTES} bytes (got ${total}); refusing to import`);
|
|
208
|
+
}
|
|
209
|
+
const stage = await mkdtemp(join(tmpdir(), "pi-skills-folder-import-"));
|
|
210
|
+
try {
|
|
211
|
+
const accepted = [];
|
|
212
|
+
const skipped = [];
|
|
213
|
+
for (const f of files) {
|
|
214
|
+
const safe = safeRelativePath(f.filename);
|
|
215
|
+
if (safe === undefined) {
|
|
216
|
+
skipped.push({ name: f.filename, reason: "unsafe_path" });
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
const dest = join(stage, safe);
|
|
220
|
+
await mkdir(dirname(dest), { recursive: true });
|
|
221
|
+
await writeFile(dest, f.buffer);
|
|
222
|
+
accepted.push(safe);
|
|
223
|
+
}
|
|
224
|
+
return await commitStaged(stage, accepted, skipped);
|
|
225
|
+
}
|
|
226
|
+
finally {
|
|
227
|
+
await rm(stage, { recursive: true, force: true }).catch(() => undefined);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Move every staged file into the skills directory atomically.
|
|
232
|
+
* Shared by both import paths so the on-disk write contract is
|
|
233
|
+
* identical regardless of input shape.
|
|
234
|
+
*/
|
|
235
|
+
async function commitStaged(stage, accepted, skipped) {
|
|
236
|
+
const dst = skillsDir();
|
|
237
|
+
await mkdir(dst, { recursive: true });
|
|
238
|
+
const imported = [];
|
|
239
|
+
for (const name of accepted) {
|
|
240
|
+
const src = join(stage, name);
|
|
241
|
+
const target = join(dst, name);
|
|
242
|
+
await mkdir(dirname(target), { recursive: true });
|
|
243
|
+
const tmpDst = `${target}.${Date.now()}.import.tmp`;
|
|
244
|
+
try {
|
|
245
|
+
await rename(src, tmpDst);
|
|
246
|
+
await rename(tmpDst, target);
|
|
247
|
+
imported.push(name);
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
// Best-effort cleanup of the .tmp if rename-into-place failed.
|
|
251
|
+
await rm(tmpDst, { force: true }).catch(() => undefined);
|
|
252
|
+
skipped.push({ name, reason: err.message });
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return { imported, skipped };
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=skills-export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-export.js","sourceRoot":"","sources":["../src/skills-export.ts"],"names":[],"mappings":"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"}
|