@parall/cli 1.35.0 → 1.36.0

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.
@@ -59,6 +59,12 @@ export function resolveCredentials() {
59
59
  return {
60
60
  client: new ParallClient({
61
61
  baseUrl: url,
62
+ // Wiki endpoints (/wiki/v1) are served by wiki-service. Staging/prod front
63
+ // both behind one gateway (PRLL_WIKI_URL unset → falls back to the api URL,
64
+ // unchanged); local dev runs them on separate ports, so PRLL_WIKI_URL routes
65
+ // wiki calls (changeset, upload, file get, …) to :8090 while chat/task/
66
+ // comment/ref calls stay on PRLL_API_URL.
67
+ wikiBaseUrl: process.env.PRLL_WIKI_URL?.trim() || url,
62
68
  token: apiKey,
63
69
  swimlaneName: process.env.PRLL_SWIMLANE_NAME,
64
70
  }),
@@ -0,0 +1,76 @@
1
+ import type { WikiStoredAs } from '@parall/sdk';
2
+ import { type ParallContext } from './wiki.js';
3
+ /** Hard upload ceiling — mirrors server `handler.MaxWikiUploadBytes` (100 MiB). */
4
+ export declare const MAX_WIKI_UPLOAD_BYTES: number;
5
+ export type WikiFileUploadResult = {
6
+ wiki_id: string;
7
+ wiki_slug: string;
8
+ wiki_name: string;
9
+ path: string;
10
+ size: number;
11
+ stored_as: WikiStoredAs;
12
+ commit_sha: string;
13
+ content_sha: string;
14
+ /** Where the write landed: the default branch (direct) or a changeset branch. */
15
+ target: 'default_branch' | 'changeset';
16
+ /** Present only when uploaded into a changeset's feature branch. */
17
+ changeset_id?: string;
18
+ };
19
+ export type WikiFileDownloadResult = {
20
+ wiki_id: string;
21
+ wiki_slug: string;
22
+ wiki_name: string;
23
+ path: string;
24
+ /** The ref that was read (omitted when defaulting to the wiki's default branch). */
25
+ ref?: string;
26
+ size: number;
27
+ /** Raw file bytes (LFS pointers are smudged server-side — these are the real bytes). */
28
+ content: Buffer;
29
+ };
30
+ export type WikiFileDeleteResult = {
31
+ wiki_id: string;
32
+ wiki_slug: string;
33
+ wiki_name: string;
34
+ path: string;
35
+ };
36
+ export type UploadWikiFileOptions = {
37
+ /** Destination path inside the wiki repo, e.g. "assets/diagram.png". */
38
+ toPath: string;
39
+ /** Raw file bytes to upload. */
40
+ content: Buffer;
41
+ /** When set, write into this changeset's feature branch (read + author) instead
42
+ * of direct-committing to the default branch (maintain). */
43
+ changesetId?: string;
44
+ /** Optional commit message (server defaults to "Upload {path}"). */
45
+ message?: string;
46
+ };
47
+ /**
48
+ * Upload a binary file to a wiki. With `changesetId`, writes into that
49
+ * changeset's feature branch (the reader "propose with an image" path);
50
+ * without it, direct-commits to the default branch (maintain). Text content is
51
+ * rejected locally with a pointer to the changeset flow so the agent doesn't
52
+ * round-trip into a 422.
53
+ */
54
+ export declare function uploadWikiFile(ctx: ParallContext, wikiRef: string | undefined, options: UploadWikiFileOptions): Promise<WikiFileUploadResult>;
55
+ /**
56
+ * Download a wiki file's raw bytes via the bearer-authenticated
57
+ * `GET /files/{path}?ref=` endpoint. The server smudges LFS pointers, so the
58
+ * agent gets the real binary — never the few-line pointer that lands on disk
59
+ * from a plain `wiki sync` (the runtime image has no git-lfs). `ref` reads any
60
+ * branch / commit (including a changeset feature branch); it defaults to the
61
+ * wiki's default branch.
62
+ */
63
+ export declare function downloadWikiFile(ctx: ParallContext, wikiRef: string | undefined, options: {
64
+ path: string;
65
+ ref?: string;
66
+ }): Promise<WikiFileDownloadResult>;
67
+ /**
68
+ * Delete a binary file from the wiki's default branch (maintain). Text deletes
69
+ * must go through a changeset; the server returns 422 USE_CHANGESET for those.
70
+ * The blob stays reachable via git history — this only removes it from HEAD.
71
+ */
72
+ export declare function deleteWikiFile(ctx: ParallContext, wikiRef: string | undefined, options: {
73
+ path: string;
74
+ message?: string;
75
+ }): Promise<WikiFileDeleteResult>;
76
+ //# sourceMappingURL=wiki-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiki-files.d.ts","sourceRoot":"","sources":["../../src/lib/wiki-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAGL,KAAK,aAAa,EAKnB,MAAM,WAAW,CAAC;AAoBnB,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,QAAoB,CAAC;AAEvD,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,YAAY,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,MAAM,EAAE,gBAAgB,GAAG,WAAW,CAAC;IACvC,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB;gEAC4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CA4D/B;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACtC,OAAO,CAAC,sBAAsB,CAAC,CAsCjC;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1C,OAAO,CAAC,oBAAoB,CAAC,CAa/B"}
@@ -0,0 +1,169 @@
1
+ import { isWikiTextContent, normalizeRequiredWikiPath, resolveApiToken, resolveWikiRef, resolveWikiServiceBaseUrl, TEXT_MAX_BYTES, } from './wiki.js';
2
+ // ---------------------------------------------------------------------------
3
+ // Wiki binary file CRUD (Phase 4 of wiki-file-storage-design).
4
+ //
5
+ // Text files keep flowing through the changeset workspace (sync → edit →
6
+ // propose); this module is the agent-facing surface for *binary* assets —
7
+ // images, PDFs, archives — that can't be diffed and must not be base64-inlined
8
+ // into changeset JSON. It wraps the wiki-service endpoints:
9
+ // - POST /uploads (maintain, direct-commit default branch)
10
+ // - POST /changesets/{csId}/files (read + author, into a feature branch)
11
+ // - GET /files/{path}?ref= (read, raw bytes — bearer auth, never a
12
+ // browser <img> which can't send a token)
13
+ // - DELETE /files?path= (maintain)
14
+ //
15
+ // Routing/size/text classification is the server's authority; the local
16
+ // pre-checks here just turn the common mistakes into instant, actionable CLI
17
+ // errors instead of a wasted upload that bounces off a 422/413.
18
+ // ---------------------------------------------------------------------------
19
+ /** Hard upload ceiling — mirrors server `handler.MaxWikiUploadBytes` (100 MiB). */
20
+ export const MAX_WIKI_UPLOAD_BYTES = 100 * 1024 * 1024;
21
+ /**
22
+ * Upload a binary file to a wiki. With `changesetId`, writes into that
23
+ * changeset's feature branch (the reader "propose with an image" path);
24
+ * without it, direct-commits to the default branch (maintain). Text content is
25
+ * rejected locally with a pointer to the changeset flow so the agent doesn't
26
+ * round-trip into a 422.
27
+ */
28
+ export async function uploadWikiFile(ctx, wikiRef, options) {
29
+ const wiki = await resolveWikiRef(ctx, wikiRef);
30
+ const toPath = normalizeRequiredWikiPath(options.toPath);
31
+ const content = options.content;
32
+ const changesetId = options.changesetId?.trim() || undefined;
33
+ if (content.length === 0) {
34
+ throw new Error(`cannot upload ${toPath}: file is empty`);
35
+ }
36
+ if (content.length > MAX_WIKI_UPLOAD_BYTES) {
37
+ throw new Error(`cannot upload ${toPath}: file is ${content.length} bytes, ` +
38
+ `over the ${MAX_WIKI_UPLOAD_BYTES}-byte (100 MiB) upload limit`);
39
+ }
40
+ // LFS pointer text is a server-generated artifact; uploading it directly
41
+ // would commit a dangling pointer. Reject before the text check (a pointer
42
+ // is valid UTF-8 and would otherwise be misrouted to "use a changeset").
43
+ if (looksLikeLfsPointer(content)) {
44
+ throw new Error(`cannot upload ${toPath}: this is a Git-LFS pointer, not real bytes. ` +
45
+ 'Upload the underlying binary and the server generates the pointer.');
46
+ }
47
+ // Mirror the server's text gate (filetype: len <= TextMaxBytes && IsText):
48
+ // text goes through changesets so the diff stays reviewable.
49
+ if (content.length <= TEXT_MAX_BYTES && isWikiTextContent(content)) {
50
+ throw new Error(`cannot upload ${toPath}: it looks like a text file, and text changes go ` +
51
+ 'through changesets (sync → edit → `parall wiki changeset create`), not uploads. ' +
52
+ 'Uploads are for binary assets (images, PDFs, archives).');
53
+ }
54
+ // Node Buffer is a Uint8Array (a valid BlobPart); Blob copies the bytes.
55
+ const blob = new Blob([content]);
56
+ const resp = changesetId
57
+ ? await ctx.client.uploadWikiFileToChangeset(ctx.orgId, wiki.id, changesetId, {
58
+ path: toPath,
59
+ file: blob,
60
+ message: options.message,
61
+ })
62
+ : await ctx.client.uploadWikiFile(ctx.orgId, wiki.id, {
63
+ path: toPath,
64
+ file: blob,
65
+ message: options.message,
66
+ });
67
+ return {
68
+ wiki_id: wiki.id,
69
+ wiki_slug: wiki.slug,
70
+ wiki_name: wiki.name,
71
+ path: resp.path,
72
+ size: resp.size,
73
+ stored_as: resp.stored_as,
74
+ commit_sha: resp.commit_sha,
75
+ content_sha: resp.content_sha,
76
+ target: changesetId ? 'changeset' : 'default_branch',
77
+ ...(changesetId ? { changeset_id: changesetId } : {}),
78
+ };
79
+ }
80
+ /**
81
+ * Download a wiki file's raw bytes via the bearer-authenticated
82
+ * `GET /files/{path}?ref=` endpoint. The server smudges LFS pointers, so the
83
+ * agent gets the real binary — never the few-line pointer that lands on disk
84
+ * from a plain `wiki sync` (the runtime image has no git-lfs). `ref` reads any
85
+ * branch / commit (including a changeset feature branch); it defaults to the
86
+ * wiki's default branch.
87
+ */
88
+ export async function downloadWikiFile(ctx, wikiRef, options) {
89
+ const wiki = await resolveWikiRef(ctx, wikiRef);
90
+ const filePath = normalizeRequiredWikiPath(options.path);
91
+ const ref = options.ref?.trim() || undefined;
92
+ const token = resolveApiToken(ctx);
93
+ const base = wikiServiceBaseUrl(ctx);
94
+ // Encode each path segment so spaces / unicode in the path don't break the
95
+ // URL; the server's chi `/files/*` wildcard decodes them back.
96
+ const encodedPath = filePath.split('/').map(encodeURIComponent).join('/');
97
+ let url = `${base}/wiki/v1/orgs/${ctx.orgId}/wikis/${wiki.id}/files/${encodedPath}`;
98
+ if (ref) {
99
+ url += `?ref=${encodeURIComponent(ref)}`;
100
+ }
101
+ const headers = { Authorization: `Bearer ${token}` };
102
+ if (process.env.PRLL_SWIMLANE_NAME) {
103
+ headers['X-Prll-Swimlane'] = process.env.PRLL_SWIMLANE_NAME;
104
+ }
105
+ const response = await fetch(url, { headers });
106
+ if (!response.ok) {
107
+ const text = await response.text().catch(() => '');
108
+ throw new Error(`wiki-service GET ${url}: ${response.status} ${response.statusText}${text ? ` — ${text}` : ''}`);
109
+ }
110
+ const content = Buffer.from(await response.arrayBuffer());
111
+ return {
112
+ wiki_id: wiki.id,
113
+ wiki_slug: wiki.slug,
114
+ wiki_name: wiki.name,
115
+ path: filePath,
116
+ ref,
117
+ size: content.length,
118
+ content,
119
+ };
120
+ }
121
+ /**
122
+ * Delete a binary file from the wiki's default branch (maintain). Text deletes
123
+ * must go through a changeset; the server returns 422 USE_CHANGESET for those.
124
+ * The blob stays reachable via git history — this only removes it from HEAD.
125
+ */
126
+ export async function deleteWikiFile(ctx, wikiRef, options) {
127
+ const wiki = await resolveWikiRef(ctx, wikiRef);
128
+ const filePath = normalizeRequiredWikiPath(options.path);
129
+ await ctx.client.deleteWikiFile(ctx.orgId, wiki.id, {
130
+ path: filePath,
131
+ message: options.message?.trim() || undefined,
132
+ });
133
+ return {
134
+ wiki_id: wiki.id,
135
+ wiki_slug: wiki.slug,
136
+ wiki_name: wiki.name,
137
+ path: filePath,
138
+ };
139
+ }
140
+ // ---------------------------------------------------------------------------
141
+ // Internal helpers
142
+ // ---------------------------------------------------------------------------
143
+ /**
144
+ * Wiki-service base URL for the raw-byte download, reusing the shared resolver
145
+ * (SSOT in wiki.ts, same chain as sync/bulk-download) and turning a missing
146
+ * base into an actionable error instead of a malformed-URL fetch failure.
147
+ */
148
+ function wikiServiceBaseUrl(ctx) {
149
+ const base = resolveWikiServiceBaseUrl(ctx);
150
+ if (!base) {
151
+ throw new Error('wiki-service base URL is required (set PRLL_WIKI_URL or PRLL_API_URL) to download wiki files');
152
+ }
153
+ return base;
154
+ }
155
+ /**
156
+ * Pre-check mirror of the server's `gitea.IsLFSPointer` first-line gate. A
157
+ * full parse isn't needed — matching the version line is enough to give the
158
+ * LFS-specific message and avoid the changeset↔upload loop the design warns
159
+ * about. Anything pointer-shaped but malformed falls through to the server's
160
+ * authoritative classifier.
161
+ */
162
+ function looksLikeLfsPointer(content) {
163
+ if (content.length === 0 || content.length > 1024) {
164
+ return false;
165
+ }
166
+ const nl = content.indexOf(0x0a);
167
+ const firstLine = content.subarray(0, nl >= 0 ? nl : content.length).toString('utf8');
168
+ return firstLine.startsWith('version https://git-lfs.github.com/spec/v1');
169
+ }
@@ -26,8 +26,9 @@ export type WikiToolDefinition = {
26
26
  /**
27
27
  * Build the full wiki native tool registry bound to a Parall context (credentials,
28
28
  * agent env, local mount). Returns one definition per wiki capability (list, tree,
29
- * status, diff, blob, search, query, outline, section, changeset diff, propose),
30
- * each finalized with input validation. Shared by the MCP server and the eval harness.
29
+ * status, diff, blob, search, query, outline, section, changeset diff, propose,
30
+ * binary file upload/get/delete), each finalized with input validation. Shared by
31
+ * the MCP server and the eval harness.
31
32
  */
32
33
  export declare function buildWikiTools(ctx: ParallContext): WikiToolDefinition[];
33
34
  //# sourceMappingURL=wiki-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wiki-tools.d.ts","sourceRoot":"","sources":["../../src/lib/wiki-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,EASL,KAAK,aAAa,EAInB,MAAM,WAAW,CAAC;AAEnB;;;;;;;;;GASG;AAEH,MAAM,MAAM,uBAAuB,GAAG;IACpC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC;IAC3B,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC9E,CAAC;AAoBF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,kBAAkB,EAAE,CAiiBvE"}
1
+ {"version":3,"file":"wiki-tools.d.ts","sourceRoot":"","sources":["../../src/lib/wiki-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,OAAO,EASL,KAAK,aAAa,EAInB,MAAM,WAAW,CAAC;AAUnB;;;;;;;;;GASG;AAEH,MAAM,MAAM,uBAAuB,GAAG;IACpC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC;IAC3B,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC;IAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC9E,CAAC;AAmCF;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,GAAG,kBAAkB,EAAE,CAwrBvE"}
@@ -1,10 +1,33 @@
1
+ import { promises as fs } from 'node:fs';
1
2
  import * as z from 'zod/v4';
2
3
  import { resolveRuntimeContext } from './client.js';
4
+ import { deleteWikiFile, downloadWikiFile, uploadWikiFile } from './wiki-files.js';
3
5
  import { getWikiBlob, getWikiChangesetDiff, getWikiOutline, getWikiSection, getWikiTree, getWikiWorkspaceDiff, getWikiWorkspaceStatus, listWikis, proposeWikiChangeset, queryWiki, searchWiki, } from './wiki.js';
6
+ /**
7
+ * Inline-content ceiling for `wiki_file_get` when no `output_path` is given.
8
+ * Base64 of binary bytes is useless to an LLM and explodes the context window,
9
+ * so anything past this small cap must be written to disk instead. The CLI
10
+ * `wiki file get` has no such cap (it streams to stdout / a file).
11
+ */
12
+ const WIKI_FILE_INLINE_MAX_BYTES = 64 * 1024;
4
13
  /** Pretty-print a value as 2-space-indented JSON for a tool's human-readable `text` field. */
5
14
  function jsonText(value) {
6
15
  return JSON.stringify(value, null, 2);
7
16
  }
17
+ /**
18
+ * Strictly decode base64 from a tool argument. `Buffer.from(s, 'base64')` is
19
+ * lenient — it silently drops non-base64 characters and tolerates wrong-length
20
+ * input, so a hallucinated or truncated payload would commit corrupted bytes
21
+ * with no error. Validate the canonical alphabet + length first so malformed
22
+ * content fails loudly instead of becoming a corrupt wiki asset.
23
+ */
24
+ function decodeBase64Strict(value) {
25
+ const normalized = value.replace(/\s/g, '');
26
+ if (normalized.length % 4 !== 0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(normalized)) {
27
+ throw new Error('content_base64 is not valid base64');
28
+ }
29
+ return Buffer.from(normalized, 'base64');
30
+ }
8
31
  /**
9
32
  * Wrap a tool definition so its handler validates raw args against the tool's
10
33
  * `inputSchema` before running. Returns a copy with the handler replaced; the
@@ -20,8 +43,9 @@ function finalizeWikiTool(tool) {
20
43
  /**
21
44
  * Build the full wiki native tool registry bound to a Parall context (credentials,
22
45
  * agent env, local mount). Returns one definition per wiki capability (list, tree,
23
- * status, diff, blob, search, query, outline, section, changeset diff, propose),
24
- * each finalized with input validation. Shared by the MCP server and the eval harness.
46
+ * status, diff, blob, search, query, outline, section, changeset diff, propose,
47
+ * binary file upload/get/delete), each finalized with input validation. Shared by
48
+ * the MCP server and the eval harness.
25
49
  */
26
50
  export function buildWikiTools(ctx) {
27
51
  const tools = [
@@ -535,6 +559,151 @@ export function buildWikiTools(ctx) {
535
559
  };
536
560
  },
537
561
  },
562
+ {
563
+ name: 'wiki_file_upload',
564
+ title: 'Upload Wiki Binary File',
565
+ description: "Upload a binary file (image, PDF, archive) to a Parall wiki. Provide bytes via local_path (preferred — avoids base64 token bloat) or content_base64. Without changeset_id it direct-commits to the default branch (needs maintain); with changeset_id it writes into that changeset's feature branch (read + author) so a reader can propose markdown that references the file. Reader flow ordering: call wiki_propose FIRST to create the text changeset, then attach the binary here with that changeset_id, and do NOT call wiki_propose again on that changeset afterwards — re-propose replays only the text workspace and the server rejects dropping the attached binary (REPLACE_HAS_BINARY). Text files are rejected — edit those in the synced workspace and use wiki_propose.",
566
+ readOnly: false,
567
+ inputSchema: {
568
+ wiki: z.string().describe('Wiki slug or ID'),
569
+ path: z.string().describe('Destination path inside the wiki repo, e.g. assets/diagram.png'),
570
+ local_path: z
571
+ .string()
572
+ .optional()
573
+ .describe('Local filesystem path to read bytes from (mutually exclusive with content_base64)'),
574
+ content_base64: z
575
+ .string()
576
+ .optional()
577
+ .describe('Base64-encoded file bytes (mutually exclusive with local_path)'),
578
+ changeset_id: z
579
+ .string()
580
+ .optional()
581
+ .describe("Upload into this changeset's feature branch instead of the default branch"),
582
+ message: z.string().optional().describe('Commit message (default: "Upload <path>")'),
583
+ },
584
+ outputSchema: {
585
+ wiki_id: z.string(),
586
+ wiki_slug: z.string(),
587
+ wiki_name: z.string(),
588
+ path: z.string(),
589
+ size: z.number(),
590
+ stored_as: z.enum(['git_blob', 'lfs_pointer']),
591
+ commit_sha: z.string(),
592
+ content_sha: z.string(),
593
+ target: z.enum(['default_branch', 'changeset']),
594
+ changeset_id: z.string().optional(),
595
+ },
596
+ handler: async (args) => {
597
+ const wiki = typeof args.wiki === 'string' ? args.wiki : '';
598
+ const path = typeof args.path === 'string' ? args.path : '';
599
+ const localPath = typeof args.local_path === 'string' ? args.local_path.trim() : '';
600
+ const contentBase64 = typeof args.content_base64 === 'string' ? args.content_base64 : '';
601
+ const changesetId = typeof args.changeset_id === 'string' ? args.changeset_id : undefined;
602
+ const message = typeof args.message === 'string' ? args.message : undefined;
603
+ if ((localPath && contentBase64) || (!localPath && !contentBase64)) {
604
+ throw new Error('provide exactly one of local_path or content_base64');
605
+ }
606
+ const content = localPath
607
+ ? await fs.readFile(localPath)
608
+ : decodeBase64Strict(contentBase64);
609
+ const result = await uploadWikiFile(ctx, wiki, {
610
+ content,
611
+ toPath: path,
612
+ changesetId,
613
+ message,
614
+ });
615
+ return {
616
+ text: jsonText(result),
617
+ structuredContent: result,
618
+ };
619
+ },
620
+ },
621
+ {
622
+ name: 'wiki_file_get',
623
+ title: 'Download Wiki Binary File',
624
+ description: 'Download a wiki file as raw bytes. Git-LFS pointers are smudged server-side to the real bytes — never cat a pointer from a synced workspace. With output_path the bytes are written to that local file; without it, small files (≤64 KiB) are returned as content_base64 and larger files require output_path. Use ref to read a specific commit or changeset branch.',
625
+ readOnly: true,
626
+ inputSchema: {
627
+ wiki: z.string().describe('Wiki slug or ID'),
628
+ path: z.string().describe('File path inside the wiki'),
629
+ ref: z
630
+ .string()
631
+ .optional()
632
+ .describe('Branch, commit SHA, or changeset branch ref (default: wiki default branch)'),
633
+ output_path: z
634
+ .string()
635
+ .optional()
636
+ .describe('Write bytes to this local file instead of returning content_base64'),
637
+ },
638
+ outputSchema: {
639
+ wiki_id: z.string(),
640
+ wiki_slug: z.string(),
641
+ wiki_name: z.string(),
642
+ path: z.string(),
643
+ ref: z.string().optional(),
644
+ size: z.number(),
645
+ content_base64: z.string().optional(),
646
+ output_path: z.string().optional(),
647
+ },
648
+ handler: async (args) => {
649
+ const wiki = typeof args.wiki === 'string' ? args.wiki : '';
650
+ const path = typeof args.path === 'string' ? args.path : '';
651
+ const ref = typeof args.ref === 'string' ? args.ref : undefined;
652
+ const outputPath = typeof args.output_path === 'string' ? args.output_path.trim() : '';
653
+ const result = await downloadWikiFile(ctx, wiki, { path, ref });
654
+ const base = {
655
+ wiki_id: result.wiki_id,
656
+ wiki_slug: result.wiki_slug,
657
+ wiki_name: result.wiki_name,
658
+ path: result.path,
659
+ ref: result.ref,
660
+ size: result.size,
661
+ };
662
+ let structuredContent;
663
+ if (outputPath) {
664
+ await fs.writeFile(outputPath, result.content);
665
+ structuredContent = { ...base, output_path: outputPath };
666
+ }
667
+ else {
668
+ if (result.size > WIKI_FILE_INLINE_MAX_BYTES) {
669
+ throw new Error(`file is ${result.size} bytes; pass output_path to write it to disk ` +
670
+ `(inline base64 is capped at ${WIKI_FILE_INLINE_MAX_BYTES} bytes)`);
671
+ }
672
+ structuredContent = { ...base, content_base64: result.content.toString('base64') };
673
+ }
674
+ return {
675
+ text: jsonText(structuredContent),
676
+ structuredContent,
677
+ };
678
+ },
679
+ },
680
+ {
681
+ name: 'wiki_file_delete',
682
+ title: 'Delete Wiki Binary File',
683
+ description: "Delete a binary file from a Parall wiki's default branch (needs maintain). Text-file deletes must go through a changeset. The blob stays reachable in git history, so an accidental delete is recoverable.",
684
+ readOnly: false,
685
+ inputSchema: {
686
+ wiki: z.string().describe('Wiki slug or ID'),
687
+ path: z.string().describe('File path inside the wiki'),
688
+ message: z.string().optional().describe('Commit message (default: "Delete <path>")'),
689
+ },
690
+ outputSchema: {
691
+ wiki_id: z.string(),
692
+ wiki_slug: z.string(),
693
+ wiki_name: z.string(),
694
+ path: z.string(),
695
+ },
696
+ handler: async (args) => {
697
+ const wiki = typeof args.wiki === 'string' ? args.wiki : '';
698
+ const path = typeof args.path === 'string' ? args.path : '';
699
+ const message = typeof args.message === 'string' ? args.message : undefined;
700
+ const result = await deleteWikiFile(ctx, wiki, { path, message });
701
+ return {
702
+ text: jsonText(result),
703
+ structuredContent: result,
704
+ };
705
+ },
706
+ },
538
707
  ];
539
708
  return tools.map(finalizeWikiTool);
540
709
  }
@@ -130,6 +130,8 @@ export type WikiProposeResult = {
130
130
  source: 'local_mount';
131
131
  };
132
132
  type WikiContentSource = 'local_mount' | 'api';
133
+ /** Server-side text ceiling for changeset file content (mirrors filetype.TextMaxBytes). */
134
+ export declare const TEXT_MAX_BYTES: number;
133
135
  export declare function listWikis(ctx: ParallContext): Promise<Wiki[]>;
134
136
  export declare function resolveWikiRef(ctx: ParallContext, wikiRef?: string): Promise<Wiki>;
135
137
  /**
@@ -379,6 +381,15 @@ export declare function syncSingleWiki(ctx: ParallContext, wiki: import('@parall
379
381
  * local edit. Returns the absolute path written.
380
382
  */
381
383
  export declare function writeConflictMarker(mountRoot: string, sourcePath: string, suffix: string, content: Buffer): Promise<string>;
384
+ export declare function resolveApiToken(ctx?: ParallContext): string;
385
+ /**
386
+ * Resolve the wiki-service base URL (trailing slashes trimmed): explicit ctx
387
+ * override, then PRLL_WIKI_URL, then PRLL_API_URL. SSOT for the raw-fetch wiki
388
+ * endpoints (sync / bulk-download / binary file download). Hosted/staging/prod
389
+ * collapse these to one gateway host; local dev can split api (:8080) and wiki
390
+ * (:8090). Returns '' when none is set — callers decide whether that's fatal.
391
+ */
392
+ export declare function resolveWikiServiceBaseUrl(ctx: ParallContext): string;
382
393
  export declare function computeGitBlobSHA(content: Buffer): string;
383
394
  /**
384
395
  * Mirror of the server's text classifier (filetype.IsText): content-type
@@ -389,4 +400,5 @@ export declare function computeGitBlobSHA(content: Buffer): string;
389
400
  */
390
401
  export declare function isWikiTextContent(content: Buffer): boolean;
391
402
  export declare function detectFrontMatterEnd(lines: string[]): number;
403
+ export declare function normalizeRequiredWikiPath(value: string): string;
392
404
  //# sourceMappingURL=wiki.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wiki.d.ts","sourceRoot":"","sources":["../../src/lib/wiki.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wiki.d.ts","sourceRoot":"","sources":["../../src/lib/wiki.ts"],"names":[],"mappings":"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"}