@unbrained/pm-web 2026.7.27 → 2026.7.29

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 (108) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +1 -2
  3. package/dist/app.js +2 -0
  4. package/dist/app.js.map +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/oidc.js.map +1 -1
  7. package/dist/routes/extensions.d.ts +16 -0
  8. package/dist/routes/extensions.js +214 -0
  9. package/dist/routes/extensions.js.map +1 -0
  10. package/dist/routes/oidc.d.ts +1 -1
  11. package/dist/routes/pm.js +125 -0
  12. package/dist/routes/pm.js.map +1 -1
  13. package/dist/services/mutation-event-watcher.d.ts +1 -1
  14. package/dist/services/package-catalog.d.ts +108 -0
  15. package/dist/services/package-catalog.js +256 -0
  16. package/dist/services/package-catalog.js.map +1 -0
  17. package/dist/services/pm-runner.d.ts +66 -1
  18. package/dist/services/pm-runner.js +83 -47
  19. package/dist/services/pm-runner.js.map +1 -1
  20. package/dist/services/project-watcher.d.ts +1 -1
  21. package/dist/services/realtime-bus.d.ts +1 -1
  22. package/manifest.json +1 -1
  23. package/package.json +24 -11
  24. package/public/index.html +4 -0
  25. package/public/src/api-types.js +17 -0
  26. package/public/src/api-types.js.map +1 -0
  27. package/public/src/api-types.ts +618 -0
  28. package/public/src/api.js +6 -3
  29. package/public/src/api.js.map +1 -1
  30. package/public/src/api.ts +30 -10
  31. package/public/src/app.js +11 -4
  32. package/public/src/app.js.map +1 -1
  33. package/public/src/app.ts +55 -12
  34. package/public/src/constants.js +1 -1
  35. package/public/src/constants.js.map +1 -1
  36. package/public/src/constants.ts +1 -1
  37. package/public/src/i18n/de.json +25 -1
  38. package/public/src/i18n/en.json +25 -1
  39. package/public/src/i18n/es.json +25 -1
  40. package/public/src/i18n/zh.json +26 -2
  41. package/public/src/i18n.ts +1 -1
  42. package/public/src/sw.ts +2 -0
  43. package/public/src/types.ts +11 -2
  44. package/public/src/views/activity.js +1 -1
  45. package/public/src/views/activity.js.map +1 -1
  46. package/public/src/views/activity.ts +5 -4
  47. package/public/src/views/calendar.js +1 -1
  48. package/public/src/views/calendar.js.map +1 -1
  49. package/public/src/views/calendar.ts +13 -11
  50. package/public/src/views/comments-audit.js.map +1 -1
  51. package/public/src/views/comments-audit.ts +7 -6
  52. package/public/src/views/config.js +1 -1
  53. package/public/src/views/config.js.map +1 -1
  54. package/public/src/views/config.ts +2 -2
  55. package/public/src/views/context.js +3 -3
  56. package/public/src/views/context.js.map +1 -1
  57. package/public/src/views/context.ts +10 -9
  58. package/public/src/views/create.js.map +1 -1
  59. package/public/src/views/create.ts +3 -2
  60. package/public/src/views/dedupe.js +5 -5
  61. package/public/src/views/dedupe.js.map +1 -1
  62. package/public/src/views/dedupe.ts +9 -8
  63. package/public/src/views/export.js.map +1 -1
  64. package/public/src/views/export.ts +2 -2
  65. package/public/src/views/github.js +5 -4
  66. package/public/src/views/github.js.map +1 -1
  67. package/public/src/views/github.ts +20 -18
  68. package/public/src/views/graph.js +7 -9
  69. package/public/src/views/graph.js.map +1 -1
  70. package/public/src/views/graph.ts +11 -13
  71. package/public/src/views/groups.js +1 -1
  72. package/public/src/views/groups.js.map +1 -1
  73. package/public/src/views/groups.ts +9 -8
  74. package/public/src/views/health.js +16 -2
  75. package/public/src/views/health.js.map +1 -1
  76. package/public/src/views/health.ts +26 -8
  77. package/public/src/views/items.js +18 -12
  78. package/public/src/views/items.js.map +1 -1
  79. package/public/src/views/items.ts +65 -35
  80. package/public/src/views/normalize.js.map +1 -1
  81. package/public/src/views/normalize.ts +5 -4
  82. package/public/src/views/packages.js +230 -0
  83. package/public/src/views/packages.js.map +1 -0
  84. package/public/src/views/packages.ts +255 -0
  85. package/public/src/views/plan.js +0 -2
  86. package/public/src/views/plan.js.map +1 -1
  87. package/public/src/views/plan.ts +5 -6
  88. package/public/src/views/projects.js.map +1 -1
  89. package/public/src/views/projects.ts +8 -7
  90. package/public/src/views/router.js +5 -0
  91. package/public/src/views/router.js.map +1 -1
  92. package/public/src/views/router.ts +3 -0
  93. package/public/src/views/search.js.map +1 -1
  94. package/public/src/views/search.ts +3 -2
  95. package/public/src/views/settings.js.map +1 -1
  96. package/public/src/views/settings.ts +8 -6
  97. package/public/src/views/shared.js.map +1 -1
  98. package/public/src/views/shared.ts +4 -3
  99. package/public/src/views/sharing.js.map +1 -1
  100. package/public/src/views/sharing.ts +5 -4
  101. package/public/src/views/stats.js +1 -1
  102. package/public/src/views/stats.js.map +1 -1
  103. package/public/src/views/stats.ts +10 -9
  104. package/public/src/views/templates.js.map +1 -1
  105. package/public/src/views/templates.ts +6 -5
  106. package/public/src/views/validate.js.map +1 -1
  107. package/public/src/views/validate.ts +6 -5
  108. package/public/sw.js +2 -0
package/CHANGELOG.md CHANGED
@@ -1,11 +1,41 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.7.29 - 2026-07-29
4
+
5
+ ### Added
6
+
7
+ - Run the test suite against TypeScript sources behind an uncheatable coverage gate ([pm-web-g6ac](https://github.com/unbraind/pm-web/blob/main/.agents/pm/features/pm-web-g6ac.toon))
8
+ - Catalog every installable pm package including the authoring templates ([pm-web-xe0u](https://github.com/unbraind/pm-web/blob/main/.agents/pm/features/pm-web-xe0u.toon))
9
+
10
+ ### Other
11
+
12
+ - Adopt pm-cli 2026.7.29 ([pm-web-tvj1](https://github.com/unbraind/pm-web/blob/main/.agents/pm/chores/pm-web-tvj1.toon))
13
+ - Type the browser client against the server routes so public/src carries zero any ([pm-web-cvh5](https://github.com/unbraind/pm-web/blob/main/.agents/pm/chores/pm-web-cvh5.toon))
14
+
15
+ ## 2026.7.28 - 2026-07-28
16
+
17
+ ### Added
18
+
19
+ - Per-project package catalog so every pm package is installable from the web UI ([pm-web-28aw](https://github.com/unbraind/pm-web/blob/main/.agents/pm/features/pm-web-28aw.toon))
20
+
21
+ ### Fixed
22
+
23
+ - Require edit permission for package catalog mutations in pm-web ([pm-web-rknk](https://github.com/unbraind/pm-web/blob/main/.agents/pm/issues/pm-web-rknk.toon))
24
+
25
+ ### Other
26
+
27
+ - Adopt pm-cli 2026.7.28 in the hosted web UI package ([pm-web-g7ed](https://github.com/unbraind/pm-web/blob/main/.agents/pm/chores/pm-web-g7ed.toon))
28
+
3
29
  ## 2026.7.27 - 2026-07-27
4
30
 
5
31
  ### Added
6
32
 
7
33
  - Replace per-request pm processes with typed PmClient dispatch and cursor pagination ([pm-web-wyum](https://github.com/unbraind/pm-web/blob/main/.agents/pm/features/pm-web-wyum.toon))
8
34
 
35
+ ### Fixed
36
+
37
+ - web status/stop/doctor shadow the host-owned --json global and fail to register on pm-cli 2026.7.27 ([pm-web-snn2](https://github.com/unbraind/pm-web/blob/main/.agents/pm/issues/pm-web-snn2.toon))
38
+
9
39
  ### Other
10
40
 
11
41
  - Move pm-web onto pm-cli 2026.7.26 and pm-changelog 2026.7.25 ([pm-web-orfk](https://github.com/unbraind/pm-web/blob/main/.agents/pm/chores/pm-web-orfk.toon))
@@ -14,12 +44,18 @@
14
44
 
15
45
  ### Added
16
46
 
47
+ - Full pm ecosystem production pass for pm-web ([pm-web-i98h](https://github.com/unbraind/pm-web/blob/main/.agents/pm/features/pm-web-i98h.toon))
17
48
  - Realtime mutation-event subscription replaces filesystem polling as the primary out-of-band change detector ([pm-web-vwaq](https://github.com/unbraind/pm-web/blob/main/.agents/pm/features/pm-web-vwaq.toon))
18
49
 
50
+ ### Other
51
+
52
+ - Enable governance duplicate-detection advisory mode and restore parent_reference=warn ([pm-web-0nc9](https://github.com/unbraind/pm-web/blob/main/.agents/pm/chores/pm-web-0nc9.toon))
53
+
19
54
  ## 2026.7.25 - 2026-07-25
20
55
 
21
56
  ### Other
22
57
 
58
+ - Adopt --respect-item-release in changelog scripts and bump pm-changelog to 2026.7.24 ([pm-web-hgx4](https://github.com/unbraind/pm-web/blob/main/.agents/pm/chores/pm-web-hgx4.toon))
23
59
  - project-watcher: bounded round-robin scan for projects beyond MAX_FILES_PER_PROJECT (8000) ([pm-web-acwm](https://github.com/unbraind/pm-web/blob/main/.agents/pm/tasks/pm-web-acwm.toon))
24
60
 
25
61
  ## 2026.7.24 - 2026-07-24
@@ -48,6 +84,14 @@
48
84
 
49
85
  - Harden release bun-verify so registry-mirror lag cannot block the GitHub release ([pm-web-rwsr](https://github.com/unbraind/pm-web/blob/main/.agents/pm/chores/pm-web-rwsr.toon))
50
86
 
87
+ ## 2026.7.17-1 - 2026-07-17
88
+
89
+ ### Added
90
+
91
+ - Chinese (zh) locale for package-owned UI strings ([pm-web-t6v6](https://github.com/unbraind/pm-web/blob/main/.agents/pm/features/pm-web-t6v6.toon))
92
+ - Spanish (es) locale for package-owned UI strings ([pm-web-2ut6](https://github.com/unbraind/pm-web/blob/main/.agents/pm/features/pm-web-2ut6.toon))
93
+ - i18n plumbing + German locale for package-owned UI strings ([pm-web-y80b](https://github.com/unbraind/pm-web/blob/main/.agents/pm/features/pm-web-y80b.toon))
94
+
51
95
  ## 2026.7.17 - 2026-07-16
52
96
 
53
97
  ### Added
@@ -84,6 +128,7 @@
84
128
 
85
129
  ### Other
86
130
 
131
+ - Ecosystem release readiness pass 2026-07-06 ([pm-web-f9r8](https://github.com/unbraind/pm-web/blob/main/.agents/pm/tasks/pm-web-f9r8.toon))
87
132
  - Align Node engine with pm CLI runtime ([pm-web-ndeb](https://github.com/unbraind/pm-web/blob/main/.agents/pm/tasks/pm-web-ndeb.toon))
88
133
  - Generate pm-web package declarations and refresh bundled graph toolchain ([pm-web-1xkj](https://github.com/unbraind/pm-web/blob/main/.agents/pm/tasks/pm-web-1xkj.toon))
89
134
  - Regenerate CHANGELOG after pm close item ([pm-web-0ww0](https://github.com/unbraind/pm-web/blob/main/.agents/pm/tasks/pm-web-0ww0.toon))
@@ -112,6 +157,8 @@
112
157
 
113
158
  ### Other
114
159
 
160
+ - Full-cycle hardening wave: pm-web ([pm-web-3x0r](https://github.com/unbraind/pm-web/blob/main/.agents/pm/tasks/pm-web-3x0r.toon))
161
+ - Align pm-web with pm CLI 2026.6.12 release readiness ([pm-web-gtdz](https://github.com/unbraind/pm-web/blob/main/.agents/pm/tasks/pm-web-gtdz.toon))
115
162
  - Restore self-hosted daily release automation ([pm-web-hgjp](https://github.com/unbraind/pm-web/blob/main/.agents/pm/tasks/pm-web-hgjp.toon))
116
163
 
117
164
  ## 2026.6.9 - 2026-06-09
@@ -150,6 +197,12 @@
150
197
  - Implement 'pm web stop' command + pidfile-on-detach ([pm-web-odwq](https://github.com/unbraind/pm-web/blob/main/.agents/pm/tasks/pm-web-odwq.toon))
151
198
  - Implement 'pm web status' command ([pm-web-8eqs](https://github.com/unbraind/pm-web/blob/main/.agents/pm/tasks/pm-web-8eqs.toon))
152
199
 
200
+ ## 2026.6.2 - 2026-06-02
201
+
202
+ ### Added
203
+
204
+ - Add kanban board + full-text search data endpoints (contracts-driven) ([pm-web-9sno](https://github.com/unbraind/pm-web/blob/main/.agents/pm/features/pm-web-9sno.toon))
205
+
153
206
  ## 2026.5.30 - 2026-05-30
154
207
 
155
208
  ### Fixed
package/README.md CHANGED
@@ -123,7 +123,6 @@ pm web doctor --json
123
123
  | `NEO4J_URI` | No | Neo4j Bolt URI for graph sync |
124
124
  | `NEO4J_USER` / `NEO4J_USERNAME` | No | Neo4j username |
125
125
  | `NEO4J_PASSWORD` | No | Neo4j password |
126
- | `PM_GRAPH_EXTENSION_PATH` | No | Bundled pm-graph extension path, default `extensions/pm-graph` |
127
126
  | `PM_WEB_LEGAL_DIR` | Production | Absolute path to a complete, private, operator-reviewed legal-page overlay; see `docs/LEGAL_DEPLOYMENT_BOUNDARY.md` |
128
127
  | `OIDC_ISSUER` | No | Provider issuer URL; setting any OIDC variable enables strict configuration validation |
129
128
  | `OIDC_CLIENT_ID` / `OIDC_CLIENT_SECRET` | With OIDC | OIDC confidential client credentials |
@@ -132,7 +131,7 @@ pm web doctor --json
132
131
  | `OIDC_SCOPES` | No | Requested scopes (default: `openid profile email`) |
133
132
  | `OIDC_REQUIRE_VERIFIED_EMAIL` | No | Reject identities without a provider-verified email when `true` |
134
133
 
135
- New pm-web projects configure local Ollama search automatically and install the bundled `pm-graph` extension into the project workspace. Neo4j graph rows are scoped per pm-web project so syncing one project does not overwrite another.
134
+ New pm-web projects configure local Ollama search automatically and install the `pm-graph` package into the project workspace (from npm, via the per-project package catalog). Neo4j graph rows are scoped per pm-web project so syncing one project does not overwrite another.
136
135
 
137
136
  Saved GitHub personal access tokens are encrypted at rest before they are written to PostgreSQL. Existing plaintext tokens from older installs still work when read, and are replaced with encrypted values the next time the user saves a token.
138
137
 
package/dist/app.js CHANGED
@@ -7,6 +7,7 @@ import { authRouter } from "./routes/auth.js";
7
7
  import { oidcRouter } from "./routes/oidc.js";
8
8
  import { projectsRouter } from "./routes/projects.js";
9
9
  import { pmRouter } from "./routes/pm.js";
10
+ import { extensionsRouter } from "./routes/extensions.js";
10
11
  import { groupsRouter } from "./routes/groups.js";
11
12
  import { sharesRouter, sharedWithMeRouter } from "./routes/sharing.js";
12
13
  import { githubRouter } from "./routes/github.js";
@@ -134,6 +135,7 @@ export function createApp() {
134
135
  app.use("/api/auth", authRouter);
135
136
  app.use("/api/projects", projectsRouter);
136
137
  app.use("/api/projects/:projectId/pm", pmRouter);
138
+ app.use("/api/projects/:projectId/extensions", extensionsRouter);
137
139
  app.use("/api/groups", groupsRouter);
138
140
  app.use("/api/projects/:id/shares", sharesRouter);
139
141
  app.use("/api/shared", sharedWithMeRouter);
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -176,7 +176,7 @@ function processAlive(pid) {
176
176
  }
177
177
  export default defineExtension({
178
178
  name: "pm-web",
179
- version: "2026.7.27",
179
+ version: "2026.7.29",
180
180
  activate(api) {
181
181
  // -----------------------------------------------------------------------
182
182
  // Command: pm web [--port <port>] [--detach]
package/dist/oidc.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"oidc.js","sourceRoot":"","sources":["../src/oidc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oidc.js","sourceRoot":"","sources":["../src/oidc.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,MAAM,iBAAiB,GAAG;IACxB,aAAa;IACb,gBAAgB;IAChB,oBAAoB;IACpB,mBAAmB;IACnB,oBAAoB;CACZ,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AACjD,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACpD,MAAM,kBAAkB,GAAG,EAAE,CAAC;AA4D9B,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,IAAI,CAAS;IACb,MAAM,CAAS;IACxB,YACE,IAAY,EACZ,OAAe,EACf,MAAM,GAAG,GAAG;QAEZ,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,SAAS,YAAY,CAAC,KAAyB,EAAE,IAAY;IAC3D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3E,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5E,MAAM,IAAI,sBAAsB,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW,EAAE,IAAY,EAAE,UAAmB;IACtE,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,sBAAsB,CAAC,GAAG,IAAI,2BAA2B,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3D,MAAM,IAAI,sBAAsB,CAAC,GAAG,IAAI,wDAAwD,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,UAAU,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,sBAAsB,CAAC,GAAG,IAAI,gCAAgC,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,sBAAsB,CAAC,GAAG,IAAI,0BAA0B,CAAC,CAAC;IACtE,CAAC;IACD,yEAAyE;IACzE,0EAA0E;IAC1E,0EAA0E;IAC1E,yEAAyE;IACzE,OAAO,GAAG,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACtD,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,mBAAmB,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG;IACtE,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAEpD,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,6CAA6C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACnF,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY;YAAE,MAAM,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC7E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;QACjD,MAAM,YAAY,GAAG,GAAG,CAAC,kBAAmB,CAAC,IAAI,EAAE,CAAC;QACpD,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC;YACjD,MAAM,IAAI,sBAAsB,CAAC,+CAA+C,CAAC,CAAC;QACpF,CAAC;QACD,IACE,YAAY,KAAK,GAAG,CAAC,kBAAmB,CAAC,IAAI,EAAE;YAC/C,CAAC,GAAG,CAAC,UAAU,IAAI,YAAY,KAAK,GAAG,CAAC,UAAU,CAAC,EACnD,CAAC;YACD,MAAM,IAAI,sBAAsB,CAC9B,gFAAgF,CACjF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,sBAAsB,CAAC;aACvD,KAAK,CAAC,KAAK,CAAC;aACZ,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,OAAO,CAAC,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,sBAAsB,CAAC,kCAAkC,CAAC,CAAC;QACvE,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,WAAY,EAAE,aAAa,EAAE,UAAU,CAAC;YACrE,QAAQ,EAAE,GAAG,CAAC,cAAe,CAAC,IAAI,EAAE;YACpC,YAAY,EAAE,GAAG,CAAC,kBAAmB,CAAC,IAAI,EAAE;YAC5C,WAAW,EAAE,gBAAgB,CAAC,GAAG,CAAC,iBAAkB,EAAE,mBAAmB,EAAE,UAAU,CAAC;YACtF,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YACxB,YAAY;YACZ,oBAAoB,EAAE,YAAY,CAChC,GAAG,CAAC,2BAA2B,EAC/B,6BAA6B,CAC9B;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,GAAG,CAAC,QAAQ,KAAK,YAAY;YAAE,MAAM,KAAK,CAAC;QAC/C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC;SAClF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,uBAAuB,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG;IAC1E,KAAK,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG;IAInE,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;AAChF,CAAC;AAED,SAAS,IAAI,CAAC,KAAa,EAAE,MAAc;IACzC,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAyB,EAAE,MAAc;IAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACjF,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAA0B,EAC1B,MAAc,EACd,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAEhB,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,aAAa,CAAC,sBAAsB,EAAE,+BAA+B,CAAC,CAAC;IAC9F,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,aAAa,CAAC,sBAAsB,EAAE,+BAA+B,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,IACE,aAAa,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM;QAC7C,CAAC,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,aAAa,CAAC,EACrD,CAAC;QACD,MAAM,IAAI,aAAa,CAAC,sBAAsB,EAAE,+BAA+B,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACzE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,aAAa,CAAC,sBAAsB,EAAE,+BAA+B,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,aAAa,CAAC,sBAAsB,EAAE,+BAA+B,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,SAAS,GAAG,OAAoC,CAAC;IACvD,IACE,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ;QACnC,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ;QACnC,OAAO,SAAS,CAAC,YAAY,KAAK,QAAQ;QAC1C,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ,EACvC,CAAC;QACD,MAAM,IAAI,aAAa,CAAC,sBAAsB,EAAE,+BAA+B,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,SAAS,CAAC,SAAS,GAAG,GAAG,GAAG,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC,SAAS,GAAG,qBAAqB,EAAE,CAAC;QAC5F,MAAM,IAAI,aAAa,CAAC,sBAAsB,EAAE,iCAAiC,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,SAA6B,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,YAAoB;IAChD,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClE,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;QACnD,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;QACnD,YAAY;QACZ,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC;QAC1C,SAAS,EAAE,GAAG;KACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAsB;IAMpD,OAAO;QACL,gBAAgB,EAAE,IAAI,CAAC,YAAY;QACnC,aAAa,EAAE,IAAI,CAAC,KAAK;QACzB,aAAa,EAAE,IAAI,CAAC,KAAK;QACzB,eAAe,EAAE,IAAI;KACtB,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,KAAa;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,IAAI,aAAa,CAAC,kBAAkB,EAAE,YAAY,KAAK,oBAAoB,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAkB,EAClB,QAA4E,EAC5E,aAAqB,EACrB,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAE1C,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjD,IAAI,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,IAAI,aAAa,CAAC,gBAAgB,EAAE,+CAA+C,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC5B,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,kDAAkD,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,aAAa,CAAC,kBAAkB,EAAE,iDAAiD,CAAC,CAAC;IACjG,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC5D,MAAM,IAAI,aAAa,CAAC,kBAAkB,EAAE,uCAAuC,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,GAAG,UAAU,GAAG,kBAAkB,EAAE,CAAC;QACnF,MAAM,IAAI,aAAa,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,GAAG,UAAU,GAAG,kBAAkB,EAAE,CAAC;QACnF,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,iCAAiC,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,GAAG,UAAU,GAAG,kBAAkB,EAAE,CAAC;QACnF,MAAM,IAAI,aAAa,CAAC,uBAAuB,EAAE,4BAA4B,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE;QACnE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,CAAC,CAAC,IAAI,CAAC;IACT,IAAI,KAAK,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,aAAa,CAAC,qBAAqB,EAAE,kCAAkC,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,KAAK,IAAI,CAAC;IACrD,IAAI,QAAQ,CAAC,oBAAoB,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,aAAa,CACrB,yBAAyB,EACzB,6DAA6D,EAC7D,GAAG,CACJ,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,kBAAkB,CAAC;SAC9D,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAuB,CAAC;IACpF,OAAO;QACL,MAAM;QACN,OAAO;QACP,KAAK;QACL,aAAa;QACb,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,IAAI;KAC9C,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc,EAAE,OAAe;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzF,OAAO,QAAQ,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC;AACrD,CAAC;AAED,SAAS,0BAA0B;IACjC,OAAO,SAAS,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;AACjE,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,MAAyB,EAAE,GAAW,EAAE,MAAiB;IAChF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAY,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAChC,CAAC;AAED,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAyB,EACzB,QAA+B;IAE/B,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,uDAAuD,EAAE;YAC1E,QAAQ,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE;SAC9C,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,yEAAyE;YACzE,yEAAyE;YACzE,wEAAwE;YACxE,+CAA+C;YAC/C,MAAM,MAAM,CAAC,KAAK,CAAC,uDAAuD,EAAE;gBAC1E,cAAc,QAAQ,CAAC,KAAK,EAAE;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,MAAM,EACN;;;;mBAIa,EACb,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CACpC,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,CAAC,KAAK,CAChB;;6CAEqC,EACrC,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CACpD,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,IAAI,GAAqB,IAAI,CAAC;QAClC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,GAAG,MAAM,SAAS,CACpB,MAAM,EACN;qDAC6C,EAC7C,CAAC,QAAQ,CAAC,KAAK,CAAC,CACjB,CAAC;YACF,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;gBACpC,MAAM,IAAI,aAAa,CACrB,4BAA4B,EAC5B,+EAA+E,EAC/E,GAAG,CACJ,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,kBAAkB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtF,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;YACzF,IAAI,GAAG,MAAM,SAAS,CACpB,MAAM,EACN;;iEAEyD,EACzD,CAAC,KAAK,EAAE,0BAA0B,EAAE,EAAE,WAAW,CAAC,CACnD,CAAC;YACF,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,MAAM,CAAC,KAAK,CAChB;+BACyB,EACzB,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAC7D,CAAC;QACF,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAK,KAA2B,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAClD,MAAM,IAAI,aAAa,CACrB,oBAAoB,EACpB,oEAAoE,EACpE,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type PackageCatalogEntry } from "../services/package-catalog.ts";
2
+ declare const router: import("express-serve-static-core").Router;
3
+ /** The realtime event type broadcast on every successful extension mutation. */
4
+ export declare const EXTENSIONS_CHANGED_EVENT = "extensions-changed";
5
+ /** The catalog entry joined with its live per-project state, for the GET list. */
6
+ export interface PackageCatalogRow extends PackageCatalogEntry {
7
+ installed: boolean;
8
+ version: string | null;
9
+ active: boolean;
10
+ enabled: boolean;
11
+ runtimeActive: boolean;
12
+ activationStatus: string | null;
13
+ managed: boolean;
14
+ sourceKind: string | null;
15
+ }
16
+ export { router as extensionsRouter };
@@ -0,0 +1,214 @@
1
+ // ═══════════════════════════════════════════════════════════════
2
+ // EXTENSIONS ROUTES — per-project pm package catalog management
3
+ // ═══════════════════════════════════════════════════════════════
4
+ //
5
+ // pm-web used to support exactly one pm package — a vendored copy of pm-graph —
6
+ // and offered no way to install any other. These routes expose the full pm
7
+ // package catalog (src/services/package-catalog.ts) joined with the live
8
+ // per-project state from `pm extension --json`, and let a user install,
9
+ // activate, deactivate, and uninstall packages for a project.
10
+ //
11
+ // SECURITY-CRITICAL: every `:name` route parameter is validated against the
12
+ // catalog BEFORE it is passed to any pm command. A catalog lookup miss must
13
+ // 400 before any process spawn — a user-supplied string can never be
14
+ // interpolated into an install target. The install target is the matched
15
+ // entry's own `npmSpec` constant, so the spawn argument always comes from the
16
+ // catalog, never from the raw request string.
17
+ //
18
+ // The router is mounted under the same project-scoped path as the pm router
19
+ // (`/api/projects/:projectId/extensions`), so `:projectId` is available via
20
+ // Express mergeParams. Authorization mirrors src/routes/pm.ts: a user must own
21
+ // or be shared on the project; one user can never touch another user's
22
+ // project. Every successful mutation publishes on the existing realtime bus
23
+ // (src/services/sse.ts) so all collaborators on the project see the change
24
+ // live — consistent with how item mutations already broadcast.
25
+ import { Router } from "express";
26
+ import { requireAuth } from "../middleware/auth.js";
27
+ import { verifyProjectAccess } from "./projects.js";
28
+ import { routeParam } from "./route-params.js";
29
+ import { INSTALL_COMMAND_TIMEOUT_MS, readProjectExtensionStates, runPm, getProjectDir, } from "../services/pm-runner.js";
30
+ import { PACKAGE_CATALOG, findCatalogEntry, } from "../services/package-catalog.js";
31
+ import { broadcastProjectEvent } from "../services/sse.js";
32
+ const router = Router({ mergeParams: true });
33
+ router.use(requireAuth);
34
+ /**
35
+ * Resolve and validate `:name` against the catalog exactly once per request.
36
+ *
37
+ * SECURITY GATE. Express runs a `router.param` callback before any matching
38
+ * route handler, so a mutation route physically cannot run without the
39
+ * validated entry — the previous per-handler lookup relied on every future
40
+ * route remembering to repeat it, and a route that forgot would pass an
41
+ * unvalidated string toward a process spawn.
42
+ *
43
+ * The resolved entry is stashed on the response so handlers read a catalog
44
+ * constant rather than the request string.
45
+ */
46
+ router.param("name", (req, res, next, value) => {
47
+ const entry = findCatalogEntry(value);
48
+ if (!entry) {
49
+ res.status(400).json({ error: `Unknown package: ${value}` });
50
+ return;
51
+ }
52
+ res.locals.catalogEntry = entry;
53
+ next();
54
+ });
55
+ /** The catalog entry resolved by the `:name` param gate above. */
56
+ function catalogEntry(res) {
57
+ return res.locals.catalogEntry;
58
+ }
59
+ /** The realtime event type broadcast on every successful extension mutation. */
60
+ export const EXTENSIONS_CHANGED_EVENT = "extensions-changed";
61
+ /** Verify project access (owner or shared) and return the pm-runner ref. */
62
+ async function verifyProject(userId, projectId) {
63
+ const access = await verifyProjectAccess(userId, projectId);
64
+ if (!access)
65
+ return null;
66
+ return {
67
+ slug: access.slug,
68
+ prefix: access.prefix,
69
+ ownerUserId: access.ownerUserId,
70
+ permission: access.permission,
71
+ };
72
+ }
73
+ /**
74
+ * Resolve the project for a mutating request, enforcing edit permission.
75
+ *
76
+ * Installing, activating, or removing a package changes the workspace for
77
+ * *every* collaborator, so it is an edit-level action. Sharing grants either
78
+ * `"view"` or `"edit"`; without this check a view-only collaborator could
79
+ * install or uninstall packages on someone else's project. Mirrors the
80
+ * guard `routes/pm.ts` applies to item mutations.
81
+ *
82
+ * Responds and returns `null` when access is denied, so callers `return`
83
+ * immediately on a null result.
84
+ */
85
+ async function requireEditableProject(req, res) {
86
+ const project = await verifyProject(req.user.userId, routeParam(req, "projectId"));
87
+ if (!project) {
88
+ res.status(404).json({ error: "Project not found" });
89
+ return null;
90
+ }
91
+ if (project.permission !== "edit") {
92
+ res.status(403).json({ error: "This project is shared as view-only." });
93
+ return null;
94
+ }
95
+ return project;
96
+ }
97
+ function toRow(entry, state) {
98
+ return {
99
+ ...entry,
100
+ installed: Boolean(state),
101
+ version: state?.version ?? null,
102
+ active: Boolean(state?.active),
103
+ enabled: Boolean(state?.enabled),
104
+ runtimeActive: Boolean(state?.runtime_active),
105
+ activationStatus: state?.activation_status ?? null,
106
+ managed: Boolean(state?.managed),
107
+ sourceKind: state?.source?.kind ?? null,
108
+ };
109
+ }
110
+ /** Broadcast an extensions-changed event to all project collaborators. */
111
+ function broadcastExtensionsChanged(projectId, userId, name, operation) {
112
+ broadcastProjectEvent(projectId, {
113
+ type: EXTENSIONS_CHANGED_EVENT,
114
+ data: { userId, name, operation },
115
+ });
116
+ }
117
+ // GET /api/projects/:projectId/extensions
118
+ // Catalog joined with live `pm extension --json` state.
119
+ router.get("/", async (req, res) => {
120
+ // Read-only: a view-only collaborator may see which packages a project uses,
121
+ // they just cannot change them.
122
+ const project = await verifyProject(req.user.userId, routeParam(req, "projectId"));
123
+ if (!project) {
124
+ res.status(404).json({ error: "Project not found" });
125
+ return;
126
+ }
127
+ const { ok, states, error } = await readProjectExtensionStates(getProjectDir(project.ownerUserId, project.slug));
128
+ const rows = PACKAGE_CATALOG.map((entry) => toRow(entry, states.get(entry.name)));
129
+ // Surface a failed read rather than rendering every package as "not
130
+ // installed", which is indistinguishable from a healthy empty project.
131
+ res.json(ok ? { packages: rows } : { packages: rows, stateError: error });
132
+ });
133
+ // POST /api/projects/:projectId/extensions/:name/install
134
+ router.post("/:name/install", async (req, res) => {
135
+ const project = await requireEditableProject(req, res);
136
+ if (!project)
137
+ return;
138
+ const entry = catalogEntry(res);
139
+ const result = await runPm({
140
+ // entry.npmSpec is a catalog constant, never the request string.
141
+ args: ["install", entry.npmSpec, "--project"],
142
+ userId: project.ownerUserId,
143
+ slug: project.slug,
144
+ jsonOutput: true,
145
+ // Installs resolve and download from the npm registry; the 30s default is
146
+ // sized for local commands and leaves too thin a margin for a cold cache.
147
+ timeoutMs: INSTALL_COMMAND_TIMEOUT_MS,
148
+ });
149
+ if (!result.ok) {
150
+ res.status(400).json({ error: result.stderr || `Failed to install ${entry.name}` });
151
+ return;
152
+ }
153
+ broadcastExtensionsChanged(routeParam(req, "projectId"), req.user.userId, entry.name, "install");
154
+ res.status(201).json(result.parsed || { ok: true, name: entry.name });
155
+ });
156
+ // POST /api/projects/:projectId/extensions/:name/activate
157
+ router.post("/:name/activate", async (req, res) => {
158
+ const project = await requireEditableProject(req, res);
159
+ if (!project)
160
+ return;
161
+ const entry = catalogEntry(res);
162
+ const result = await runPm({
163
+ args: ["extension", "activate", entry.name, "--project"],
164
+ userId: project.ownerUserId,
165
+ slug: project.slug,
166
+ jsonOutput: true,
167
+ });
168
+ if (!result.ok) {
169
+ res.status(400).json({ error: result.stderr || `Failed to activate ${entry.name}` });
170
+ return;
171
+ }
172
+ broadcastExtensionsChanged(routeParam(req, "projectId"), req.user.userId, entry.name, "activate");
173
+ res.json(result.parsed || { ok: true, name: entry.name });
174
+ });
175
+ // POST /api/projects/:projectId/extensions/:name/deactivate
176
+ router.post("/:name/deactivate", async (req, res) => {
177
+ const project = await requireEditableProject(req, res);
178
+ if (!project)
179
+ return;
180
+ const entry = catalogEntry(res);
181
+ const result = await runPm({
182
+ args: ["extension", "deactivate", entry.name, "--project"],
183
+ userId: project.ownerUserId,
184
+ slug: project.slug,
185
+ jsonOutput: true,
186
+ });
187
+ if (!result.ok) {
188
+ res.status(400).json({ error: result.stderr || `Failed to deactivate ${entry.name}` });
189
+ return;
190
+ }
191
+ broadcastExtensionsChanged(routeParam(req, "projectId"), req.user.userId, entry.name, "deactivate");
192
+ res.json(result.parsed || { ok: true, name: entry.name });
193
+ });
194
+ // DELETE /api/projects/:projectId/extensions/:name
195
+ router.delete("/:name", async (req, res) => {
196
+ const project = await requireEditableProject(req, res);
197
+ if (!project)
198
+ return;
199
+ const entry = catalogEntry(res);
200
+ const result = await runPm({
201
+ args: ["extension", "uninstall", entry.name, "--project"],
202
+ userId: project.ownerUserId,
203
+ slug: project.slug,
204
+ jsonOutput: true,
205
+ });
206
+ if (!result.ok) {
207
+ res.status(400).json({ error: result.stderr || `Failed to uninstall ${entry.name}` });
208
+ return;
209
+ }
210
+ broadcastExtensionsChanged(routeParam(req, "projectId"), req.user.userId, entry.name, "uninstall");
211
+ res.json(result.parsed || { ok: true, name: entry.name });
212
+ });
213
+ export { router as extensionsRouter };
214
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../src/routes/extensions.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,gEAAgE;AAChE,kEAAkE;AAClE,EAAE;AACF,gFAAgF;AAChF,2EAA2E;AAC3E,yEAAyE;AACzE,wEAAwE;AACxE,8DAA8D;AAC9D,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,qEAAqE;AACrE,yEAAyE;AACzE,8EAA8E;AAC9E,8CAA8C;AAC9C,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,uEAAuE;AACvE,4EAA4E;AAC5E,2EAA2E;AAC3E,+DAA+D;AAE/D,OAAO,EAAE,MAAM,EAAiB,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,WAAW,EAAoB,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,KAAK,EACL,aAAa,GAEd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,eAAe,EACf,gBAAgB,GAEjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAExB;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAa,EAAE,EAAE;IACrD,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IACD,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;IAChC,IAAI,EAAE,CAAC;AACT,CAAC,CAAC,CAAC;AAEH,kEAAkE;AAClE,SAAS,YAAY,CAAC,GAAa;IACjC,OAAO,GAAG,CAAC,MAAM,CAAC,YAAmC,CAAC;AACxD,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;AAU7D,4EAA4E;AAC5E,KAAK,UAAU,aAAa,CAC1B,MAAc,EACd,SAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,sBAAsB,CACnC,GAAgB,EAChB,GAAa;IAEb,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,IAAK,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAcD,SAAS,KAAK,CACZ,KAA0B,EAC1B,KAAiC;IAEjC,OAAO;QACL,GAAG,KAAK;QACR,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,IAAI;QAC/B,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;QAC9B,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;QAChC,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE,cAAc,CAAC;QAC7C,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,IAAI,IAAI;QAClD,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;QAChC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI;KACxC,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,SAAS,0BAA0B,CAAC,SAAiB,EAAE,MAAc,EAAE,IAAY,EAAE,SAAiB;IACpG,qBAAqB,CAAC,SAAS,EAAE;QAC/B,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;KAClC,CAAC,CAAC;AACL,CAAC;AAED,0CAA0C;AAC1C,wDAAwD;AACxD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAgB,EAAE,GAAG,EAAE,EAAE;IAC9C,6EAA6E;IAC7E,gCAAgC;IAChC,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,CAAC,IAAK,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IACpF,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC/E,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,0BAA0B,CAC5D,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CACjD,CAAC;IACF,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClF,oEAAoE;IACpE,uEAAuE;IACvE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC;AAEH,yDAAyD;AACzD,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAgB,EAAE,GAAG,EAAE,EAAE;IAC5D,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;QACzB,iEAAiE;QACjE,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC;QAC7C,MAAM,EAAE,OAAO,CAAC,WAAW;QAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,0EAA0E;QAC1E,0EAA0E;QAC1E,SAAS,EAAE,0BAA0B;KACtC,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,qBAAqB,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACpF,OAAO;IACT,CAAC;IACD,0BAA0B,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,IAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC;AAEH,0DAA0D;AAC1D,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAgB,EAAE,GAAG,EAAE,EAAE;IAC7D,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;QACzB,IAAI,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC;QACxD,MAAM,EAAE,OAAO,CAAC,WAAW;QAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,sBAAsB,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrF,OAAO;IACT,CAAC;IACD,0BAA0B,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,IAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACnG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,4DAA4D;AAC5D,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,GAAgB,EAAE,GAAG,EAAE,EAAE;IAC/D,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;QACzB,IAAI,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC;QAC1D,MAAM,EAAE,OAAO,CAAC,WAAW;QAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,wBAAwB,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvF,OAAO;IACT,CAAC;IACD,0BAA0B,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,IAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACrG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,mDAAmD;AACnD,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAgB,EAAE,GAAG,EAAE,EAAE;IACtD,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;QACzB,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC;QACzD,MAAM,EAAE,OAAO,CAAC,WAAW;QAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,uBAAuB,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IACD,0BAA0B,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG,CAAC,IAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACpG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { OidcFlowError } from "../oidc.js";
1
+ import { OidcFlowError } from "../oidc.ts";
2
2
  declare const router: import("express-serve-static-core").Router;
3
3
  export declare function providerAuthorizationError(value: unknown): OidcFlowError | null;
4
4
  export { router as oidcRouter };
package/dist/routes/pm.js CHANGED
@@ -405,6 +405,131 @@ router.get("/schema", async (req, res) => {
405
405
  canceledStatus: typeof rt?.["canceled_status"] === "string" ? rt["canceled_status"] : "canceled",
406
406
  });
407
407
  });
408
+ /**
409
+ * Reject a user-supplied value that would be parsed as a CLI flag.
410
+ *
411
+ * `runPm` passes an argv array rather than a shell string, so there is no shell
412
+ * injection here — but a value beginning with `-` would still be consumed by
413
+ * commander as an option instead of the positional it is meant to be. Item ids
414
+ * and schema names are never legitimately `-`-prefixed.
415
+ */
416
+ function isFlagLike(value) {
417
+ return value.startsWith("-");
418
+ }
419
+ /**
420
+ * Whether a custom item type's storage folder is a safe relative subpath.
421
+ *
422
+ * This is a **tenant boundary**, not a style check. `pm schema add-type --folder`
423
+ * is not path-validated by the CLI: a `..` segment is honoured, so a subsequent
424
+ * `pm create` of that type writes the item's `.toon` outside the pm root.
425
+ * Verified against pm-cli 2026.7.28 — `--folder ../../../../../../tmp/x` placed
426
+ * the item six levels above the workspace, while the history file stayed inside.
427
+ * (Absolute paths are safe: the CLI strips the leading separator and treats them
428
+ * as relative to the pm root.)
429
+ *
430
+ * Project workspaces here live at `PROJECTS_ROOT/<ownerUserId>/<slug>/.agents/pm`,
431
+ * so an unchecked `..` would let one tenant write into another tenant's project.
432
+ * Only plain nested segments are accepted.
433
+ */
434
+ function isSafeTypeFolder(folder) {
435
+ if (folder.startsWith("/") || folder.startsWith("\\"))
436
+ return false;
437
+ // Reject drive-letter and UNC forms so behaviour does not depend on the host OS.
438
+ if (/^[a-zA-Z]:/.test(folder))
439
+ return false;
440
+ const segments = folder.split(/[/\\]/);
441
+ return segments.every((segment) => segment !== "" && segment !== "." && segment !== "..");
442
+ }
443
+ /**
444
+ * POST /api/projects/:projectId/pm/schema/add-type
445
+ *
446
+ * Registers a custom item type via `pm schema add-type <name>`. The config view
447
+ * has offered this control since it shipped, but the route was never mounted, so
448
+ * the button failed for every user; see pm-web#71.
449
+ *
450
+ * Mutating, so the router-level guard above has already rejected view-only
451
+ * collaborators with 403 before this handler runs.
452
+ */
453
+ router.post("/schema/add-type", async (req, res) => {
454
+ const project = await verifyProject(req.user.userId, routeParam(req, "projectId"));
455
+ if (!project) {
456
+ res.status(404).json({ error: "Project not found" });
457
+ return;
458
+ }
459
+ const body = req.body;
460
+ const name = typeof body.name === "string" ? body.name.trim() : "";
461
+ if (!name) {
462
+ res.status(400).json({ error: "name is required" });
463
+ return;
464
+ }
465
+ if (isFlagLike(name)) {
466
+ res.status(400).json({ error: "name must not start with '-'" });
467
+ return;
468
+ }
469
+ // `--folder` escapes the workspace if it contains `..` (see isSafeTypeFolder),
470
+ // which in this multi-tenant layout would reach another user's project.
471
+ const folder = typeof body.folder === "string" ? body.folder.trim() : "";
472
+ if (folder !== "" && !isSafeTypeFolder(folder)) {
473
+ res.status(400).json({ error: "folder must be a relative path without '..' segments" });
474
+ return;
475
+ }
476
+ const args = ["schema", "add-type", name];
477
+ const stringFlags = [
478
+ [body.description, "--description"],
479
+ [body.defaultStatus, "--default-status"],
480
+ [folder, "--folder"],
481
+ ];
482
+ for (const [raw, flag] of stringFlags) {
483
+ if (typeof raw === "string" && raw.trim() !== "")
484
+ args.push(flag, raw.trim());
485
+ }
486
+ // `--alias` is repeatable; the client sends the parsed array.
487
+ if (Array.isArray(body.aliases)) {
488
+ for (const alias of body.aliases) {
489
+ if (typeof alias === "string" && alias.trim() !== "")
490
+ args.push("--alias", alias.trim());
491
+ }
492
+ }
493
+ const result = await runPm({ args, userId: project.ownerUserId, slug: project.slug, jsonOutput: true });
494
+ if (!result.ok) {
495
+ res.status(400).json({ error: result.stderr || "pm schema add-type failed" });
496
+ return;
497
+ }
498
+ res.json(result.parsed || { ok: true, name });
499
+ });
500
+ /**
501
+ * POST /api/projects/:projectId/pm/items/:itemId/history-repair
502
+ *
503
+ * Re-anchors a drifted item history chain via `pm history-repair <id>`, with
504
+ * `{ dryRun: true }` mapping to `--dry-run` so the health view can preview the
505
+ * impact before writing. Like add-type above, the health view rendered Repair and
506
+ * Dry Run controls against a route that was never mounted.
507
+ */
508
+ router.post("/items/:itemId/history-repair", async (req, res) => {
509
+ const project = await verifyProject(req.user.userId, routeParam(req, "projectId"));
510
+ if (!project) {
511
+ res.status(404).json({ error: "Project not found" });
512
+ return;
513
+ }
514
+ const itemId = routeParam(req, "itemId").trim();
515
+ if (!itemId) {
516
+ res.status(400).json({ error: "itemId is required" });
517
+ return;
518
+ }
519
+ if (isFlagLike(itemId)) {
520
+ res.status(400).json({ error: "itemId must not start with '-'" });
521
+ return;
522
+ }
523
+ const args = ["history-repair", itemId];
524
+ if (req.body?.dryRun === true)
525
+ args.push("--dry-run");
526
+ const result = await runPm({ args, userId: project.ownerUserId, slug: project.slug, jsonOutput: true });
527
+ if (!result.ok) {
528
+ res.status(400).json({ error: result.stderr || "pm history-repair failed" });
529
+ return;
530
+ }
531
+ res.json(result.parsed || { ok: true, id: itemId });
532
+ });
408
533
  // GET /api/projects/:projectId/pm/list
409
534
  router.get("/list", async (req, res) => {
410
535
  const project = await verifyProject(req.user.userId, routeParam(req, "projectId"));