@unbrained/pm-web 2026.7.26 → 2026.7.28
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/CHANGELOG.md +55 -1
- package/README.md +16 -8
- package/dist/app.js +2 -0
- package/dist/app.js.map +1 -1
- package/dist/index.js +10 -7
- package/dist/index.js.map +1 -1
- package/dist/routes/extensions.d.ts +16 -0
- package/dist/routes/extensions.js +214 -0
- package/dist/routes/extensions.js.map +1 -0
- package/dist/routes/pm.js +152 -47
- package/dist/routes/pm.js.map +1 -1
- package/dist/services/package-catalog.d.ts +84 -0
- package/dist/services/package-catalog.js +194 -0
- package/dist/services/package-catalog.js.map +1 -0
- package/dist/services/pm-runner.d.ts +84 -2
- package/dist/services/pm-runner.js +354 -50
- package/dist/services/pm-runner.js.map +1 -1
- package/manifest.json +1 -1
- package/package.json +6 -8
- package/public/index.html +4 -0
- package/public/src/app.js +7 -0
- package/public/src/app.js.map +1 -1
- package/public/src/app.ts +8 -0
- package/public/src/constants.js +1 -1
- package/public/src/constants.js.map +1 -1
- package/public/src/constants.ts +1 -1
- package/public/src/i18n/de.json +24 -1
- package/public/src/i18n/en.json +24 -1
- package/public/src/i18n/es.json +24 -1
- package/public/src/i18n/zh.json +25 -2
- package/public/src/sw.ts +1 -0
- package/public/src/views/packages.js +221 -0
- package/public/src/views/packages.js.map +1 -0
- package/public/src/views/packages.ts +238 -0
- package/public/src/views/router.js +5 -0
- package/public/src/views/router.js.map +1 -1
- package/public/src/views/router.ts +3 -0
- package/public/sw.js +1 -0
|
@@ -2,10 +2,11 @@ import { spawn } from "node:child_process";
|
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { pool } from "../db.js";
|
|
5
|
-
import { getItemAt, PmCliError, EXIT_CODE, } from "@unbrained/pm-cli/sdk";
|
|
5
|
+
import { getItemAt, PM_TOOL_PARAMETERS_SCHEMA, PmClient, PmCliError, isPmCliExpectedError, EXIT_CODE, } from "@unbrained/pm-cli/sdk";
|
|
6
|
+
import { resolveNpmSpec } from "./package-catalog.js";
|
|
6
7
|
// Re-exported so route handlers and tests can reference the verified projection
|
|
7
8
|
// shape and the typed error class without reaching into the SDK package map.
|
|
8
|
-
export { PmCliError, EXIT_CODE };
|
|
9
|
+
export { PmCliError, isPmCliExpectedError, EXIT_CODE };
|
|
9
10
|
const DEFAULT_COMMAND_TIMEOUT_MS = 30_000;
|
|
10
11
|
const MAX_OUTPUT_BYTES = 32 * 1024 * 1024;
|
|
11
12
|
function positiveInteger(value, fallback) {
|
|
@@ -50,8 +51,6 @@ const OLLAMA_BASE_URL = process.env.OLLAMA_BASE_URL ||
|
|
|
50
51
|
const OLLAMA_EMBEDDING_MODEL = process.env.PM_OLLAMA_MODEL ||
|
|
51
52
|
"qwen3-embedding:0.6b";
|
|
52
53
|
const OLLAMA_API_KEY = process.env.OLLAMA_API_KEY || "";
|
|
53
|
-
const PM_GRAPH_EXTENSION_PATH = process.env.PM_GRAPH_EXTENSION_PATH ||
|
|
54
|
-
path.join(process.cwd(), "extensions", "pm-graph");
|
|
55
54
|
export function getProjectDir(userId, slug) {
|
|
56
55
|
return path.join(projectsRoot(), userId, slug);
|
|
57
56
|
}
|
|
@@ -158,6 +157,7 @@ async function runProcess(cwd, args, options = {}) {
|
|
|
158
157
|
stdout: Buffer.concat(stdout).toString("utf8"),
|
|
159
158
|
stderr: failure ? `${stderrText}${stderrText ? "\n" : ""}${failure}` : stderrText,
|
|
160
159
|
ok: code === 0 && !failure,
|
|
160
|
+
exitCode: typeof code === "number" ? code : undefined,
|
|
161
161
|
});
|
|
162
162
|
});
|
|
163
163
|
child.stdin.on("error", () => undefined);
|
|
@@ -223,93 +223,396 @@ export function projectExists(userId, slug) {
|
|
|
223
223
|
const dir = getProjectDir(userId, slug);
|
|
224
224
|
return fs.existsSync(path.join(dir, ".agents", "pm", "settings.json"));
|
|
225
225
|
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
226
|
+
/**
|
|
227
|
+
* Read the per-project extension state from `pm extension --json`, returning a
|
|
228
|
+
* map keyed by extension name. Used both by {@link ensureGraphExtension} and
|
|
229
|
+
* the extensions routes' catalog join.
|
|
230
|
+
*/
|
|
231
|
+
export async function readProjectExtensionStates(projectDir) {
|
|
232
|
+
const result = await runSerialized(projectDir, () => runProcess(projectDir, ["extension", "--json"], { timeoutMs: 15_000 }));
|
|
233
|
+
const states = new Map();
|
|
234
|
+
if (!result.ok || !result.stdout) {
|
|
235
|
+
return { ok: false, states, error: result.stderr || "pm extension --json failed" };
|
|
232
236
|
}
|
|
233
|
-
}
|
|
234
|
-
function bundledGraphExtensionManifest() {
|
|
235
|
-
const manifestPath = path.join(PM_GRAPH_EXTENSION_PATH, "manifest.json");
|
|
236
|
-
if (!fs.existsSync(manifestPath))
|
|
237
|
-
return null;
|
|
238
|
-
return readJsonFile(manifestPath);
|
|
239
|
-
}
|
|
240
|
-
function projectGraphExtensionManifest(projectDir) {
|
|
241
|
-
return readJsonFile(path.join(projectDir, ".agents", "pm", "extensions", "pm-graph", "manifest.json"));
|
|
242
|
-
}
|
|
243
|
-
async function graphExtensionIsActive(projectDir) {
|
|
244
|
-
const result = await runSerialized(projectDir, () => runProcess(projectDir, ["extension", "explore", "--project", "--json"], { timeoutMs: 15_000 }));
|
|
245
|
-
if (!result.ok || !result.stdout)
|
|
246
|
-
return false;
|
|
247
237
|
try {
|
|
248
238
|
const parsed = JSON.parse(result.stdout);
|
|
249
|
-
|
|
239
|
+
const extensions = parsed.details?.extensions;
|
|
240
|
+
if (!Array.isArray(extensions)) {
|
|
241
|
+
return { ok: false, states, error: "pm extension --json returned no extension list" };
|
|
242
|
+
}
|
|
243
|
+
for (const ext of extensions) {
|
|
244
|
+
if (ext && typeof ext.name === "string")
|
|
245
|
+
states.set(ext.name, ext);
|
|
246
|
+
}
|
|
250
247
|
}
|
|
251
248
|
catch {
|
|
252
|
-
return false;
|
|
249
|
+
return { ok: false, states, error: "pm extension --json returned malformed JSON" };
|
|
253
250
|
}
|
|
251
|
+
return { ok: true, states };
|
|
254
252
|
}
|
|
255
|
-
|
|
256
|
-
|
|
253
|
+
/**
|
|
254
|
+
* Timeout for package installs, which resolve and download from the npm
|
|
255
|
+
* registry rather than only touching local state.
|
|
256
|
+
*
|
|
257
|
+
* The 30s default is sized for local commands and leaves too thin a margin
|
|
258
|
+
* here. Measured on this host: a warm-cache install is ~2s, and a cold-cache
|
|
259
|
+
* install of the heaviest catalog package (pm-graph, which pulls
|
|
260
|
+
* `neo4j-driver`) is ~10s. That is only a 3x margin on a fast connection,
|
|
261
|
+
* before accounting for a container sharing bandwidth or a slow registry —
|
|
262
|
+
* and the failure mode is a project create or package install that dies
|
|
263
|
+
* mid-download. A hung install still terminates, just later.
|
|
264
|
+
*/
|
|
265
|
+
export const INSTALL_COMMAND_TIMEOUT_MS = 180_000;
|
|
266
|
+
async function runExtensionCommand(projectDir, args, timeoutMs) {
|
|
267
|
+
return runSerialized(projectDir, () => runProcess(projectDir, args, { timeoutMs }));
|
|
257
268
|
}
|
|
269
|
+
/**
|
|
270
|
+
* Ensure the pm-graph package is installed and active for a project.
|
|
271
|
+
*
|
|
272
|
+
* This used to install a *vendored* copy of pm-graph from
|
|
273
|
+
* `extensions/pm-graph/` (a stale fork pinned to pm-cli `^2026.7.5`). The
|
|
274
|
+
* vendored fork is gone; pm-graph is now installed from npm through the same
|
|
275
|
+
* generic catalog path as every other pm package
|
|
276
|
+
* (src/services/package-catalog.ts). The npm spec is resolved from the catalog
|
|
277
|
+
* — never built from a user-supplied string — so the install target is always
|
|
278
|
+
* the verified `npm:pm-graph` constant.
|
|
279
|
+
*
|
|
280
|
+
* The graph routes in src/routes/pm.ts call this before `pm pm-graph export`,
|
|
281
|
+
* and {@link initProject} calls it on project creation, so the user-facing
|
|
282
|
+
* graph behaviour is unchanged.
|
|
283
|
+
*/
|
|
258
284
|
export async function ensureGraphExtension(userId, slug) {
|
|
259
285
|
const dir = getProjectDir(userId, slug);
|
|
260
|
-
|
|
261
|
-
|
|
286
|
+
// Resolve the verified npm install spec from the catalog — never a raw path.
|
|
287
|
+
const npmSpec = resolveNpmSpec("pm-graph");
|
|
288
|
+
if (!npmSpec) {
|
|
262
289
|
return {
|
|
263
290
|
ok: false,
|
|
264
291
|
installed: false,
|
|
265
292
|
active: false,
|
|
266
|
-
error:
|
|
293
|
+
error: "pm-graph is not present in the package catalog.",
|
|
267
294
|
};
|
|
268
295
|
}
|
|
269
|
-
const
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
|
|
296
|
+
const { states } = await readProjectExtensionStates(dir);
|
|
297
|
+
const graphState = states.get("pm-graph");
|
|
298
|
+
const installed = Boolean(graphState);
|
|
299
|
+
const active = Boolean(graphState?.active && graphState?.enabled);
|
|
300
|
+
if (!installed) {
|
|
301
|
+
const install = await runExtensionCommand(dir, ["install", npmSpec, "--project"], INSTALL_COMMAND_TIMEOUT_MS);
|
|
273
302
|
if (!install.ok) {
|
|
274
303
|
return {
|
|
275
304
|
ok: false,
|
|
276
|
-
installed:
|
|
305
|
+
installed: false,
|
|
277
306
|
active: false,
|
|
278
|
-
error: install.stderr || install.stdout || "Failed to install
|
|
307
|
+
error: install.stderr || install.stdout || "Failed to install pm-graph from npm.",
|
|
279
308
|
};
|
|
280
309
|
}
|
|
281
310
|
}
|
|
282
|
-
if (!
|
|
311
|
+
if (!active) {
|
|
283
312
|
const activate = await runExtensionCommand(dir, ["extension", "activate", "pm-graph", "--project"]);
|
|
284
313
|
if (!activate.ok) {
|
|
285
314
|
return {
|
|
286
315
|
ok: false,
|
|
287
316
|
installed: true,
|
|
288
317
|
active: false,
|
|
289
|
-
error: activate.stderr || activate.stdout || "Failed to activate
|
|
318
|
+
error: activate.stderr || activate.stdout || "Failed to activate pm-graph.",
|
|
290
319
|
};
|
|
291
320
|
}
|
|
292
321
|
}
|
|
293
|
-
const ping = await runExtensionCommand(dir, ["pm-graph", "ping", "--json"]);
|
|
294
|
-
if (!ping.ok) {
|
|
295
|
-
return {
|
|
296
|
-
ok: false,
|
|
297
|
-
installed: true,
|
|
298
|
-
active: false,
|
|
299
|
-
error: ping.stderr || ping.stdout || "Bundled pm-graph extension is installed but did not activate at runtime.",
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
322
|
return { ok: true, installed: true, active: true };
|
|
303
323
|
}
|
|
324
|
+
// ---------------------------------------------------------------------------
|
|
325
|
+
// In-process SDK dispatch
|
|
326
|
+
// ---------------------------------------------------------------------------
|
|
327
|
+
//
|
|
328
|
+
// The per-request `pm` binary spawn was the single biggest scalability defect
|
|
329
|
+
// in this package: every read/write of a workspace forked a node process, ran
|
|
330
|
+
// the CLI bootstrap, and acquired file locks through the OS. The pm CLI SDK
|
|
331
|
+
// (2026.7.26) exposes the same command runners the CLI uses as a typed,
|
|
332
|
+
// in-process `PmClient`. We now dispatch latency-bounded actions through one
|
|
333
|
+
// cached client configuration per workspace pm-root and retain the bounded
|
|
334
|
+
// spawn path for unsupported or potentially long-running actions. The latter
|
|
335
|
+
// prevents the SDK's process-wide activation queue from head-of-line blocking
|
|
336
|
+
// unrelated workspaces (tracked upstream as unbraind/pm-cli#742).
|
|
337
|
+
/**
|
|
338
|
+
* Actions that cannot be served by `PmClient.run` and must keep using the
|
|
339
|
+
* `pm` binary spawn. Each is documented with the concrete reason it is kept.
|
|
340
|
+
*/
|
|
341
|
+
const SPAWN_FALLBACK_ACTIONS = new Set([
|
|
342
|
+
// Semantic search can invoke remote providers. Keep it outside the SDK's
|
|
343
|
+
// process-wide activation queue until unbraind/pm-cli#742 is resolved.
|
|
344
|
+
"search",
|
|
345
|
+
// Bulk updates can touch many items and must not block unrelated workspaces
|
|
346
|
+
// behind the SDK's process-wide activation queue.
|
|
347
|
+
"update-many",
|
|
348
|
+
// Dependency/schema upgrades are long-running maintenance operations.
|
|
349
|
+
"upgrade",
|
|
350
|
+
// Linked acceptance suites execute arbitrary project commands and can run for
|
|
351
|
+
// minutes, so test-all must not occupy the process-wide SDK queue.
|
|
352
|
+
"test-all",
|
|
353
|
+
// Full validation, health diagnostics, and garbage collection scan workspace
|
|
354
|
+
// state and may invoke extension hooks or external checks.
|
|
355
|
+
"validate",
|
|
356
|
+
"health",
|
|
357
|
+
"gc",
|
|
358
|
+
// `pm guide` is a static help renderer with no SDK action.
|
|
359
|
+
"guide",
|
|
360
|
+
// Search-index rebuild is a long-running maintenance command not exposed as an SDK action.
|
|
361
|
+
"reindex",
|
|
362
|
+
// Workspace normalization is a maintenance command not exposed as an SDK action.
|
|
363
|
+
"normalize",
|
|
364
|
+
// Dedupe audit is a governance report not exposed as an SDK action.
|
|
365
|
+
"dedupe-audit",
|
|
366
|
+
// Comments audit is a governance report not exposed as an SDK action.
|
|
367
|
+
"comments-audit",
|
|
368
|
+
// Calendar rendering is a presentation command not exposed as an SDK action.
|
|
369
|
+
"calendar",
|
|
370
|
+
// Test-runs history is not exposed as an SDK action.
|
|
371
|
+
"test-runs",
|
|
372
|
+
// `pm templates list/show` is not a native SDK action.
|
|
373
|
+
"templates",
|
|
374
|
+
// Extension management (`pm install <source> --project`, `pm extension
|
|
375
|
+
// activate|deactivate|uninstall <name> --project`) takes a positional source
|
|
376
|
+
// or subcommand that `PmClient.run(action, {options})` drops — the SDK's
|
|
377
|
+
// `client.run("install", ...)` raises "requires extension source input" and
|
|
378
|
+
// `client.run("extension", ...)` only performs the default explore, ignoring
|
|
379
|
+
// activate/deactivate/uninstall. The per-project package catalog routes depend
|
|
380
|
+
// on these positionals, so install + extension stay on the spawn fallback (the
|
|
381
|
+
// verified `pm install npm:<pkg> --project` mechanism).
|
|
382
|
+
"install",
|
|
383
|
+
"extension",
|
|
384
|
+
// `PmClient.run("plan", {options:{subcommand,id}})` does not accept the plan id
|
|
385
|
+
// as an option key (only the typed convenience methods `planShow(id)` /
|
|
386
|
+
// `planAddStep(id,...)` do). Converting all ~17 plan routes to typed methods is
|
|
387
|
+
// out of scope for the spawn-removal hot path; plan stays on the spawn fallback.
|
|
388
|
+
"plan",
|
|
389
|
+
// pm-graph is an extension that emits its own JSON to stdout, which the graph
|
|
390
|
+
// routes `JSON.parse` directly. Running it through `PmClient.run` would change
|
|
391
|
+
// the result shape the routes depend on, so it stays on the spawn path.
|
|
392
|
+
"pm-graph",
|
|
393
|
+
]);
|
|
394
|
+
/**
|
|
395
|
+
* Per-positional option key mapping for actions whose CLI form takes positional
|
|
396
|
+
* arguments (e.g. `pm get <id>`, `pm restore <id> <target>`). `PmClient.run`
|
|
397
|
+
* takes a single options bag, so positionals must be mapped onto named keys.
|
|
398
|
+
* Actions not listed here take options only (positionals are not expected).
|
|
399
|
+
*/
|
|
400
|
+
const POSITIONAL_KEYS = {
|
|
401
|
+
init: ["prefix"],
|
|
402
|
+
get: ["id"],
|
|
403
|
+
update: ["id"],
|
|
404
|
+
close: ["id", "reason"],
|
|
405
|
+
delete: ["id"],
|
|
406
|
+
comments: ["id", "add"],
|
|
407
|
+
notes: ["id", "add"],
|
|
408
|
+
learnings: ["id", "add"],
|
|
409
|
+
test: ["id", "add"],
|
|
410
|
+
files: ["id"],
|
|
411
|
+
docs: ["id"],
|
|
412
|
+
deps: ["id"],
|
|
413
|
+
append: ["id", "body"],
|
|
414
|
+
restore: ["id", "target"],
|
|
415
|
+
claim: ["id"],
|
|
416
|
+
release: ["id"],
|
|
417
|
+
copy: ["id"],
|
|
418
|
+
focus: ["id"],
|
|
419
|
+
"start-task": ["id"],
|
|
420
|
+
"pause-task": ["id"],
|
|
421
|
+
"close-task": ["id", "reason"],
|
|
422
|
+
history: ["id"],
|
|
423
|
+
config: ["scope", "configAction", "key", "value"],
|
|
424
|
+
};
|
|
425
|
+
const PM_CLIENT_CACHE_MAX = positiveInteger(process.env.PM_WEB_PM_CLIENT_CACHE_MAX, 256);
|
|
426
|
+
/** Bounded least-recently-used `PmClient` cache keyed by workspace pm-root. */
|
|
427
|
+
const pmClientCache = new Map();
|
|
428
|
+
/**
|
|
429
|
+
* Return a cached {@link PmClient} for a workspace pm-root, creating one on
|
|
430
|
+
* first use. The SDK owns extension activation and serialization internally;
|
|
431
|
+
* caching avoids reconstructing the immutable workspace defaults while each
|
|
432
|
+
* call still receives the SDK's current extension snapshot. Author identity is
|
|
433
|
+
* resolved by the SDK's default detection, preserving prior CLI behaviour.
|
|
434
|
+
*/
|
|
435
|
+
export function getPmClient(pmRoot) {
|
|
436
|
+
let client = pmClientCache.get(pmRoot);
|
|
437
|
+
if (client) {
|
|
438
|
+
pmClientCache.delete(pmRoot);
|
|
439
|
+
pmClientCache.set(pmRoot, client);
|
|
440
|
+
return client;
|
|
441
|
+
}
|
|
442
|
+
if (pmClientCache.size >= PM_CLIENT_CACHE_MAX) {
|
|
443
|
+
const leastRecentlyUsed = pmClientCache.keys().next().value;
|
|
444
|
+
if (typeof leastRecentlyUsed === "string")
|
|
445
|
+
pmClientCache.delete(leastRecentlyUsed);
|
|
446
|
+
}
|
|
447
|
+
client = new PmClient({
|
|
448
|
+
pmRoot,
|
|
449
|
+
cwd: path.dirname(path.dirname(pmRoot)),
|
|
450
|
+
});
|
|
451
|
+
pmClientCache.set(pmRoot, client);
|
|
452
|
+
return client;
|
|
453
|
+
}
|
|
454
|
+
/** Drop a cached client when its workspace is deleted. */
|
|
455
|
+
export function evictPmClient(pmRoot) {
|
|
456
|
+
pmClientCache.delete(pmRoot);
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Read a workspace's parsed `settings.json` for the search-tuning resolvers.
|
|
460
|
+
* Returns `{}` when absent so resolvers fall back to their built-in defaults.
|
|
461
|
+
*/
|
|
462
|
+
export function readPmSettings(userId, slug) {
|
|
463
|
+
const settingsPath = path.join(getProjectDir(userId, slug), ".agents", "pm", "settings.json");
|
|
464
|
+
try {
|
|
465
|
+
return JSON.parse(fs.readFileSync(settingsPath, "utf8"));
|
|
466
|
+
}
|
|
467
|
+
catch {
|
|
468
|
+
return {};
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Convert a kebab-case CLI flag name to the camelCase SDK option key.
|
|
473
|
+
*
|
|
474
|
+
* `PmClient.run` accepts single-word flag names as-is but **silently ignores**
|
|
475
|
+
* multi-word kebab names (e.g. `dry-run`, `include-body`, `filter-status`),
|
|
476
|
+
* which is catastrophic for boolean guards like `--dry-run`. The SDK option
|
|
477
|
+
* contract is camelCase, so `--filter-deadline-before` must become
|
|
478
|
+
* `filterDeadlineBefore`. Single-word names pass through unchanged.
|
|
479
|
+
*/
|
|
480
|
+
function kebabToCamel(flag) {
|
|
481
|
+
if (!flag.includes("-"))
|
|
482
|
+
return flag;
|
|
483
|
+
return flag.replace(/-([a-z])/g, (_, ch) => ch.toUpperCase());
|
|
484
|
+
}
|
|
485
|
+
/**
|
|
486
|
+
* Derive boolean option arity from the SDK's canonical action-scoped tool
|
|
487
|
+
* schema. This keeps the adapter aligned when pm adds an option and lets string
|
|
488
|
+
* values begin with `--` without being mistaken for another flag.
|
|
489
|
+
*/
|
|
490
|
+
function booleanOptionsByAction() {
|
|
491
|
+
const result = new Map();
|
|
492
|
+
const branches = PM_TOOL_PARAMETERS_SCHEMA.oneOf ?? [];
|
|
493
|
+
for (const branch of branches) {
|
|
494
|
+
const properties = branch.properties ?? {};
|
|
495
|
+
const action = properties["action"]?.const;
|
|
496
|
+
if (typeof action !== "string")
|
|
497
|
+
continue;
|
|
498
|
+
const keys = Object.entries(properties)
|
|
499
|
+
.filter(([, property]) => property.type === "boolean")
|
|
500
|
+
.map(([key]) => key);
|
|
501
|
+
result.set(action, new Set(keys));
|
|
502
|
+
}
|
|
503
|
+
return result;
|
|
504
|
+
}
|
|
505
|
+
const BOOLEAN_OPTIONS_BY_ACTION = booleanOptionsByAction();
|
|
506
|
+
/**
|
|
507
|
+
* Parse a CLI-style argv tail (without the leading `--json` injected by the
|
|
508
|
+
* spawn path) into the action name, a camelCase options bag, and positionals.
|
|
509
|
+
* `--json` is dropped: the SDK returns structured objects, never JSON text.
|
|
510
|
+
*/
|
|
511
|
+
function parsePmArgs(args) {
|
|
512
|
+
const action = args[0] ?? "";
|
|
513
|
+
const booleanOptions = BOOLEAN_OPTIONS_BY_ACTION.get(action) ?? new Set();
|
|
514
|
+
const options = {};
|
|
515
|
+
const positionals = [];
|
|
516
|
+
for (let i = 1; i < args.length; i++) {
|
|
517
|
+
const arg = args[i];
|
|
518
|
+
if (arg === "--json")
|
|
519
|
+
continue;
|
|
520
|
+
if (arg === "--") {
|
|
521
|
+
while (++i < args.length)
|
|
522
|
+
positionals.push(args[i]);
|
|
523
|
+
break;
|
|
524
|
+
}
|
|
525
|
+
if (arg.startsWith("--no-")) {
|
|
526
|
+
options[kebabToCamel(arg.slice(5))] = false;
|
|
527
|
+
}
|
|
528
|
+
else if (arg.startsWith("--")) {
|
|
529
|
+
const equalsIndex = arg.indexOf("=");
|
|
530
|
+
const rawFlag = arg.slice(2, equalsIndex === -1 ? undefined : equalsIndex);
|
|
531
|
+
const key = kebabToCamel(rawFlag);
|
|
532
|
+
if (equalsIndex !== -1) {
|
|
533
|
+
options[key] = arg.slice(equalsIndex + 1);
|
|
534
|
+
continue;
|
|
535
|
+
}
|
|
536
|
+
if (booleanOptions.has(key)) {
|
|
537
|
+
options[key] = true;
|
|
538
|
+
continue;
|
|
539
|
+
}
|
|
540
|
+
const next = args[i + 1];
|
|
541
|
+
if (next !== undefined) {
|
|
542
|
+
options[key] = next;
|
|
543
|
+
i++;
|
|
544
|
+
}
|
|
545
|
+
else {
|
|
546
|
+
options[key] = true;
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
else {
|
|
550
|
+
positionals.push(arg);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
return { action, options, positionals };
|
|
554
|
+
}
|
|
555
|
+
/** Merge mapped positionals onto the options bag for `PmClient.run`. */
|
|
556
|
+
function withPositionals(action, positionals, options) {
|
|
557
|
+
const keys = POSITIONAL_KEYS[action];
|
|
558
|
+
if (!keys)
|
|
559
|
+
return options;
|
|
560
|
+
const merged = { ...options };
|
|
561
|
+
for (let i = 0; i < keys.length && i < positionals.length; i++) {
|
|
562
|
+
merged[keys[i]] = positionals[i];
|
|
563
|
+
}
|
|
564
|
+
return merged;
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Dispatch a supported action in-process through {@link PmClient}.
|
|
568
|
+
*
|
|
569
|
+
* Supported actions go through the generic `client.run(action, {options})`
|
|
570
|
+
* dispatcher, which accepts native and extension-contributed actions alike.
|
|
571
|
+
*
|
|
572
|
+
* The result object is returned both as `parsed` (structured) and stringified
|
|
573
|
+
* into `stdout`, so routes that read either field keep working.
|
|
574
|
+
*/
|
|
575
|
+
async function runPmInProcess(opts, dir) {
|
|
576
|
+
const pmRoot = path.join(dir, ".agents", "pm");
|
|
577
|
+
const client = getPmClient(pmRoot);
|
|
578
|
+
const { action, options, positionals } = parsePmArgs(opts.args);
|
|
579
|
+
try {
|
|
580
|
+
const result = await client.run(action, {
|
|
581
|
+
options: withPositionals(action, positionals, options),
|
|
582
|
+
});
|
|
583
|
+
const stdout = JSON.stringify(result) ?? "";
|
|
584
|
+
return { stdout, stderr: "", ok: true, parsed: result };
|
|
585
|
+
}
|
|
586
|
+
catch (err) {
|
|
587
|
+
if ((err instanceof PmCliError || isPmCliExpectedError(err)) &&
|
|
588
|
+
err.message.startsWith("Unsupported native pm action:")) {
|
|
589
|
+
return null;
|
|
590
|
+
}
|
|
591
|
+
if (err instanceof PmCliError || isPmCliExpectedError(err)) {
|
|
592
|
+
return { stdout: "", stderr: err.message, ok: false, parsed: undefined, exitCode: err.exitCode };
|
|
593
|
+
}
|
|
594
|
+
return { stdout: "", stderr: err instanceof Error ? err.message : String(err), ok: false, parsed: undefined };
|
|
595
|
+
}
|
|
596
|
+
}
|
|
304
597
|
export async function runPm(opts) {
|
|
305
598
|
const dir = getProjectDir(opts.userId, opts.slug);
|
|
599
|
+
const action = opts.args[0] ?? "";
|
|
600
|
+
// Supported actions run in-process through the cached PmClient — no spawn.
|
|
601
|
+
if (!SPAWN_FALLBACK_ACTIONS.has(action) &&
|
|
602
|
+
opts.input === undefined &&
|
|
603
|
+
opts.timeoutMs === undefined) {
|
|
604
|
+
const sdkResult = await runPmInProcess(opts, dir);
|
|
605
|
+
if (sdkResult)
|
|
606
|
+
return sdkResult;
|
|
607
|
+
}
|
|
608
|
+
// Fallback: spawn the pm binary for actions the SDK dispatcher cannot serve.
|
|
306
609
|
const args = opts.jsonOutput ? ["--json", ...opts.args] : opts.args;
|
|
307
610
|
const result = await runSerialized(dir, () => runProcess(dir, args, {
|
|
308
611
|
input: opts.input,
|
|
309
612
|
timeoutMs: opts.timeoutMs,
|
|
310
613
|
env: { PM_GRAPH_PROJECT_KEY: `${opts.userId}:${opts.slug}` },
|
|
311
614
|
}));
|
|
312
|
-
const { stdout, stderr, ok } = result;
|
|
615
|
+
const { stdout, stderr, ok, exitCode } = result;
|
|
313
616
|
let parsed;
|
|
314
617
|
if (opts.jsonOutput && ok && stdout) {
|
|
315
618
|
try {
|
|
@@ -319,7 +622,7 @@ export async function runPm(opts) {
|
|
|
319
622
|
parsed = { raw: stdout };
|
|
320
623
|
}
|
|
321
624
|
}
|
|
322
|
-
return { stdout, stderr, ok, parsed };
|
|
625
|
+
return { stdout, stderr, ok, parsed, exitCode };
|
|
323
626
|
}
|
|
324
627
|
/**
|
|
325
628
|
* Reconstruct a single item at a one-based version or ISO timestamp using the
|
|
@@ -340,6 +643,7 @@ export async function runGetItemAt(userId, slug, itemId, ref) {
|
|
|
340
643
|
}
|
|
341
644
|
export function deleteProjectDir(userId, slug) {
|
|
342
645
|
const dir = getProjectDir(userId, slug);
|
|
646
|
+
evictPmClient(path.join(dir, ".agents", "pm"));
|
|
343
647
|
if (fs.existsSync(dir)) {
|
|
344
648
|
fs.rmSync(dir, { recursive: true, force: true });
|
|
345
649
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pm-runner.js","sourceRoot":"","sources":["../../src/services/pm-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pm-runner.js","sourceRoot":"","sources":["../../src/services/pm-runner.ts"],"names":[],"mappings":"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"}
|
package/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pm-web",
|
|
3
|
-
"version": "2026.7.
|
|
3
|
+
"version": "2026.7.28",
|
|
4
4
|
"description": "Full web UI for pm-cli — browse, create, update, search and manage pm projects in the browser. Self-hosted via Docker or Node.js.",
|
|
5
5
|
"author": "@unbraind",
|
|
6
6
|
"entry": "./dist/index.js",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unbrained/pm-web",
|
|
3
|
-
"version": "2026.7.
|
|
3
|
+
"version": "2026.7.28",
|
|
4
4
|
"description": "Full web UI for pm-cli — browse, create, update, search and manage pm projects in the browser. Self-hosted via Docker or Node.js.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -13,18 +13,16 @@
|
|
|
13
13
|
],
|
|
14
14
|
"scripts": {
|
|
15
15
|
"dev": "tsx watch src/server.ts",
|
|
16
|
-
"build": "npm run build:
|
|
17
|
-
"build:graph": "cd extensions/pm-graph && npm run build",
|
|
16
|
+
"build": "npm run build:server && npm run build:frontend",
|
|
18
17
|
"build:server": "tsc",
|
|
19
18
|
"start": "node dist/server.js",
|
|
20
|
-
"typecheck": "npm run typecheck:
|
|
21
|
-
"typecheck:graph": "cd extensions/pm-graph && npm run typecheck",
|
|
19
|
+
"typecheck": "npm run typecheck:server && npm run typecheck:frontend",
|
|
22
20
|
"typecheck:server": "tsc --noEmit",
|
|
23
21
|
"typecheck:frontend": "cd public && tsc --noEmit && tsc -p tsconfig.sw.json --noEmit && tsc -p tsconfig.scripts.json --noEmit",
|
|
24
22
|
"build:frontend": "cd public && tsc && tsc -p tsconfig.sw.json && tsc -p tsconfig.scripts.json",
|
|
25
23
|
"build:all": "npm run build",
|
|
26
24
|
"check": "npm run typecheck",
|
|
27
|
-
"audit:prod": "
|
|
25
|
+
"audit:prod": "node --input-type=module -e \"import { spawnSync } from 'node:child_process'; import { devNull } from 'node:os'; const env = { ...process.env, npm_config_userconfig: devNull, NPM_CONFIG_USERCONFIG: devNull }; for (const key of Object.keys(env)) if (key.toLowerCase() === 'npm_config_allow_scripts') delete env[key]; const win = process.platform === 'win32'; const r = spawnSync(win ? 'npm.cmd' : 'npm', ['audit', '--omit=dev', '--ignore-scripts'], { stdio: 'inherit', env, shell: win }); process.exit(r.status ?? 1);\"",
|
|
28
26
|
"pack:dry-run": "npm pack --dry-run",
|
|
29
27
|
"changelog": "pm-changelog --pm-root .agents/pm --mode prepend --output CHANGELOG.md --release-version-from-package --since-previous-tag --until-release-tag --item-url-base https://github.com/unbraind/pm-web/blob/main/.agents/pm --respect-item-release",
|
|
30
28
|
"changelog:full": "pm-changelog --pm-root .agents/pm --mode replace --output CHANGELOG.md --all-release-tags --release-version-from-package --item-url-base https://github.com/unbraind/pm-web/blob/main/.agents/pm --respect-item-release",
|
|
@@ -39,7 +37,7 @@
|
|
|
39
37
|
"merge:install": "pm merge install"
|
|
40
38
|
},
|
|
41
39
|
"dependencies": {
|
|
42
|
-
"@unbrained/pm-cli": "^2026.7.
|
|
40
|
+
"@unbrained/pm-cli": "^2026.7.28",
|
|
43
41
|
"bcryptjs": "^3.0.3",
|
|
44
42
|
"cookie-parser": "^1.4.7",
|
|
45
43
|
"express": "^5.2.1",
|
|
@@ -56,7 +54,7 @@
|
|
|
56
54
|
"@types/node": "^26.1.1",
|
|
57
55
|
"@types/pg": "^8.11.11",
|
|
58
56
|
"@types/uuid": "^11.0.0",
|
|
59
|
-
"pm-changelog": "^2026.7.
|
|
57
|
+
"pm-changelog": "^2026.7.26",
|
|
60
58
|
"tsx": "^4.23.0",
|
|
61
59
|
"typescript": "^7.0.2"
|
|
62
60
|
},
|
package/public/index.html
CHANGED
|
@@ -166,6 +166,9 @@
|
|
|
166
166
|
<div class="sidebar-item" onclick="window.__app.showView('templates')" data-view="templates" role="button" tabindex="0" aria-label="Templates" onkeydown="if(event.key==='Enter')window.__app.showView('templates')">
|
|
167
167
|
<span class="sidebar-item-icon" aria-hidden="true">⎘</span> Templates
|
|
168
168
|
</div>
|
|
169
|
+
<div class="sidebar-item" onclick="window.__app.showView('packages')" data-view="packages" role="button" tabindex="0" aria-label="Packages" onkeydown="if(event.key==='Enter')window.__app.showView('packages')">
|
|
170
|
+
<span class="sidebar-item-icon" aria-hidden="true">📦</span> Packages
|
|
171
|
+
</div>
|
|
169
172
|
<div class="sidebar-item" onclick="window.__app.showView('guide')" data-view="guide" role="button" tabindex="0" aria-label="Guide" onkeydown="if(event.key==='Enter')window.__app.showView('guide')">
|
|
170
173
|
<span class="sidebar-item-icon" aria-hidden="true">📖</span> Guide
|
|
171
174
|
</div>
|
|
@@ -207,6 +210,7 @@
|
|
|
207
210
|
<div class="content-area" id="content-normalize" style="display:none"><!-- normalize --></div>
|
|
208
211
|
<div class="content-area" id="content-shared" style="display:none"><!-- shared with me --></div>
|
|
209
212
|
<div class="content-area" id="content-templates" style="display:none"><!-- templates --></div>
|
|
213
|
+
<div class="content-area" id="content-packages" style="display:none"><!-- packages --></div>
|
|
210
214
|
<div class="content-area" id="content-comments-audit" style="display:none"><!-- comments audit --></div>
|
|
211
215
|
<div class="content-area" id="content-config" style="display:none"><!-- project config --></div>
|
|
212
216
|
<div class="content-area" id="content-guide" style="display:none"><!-- guide --></div>
|