@unbrained/pm-cli 2026.3.9 → 2026.5.1-2

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 (288) hide show
  1. package/.agents/pm/extensions/.managed-extensions.json +42 -0
  2. package/.agents/pm/extensions/beads/index.js +109 -0
  3. package/.agents/pm/extensions/beads/manifest.json +7 -0
  4. package/{dist/cli/commands/beads.js → .agents/pm/extensions/beads/runtime.js} +167 -56
  5. package/.agents/pm/extensions/beads/runtime.ts +702 -0
  6. package/.agents/pm/extensions/todos/index.js +126 -0
  7. package/.agents/pm/extensions/todos/manifest.json +7 -0
  8. package/{dist/extensions/builtins/todos/import-export.js → .agents/pm/extensions/todos/runtime.js} +39 -29
  9. package/.agents/pm/extensions/todos/runtime.ts +568 -0
  10. package/AGENTS.md +212 -94
  11. package/CHANGELOG.md +404 -0
  12. package/CODE_OF_CONDUCT.md +42 -0
  13. package/CONTRIBUTING.md +144 -0
  14. package/PRD.md +522 -173
  15. package/README.md +996 -495
  16. package/SECURITY.md +51 -0
  17. package/dist/cli/commands/activity.d.ts +5 -0
  18. package/dist/cli/commands/activity.js +66 -3
  19. package/dist/cli/commands/activity.js.map +1 -1
  20. package/dist/cli/commands/aggregate.d.ts +54 -0
  21. package/dist/cli/commands/aggregate.js +181 -0
  22. package/dist/cli/commands/aggregate.js.map +1 -0
  23. package/dist/cli/commands/append.js +4 -1
  24. package/dist/cli/commands/append.js.map +1 -1
  25. package/dist/cli/commands/calendar.d.ts +109 -0
  26. package/dist/cli/commands/calendar.js +797 -0
  27. package/dist/cli/commands/calendar.js.map +1 -0
  28. package/dist/cli/commands/claim.d.ts +5 -1
  29. package/dist/cli/commands/claim.js +42 -21
  30. package/dist/cli/commands/claim.js.map +1 -1
  31. package/dist/cli/commands/close.d.ts +1 -0
  32. package/dist/cli/commands/close.js +54 -5
  33. package/dist/cli/commands/close.js.map +1 -1
  34. package/dist/cli/commands/comments-audit.d.ts +91 -0
  35. package/dist/cli/commands/comments-audit.js +195 -0
  36. package/dist/cli/commands/comments-audit.js.map +1 -0
  37. package/dist/cli/commands/comments.d.ts +1 -0
  38. package/dist/cli/commands/comments.js +70 -21
  39. package/dist/cli/commands/comments.js.map +1 -1
  40. package/dist/cli/commands/completion.d.ts +10 -4
  41. package/dist/cli/commands/completion.js +1240 -193
  42. package/dist/cli/commands/completion.js.map +1 -1
  43. package/dist/cli/commands/config.d.ts +35 -3
  44. package/dist/cli/commands/config.js +968 -13
  45. package/dist/cli/commands/config.js.map +1 -1
  46. package/dist/cli/commands/context.d.ts +86 -0
  47. package/dist/cli/commands/context.js +299 -0
  48. package/dist/cli/commands/context.js.map +1 -0
  49. package/dist/cli/commands/contracts.d.ts +78 -0
  50. package/dist/cli/commands/contracts.js +920 -0
  51. package/dist/cli/commands/contracts.js.map +1 -0
  52. package/dist/cli/commands/create.d.ts +48 -14
  53. package/dist/cli/commands/create.js +1331 -160
  54. package/dist/cli/commands/create.js.map +1 -1
  55. package/dist/cli/commands/dedupe-audit.d.ts +81 -0
  56. package/dist/cli/commands/dedupe-audit.js +330 -0
  57. package/dist/cli/commands/dedupe-audit.js.map +1 -0
  58. package/dist/cli/commands/deps.d.ts +52 -0
  59. package/dist/cli/commands/deps.js +204 -0
  60. package/dist/cli/commands/deps.js.map +1 -0
  61. package/dist/cli/commands/docs.d.ts +19 -0
  62. package/dist/cli/commands/docs.js +212 -13
  63. package/dist/cli/commands/docs.js.map +1 -1
  64. package/dist/cli/commands/extension.d.ts +122 -0
  65. package/dist/cli/commands/extension.js +1850 -0
  66. package/dist/cli/commands/extension.js.map +1 -0
  67. package/dist/cli/commands/files.d.ts +52 -1
  68. package/dist/cli/commands/files.js +455 -13
  69. package/dist/cli/commands/files.js.map +1 -1
  70. package/dist/cli/commands/gc.d.ts +11 -1
  71. package/dist/cli/commands/gc.js +89 -11
  72. package/dist/cli/commands/gc.js.map +1 -1
  73. package/dist/cli/commands/get.d.ts +13 -0
  74. package/dist/cli/commands/get.js +35 -3
  75. package/dist/cli/commands/get.js.map +1 -1
  76. package/dist/cli/commands/health.d.ts +10 -2
  77. package/dist/cli/commands/health.js +774 -23
  78. package/dist/cli/commands/health.js.map +1 -1
  79. package/dist/cli/commands/history.d.ts +20 -0
  80. package/dist/cli/commands/history.js +152 -6
  81. package/dist/cli/commands/history.js.map +1 -1
  82. package/dist/cli/commands/index.d.ts +16 -3
  83. package/dist/cli/commands/index.js +16 -3
  84. package/dist/cli/commands/index.js.map +1 -1
  85. package/dist/cli/commands/init.d.ts +7 -2
  86. package/dist/cli/commands/init.js +137 -5
  87. package/dist/cli/commands/init.js.map +1 -1
  88. package/dist/cli/commands/learnings.d.ts +17 -0
  89. package/dist/cli/commands/learnings.js +129 -0
  90. package/dist/cli/commands/learnings.js.map +1 -0
  91. package/dist/cli/commands/list.d.ts +29 -1
  92. package/dist/cli/commands/list.js +292 -56
  93. package/dist/cli/commands/list.js.map +1 -1
  94. package/dist/cli/commands/normalize.d.ts +51 -0
  95. package/dist/cli/commands/normalize.js +298 -0
  96. package/dist/cli/commands/normalize.js.map +1 -0
  97. package/dist/cli/commands/notes.d.ts +17 -0
  98. package/dist/cli/commands/notes.js +129 -0
  99. package/dist/cli/commands/notes.js.map +1 -0
  100. package/dist/cli/commands/reindex.d.ts +1 -0
  101. package/dist/cli/commands/reindex.js +208 -32
  102. package/dist/cli/commands/reindex.js.map +1 -1
  103. package/dist/cli/commands/restore.js +164 -30
  104. package/dist/cli/commands/restore.js.map +1 -1
  105. package/dist/cli/commands/search.d.ts +14 -1
  106. package/dist/cli/commands/search.js +479 -85
  107. package/dist/cli/commands/search.js.map +1 -1
  108. package/dist/cli/commands/stats.js +26 -10
  109. package/dist/cli/commands/stats.js.map +1 -1
  110. package/dist/cli/commands/templates.d.ts +26 -0
  111. package/dist/cli/commands/templates.js +179 -0
  112. package/dist/cli/commands/templates.js.map +1 -0
  113. package/dist/cli/commands/test-all.d.ts +19 -1
  114. package/dist/cli/commands/test-all.js +161 -13
  115. package/dist/cli/commands/test-all.js.map +1 -1
  116. package/dist/cli/commands/test-runs.d.ts +63 -0
  117. package/dist/cli/commands/test-runs.js +179 -0
  118. package/dist/cli/commands/test-runs.js.map +1 -0
  119. package/dist/cli/commands/test.d.ts +75 -1
  120. package/dist/cli/commands/test.js +1360 -41
  121. package/dist/cli/commands/test.js.map +1 -1
  122. package/dist/cli/commands/update-many.d.ts +57 -0
  123. package/dist/cli/commands/update-many.js +631 -0
  124. package/dist/cli/commands/update-many.js.map +1 -0
  125. package/dist/cli/commands/update.d.ts +30 -0
  126. package/dist/cli/commands/update.js +1393 -84
  127. package/dist/cli/commands/update.js.map +1 -1
  128. package/dist/cli/commands/validate.d.ts +30 -0
  129. package/dist/cli/commands/validate.js +1151 -0
  130. package/dist/cli/commands/validate.js.map +1 -0
  131. package/dist/cli/error-guidance.d.ts +33 -0
  132. package/dist/cli/error-guidance.js +337 -0
  133. package/dist/cli/error-guidance.js.map +1 -0
  134. package/dist/cli/extension-command-options.d.ts +1 -0
  135. package/dist/cli/extension-command-options.js +92 -0
  136. package/dist/cli/extension-command-options.js.map +1 -1
  137. package/dist/cli/help-content.d.ts +20 -0
  138. package/dist/cli/help-content.js +543 -0
  139. package/dist/cli/help-content.js.map +1 -0
  140. package/dist/cli/main.js +3648 -467
  141. package/dist/cli/main.js.map +1 -1
  142. package/dist/core/extensions/index.d.ts +13 -1
  143. package/dist/core/extensions/index.js +108 -1
  144. package/dist/core/extensions/index.js.map +1 -1
  145. package/dist/core/extensions/item-fields.d.ts +2 -0
  146. package/dist/core/extensions/item-fields.js +79 -0
  147. package/dist/core/extensions/item-fields.js.map +1 -0
  148. package/dist/core/extensions/loader.d.ts +322 -9
  149. package/dist/core/extensions/loader.js +911 -20
  150. package/dist/core/extensions/loader.js.map +1 -1
  151. package/dist/core/extensions/runtime-registrations.d.ts +5 -0
  152. package/dist/core/extensions/runtime-registrations.js +51 -0
  153. package/dist/core/extensions/runtime-registrations.js.map +1 -0
  154. package/dist/core/history/history-stream-policy.d.ts +20 -0
  155. package/dist/core/history/history-stream-policy.js +53 -0
  156. package/dist/core/history/history-stream-policy.js.map +1 -0
  157. package/dist/core/history/history.js +90 -1
  158. package/dist/core/history/history.js.map +1 -1
  159. package/dist/core/item/id.d.ts +1 -0
  160. package/dist/core/item/id.js +10 -3
  161. package/dist/core/item/id.js.map +1 -1
  162. package/dist/core/item/index.d.ts +1 -0
  163. package/dist/core/item/index.js +1 -0
  164. package/dist/core/item/index.js.map +1 -1
  165. package/dist/core/item/item-format.d.ts +11 -5
  166. package/dist/core/item/item-format.js +532 -28
  167. package/dist/core/item/item-format.js.map +1 -1
  168. package/dist/core/item/parent-reference-policy.d.ts +6 -0
  169. package/dist/core/item/parent-reference-policy.js +32 -0
  170. package/dist/core/item/parent-reference-policy.js.map +1 -0
  171. package/dist/core/item/parse.d.ts +5 -0
  172. package/dist/core/item/parse.js +216 -19
  173. package/dist/core/item/parse.js.map +1 -1
  174. package/dist/core/item/sprint-release-format.d.ts +6 -0
  175. package/dist/core/item/sprint-release-format.js +33 -0
  176. package/dist/core/item/sprint-release-format.js.map +1 -0
  177. package/dist/core/item/status.d.ts +3 -0
  178. package/dist/core/item/status.js +24 -0
  179. package/dist/core/item/status.js.map +1 -0
  180. package/dist/core/item/type-registry.d.ts +37 -0
  181. package/dist/core/item/type-registry.js +706 -0
  182. package/dist/core/item/type-registry.js.map +1 -0
  183. package/dist/core/lock/lock.d.ts +1 -1
  184. package/dist/core/lock/lock.js +101 -12
  185. package/dist/core/lock/lock.js.map +1 -1
  186. package/dist/core/output/command-aware.d.ts +1 -0
  187. package/dist/core/output/command-aware.js +394 -0
  188. package/dist/core/output/command-aware.js.map +1 -0
  189. package/dist/core/output/output.d.ts +3 -0
  190. package/dist/core/output/output.js +124 -6
  191. package/dist/core/output/output.js.map +1 -1
  192. package/dist/core/schema/runtime-field-filters.d.ts +3 -0
  193. package/dist/core/schema/runtime-field-filters.js +39 -0
  194. package/dist/core/schema/runtime-field-filters.js.map +1 -0
  195. package/dist/core/schema/runtime-field-values.d.ts +8 -0
  196. package/dist/core/schema/runtime-field-values.js +154 -0
  197. package/dist/core/schema/runtime-field-values.js.map +1 -0
  198. package/dist/core/schema/runtime-schema.d.ts +68 -0
  199. package/dist/core/schema/runtime-schema.js +554 -0
  200. package/dist/core/schema/runtime-schema.js.map +1 -0
  201. package/dist/core/search/cache.d.ts +13 -1
  202. package/dist/core/search/cache.js +123 -14
  203. package/dist/core/search/cache.js.map +1 -1
  204. package/dist/core/search/semantic-defaults.d.ts +6 -0
  205. package/dist/core/search/semantic-defaults.js +120 -0
  206. package/dist/core/search/semantic-defaults.js.map +1 -0
  207. package/dist/core/search/vector-stores.js +3 -1
  208. package/dist/core/search/vector-stores.js.map +1 -1
  209. package/dist/core/shared/command-types.d.ts +2 -0
  210. package/dist/core/shared/conflict-markers.d.ts +7 -0
  211. package/dist/core/shared/conflict-markers.js +27 -0
  212. package/dist/core/shared/conflict-markers.js.map +1 -0
  213. package/dist/core/shared/constants.d.ts +15 -4
  214. package/dist/core/shared/constants.js +146 -1
  215. package/dist/core/shared/constants.js.map +1 -1
  216. package/dist/core/shared/errors.d.ts +10 -1
  217. package/dist/core/shared/errors.js +3 -1
  218. package/dist/core/shared/errors.js.map +1 -1
  219. package/dist/core/shared/text-normalization.d.ts +4 -0
  220. package/dist/core/shared/text-normalization.js +33 -0
  221. package/dist/core/shared/text-normalization.js.map +1 -0
  222. package/dist/core/shared/time.d.ts +3 -2
  223. package/dist/core/shared/time.js +109 -11
  224. package/dist/core/shared/time.js.map +1 -1
  225. package/dist/core/store/index.d.ts +1 -0
  226. package/dist/core/store/index.js +1 -0
  227. package/dist/core/store/index.js.map +1 -1
  228. package/dist/core/store/item-format-migration.d.ts +9 -0
  229. package/dist/core/store/item-format-migration.js +87 -0
  230. package/dist/core/store/item-format-migration.js.map +1 -0
  231. package/dist/core/store/item-store.d.ts +13 -4
  232. package/dist/core/store/item-store.js +243 -52
  233. package/dist/core/store/item-store.js.map +1 -1
  234. package/dist/core/store/paths.d.ts +21 -3
  235. package/dist/core/store/paths.js +59 -4
  236. package/dist/core/store/paths.js.map +1 -1
  237. package/dist/core/store/settings.d.ts +14 -1
  238. package/dist/core/store/settings.js +463 -7
  239. package/dist/core/store/settings.js.map +1 -1
  240. package/dist/core/telemetry/consent.d.ts +2 -0
  241. package/dist/core/telemetry/consent.js +79 -0
  242. package/dist/core/telemetry/consent.js.map +1 -0
  243. package/dist/core/telemetry/runtime.d.ts +38 -0
  244. package/dist/core/telemetry/runtime.js +733 -0
  245. package/dist/core/telemetry/runtime.js.map +1 -0
  246. package/dist/core/test/background-runs.d.ts +117 -0
  247. package/dist/core/test/background-runs.js +760 -0
  248. package/dist/core/test/background-runs.js.map +1 -0
  249. package/dist/core/test/item-test-run-tracking.d.ts +9 -0
  250. package/dist/core/test/item-test-run-tracking.js +50 -0
  251. package/dist/core/test/item-test-run-tracking.js.map +1 -0
  252. package/dist/sdk/cli-contracts.d.ts +92 -0
  253. package/dist/sdk/cli-contracts.js +2357 -0
  254. package/dist/sdk/cli-contracts.js.map +1 -0
  255. package/dist/sdk/index.d.ts +34 -0
  256. package/dist/sdk/index.js +23 -0
  257. package/dist/sdk/index.js.map +1 -0
  258. package/dist/types.d.ts +204 -4
  259. package/dist/types.js +56 -1
  260. package/dist/types.js.map +1 -1
  261. package/docs/ARCHITECTURE.md +369 -40
  262. package/docs/EXTENSIONS.md +454 -49
  263. package/docs/RELEASING.md +70 -19
  264. package/docs/SDK.md +123 -0
  265. package/docs/examples/starter-extension/README.md +48 -0
  266. package/docs/examples/starter-extension/index.js +191 -0
  267. package/docs/examples/starter-extension/manifest.json +17 -0
  268. package/docs/examples/starter-extension/package.json +10 -0
  269. package/package.json +41 -14
  270. package/scripts/install.ps1 +2 -1
  271. package/scripts/install.sh +2 -1
  272. package/.pi/extensions/pm-cli/index.ts +0 -778
  273. package/dist/cli/commands/beads.d.ts +0 -15
  274. package/dist/cli/commands/beads.js.map +0 -1
  275. package/dist/cli/commands/install.d.ts +0 -18
  276. package/dist/cli/commands/install.js +0 -87
  277. package/dist/cli/commands/install.js.map +0 -1
  278. package/dist/core/extensions/builtins.d.ts +0 -3
  279. package/dist/core/extensions/builtins.js +0 -47
  280. package/dist/core/extensions/builtins.js.map +0 -1
  281. package/dist/extensions/builtins/beads/index.d.ts +0 -8
  282. package/dist/extensions/builtins/beads/index.js +0 -29
  283. package/dist/extensions/builtins/beads/index.js.map +0 -1
  284. package/dist/extensions/builtins/todos/import-export.d.ts +0 -26
  285. package/dist/extensions/builtins/todos/import-export.js.map +0 -1
  286. package/dist/extensions/builtins/todos/index.d.ts +0 -8
  287. package/dist/extensions/builtins/todos/index.js +0 -38
  288. package/dist/extensions/builtins/todos/index.js.map +0 -1
@@ -1,14 +1,17 @@
1
1
  import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
- import { runActiveOnReadHooks, runActiveOnWriteHooks } from "../extensions/index.js";
3
+ import { getActiveExtensionRegistrations, runActiveOnReadHooks, runActiveOnWriteHooks, runActiveServiceOverride, } from "../extensions/index.js";
4
4
  import { EMPTY_CANONICAL_DOCUMENT, EXIT_CODE, TYPE_TO_FOLDER } from "../shared/constants.js";
5
5
  import { PmCliError } from "../shared/errors.js";
6
6
  import { appendHistoryEntry, createHistoryEntry } from "../history/history.js";
7
+ import { enforceHistoryStreamPolicyForItem } from "../history/history-stream-policy.js";
7
8
  import { canonicalDocument, parseItemDocument, serializeItemDocument } from "../item/item-format.js";
9
+ import { resolveItemTypeRegistry } from "../item/type-registry.js";
8
10
  import { acquireLock } from "../lock/lock.js";
9
11
  import { writeFileAtomic } from "../fs/fs-utils.js";
10
- import { normalizeItemId } from "../item/id.js";
11
- import { getHistoryPath } from "./paths.js";
12
+ import { normalizeItemId, normalizeRawItemId } from "../item/id.js";
13
+ import { getHistoryPath, getItemFormatFromPath, getItemPath, ITEM_FILE_EXTENSIONS } from "./paths.js";
14
+ import { resolveGovernanceKnobs } from "./settings.js";
12
15
  import { nowIso } from "../shared/time.js";
13
16
  async function fileExists(targetPath) {
14
17
  try {
@@ -19,79 +22,211 @@ async function fileExists(targetPath) {
19
22
  return false;
20
23
  }
21
24
  }
22
- export async function locateItem(pmRoot, rawId, idPrefix) {
25
+ function isErrno(error, code) {
26
+ return typeof error === "object" && error !== null && "code" in error && error.code === code;
27
+ }
28
+ function appendWarning(warnings, warning) {
29
+ if (!warnings) {
30
+ return;
31
+ }
32
+ if (!warnings.includes(warning)) {
33
+ warnings.push(warning);
34
+ }
35
+ }
36
+ function resolveItemFormatSearchOrder(preferredFormat) {
37
+ if (preferredFormat === "toon") {
38
+ return ["toon", "json_markdown"];
39
+ }
40
+ if (preferredFormat === "json_markdown") {
41
+ return ["json_markdown", "toon"];
42
+ }
43
+ return ["toon", "json_markdown"];
44
+ }
45
+ export async function locateItem(pmRoot, rawId, idPrefix, preferredFormat, typeToFolder = TYPE_TO_FOLDER) {
23
46
  const normalizedId = normalizeItemId(rawId, idPrefix);
24
- const entries = Object.entries(TYPE_TO_FOLDER);
25
- for (const [type, folder] of entries) {
26
- const itemPath = path.join(pmRoot, folder, `${normalizedId}.md`);
27
- if (await fileExists(itemPath)) {
28
- return {
29
- id: normalizedId,
30
- type,
31
- itemPath,
32
- };
47
+ const rawNormalizedId = normalizeRawItemId(rawId);
48
+ const candidateIds = normalizedId === rawNormalizedId ? [normalizedId] : [normalizedId, rawNormalizedId];
49
+ const entries = Object.entries(typeToFolder);
50
+ const searchOrder = resolveItemFormatSearchOrder(preferredFormat);
51
+ for (const candidateId of candidateIds) {
52
+ for (const [type] of entries) {
53
+ for (const itemFormat of searchOrder) {
54
+ const itemPath = getItemPath(pmRoot, type, candidateId, itemFormat, typeToFolder);
55
+ if (await fileExists(itemPath)) {
56
+ return {
57
+ id: candidateId,
58
+ type,
59
+ itemPath,
60
+ item_format: itemFormat,
61
+ };
62
+ }
63
+ }
33
64
  }
34
65
  }
35
66
  return null;
36
67
  }
37
- export async function readLocatedItem(item) {
68
+ export async function readLocatedItem(item, options = {}) {
38
69
  const raw = await fs.readFile(item.itemPath, "utf8");
39
70
  await runActiveOnReadHooks({
40
71
  path: item.itemPath,
41
72
  scope: "project",
42
73
  });
43
- const document = parseItemDocument(raw);
74
+ const document = parseItemDocument(raw, {
75
+ format: item.item_format,
76
+ schema: options.schema,
77
+ onWarning: (warning) => appendWarning(options.warnings, warning),
78
+ });
44
79
  return { raw, document };
45
80
  }
46
- export async function listAllFrontMatter(pmRoot) {
47
- const entries = Object.values(TYPE_TO_FOLDER);
48
- const items = [];
49
- for (const folder of entries) {
81
+ export async function listAllFrontMatter(pmRoot, preferredFormat, typeToFolder = TYPE_TO_FOLDER, warnings, schema) {
82
+ const documents = await listAllDocuments(pmRoot, preferredFormat, typeToFolder, warnings, schema);
83
+ return documents.map((document) => document.front_matter);
84
+ }
85
+ export async function listAllFrontMatterWithBody(pmRoot, preferredFormat, typeToFolder = TYPE_TO_FOLDER, warnings, schema) {
86
+ const documents = await listAllDocuments(pmRoot, preferredFormat, typeToFolder, warnings, schema);
87
+ return documents.map((document) => ({
88
+ ...document.front_matter,
89
+ body: document.body,
90
+ }));
91
+ }
92
+ async function listAllDocuments(pmRoot, preferredFormat, typeToFolder = TYPE_TO_FOLDER, warnings, schema) {
93
+ const entries = Object.entries(typeToFolder);
94
+ const documentsById = new Map();
95
+ for (const [, folder] of entries) {
50
96
  const dirPath = path.join(pmRoot, folder);
51
97
  let files = [];
52
98
  try {
53
99
  files = await fs.readdir(dirPath);
54
100
  }
55
- catch {
101
+ catch (error) {
102
+ if (!isErrno(error, "ENOENT")) {
103
+ appendWarning(warnings, `item_list_directory_read_failed:${folder}`);
104
+ }
56
105
  continue;
57
106
  }
58
- for (const file of files.filter((entry) => entry.endsWith(".md"))) {
107
+ for (const file of files.filter((entry) => ITEM_FILE_EXTENSIONS.some((ext) => entry.toLowerCase().endsWith(ext)))) {
59
108
  try {
60
109
  const itemPath = path.join(dirPath, file);
110
+ const itemFormat = getItemFormatFromPath(itemPath);
61
111
  const raw = await fs.readFile(itemPath, "utf8");
62
112
  await runActiveOnReadHooks({
63
113
  path: itemPath,
64
114
  scope: "project",
65
115
  });
66
- const parsed = parseItemDocument(raw);
67
- items.push(parsed.front_matter);
116
+ const parsed = parseItemDocument(raw, {
117
+ format: itemFormat,
118
+ schema,
119
+ onWarning: (warning) => appendWarning(warnings, warning),
120
+ });
121
+ const existing = documentsById.get(parsed.front_matter.id);
122
+ if (!existing) {
123
+ documentsById.set(parsed.front_matter.id, {
124
+ document: parsed,
125
+ itemFormat,
126
+ });
127
+ continue;
128
+ }
129
+ const shouldReplace = preferredFormat
130
+ ? itemFormat === preferredFormat && existing.itemFormat !== preferredFormat
131
+ : itemFormat === "toon" && existing.itemFormat !== "toon";
132
+ if (shouldReplace) {
133
+ documentsById.set(parsed.front_matter.id, {
134
+ document: parsed,
135
+ itemFormat,
136
+ });
137
+ }
68
138
  }
69
139
  catch {
70
- // skip unreadable items
140
+ appendWarning(warnings, `item_list_item_read_failed:${folder}/${file}`);
71
141
  }
72
142
  }
73
143
  }
74
- return items;
144
+ return [...documentsById.values()]
145
+ .sort((left, right) => left.document.front_matter.id.localeCompare(right.document.front_matter.id))
146
+ .map((entry) => entry.document);
75
147
  }
76
148
  export async function mutateItem(params) {
77
- const located = await locateItem(params.pmRoot, params.id, params.settings.id_prefix);
149
+ const typeToFolder = params.typeToFolder ?? resolveItemTypeRegistry(params.settings, getActiveExtensionRegistrations()).type_to_folder;
150
+ const located = await locateItem(params.pmRoot, params.id, params.settings.id_prefix, params.settings.item_format, typeToFolder);
78
151
  if (!located) {
79
152
  throw new PmCliError(`Item ${params.id} not found`, EXIT_CODE.NOT_FOUND);
80
153
  }
81
- const releaseLock = await acquireLock(params.pmRoot, located.id, params.settings.locks.ttl_seconds, params.author, Boolean(params.force));
154
+ const releaseLock = await acquireLock(params.pmRoot, located.id, params.settings.locks.ttl_seconds, params.author, Boolean(params.force), params.settings.governance.force_required_for_stale_lock);
82
155
  try {
83
- const { raw: originalRaw, document } = await readLocatedItem(located);
156
+ const parseWarnings = [];
157
+ const { raw: originalRaw, document } = await readLocatedItem(located, {
158
+ schema: params.settings.schema,
159
+ warnings: parseWarnings,
160
+ });
84
161
  const assigned = document.front_matter.assignee?.trim();
85
- if (assigned && assigned !== params.author && !params.force) {
86
- throw new PmCliError(`Item ${located.id} is assigned to ${assigned}. Use --force to override.`, EXIT_CODE.CONFLICT);
162
+ const governance = resolveGovernanceKnobs(params.settings);
163
+ const bypassAssigneeConflict = params.op === "claim" ||
164
+ ((params.op === "comment_add" ||
165
+ params.op === "note_add" ||
166
+ params.op === "learning_add" ||
167
+ params.op === "release" ||
168
+ params.op === "update" ||
169
+ params.op === "update_audit") &&
170
+ params.bypassAssigneeConflict === true);
171
+ const hasOwnershipConflict = assigned && assigned !== params.author && !params.force && !bypassAssigneeConflict;
172
+ if (hasOwnershipConflict) {
173
+ if (governance.ownership_enforcement === "strict") {
174
+ throw new PmCliError(`Item ${located.id} is assigned to ${assigned}. Use --force to override.`, EXIT_CODE.CONFLICT);
175
+ }
176
+ if (governance.ownership_enforcement === "warn") {
177
+ parseWarnings.push(`ownership_warning:assignee_conflict:${located.id}:${assigned}`);
178
+ }
87
179
  }
88
- const beforeDocument = canonicalDocument(document);
89
- const mutableDocument = canonicalDocument(structuredClone(document));
180
+ const historyPolicy = await enforceHistoryStreamPolicyForItem({
181
+ pmRoot: params.pmRoot,
182
+ settings: params.settings,
183
+ itemId: located.id,
184
+ commandLabel: params.op,
185
+ });
186
+ const beforeDocument = canonicalDocument(document, { schema: params.settings.schema });
187
+ const mutableDocument = canonicalDocument(structuredClone(document), { schema: params.settings.schema });
90
188
  const mutation = params.mutate(mutableDocument);
91
189
  mutableDocument.front_matter.updated_at = nowIso();
92
- const afterDocument = canonicalDocument(mutableDocument);
93
- const serializedAfter = serializeItemDocument(afterDocument);
94
- await writeFileAtomic(located.itemPath, serializedAfter);
190
+ const afterDocument = canonicalDocument(mutableDocument, { schema: params.settings.schema });
191
+ const serializedAfter = serializeItemDocument(afterDocument, {
192
+ format: located.item_format,
193
+ schema: params.settings.schema,
194
+ });
195
+ const targetItemPath = getItemPath(params.pmRoot, afterDocument.front_matter.type, located.id, located.item_format, typeToFolder);
196
+ const historyPath = getHistoryPath(params.pmRoot, located.id);
197
+ const serviceWriteOverride = await runActiveServiceOverride("item_store_write", {
198
+ op: params.op,
199
+ pm_root: params.pmRoot,
200
+ item_id: located.id,
201
+ source_item_path: located.itemPath,
202
+ target_item_path: targetItemPath,
203
+ history_path: historyPath,
204
+ item_format: located.item_format,
205
+ before: beforeDocument,
206
+ after: afterDocument,
207
+ contents: serializedAfter,
208
+ });
209
+ let effectiveTargetItemPath = targetItemPath;
210
+ let effectiveSerializedAfter = serializedAfter;
211
+ let skipItemWrite = false;
212
+ if (serviceWriteOverride.handled && typeof serviceWriteOverride.result === "object" && serviceWriteOverride.result !== null) {
213
+ const overrideRecord = serviceWriteOverride.result;
214
+ if (typeof overrideRecord.target_item_path === "string" && overrideRecord.target_item_path.trim().length > 0) {
215
+ effectiveTargetItemPath = overrideRecord.target_item_path;
216
+ }
217
+ if (typeof overrideRecord.contents === "string") {
218
+ effectiveSerializedAfter = overrideRecord.contents;
219
+ }
220
+ if (overrideRecord.skip_write === true) {
221
+ skipItemWrite = true;
222
+ }
223
+ }
224
+ if (!skipItemWrite) {
225
+ await writeFileAtomic(effectiveTargetItemPath, effectiveSerializedAfter);
226
+ }
227
+ if (!skipItemWrite && effectiveTargetItemPath !== located.itemPath) {
228
+ await fs.rm(located.itemPath);
229
+ }
95
230
  const entry = createHistoryEntry({
96
231
  nowIso: afterDocument.front_matter.updated_at,
97
232
  author: params.author,
@@ -101,20 +236,26 @@ export async function mutateItem(params) {
101
236
  message: params.message,
102
237
  });
103
238
  try {
104
- await appendHistoryEntry(getHistoryPath(params.pmRoot, located.id), entry);
239
+ await appendHistoryEntry(historyPath, entry);
105
240
  }
106
241
  catch (error) {
107
- await writeFileAtomic(located.itemPath, originalRaw);
242
+ if (!skipItemWrite && effectiveTargetItemPath !== located.itemPath) {
243
+ await writeFileAtomic(located.itemPath, originalRaw);
244
+ await fs.rm(effectiveTargetItemPath, { force: true });
245
+ }
246
+ else if (!skipItemWrite) {
247
+ await writeFileAtomic(located.itemPath, originalRaw);
248
+ }
108
249
  throw error;
109
250
  }
110
251
  const hookWarnings = [
111
252
  ...(await runActiveOnWriteHooks({
112
- path: located.itemPath,
253
+ path: effectiveTargetItemPath,
113
254
  scope: "project",
114
255
  op: params.op,
115
256
  })),
116
257
  ...(await runActiveOnWriteHooks({
117
- path: getHistoryPath(params.pmRoot, located.id),
258
+ path: historyPath,
118
259
  scope: "project",
119
260
  op: `${params.op}:history`,
120
261
  })),
@@ -123,7 +264,13 @@ export async function mutateItem(params) {
123
264
  item: afterDocument.front_matter,
124
265
  body: afterDocument.body,
125
266
  changedFields: mutation.changedFields,
126
- warnings: [...(mutation.warnings ?? []), ...hookWarnings],
267
+ warnings: [
268
+ ...parseWarnings,
269
+ ...(mutation.warnings ?? []),
270
+ ...historyPolicy.warnings,
271
+ ...serviceWriteOverride.warnings,
272
+ ...hookWarnings,
273
+ ],
127
274
  };
128
275
  }
129
276
  finally {
@@ -131,18 +278,36 @@ export async function mutateItem(params) {
131
278
  }
132
279
  }
133
280
  export async function deleteItem(params) {
134
- const located = await locateItem(params.pmRoot, params.id, params.settings.id_prefix);
281
+ const typeToFolder = resolveItemTypeRegistry(params.settings, getActiveExtensionRegistrations()).type_to_folder;
282
+ const located = await locateItem(params.pmRoot, params.id, params.settings.id_prefix, params.settings.item_format, typeToFolder);
135
283
  if (!located) {
136
284
  throw new PmCliError(`Item ${params.id} not found`, EXIT_CODE.NOT_FOUND);
137
285
  }
138
- const releaseLock = await acquireLock(params.pmRoot, located.id, params.settings.locks.ttl_seconds, params.author, Boolean(params.force));
286
+ const releaseLock = await acquireLock(params.pmRoot, located.id, params.settings.locks.ttl_seconds, params.author, Boolean(params.force), params.settings.governance.force_required_for_stale_lock);
139
287
  try {
140
- const { raw: originalRaw, document } = await readLocatedItem(located);
288
+ const parseWarnings = [];
289
+ const { raw: originalRaw, document } = await readLocatedItem(located, {
290
+ schema: params.settings.schema,
291
+ warnings: parseWarnings,
292
+ });
141
293
  const assigned = document.front_matter.assignee?.trim();
142
- if (assigned && assigned !== params.author && !params.force) {
143
- throw new PmCliError(`Item ${located.id} is assigned to ${assigned}. Use --force to override.`, EXIT_CODE.CONFLICT);
294
+ const governance = resolveGovernanceKnobs(params.settings);
295
+ const hasOwnershipConflict = assigned && assigned !== params.author && !params.force;
296
+ if (hasOwnershipConflict) {
297
+ if (governance.ownership_enforcement === "strict") {
298
+ throw new PmCliError(`Item ${located.id} is assigned to ${assigned}. Use --force to override.`, EXIT_CODE.CONFLICT);
299
+ }
300
+ if (governance.ownership_enforcement === "warn") {
301
+ parseWarnings.push(`ownership_warning:assignee_conflict:${located.id}:${assigned}`);
302
+ }
144
303
  }
145
- const beforeDocument = canonicalDocument(document);
304
+ const historyPolicy = await enforceHistoryStreamPolicyForItem({
305
+ pmRoot: params.pmRoot,
306
+ settings: params.settings,
307
+ itemId: located.id,
308
+ commandLabel: "delete",
309
+ });
310
+ const beforeDocument = canonicalDocument(document, { schema: params.settings.schema });
146
311
  const deletionTimestamp = nowIso();
147
312
  const tombstoneDocument = EMPTY_CANONICAL_DOCUMENT;
148
313
  const historyEntry = createHistoryEntry({
@@ -153,22 +318,48 @@ export async function deleteItem(params) {
153
318
  after: tombstoneDocument,
154
319
  message: params.message,
155
320
  });
156
- await fs.rm(located.itemPath);
321
+ const historyPath = getHistoryPath(params.pmRoot, located.id);
322
+ const serviceDeleteOverride = await runActiveServiceOverride("item_store_delete", {
323
+ op: "delete",
324
+ pm_root: params.pmRoot,
325
+ item_id: located.id,
326
+ item_path: located.itemPath,
327
+ history_path: historyPath,
328
+ before: beforeDocument,
329
+ });
330
+ let effectiveItemPath = located.itemPath;
331
+ let skipDelete = false;
332
+ if (serviceDeleteOverride.handled &&
333
+ typeof serviceDeleteOverride.result === "object" &&
334
+ serviceDeleteOverride.result !== null) {
335
+ const overrideRecord = serviceDeleteOverride.result;
336
+ if (typeof overrideRecord.item_path === "string" && overrideRecord.item_path.trim().length > 0) {
337
+ effectiveItemPath = overrideRecord.item_path;
338
+ }
339
+ if (overrideRecord.skip_delete === true) {
340
+ skipDelete = true;
341
+ }
342
+ }
343
+ if (!skipDelete) {
344
+ await fs.rm(effectiveItemPath);
345
+ }
157
346
  try {
158
- await appendHistoryEntry(getHistoryPath(params.pmRoot, located.id), historyEntry);
347
+ await appendHistoryEntry(historyPath, historyEntry);
159
348
  }
160
349
  catch (error) {
161
- await writeFileAtomic(located.itemPath, originalRaw);
350
+ if (!skipDelete) {
351
+ await writeFileAtomic(effectiveItemPath, originalRaw);
352
+ }
162
353
  throw error;
163
354
  }
164
355
  const hookWarnings = [
165
356
  ...(await runActiveOnWriteHooks({
166
- path: located.itemPath,
357
+ path: effectiveItemPath,
167
358
  scope: "project",
168
359
  op: "delete",
169
360
  })),
170
361
  ...(await runActiveOnWriteHooks({
171
- path: getHistoryPath(params.pmRoot, located.id),
362
+ path: historyPath,
172
363
  scope: "project",
173
364
  op: "delete:history",
174
365
  })),
@@ -176,7 +367,7 @@ export async function deleteItem(params) {
176
367
  return {
177
368
  item: beforeDocument.front_matter,
178
369
  changedFields: ["deleted"],
179
- warnings: hookWarnings,
370
+ warnings: [...parseWarnings, ...historyPolicy.warnings, ...serviceDeleteOverride.warnings, ...hookWarnings],
180
371
  };
181
372
  }
182
373
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"item-store.js","sourceRoot":"","sources":["../../../src/core/store/item-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"item-store.js","sourceRoot":"","sources":["../../../src/core/store/item-store.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,26 @@
1
- import type { ItemType } from "../../types/index.js";
1
+ import type { ItemFormat, ItemType } from "../../types/index.js";
2
+ export declare const ITEM_FILE_EXTENSION_BY_FORMAT: Record<ItemFormat, ".md" | ".toon">;
3
+ declare const ITEM_FORMAT_BY_EXTENSION: {
4
+ readonly ".md": "json_markdown";
5
+ readonly ".toon": "toon";
6
+ };
7
+ export declare const ITEM_FILE_EXTENSIONS: Array<keyof typeof ITEM_FORMAT_BY_EXTENSION>;
2
8
  export declare function resolvePmRoot(cwd: string, cliPath?: string): string;
3
9
  export declare function resolveGlobalPmRoot(cwd: string): string;
4
10
  export declare function getSettingsPath(pmRoot: string): string;
5
- export declare function getTypeDirPath(pmRoot: string, type: ItemType): string;
6
- export declare function getItemPath(pmRoot: string, type: ItemType, id: string): string;
11
+ export declare function getTypeDirPath(pmRoot: string, type: ItemType, typeToFolder?: Record<string, string>): string;
12
+ export declare function getItemPath(pmRoot: string, type: ItemType, id: string, itemFormat?: ItemFormat, typeToFolder?: Record<string, string>): string;
13
+ export declare function getItemFormatFromPath(itemPath: string): ItemFormat | null;
7
14
  export declare function getHistoryPath(pmRoot: string, id: string): string;
8
15
  export declare function getLockPath(pmRoot: string, id: string): string;
16
+ export declare function getRuntimePath(pmRoot: string): string;
17
+ export declare function getTestRunsPath(pmRoot: string): string;
18
+ export declare function getTestRunsRecordsPath(pmRoot: string): string;
19
+ export declare function getTestRunRecordPath(pmRoot: string, runId: string): string;
20
+ export declare function getTestRunsStdoutPath(pmRoot: string): string;
21
+ export declare function getTestRunsStderrPath(pmRoot: string): string;
22
+ export declare function getTestRunStdoutPath(pmRoot: string, runId: string): string;
23
+ export declare function getTestRunStderrPath(pmRoot: string, runId: string): string;
24
+ export declare function getTestRunsResultsPath(pmRoot: string): string;
25
+ export declare function getTestRunResultPath(pmRoot: string, runId: string): string;
26
+ export {};
@@ -1,6 +1,15 @@
1
1
  import os from "node:os";
2
2
  import path from "node:path";
3
3
  import { PM_DIRNAME, SETTINGS_FILENAME, TYPE_TO_FOLDER } from "../shared/constants.js";
4
+ export const ITEM_FILE_EXTENSION_BY_FORMAT = {
5
+ json_markdown: ".md",
6
+ toon: ".toon",
7
+ };
8
+ const ITEM_FORMAT_BY_EXTENSION = {
9
+ ".md": "json_markdown",
10
+ ".toon": "toon",
11
+ };
12
+ export const ITEM_FILE_EXTENSIONS = [".md", ".toon"];
4
13
  export function resolvePmRoot(cwd, cliPath) {
5
14
  const envPath = process.env.PM_PATH;
6
15
  const selected = cliPath?.trim() || envPath?.trim() || PM_DIRNAME;
@@ -14,11 +23,27 @@ export function resolveGlobalPmRoot(cwd) {
14
23
  export function getSettingsPath(pmRoot) {
15
24
  return path.join(pmRoot, SETTINGS_FILENAME);
16
25
  }
17
- export function getTypeDirPath(pmRoot, type) {
18
- return path.join(pmRoot, TYPE_TO_FOLDER[type]);
26
+ function deriveDefaultTypeFolder(type) {
27
+ const normalized = type
28
+ .trim()
29
+ .toLowerCase()
30
+ .replace(/[^a-z0-9]+/g, "-")
31
+ .replace(/^-+|-+$/g, "");
32
+ if (normalized.length === 0) {
33
+ return "items";
34
+ }
35
+ return normalized.endsWith("s") ? normalized : `${normalized}s`;
19
36
  }
20
- export function getItemPath(pmRoot, type, id) {
21
- return path.join(getTypeDirPath(pmRoot, type), `${id}.md`);
37
+ export function getTypeDirPath(pmRoot, type, typeToFolder = TYPE_TO_FOLDER) {
38
+ const folder = typeToFolder[type] ?? deriveDefaultTypeFolder(type);
39
+ return path.join(pmRoot, folder);
40
+ }
41
+ export function getItemPath(pmRoot, type, id, itemFormat = "json_markdown", typeToFolder = TYPE_TO_FOLDER) {
42
+ return path.join(getTypeDirPath(pmRoot, type, typeToFolder), `${id}${ITEM_FILE_EXTENSION_BY_FORMAT[itemFormat]}`);
43
+ }
44
+ export function getItemFormatFromPath(itemPath) {
45
+ const extension = path.extname(itemPath).toLowerCase();
46
+ return ITEM_FORMAT_BY_EXTENSION[extension] ?? null;
22
47
  }
23
48
  export function getHistoryPath(pmRoot, id) {
24
49
  return path.join(pmRoot, "history", `${id}.jsonl`);
@@ -26,4 +51,34 @@ export function getHistoryPath(pmRoot, id) {
26
51
  export function getLockPath(pmRoot, id) {
27
52
  return path.join(pmRoot, "locks", `${id}.lock`);
28
53
  }
54
+ export function getRuntimePath(pmRoot) {
55
+ return path.join(pmRoot, "runtime");
56
+ }
57
+ export function getTestRunsPath(pmRoot) {
58
+ return path.join(getRuntimePath(pmRoot), "test-runs");
59
+ }
60
+ export function getTestRunsRecordsPath(pmRoot) {
61
+ return path.join(getTestRunsPath(pmRoot), "runs");
62
+ }
63
+ export function getTestRunRecordPath(pmRoot, runId) {
64
+ return path.join(getTestRunsRecordsPath(pmRoot), `${runId}.json`);
65
+ }
66
+ export function getTestRunsStdoutPath(pmRoot) {
67
+ return path.join(getTestRunsPath(pmRoot), "stdout");
68
+ }
69
+ export function getTestRunsStderrPath(pmRoot) {
70
+ return path.join(getTestRunsPath(pmRoot), "stderr");
71
+ }
72
+ export function getTestRunStdoutPath(pmRoot, runId) {
73
+ return path.join(getTestRunsStdoutPath(pmRoot), `${runId}.log`);
74
+ }
75
+ export function getTestRunStderrPath(pmRoot, runId) {
76
+ return path.join(getTestRunsStderrPath(pmRoot), `${runId}.log`);
77
+ }
78
+ export function getTestRunsResultsPath(pmRoot) {
79
+ return path.join(getTestRunsPath(pmRoot), "results");
80
+ }
81
+ export function getTestRunResultPath(pmRoot, runId) {
82
+ return path.join(getTestRunsResultsPath(pmRoot), `${runId}.json`);
83
+ }
29
84
  //# sourceMappingURL=paths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/core/store/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGvF,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,OAAgB;IACzD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;IACpC,MAAM,QAAQ,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC;IAClE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9F,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,IAAc;IAC3D,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,IAAc,EAAE,EAAU;IACpE,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,EAAU;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,EAAU;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/core/store/paths.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,17 @@
1
- import type { PmSettings } from "../../types/index.js";
1
+ import type { GovernanceSettings, ItemTypeDefinition, PmSettings } from "../../types/index.js";
2
+ export interface SettingsReadMetadata {
3
+ has_explicit_item_format: boolean;
4
+ }
5
+ export interface SettingsReadResult {
6
+ settings: PmSettings;
7
+ metadata: SettingsReadMetadata;
8
+ warnings: string[];
9
+ }
10
+ export declare function resolveGovernanceKnobs(settings: Pick<PmSettings, "governance"> | {
11
+ governance?: Partial<GovernanceSettings>;
12
+ }): GovernanceSettings;
13
+ export declare function normalizeItemTypeDefinitions(definitions: ItemTypeDefinition[] | undefined): ItemTypeDefinition[];
2
14
  export declare function serializeSettings(settings: PmSettings): string;
15
+ export declare function readSettingsWithMetadata(pmRoot: string): Promise<SettingsReadResult>;
3
16
  export declare function readSettings(pmRoot: string): Promise<PmSettings>;
4
17
  export declare function writeSettings(pmRoot: string, settings: PmSettings, op?: string): Promise<void>;