@parall/cli 1.55.4 → 1.56.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.
- package/dist/commands/clip.d.ts.map +1 -1
- package/dist/commands/clip.js +168 -35
- package/dist/commands/messages.d.ts.map +1 -1
- package/dist/commands/messages.js +43 -0
- package/dist/commands/tasks.d.ts.map +1 -1
- package/dist/commands/tasks.js +19 -0
- package/dist/lib/upload.d.ts.map +1 -1
- package/dist/lib/upload.js +64 -9
- package/dist/lib/wiki.d.ts +9 -3
- package/dist/lib/wiki.d.ts.map +1 -1
- package/dist/lib/wiki.js +15 -8
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clip.d.ts","sourceRoot":"","sources":["../../src/commands/clip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"clip.d.ts","sourceRoot":"","sources":["../../src/commands/clip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwLpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QA2jBpD"}
|
package/dist/commands/clip.js
CHANGED
|
@@ -52,6 +52,87 @@ async function loadDeviceIndex(client, orgId) {
|
|
|
52
52
|
return null;
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
|
+
const CLIP_REF_HELP = 'Registry clip id (crg_...), an exact clip name (your org first, then a unique public match), or org_<id>/<name> to pin the publisher (discover ids with `parall clip search`)';
|
|
56
|
+
/**
|
|
57
|
+
* The clip-ref grammar shared with the standalone Solo CLI
|
|
58
|
+
* (desktop/edge/cli/parall-clip.mjs, parseClipRef) — the two install surfaces
|
|
59
|
+
* must read the same ref the same way. Any slash makes a namespaced ref, and
|
|
60
|
+
* only org ids are authoritative namespaces; throws on a malformed ref.
|
|
61
|
+
*/
|
|
62
|
+
function parseClipRef(ref) {
|
|
63
|
+
if (ref.startsWith('crg_'))
|
|
64
|
+
return { id: ref };
|
|
65
|
+
const slash = ref.indexOf('/');
|
|
66
|
+
if (slash === -1)
|
|
67
|
+
return { name: ref };
|
|
68
|
+
const namespace = ref.slice(0, slash);
|
|
69
|
+
const name = ref.slice(slash + 1);
|
|
70
|
+
if (!namespace || !name || name.includes('/')) {
|
|
71
|
+
throw new Error(`Invalid clip reference "${ref}". ${CLIP_REF_HELP}.`);
|
|
72
|
+
}
|
|
73
|
+
if (!namespace.startsWith('org_')) {
|
|
74
|
+
throw new Error(`Publisher namespace "${namespace}" is not authoritative yet. Use an immutable crg_ id or org_<id>/${name}.`);
|
|
75
|
+
}
|
|
76
|
+
return { namespace, name };
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Resolve an install/info argument to a registry entry with per-name queries
|
|
80
|
+
* only — never by listing the catalog, which spans every public clip on the
|
|
81
|
+
* platform. Bare names resolve in the CALLER'S org first (an authoritative
|
|
82
|
+
* point read immune to a third party publishing the same name), then fall
|
|
83
|
+
* back to a unique exact match among visible public clips; several publishers
|
|
84
|
+
* sharing the name is an explicit ambiguity error, never "first match wins".
|
|
85
|
+
* Returns null on a clean not-found; non-404 errors (e.g. 403
|
|
86
|
+
* CLIP_NOT_APPROVED) propagate untouched.
|
|
87
|
+
*/
|
|
88
|
+
async function resolveRegistryRef(client, orgId, ref) {
|
|
89
|
+
const notFoundToNull = (err) => {
|
|
90
|
+
if (err.status === 404)
|
|
91
|
+
return null;
|
|
92
|
+
throw err;
|
|
93
|
+
};
|
|
94
|
+
const parsed = parseClipRef(ref);
|
|
95
|
+
if ('id' in parsed) {
|
|
96
|
+
return client.getRegistryClip(orgId, parsed.id).catch(notFoundToNull);
|
|
97
|
+
}
|
|
98
|
+
if ('namespace' in parsed) {
|
|
99
|
+
return client.resolveRegistryClip(orgId, parsed.namespace, parsed.name).catch(notFoundToNull);
|
|
100
|
+
}
|
|
101
|
+
const own = await client.resolveRegistryClip(orgId, orgId, parsed.name).catch(notFoundToNull);
|
|
102
|
+
if (own)
|
|
103
|
+
return own;
|
|
104
|
+
// Bare name, not published by the caller's org: accept a UNIQUE exact match
|
|
105
|
+
// among visible clips. Search is fuzzy (name+description substrings), so
|
|
106
|
+
// exact-filter its max-size page; a page-sized crowd of lookalikes could
|
|
107
|
+
// still hide an exact match — the crg_ id and org_<id>/<name> forms stay
|
|
108
|
+
// the always-sound addresses. A 404 here is a server without the search
|
|
109
|
+
// route, not a lookup miss — degrade to "no matches" so the caller gets
|
|
110
|
+
// the guidance error instead of a bare route error.
|
|
111
|
+
const page = await client
|
|
112
|
+
.searchOrgRegistryClips(orgId, parsed.name, { limit: 100 })
|
|
113
|
+
.catch((err) => {
|
|
114
|
+
if (err.status === 404)
|
|
115
|
+
return [];
|
|
116
|
+
throw err;
|
|
117
|
+
});
|
|
118
|
+
const matches = page.filter((c) => c.name === parsed.name);
|
|
119
|
+
if (matches.length > 1) {
|
|
120
|
+
const candidates = matches.map((c) => `${c.org_id}/${c.name} (${c.id})`).join(', ');
|
|
121
|
+
throw new Error(`Clip name "${parsed.name}" is ambiguous across publishers: ${candidates}. Use the crg_ id or the org_<id>/<name> form.`);
|
|
122
|
+
}
|
|
123
|
+
// A FULL page proves nothing about uniqueness or absence: rows order by
|
|
124
|
+
// (name, id), so the exact-name block can straddle the page boundary and a
|
|
125
|
+
// single visible match — or none — may be a truncation artifact. Two exact
|
|
126
|
+
// matches on the page prove ambiguity outright (handled above); otherwise
|
|
127
|
+
// abstain rather than risk installing the wrong publisher's clip.
|
|
128
|
+
if (page.length >= 100) {
|
|
129
|
+
throw new Error(`Too many clips have names or descriptions similar to "${parsed.name}" for a bare name to resolve safely. Pass the crg_ id or the org_<id>/<name> form (find them with \`parall clip search <text>\`).`);
|
|
130
|
+
}
|
|
131
|
+
return matches[0] ?? null;
|
|
132
|
+
}
|
|
133
|
+
function clipNotFoundError(ref) {
|
|
134
|
+
return new Error(`No registry clip matching "${ref}". Pass a crg_ id, the exact name of a visible clip, or org_<id>/<name> to pin its publisher — discover ids with \`parall clip search <text>\`.`);
|
|
135
|
+
}
|
|
55
136
|
export function registerClipCommands(program) {
|
|
56
137
|
const clip = program
|
|
57
138
|
.command('clip')
|
|
@@ -101,22 +182,70 @@ export function registerClipCommands(program) {
|
|
|
101
182
|
printError(err);
|
|
102
183
|
}
|
|
103
184
|
});
|
|
185
|
+
clip
|
|
186
|
+
.command('search')
|
|
187
|
+
.description('Search the visible clip registry server-side (your org + cross-org public clips) — rows carry the crg_ id that `clip install` takes')
|
|
188
|
+
.argument('<query>', 'Text matched against clip names and descriptions (substring, case-insensitive)')
|
|
189
|
+
.option('--limit <n>', 'Rows per page, up to 100 (server default 50)')
|
|
190
|
+
.option('--offset <n>', 'Rows to skip — page through large result sets')
|
|
191
|
+
.action(async (query, opts) => {
|
|
192
|
+
try {
|
|
193
|
+
const { client, orgId } = resolveCredentials();
|
|
194
|
+
// Strict grammar BEFORE the wire (same rationale as exec --timeout):
|
|
195
|
+
// the server silently clamps malformed or out-of-range values, which
|
|
196
|
+
// would page differently than the caller asked.
|
|
197
|
+
const limit = parsePositiveInt(opts?.limit);
|
|
198
|
+
if (opts?.limit !== undefined && (limit === undefined || limit > 100)) {
|
|
199
|
+
printError(new Error('--limit must be an integer between 1 and 100'));
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
// Unlike limit, 0 is a valid offset (the explicit first page), so
|
|
203
|
+
// parsePositiveInt alone would reject a legal boundary value.
|
|
204
|
+
let offset;
|
|
205
|
+
if (opts?.offset !== undefined) {
|
|
206
|
+
offset = opts.offset.trim() === '0' ? 0 : parsePositiveInt(opts.offset);
|
|
207
|
+
if (offset === undefined) {
|
|
208
|
+
printError(new Error('--offset must be a non-negative integer'));
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
const entries = await client.searchOrgRegistryClips(orgId, query, { limit, offset });
|
|
213
|
+
if (entries.length === 0) {
|
|
214
|
+
printJson({ data: [], message: `No registry clips matched "${query}"` });
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
// publisher tells the caller which install form works: rows from your
|
|
218
|
+
// own org install by bare name; cross-org rows need org_<id>/<name>
|
|
219
|
+
// (publisher IS that org id) or the crg_ id.
|
|
220
|
+
printJson(entries.map((c) => ({
|
|
221
|
+
id: c.id,
|
|
222
|
+
name: c.name,
|
|
223
|
+
publisher: c.org_id === orgId ? 'your org' : c.org_id,
|
|
224
|
+
...(c.description ? { description: c.description } : {}),
|
|
225
|
+
version: c.version ?? '-',
|
|
226
|
+
visibility: c.visibility,
|
|
227
|
+
})));
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
printError(err);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
104
233
|
clip
|
|
105
234
|
.command('install')
|
|
106
235
|
.description('Install a registry clip into the organization')
|
|
107
|
-
.argument('<clip>',
|
|
236
|
+
.argument('<clip>', CLIP_REF_HELP)
|
|
108
237
|
.action(async (clip) => {
|
|
109
238
|
try {
|
|
110
239
|
const { client, orgId } = resolveCredentials();
|
|
111
240
|
// v3 installs a REFERENCE into clip_installs, keyed by the registry id.
|
|
112
241
|
// There is no machine to pick: a v3 clip runs wherever the connection
|
|
113
242
|
// it is bound to points, which is why the old --machine-id is gone.
|
|
114
|
-
//
|
|
115
|
-
//
|
|
116
|
-
|
|
117
|
-
const found =
|
|
243
|
+
// Resolution is a point query — the visible catalog spans every
|
|
244
|
+
// public clip on the platform, so it must never be listed to find one
|
|
245
|
+
// (the old list+find lost every clip past the first page).
|
|
246
|
+
const found = await resolveRegistryRef(client, orgId, clip);
|
|
118
247
|
if (!found) {
|
|
119
|
-
printError(
|
|
248
|
+
printError(clipNotFoundError(clip));
|
|
120
249
|
return;
|
|
121
250
|
}
|
|
122
251
|
// Idempotent server-side: installing an already-installed clip is a no-op.
|
|
@@ -130,48 +259,52 @@ export function registerClipCommands(program) {
|
|
|
130
259
|
clip
|
|
131
260
|
.command('info')
|
|
132
261
|
.description("Show detailed clip information, including its manifest commands and params. For your org's OWN clips this includes review_status/review_note (the platform-review state of a public publish)")
|
|
133
|
-
.argument('<clip>',
|
|
262
|
+
.argument('<clip>', `Installed clip id or name, or — for uninstalled clips — ${CLIP_REF_HELP}`)
|
|
134
263
|
.action(async (clip) => {
|
|
135
264
|
try {
|
|
136
265
|
const { client, orgId } = resolveCredentials();
|
|
137
|
-
// Resolve installed-first (the historical semantic
|
|
138
|
-
//
|
|
266
|
+
// Resolve installed-first (the historical semantic; the installed list
|
|
267
|
+
// is org-local and uncapped), then fall back to point-querying the
|
|
268
|
+
// registry: an author checking a clip they published but never
|
|
139
269
|
// installed — the publish→review→revise loop — must not dead-end here.
|
|
270
|
+
// The installed shortcut obeys the SAME bare-name contract as
|
|
271
|
+
// resolveRegistryRef: an org can install same-name clips from several
|
|
272
|
+
// publishers (installs are keyed by id), so a plain first-match would
|
|
273
|
+
// show an arbitrary one — own org wins, and a foreign tie is the same
|
|
274
|
+
// explicit ambiguity error, never a silent pick.
|
|
140
275
|
const installed = await client.listInstalledRegistryClips(orgId);
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
// The detail read is what carries review_status/review_note (server
|
|
149
|
-
// attaches them only for the owning org). A cross-org entry can lose
|
|
150
|
-
// detail visibility between the list and this read — the list entry
|
|
151
|
-
// is still correct data, so fall back to it rather than failing info.
|
|
152
|
-
try {
|
|
153
|
-
entry = await client.getRegistryClip(orgId, found.id);
|
|
154
|
-
}
|
|
155
|
-
catch {
|
|
156
|
-
entry = found;
|
|
157
|
-
}
|
|
276
|
+
const byId = installed.find((c) => c.id === clip);
|
|
277
|
+
const byName = byId ? [] : installed.filter((c) => c.name === clip);
|
|
278
|
+
let found = byId ?? byName.find((c) => c.org_id === orgId);
|
|
279
|
+
if (!found && byName.length > 1) {
|
|
280
|
+
const candidates = byName.map((c) => `${c.org_id}/${c.name} (${c.id})`).join(', ');
|
|
281
|
+
printError(new Error(`Several installed clips are named "${clip}": ${candidates}. Use the crg_ id or the org_<id>/<name> form.`));
|
|
282
|
+
return;
|
|
158
283
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
284
|
+
found ??= byName[0];
|
|
285
|
+
let entry = found ?? (await resolveRegistryRef(client, orgId, clip));
|
|
286
|
+
// The detail read is what carries review_status/review_note (server
|
|
287
|
+
// attaches them only for the owning org; the resolve read does not).
|
|
288
|
+
// resolveRegistryRef's crg_ branch IS that detail read already. A
|
|
289
|
+
// cross-org entry can lose detail visibility between the lookup and
|
|
290
|
+
// this read (a 404) — the lookup entry is still correct data, so fall
|
|
291
|
+
// back to it rather than failing info. Any OTHER failure (auth, 5xx,
|
|
292
|
+
// network) must surface: silently printing partial data would report
|
|
293
|
+
// a broken read as success.
|
|
294
|
+
const alreadyDetail = !found && clip.startsWith('crg_');
|
|
295
|
+
if (entry && !alreadyDetail) {
|
|
164
296
|
try {
|
|
165
|
-
entry = await client.getRegistryClip(orgId,
|
|
297
|
+
entry = await client.getRegistryClip(orgId, entry.id);
|
|
166
298
|
}
|
|
167
|
-
catch {
|
|
168
|
-
|
|
299
|
+
catch (err) {
|
|
300
|
+
if (err.status !== 404)
|
|
301
|
+
throw err;
|
|
169
302
|
}
|
|
170
303
|
}
|
|
171
304
|
if (!entry) {
|
|
172
305
|
// `return` matters: without it the lookup falls through and dies
|
|
173
306
|
// with a TypeError instead of the message just printed.
|
|
174
|
-
printError(
|
|
307
|
+
printError(clipNotFoundError(clip));
|
|
175
308
|
return;
|
|
176
309
|
}
|
|
177
310
|
const info = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/commands/messages.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBzC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5C,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GACtD;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CASzC;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/commands/messages.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBzC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5C,OAAO,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GACtD;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CASzC;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,QAkSvD"}
|
|
@@ -245,4 +245,47 @@ export function registerMessageCommands(program) {
|
|
|
245
245
|
printError(err);
|
|
246
246
|
}
|
|
247
247
|
});
|
|
248
|
+
// ---- Thread watchers ----
|
|
249
|
+
messages
|
|
250
|
+
.command('watch')
|
|
251
|
+
.description('Watch a thread (subscribe to its replies)')
|
|
252
|
+
.argument('<threadRootId>', 'Thread root message ID')
|
|
253
|
+
.action(async (threadRootId) => {
|
|
254
|
+
try {
|
|
255
|
+
const { client } = resolveCredentials();
|
|
256
|
+
await client.watchThread(stripPrllScheme(threadRootId));
|
|
257
|
+
printJson({ ok: true });
|
|
258
|
+
}
|
|
259
|
+
catch (err) {
|
|
260
|
+
printError(err);
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
messages
|
|
264
|
+
.command('unwatch')
|
|
265
|
+
.description('Unwatch a thread (stop receiving its replies; sticky — only replying or watch re-subscribes)')
|
|
266
|
+
.argument('<threadRootId>', 'Thread root message ID')
|
|
267
|
+
.action(async (threadRootId) => {
|
|
268
|
+
try {
|
|
269
|
+
const { client } = resolveCredentials();
|
|
270
|
+
await client.unwatchThread(stripPrllScheme(threadRootId));
|
|
271
|
+
printJson({ ok: true });
|
|
272
|
+
}
|
|
273
|
+
catch (err) {
|
|
274
|
+
printError(err);
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
messages
|
|
278
|
+
.command('watchers')
|
|
279
|
+
.description('List watchers of a thread')
|
|
280
|
+
.argument('<threadRootId>', 'Thread root message ID')
|
|
281
|
+
.action(async (threadRootId) => {
|
|
282
|
+
try {
|
|
283
|
+
const { client } = resolveCredentials();
|
|
284
|
+
const result = await client.getThreadWatchers(stripPrllScheme(threadRootId));
|
|
285
|
+
printJson(result);
|
|
286
|
+
}
|
|
287
|
+
catch (err) {
|
|
288
|
+
printError(err);
|
|
289
|
+
}
|
|
290
|
+
});
|
|
248
291
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiEpC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;;;;;;;;;;;GAaA;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;;YAS0B,iBAAiB,CAAC,QAAQ,CAAC;cACvB,iBAAiB,CAAC,UAAU,CAAC;;;;;;;;GAS3D;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiEpC,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;;;;;;;;;;;GAaA;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;;YAS0B,iBAAiB,CAAC,QAAQ,CAAC;cACvB,iBAAiB,CAAC,UAAU,CAAC;;;;;;;;GAS3D;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,QA0YpD"}
|
package/dist/commands/tasks.js
CHANGED
|
@@ -170,6 +170,25 @@ export function registerTaskCommands(program) {
|
|
|
170
170
|
printError(err);
|
|
171
171
|
}
|
|
172
172
|
});
|
|
173
|
+
tasks
|
|
174
|
+
.command('move')
|
|
175
|
+
.description('Move a task (and its whole subtree) to another project. The subtree is renumbered from the target project, old KEY-N identifiers stay resolvable as aliases, and subscribers who cannot read the target project lose their subscription. Requires update access on the task (source project membership) and read access to the target project.')
|
|
176
|
+
.argument('<taskId>', 'Task ID')
|
|
177
|
+
.requiredOption('--project <projectId>', 'Target project ID')
|
|
178
|
+
.option('--parent <taskId>', 'Attach under this parent task in the target project (omit to land top-level)')
|
|
179
|
+
.action(async (taskId, opts) => {
|
|
180
|
+
try {
|
|
181
|
+
const { client, orgId } = resolveCredentials();
|
|
182
|
+
const result = await client.moveTask(orgId, stripPrllScheme(taskId), {
|
|
183
|
+
project_id: stripPrllScheme(opts.project),
|
|
184
|
+
...(opts.parent ? { parent_id: stripPrllScheme(opts.parent) } : {}),
|
|
185
|
+
});
|
|
186
|
+
printJson(result);
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
printError(err);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
173
192
|
tasks
|
|
174
193
|
.command('update')
|
|
175
194
|
.description('Update a task')
|
package/dist/lib/upload.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/lib/upload.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA6BhD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/lib/upload.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA6BhD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAgFzF"}
|
package/dist/lib/upload.js
CHANGED
|
@@ -39,16 +39,71 @@ export async function uploadFile(client, orgId, filePath) {
|
|
|
39
39
|
file_name: fileName,
|
|
40
40
|
file_size: stat.size,
|
|
41
41
|
mime_type: mimeType,
|
|
42
|
+
multipart_supported: true,
|
|
42
43
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
let completionStarted = false;
|
|
45
|
+
try {
|
|
46
|
+
let completedParts;
|
|
47
|
+
if (presign.upload_type === 'multipart') {
|
|
48
|
+
if (!presign.part_size || !presign.parts?.length) {
|
|
49
|
+
throw new Error('Server returned an invalid multipart upload response');
|
|
50
|
+
}
|
|
51
|
+
const file = await fs.promises.open(resolved, 'r');
|
|
52
|
+
try {
|
|
53
|
+
completedParts = [];
|
|
54
|
+
const orderedParts = [...presign.parts].sort((a, b) => a.part_number - b.part_number);
|
|
55
|
+
for (const part of orderedParts) {
|
|
56
|
+
const position = (part.part_number - 1) * presign.part_size;
|
|
57
|
+
const length = Math.min(presign.part_size, stat.size - position);
|
|
58
|
+
if (length <= 0) {
|
|
59
|
+
throw new Error(`Upload part ${part.part_number} is outside the file bounds`);
|
|
60
|
+
}
|
|
61
|
+
const buffer = Buffer.allocUnsafe(length);
|
|
62
|
+
let bytesRead = 0;
|
|
63
|
+
while (bytesRead < length) {
|
|
64
|
+
const result = await file.read(buffer, bytesRead, length - bytesRead, position + bytesRead);
|
|
65
|
+
if (result.bytesRead === 0)
|
|
66
|
+
throw new Error('Unexpected end of file');
|
|
67
|
+
bytesRead += result.bytesRead;
|
|
68
|
+
}
|
|
69
|
+
const uploadRes = await fetch(part.upload_url, {
|
|
70
|
+
method: 'PUT',
|
|
71
|
+
body: buffer,
|
|
72
|
+
headers: { 'Content-Type': mimeType },
|
|
73
|
+
});
|
|
74
|
+
if (!uploadRes.ok) {
|
|
75
|
+
throw new Error(`Upload part ${part.part_number} failed: ${uploadRes.status} ${uploadRes.statusText}`);
|
|
76
|
+
}
|
|
77
|
+
const etag = uploadRes.headers.get('ETag');
|
|
78
|
+
if (!etag)
|
|
79
|
+
throw new Error(`Upload part ${part.part_number} returned no ETag`);
|
|
80
|
+
completedParts.push({ part_number: part.part_number, etag });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
await file.close();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
if (!presign.upload_url)
|
|
89
|
+
throw new Error('Server did not return an upload URL');
|
|
90
|
+
const fileBuffer = fs.readFileSync(resolved);
|
|
91
|
+
const uploadRes = await fetch(presign.upload_url, {
|
|
92
|
+
method: 'PUT',
|
|
93
|
+
body: fileBuffer,
|
|
94
|
+
headers: { 'Content-Type': mimeType },
|
|
95
|
+
});
|
|
96
|
+
if (!uploadRes.ok) {
|
|
97
|
+
throw new Error(`Upload failed: ${uploadRes.status} ${uploadRes.statusText}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
completionStarted = true;
|
|
101
|
+
await client.completeUpload(orgId, presign.attachment_id, completedParts);
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
if (!completionStarted)
|
|
105
|
+
await client.abortUpload(orgId, presign.attachment_id).catch(() => { });
|
|
106
|
+
throw error;
|
|
51
107
|
}
|
|
52
|
-
await client.completeUpload(orgId, presign.attachment_id);
|
|
53
108
|
return { attachmentId: presign.attachment_id, fileName, fileSize: stat.size, mimeType };
|
|
54
109
|
}
|
package/dist/lib/wiki.d.ts
CHANGED
|
@@ -132,14 +132,20 @@ export type WikiProposeResult = {
|
|
|
132
132
|
type WikiContentSource = 'local_mount' | 'api';
|
|
133
133
|
/** Server-side text ceiling for changeset file content (mirrors filetype.TextMaxBytes). */
|
|
134
134
|
export declare const TEXT_MAX_BYTES: number;
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
/** A wiki the CLI may operate on: readable (not a degraded listing stub) and
|
|
136
|
+
* therefore always slugged. Everything downstream of listWikis/resolveWikiRef
|
|
137
|
+
* works in this narrowed type. */
|
|
138
|
+
export type ReadableWiki = Wiki & {
|
|
139
|
+
slug: string;
|
|
140
|
+
};
|
|
141
|
+
export declare function listWikis(ctx: ParallContext): Promise<ReadableWiki[]>;
|
|
142
|
+
export declare function resolveWikiRef(ctx: ParallContext, wikiRef?: string): Promise<ReadableWiki>;
|
|
137
143
|
/**
|
|
138
144
|
* Resolve wiki reference. If wikiRef is omitted or empty, auto-resolves to
|
|
139
145
|
* the org's single wiki. Errors if the org has zero or multiple wikis without
|
|
140
146
|
* a ref specified.
|
|
141
147
|
*/
|
|
142
|
-
export declare function resolveWikiRefOrDefault(ctx: ParallContext, wikiRef?: string): Promise<
|
|
148
|
+
export declare function resolveWikiRefOrDefault(ctx: ParallContext, wikiRef?: string): Promise<ReadableWiki>;
|
|
143
149
|
export declare function getWikiTree(ctx: ParallContext, wikiRef?: string, options?: {
|
|
144
150
|
path?: string;
|
|
145
151
|
}): Promise<{
|
package/dist/lib/wiki.d.ts.map
CHANGED
|
@@ -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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"}
|
package/dist/lib/wiki.js
CHANGED
|
@@ -24,11 +24,14 @@ const REMOTE_CONFLICT_SUFFIX = '.remote';
|
|
|
24
24
|
const REMOTE_DELETED_MARKER_SUFFIX = '.remote-deleted';
|
|
25
25
|
/** Server-side text ceiling for changeset file content (mirrors filetype.TextMaxBytes). */
|
|
26
26
|
export const TEXT_MAX_BYTES = 10 * 1024 * 1024;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
/** Degraded listing entries (discoverable-but-unreadable libraries) carry no
|
|
28
|
+
* slug and no content access — they exist only so the Web join browser can
|
|
29
|
+
* offer them. The CLI never mounts, syncs or enumerates them. */
|
|
30
|
+
function isReadableWiki(wiki_) {
|
|
31
|
+
return !wiki_.degraded && typeof wiki_.slug === 'string' && wiki_.slug.length > 0;
|
|
32
|
+
}
|
|
30
33
|
export async function listWikis(ctx) {
|
|
31
|
-
return ctx.client.getWikis(ctx.orgId);
|
|
34
|
+
return (await ctx.client.getWikis(ctx.orgId)).filter(isReadableWiki);
|
|
32
35
|
}
|
|
33
36
|
export async function resolveWikiRef(ctx, wikiRef) {
|
|
34
37
|
const normalized = wikiRef?.trim() ?? '';
|
|
@@ -656,7 +659,7 @@ export async function getWikiLog(ctx, wikiRef, filePath) {
|
|
|
656
659
|
* Mount path is determined client-side: {mountRoot}/{slug}/
|
|
657
660
|
*/
|
|
658
661
|
export async function syncAllMounts(ctx, wikiRef) {
|
|
659
|
-
const allWikis = await ctx.client.getWikis(ctx.orgId);
|
|
662
|
+
const allWikis = (await ctx.client.getWikis(ctx.orgId)).filter(isReadableWiki);
|
|
660
663
|
const target = wikiRef?.trim() ? await resolveWikiRef(ctx, wikiRef) : undefined;
|
|
661
664
|
const wikis = target ? allWikis.filter((w) => w.id === target.id) : allWikis;
|
|
662
665
|
const mountRoot = ctx.mountRoot?.trim() || process.env.PRLL_WIKI_MOUNT_ROOT?.trim();
|
|
@@ -1743,10 +1746,14 @@ async function pruneStaleMounts(mountRoot, activePaths) {
|
|
|
1743
1746
|
const activeArr = Array.from(activePaths);
|
|
1744
1747
|
const staleDirs = [];
|
|
1745
1748
|
await findStaleMountDirs(absRoot, absRoot, activePaths, activeArr, staleDirs);
|
|
1746
|
-
//
|
|
1747
|
-
|
|
1749
|
+
// NEVER delete: since existence filtering landed, "absent from the list"
|
|
1750
|
+
// no longer implies "deleted" — a library switched to private disappears
|
|
1751
|
+
// from the list entirely (by design, indistinguishable from absent), and
|
|
1752
|
+
// recursively removing its mount would destroy uncommitted local edits.
|
|
1753
|
+
// Retain and report; reclaiming is a deliberate manual act until a
|
|
1754
|
+
// positive deletion signal exists.
|
|
1748
1755
|
for (const staleDir of staleDirs) {
|
|
1749
|
-
|
|
1756
|
+
console.warn(`[wiki sync] mount "${staleDir}" no longer maps to a visible library — retained (delete manually if the library was removed)`);
|
|
1750
1757
|
}
|
|
1751
1758
|
}
|
|
1752
1759
|
async function findStaleMountDirs(absRoot, dir, activePaths, activeArr, staleDirs) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parall/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.56.0",
|
|
4
4
|
"description": "CLI client for Parall — universal agent & human access to Parall API",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -36,14 +36,14 @@
|
|
|
36
36
|
"diff": "^8.0.3",
|
|
37
37
|
"js-yaml": "^4.1.0",
|
|
38
38
|
"zod": "^4.3.6",
|
|
39
|
-
"@parall/agent-core": "1.
|
|
40
|
-
"@parall/sdk": "1.
|
|
39
|
+
"@parall/agent-core": "1.56.0",
|
|
40
|
+
"@parall/sdk": "1.56.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/js-yaml": "^4.0.9",
|
|
44
44
|
"@types/node": "^22.0.0",
|
|
45
45
|
"typescript": "^5.7.0",
|
|
46
|
-
"@parall/agent-core": "1.
|
|
46
|
+
"@parall/agent-core": "1.56.0"
|
|
47
47
|
},
|
|
48
48
|
"scripts": {
|
|
49
49
|
"build": "tsc",
|