@unbrained/pm-cli 2026.3.9

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 (245) hide show
  1. package/.pi/extensions/pm-cli/index.ts +778 -0
  2. package/AGENTS.md +475 -0
  3. package/LICENSE +21 -0
  4. package/PRD.md +1390 -0
  5. package/README.md +655 -0
  6. package/dist/cli/commands/activity.d.ts +14 -0
  7. package/dist/cli/commands/activity.js +80 -0
  8. package/dist/cli/commands/activity.js.map +1 -0
  9. package/dist/cli/commands/append.d.ts +13 -0
  10. package/dist/cli/commands/append.js +46 -0
  11. package/dist/cli/commands/append.js.map +1 -0
  12. package/dist/cli/commands/beads.d.ts +15 -0
  13. package/dist/cli/commands/beads.js +475 -0
  14. package/dist/cli/commands/beads.js.map +1 -0
  15. package/dist/cli/commands/claim.d.ts +19 -0
  16. package/dist/cli/commands/claim.js +79 -0
  17. package/dist/cli/commands/claim.js.map +1 -0
  18. package/dist/cli/commands/close.d.ts +12 -0
  19. package/dist/cli/commands/close.js +58 -0
  20. package/dist/cli/commands/close.js.map +1 -0
  21. package/dist/cli/commands/comments.d.ts +15 -0
  22. package/dist/cli/commands/comments.js +80 -0
  23. package/dist/cli/commands/comments.js.map +1 -0
  24. package/dist/cli/commands/completion.d.ts +10 -0
  25. package/dist/cli/commands/completion.js +469 -0
  26. package/dist/cli/commands/completion.js.map +1 -0
  27. package/dist/cli/commands/config.d.ts +15 -0
  28. package/dist/cli/commands/config.js +72 -0
  29. package/dist/cli/commands/config.js.map +1 -0
  30. package/dist/cli/commands/create.d.ts +60 -0
  31. package/dist/cli/commands/create.js +456 -0
  32. package/dist/cli/commands/create.js.map +1 -0
  33. package/dist/cli/commands/delete.d.ts +12 -0
  34. package/dist/cli/commands/delete.js +33 -0
  35. package/dist/cli/commands/delete.js.map +1 -0
  36. package/dist/cli/commands/docs.d.ts +16 -0
  37. package/dist/cli/commands/docs.js +113 -0
  38. package/dist/cli/commands/docs.js.map +1 -0
  39. package/dist/cli/commands/files.d.ts +17 -0
  40. package/dist/cli/commands/files.js +113 -0
  41. package/dist/cli/commands/files.js.map +1 -0
  42. package/dist/cli/commands/gc.d.ts +9 -0
  43. package/dist/cli/commands/gc.js +80 -0
  44. package/dist/cli/commands/gc.js.map +1 -0
  45. package/dist/cli/commands/get.d.ts +12 -0
  46. package/dist/cli/commands/get.js +28 -0
  47. package/dist/cli/commands/get.js.map +1 -0
  48. package/dist/cli/commands/health.d.ts +15 -0
  49. package/dist/cli/commands/health.js +288 -0
  50. package/dist/cli/commands/health.js.map +1 -0
  51. package/dist/cli/commands/history.d.ts +13 -0
  52. package/dist/cli/commands/history.js +72 -0
  53. package/dist/cli/commands/history.js.map +1 -0
  54. package/dist/cli/commands/index.d.ts +26 -0
  55. package/dist/cli/commands/index.js +27 -0
  56. package/dist/cli/commands/index.js.map +1 -0
  57. package/dist/cli/commands/init.d.ts +10 -0
  58. package/dist/cli/commands/init.js +59 -0
  59. package/dist/cli/commands/init.js.map +1 -0
  60. package/dist/cli/commands/install.d.ts +18 -0
  61. package/dist/cli/commands/install.js +87 -0
  62. package/dist/cli/commands/install.js.map +1 -0
  63. package/dist/cli/commands/list.d.ts +21 -0
  64. package/dist/cli/commands/list.js +137 -0
  65. package/dist/cli/commands/list.js.map +1 -0
  66. package/dist/cli/commands/reindex.d.ts +16 -0
  67. package/dist/cli/commands/reindex.js +154 -0
  68. package/dist/cli/commands/reindex.js.map +1 -0
  69. package/dist/cli/commands/restore.d.ts +20 -0
  70. package/dist/cli/commands/restore.js +208 -0
  71. package/dist/cli/commands/restore.js.map +1 -0
  72. package/dist/cli/commands/search.d.ts +45 -0
  73. package/dist/cli/commands/search.js +531 -0
  74. package/dist/cli/commands/search.js.map +1 -0
  75. package/dist/cli/commands/stats.d.ts +13 -0
  76. package/dist/cli/commands/stats.js +88 -0
  77. package/dist/cli/commands/stats.js.map +1 -0
  78. package/dist/cli/commands/test-all.d.ts +30 -0
  79. package/dist/cli/commands/test-all.js +157 -0
  80. package/dist/cli/commands/test-all.js.map +1 -0
  81. package/dist/cli/commands/test.d.ts +29 -0
  82. package/dist/cli/commands/test.js +492 -0
  83. package/dist/cli/commands/test.js.map +1 -0
  84. package/dist/cli/commands/update.d.ts +52 -0
  85. package/dist/cli/commands/update.js +467 -0
  86. package/dist/cli/commands/update.js.map +1 -0
  87. package/dist/cli/extension-command-options.d.ts +1 -0
  88. package/dist/cli/extension-command-options.js +76 -0
  89. package/dist/cli/extension-command-options.js.map +1 -0
  90. package/dist/cli/main.d.ts +2 -0
  91. package/dist/cli/main.js +1494 -0
  92. package/dist/cli/main.js.map +1 -0
  93. package/dist/cli.d.ts +2 -0
  94. package/dist/cli.js +3 -0
  95. package/dist/cli.js.map +1 -0
  96. package/dist/command-types.d.ts +1 -0
  97. package/dist/command-types.js +2 -0
  98. package/dist/command-types.js.map +1 -0
  99. package/dist/constants.d.ts +1 -0
  100. package/dist/constants.js +2 -0
  101. package/dist/constants.js.map +1 -0
  102. package/dist/core/extensions/builtins.d.ts +3 -0
  103. package/dist/core/extensions/builtins.js +47 -0
  104. package/dist/core/extensions/builtins.js.map +1 -0
  105. package/dist/core/extensions/index.d.ts +13 -0
  106. package/dist/core/extensions/index.js +88 -0
  107. package/dist/core/extensions/index.js.map +1 -0
  108. package/dist/core/extensions/loader.d.ts +301 -0
  109. package/dist/core/extensions/loader.js +917 -0
  110. package/dist/core/extensions/loader.js.map +1 -0
  111. package/dist/core/fs/fs-utils.d.ts +6 -0
  112. package/dist/core/fs/fs-utils.js +58 -0
  113. package/dist/core/fs/fs-utils.js.map +1 -0
  114. package/dist/core/fs/index.d.ts +1 -0
  115. package/dist/core/fs/index.js +2 -0
  116. package/dist/core/fs/index.js.map +1 -0
  117. package/dist/core/history/history.d.ts +12 -0
  118. package/dist/core/history/history.js +44 -0
  119. package/dist/core/history/history.js.map +1 -0
  120. package/dist/core/history/index.d.ts +1 -0
  121. package/dist/core/history/index.js +2 -0
  122. package/dist/core/history/index.js.map +1 -0
  123. package/dist/core/item/id.d.ts +3 -0
  124. package/dist/core/item/id.js +54 -0
  125. package/dist/core/item/id.js.map +1 -0
  126. package/dist/core/item/index.d.ts +3 -0
  127. package/dist/core/item/index.js +4 -0
  128. package/dist/core/item/index.js.map +1 -0
  129. package/dist/core/item/item-format.d.ts +9 -0
  130. package/dist/core/item/item-format.js +363 -0
  131. package/dist/core/item/item-format.js.map +1 -0
  132. package/dist/core/item/parse.d.ts +3 -0
  133. package/dist/core/item/parse.js +72 -0
  134. package/dist/core/item/parse.js.map +1 -0
  135. package/dist/core/lock/index.d.ts +1 -0
  136. package/dist/core/lock/index.js +2 -0
  137. package/dist/core/lock/index.js.map +1 -0
  138. package/dist/core/lock/lock.d.ts +1 -0
  139. package/dist/core/lock/lock.js +100 -0
  140. package/dist/core/lock/lock.js.map +1 -0
  141. package/dist/core/output/output.d.ts +7 -0
  142. package/dist/core/output/output.js +79 -0
  143. package/dist/core/output/output.js.map +1 -0
  144. package/dist/core/search/cache.d.ts +17 -0
  145. package/dist/core/search/cache.js +212 -0
  146. package/dist/core/search/cache.js.map +1 -0
  147. package/dist/core/search/embedding-batches.d.ts +7 -0
  148. package/dist/core/search/embedding-batches.js +54 -0
  149. package/dist/core/search/embedding-batches.js.map +1 -0
  150. package/dist/core/search/providers.d.ts +59 -0
  151. package/dist/core/search/providers.js +265 -0
  152. package/dist/core/search/providers.js.map +1 -0
  153. package/dist/core/search/vector-stores.d.ts +89 -0
  154. package/dist/core/search/vector-stores.js +546 -0
  155. package/dist/core/search/vector-stores.js.map +1 -0
  156. package/dist/core/shared/command-types.d.ts +7 -0
  157. package/dist/core/shared/command-types.js +2 -0
  158. package/dist/core/shared/command-types.js.map +1 -0
  159. package/dist/core/shared/constants.d.ts +19 -0
  160. package/dist/core/shared/constants.js +134 -0
  161. package/dist/core/shared/constants.js.map +1 -0
  162. package/dist/core/shared/errors.d.ts +4 -0
  163. package/dist/core/shared/errors.js +9 -0
  164. package/dist/core/shared/errors.js.map +1 -0
  165. package/dist/core/shared/index.d.ts +3 -0
  166. package/dist/core/shared/index.js +4 -0
  167. package/dist/core/shared/index.js.map +1 -0
  168. package/dist/core/shared/serialization.d.ts +3 -0
  169. package/dist/core/shared/serialization.js +70 -0
  170. package/dist/core/shared/serialization.js.map +1 -0
  171. package/dist/core/shared/time.d.ts +3 -0
  172. package/dist/core/shared/time.js +28 -0
  173. package/dist/core/shared/time.js.map +1 -0
  174. package/dist/core/store/index.d.ts +3 -0
  175. package/dist/core/store/index.js +4 -0
  176. package/dist/core/store/index.js.map +1 -0
  177. package/dist/core/store/item-store.d.ts +42 -0
  178. package/dist/core/store/item-store.js +186 -0
  179. package/dist/core/store/item-store.js.map +1 -0
  180. package/dist/core/store/paths.d.ts +8 -0
  181. package/dist/core/store/paths.js +29 -0
  182. package/dist/core/store/paths.js.map +1 -0
  183. package/dist/core/store/settings.d.ts +4 -0
  184. package/dist/core/store/settings.js +148 -0
  185. package/dist/core/store/settings.js.map +1 -0
  186. package/dist/errors.d.ts +1 -0
  187. package/dist/errors.js +2 -0
  188. package/dist/errors.js.map +1 -0
  189. package/dist/extensions/builtins/beads/index.d.ts +8 -0
  190. package/dist/extensions/builtins/beads/index.js +29 -0
  191. package/dist/extensions/builtins/beads/index.js.map +1 -0
  192. package/dist/extensions/builtins/todos/import-export.d.ts +26 -0
  193. package/dist/extensions/builtins/todos/import-export.js +460 -0
  194. package/dist/extensions/builtins/todos/import-export.js.map +1 -0
  195. package/dist/extensions/builtins/todos/index.d.ts +8 -0
  196. package/dist/extensions/builtins/todos/index.js +38 -0
  197. package/dist/extensions/builtins/todos/index.js.map +1 -0
  198. package/dist/fs-utils.d.ts +1 -0
  199. package/dist/fs-utils.js +2 -0
  200. package/dist/fs-utils.js.map +1 -0
  201. package/dist/history.d.ts +1 -0
  202. package/dist/history.js +2 -0
  203. package/dist/history.js.map +1 -0
  204. package/dist/id.d.ts +1 -0
  205. package/dist/id.js +2 -0
  206. package/dist/id.js.map +1 -0
  207. package/dist/item-format.d.ts +1 -0
  208. package/dist/item-format.js +2 -0
  209. package/dist/item-format.js.map +1 -0
  210. package/dist/item-store.d.ts +1 -0
  211. package/dist/item-store.js +2 -0
  212. package/dist/item-store.js.map +1 -0
  213. package/dist/lock.d.ts +1 -0
  214. package/dist/lock.js +2 -0
  215. package/dist/lock.js.map +1 -0
  216. package/dist/output.d.ts +1 -0
  217. package/dist/output.js +2 -0
  218. package/dist/output.js.map +1 -0
  219. package/dist/parse.d.ts +1 -0
  220. package/dist/parse.js +2 -0
  221. package/dist/parse.js.map +1 -0
  222. package/dist/paths.d.ts +1 -0
  223. package/dist/paths.js +2 -0
  224. package/dist/paths.js.map +1 -0
  225. package/dist/serialization.d.ts +1 -0
  226. package/dist/serialization.js +2 -0
  227. package/dist/serialization.js.map +1 -0
  228. package/dist/settings.d.ts +1 -0
  229. package/dist/settings.js +2 -0
  230. package/dist/settings.js.map +1 -0
  231. package/dist/time.d.ts +1 -0
  232. package/dist/time.js +2 -0
  233. package/dist/time.js.map +1 -0
  234. package/dist/types/index.d.ts +1 -0
  235. package/dist/types/index.js +2 -0
  236. package/dist/types/index.js.map +1 -0
  237. package/dist/types.d.ts +179 -0
  238. package/dist/types.js +21 -0
  239. package/dist/types.js.map +1 -0
  240. package/docs/ARCHITECTURE.md +246 -0
  241. package/docs/EXTENSIONS.md +329 -0
  242. package/docs/RELEASING.md +65 -0
  243. package/package.json +79 -0
  244. package/scripts/install.ps1 +112 -0
  245. package/scripts/install.sh +113 -0
@@ -0,0 +1,492 @@
1
+ import { exec as execCb } from "node:child_process";
2
+ import { mkdtemp, rm } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import path from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { pathExists } from "../../core/fs/fs-utils.js";
7
+ import { parseCsvKv, parseOptionalNumber } from "../../core/item/parse.js";
8
+ import { EXIT_CODE } from "../../core/shared/constants.js";
9
+ import { PmCliError } from "../../core/shared/errors.js";
10
+ import { locateItem, mutateItem, readLocatedItem } from "../../core/store/item-store.js";
11
+ import { getSettingsPath, resolvePmRoot } from "../../core/store/paths.js";
12
+ import { readSettings } from "../../core/store/settings.js";
13
+ import { runInit } from "./init.js";
14
+ import { SCOPE_VALUES } from "../../types/index.js";
15
+ const exec = promisify(execCb);
16
+ const TEST_OUTPUT_MAX_BUFFER_BYTES = 20 * 1024 * 1024;
17
+ function resolveAuthor(candidate, fallback) {
18
+ const resolved = candidate ?? process.env.PM_AUTHOR ?? fallback;
19
+ const trimmed = resolved.trim();
20
+ return trimmed || "unknown";
21
+ }
22
+ function ensureScope(raw) {
23
+ const value = (raw ?? "project");
24
+ if (!SCOPE_VALUES.includes(value)) {
25
+ throw new PmCliError(`Invalid scope "${raw}"`, EXIT_CODE.USAGE);
26
+ }
27
+ return value;
28
+ }
29
+ const PM_GLOBAL_FLAGS_WITH_VALUE = new Set(["--path"]);
30
+ const NPX_FLAGS_WITH_VALUE = new Set(["-p", "--package", "-c", "--call"]);
31
+ const PNPM_GLOBAL_FLAGS_WITH_VALUE = new Set([
32
+ "-c",
33
+ "-C",
34
+ "--config",
35
+ "--dir",
36
+ "--filter",
37
+ "--workspace-dir",
38
+ ]);
39
+ const NPM_GLOBAL_FLAGS_WITH_VALUE = new Set(["-C", "--prefix", "--userconfig", "--cache"]);
40
+ const YARN_GLOBAL_FLAGS_WITH_VALUE = new Set(["--cwd"]);
41
+ const BUN_GLOBAL_FLAGS_WITH_VALUE = new Set(["--cwd"]);
42
+ const NPM_EXEC_SUBCOMMANDS = new Set(["exec", "x"]);
43
+ const SCRIPT_RUN_SUBCOMMANDS = new Set(["run", "run-script"]);
44
+ const SCRIPT_RUN_FLAGS_WITH_VALUE = new Set(["-C", "--dir", "--cwd", "-w", "--workspace", "--filter"]);
45
+ function splitNormalizedCommandSegments(normalizedCommand) {
46
+ return normalizedCommand
47
+ .split(/&&|\|\||\||;/)
48
+ .map((segment) => segment.trim())
49
+ .filter((segment) => segment.length > 0);
50
+ }
51
+ function stripLeadingEnvAssignments(tokens) {
52
+ let start = 0;
53
+ if (tokens[start] === "env") {
54
+ start += 1;
55
+ }
56
+ while (start < tokens.length) {
57
+ const token = tokens[start];
58
+ if (/^(?:[a-z_][a-z0-9_]*|\$env:[a-z_][a-z0-9_]*)=.*/.test(token)) {
59
+ start += 1;
60
+ continue;
61
+ }
62
+ break;
63
+ }
64
+ return tokens.slice(start);
65
+ }
66
+ function firstPmSubcommand(args) {
67
+ let index = 0;
68
+ while (index < args.length) {
69
+ const token = args[index];
70
+ if (token === "--") {
71
+ index += 1;
72
+ continue;
73
+ }
74
+ if (token.startsWith("-")) {
75
+ if (PM_GLOBAL_FLAGS_WITH_VALUE.has(token)) {
76
+ index += 2;
77
+ continue;
78
+ }
79
+ index += 1;
80
+ continue;
81
+ }
82
+ return token;
83
+ }
84
+ return undefined;
85
+ }
86
+ function isPmExecutableToken(token) {
87
+ return token === "pm" || token.endsWith("/pm") || token.endsWith("/pm.cmd") || token.endsWith("/pm.exe");
88
+ }
89
+ function normalizePackageSpecifier(token) {
90
+ const trimmed = token.trim();
91
+ if (!trimmed.startsWith("@")) {
92
+ const versionSeparator = trimmed.indexOf("@");
93
+ return versionSeparator === -1 ? trimmed : trimmed.slice(0, versionSeparator);
94
+ }
95
+ const scopeSeparator = trimmed.indexOf("/");
96
+ if (scopeSeparator === -1) {
97
+ return trimmed;
98
+ }
99
+ const versionSeparator = trimmed.indexOf("@", scopeSeparator + 1);
100
+ return versionSeparator === -1 ? trimmed : trimmed.slice(0, versionSeparator);
101
+ }
102
+ function isPmCliPackageToken(token) {
103
+ const normalizedSpecifier = normalizePackageSpecifier(token);
104
+ return (normalizedSpecifier === "pm-cli" ||
105
+ normalizedSpecifier.endsWith("/pm-cli") ||
106
+ token === "pm-cli" ||
107
+ token.endsWith("/pm-cli"));
108
+ }
109
+ function isPmCliScriptToken(token) {
110
+ return token === "dist/cli.js" || token === "./dist/cli.js" || token.endsWith("/dist/cli.js");
111
+ }
112
+ function parseNpxCommand(tokens) {
113
+ let index = 0;
114
+ while (index < tokens.length) {
115
+ const token = tokens[index];
116
+ if (token === "--") {
117
+ index += 1;
118
+ break;
119
+ }
120
+ if (!token.startsWith("-")) {
121
+ break;
122
+ }
123
+ if (token.includes("=")) {
124
+ index += 1;
125
+ continue;
126
+ }
127
+ if (NPX_FLAGS_WITH_VALUE.has(token)) {
128
+ index += 2;
129
+ continue;
130
+ }
131
+ index += 1;
132
+ }
133
+ const command = tokens[index];
134
+ if (!command) {
135
+ return null;
136
+ }
137
+ return {
138
+ command,
139
+ args: tokens.slice(index + 1),
140
+ };
141
+ }
142
+ function parseLauncherSubcommand(tokens, flagsWithValue) {
143
+ let index = 0;
144
+ while (index < tokens.length) {
145
+ const token = tokens[index];
146
+ if (token === "--") {
147
+ index += 1;
148
+ continue;
149
+ }
150
+ if (token.startsWith("-")) {
151
+ if (token.includes("=")) {
152
+ index += 1;
153
+ continue;
154
+ }
155
+ if (flagsWithValue.has(token)) {
156
+ index += 2;
157
+ continue;
158
+ }
159
+ index += 1;
160
+ continue;
161
+ }
162
+ return {
163
+ subcommand: token,
164
+ args: tokens.slice(index + 1),
165
+ };
166
+ }
167
+ return null;
168
+ }
169
+ function parsePnpmDlxCommand(tokens) {
170
+ const parsed = parseLauncherSubcommand(tokens, PNPM_GLOBAL_FLAGS_WITH_VALUE);
171
+ if (parsed?.subcommand !== "dlx") {
172
+ return null;
173
+ }
174
+ return parseNpxCommand(parsed.args);
175
+ }
176
+ function parseNpmExecCommand(tokens) {
177
+ const parsed = parseLauncherSubcommand(tokens, NPM_GLOBAL_FLAGS_WITH_VALUE);
178
+ if (!parsed || !NPM_EXEC_SUBCOMMANDS.has(parsed.subcommand)) {
179
+ return null;
180
+ }
181
+ return parseNpxCommand(parsed.args);
182
+ }
183
+ function resolveDirectRunnerSubcommand(parsed) {
184
+ if (!parsed) {
185
+ return undefined;
186
+ }
187
+ if (!SCRIPT_RUN_SUBCOMMANDS.has(parsed.subcommand)) {
188
+ return parsed.subcommand;
189
+ }
190
+ return parseLauncherSubcommand(parsed.args, SCRIPT_RUN_FLAGS_WITH_VALUE)?.subcommand;
191
+ }
192
+ function firstDirectTestRunnerSubcommand(executable, args) {
193
+ if (executable === "npx") {
194
+ return parseNpxCommand(args)?.command;
195
+ }
196
+ if (executable === "pnpm") {
197
+ return resolveDirectRunnerSubcommand(parseLauncherSubcommand(args, PNPM_GLOBAL_FLAGS_WITH_VALUE));
198
+ }
199
+ if (executable === "npm") {
200
+ return resolveDirectRunnerSubcommand(parseLauncherSubcommand(args, NPM_GLOBAL_FLAGS_WITH_VALUE));
201
+ }
202
+ if (executable === "yarn") {
203
+ return resolveDirectRunnerSubcommand(parseLauncherSubcommand(args, YARN_GLOBAL_FLAGS_WITH_VALUE));
204
+ }
205
+ if (executable === "bun") {
206
+ return resolveDirectRunnerSubcommand(parseLauncherSubcommand(args, BUN_GLOBAL_FLAGS_WITH_VALUE));
207
+ }
208
+ return undefined;
209
+ }
210
+ function isDirectTestRunnerSubcommand(token) {
211
+ if (!token) {
212
+ return false;
213
+ }
214
+ return token === "vitest" || token === "test" || token.startsWith("test:");
215
+ }
216
+ function parsedLauncherInvokesRecursiveTestAll(parsed) {
217
+ if (!parsed) {
218
+ return false;
219
+ }
220
+ if (!isPmExecutableToken(parsed.command) && !isPmCliPackageToken(parsed.command)) {
221
+ return false;
222
+ }
223
+ return firstPmSubcommand(parsed.args) === "test-all";
224
+ }
225
+ function segmentInvokesRecursiveTestAll(segment) {
226
+ const rawTokens = segment.split(" ").filter((token) => token.length > 0);
227
+ const tokens = stripLeadingEnvAssignments(rawTokens);
228
+ if (tokens.length === 0) {
229
+ return false;
230
+ }
231
+ const [executable, ...args] = tokens;
232
+ if (isPmExecutableToken(executable) || isPmCliScriptToken(executable)) {
233
+ return firstPmSubcommand(args) === "test-all";
234
+ }
235
+ if (executable === "node" && args.length > 0 && isPmCliScriptToken(args[0])) {
236
+ return firstPmSubcommand(args.slice(1)) === "test-all";
237
+ }
238
+ if (executable === "npx") {
239
+ return parsedLauncherInvokesRecursiveTestAll(parseNpxCommand(args));
240
+ }
241
+ if (executable === "pnpm") {
242
+ return parsedLauncherInvokesRecursiveTestAll(parsePnpmDlxCommand(args));
243
+ }
244
+ if (executable === "npm") {
245
+ return parsedLauncherInvokesRecursiveTestAll(parseNpmExecCommand(args));
246
+ }
247
+ return false;
248
+ }
249
+ function invokesRecursiveTestAllCommand(command) {
250
+ const normalized = normalizeCommandForValidation(command);
251
+ return splitNormalizedCommandSegments(normalized).some((segment) => segmentInvokesRecursiveTestAll(segment));
252
+ }
253
+ function assertNoRecursiveTestAllCommand(command) {
254
+ if (!invokesRecursiveTestAllCommand(command))
255
+ return;
256
+ throw new PmCliError('Linked test commands must not invoke "pm test-all"; this creates recursive orchestration.', EXIT_CODE.USAGE);
257
+ }
258
+ function normalizeCommandForValidation(command) {
259
+ return command
260
+ .trim()
261
+ .replaceAll("\\", "/")
262
+ .replaceAll('"', "")
263
+ .replaceAll("'", "")
264
+ .replaceAll(/\s+/g, " ")
265
+ .toLowerCase();
266
+ }
267
+ function commandUsesSandboxRunner(normalizedCommand) {
268
+ return (normalizedCommand.includes("node scripts/run-tests.mjs ") ||
269
+ normalizedCommand.endsWith("node scripts/run-tests.mjs") ||
270
+ normalizedCommand.includes("node ./scripts/run-tests.mjs ") ||
271
+ normalizedCommand.endsWith("node ./scripts/run-tests.mjs"));
272
+ }
273
+ function segmentHasExplicitSandboxEnv(normalizedSegment) {
274
+ const hasExplicitPmPath = /\bpm_path\s*=/.test(normalizedSegment) || /\$env:pm_path\s*=/.test(normalizedSegment);
275
+ const hasExplicitPmGlobalPath = /\bpm_global_path\s*=/.test(normalizedSegment) || /\$env:pm_global_path\s*=/.test(normalizedSegment);
276
+ return hasExplicitPmPath && hasExplicitPmGlobalPath;
277
+ }
278
+ function commandInvokesDirectTestRunner(normalizedCommand) {
279
+ const rawTokens = normalizedCommand.split(" ").filter((token) => token.length > 0);
280
+ const tokens = stripLeadingEnvAssignments(rawTokens);
281
+ if (tokens.length === 0) {
282
+ return false;
283
+ }
284
+ const [executable, ...args] = tokens;
285
+ if (executable === "vitest" || executable.endsWith("/vitest") || executable.endsWith("/vitest.mjs")) {
286
+ return true;
287
+ }
288
+ if (executable === "node") {
289
+ return args[0] === "--test" || Boolean(args[0]?.endsWith("/vitest") || args[0]?.endsWith("/vitest.mjs"));
290
+ }
291
+ const subcommand = firstDirectTestRunnerSubcommand(executable, args);
292
+ return isDirectTestRunnerSubcommand(subcommand);
293
+ }
294
+ function assertSandboxSafeTestRunnerCommand(command) {
295
+ const normalized = normalizeCommandForValidation(command);
296
+ const segments = splitNormalizedCommandSegments(normalized);
297
+ const hasUnsafeDirectRunnerSegment = segments.some((segment) => !commandUsesSandboxRunner(segment) &&
298
+ commandInvokesDirectTestRunner(segment) &&
299
+ !segmentHasExplicitSandboxEnv(segment));
300
+ if (!hasUnsafeDirectRunnerSegment) {
301
+ return;
302
+ }
303
+ throw new PmCliError('Linked test runner commands must be sandbox-safe: use "node scripts/run-tests.mjs <test|coverage>" or explicitly set both PM_PATH and PM_GLOBAL_PATH.', EXIT_CODE.USAGE);
304
+ }
305
+ function getRuntimeSafetySkipReason(command) {
306
+ if (!invokesRecursiveTestAllCommand(command))
307
+ return undefined;
308
+ return 'Linked test command skipped: Linked test commands must not invoke "pm test-all"; this creates recursive orchestration.';
309
+ }
310
+ function parseAddEntries(raw) {
311
+ if (!raw)
312
+ return [];
313
+ return raw.map((entry) => {
314
+ const kv = parseCsvKv(entry, "--add");
315
+ const command = kv.command?.trim() || undefined;
316
+ const filePath = kv.path?.trim() || undefined;
317
+ if (!command && !filePath) {
318
+ throw new PmCliError("--add requires command=<value> and/or path=<value>", EXIT_CODE.USAGE);
319
+ }
320
+ if (command) {
321
+ assertNoRecursiveTestAllCommand(command);
322
+ assertSandboxSafeTestRunnerCommand(command);
323
+ }
324
+ const timeoutSecondsRaw = kv.timeout_seconds?.trim();
325
+ const timeoutAliasRaw = kv.timeout?.trim();
326
+ if (timeoutSecondsRaw && timeoutAliasRaw && timeoutSecondsRaw !== timeoutAliasRaw) {
327
+ throw new PmCliError("--add timeout and timeout_seconds must match when both are provided", EXIT_CODE.USAGE);
328
+ }
329
+ const timeoutRaw = timeoutSecondsRaw ?? timeoutAliasRaw;
330
+ const timeoutSeconds = timeoutRaw === undefined ? undefined : Math.floor(parseOptionalNumber(timeoutRaw, "timeout_seconds"));
331
+ return {
332
+ command,
333
+ path: filePath,
334
+ scope: ensureScope(kv.scope),
335
+ timeout_seconds: timeoutSeconds,
336
+ note: kv.note?.trim() || undefined,
337
+ };
338
+ });
339
+ }
340
+ function parseRemoveEntries(raw) {
341
+ if (!raw)
342
+ return [];
343
+ return raw.map((entry) => {
344
+ const trimmed = entry.trim();
345
+ if (!trimmed) {
346
+ throw new PmCliError("--remove requires command or path value", EXIT_CODE.USAGE);
347
+ }
348
+ if (trimmed.includes("=")) {
349
+ const kv = parseCsvKv(trimmed, "--remove");
350
+ const value = kv.path ?? kv.command;
351
+ if (!value?.trim()) {
352
+ throw new PmCliError("--remove requires command=<value> and/or path=<value>", EXIT_CODE.USAGE);
353
+ }
354
+ return value.trim();
355
+ }
356
+ return trimmed;
357
+ });
358
+ }
359
+ export async function runLinkedTests(tests, defaultTimeoutSeconds) {
360
+ const results = [];
361
+ const sandboxRoot = await mkdtemp(path.join(tmpdir(), "pm-linked-test-"));
362
+ const sandboxPmPath = path.join(sandboxRoot, "project", ".agents", "pm");
363
+ const sandboxGlobalPath = path.join(sandboxRoot, "global");
364
+ try {
365
+ await runInit(undefined, { path: sandboxPmPath });
366
+ for (const linkedTest of tests) {
367
+ if (!linkedTest.command) {
368
+ results.push({
369
+ command: linkedTest.command,
370
+ path: linkedTest.path,
371
+ status: "skipped",
372
+ error: "No command configured for this linked test.",
373
+ });
374
+ continue;
375
+ }
376
+ const runtimeSafetySkipReason = getRuntimeSafetySkipReason(linkedTest.command);
377
+ if (runtimeSafetySkipReason) {
378
+ results.push({
379
+ command: linkedTest.command,
380
+ path: linkedTest.path,
381
+ status: "skipped",
382
+ error: runtimeSafetySkipReason,
383
+ });
384
+ continue;
385
+ }
386
+ const timeoutMs = ((linkedTest.timeout_seconds ?? defaultTimeoutSeconds ?? 120) * 1000);
387
+ try {
388
+ const executed = await exec(linkedTest.command, {
389
+ timeout: timeoutMs,
390
+ cwd: process.cwd(),
391
+ maxBuffer: TEST_OUTPUT_MAX_BUFFER_BYTES,
392
+ env: {
393
+ ...process.env,
394
+ PM_PATH: sandboxPmPath,
395
+ PM_GLOBAL_PATH: sandboxGlobalPath,
396
+ },
397
+ });
398
+ results.push({
399
+ command: linkedTest.command,
400
+ path: linkedTest.path,
401
+ status: "passed",
402
+ exit_code: 0,
403
+ stdout: executed.stdout,
404
+ stderr: executed.stderr,
405
+ });
406
+ }
407
+ catch (error) {
408
+ const err = error;
409
+ results.push({
410
+ command: linkedTest.command,
411
+ path: linkedTest.path,
412
+ status: "failed",
413
+ exit_code: typeof err.code === "number" ? err.code : 1,
414
+ stdout: err.stdout,
415
+ stderr: err.stderr,
416
+ error: err.message,
417
+ });
418
+ }
419
+ }
420
+ }
421
+ finally {
422
+ await rm(sandboxRoot, { recursive: true, force: true });
423
+ }
424
+ return results;
425
+ }
426
+ export async function runTest(id, options, global) {
427
+ const pmRoot = resolvePmRoot(process.cwd(), global.path);
428
+ if (!(await pathExists(getSettingsPath(pmRoot)))) {
429
+ throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
430
+ }
431
+ const settings = await readSettings(pmRoot);
432
+ const adds = parseAddEntries(options.add);
433
+ const removes = parseRemoveEntries(options.remove);
434
+ const shouldMutate = adds.length > 0 || removes.length > 0;
435
+ let tests = [];
436
+ let itemId;
437
+ if (shouldMutate) {
438
+ const author = resolveAuthor(options.author, settings.author_default);
439
+ const result = await mutateItem({
440
+ pmRoot,
441
+ settings,
442
+ id,
443
+ op: "tests_add",
444
+ author,
445
+ message: options.message,
446
+ force: options.force,
447
+ mutate(document) {
448
+ const next = [...(document.front_matter.tests ?? [])];
449
+ for (const add of adds) {
450
+ const exists = next.some((entry) => entry.command === add.command && entry.path === add.path && entry.scope === add.scope);
451
+ if (!exists) {
452
+ next.push(add);
453
+ }
454
+ }
455
+ if (removes.length > 0) {
456
+ for (let i = next.length - 1; i >= 0; i -= 1) {
457
+ const entry = next[i];
458
+ if (removes.includes(entry.path ?? "") || removes.includes(entry.command ?? "")) {
459
+ next.splice(i, 1);
460
+ }
461
+ }
462
+ }
463
+ document.front_matter.tests = next;
464
+ return { changedFields: ["tests"] };
465
+ },
466
+ });
467
+ tests = result.item.tests ?? [];
468
+ itemId = result.item.id;
469
+ }
470
+ else {
471
+ const located = await locateItem(pmRoot, id, settings.id_prefix);
472
+ if (!located) {
473
+ throw new PmCliError(`Item ${id} not found`, EXIT_CODE.NOT_FOUND);
474
+ }
475
+ itemId = located.id;
476
+ const loaded = await readLocatedItem(located);
477
+ tests = loaded.document.front_matter.tests ?? [];
478
+ }
479
+ let defaultTimeoutSeconds;
480
+ if (options.timeout !== undefined) {
481
+ defaultTimeoutSeconds = parseOptionalNumber(options.timeout, "timeout");
482
+ }
483
+ const runResults = options.run === true ? await runLinkedTests(tests, defaultTimeoutSeconds) : [];
484
+ return {
485
+ id: itemId,
486
+ tests,
487
+ run_results: runResults,
488
+ changed: shouldMutate,
489
+ count: tests.length,
490
+ };
491
+ }
492
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import type { GlobalOptions } from "../../core/shared/command-types.js";
2
+ export interface UpdateCommandOptions {
3
+ title?: string;
4
+ description?: string;
5
+ status?: string;
6
+ priority?: string;
7
+ type?: string;
8
+ tags?: string;
9
+ deadline?: string;
10
+ estimatedMinutes?: string;
11
+ acceptanceCriteria?: string;
12
+ definitionOfReady?: string;
13
+ order?: string;
14
+ rank?: string;
15
+ goal?: string;
16
+ objective?: string;
17
+ value?: string;
18
+ impact?: string;
19
+ outcome?: string;
20
+ whyNow?: string;
21
+ author?: string;
22
+ message?: string;
23
+ force?: boolean;
24
+ assignee?: string;
25
+ parent?: string;
26
+ reviewer?: string;
27
+ risk?: string;
28
+ confidence?: string;
29
+ sprint?: string;
30
+ release?: string;
31
+ blockedBy?: string;
32
+ blockedReason?: string;
33
+ unblockNote?: string;
34
+ reporter?: string;
35
+ severity?: string;
36
+ environment?: string;
37
+ reproSteps?: string;
38
+ resolution?: string;
39
+ expectedResult?: string;
40
+ actualResult?: string;
41
+ affectedVersion?: string;
42
+ fixedVersion?: string;
43
+ component?: string;
44
+ regression?: string;
45
+ customerImpact?: string;
46
+ }
47
+ export interface UpdateResult {
48
+ item: Record<string, unknown>;
49
+ changed_fields: string[];
50
+ warnings: string[];
51
+ }
52
+ export declare function runUpdate(id: string, options: UpdateCommandOptions, global: GlobalOptions): Promise<UpdateResult>;