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.
Files changed (103) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +48 -4
  3. package/bin/pi-forge.mjs +37 -0
  4. package/dist/client/assets/CodeMirrorEditor-BqaaP1EE.js +34 -0
  5. package/dist/client/assets/CodeMirrorEditor-BqaaP1EE.js.map +1 -0
  6. package/dist/client/assets/index-B-529kgJ.css +32 -0
  7. package/dist/client/assets/index-BzKzxXFs.js +392 -0
  8. package/dist/client/assets/index-BzKzxXFs.js.map +1 -0
  9. package/dist/client/assets/workbox-window.prod.es5-BBnX5xw4.js +3 -0
  10. package/dist/client/assets/workbox-window.prod.es5-BBnX5xw4.js.map +1 -0
  11. package/dist/client/icons/icon-192.png +0 -0
  12. package/dist/client/icons/icon-512.png +0 -0
  13. package/dist/client/icons/icon-maskable-512.png +0 -0
  14. package/dist/client/icons/icon.svg +9 -0
  15. package/dist/client/index.html +24 -0
  16. package/dist/client/manifest.webmanifest +1 -0
  17. package/dist/client/offline.html +142 -0
  18. package/dist/client/sw.js +3 -0
  19. package/dist/client/sw.js.map +1 -0
  20. package/dist/client/workbox-6d7155ed.js +3 -0
  21. package/dist/client/workbox-6d7155ed.js.map +1 -0
  22. package/dist/server/agent-resource-loader.js +126 -0
  23. package/dist/server/agent-resource-loader.js.map +1 -0
  24. package/dist/server/attachment-converters.js +96 -0
  25. package/dist/server/attachment-converters.js.map +1 -0
  26. package/dist/server/auth.js +209 -0
  27. package/dist/server/auth.js.map +1 -0
  28. package/dist/server/compaction-history.js +106 -0
  29. package/dist/server/compaction-history.js.map +1 -0
  30. package/dist/server/concurrency.js +49 -0
  31. package/dist/server/concurrency.js.map +1 -0
  32. package/dist/server/config-export.js +220 -0
  33. package/dist/server/config-export.js.map +1 -0
  34. package/dist/server/config-manager.js +528 -0
  35. package/dist/server/config-manager.js.map +1 -0
  36. package/dist/server/config.js +326 -0
  37. package/dist/server/config.js.map +1 -0
  38. package/dist/server/conversion-worker.mjs +90 -0
  39. package/dist/server/diagnostics.js +137 -0
  40. package/dist/server/diagnostics.js.map +1 -0
  41. package/dist/server/extensions-discovery.js +147 -0
  42. package/dist/server/extensions-discovery.js.map +1 -0
  43. package/dist/server/file-manager.js +734 -0
  44. package/dist/server/file-manager.js.map +1 -0
  45. package/dist/server/file-references.js +215 -0
  46. package/dist/server/file-references.js.map +1 -0
  47. package/dist/server/file-searcher.js +385 -0
  48. package/dist/server/file-searcher.js.map +1 -0
  49. package/dist/server/git-runner.js +684 -0
  50. package/dist/server/git-runner.js.map +1 -0
  51. package/dist/server/index.js +468 -0
  52. package/dist/server/index.js.map +1 -0
  53. package/dist/server/mcp/config.js +133 -0
  54. package/dist/server/mcp/config.js.map +1 -0
  55. package/dist/server/mcp/manager.js +351 -0
  56. package/dist/server/mcp/manager.js.map +1 -0
  57. package/dist/server/mcp/tool-bridge.js +173 -0
  58. package/dist/server/mcp/tool-bridge.js.map +1 -0
  59. package/dist/server/project-manager.js +301 -0
  60. package/dist/server/project-manager.js.map +1 -0
  61. package/dist/server/pty-manager.js +354 -0
  62. package/dist/server/pty-manager.js.map +1 -0
  63. package/dist/server/routes/_schemas.js +73 -0
  64. package/dist/server/routes/_schemas.js.map +1 -0
  65. package/dist/server/routes/auth.js +164 -0
  66. package/dist/server/routes/auth.js.map +1 -0
  67. package/dist/server/routes/config.js +1163 -0
  68. package/dist/server/routes/config.js.map +1 -0
  69. package/dist/server/routes/control.js +464 -0
  70. package/dist/server/routes/control.js.map +1 -0
  71. package/dist/server/routes/exec.js +217 -0
  72. package/dist/server/routes/exec.js.map +1 -0
  73. package/dist/server/routes/files.js +847 -0
  74. package/dist/server/routes/files.js.map +1 -0
  75. package/dist/server/routes/git.js +837 -0
  76. package/dist/server/routes/git.js.map +1 -0
  77. package/dist/server/routes/health.js +97 -0
  78. package/dist/server/routes/health.js.map +1 -0
  79. package/dist/server/routes/mcp.js +300 -0
  80. package/dist/server/routes/mcp.js.map +1 -0
  81. package/dist/server/routes/projects.js +259 -0
  82. package/dist/server/routes/projects.js.map +1 -0
  83. package/dist/server/routes/prompt.js +496 -0
  84. package/dist/server/routes/prompt.js.map +1 -0
  85. package/dist/server/routes/sessions.js +783 -0
  86. package/dist/server/routes/sessions.js.map +1 -0
  87. package/dist/server/routes/stream.js +69 -0
  88. package/dist/server/routes/stream.js.map +1 -0
  89. package/dist/server/routes/terminal.js +335 -0
  90. package/dist/server/routes/terminal.js.map +1 -0
  91. package/dist/server/session-registry.js +1197 -0
  92. package/dist/server/session-registry.js.map +1 -0
  93. package/dist/server/skill-overrides.js +151 -0
  94. package/dist/server/skill-overrides.js.map +1 -0
  95. package/dist/server/skills-export.js +257 -0
  96. package/dist/server/skills-export.js.map +1 -0
  97. package/dist/server/sse-bridge.js +220 -0
  98. package/dist/server/sse-bridge.js.map +1 -0
  99. package/dist/server/tool-overrides.js +277 -0
  100. package/dist/server/tool-overrides.js.map +1 -0
  101. package/dist/server/turn-diff-builder.js +280 -0
  102. package/dist/server/turn-diff-builder.js.map +1 -0
  103. 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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"}