@unbrained/pm-cli 2026.5.18 → 2026.5.27

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 (369) hide show
  1. package/CHANGELOG.md +953 -472
  2. package/README.md +4 -11
  3. package/dist/cli/bootstrap-args.d.ts +18 -1
  4. package/dist/cli/bootstrap-args.js +143 -3
  5. package/dist/cli/bootstrap-args.js.map +1 -1
  6. package/dist/cli/commander-usage.js +147 -10
  7. package/dist/cli/commander-usage.js.map +1 -1
  8. package/dist/cli/commands/annotation-command.d.ts +49 -0
  9. package/dist/cli/commands/annotation-command.js +135 -0
  10. package/dist/cli/commands/annotation-command.js.map +1 -0
  11. package/dist/cli/commands/append.js +5 -8
  12. package/dist/cli/commands/append.js.map +1 -1
  13. package/dist/cli/commands/calendar.js +3 -6
  14. package/dist/cli/commands/calendar.js.map +1 -1
  15. package/dist/cli/commands/claim.js +15 -24
  16. package/dist/cli/commands/claim.js.map +1 -1
  17. package/dist/cli/commands/close.js +63 -10
  18. package/dist/cli/commands/close.js.map +1 -1
  19. package/dist/cli/commands/comments.d.ts +5 -0
  20. package/dist/cli/commands/comments.js +27 -117
  21. package/dist/cli/commands/comments.js.map +1 -1
  22. package/dist/cli/commands/completion.d.ts +2 -2
  23. package/dist/cli/commands/completion.js +203 -63
  24. package/dist/cli/commands/completion.js.map +1 -1
  25. package/dist/cli/commands/config.d.ts +1 -1
  26. package/dist/cli/commands/config.js +82 -4
  27. package/dist/cli/commands/config.js.map +1 -1
  28. package/dist/cli/commands/context.js +4 -10
  29. package/dist/cli/commands/context.js.map +1 -1
  30. package/dist/cli/commands/contracts.js +168 -36
  31. package/dist/cli/commands/contracts.js.map +1 -1
  32. package/dist/cli/commands/create.js +53 -313
  33. package/dist/cli/commands/create.js.map +1 -1
  34. package/dist/cli/commands/dedupe-audit.js +7 -4
  35. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  36. package/dist/cli/commands/delete.d.ts +3 -0
  37. package/dist/cli/commands/delete.js +11 -9
  38. package/dist/cli/commands/delete.js.map +1 -1
  39. package/dist/cli/commands/docs.d.ts +2 -12
  40. package/dist/cli/commands/docs.js +8 -316
  41. package/dist/cli/commands/docs.js.map +1 -1
  42. package/dist/cli/commands/event-validation-messages.d.ts +3 -0
  43. package/dist/cli/commands/event-validation-messages.js +44 -0
  44. package/dist/cli/commands/event-validation-messages.js.map +1 -0
  45. package/dist/cli/commands/extension/bundled-catalog.d.ts +14 -0
  46. package/dist/cli/commands/extension/bundled-catalog.js +268 -0
  47. package/dist/cli/commands/extension/bundled-catalog.js.map +1 -0
  48. package/dist/cli/commands/extension/doctor.d.ts +31 -0
  49. package/dist/cli/commands/extension/doctor.js +345 -0
  50. package/dist/cli/commands/extension/doctor.js.map +1 -0
  51. package/dist/cli/commands/extension/install-sources.d.ts +37 -0
  52. package/dist/cli/commands/extension/install-sources.js +384 -0
  53. package/dist/cli/commands/extension/install-sources.js.map +1 -0
  54. package/dist/cli/commands/extension/managed-state.d.ts +48 -0
  55. package/dist/cli/commands/extension/managed-state.js +172 -0
  56. package/dist/cli/commands/extension/managed-state.js.map +1 -0
  57. package/dist/cli/commands/extension/scaffold.d.ts +14 -0
  58. package/dist/cli/commands/extension/scaffold.js +169 -0
  59. package/dist/cli/commands/extension/scaffold.js.map +1 -0
  60. package/dist/cli/commands/extension/shared.d.ts +14 -0
  61. package/dist/cli/commands/extension/shared.js +106 -0
  62. package/dist/cli/commands/extension/shared.js.map +1 -0
  63. package/dist/cli/commands/extension.d.ts +37 -68
  64. package/dist/cli/commands/extension.js +157 -1319
  65. package/dist/cli/commands/extension.js.map +1 -1
  66. package/dist/cli/commands/files.d.ts +1 -12
  67. package/dist/cli/commands/files.js +14 -318
  68. package/dist/cli/commands/files.js.map +1 -1
  69. package/dist/cli/commands/gc.js +17 -4
  70. package/dist/cli/commands/gc.js.map +1 -1
  71. package/dist/cli/commands/get.d.ts +3 -2
  72. package/dist/cli/commands/get.js +52 -9
  73. package/dist/cli/commands/get.js.map +1 -1
  74. package/dist/cli/commands/health.d.ts +10 -0
  75. package/dist/cli/commands/health.js +269 -76
  76. package/dist/cli/commands/health.js.map +1 -1
  77. package/dist/cli/commands/history-redact.d.ts +8 -0
  78. package/dist/cli/commands/history-redact.js +35 -113
  79. package/dist/cli/commands/history-redact.js.map +1 -1
  80. package/dist/cli/commands/history-repair.d.ts +33 -0
  81. package/dist/cli/commands/history-repair.js +172 -0
  82. package/dist/cli/commands/history-repair.js.map +1 -0
  83. package/dist/cli/commands/history.d.ts +4 -4
  84. package/dist/cli/commands/history.js +10 -88
  85. package/dist/cli/commands/history.js.map +1 -1
  86. package/dist/cli/commands/index.d.ts +3 -1
  87. package/dist/cli/commands/index.js +5 -3
  88. package/dist/cli/commands/index.js.map +1 -1
  89. package/dist/cli/commands/init.d.ts +28 -0
  90. package/dist/cli/commands/init.js +23 -2
  91. package/dist/cli/commands/init.js.map +1 -1
  92. package/dist/cli/commands/learnings.js +20 -119
  93. package/dist/cli/commands/learnings.js.map +1 -1
  94. package/dist/cli/commands/legacy-none-tokens.d.ts +3 -0
  95. package/dist/cli/commands/legacy-none-tokens.js +39 -0
  96. package/dist/cli/commands/legacy-none-tokens.js.map +1 -0
  97. package/dist/cli/commands/linked-artifacts.d.ts +96 -0
  98. package/dist/cli/commands/linked-artifacts.js +335 -0
  99. package/dist/cli/commands/linked-artifacts.js.map +1 -0
  100. package/dist/cli/commands/linked-test-entry.d.ts +3 -0
  101. package/dist/cli/commands/linked-test-entry.js +62 -0
  102. package/dist/cli/commands/linked-test-entry.js.map +1 -0
  103. package/dist/cli/commands/linked-test-parsers.d.ts +28 -0
  104. package/dist/cli/commands/linked-test-parsers.js +192 -0
  105. package/dist/cli/commands/linked-test-parsers.js.map +1 -0
  106. package/dist/cli/commands/list.js +49 -24
  107. package/dist/cli/commands/list.js.map +1 -1
  108. package/dist/cli/commands/normalize.js +4 -3
  109. package/dist/cli/commands/normalize.js.map +1 -1
  110. package/dist/cli/commands/notes.js +20 -119
  111. package/dist/cli/commands/notes.js.map +1 -1
  112. package/dist/cli/commands/plan.d.ts +3 -0
  113. package/dist/cli/commands/plan.js +184 -22
  114. package/dist/cli/commands/plan.js.map +1 -1
  115. package/dist/cli/commands/recurrence-parsers.d.ts +26 -0
  116. package/dist/cli/commands/recurrence-parsers.js +98 -0
  117. package/dist/cli/commands/recurrence-parsers.js.map +1 -0
  118. package/dist/cli/commands/restore.js +24 -56
  119. package/dist/cli/commands/restore.js.map +1 -1
  120. package/dist/cli/commands/schema.d.ts +31 -0
  121. package/dist/cli/commands/schema.js +98 -0
  122. package/dist/cli/commands/schema.js.map +1 -0
  123. package/dist/cli/commands/search.js +154 -42
  124. package/dist/cli/commands/search.js.map +1 -1
  125. package/dist/cli/commands/templates.d.ts +4 -0
  126. package/dist/cli/commands/templates.js +89 -17
  127. package/dist/cli/commands/templates.js.map +1 -1
  128. package/dist/cli/commands/test/linked-command-detection.d.ts +37 -0
  129. package/dist/cli/commands/test/linked-command-detection.js +200 -0
  130. package/dist/cli/commands/test/linked-command-detection.js.map +1 -0
  131. package/dist/cli/commands/test-all.js +4 -8
  132. package/dist/cli/commands/test-all.js.map +1 -1
  133. package/dist/cli/commands/test.d.ts +2 -2
  134. package/dist/cli/commands/test.js +12 -357
  135. package/dist/cli/commands/test.js.map +1 -1
  136. package/dist/cli/commands/update-many.js +6 -9
  137. package/dist/cli/commands/update-many.js.map +1 -1
  138. package/dist/cli/commands/update.js +167 -401
  139. package/dist/cli/commands/update.js.map +1 -1
  140. package/dist/cli/commands/validate.d.ts +3 -1
  141. package/dist/cli/commands/validate.js +23 -71
  142. package/dist/cli/commands/validate.js.map +1 -1
  143. package/dist/cli/error-guidance.d.ts +1 -0
  144. package/dist/cli/error-guidance.js +100 -6
  145. package/dist/cli/error-guidance.js.map +1 -1
  146. package/dist/cli/extension-command-help.d.ts +0 -1
  147. package/dist/cli/extension-command-help.js +2 -13
  148. package/dist/cli/extension-command-help.js.map +1 -1
  149. package/dist/cli/extension-command-options.d.ts +1 -0
  150. package/dist/cli/extension-command-options.js +106 -7
  151. package/dist/cli/extension-command-options.js.map +1 -1
  152. package/dist/cli/help-content.d.ts +0 -1
  153. package/dist/cli/help-content.js +13 -9
  154. package/dist/cli/help-content.js.map +1 -1
  155. package/dist/cli/help-json-payload.d.ts +1 -0
  156. package/dist/cli/help-json-payload.js +33 -3
  157. package/dist/cli/help-json-payload.js.map +1 -1
  158. package/dist/cli/main.d.ts +11 -0
  159. package/dist/cli/main.js +109 -55
  160. package/dist/cli/main.js.map +1 -1
  161. package/dist/cli/register-list-query.d.ts +5 -2
  162. package/dist/cli/register-list-query.js +254 -192
  163. package/dist/cli/register-list-query.js.map +1 -1
  164. package/dist/cli/register-mutation.d.ts +1 -1
  165. package/dist/cli/register-mutation.js +247 -64
  166. package/dist/cli/register-mutation.js.map +1 -1
  167. package/dist/cli/register-operations.js +17 -12
  168. package/dist/cli/register-operations.js.map +1 -1
  169. package/dist/cli/register-setup.js +33 -16
  170. package/dist/cli/register-setup.js.map +1 -1
  171. package/dist/cli/registration-helpers.d.ts +0 -2
  172. package/dist/cli/registration-helpers.js +14 -40
  173. package/dist/cli/registration-helpers.js.map +1 -1
  174. package/dist/cli.js +25 -4
  175. package/dist/cli.js.map +1 -1
  176. package/dist/core/config/positional-value.d.ts +44 -0
  177. package/dist/core/config/positional-value.js +109 -0
  178. package/dist/core/config/positional-value.js.map +1 -0
  179. package/dist/core/extensions/extension-capability-aliases.d.ts +14 -0
  180. package/dist/core/extensions/extension-capability-aliases.js +159 -0
  181. package/dist/core/extensions/extension-capability-aliases.js.map +1 -0
  182. package/dist/core/extensions/extension-hook-runtime.d.ts +13 -0
  183. package/dist/core/extensions/extension-hook-runtime.js +414 -0
  184. package/dist/core/extensions/extension-hook-runtime.js.map +1 -0
  185. package/dist/core/extensions/extension-policy.d.ts +69 -0
  186. package/dist/core/extensions/extension-policy.js +481 -0
  187. package/dist/core/extensions/extension-policy.js.map +1 -0
  188. package/dist/core/extensions/extension-registries.d.ts +8 -0
  189. package/dist/core/extensions/extension-registries.js +52 -0
  190. package/dist/core/extensions/extension-registries.js.map +1 -0
  191. package/dist/core/extensions/extension-runtime-helpers.d.ts +6 -0
  192. package/dist/core/extensions/extension-runtime-helpers.js +29 -0
  193. package/dist/core/extensions/extension-runtime-helpers.js.map +1 -0
  194. package/dist/core/extensions/extension-types.d.ts +13 -39
  195. package/dist/core/extensions/extension-types.js +34 -2
  196. package/dist/core/extensions/extension-types.js.map +1 -1
  197. package/dist/core/extensions/index.d.ts +7 -1
  198. package/dist/core/extensions/index.js +11 -14
  199. package/dist/core/extensions/index.js.map +1 -1
  200. package/dist/core/extensions/loader.d.ts +4 -22
  201. package/dist/core/extensions/loader.js +23 -1146
  202. package/dist/core/extensions/loader.js.map +1 -1
  203. package/dist/core/fs/path-utils.d.ts +1 -0
  204. package/dist/core/fs/path-utils.js +12 -0
  205. package/dist/core/fs/path-utils.js.map +1 -0
  206. package/dist/core/history/drift-scan.d.ts +22 -0
  207. package/dist/core/history/drift-scan.js +149 -0
  208. package/dist/core/history/drift-scan.js.map +1 -0
  209. package/dist/core/history/history-rewrite.d.ts +43 -0
  210. package/dist/core/history/history-rewrite.js +48 -0
  211. package/dist/core/history/history-rewrite.js.map +1 -0
  212. package/dist/core/history/history.js +5 -4
  213. package/dist/core/history/history.js.map +1 -1
  214. package/dist/core/history/replay.d.ts +82 -0
  215. package/dist/core/history/replay.js +250 -0
  216. package/dist/core/history/replay.js.map +1 -0
  217. package/dist/core/item/item-format.js +11 -8
  218. package/dist/core/item/item-format.js.map +1 -1
  219. package/dist/core/item/item-record.d.ts +19 -0
  220. package/dist/core/item/item-record.js +24 -0
  221. package/dist/core/item/item-record.js.map +1 -0
  222. package/dist/core/item/item-type-definition.d.ts +52 -0
  223. package/dist/core/item/item-type-definition.js +123 -0
  224. package/dist/core/item/item-type-definition.js.map +1 -0
  225. package/dist/core/item/parse.js +3 -2
  226. package/dist/core/item/parse.js.map +1 -1
  227. package/dist/core/item/priority.d.ts +23 -0
  228. package/dist/core/item/priority.js +55 -0
  229. package/dist/core/item/priority.js.map +1 -0
  230. package/dist/core/item/status.d.ts +14 -1
  231. package/dist/core/item/status.js +22 -2
  232. package/dist/core/item/status.js.map +1 -1
  233. package/dist/core/item/toon-decode.d.ts +19 -0
  234. package/dist/core/item/toon-decode.js +69 -0
  235. package/dist/core/item/toon-decode.js.map +1 -0
  236. package/dist/core/item/type-registry.js +13 -84
  237. package/dist/core/item/type-registry.js.map +1 -1
  238. package/dist/core/output/mutation-projection.d.ts +31 -0
  239. package/dist/core/output/mutation-projection.js +103 -0
  240. package/dist/core/output/mutation-projection.js.map +1 -0
  241. package/dist/core/output/output.d.ts +2 -0
  242. package/dist/core/output/output.js +5 -3
  243. package/dist/core/output/output.js.map +1 -1
  244. package/dist/core/packages/manifest.js +3 -9
  245. package/dist/core/packages/manifest.js.map +1 -1
  246. package/dist/core/schema/item-types-file.d.ts +85 -0
  247. package/dist/core/schema/item-types-file.js +243 -0
  248. package/dist/core/schema/item-types-file.js.map +1 -0
  249. package/dist/core/schema/runtime-schema.d.ts +2 -1
  250. package/dist/core/schema/runtime-schema.js +17 -45
  251. package/dist/core/schema/runtime-schema.js.map +1 -1
  252. package/dist/core/search/semantic-defaults.js +3 -3
  253. package/dist/core/search/semantic-defaults.js.map +1 -1
  254. package/dist/core/search/vector-stores.js +46 -9
  255. package/dist/core/search/vector-stores.js.map +1 -1
  256. package/dist/core/sentry/helpers.d.ts +1 -1
  257. package/dist/core/sentry/helpers.js +20 -3
  258. package/dist/core/sentry/helpers.js.map +1 -1
  259. package/dist/core/shared/author.d.ts +1 -0
  260. package/dist/core/shared/author.js +9 -0
  261. package/dist/core/shared/author.js.map +1 -0
  262. package/dist/core/shared/command-types.d.ts +1 -0
  263. package/dist/core/shared/command-types.js +2 -2
  264. package/dist/core/shared/command-types.js.map +1 -1
  265. package/dist/core/shared/constants.d.ts +10 -1
  266. package/dist/core/shared/constants.js +56 -58
  267. package/dist/core/shared/constants.js.map +1 -1
  268. package/dist/core/shared/lazy-module.d.ts +1 -0
  269. package/dist/core/shared/lazy-module.js +11 -0
  270. package/dist/core/shared/lazy-module.js.map +1 -0
  271. package/dist/core/shared/option-alias-visibility.d.ts +44 -0
  272. package/dist/core/shared/option-alias-visibility.js +76 -0
  273. package/dist/core/shared/option-alias-visibility.js.map +1 -0
  274. package/dist/core/shared/primitives.d.ts +23 -0
  275. package/dist/core/shared/primitives.js +39 -2
  276. package/dist/core/shared/primitives.js.map +1 -1
  277. package/dist/core/shared/text-normalization.d.ts +0 -1
  278. package/dist/core/shared/text-normalization.js +2 -5
  279. package/dist/core/shared/text-normalization.js.map +1 -1
  280. package/dist/core/store/front-matter-cache.d.ts +16 -2
  281. package/dist/core/store/front-matter-cache.js +99 -33
  282. package/dist/core/store/front-matter-cache.js.map +1 -1
  283. package/dist/core/store/item-store.d.ts +2 -0
  284. package/dist/core/store/item-store.js +76 -110
  285. package/dist/core/store/item-store.js.map +1 -1
  286. package/dist/core/store/settings-validator.d.ts +106 -0
  287. package/dist/core/store/settings-validator.js +279 -0
  288. package/dist/core/store/settings-validator.js.map +1 -0
  289. package/dist/core/store/settings.js +6 -343
  290. package/dist/core/store/settings.js.map +1 -1
  291. package/dist/core/telemetry/runtime.js +5 -3
  292. package/dist/core/telemetry/runtime.js.map +1 -1
  293. package/dist/mcp/server.js +138 -39
  294. package/dist/mcp/server.js.map +1 -1
  295. package/dist/sdk/cli-contracts/enum-contracts.d.ts +20 -0
  296. package/dist/sdk/cli-contracts/enum-contracts.js +156 -0
  297. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -0
  298. package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +14 -0
  299. package/dist/sdk/cli-contracts/tool-option-contracts.js +243 -0
  300. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -0
  301. package/dist/sdk/cli-contracts/tool-parameter-tables.d.ts +11 -0
  302. package/dist/sdk/cli-contracts/tool-parameter-tables.js +901 -0
  303. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -0
  304. package/dist/sdk/cli-contracts.d.ts +18 -33
  305. package/dist/sdk/cli-contracts.js +96 -1238
  306. package/dist/sdk/cli-contracts.js.map +1 -1
  307. package/dist/sdk/package-import-adapters.d.ts +74 -0
  308. package/dist/sdk/package-import-adapters.js +186 -0
  309. package/dist/sdk/package-import-adapters.js.map +1 -0
  310. package/dist/sdk/package-runtime-options.d.ts +26 -0
  311. package/dist/sdk/package-runtime-options.js +71 -0
  312. package/dist/sdk/package-runtime-options.js.map +1 -0
  313. package/dist/sdk/runtime.d.ts +27 -1
  314. package/dist/sdk/runtime.js +48 -3
  315. package/dist/sdk/runtime.js.map +1 -1
  316. package/dist/types.d.ts +6 -0
  317. package/dist/types.js +10 -2
  318. package/dist/types.js.map +1 -1
  319. package/docs/AGENT_GUIDE.md +13 -11
  320. package/docs/ARCHITECTURE.md +1 -1
  321. package/docs/CLAUDE_CODE_PLUGIN.md +5 -28
  322. package/docs/CODEX_PLUGIN.md +5 -5
  323. package/docs/COMMANDS.md +58 -9
  324. package/docs/CONFIGURATION.md +16 -1
  325. package/docs/EXTENSIONS.md +4 -63
  326. package/docs/RELEASING.md +12 -8
  327. package/docs/SDK.md +11 -2
  328. package/marketplace.json +7 -3
  329. package/package.json +18 -14
  330. package/packages/pm-beads/extensions/beads/index.js +2 -49
  331. package/packages/pm-beads/extensions/beads/index.ts +2 -54
  332. package/packages/pm-beads/extensions/beads/runtime-loader.js +86 -0
  333. package/packages/pm-beads/extensions/beads/runtime-loader.ts +88 -0
  334. package/packages/pm-beads/extensions/beads/runtime.js +26 -115
  335. package/packages/pm-beads/extensions/beads/runtime.ts +33 -132
  336. package/packages/pm-calendar/README.md +3 -1
  337. package/packages/pm-calendar/extensions/calendar/index.js +66 -2
  338. package/packages/pm-calendar/extensions/calendar/index.ts +71 -2
  339. package/packages/pm-calendar/extensions/calendar/runtime.js +1 -0
  340. package/packages/pm-calendar/extensions/calendar/runtime.ts +1 -0
  341. package/packages/pm-governance-audit/extensions/governance-audit/runtime.js +14 -41
  342. package/packages/pm-governance-audit/extensions/governance-audit/runtime.ts +25 -41
  343. package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +10 -50
  344. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +17 -50
  345. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.js +8 -40
  346. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.ts +10 -40
  347. package/packages/pm-search-advanced/README.md +8 -0
  348. package/packages/pm-search-advanced/extensions/search-advanced/index.js +75 -1
  349. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +74 -0
  350. package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +58 -33
  351. package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +60 -33
  352. package/packages/pm-templates/extensions/templates/runtime.js +11 -202
  353. package/packages/pm-templates/extensions/templates/runtime.ts +38 -230
  354. package/packages/pm-todos/extensions/todos/index.js +3 -50
  355. package/packages/pm-todos/extensions/todos/index.ts +3 -55
  356. package/packages/pm-todos/extensions/todos/runtime-loader.js +86 -0
  357. package/packages/pm-todos/extensions/todos/runtime-loader.ts +88 -0
  358. package/packages/pm-todos/extensions/todos/runtime.js +24 -117
  359. package/packages/pm-todos/extensions/todos/runtime.ts +32 -129
  360. package/plugins/pm-claude/README.md +2 -2
  361. package/plugins/pm-claude/commands/pm-planner.md +1 -15
  362. package/plugins/pm-claude/scripts/pm-mcp-server.mjs +5 -2
  363. package/plugins/pm-claude/skills/pm-planner/SKILL.md +3 -21
  364. package/plugins/pm-codex/scripts/pm-mcp-server.mjs +15 -6
  365. package/plugins/pm-codex/skills/pm-native/SKILL.md +1 -13
  366. package/PRD.md +0 -1734
  367. package/dist/core/output/command-aware.d.ts +0 -1
  368. package/dist/core/output/command-aware.js +0 -397
  369. package/dist/core/output/command-aware.js.map +0 -1
@@ -1,276 +1,13 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="56b1595a-f771-5452-b3b2-2e341123bec4")}catch(e){}}();
3
- import { z } from "zod";
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="7fed7222-981d-50f3-8a28-3635f56361b9")}catch(e){}}();
3
+ import { validateSettings } from "./settings-validator.js";
4
4
  import { runActiveOnReadHooks, runActiveOnWriteHooks } from "../extensions/index.js";
5
5
  import { GOVERNANCE_PRESET_DEFAULTS, SETTINGS_DEFAULTS } from "../shared/constants.js";
6
6
  import { readFileIfExists, writeFileAtomic } from "../fs/fs-utils.js";
7
7
  import { ensureRuntimeSchemaFileScaffold, loadRuntimeSchemaFromOptionalFiles, normalizeRuntimeSchemaSettings, } from "../schema/runtime-schema.js";
8
8
  import { getSettingsPath } from "./paths.js";
9
9
  import { orderObject } from "../shared/serialization.js";
10
- const itemTypeOptionSchema = z.object({
11
- key: z.string(),
12
- values: z.array(z.string()),
13
- required: z.boolean().optional(),
14
- aliases: z.array(z.string()).optional(),
15
- description: z.string().optional(),
16
- });
17
- const itemTypeCommandOptionPolicySchema = z.object({
18
- command: z.union([z.literal("create"), z.literal("update")]),
19
- option: z.string(),
20
- required: z.boolean().optional(),
21
- visible: z.boolean().optional(),
22
- enabled: z.boolean().optional(),
23
- });
24
- const itemTypeDefinitionSchema = z.object({
25
- name: z.string(),
26
- folder: z.string().optional(),
27
- aliases: z.array(z.string()).optional(),
28
- required_create_fields: z.array(z.string()).optional(),
29
- required_create_repeatables: z.array(z.string()).optional(),
30
- options: z.array(itemTypeOptionSchema).optional(),
31
- command_option_policies: z.array(itemTypeCommandOptionPolicySchema).optional(),
32
- });
33
- const runtimeStatusDefinitionSchema = z.object({
34
- id: z.string(),
35
- aliases: z.array(z.string()).optional(),
36
- roles: z
37
- .array(z.union([
38
- z.literal("draft"),
39
- z.literal("active"),
40
- z.literal("blocked"),
41
- z.literal("terminal"),
42
- z.literal("terminal_done"),
43
- z.literal("terminal_canceled"),
44
- z.literal("default_open"),
45
- z.literal("default_close"),
46
- z.literal("default_cancel"),
47
- ]))
48
- .optional(),
49
- description: z.string().optional(),
50
- order: z.number().optional(),
51
- });
52
- const runtimeFieldDefinitionSchema = z.object({
53
- key: z.string(),
54
- metadata_key: z.string().optional(),
55
- front_matter_key: z.string().optional(),
56
- cli_flag: z.string().optional(),
57
- cli_aliases: z.array(z.string()).optional(),
58
- description: z.string().optional(),
59
- type: z.union([z.literal("string"), z.literal("number"), z.literal("boolean"), z.literal("string_array")]).optional(),
60
- commands: z
61
- .array(z.union([
62
- z.literal("create"),
63
- z.literal("update"),
64
- z.literal("update_many"),
65
- z.literal("list"),
66
- z.literal("search"),
67
- z.literal("calendar"),
68
- z.literal("context"),
69
- ]))
70
- .optional(),
71
- repeatable: z.boolean().optional(),
72
- required: z.boolean().optional(),
73
- required_on_create: z.boolean().optional(),
74
- required_types: z.array(z.string()).optional(),
75
- allow_unset: z.boolean().optional(),
76
- });
77
- const runtimeSchemaSettingsSchema = z
78
- .object({
79
- version: z.number().int().optional(),
80
- files: z
81
- .object({
82
- types: z.string().optional(),
83
- statuses: z.string().optional(),
84
- fields: z.string().optional(),
85
- workflows: z.string().optional(),
86
- })
87
- .optional(),
88
- statuses: z.array(runtimeStatusDefinitionSchema).optional(),
89
- fields: z.array(runtimeFieldDefinitionSchema).optional(),
90
- workflow: z
91
- .object({
92
- draft_status: z.string().optional(),
93
- open_status: z.string().optional(),
94
- in_progress_status: z.string().optional(),
95
- blocked_status: z.string().optional(),
96
- close_status: z.string().optional(),
97
- canceled_status: z.string().optional(),
98
- })
99
- .optional(),
100
- unknown_field_policy: z.union([z.literal("allow"), z.literal("warn"), z.literal("reject")]).optional(),
101
- })
102
- .optional();
103
- const governanceSettingsSchema = z
104
- .object({
105
- preset: z.union([z.literal("minimal"), z.literal("default"), z.literal("strict"), z.literal("custom")]).optional(),
106
- ownership_enforcement: z.union([z.literal("none"), z.literal("warn"), z.literal("strict")]).optional(),
107
- create_mode_default: z.union([z.literal("progressive"), z.literal("strict")]).optional(),
108
- close_validation_default: z.union([z.literal("off"), z.literal("warn"), z.literal("strict")]).optional(),
109
- parent_reference: z.union([z.literal("warn"), z.literal("strict_error")]).optional(),
110
- metadata_profile: z.union([z.literal("core"), z.literal("strict"), z.literal("custom")]).optional(),
111
- force_required_for_stale_lock: z.boolean().optional(),
112
- create_default_type: z.string().optional(),
113
- })
114
- .optional();
115
- const extensionPolicyOverrideSchema = z.object({
116
- name: z.string(),
117
- disabled: z.boolean().optional(),
118
- require_trusted: z.boolean().optional(),
119
- require_provenance: z.boolean().optional(),
120
- sandbox_profile: z.union([z.literal("none"), z.literal("restricted"), z.literal("strict")]).optional(),
121
- allowed_capabilities: z.array(z.string()).optional(),
122
- blocked_capabilities: z.array(z.string()).optional(),
123
- allowed_surfaces: z.array(z.string()).optional(),
124
- blocked_surfaces: z.array(z.string()).optional(),
125
- allowed_commands: z.array(z.string()).optional(),
126
- blocked_commands: z.array(z.string()).optional(),
127
- allowed_actions: z.array(z.string()).optional(),
128
- blocked_actions: z.array(z.string()).optional(),
129
- allowed_services: z.array(z.string()).optional(),
130
- blocked_services: z.array(z.string()).optional(),
131
- });
132
- const extensionPolicySchema = z
133
- .object({
134
- mode: z.union([z.literal("off"), z.literal("warn"), z.literal("enforce")]).optional(),
135
- trust_mode: z.union([z.literal("off"), z.literal("warn"), z.literal("enforce")]).optional(),
136
- require_provenance: z.boolean().optional(),
137
- trusted_extensions: z.array(z.string()).optional(),
138
- default_sandbox_profile: z.union([z.literal("none"), z.literal("restricted"), z.literal("strict")]).optional(),
139
- allowed_extensions: z.array(z.string()).optional(),
140
- blocked_extensions: z.array(z.string()).optional(),
141
- allowed_capabilities: z.array(z.string()).optional(),
142
- blocked_capabilities: z.array(z.string()).optional(),
143
- allowed_surfaces: z.array(z.string()).optional(),
144
- blocked_surfaces: z.array(z.string()).optional(),
145
- allowed_commands: z.array(z.string()).optional(),
146
- blocked_commands: z.array(z.string()).optional(),
147
- allowed_actions: z.array(z.string()).optional(),
148
- blocked_actions: z.array(z.string()).optional(),
149
- allowed_services: z.array(z.string()).optional(),
150
- blocked_services: z.array(z.string()).optional(),
151
- extension_overrides: z.array(extensionPolicyOverrideSchema).optional(),
152
- })
153
- .optional();
154
- const settingsSchema = z.object({
155
- version: z.number().int(),
156
- id_prefix: z.string(),
157
- author_default: z.string(),
158
- item_format: z.union([z.literal("toon"), z.literal("json_markdown")]).optional(),
159
- locks: z.object({
160
- ttl_seconds: z.number().int(),
161
- }),
162
- output: z.object({
163
- default_format: z.union([z.literal("toon"), z.literal("json")]),
164
- }),
165
- history: z
166
- .object({
167
- missing_stream: z.union([z.literal("auto_create"), z.literal("strict_error")]),
168
- })
169
- .optional(),
170
- validation: z
171
- .object({
172
- sprint_release_format: z.union([z.literal("warn"), z.literal("strict_error")]),
173
- parent_reference: z.union([z.literal("warn"), z.literal("strict_error")]).optional(),
174
- metadata_profile: z.union([z.literal("core"), z.literal("strict"), z.literal("custom")]).optional(),
175
- metadata_required_fields: z.array(z.string()).optional(),
176
- lifecycle_stale_blocker_reason_patterns: z.array(z.string()).optional(),
177
- lifecycle_closure_like_blocked_reason_patterns: z.array(z.string()).optional(),
178
- lifecycle_closure_like_resolution_patterns: z.array(z.string()).optional(),
179
- lifecycle_closure_like_actual_result_patterns: z.array(z.string()).optional(),
180
- })
181
- .optional(),
182
- governance: governanceSettingsSchema,
183
- workflow: z
184
- .object({
185
- definition_of_done: z.array(z.string()),
186
- })
187
- .optional(),
188
- testing: z
189
- .object({
190
- record_results_to_items: z.boolean(),
191
- })
192
- .optional(),
193
- telemetry: z
194
- .object({
195
- enabled: z.boolean(),
196
- first_run_prompt_completed: z.boolean().optional(),
197
- capture_level: z.union([z.literal("minimal"), z.literal("redacted"), z.literal("max")]).optional(),
198
- endpoint: z.string().optional(),
199
- installation_id: z.string().optional(),
200
- retention_days: z.number().int().positive().optional(),
201
- })
202
- .optional(),
203
- agent_guidance: z
204
- .object({
205
- prompt_completed: z.boolean().optional(),
206
- declined: z.boolean().optional(),
207
- declined_at: z.string().optional(),
208
- template_version: z.number().int().positive().optional(),
209
- last_checked_files: z.array(z.string()).optional(),
210
- })
211
- .optional(),
212
- item_types: z
213
- .object({
214
- definitions: z.array(itemTypeDefinitionSchema),
215
- })
216
- .optional(),
217
- schema: runtimeSchemaSettingsSchema,
218
- context: z
219
- .object({
220
- default_depth: z.union([z.literal("brief"), z.literal("standard"), z.literal("deep")]).optional(),
221
- activity_limit: z.number().int().positive().optional(),
222
- stale_threshold_days: z.number().int().positive().optional(),
223
- sections: z
224
- .object({
225
- hierarchy: z.boolean().optional(),
226
- activity: z.boolean().optional(),
227
- progress: z.boolean().optional(),
228
- blockers: z.boolean().optional(),
229
- files: z.boolean().optional(),
230
- workload: z.boolean().optional(),
231
- staleness: z.boolean().optional(),
232
- tests: z.boolean().optional(),
233
- })
234
- .optional(),
235
- })
236
- .optional(),
237
- extensions: z.object({
238
- enabled: z.array(z.string()),
239
- disabled: z.array(z.string()),
240
- policy: extensionPolicySchema,
241
- }),
242
- search: z.object({
243
- score_threshold: z.number(),
244
- hybrid_semantic_weight: z.number().optional(),
245
- max_results: z.number().int(),
246
- embedding_model: z.string(),
247
- embedding_batch_size: z.number().int(),
248
- embedding_timeout_ms: z.number().int().optional(),
249
- scanner_max_batch_retries: z.number().int(),
250
- provider: z.string().optional(),
251
- }),
252
- providers: z.object({
253
- openai: z.object({
254
- base_url: z.string(),
255
- api_key: z.string(),
256
- model: z.string(),
257
- }),
258
- ollama: z.object({
259
- base_url: z.string(),
260
- model: z.string(),
261
- }),
262
- }),
263
- vector_store: z.object({
264
- adapter: z.string().optional(),
265
- qdrant: z.object({
266
- url: z.string(),
267
- api_key: z.string(),
268
- }),
269
- lancedb: z.object({
270
- path: z.string(),
271
- }),
272
- }),
273
- });
10
+ import { normalizeItemTypeDefinition } from "../item/item-type-definition.js";
274
11
  const SETTINGS_WRITE_OP = "settings:write";
275
12
  function resolveGovernanceKnobsFromPreset(preset) {
276
13
  return structuredClone(GOVERNANCE_PRESET_DEFAULTS[preset]);
@@ -488,75 +225,6 @@ function normalizeValidationMetadataRequiredFields(values) {
488
225
  function normalizeValidationPatternList(values) {
489
226
  return [...new Set((values ?? []).map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0))].sort((left, right) => left.localeCompare(right));
490
227
  }
491
- function normalizeItemTypeOptionDefinition(option) {
492
- const key = option.key.trim();
493
- if (key.length === 0) {
494
- return null;
495
- }
496
- const values = normalizeStringList(option.values);
497
- const aliases = normalizeStringList(option.aliases);
498
- const description = option.description?.trim();
499
- return {
500
- key,
501
- values,
502
- required: option.required === true ? true : undefined,
503
- aliases: aliases.length > 0 ? aliases : undefined,
504
- description: description && description.length > 0 ? description : undefined,
505
- };
506
- }
507
- function normalizeItemTypeCommandOptionPolicy(policy) {
508
- const option = policy.option.trim();
509
- if (option.length === 0) {
510
- return null;
511
- }
512
- return {
513
- command: policy.command,
514
- option,
515
- required: policy.required,
516
- visible: policy.visible,
517
- enabled: policy.enabled,
518
- };
519
- }
520
- function normalizeItemTypeDefinition(definition) {
521
- const name = definition.name.trim();
522
- if (name.length === 0) {
523
- return null;
524
- }
525
- const hasRequiredCreateFields = definition.required_create_fields !== undefined;
526
- const hasRequiredCreateRepeatables = definition.required_create_repeatables !== undefined;
527
- const hasOptions = definition.options !== undefined;
528
- const hasCommandOptionPolicies = definition.command_option_policies !== undefined;
529
- const folder = definition.folder?.trim();
530
- const aliases = normalizeStringList(definition.aliases);
531
- const requiredCreateFields = normalizeStringList(definition.required_create_fields);
532
- const requiredCreateRepeatables = normalizeStringList(definition.required_create_repeatables);
533
- const options = (definition.options ?? [])
534
- .map((option) => normalizeItemTypeOptionDefinition(option))
535
- .filter((option) => option !== null)
536
- .sort((left, right) => left.key.localeCompare(right.key));
537
- const commandOptionPolicies = (() => {
538
- const dedupedByKey = new Map();
539
- for (const policy of definition.command_option_policies ?? []) {
540
- const normalized = normalizeItemTypeCommandOptionPolicy(policy);
541
- if (!normalized) {
542
- continue;
543
- }
544
- dedupedByKey.set(`${normalized.command}:${normalized.option.toLowerCase()}`, normalized);
545
- }
546
- return [...dedupedByKey.values()].sort((left, right) => left.command === right.command
547
- ? left.option.localeCompare(right.option)
548
- : left.command.localeCompare(right.command));
549
- })();
550
- return {
551
- name,
552
- folder: folder && folder.length > 0 ? folder : undefined,
553
- aliases: aliases.length > 0 ? aliases : undefined,
554
- required_create_fields: hasRequiredCreateFields ? requiredCreateFields : undefined,
555
- required_create_repeatables: hasRequiredCreateRepeatables ? requiredCreateRepeatables : undefined,
556
- options: hasOptions ? options : undefined,
557
- command_option_policies: hasCommandOptionPolicies ? commandOptionPolicies : undefined,
558
- };
559
- }
560
228
  export function normalizeItemTypeDefinitions(definitions) {
561
229
  const normalized = (definitions ?? [])
562
230
  .map((definition) => normalizeItemTypeDefinition(definition))
@@ -567,13 +235,8 @@ export function normalizeItemTypeDefinitions(definitions) {
567
235
  }
568
236
  return [...dedupedByName.values()].sort((left, right) => left.name.localeCompare(right.name));
569
237
  }
570
- function mergeSettings(raw) {
238
+ function mergeSettings(settings) {
571
239
  const defaults = cloneDefaults();
572
- const parsed = settingsSchema.safeParse(raw);
573
- if (!parsed.success) {
574
- return defaults;
575
- }
576
- const settings = parsed.data;
577
240
  const governance = resolveGovernanceKnobs({
578
241
  governance: settings.governance ?? { preset: "default" },
579
242
  });
@@ -840,7 +503,7 @@ export async function readSettingsWithMetadata(pmRoot) {
840
503
  catch {
841
504
  return buildFallbackSettingsReadResult("settings_read_invalid_json");
842
505
  }
843
- const validated = settingsSchema.safeParse(parsed);
506
+ const validated = validateSettings(parsed);
844
507
  if (!validated.success) {
845
508
  return buildFallbackSettingsReadResult("settings_read_invalid_schema");
846
509
  }
@@ -889,4 +552,4 @@ export async function writeSettings(pmRoot, settings, op = SETTINGS_WRITE_OP) {
889
552
  });
890
553
  }
891
554
  //# sourceMappingURL=settings.js.map
892
- //# debugId=56b1595a-f771-5452-b3b2-2e341123bec4
555
+ //# debugId=7fed7222-981d-50f3-8a28-3635f56361b9