@unbrained/pm-cli 2026.11.3 → 2026.11.5

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 (294) hide show
  1. package/.agents/skills/HARNESS_COMPATIBILITY.md +1 -1
  2. package/.agents/skills/README.md +14 -14
  3. package/.agents/skills/pm-developer/SKILL.md +16 -16
  4. package/.agents/skills/pm-developer/references/GRAPH_AND_RELATIONSHIPS.md +14 -14
  5. package/.agents/skills/pm-developer/references/SCRIPTING_COMPOSITION.md +10 -10
  6. package/.agents/skills/pm-extensions/SKILL.md +13 -13
  7. package/.agents/skills/pm-extensions/references/AUTHORING.md +12 -12
  8. package/.agents/skills/pm-sdk/SKILL.md +27 -27
  9. package/.agents/skills/pm-sdk/references/SURFACE_MAP.md +32 -32
  10. package/.agents/skills/pm-test-audit/references/AUDIT.md +1 -1
  11. package/.agents/skills/pm-user/SKILL.md +35 -35
  12. package/.claude-plugin/marketplace.json +1 -1
  13. package/AGENTS.md +9 -9
  14. package/CHANGELOG.md +19 -0
  15. package/README.md +13 -13
  16. package/dist/cli/error-guidance.d.ts +14 -35
  17. package/dist/cli/error-guidance.js +2 -2
  18. package/dist/cli/expected-revisions.d.ts +55 -0
  19. package/dist/cli/expected-revisions.js +2 -0
  20. package/dist/cli/main.js +2 -2
  21. package/dist/cli/register-setup.js +1 -1
  22. package/dist/cli/runtime/invocation-options.js +1 -1
  23. package/dist/cli-bundle/bundle-manifest.json +1 -1
  24. package/dist/cli-bundle/chunks/chunk-2RPORE7M.js +31 -0
  25. package/dist/cli-bundle/chunks/{chunk-Y7H55PCY.js → chunk-335BZ75D.js} +2 -2
  26. package/dist/cli-bundle/chunks/chunk-5GWEY4P6.js +122 -0
  27. package/dist/cli-bundle/chunks/chunk-6VRX2CM7.js +2 -0
  28. package/dist/cli-bundle/chunks/{chunk-5JZMF4M5.js → chunk-7DEKAXVA.js} +2 -2
  29. package/dist/cli-bundle/chunks/{chunk-32BCU6HN.js → chunk-7ZRCYESH.js} +47 -46
  30. package/dist/cli-bundle/chunks/chunk-AUEKTX7V.js +6 -0
  31. package/dist/cli-bundle/chunks/chunk-D7KYPRK4.js +2 -0
  32. package/dist/cli-bundle/chunks/{chunk-2CBHQXYJ.js → chunk-DAX3AOFI.js} +2 -2
  33. package/dist/cli-bundle/chunks/{chunk-JPKIUWLG.js → chunk-F6NDMKZ4.js} +2 -2
  34. package/dist/cli-bundle/chunks/chunk-FRNMQM45.js +2 -0
  35. package/dist/cli-bundle/chunks/chunk-HNGLDMSZ.js +9 -0
  36. package/dist/cli-bundle/chunks/{chunk-DEJHTFEF.js → chunk-HRCMORE7.js} +2 -2
  37. package/dist/cli-bundle/chunks/chunk-HRFGFIYU.js +2 -0
  38. package/dist/cli-bundle/chunks/{chunk-5IPXDZKU.js → chunk-JI2GDE4I.js} +66 -66
  39. package/dist/cli-bundle/chunks/{chunk-MQJXZX3Q.js → chunk-LS3GI3H4.js} +53 -53
  40. package/dist/cli-bundle/chunks/chunk-OH6WQ7VT.js +3 -0
  41. package/dist/cli-bundle/chunks/{chunk-TZ3D3DPQ.js → chunk-OJDMJT7Y.js} +2 -2
  42. package/dist/cli-bundle/chunks/chunk-S4LPZ4TN.js +20 -0
  43. package/dist/cli-bundle/chunks/chunk-UEGXWXUZ.js +2 -0
  44. package/dist/cli-bundle/chunks/chunk-XLSHFYXZ.js +2 -0
  45. package/dist/cli-bundle/chunks/{chunk-UYNMKUGA.js → chunk-YKXATU2G.js} +2 -2
  46. package/dist/cli-bundle/chunks/item-revision-OJJVPQY7.js +2 -0
  47. package/dist/cli-bundle/chunks/item-transaction-QEPBUCMY.js +2 -0
  48. package/dist/cli-bundle/chunks/mutation-admission-INMM3HHG.js +2 -0
  49. package/dist/cli-bundle/chunks/{register-list-query-I6AZA3IX.js → register-list-query-5Y5JKWU5.js} +2 -2
  50. package/dist/cli-bundle/chunks/{register-mutation-3DAXCLXR.js → register-mutation-WC7OSQID.js} +2 -2
  51. package/dist/cli-bundle/chunks/register-operations-PO63DBZH.js +2 -0
  52. package/dist/cli-bundle/chunks/register-setup-RRFOS7IT.js +2 -0
  53. package/dist/cli-bundle/chunks/{stage-7H36OTDJ.js → stage-E3MMV4TV.js} +2 -2
  54. package/dist/cli-bundle/focused-chunks/chunk-5PMJOJCZ.js +44 -0
  55. package/dist/cli-bundle/focused-chunks/chunk-7KK66ISG.js +2 -0
  56. package/dist/cli-bundle/focused-chunks/{chunk-D4XQOMG4.js → chunk-AHWJPZSJ.js} +2 -2
  57. package/dist/cli-bundle/focused-chunks/chunk-C3O6JJPO.js +2 -0
  58. package/dist/cli-bundle/focused-chunks/{chunk-LKN2WGGB.js → chunk-C6P6HPCX.js} +2 -2
  59. package/dist/cli-bundle/focused-chunks/chunk-CPMSL4HS.js +2 -0
  60. package/dist/cli-bundle/focused-chunks/chunk-CZM75DE3.js +2 -0
  61. package/dist/cli-bundle/focused-chunks/{chunk-TYHDZUL4.js → chunk-D2TBEBNW.js} +2 -2
  62. package/dist/cli-bundle/focused-chunks/chunk-E56OXRYH.js +2 -0
  63. package/dist/cli-bundle/focused-chunks/{chunk-I5FODKYB.js → chunk-F62XGAAY.js} +2 -2
  64. package/dist/cli-bundle/focused-chunks/chunk-G4QP365K.js +2 -0
  65. package/dist/cli-bundle/focused-chunks/chunk-G5PJCR7R.js +2 -0
  66. package/dist/cli-bundle/focused-chunks/chunk-GS3JC5UU.js +23 -0
  67. package/dist/cli-bundle/focused-chunks/chunk-I5LGPUWH.js +2 -0
  68. package/dist/cli-bundle/focused-chunks/chunk-LW64TINU.js +3 -0
  69. package/dist/cli-bundle/focused-chunks/chunk-M6V7UMWL.js +26 -0
  70. package/dist/cli-bundle/focused-chunks/chunk-MC7IE7D7.js +8 -0
  71. package/dist/cli-bundle/focused-chunks/chunk-MG7C3JUY.js +2 -0
  72. package/dist/cli-bundle/focused-chunks/{chunk-F3X6UWMI.js → chunk-MK4HV4JO.js} +2 -2
  73. package/dist/cli-bundle/focused-chunks/{chunk-ZQRCVRGS.js → chunk-NQ7GYFOX.js} +54 -54
  74. package/dist/cli-bundle/focused-chunks/chunk-O7EI33NP.js +91 -0
  75. package/dist/cli-bundle/focused-chunks/{chunk-RY4QEMAE.js → chunk-RFTJZ5VB.js} +2 -2
  76. package/dist/cli-bundle/focused-chunks/chunk-SNOXXRSJ.js +2 -0
  77. package/dist/cli-bundle/focused-chunks/chunk-UPJUTP2V.js +12 -0
  78. package/dist/cli-bundle/focused-chunks/{chunk-HJ27QLZV.js → chunk-VWWTIX5L.js} +2 -2
  79. package/dist/cli-bundle/focused-chunks/{chunk-HOXIIZEO.js → chunk-XHOBYCVE.js} +2 -2
  80. package/dist/cli-bundle/focused-chunks/chunk-YMGB2O4E.js +81 -0
  81. package/dist/cli-bundle/focused-chunks/item-revision-CTDO4H3I.js +2 -0
  82. package/dist/cli-bundle/focused-chunks/item-transaction-AEAYVVHA.js +2 -0
  83. package/dist/cli-bundle/focused-chunks/mutation-admission-4WM7TNHZ.js +2 -0
  84. package/dist/cli-bundle/focused-chunks/{stage-4SQHVI3O.js → stage-WV7QXR4C.js} +2 -2
  85. package/dist/cli-bundle/main.js +25 -25
  86. package/dist/cli-bundle/sdk-authoring.js +1 -1
  87. package/dist/cli-bundle/sdk-contracts.js +5 -5
  88. package/dist/cli-bundle/sdk-core.js +1 -1
  89. package/dist/cli-bundle/sdk-governance.js +1 -1
  90. package/dist/cli-bundle/sdk-graph.js +1 -1
  91. package/dist/cli-bundle/sdk-merge.js +57 -57
  92. package/dist/cli-bundle/sdk-query.js +1 -1
  93. package/dist/cli-bundle/sdk-runtime.js +1 -1
  94. package/dist/cli-bundle/sdk-testing.js +1 -1
  95. package/dist/cli-bundle/sdk.js +11 -11
  96. package/dist/core/config/positional-value.d.ts +7 -1
  97. package/dist/core/config/positional-value.js +1 -1
  98. package/dist/core/extensions/reserved-host-flags.js +1 -1
  99. package/dist/core/history/history-rewrite.js +1 -1
  100. package/dist/core/item/literal-mutation-input.d.ts +17 -0
  101. package/dist/core/item/literal-mutation-input.js +1 -1
  102. package/dist/core/item/parent-reference-policy.d.ts +8 -4
  103. package/dist/core/item/parent-reference-policy.js +1 -1
  104. package/dist/core/item/sprint-release-format.d.ts +2 -1
  105. package/dist/core/item/sprint-release-format.js +1 -1
  106. package/dist/core/output/mutation-projection.js +1 -1
  107. package/dist/core/shared/command-types.d.ts +7 -0
  108. package/dist/core/store/item-mutation-precondition.d.ts +72 -6
  109. package/dist/core/store/item-mutation-precondition.js +1 -1
  110. package/dist/core/store/item-store.js +1 -1
  111. package/dist/core/store/settings-validator.js +1 -1
  112. package/dist/core/store/settings.d.ts +14 -0
  113. package/dist/core/store/settings.js +5 -4
  114. package/dist/core/telemetry/policy.d.ts +27 -1
  115. package/dist/core/telemetry/policy.js +1 -1
  116. package/dist/core/telemetry/runtime.d.ts +18 -7
  117. package/dist/core/telemetry/runtime.js +4 -4
  118. package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +1 -1
  119. package/dist/sdk/cli-contracts/completeness.js +1 -1
  120. package/dist/sdk/cli-contracts/enum-contracts.d.ts +11 -0
  121. package/dist/sdk/cli-contracts/enum-contracts.js +1 -1
  122. package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -1
  123. package/dist/sdk/cli-contracts/registration-helpers.js +1 -1
  124. package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -1
  125. package/dist/sdk/cli-contracts/tool-schema.js +1 -1
  126. package/dist/sdk/cli-contracts/typed-action-inputs.d.ts +8 -5
  127. package/dist/sdk/cli-contracts.d.ts +1 -1
  128. package/dist/sdk/cli-contracts.js +1 -1
  129. package/dist/sdk/cli-program.js +1 -1
  130. package/dist/sdk/config.d.ts +3 -3
  131. package/dist/sdk/config.js +1 -1
  132. package/dist/sdk/environment/project-runtime-compatibility.js +1 -1
  133. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
  134. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  135. package/dist/sdk/governance/health.d.ts +2 -2
  136. package/dist/sdk/governance/health.js +2 -2
  137. package/dist/sdk/governance/validate.js +1 -1
  138. package/dist/sdk/history/salvage.js +3 -3
  139. package/dist/sdk/history-compact.d.ts +7 -1
  140. package/dist/sdk/history-compact.js +1 -1
  141. package/dist/sdk/history-repair.d.ts +2 -1
  142. package/dist/sdk/history-repair.js +1 -1
  143. package/dist/sdk/index.d.ts +6 -1
  144. package/dist/sdk/index.js +1 -1
  145. package/dist/sdk/init.d.ts +4 -4
  146. package/dist/sdk/init.js +8 -8
  147. package/dist/sdk/lifecycle/checkpoint-rollback.d.ts +10 -2
  148. package/dist/sdk/lifecycle/checkpoint-rollback.js +1 -1
  149. package/dist/sdk/lifecycle/claim.d.ts +4 -0
  150. package/dist/sdk/lifecycle/claim.js +1 -1
  151. package/dist/sdk/lifecycle/close-many.d.ts +11 -2
  152. package/dist/sdk/lifecycle/close-many.js +1 -1
  153. package/dist/sdk/lifecycle/close.d.ts +25 -0
  154. package/dist/sdk/lifecycle/close.js +1 -1
  155. package/dist/sdk/lifecycle/create.d.ts +7 -5
  156. package/dist/sdk/lifecycle/create.js +1 -1
  157. package/dist/sdk/lifecycle/item-revision.d.ts +162 -0
  158. package/dist/sdk/lifecycle/item-revision.js +2 -0
  159. package/dist/sdk/lifecycle/restore.js +1 -1
  160. package/dist/sdk/lifecycle/shared-unset-fields.d.ts +628 -4
  161. package/dist/sdk/lifecycle/shared-unset-fields.js +1 -1
  162. package/dist/sdk/lifecycle/start-blockers.d.ts +52 -0
  163. package/dist/sdk/lifecycle/start-blockers.js +2 -0
  164. package/dist/sdk/lifecycle/task-composition.d.ts +11 -0
  165. package/dist/sdk/lifecycle/task-composition.js +1 -1
  166. package/dist/sdk/lifecycle/update-many.d.ts +11 -2
  167. package/dist/sdk/lifecycle/update-many.js +1 -1
  168. package/dist/sdk/lifecycle/update.d.ts +5 -4
  169. package/dist/sdk/lifecycle/update.js +2 -2
  170. package/dist/sdk/public-surface.json +1 -1
  171. package/dist/sdk/query/declared-blockers.d.ts +16 -0
  172. package/dist/sdk/query/declared-blockers.js +2 -0
  173. package/dist/sdk/query/get.d.ts +7 -0
  174. package/dist/sdk/query/get.js +1 -1
  175. package/dist/sdk/query/projection-contracts.js +1 -1
  176. package/dist/sdk/runtime/actions.js +1 -1
  177. package/dist/sdk/runtime/mutation-value-validation.js +1 -1
  178. package/dist/sdk/runtime-input.d.ts +12 -0
  179. package/dist/sdk/runtime-input.js +1 -1
  180. package/dist/sdk/runtime-primitives.d.ts +1 -0
  181. package/dist/sdk/runtime-primitives.js +1 -1
  182. package/dist/sdk/runtime.d.ts +10 -0
  183. package/dist/sdk/runtime.js +1 -1
  184. package/dist/sdk/structured-mutations.js +1 -1
  185. package/dist/sdk/telemetry.d.ts +1 -1
  186. package/dist/sdk/telemetry.js +2 -2
  187. package/dist/sdk/test/batch.js +2 -2
  188. package/dist/sdk/test/execution.js +2 -2
  189. package/dist/sdk/test/linked-command-detection.js +1 -1
  190. package/dist/sdk/workspace-transaction.d.ts +17 -6
  191. package/dist/sdk/workspace-transaction.js +1 -1
  192. package/dist/types.d.ts +6 -0
  193. package/dist/types.js +1 -1
  194. package/docs/AGENT_GUIDE.md +48 -48
  195. package/docs/AGENT_OUTPUT_ENCODINGS.md +20 -20
  196. package/docs/ASSURANCE.md +10 -10
  197. package/docs/BOUNDED_CONTEXT_READS.md +3 -3
  198. package/docs/CLAUDE_CODE_PLUGIN.md +1 -1
  199. package/docs/CLI_GRAMMAR.md +2 -2
  200. package/docs/COMMANDS.md +144 -32
  201. package/docs/COMMAND_NAMESPACES.md +1 -1
  202. package/docs/CONFIGURATION.md +82 -70
  203. package/docs/CONTEXT_ALGORITHM_PORTFOLIO.md +2 -2
  204. package/docs/CONTEXT_INTEGRITY_CONTRACTS.md +5 -5
  205. package/docs/CORPUS_SHAPES.md +1 -1
  206. package/docs/DEPENDENCY_KIND_CONTRACT.md +6 -6
  207. package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +5 -5
  208. package/docs/ECOSYSTEM_PLANNING_REVIEW.md +3 -3
  209. package/docs/EXTENSION_AUTHOR_CONTRACTS.md +4 -4
  210. package/docs/HISTORY_ATTESTATION.md +1 -1
  211. package/docs/HISTORY_MAINTENANCE.md +1 -1
  212. package/docs/LIFECYCLE_COMMANDS.md +1 -1
  213. package/docs/MCP_2026_07_28.md +16 -16
  214. package/docs/MCP_2026_07_28_CONFORMANCE.md +19 -19
  215. package/docs/MCP_REMOTE_TRANSPORT_SECURITY.md +22 -22
  216. package/docs/MCP_SKILLS_AND_APPS.md +1 -1
  217. package/docs/MERGE_SAFETY.md +6 -6
  218. package/docs/MUTATION_INTEGRITY.md +5 -5
  219. package/docs/OUTPUT_PROJECTION_CONTRACTS.md +14 -14
  220. package/docs/PACKED_FIRST_RUN.md +1 -1
  221. package/docs/QUICKSTART.md +10 -10
  222. package/docs/README.md +21 -21
  223. package/docs/READ_OUTPUT_CONTRACTS.md +9 -9
  224. package/docs/RECURRENCE_RECOVERY_CONTRACTS.md +1 -1
  225. package/docs/RELEASING.md +19 -10
  226. package/docs/SCRIPTING.md +10 -10
  227. package/docs/SDK.md +183 -38
  228. package/docs/SDK_ARTIFACT_OUTPUT.md +1 -1
  229. package/docs/SDK_PRIMITIVE_INVENTORY.md +2 -2
  230. package/docs/SELF_DESCRIBING_CONTEXT_CONTRACTS.md +7 -7
  231. package/docs/TESTING.md +1 -1
  232. package/docs/WORKFLOW_POLICIES.md +2 -2
  233. package/docs/WORKSPACE_POSITION_AND_LIFECYCLE.md +8 -8
  234. package/docs/agent-task-token-baseline.json +1 -1
  235. package/docs/generated/AGENT_CAPABILITY_ROUTING.md +1 -1
  236. package/docs/generated/AGENT_COMMAND_SURFACE.md +1 -1
  237. package/docs/generated/FLAG_LEXICON_BUDGETS.md +112 -112
  238. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +13 -4
  239. package/docs/performance/cli-transport-overhead.md +7 -7
  240. package/marketplace.json +1 -1
  241. package/package.json +1 -1
  242. package/packages/pm-beads/package.json +1 -1
  243. package/packages/pm-calendar/package.json +1 -1
  244. package/packages/pm-command-kit/README.md +5 -5
  245. package/packages/pm-command-kit/package.json +1 -1
  246. package/packages/pm-digital-twin/GAP_REPORT.md +16 -16
  247. package/packages/pm-digital-twin/package.json +1 -1
  248. package/packages/pm-governance-audit/package.json +1 -1
  249. package/packages/pm-guide-shell/package.json +1 -1
  250. package/packages/pm-kanban/README.md +1 -1
  251. package/packages/pm-kanban/package.json +1 -1
  252. package/packages/pm-lifecycle-hooks/package.json +1 -1
  253. package/packages/pm-linked-test-adapters/package.json +1 -1
  254. package/packages/pm-search-advanced/package.json +1 -1
  255. package/packages/pm-templates/package.json +1 -1
  256. package/packages/pm-todos/package.json +1 -1
  257. package/packages/pm-vcs/GAP_REPORT.md +1 -1
  258. package/packages/pm-vcs/package.json +1 -1
  259. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  260. package/plugins/pm-claude/README.md +6 -6
  261. package/plugins/pm-claude/package.json +1 -1
  262. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  263. package/plugins/pm-codex/package.json +1 -1
  264. package/plugins/pm-codex/plugin.json +1 -1
  265. package/runtime-dependencies.json +1 -1
  266. package/dist/cli-bundle/chunks/chunk-7ZEFHFAU.js +0 -2
  267. package/dist/cli-bundle/chunks/chunk-B6UTLYLM.js +0 -3
  268. package/dist/cli-bundle/chunks/chunk-HBKD5HZB.js +0 -2
  269. package/dist/cli-bundle/chunks/chunk-L6LCLC37.js +0 -2
  270. package/dist/cli-bundle/chunks/chunk-NR4KABHC.js +0 -31
  271. package/dist/cli-bundle/chunks/chunk-PWD5RY2D.js +0 -2
  272. package/dist/cli-bundle/chunks/chunk-XRMYA4R7.js +0 -20
  273. package/dist/cli-bundle/chunks/chunk-YWS4XV4I.js +0 -6
  274. package/dist/cli-bundle/chunks/chunk-ZOAJNPBL.js +0 -129
  275. package/dist/cli-bundle/chunks/item-transaction-ZHLJTBD7.js +0 -2
  276. package/dist/cli-bundle/chunks/mutation-admission-ZQMRMGIB.js +0 -2
  277. package/dist/cli-bundle/chunks/register-operations-G3QGGQ5Z.js +0 -2
  278. package/dist/cli-bundle/chunks/register-setup-LDXHMNOT.js +0 -2
  279. package/dist/cli-bundle/focused-chunks/chunk-3XGKBVJ3.js +0 -2
  280. package/dist/cli-bundle/focused-chunks/chunk-4HY6EGPB.js +0 -2
  281. package/dist/cli-bundle/focused-chunks/chunk-AK2CI2GI.js +0 -2
  282. package/dist/cli-bundle/focused-chunks/chunk-HUXZCPWT.js +0 -26
  283. package/dist/cli-bundle/focused-chunks/chunk-IKXJ57XA.js +0 -8
  284. package/dist/cli-bundle/focused-chunks/chunk-MOY6KZGJ.js +0 -44
  285. package/dist/cli-bundle/focused-chunks/chunk-PWUTFKSI.js +0 -2
  286. package/dist/cli-bundle/focused-chunks/chunk-PZRB7IXH.js +0 -91
  287. package/dist/cli-bundle/focused-chunks/chunk-WSYPVBKS.js +0 -80
  288. package/dist/cli-bundle/focused-chunks/chunk-WXLG7HZ5.js +0 -3
  289. package/dist/cli-bundle/focused-chunks/chunk-WZDFCVLX.js +0 -12
  290. package/dist/cli-bundle/focused-chunks/chunk-YGO3FWA2.js +0 -2
  291. package/dist/cli-bundle/focused-chunks/chunk-YVLAP3BL.js +0 -23
  292. package/dist/cli-bundle/focused-chunks/chunk-ZYXQACPB.js +0 -2
  293. package/dist/cli-bundle/focused-chunks/item-transaction-PZ2FQ6B2.js +0 -2
  294. package/dist/cli-bundle/focused-chunks/mutation-admission-XOOK6XFH.js +0 -2
@@ -0,0 +1,16 @@
1
+ import { type ResolvedBlocker } from "../actionability.js";
2
+ import { readSettings } from "../runtime-primitives.js";
3
+ import type { ItemMetadata } from "../../types/index.js";
4
+ /** Verify physical leaf spelling even when probe and embedded IDs match; retain exact-leaf precedence, stable ties and typed directory failures with their original cause. */
5
+ export declare function resolvePhysicalItemId(itemPath:string,probedId:string):Promise<string>;
6
+ /**
7
+ * Resolve the blockers an item declares against their current targets.
8
+ * Terminal targets resolve; missing, unsafe and external references stay
9
+ * unresolved, because nothing local can prove they no longer gate the work.
10
+ */
11
+ export declare function resolveDeclaredBlockers(params:{
12
+ pmRoot:string;
13
+ settings:Awaited<ReturnType<typeof readSettings>>;
14
+ typeToFolder:Record<string,string>;
15
+ metadata:ItemMetadata;
16
+ }):Promise<ResolvedBlocker[]>;
@@ -0,0 +1,2 @@
1
+ (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e9b7731d-e6f5-51a8-970b-462c0b728a9c")}catch{}})();import{readdir}from"node:fs/promises";import path from"node:path";import{isExternalDependencyReference,isExternalDependencySourceKind}from"../../core/item/dependency-reference.js";import{collectBlockedByIds,resolveItemBlockers}from"../actionability.js";import{resolveCanonicalRelationshipKind}from"../relationships.js";import{createPmCliExpectedError}from"../errors.js";import{EXIT_CODE,PmCliError,locateItem,readLocatedItem,resolveRuntimeStatusRegistry}from"../runtime-primitives.js";function canonicalizeDeclaredBlockers(blockers,targets){const canonical=new Map;for(const blocker of blockers){const id=blocker.external?blocker.id:targets.get(blocker.id.toLowerCase())?.id??blocker.id;canonical.set(blocker.external?`external:${id}`:`local:${id.toLowerCase()}`,{...blocker,id})}return[...canonical.values()]}async function resolvePhysicalItemId(itemPath,probedId){const filename=path.basename(itemPath),physicalId=(await readdir(path.dirname(itemPath)).catch(error=>{throw createPmCliExpectedError("Cannot verify the blocker's physical file identity",{exitCode:EXIT_CODE.GENERIC_FAILURE,context:{code:"blocker_identity_read_failed",required:"Restore access to the blocker item directory, then retry the item read."},cause:error})})).filter(name=>name.toLowerCase()===filename.toLowerCase()).sort((left,right)=>+(right===filename)-+(left===filename)||left.localeCompare(right)).map(name=>path.parse(name).name)[0];if(physicalId===void 0)throw new PmCliError(`Blocker canonical file disappeared during identity verification: ${probedId}`,EXIT_CODE.CONFLICT,{code:"item_identity_conflict",required:"Restore the canonical blocker file and validate storage integrity before retrying the item read."});return physicalId}async function resolveDeclaredBlockers(params){const ids=collectBlockedByIds(params.metadata);if(ids.length===0)return[];const declaredIds=new Map([params.metadata.blocked_by,...(params.metadata.dependencies??[]).filter(dependency=>resolveCanonicalRelationshipKind(dependency.kind)==="blocked_by").map(dependency=>dependency.id)].filter(id=>typeof id=="string").map(id=>[id.trim().toLowerCase(),id.trim()])),targets=new Map;for(const id of ids){if(isExternalDependencyReference(id)||!/^(?!\.{1,2}$)[^/\\:\0]+$/u.test(id)||params.metadata.dependencies?.some(dependency=>dependency.id.trim()===id&&resolveCanonicalRelationshipKind(dependency.kind)==="blocked_by"&&isExternalDependencySourceKind(dependency.source_kind)))continue;const located=await locateItem(params.pmRoot,declaredIds.get(id),params.settings.id_prefix,params.settings.item_format,params.typeToFolder);if(located===null)continue;const loaded=await readLocatedItem(located,{schema:params.settings.schema});if(located.id=await resolvePhysicalItemId(located.itemPath,located.id),loaded.document.metadata.id!==located.id)throw new PmCliError(`Blocker identity differs from its canonical file: ${located.id}`,EXIT_CODE.CONFLICT,{code:"item_identity_conflict",required:"Restore the canonical blocker identity and validate storage integrity before retrying the item read."});targets.set(id.toLowerCase(),loaded.document.metadata)}return canonicalizeDeclaredBlockers(resolveItemBlockers({blocked_by:params.metadata.blocked_by,dependencies:params.metadata.dependencies,updated_at:params.metadata.updated_at},targets,resolveRuntimeStatusRegistry(params.settings.schema)),targets)}export{resolveDeclaredBlockers,resolvePhysicalItemId};
2
+ //# sourceMappingURL=declared-blockers.js.map
@@ -46,6 +46,13 @@ events:number;
46
46
  export interface GetResult extends Partial<PmReadOutputMetadata> {
47
47
  /** Selected metadata and body; requested empty collections are represented explicitly. */
48
48
  item:GetItemProjection;
49
+ /**
50
+ * Current revision: SHA-256 of the canonical item document, equal to its
51
+ * latest history `after_hash`. Pass it to `--expect-hash` (SDK/MCP
52
+ * `expectHash`) so a later write refuses if the item changed in between.
53
+ * Omitted for historical `--at` reads.
54
+ */
55
+ item_hash?:string;
49
56
  /** Requested artifact groups; narrower selectors leave unrequested groups empty. */
50
57
  linked?:{
51
58
  files:LinkedFile[];
@@ -1,2 +1,2 @@
1
- (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="bf7cac44-d2fc-5e7c-a9f1-a82c7460b07c")}catch{}})();import{collectRegisteredItemFieldNames}from"../../core/extensions/item-fields.js";import{readdir}from"node:fs/promises";import path from"node:path";import{assertInitializedTracker}from"../environment/tracker-preflight.js";import{getActiveExtensionRegistrations,toItemRecord,resolveItemTypeRegistry,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,EXIT_CODE,TYPE_TO_FOLDER,PmCliError,buildItemNotFoundError,listAllItemMetadataLight,locateItem,readLocatedItem,getHistoryPath,resolvePmRoot,readSettings,resolveAuthor}from"../runtime-primitives.js";import{readHistoryEntries}from"../history-read.js";import{renderPmCommand}from"../command-line.js";import{recordContextUsageTouches}from"../context-usage.js";import{createPmCliExpectedError}from"../errors.js";import{collectBlockedByIds,resolveItemBlockers}from"../actionability.js";import{isExternalDependencyReference,isExternalDependencySourceKind}from"../../core/item/dependency-reference.js";import{buildItemChildrenRollup}from"../item-children.js";import{buildItemSchedule}from"../item-schedule.js";import{getItemAt}from"../history-read.js";import{parseIntegerLimit}from"./parsers.js";import{runList}from"./list.js";import{registerOutputMaterialFieldGroups}from"../output-projection.js";import{GET_DEPTH_INPUT_VALUES,GET_DEPTH_VALUES,listGetProjectionFields}from"./projection-contracts.js";import{GET_DEPTH_INPUT_VALUES as GET_DEPTH_INPUT_VALUES2,GET_DEPTH_VALUES as GET_DEPTH_VALUES2,listGetProjectionFields as listGetProjectionFields2}from"./projection-contracts.js";const AUTOMATIC_CHILD_ROLLUP_TYPES=new Set(["epic","feature","milestone","plan"]),BUILTIN_ITEM_TYPES=new Set(Object.keys(TYPE_TO_FOLDER).map(type=>type.toLowerCase()));function itemCollectionCounts(item){return Object.fromEntries(["comments","notes","learnings","files","tests","docs","reminders","events"].map(key=>[key,item[key]?.length??0]))}function itemMaterialFieldGroups(item,body,children,currentSnapshot,projection){const collectionCounts=itemCollectionCounts(item);return[...body.length>0?["body"]:[],...Object.entries(collectionCounts).flatMap(([name,count])=>count>0?[name]:[]),...collectionCounts.files+collectionCounts.tests+collectionCounts.docs>0?["linked"]:[],...children===void 0?["children"]:children.count>0?["children"]:[],...typeof item.assignee=="string"&&item.assignee.trim().length>0?["claim_state"]:[],...buildItemSchedule(item)?["schedule"]:[],...currentSnapshot&&collectBlockedByIds(item).length>0?["blockers"]:[],...!projection.full&&item.dependencies?.some(({id:_id,kind:_kind,...provenance})=>Object.values(provenance).some(value=>value!==void 0))?["dependency_provenance"]:[]]}function shouldAutoIncludeGetChildren(itemType){const normalizedType=itemType.trim().toLowerCase();return normalizedType.length>0&&(AUTOMATIC_CHILD_ROLLUP_TYPES.has(normalizedType)||!BUILTIN_ITEM_TYPES.has(normalizedType))}function toClaimHistoryContext(entry){return{ts:entry.ts,author:entry.author,message:entry.message??null}}function resolveClaimStateContext(assigneeValue,history){const assignee=assigneeValue?.trim(),normalizedAssignee=assignee&&assignee.length>0?assignee:null,lastClaim=[...history].reverse().find(entry=>entry.op==="claim"),lastRelease=[...history].reverse().find(entry=>entry.op==="release");return{claimed:normalizedAssignee!==null,assignee:normalizedAssignee,last_claim:lastClaim?toClaimHistoryContext(lastClaim):null,last_release:lastRelease?toClaimHistoryContext(lastRelease):null}}function parseGetDepth(raw){if(raw===void 0||raw.trim().length===0)return"standard";const normalized=raw.trim().toLowerCase();if(normalized==="full")return"deep";if(GET_DEPTH_VALUES.includes(normalized))return normalized;throw new PmCliError("Get --depth must be one of brief|standard|deep|full",EXIT_CODE.USAGE,{field:"depth",value:raw,recovery:{allowed_values:[...GET_DEPTH_INPUT_VALUES]}})}function projectItemForDepth(item,depth,full){const collectionCounts=itemCollectionCounts(item),projectedItem={...item};if(!full&&item.dependencies!==void 0&&(projectedItem.dependencies=item.dependencies.map(({id,kind})=>({id,kind}))),depth==="deep")return{...projectedItem,comments:item.comments??[],notes:item.notes??[],learnings:item.learnings??[],files:item.files??[],tests:item.tests??[],docs:item.docs??[],reminders:item.reminders??[],events:item.events??[],notes_count:collectionCounts.notes,tests_count:collectionCounts.tests,collection_counts:collectionCounts};const{comments:_comments,notes:_notes,learnings:_learnings,files:_files,tests:_tests,docs:_docs,reminders:_reminders,events:_events,...projected}=projectedItem;return{...projected,notes_count:item.notes?.length??0,tests_count:item.tests?.length??0,collection_counts:collectionCounts}}function parseGetFields(raw){if(raw===void 0)return null;const fields=raw.split(",").map(entry=>entry.trim()).filter(entry=>entry.length>0);if(fields.length===0)throw new PmCliError("Get --fields requires a comma-separated list of field names",EXIT_CODE.USAGE);return fields}function normalizeGetField(field){return field.startsWith("item.")?field.slice(5):field}function validateGetFields(fields,runtimeMetadataKeys,id){if(fields===null)return;const allowedValues=listGetProjectionFields(runtimeMetadataKeys),allowed=new Set(allowedValues),unknown=fields.filter(field=>{const normalized=normalizeGetField(field);return!allowed.has(field)&&!allowed.has(normalized)});if(unknown.length>0){const suggestedRetryArguments=["get",id,"--fields",fields.filter(field=>!unknown.includes(field)).join(",")||"id,title,status"];throw new PmCliError(`Unknown get --fields value(s): ${unknown.join(", ")}`,EXIT_CODE.USAGE,{code:"unknown_field_projection",examples:["pm get <id> --fields id,title,status,type,updated_at","pm get <id> --fields id,title,claim_state","pm get <id> --fields id,title,body,linked.files"],recovery:{allowed_values:allowedValues,suggested_retry:renderPmCommand(suggestedRetryArguments),suggested_retry_args:suggestedRetryArguments}})}}const EMPTY_PROJECTED_COLLECTION_FIELDS=new Set(["comments","notes","learnings","files","tests","test_runs","docs","reminders","events","dependencies","plan_steps","plan_decisions","plan_discoveries","plan_validation"]);function projectedMetadataValue(source,counts,field){return Object.hasOwn(counts,field)?counts[field]:source[field]!==void 0?source[field]:EMPTY_PROJECTED_COLLECTION_FIELDS.has(field)?[]:void 0}function projectItemForFields(item,fields){const source=toItemRecord(item),omittedCounts={notes_count:item.notes?.length??0,tests_count:item.tests?.length??0,collection_counts:itemCollectionCounts(item)},projected={id:item.id};for(const field of fields){const normalized=normalizeGetField(field);normalized==="body"||normalized==="linked"||normalized.startsWith("linked.")||normalized==="claim_state"||normalized.startsWith("claim_state.")||normalized==="children"||normalized.startsWith("children.")||normalized==="schedule"||normalized.startsWith("schedule.")||normalized==="blockers"||(projected[normalized]=projectedMetadataValue(source,omittedCounts,normalized))}return projected}function fieldsInclude(fields,name){return fields?.some(field=>field===name||field===`item.${name}`)??!1}function fieldsIncludeRoot(fields,name){return fields.some(field=>{const normalized=normalizeGetField(field);return normalized===name||normalized.startsWith(`${name}.`)})}function resolveGetProjection(options,id){if(options.full&&(options.fields!==void 0||options.depth!==void 0))throw new PmCliError("Get projection options are mutually exclusive; remove the extra projection flag and retry.",EXIT_CODE.USAGE,{code:"projection_options_mutually_exclusive",flag:"--full",recovery:{suggested_retry:renderPmCommand(["get",id,"--full"]),suggested_retry_args:["get",id,"--full"]}});if(options.tree!==!0&&options.treeDepth!==void 0)throw new PmCliError("Get --tree-depth requires --tree",EXIT_CODE.USAGE);if(options.at!==void 0&&options.tree===!0)throw new PmCliError("Get --at cannot be combined with --tree because workspace-level historical projections are not yet indexed.",EXIT_CODE.USAGE);return{depth:options.full?"deep":parseGetDepth(options.depth),full:options.full===!0||options.depth?.trim().toLowerCase()==="full",treeDepth:options.tree===!0?parseIntegerLimit(options.treeDepth,"--tree-depth"):void 0,fields:parseGetFields(options.fields),fieldProjection:options.fields!==void 0}}async function loadGetItemContext(id,global2,at){const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertInitializedTracker(pmRoot);const settings=await readSettings(pmRoot),typeRegistry=resolveItemTypeRegistry(settings,getActiveExtensionRegistrations());if(at!==void 0){const historical=await getItemAt(id,at,{pmRoot:global2.path});return{pmRoot,settings,typeToFolder:typeRegistry.type_to_folder,locatedId:historical.document.metadata.id,metadata:historical.document.metadata,body:historical.document.body,historical}}const located=await locateItem(pmRoot,id,settings.id_prefix,settings.item_format,typeRegistry.type_to_folder);if(!located)throw await buildItemNotFoundError(pmRoot,id,settings.id_prefix,typeRegistry.type_to_folder);const loaded=await readLocatedItem(located,{schema:settings.schema});return{pmRoot,settings,typeToFolder:typeRegistry.type_to_folder,locatedId:located.id,metadata:loaded.document.metadata,body:loaded.document.body}}function validateGetProjectionFields(fields,settings,historical,id){const runtimeMetadataKeys=[...resolveRuntimeFieldRegistry(settings.schema).definitions.map(field=>field.metadata_key),...collectRegisteredItemFieldNames(getActiveExtensionRegistrations())];if(validateGetFields(fields,runtimeMetadataKeys,id),historical&&fieldsIncludeRoot(fields??[],"children"))throw new PmCliError("Get --at cannot project children because workspace-level historical relationships are not yet indexed.",EXIT_CODE.USAGE);if(historical&&fieldsIncludeRoot(fields??[],"blockers"))throw new PmCliError("Get --at cannot project current blocker statuses; read the current item with --fields blockers instead.",EXIT_CODE.USAGE)}function shouldIncludeGetField(params){const{fieldProjection,depth,fields,field}=params;return fieldProjection?field==="body"||field==="linked"?fieldsInclude(fields,field):fieldsIncludeRoot(fields,field):depth!=="brief"}async function resolveGetClaimState(context,includeClaimState){if(!includeClaimState)return;const historyPath=getHistoryPath(context.pmRoot,context.locatedId),history=await readHistoryEntries(historyPath,context.locatedId);return resolveClaimStateContext(context.metadata.assignee,context.historical?history.slice(0,context.historical.target.historyIndex+1):history)}function attachGetLinked(result,context,fields,includeLinked){const includeLinkedFiles=includeLinked||fieldsInclude(fields,"linked.files"),includeLinkedTests=includeLinked||fieldsInclude(fields,"linked.tests"),includeLinkedDocs=includeLinked||fieldsInclude(fields,"linked.docs");!includeLinked&&!includeLinkedFiles&&!includeLinkedTests&&!includeLinkedDocs||(result.linked={files:includeLinkedFiles?context.metadata.files??[]:[],tests:includeLinkedTests?context.metadata.tests??[]:[],docs:includeLinkedDocs?context.metadata.docs??[]:[]})}async function buildGetChildrenRollup(context,includeChildren){if(!includeChildren)return;const statusRegistry=resolveRuntimeStatusRegistry(context.settings.schema),corpus=await listAllItemMetadataLight(context.pmRoot,context.settings.item_format,context.typeToFolder,void 0,context.settings.schema);return buildItemChildrenRollup(context.locatedId,corpus,statusRegistry)}function canonicalizeDeclaredBlockers(blockers,targets){const canonical=new Map;for(const blocker of blockers){const id=blocker.external?blocker.id:targets.get(blocker.id.toLowerCase())?.id??blocker.id;canonical.set(blocker.external?`external:${id}`:`local:${id.toLowerCase()}`,{...blocker,id})}return[...canonical.values()]}async function resolvePhysicalBlockerId(itemPath,probedId){const filename=path.basename(itemPath),physicalId=(await readdir(path.dirname(itemPath)).catch(error=>{throw createPmCliExpectedError("Cannot verify the blocker's physical file identity",{exitCode:EXIT_CODE.GENERIC_FAILURE,context:{code:"blocker_identity_read_failed",required:"Restore access to the blocker item directory, then retry the item read."},cause:error})})).filter(name=>name.toLowerCase()===filename.toLowerCase()).sort((left,right)=>+(right===filename)-+(left===filename)||left.localeCompare(right)).map(name=>path.parse(name).name)[0];if(physicalId===void 0)throw new PmCliError(`Blocker canonical file disappeared during identity verification: ${probedId}`,EXIT_CODE.CONFLICT,{code:"item_identity_conflict",required:"Restore the canonical blocker file and validate storage integrity before retrying the item read."});return physicalId}async function attachGetBlockers(result,context,projection){if(context.historical!==void 0||!(projection.fieldProjection?fieldsIncludeRoot(projection.fields,"blockers"):projection.depth!=="brief"))return;const ids=collectBlockedByIds(context.metadata);if(ids.length===0)return;const declaredIds=new Map([context.metadata.blocked_by,...(context.metadata.dependencies??[]).filter(dependency=>dependency.kind==="blocked_by").map(dependency=>dependency.id)].filter(id=>typeof id=="string").map(id=>[id.trim().toLowerCase(),id.trim()])),targets=new Map;for(const id of ids){if(isExternalDependencyReference(id)||!/^(?!\.{1,2}$)[^/\\:\0]+$/u.test(id)||context.metadata.dependencies?.some(dependency=>dependency.id.trim()===id&&dependency.kind==="blocked_by"&&isExternalDependencySourceKind(dependency.source_kind)))continue;const located=await locateItem(context.pmRoot,declaredIds.get(id),context.settings.id_prefix,context.settings.item_format,context.typeToFolder);if(located===null)continue;const loaded=await readLocatedItem(located,{schema:context.settings.schema});if(located.id=await resolvePhysicalBlockerId(located.itemPath,located.id),loaded.document.metadata.id!==located.id)throw new PmCliError(`Blocker identity differs from its canonical file: ${located.id}`,EXIT_CODE.CONFLICT,{code:"item_identity_conflict",required:"Restore the canonical blocker identity and validate storage integrity before retrying the item read."});targets.set(id.toLowerCase(),loaded.document.metadata)}const resolved=canonicalizeDeclaredBlockers(resolveItemBlockers({blocked_by:context.metadata.blocked_by,dependencies:context.metadata.dependencies,updated_at:context.metadata.updated_at},targets,resolveRuntimeStatusRegistry(context.settings.schema)),targets);result.blockers={scope:"declared",open:resolved.filter(blocker=>!blocker.resolved).map(({resolved:_resolved,...blocker})=>blocker),closed_count:resolved.filter(blocker=>blocker.resolved).length},!projection.fieldProjection&&!projection.full&&delete result.item.blocked_by}function attachGetSchedule(result,context,fields,includeSchedule){if(!includeSchedule)return;const schedule=buildItemSchedule(context.metadata);if(schedule){if(fields===null||fieldsInclude(fields,"schedule")){result.schedule=schedule;return}result.schedule=Object.fromEntries(Object.entries(schedule).filter(([key])=>fields.some(field=>normalizeGetField(field)===`schedule.${key}`)))}}async function buildGetTree(context,options,treeDepth,global2){if(options.tree!==!0)return;const subtree=await runList(void 0,{parent:context.locatedId,tree:!0,treeDepth:treeDepth===void 0?void 0:String(treeDepth),full:!0},global2);return{root_id:context.locatedId,root_title:context.metadata.title,depth_limit:treeDepth??null,count:subtree.count,items:subtree.items.map(entry=>toItemRecord(entry))}}async function runGet(id,global2,options={}){const projection=resolveGetProjection(options,id),context=await loadGetItemContext(id,global2,options.at);validateGetProjectionFields(projection.fields,context.settings,context.historical!==void 0,context.locatedId);const includeBody=shouldIncludeGetField({...projection,field:"body"}),includeLinked=shouldIncludeGetField({...projection,field:"linked"}),includeClaimState=shouldIncludeGetField({...projection,field:"claim_state"}),includeChildren=context.historical===void 0&&(projection.fieldProjection?fieldsIncludeRoot(projection.fields,"children"):projection.depth==="deep"&&(projection.full||shouldAutoIncludeGetChildren(context.metadata.type))),includeSchedule=projection.fieldProjection?fieldsIncludeRoot(projection.fields,"schedule"):projection.depth!=="brief",claimState=await resolveGetClaimState(context,includeClaimState),result={item:projection.fieldProjection?projectItemForFields(context.metadata,projection.fields):projectItemForDepth(context.metadata,projection.depth,projection.full)};includeBody&&(result.item.body=context.body),attachGetLinked(result,context,projection.fields,includeLinked),claimState&&(result.claim_state=claimState),attachGetSchedule(result,context,projection.fields,includeSchedule),await attachGetBlockers(result,context,projection);const children=await buildGetChildrenRollup(context,includeChildren);children!==void 0&&(result.children=children);const tree=await buildGetTree(context,options,projection.treeDepth,global2);if(tree!==void 0&&(result.tree=tree),context.historical&&(result.reconstructed=!0,result.as_of_version=context.historical.as_of_version,result.as_of_timestamp=context.historical.as_of_timestamp),context.historical===void 0)try{await recordContextUsageTouches({pmRoot:context.pmRoot,author:resolveAuthor(void 0,context.settings.author_default),itemIds:[context.locatedId],intent:"get"})}catch{}return registerOutputMaterialFieldGroups(result,projection.fieldProjection?[]:itemMaterialFieldGroups(context.metadata,context.body,children,context.historical===void 0,projection)),result}const _testOnlyGetCommand={shouldAutoIncludeGetChildren};export{GET_DEPTH_INPUT_VALUES2 as GET_DEPTH_INPUT_VALUES,GET_DEPTH_VALUES2 as GET_DEPTH_VALUES,_testOnlyGetCommand,listGetProjectionFields2 as listGetProjectionFields,runGet};
1
+ (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="97bd0220-e19e-5466-b989-5e0f95c8b937")}catch{}})();import{collectRegisteredItemFieldNames}from"../../core/extensions/item-fields.js";import{assertInitializedTracker}from"../environment/tracker-preflight.js";import{getActiveExtensionRegistrations,toItemRecord,resolveItemTypeRegistry,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,EXIT_CODE,TYPE_TO_FOLDER,PmCliError,buildItemNotFoundError,listAllItemMetadataLight,locateItem,readLocatedItem,getHistoryPath,resolvePmRoot,readSettings,resolveAuthor}from"../runtime-primitives.js";import{readHistoryEntries}from"../history-read.js";import{hashDocument}from"../../core/history/history.js";import{renderPmCommand}from"../command-line.js";import{recordContextUsageTouches}from"../context-usage.js";import{collectBlockedByIds}from"../actionability.js";import{resolveDeclaredBlockers}from"./declared-blockers.js";import{buildItemChildrenRollup}from"../item-children.js";import{buildItemSchedule}from"../item-schedule.js";import{getItemAt}from"../history-read.js";import{parseIntegerLimit}from"./parsers.js";import{runList}from"./list.js";import{registerOutputMaterialFieldGroups}from"../output-projection.js";import{GET_DEPTH_INPUT_VALUES,GET_DEPTH_VALUES,listGetProjectionFields}from"./projection-contracts.js";import{GET_DEPTH_INPUT_VALUES as GET_DEPTH_INPUT_VALUES2,GET_DEPTH_VALUES as GET_DEPTH_VALUES2,listGetProjectionFields as listGetProjectionFields2}from"./projection-contracts.js";const AUTOMATIC_CHILD_ROLLUP_TYPES=new Set(["epic","feature","milestone","plan"]),BUILTIN_ITEM_TYPES=new Set(Object.keys(TYPE_TO_FOLDER).map(type=>type.toLowerCase()));function itemCollectionCounts(item){return Object.fromEntries(["comments","notes","learnings","files","tests","docs","reminders","events"].map(key=>[key,item[key]?.length??0]))}function itemMaterialFieldGroups(item,body,children,currentSnapshot,projection){const collectionCounts=itemCollectionCounts(item);return[...body.length>0?["body"]:[],...Object.entries(collectionCounts).flatMap(([name,count])=>count>0?[name]:[]),...collectionCounts.files+collectionCounts.tests+collectionCounts.docs>0?["linked"]:[],...children===void 0?["children"]:children.count>0?["children"]:[],...typeof item.assignee=="string"&&item.assignee.trim().length>0?["claim_state"]:[],...buildItemSchedule(item)?["schedule"]:[],...currentSnapshot&&collectBlockedByIds(item).length>0?["blockers"]:[],...!projection.full&&item.dependencies?.some(({id:_id,kind:_kind,...provenance})=>Object.values(provenance).some(value=>value!==void 0))?["dependency_provenance"]:[]]}function shouldAutoIncludeGetChildren(itemType){const normalizedType=itemType.trim().toLowerCase();return normalizedType.length>0&&(AUTOMATIC_CHILD_ROLLUP_TYPES.has(normalizedType)||!BUILTIN_ITEM_TYPES.has(normalizedType))}function toClaimHistoryContext(entry){return{ts:entry.ts,author:entry.author,message:entry.message??null}}function resolveClaimStateContext(assigneeValue,history){const assignee=assigneeValue?.trim(),normalizedAssignee=assignee&&assignee.length>0?assignee:null,lastClaim=[...history].reverse().find(entry=>entry.op==="claim"),lastRelease=[...history].reverse().find(entry=>entry.op==="release");return{claimed:normalizedAssignee!==null,assignee:normalizedAssignee,last_claim:lastClaim?toClaimHistoryContext(lastClaim):null,last_release:lastRelease?toClaimHistoryContext(lastRelease):null}}function parseGetDepth(raw){if(raw===void 0||raw.trim().length===0)return"standard";const normalized=raw.trim().toLowerCase();if(normalized==="full")return"deep";if(GET_DEPTH_VALUES.includes(normalized))return normalized;throw new PmCliError("Get --depth must be one of brief|standard|deep|full",EXIT_CODE.USAGE,{field:"depth",value:raw,recovery:{allowed_values:[...GET_DEPTH_INPUT_VALUES]}})}function projectItemForDepth(item,depth,full){const collectionCounts=itemCollectionCounts(item),projectedItem={...item};if(!full&&item.dependencies!==void 0&&(projectedItem.dependencies=item.dependencies.map(({id,kind})=>({id,kind}))),depth==="deep")return{...projectedItem,comments:item.comments??[],notes:item.notes??[],learnings:item.learnings??[],files:item.files??[],tests:item.tests??[],docs:item.docs??[],reminders:item.reminders??[],events:item.events??[],notes_count:collectionCounts.notes,tests_count:collectionCounts.tests,collection_counts:collectionCounts};const{comments:_comments,notes:_notes,learnings:_learnings,files:_files,tests:_tests,docs:_docs,reminders:_reminders,events:_events,...projected}=projectedItem;return{...projected,notes_count:item.notes?.length??0,tests_count:item.tests?.length??0,collection_counts:collectionCounts}}function parseGetFields(raw){if(raw===void 0)return null;const fields=raw.split(",").map(entry=>entry.trim()).filter(entry=>entry.length>0);if(fields.length===0)throw new PmCliError("Get --fields requires a comma-separated list of field names",EXIT_CODE.USAGE);return fields}function normalizeGetField(field){return field.startsWith("item.")?field.slice(5):field}function validateGetFields(fields,runtimeMetadataKeys,id){if(fields===null)return;const allowedValues=listGetProjectionFields(runtimeMetadataKeys),allowed=new Set(allowedValues),unknown=fields.filter(field=>{const normalized=normalizeGetField(field);return!allowed.has(field)&&!allowed.has(normalized)});if(unknown.length>0){const suggestedRetryArguments=["get",id,"--fields",fields.filter(field=>!unknown.includes(field)).join(",")||"id,title,status"];throw new PmCliError(`Unknown get --fields value(s): ${unknown.join(", ")}`,EXIT_CODE.USAGE,{code:"unknown_field_projection",examples:["pm get <id> --fields id,title,status,type,updated_at","pm get <id> --fields id,title,claim_state","pm get <id> --fields id,title,body,linked.files"],recovery:{allowed_values:allowedValues,suggested_retry:renderPmCommand(suggestedRetryArguments),suggested_retry_args:suggestedRetryArguments}})}}const EMPTY_PROJECTED_COLLECTION_FIELDS=new Set(["comments","notes","learnings","files","tests","test_runs","docs","reminders","events","dependencies","plan_steps","plan_decisions","plan_discoveries","plan_validation"]);function projectedMetadataValue(source,counts,field){return Object.hasOwn(counts,field)?counts[field]:source[field]!==void 0?source[field]:EMPTY_PROJECTED_COLLECTION_FIELDS.has(field)?[]:void 0}const GET_FACET_ROOTS=new Set(["body","item_hash","linked","claim_state","children","schedule","blockers"]),GET_NESTED_FACET_ROOTS=new Set(["linked","claim_state","children","schedule"]);function isGetFacetSelector(field,normalized){if(field==="item.item_hash")return!1;const dot=normalized.indexOf(".");return dot===-1?GET_FACET_ROOTS.has(normalized):GET_NESTED_FACET_ROOTS.has(normalized.slice(0,dot))}function projectItemForFields(item,fields){const source=toItemRecord(item),omittedCounts={notes_count:item.notes?.length??0,tests_count:item.tests?.length??0,collection_counts:itemCollectionCounts(item)},projected={id:item.id};for(const field of fields){const normalized=normalizeGetField(field);isGetFacetSelector(field,normalized)||(projected[normalized]=projectedMetadataValue(source,omittedCounts,normalized))}return projected}function fieldsInclude(fields,name){return fields?.some(field=>field===name||field===`item.${name}`)??!1}function fieldsIncludeRoot(fields,name){return fields.some(field=>{const normalized=normalizeGetField(field);return normalized===name||normalized.startsWith(`${name}.`)})}function resolveGetProjection(options,id){if(options.full&&(options.fields!==void 0||options.depth!==void 0))throw new PmCliError("Get projection options are mutually exclusive; remove the extra projection flag and retry.",EXIT_CODE.USAGE,{code:"projection_options_mutually_exclusive",flag:"--full",recovery:{suggested_retry:renderPmCommand(["get",id,"--full"]),suggested_retry_args:["get",id,"--full"]}});if(options.tree!==!0&&options.treeDepth!==void 0)throw new PmCliError("Get --tree-depth requires --tree",EXIT_CODE.USAGE);if(options.at!==void 0&&options.tree===!0)throw new PmCliError("Get --at cannot be combined with --tree because workspace-level historical projections are not yet indexed.",EXIT_CODE.USAGE);return{depth:options.full?"deep":parseGetDepth(options.depth),full:options.full===!0||options.depth?.trim().toLowerCase()==="full",treeDepth:options.tree===!0?parseIntegerLimit(options.treeDepth,"--tree-depth"):void 0,fields:parseGetFields(options.fields),fieldProjection:options.fields!==void 0}}async function loadGetItemContext(id,global2,at){const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertInitializedTracker(pmRoot);const settings=await readSettings(pmRoot),typeRegistry=resolveItemTypeRegistry(settings,getActiveExtensionRegistrations());if(at!==void 0){const historical=await getItemAt(id,at,{pmRoot:global2.path});return{pmRoot,settings,typeToFolder:typeRegistry.type_to_folder,locatedId:historical.document.metadata.id,metadata:historical.document.metadata,body:historical.document.body,historical}}const located=await locateItem(pmRoot,id,settings.id_prefix,settings.item_format,typeRegistry.type_to_folder);if(!located)throw await buildItemNotFoundError(pmRoot,id,settings.id_prefix,typeRegistry.type_to_folder);const loaded=await readLocatedItem(located,{schema:settings.schema});return{pmRoot,settings,typeToFolder:typeRegistry.type_to_folder,locatedId:located.id,metadata:loaded.document.metadata,body:loaded.document.body}}function validateGetProjectionFields(fields,settings,historical,id){const runtimeMetadataKeys=[...resolveRuntimeFieldRegistry(settings.schema).definitions.map(field=>field.metadata_key),...collectRegisteredItemFieldNames(getActiveExtensionRegistrations())];if(validateGetFields(fields,runtimeMetadataKeys,id),historical&&fieldsIncludeRoot(fields??[],"children"))throw new PmCliError("Get --at cannot project children because workspace-level historical relationships are not yet indexed.",EXIT_CODE.USAGE);if(historical&&fieldsIncludeRoot(fields??[],"blockers"))throw new PmCliError("Get --at cannot project current blocker statuses; read the current item with --fields blockers instead.",EXIT_CODE.USAGE)}function shouldIncludeGetField(params){const{fieldProjection,depth,fields,field}=params;return fieldProjection?field==="body"||field==="linked"?fieldsInclude(fields,field):fieldsIncludeRoot(fields,field):depth!=="brief"}async function resolveGetClaimState(context,includeClaimState){if(!includeClaimState)return;const historyPath=getHistoryPath(context.pmRoot,context.locatedId),history=await readHistoryEntries(historyPath,context.locatedId);return resolveClaimStateContext(context.metadata.assignee,context.historical?history.slice(0,context.historical.target.historyIndex+1):history)}function attachGetItemHash(result,context,projection){context.historical===void 0&&(projection.fieldProjection&&!projection.fields.includes("item_hash")||(result.item_hash=hashDocument({metadata:context.metadata,body:context.body})))}function attachGetLinked(result,context,fields,includeLinked){const includeLinkedFiles=includeLinked||fieldsInclude(fields,"linked.files"),includeLinkedTests=includeLinked||fieldsInclude(fields,"linked.tests"),includeLinkedDocs=includeLinked||fieldsInclude(fields,"linked.docs");!includeLinked&&!includeLinkedFiles&&!includeLinkedTests&&!includeLinkedDocs||(result.linked={files:includeLinkedFiles?context.metadata.files??[]:[],tests:includeLinkedTests?context.metadata.tests??[]:[],docs:includeLinkedDocs?context.metadata.docs??[]:[]})}async function buildGetChildrenRollup(context,includeChildren){if(!includeChildren)return;const statusRegistry=resolveRuntimeStatusRegistry(context.settings.schema),corpus=await listAllItemMetadataLight(context.pmRoot,context.settings.item_format,context.typeToFolder,void 0,context.settings.schema);return buildItemChildrenRollup(context.locatedId,corpus,statusRegistry)}async function attachGetBlockers(result,context,projection){if(context.historical!==void 0||!(projection.fieldProjection?fieldsIncludeRoot(projection.fields,"blockers"):projection.depth!=="brief")||collectBlockedByIds(context.metadata).length===0)return;const resolved=await resolveDeclaredBlockers({pmRoot:context.pmRoot,settings:context.settings,typeToFolder:context.typeToFolder,metadata:context.metadata});result.blockers={scope:"declared",open:resolved.filter(blocker=>!blocker.resolved).map(({resolved:_resolved,...blocker})=>blocker),closed_count:resolved.filter(blocker=>blocker.resolved).length},!projection.fieldProjection&&!projection.full&&delete result.item.blocked_by}function attachGetSchedule(result,context,fields,includeSchedule){if(!includeSchedule)return;const schedule=buildItemSchedule(context.metadata);if(schedule){if(fields===null||fieldsInclude(fields,"schedule")){result.schedule=schedule;return}result.schedule=Object.fromEntries(Object.entries(schedule).filter(([key])=>fields.some(field=>normalizeGetField(field)===`schedule.${key}`)))}}async function buildGetTree(context,options,treeDepth,global2){if(options.tree!==!0)return;const subtree=await runList(void 0,{parent:context.locatedId,tree:!0,treeDepth:treeDepth===void 0?void 0:String(treeDepth),full:!0},global2);return{root_id:context.locatedId,root_title:context.metadata.title,depth_limit:treeDepth??null,count:subtree.count,items:subtree.items.map(entry=>toItemRecord(entry))}}async function runGet(id,global2,options={}){const projection=resolveGetProjection(options,id),context=await loadGetItemContext(id,global2,options.at);validateGetProjectionFields(projection.fields,context.settings,context.historical!==void 0,context.locatedId);const includeBody=shouldIncludeGetField({...projection,field:"body"}),includeLinked=shouldIncludeGetField({...projection,field:"linked"}),includeClaimState=shouldIncludeGetField({...projection,field:"claim_state"}),includeChildren=context.historical===void 0&&(projection.fieldProjection?fieldsIncludeRoot(projection.fields,"children"):projection.depth==="deep"&&(projection.full||shouldAutoIncludeGetChildren(context.metadata.type))),includeSchedule=projection.fieldProjection?fieldsIncludeRoot(projection.fields,"schedule"):projection.depth!=="brief",claimState=await resolveGetClaimState(context,includeClaimState),result={item:projection.fieldProjection?projectItemForFields(context.metadata,projection.fields):projectItemForDepth(context.metadata,projection.depth,projection.full)};includeBody&&(result.item.body=context.body),attachGetItemHash(result,context,projection),attachGetLinked(result,context,projection.fields,includeLinked),claimState&&(result.claim_state=claimState),attachGetSchedule(result,context,projection.fields,includeSchedule),await attachGetBlockers(result,context,projection);const children=await buildGetChildrenRollup(context,includeChildren);children!==void 0&&(result.children=children);const tree=await buildGetTree(context,options,projection.treeDepth,global2);if(tree!==void 0&&(result.tree=tree),context.historical&&(result.reconstructed=!0,result.as_of_version=context.historical.as_of_version,result.as_of_timestamp=context.historical.as_of_timestamp),context.historical===void 0)try{await recordContextUsageTouches({pmRoot:context.pmRoot,author:resolveAuthor(void 0,context.settings.author_default),itemIds:[context.locatedId],intent:"get"})}catch{}return registerOutputMaterialFieldGroups(result,projection.fieldProjection?[]:itemMaterialFieldGroups(context.metadata,context.body,children,context.historical===void 0,projection)),result}const _testOnlyGetCommand={shouldAutoIncludeGetChildren};export{GET_DEPTH_INPUT_VALUES2 as GET_DEPTH_INPUT_VALUES,GET_DEPTH_VALUES2 as GET_DEPTH_VALUES,_testOnlyGetCommand,listGetProjectionFields2 as listGetProjectionFields,runGet};
2
2
  //# sourceMappingURL=get.js.map
@@ -1,2 +1,2 @@
1
- (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="88ed7e44-a3a0-5a23-9d7b-b00087bff331")}catch{}})();import{ITEM_METADATA_KEY_ORDER}from"../../core/shared/item-metadata-contract.js";const DEFAULT_COMPACT_LIST_FIELDS=["id","title","status","type","priority","parent","updated_at"],BRIEF_LIST_FIELDS=["id","status","type","title"],LIST_COMMAND_DEFAULT_PROJECTIONS={list:"brief","list-all":"full","list-draft":"full","list-open":"brief","list-in-progress":"brief","list-blocked":"brief","list-closed":"brief","list-canceled":"full"},TREE_METADATA_FIELDS=["tree_depth","tree_parent","tree_children","tree_title"];function listListProjectionFields(runtimeMetadataKeys=[]){return[...new Set([...ITEM_METADATA_KEY_ORDER,"body",...TREE_METADATA_FIELDS,...runtimeMetadataKeys])].flatMap(field=>[field,`item.${field}`]).sort()}const GET_DEPTH_VALUES=["brief","standard","deep"],GET_DEPTH_INPUT_VALUES=[...GET_DEPTH_VALUES,"full"],PLAN_SHOW_DEPTH_VALUES=["brief","standard","deep"],GET_ROOT_PROJECTION_FIELDS=["body","linked","claim_state","children","schedule","blockers"],GET_LINKED_PROJECTION_FIELDS=["linked.files","linked.tests","linked.docs"],GET_CLAIM_STATE_PROJECTION_FIELDS=["claim_state.claimed","claim_state.assignee","claim_state.last_claim","claim_state.last_release"],GET_SCHEDULE_PROJECTION_FIELDS=["schedule.deadline","schedule.start_at","schedule.end_at","schedule.location","schedule.reminders","schedule.events"];function listGetProjectionFields(runtimeMetadataKeys=[]){return[...[...new Set([...ITEM_METADATA_KEY_ORDER,...runtimeMetadataKeys,"notes_count","tests_count","collection_counts"])].flatMap(field=>[field,`item.${field}`]),...GET_ROOT_PROJECTION_FIELDS,...GET_LINKED_PROJECTION_FIELDS,...GET_CLAIM_STATE_PROJECTION_FIELDS,...GET_SCHEDULE_PROJECTION_FIELDS].sort()}const DEFAULT_COMPACT_SEARCH_FIELDS=["id","title","status","type","priority","updated_at","score","matched_fields"],SEARCH_HIT_FIELD_KEYS=["score","matched_fields","highlights"],SEARCH_ITEM_FIELD_KEYS=["id","title","description","type","status","priority","tags","created_at","updated_at","deadline","assignee","author","estimated_minutes","acceptance_criteria","dependencies","comments","notes","learnings","reminders","events","files","tests","docs","close_reason","parent","reviewer","risk","confidence","sprint","release","blocked_by","blocked_reason","reporter","severity","environment","repro_steps","resolution","expected_result","actual_result","affected_version","fixed_version","component","regression","customer_impact","definition_of_ready","order","rank","goal","objective","value","impact","outcome","why_now","plan"];function listSearchProjectionFields(runtimeMetadataKeys=[]){const runtimeKeys=[...new Set(runtimeMetadataKeys)];return[...SEARCH_HIT_FIELD_KEYS,...SEARCH_ITEM_FIELD_KEYS,...SEARCH_ITEM_FIELD_KEYS.map(field=>`item.${field}`),...runtimeKeys,...runtimeKeys.map(field=>`item.${field}`)].sort()}export{BRIEF_LIST_FIELDS,DEFAULT_COMPACT_LIST_FIELDS,DEFAULT_COMPACT_SEARCH_FIELDS,GET_DEPTH_INPUT_VALUES,GET_DEPTH_VALUES,LIST_COMMAND_DEFAULT_PROJECTIONS,PLAN_SHOW_DEPTH_VALUES,SEARCH_HIT_FIELD_KEYS,SEARCH_ITEM_FIELD_KEYS,listGetProjectionFields,listListProjectionFields,listSearchProjectionFields};
1
+ (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3a93b3f4-9511-5c8d-a176-6d8bf97981c7")}catch{}})();import{ITEM_METADATA_KEY_ORDER}from"../../core/shared/item-metadata-contract.js";const DEFAULT_COMPACT_LIST_FIELDS=["id","title","status","type","priority","parent","updated_at"],BRIEF_LIST_FIELDS=["id","status","type","title"],LIST_COMMAND_DEFAULT_PROJECTIONS={list:"brief","list-all":"full","list-draft":"full","list-open":"brief","list-in-progress":"brief","list-blocked":"brief","list-closed":"brief","list-canceled":"full"},TREE_METADATA_FIELDS=["tree_depth","tree_parent","tree_children","tree_title"];function listListProjectionFields(runtimeMetadataKeys=[]){return[...new Set([...ITEM_METADATA_KEY_ORDER,"body",...TREE_METADATA_FIELDS,...runtimeMetadataKeys])].flatMap(field=>[field,`item.${field}`]).sort()}const GET_DEPTH_VALUES=["brief","standard","deep"],GET_DEPTH_INPUT_VALUES=[...GET_DEPTH_VALUES,"full"],PLAN_SHOW_DEPTH_VALUES=["brief","standard","deep"],GET_ROOT_PROJECTION_FIELDS=["body","item_hash","linked","claim_state","children","schedule","blockers"],GET_LINKED_PROJECTION_FIELDS=["linked.files","linked.tests","linked.docs"],GET_CLAIM_STATE_PROJECTION_FIELDS=["claim_state.claimed","claim_state.assignee","claim_state.last_claim","claim_state.last_release"],GET_SCHEDULE_PROJECTION_FIELDS=["schedule.deadline","schedule.start_at","schedule.end_at","schedule.location","schedule.reminders","schedule.events"];function listGetProjectionFields(runtimeMetadataKeys=[]){return[...[...new Set([...ITEM_METADATA_KEY_ORDER,...runtimeMetadataKeys,"notes_count","tests_count","collection_counts"])].flatMap(field=>[field,`item.${field}`]),...GET_ROOT_PROJECTION_FIELDS,...GET_LINKED_PROJECTION_FIELDS,...GET_CLAIM_STATE_PROJECTION_FIELDS,...GET_SCHEDULE_PROJECTION_FIELDS].sort()}const DEFAULT_COMPACT_SEARCH_FIELDS=["id","title","status","type","priority","updated_at","score","matched_fields"],SEARCH_HIT_FIELD_KEYS=["score","matched_fields","highlights"],SEARCH_ITEM_FIELD_KEYS=["id","title","description","type","status","priority","tags","created_at","updated_at","deadline","assignee","author","estimated_minutes","acceptance_criteria","dependencies","comments","notes","learnings","reminders","events","files","tests","docs","close_reason","parent","reviewer","risk","confidence","sprint","release","blocked_by","blocked_reason","reporter","severity","environment","repro_steps","resolution","expected_result","actual_result","affected_version","fixed_version","component","regression","customer_impact","definition_of_ready","order","rank","goal","objective","value","impact","outcome","why_now","plan"];function listSearchProjectionFields(runtimeMetadataKeys=[]){const runtimeKeys=[...new Set(runtimeMetadataKeys)];return[...SEARCH_HIT_FIELD_KEYS,...SEARCH_ITEM_FIELD_KEYS,...SEARCH_ITEM_FIELD_KEYS.map(field=>`item.${field}`),...runtimeKeys,...runtimeKeys.map(field=>`item.${field}`)].sort()}export{BRIEF_LIST_FIELDS,DEFAULT_COMPACT_LIST_FIELDS,DEFAULT_COMPACT_SEARCH_FIELDS,GET_DEPTH_INPUT_VALUES,GET_DEPTH_VALUES,LIST_COMMAND_DEFAULT_PROJECTIONS,PLAN_SHOW_DEPTH_VALUES,SEARCH_HIT_FIELD_KEYS,SEARCH_ITEM_FIELD_KEYS,listGetProjectionFields,listListProjectionFields,listSearchProjectionFields};
2
2
  //# sourceMappingURL=projection-contracts.js.map
@@ -1,2 +1,2 @@
1
- (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="23d06544-9101-582d-92d4-bed8092d3cdb")}catch{}})();import{projectMutationResult}from"../../core/output/mutation-projection.js";import{withQuerySummary}from"../../core/output/query-summary.js";import{PmCliError}from"../../core/shared/errors.js";import{resolvePmRoot}from"../../core/store/paths.js";import{createUnknownSubcommandError}from"../agent/subcommand-recovery.js";import{normalizeAnnotationTransportOptions}from"../annotations.js";import{acknowledgeUnknownAuthorHistoryEventsFromTransport}from"../author-attribution.js";import{runContracts}from"../cli-contracts/runtime-contracts.js";import{runComments}from"../comments.js";import{runConfig}from"../config.js";import{applyContextIntentProjection}from"../context-intent-contracts.js";import{runDeps}from"../dependencies.js";import{runDocs}from"../docs.js";import{runDuplicates}from"../duplicates.js";import{runExtension}from"../extension.js";import{runFiles,runFilesDiscover,runFilesLookup}from"../files.js";import{runAssuranceDispatch}from"../governance/assurance-action.js";import{runGc}from"../governance/gc.js";import{runHealth}from"../governance/health.js";import{runUpgrade}from"../governance/upgrade.js";import{runValidate}from"../governance/validate.js";import{runGraph}from"../graph/run.js";import{runMcpHistoryCompactAction,runMcpHistoryRepairAction}from"../history-mcp.js";import{runHistoryRedact}from"../history-redact.js";import{runHistoryAttest}from"../history/attestation-command.js";import{runInit}from"../init.js";import{runLearnings}from"../learnings.js";import{runAppend}from"../lifecycle/append.js";import{runCloseMany}from"../lifecycle/close-many.js";import{runCopy}from"../lifecycle/copy.js";import{runCreate}from"../lifecycle/create.js";import{runDelete}from"../lifecycle/delete.js";import{runFocus}from"../lifecycle/focus.js";import{runMcpClaimAction,runMcpCloseAction,runMcpReleaseAction,runMcpReopenAction,runMcpTaskCompositionAction}from"../lifecycle/mcp-actions.js";import{runPlan}from"../lifecycle/plan.js";import{runRestore}from"../lifecycle/restore.js";import{buildPlanMutationReceipt}from"../lifecycle/plan-mutation-receipt.js";import{runUpdateMany}from"../lifecycle/update-many.js";import{runUpdate}from"../lifecycle/update.js";import{runNotes}from"../notes.js";import{PROFILE_SUBCOMMANDS,runProfileApply,runProfileLint,runProfileList,runProfileShow}from"../profile.js";import{normalizeActivityProjectionOptions,runActivity}from"../query/activity.js";import{runAggregate}from"../query/aggregate.js";import{runContext}from"../query/context.js";import{runGet}from"../query/get.js";import{runHistory}from"../query/history.js";import{runList}from"../query/list.js";import{runNext}from"../query/next.js";import{runSearch}from"../query/search.js";import{runRuntimeEvalAction,runRuntimeEventsAction,runRuntimeMergeAction,runRuntimeSchedulingAction,runRuntimeWorkspaceAction}from"../runtime-extended-actions.js";import{closeManyOptionsFromFlat,graphOptionsFromFlat,isMcpMutationTransportInput,parseRuntimeInteger as parseMcpInteger,readRuntimeString as readString,readRuntimeStringArray as readStringArray,resolveRuntimeLimit,updateManyOptionsFromFlat,withAddNoteOption,withFilesDiscoveryOptions,withMutationCompaction}from"../runtime-input.js";import{statsCommandOptionsFromRuntime}from"../runtime-stats-options.js";import{runStats}from"../stats.js";import{runTelemetry}from"../telemetry.js";import{runTestAll}from"../test/batch.js";import{runTest}from"../test/execution.js";import{runtimeFilesLookupOptions}from"../traceability/runtime-files-lookup.js";import{getOwnHandler,readRequiredString}from"./context.js";import{runMcpSchemaAction}from"./schema.js";function readMcpTarget(ctx){return readString(ctx.args,"target")??readString(ctx.options,"target")}function requireMcpItemId(ctx,source=ctx.options){return ctx.id??readRequiredString(source,"id")}async function runMcpListAction(ctx){const listOptions=applyContextIntentProjection("list",ctx.options);return listOptions.compact===void 0&&listOptions.brief===void 0&&listOptions.full===void 0&&listOptions.fields===void 0&&listOptions.includeBody===void 0&&(listOptions.compact=!0),withQuerySummary(await runList(readString(ctx.args,"status")??readString(listOptions,"status"),listOptions,ctx.global),listOptions)}async function runMcpSearchAction(ctx){const query=readString(ctx.args,"query")??readString(ctx.args,"keywords")??readRequiredString(ctx.args,"query"),searchOptions=applyContextIntentProjection("search",ctx.options,[query]);return searchOptions.compact===void 0&&searchOptions.full===void 0&&searchOptions.fields===void 0&&(searchOptions.compact=!0),withQuerySummary(await runSearch(query,searchOptions,ctx.global),searchOptions)}async function runMcpCreateAction(ctx){const{changedFields,idOnly,runnerOptions}=withMutationCompaction(ctx.args,ctx.options);return projectMutationResult(await runCreate(runnerOptions,ctx.global),{changedFields,compactEnvelope:changedFields==="compact"&&!idOnly,idOnly})}async function runMcpCopyAction(ctx){const{changedFields,idOnly,runnerOptions}=withMutationCompaction(ctx.args,ctx.options),copyOptions={...runnerOptions,...runnerOptions.title===void 0&&typeof ctx.args.title=="string"?{title:ctx.args.title}:{},...runnerOptions.message===void 0&&typeof ctx.args.message=="string"?{message:ctx.args.message}:{}};return projectMutationResult(await runCopy(requireMcpItemId(ctx,copyOptions),copyOptions,ctx.global),{changedFields,compactEnvelope:changedFields==="compact"&&!idOnly,idOnly})}async function runMcpUpdateAction(ctx){const{changedFields,idOnly,runnerOptions}=withMutationCompaction(ctx.args,ctx.options);return projectMutationResult(await runUpdate(requireMcpItemId(ctx,runnerOptions),runnerOptions,ctx.global),{changedFields,compactEnvelope:changedFields==="compact"&&!idOnly,idOnly})}function runMcpCommentsAction(ctx){const commentOptions=normalizeAnnotationTransportOptions(ctx.options);return commentOptions.add===void 0&&commentOptions.stdin===void 0&&commentOptions.file===void 0&&commentOptions.edit===void 0&&commentOptions.delete===void 0&&(commentOptions.includeMeta=!0,commentOptions.limit===void 0&&commentOptions.fullHistory!==!0&&(commentOptions.limit="20")),runComments(requireMcpItemId(ctx),commentOptions,ctx.global)}function runMcpFilesLookupAction(ctx,paths){return runFilesLookup(runtimeFilesLookupOptions(ctx.options,paths,parseMcpInteger),ctx.global)}function runMcpFilesAction(ctx){const lookupPaths=readStringArray(ctx.options.lookupPath);if(lookupPaths&&lookupPaths.length>0)return runMcpFilesLookupAction(ctx,lookupPaths);const fileId=requireMcpItemId(ctx);return ctx.options.discover===!0?runFilesDiscover(fileId,withFilesDiscoveryOptions(ctx.options),ctx.global):runFiles(fileId,withAddNoteOption(ctx.options),ctx.global)}function runMcpTelemetryAction(ctx){return runTelemetry({subcommand:readString(ctx.args,"subcommand")??readString(ctx.options,"subcommand"),limit:resolveRuntimeLimit(ctx.args,ctx.options)},ctx.global)}function runMcpHealthAction(ctx){const healthOptions={...ctx.options};return healthOptions.brief===void 0&&healthOptions.summary===void 0&&healthOptions.full===void 0&&(healthOptions.summary=!0),runHealth(ctx.global,healthOptions)}function runMcpConfigAction(ctx){const configAction=readString(ctx.args,"configAction")??readString(ctx.options,"configAction")??readString(ctx.options,"action");if(configAction===void 0)throw new PmCliError("Missing required argument: configAction",64);const value=readString(ctx.args,"value")??readString(ctx.options,"value"),options=readString(ctx.options,"policy")!==void 0&&value!==void 0?{...ctx.options,value}:ctx.options;return runConfig(readString(ctx.args,"scope")??readString(ctx.options,"scope")??"project",configAction,readString(ctx.args,"key")??readString(ctx.options,"key"),options,ctx.global,readString(ctx.options,"policy")===void 0?value:void 0)}function runMcpActivityAction(ctx){const options=ctx.options;return runActivity(normalizeActivityProjectionOptions(options),ctx.global)}function parseMcpIntegerPrefix(value,label){if(typeof value=="number"){if(!Number.isFinite(value)||!Number.isInteger(value))throw new PmCliError(`${label} must be a finite integer.`,64);return value}if(typeof value=="string"&&value.trim().length>0){const trimmed=value.trim();if(!/^[+-]?\d+(?:st|nd|rd|th)?$/i.test(trimmed))throw new PmCliError(`${label} must be a finite integer.`,64);const parsed=Number.parseInt(trimmed,10);if(!Number.isInteger(parsed))throw new PmCliError(`${label} must be a finite integer.`,64);return parsed}}async function runMcpPlanAction(ctx){const subcommand=readString(ctx.args,"subcommand")??readRequiredString(ctx.options,"subcommand"),planRecord=ctx.options,{changedFields,idOnly}=withMutationCompaction(ctx.args,ctx.options),result=await runPlan({subcommand,id:typeof ctx.id=="string"?ctx.id:typeof planRecord.id=="string"?planRecord.id:void 0,stepRef:readMcpPlanStepRef(ctx),reorderTo:parseMcpIntegerPrefix(planRecord.reorderTo??ctx.args.reorderTo,"plan reorderTo"),options:ctx.options,global:ctx.global});return subcommand!=="show"&&isMcpMutationTransportInput(ctx.args)&&(result.mutation_receipt=buildPlanMutationReceipt(result,void 0)),subcommand==="show"?result:projectMutationResult(result,{changedFields,idOnly,compactEnvelope:changedFields==="compact"&&!idOnly})}function readMcpPlanStepRef(ctx){return typeof ctx.options.stepRef=="string"?ctx.options.stepRef:typeof ctx.args.stepRef=="string"?ctx.args.stepRef:void 0}function runMcpProfileAction(ctx){const subcommand=readString(ctx.args,"subcommand")??readRequiredString(ctx.options,"subcommand"),normalizedSubcommand=subcommand.trim().toLowerCase(),profileName=readString(ctx.args,"name")??readString(ctx.options,"name"),handler=getOwnHandler({list:()=>runProfileList(),show:()=>runProfileShow(profileName),lint:()=>runProfileLint(profileName),apply:()=>runProfileApply(profileName,{dryRun:ctx.args.dryRun===!0||ctx.options.dryRun===!0,author:readString(ctx.args,"author")??readString(ctx.options,"author"),force:ctx.args.force===!0||ctx.options.force===!0},ctx.global)},normalizedSubcommand);if(!handler)throw createUnknownSubcommandError({command_path:"profile",token:subcommand,allowed:PROFILE_SUBCOMMANDS,exit_code:64});return handler()}async function runMcpAppendAction(ctx){const{changedFields,idOnly,runnerOptions}=withMutationCompaction(ctx.args,ctx.options);return projectMutationResult(await runAppend(requireMcpItemId(ctx,runnerOptions),runnerOptions,ctx.global),{changedFields,compactEnvelope:changedFields==="compact"&&!idOnly,idOnly})}async function runMcpUpdateManyAction(ctx){const{changedFields,runnerOptions}=withMutationCompaction(ctx.args,ctx.options);return projectMutationResult(await runUpdateMany(updateManyOptionsFromFlat(runnerOptions),ctx.global),{changedFields})}async function runMcpCloseManyAction(ctx){const{changedFields,runnerOptions}=withMutationCompaction(ctx.args,ctx.options),topLevelReason=readString(ctx.args,"reason"),closeManyRunnerOptions=topLevelReason!==void 0&&runnerOptions.reason===void 0?{...runnerOptions,reason:topLevelReason}:{...runnerOptions};return ctx.force&&closeManyRunnerOptions.force===void 0&&(closeManyRunnerOptions.force=!0),projectMutationResult(await runCloseMany(closeManyOptionsFromFlat(closeManyRunnerOptions),ctx.global),{changedFields})}async function runMcpRestoreAction(ctx){const{changedFields,idOnly,runnerOptions}=withMutationCompaction(ctx.args,ctx.options),target=readString(runnerOptions,"target")??readRequiredString(ctx.args,"target");return projectMutationResult(await runRestore(requireMcpItemId(ctx,runnerOptions),target,runnerOptions,ctx.global),{changedFields,compactEnvelope:changedFields==="compact"&&!idOnly,idOnly})}function runMcpGraphAction(ctx){const merged={...ctx.args,...ctx.options};return runGraph(readRequiredString(merged,"subcommand"),readString(merged,"id")??ctx.id,readString(merged,"target"),graphOptionsFromFlat(merged),ctx.global)}function runMcpHistoryAuthorAcknowledgeAction(ctx){return acknowledgeUnknownAuthorHistoryEventsFromTransport(resolvePmRoot(process.cwd(),ctx.global.path),{...ctx.args,...ctx.options})}const SDK_ACTION_HANDLERS={init:ctx=>runInit(readString(ctx.args,"prefix"),ctx.global,ctx.options),context:ctx=>runContext(applyContextIntentProjection("context",ctx.options),ctx.global),next:ctx=>runNext(applyContextIntentProjection("next",ctx.options),ctx.global),eval:runRuntimeEvalAction,events:runRuntimeEventsAction,merge:runRuntimeMergeAction,workspace:runRuntimeWorkspaceAction,meet:runRuntimeSchedulingAction,event:runRuntimeSchedulingAction,remind:runRuntimeSchedulingAction,list:runMcpListAction,get:ctx=>{const id=requireMcpItemId(ctx);return runGet(id,ctx.global,applyContextIntentProjection("get",ctx.options,[id]))},search:runMcpSearchAction,duplicates:ctx=>{const status=typeof ctx.options.status=="string"?[ctx.options.status]:readStringArray(ctx.options.status);return runDuplicates(ctx.global,{exhaustive:ctx.options.exhaustive===!0,...status.length===0?{}:{status},since:readString(ctx.options,"since"),threshold:typeof ctx.options.threshold=="number"?ctx.options.threshold:void 0,limit:ctx.options.limit==="default"?void 0:parseMcpInteger(ctx.options.limit,"limit")})},create:runMcpCreateAction,copy:runMcpCopyAction,focus:ctx=>runFocus(ctx.id,{clear:ctx.options.clear===!0||ctx.args.clear===!0},ctx.global),update:runMcpUpdateAction,"item-reopen":runMcpReopenAction,restore:runMcpRestoreAction,claim:runMcpClaimAction,release:runMcpReleaseAction,"start-task":ctx=>runMcpTaskCompositionAction(ctx,"start_task"),"pause-task":ctx=>runMcpTaskCompositionAction(ctx,"pause_task"),"close-task":ctx=>runMcpTaskCompositionAction(ctx,"close_task"),close:runMcpCloseAction,comments:runMcpCommentsAction,notes:ctx=>runNotes(requireMcpItemId(ctx),normalizeAnnotationTransportOptions(ctx.options),ctx.global),learnings:ctx=>runLearnings(requireMcpItemId(ctx),normalizeAnnotationTransportOptions(ctx.options),ctx.global),files:runMcpFilesAction,docs:ctx=>runDocs(requireMcpItemId(ctx),withAddNoteOption(ctx.options),ctx.global),test:ctx=>runTest(requireMcpItemId(ctx),ctx.options,ctx.global),"test-all":ctx=>runTestAll(ctx.options,ctx.global),telemetry:runMcpTelemetryAction,validate:ctx=>runValidate(ctx.options,ctx.global,{runUpdate:(id,options,global2)=>runUpdate(id,options,global2)}),health:runMcpHealthAction,assurance:ctx=>runAssuranceDispatch(ctx.args,ctx.options,ctx.global),contracts:ctx=>runContracts(ctx.options,ctx.global),config:runMcpConfigAction,activity:runMcpActivityAction,aggregate:ctx=>runAggregate(ctx.options,ctx.global),extension:ctx=>runExtension(readMcpTarget(ctx),ctx.options,ctx.global),package:ctx=>runExtension(readMcpTarget(ctx),ctx.options,ctx.global),install:ctx=>runExtension(readMcpTarget(ctx),{...ctx.options,install:!0},ctx.global),upgrade:ctx=>runUpgrade(readMcpTarget(ctx),ctx.options,ctx.global),delete:ctx=>runDelete(requireMcpItemId(ctx),ctx.options,ctx.global),deps:ctx=>runDeps(requireMcpItemId(ctx),ctx.options,ctx.global),graph:runMcpGraphAction,"files-discover":ctx=>runFilesDiscover(requireMcpItemId(ctx),ctx.options,ctx.global),"files-lookup":ctx=>runMcpFilesLookupAction(ctx,readStringArray(ctx.options.paths)),history:ctx=>runHistory(requireMcpItemId(ctx),{...ctx.options,compact:ctx.options.full===!0||ctx.options.provenance===!0?!1:ctx.options.compact!==!1},ctx.global),"history-redact":ctx=>runHistoryRedact(requireMcpItemId(ctx),ctx.options,ctx.global),"history-repair":runMcpHistoryRepairAction,"history-compact":runMcpHistoryCompactAction,"history-attest":ctx=>runHistoryAttest(ctx.options,ctx.global),"history-author-acknowledge":runMcpHistoryAuthorAcknowledgeAction,plan:runMcpPlanAction,schema:runMcpSchemaAction,profile:runMcpProfileAction,stats:ctx=>runStats(ctx.global,statsCommandOptionsFromRuntime(ctx.options)),append:runMcpAppendAction,"update-many":runMcpUpdateManyAction,"close-many":runMcpCloseManyAction,gc:ctx=>runGc(ctx.global,ctx.options)};export{SDK_ACTION_HANDLERS};
1
+ (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="fb32200e-2d00-5b12-b229-163459edc0c1")}catch{}})();import{projectMutationResult}from"../../core/output/mutation-projection.js";import{withQuerySummary}from"../../core/output/query-summary.js";import{PmCliError}from"../../core/shared/errors.js";import{resolvePmRoot}from"../../core/store/paths.js";import{createUnknownSubcommandError}from"../agent/subcommand-recovery.js";import{normalizeAnnotationTransportOptions}from"../annotations.js";import{acknowledgeUnknownAuthorHistoryEventsFromTransport}from"../author-attribution.js";import{runContracts}from"../cli-contracts/runtime-contracts.js";import{runComments}from"../comments.js";import{runConfig}from"../config.js";import{applyContextIntentProjection}from"../context-intent-contracts.js";import{runDeps}from"../dependencies.js";import{runDocs}from"../docs.js";import{runDuplicates}from"../duplicates.js";import{runExtension}from"../extension.js";import{runFiles,runFilesDiscover,runFilesLookup}from"../files.js";import{runAssuranceDispatch}from"../governance/assurance-action.js";import{runGc}from"../governance/gc.js";import{runHealth}from"../governance/health.js";import{runUpgrade}from"../governance/upgrade.js";import{runValidate}from"../governance/validate.js";import{runGraph}from"../graph/run.js";import{runMcpHistoryCompactAction,runMcpHistoryRepairAction}from"../history-mcp.js";import{runHistoryRedact}from"../history-redact.js";import{runHistoryAttest}from"../history/attestation-command.js";import{runInit}from"../init.js";import{runLearnings}from"../learnings.js";import{runAppend}from"../lifecycle/append.js";import{runCloseMany}from"../lifecycle/close-many.js";import{runCopy}from"../lifecycle/copy.js";import{runCreate}from"../lifecycle/create.js";import{runDelete}from"../lifecycle/delete.js";import{runFocus}from"../lifecycle/focus.js";import{runMcpClaimAction,runMcpCloseAction,runMcpReleaseAction,runMcpReopenAction,runMcpTaskCompositionAction}from"../lifecycle/mcp-actions.js";import{runPlan}from"../lifecycle/plan.js";import{runRestore}from"../lifecycle/restore.js";import{buildPlanMutationReceipt}from"../lifecycle/plan-mutation-receipt.js";import{runUpdateMany}from"../lifecycle/update-many.js";import{runUpdate}from"../lifecycle/update.js";import{runNotes}from"../notes.js";import{PROFILE_SUBCOMMANDS,runProfileApply,runProfileLint,runProfileList,runProfileShow}from"../profile.js";import{normalizeActivityProjectionOptions,runActivity}from"../query/activity.js";import{runAggregate}from"../query/aggregate.js";import{runContext}from"../query/context.js";import{runGet}from"../query/get.js";import{runHistory}from"../query/history.js";import{runList}from"../query/list.js";import{runNext}from"../query/next.js";import{runSearch}from"../query/search.js";import{runRuntimeEvalAction,runRuntimeEventsAction,runRuntimeMergeAction,runRuntimeSchedulingAction,runRuntimeWorkspaceAction}from"../runtime-extended-actions.js";import{closeManyOptionsFromFlat,graphOptionsFromFlat,isMcpMutationTransportInput,parseRuntimeInteger as parseMcpInteger,readRuntimeString as readString,readRuntimeStringArray as readStringArray,resolveRuntimeLimit,updateManyOptionsFromFlat,withAddNoteOption,withFilesDiscoveryOptions,withMutationCompaction}from"../runtime-input.js";import{statsCommandOptionsFromRuntime}from"../runtime-stats-options.js";import{runStats}from"../stats.js";import{runTelemetry}from"../telemetry.js";import{runTestAll}from"../test/batch.js";import{runTest}from"../test/execution.js";import{runtimeFilesLookupOptions}from"../traceability/runtime-files-lookup.js";import{getOwnHandler,readRequiredString}from"./context.js";import{runMcpSchemaAction}from"./schema.js";import{defaultConfigScope}from"../../core/config/positional-value.js";function readMcpTarget(ctx){return readString(ctx.args,"target")??readString(ctx.options,"target")}function requireMcpItemId(ctx,source=ctx.options){return ctx.id??readRequiredString(source,"id")}async function runMcpListAction(ctx){const listOptions=applyContextIntentProjection("list",ctx.options);return listOptions.compact===void 0&&listOptions.brief===void 0&&listOptions.full===void 0&&listOptions.fields===void 0&&listOptions.includeBody===void 0&&(listOptions.compact=!0),withQuerySummary(await runList(readString(ctx.args,"status")??readString(listOptions,"status"),listOptions,ctx.global),listOptions)}async function runMcpSearchAction(ctx){const query=readString(ctx.args,"query")??readString(ctx.args,"keywords")??readRequiredString(ctx.args,"query"),searchOptions=applyContextIntentProjection("search",ctx.options,[query]);return searchOptions.compact===void 0&&searchOptions.full===void 0&&searchOptions.fields===void 0&&(searchOptions.compact=!0),withQuerySummary(await runSearch(query,searchOptions,ctx.global),searchOptions)}async function runMcpCreateAction(ctx){const{changedFields,idOnly,runnerOptions}=withMutationCompaction(ctx.args,ctx.options);return projectMutationResult(await runCreate(runnerOptions,ctx.global),{changedFields,compactEnvelope:changedFields==="compact"&&!idOnly,idOnly})}async function runMcpCopyAction(ctx){const{changedFields,idOnly,runnerOptions}=withMutationCompaction(ctx.args,ctx.options),copyOptions={...runnerOptions,...runnerOptions.title===void 0&&typeof ctx.args.title=="string"?{title:ctx.args.title}:{},...runnerOptions.message===void 0&&typeof ctx.args.message=="string"?{message:ctx.args.message}:{}};return projectMutationResult(await runCopy(requireMcpItemId(ctx,copyOptions),copyOptions,ctx.global),{changedFields,compactEnvelope:changedFields==="compact"&&!idOnly,idOnly})}async function runMcpUpdateAction(ctx){const{changedFields,idOnly,runnerOptions}=withMutationCompaction(ctx.args,ctx.options);return projectMutationResult(await runUpdate(requireMcpItemId(ctx,runnerOptions),runnerOptions,ctx.global),{changedFields,compactEnvelope:changedFields==="compact"&&!idOnly,idOnly})}function runMcpCommentsAction(ctx){const commentOptions=normalizeAnnotationTransportOptions(ctx.options);return commentOptions.add===void 0&&commentOptions.stdin===void 0&&commentOptions.file===void 0&&commentOptions.edit===void 0&&commentOptions.delete===void 0&&(commentOptions.includeMeta=!0,commentOptions.limit===void 0&&commentOptions.fullHistory!==!0&&(commentOptions.limit="20")),runComments(requireMcpItemId(ctx),commentOptions,ctx.global)}function runMcpFilesLookupAction(ctx,paths){return runFilesLookup(runtimeFilesLookupOptions(ctx.options,paths,parseMcpInteger),ctx.global)}function runMcpFilesAction(ctx){const lookupPaths=readStringArray(ctx.options.lookupPath);if(lookupPaths&&lookupPaths.length>0)return runMcpFilesLookupAction(ctx,lookupPaths);const fileId=requireMcpItemId(ctx);return ctx.options.discover===!0?runFilesDiscover(fileId,withFilesDiscoveryOptions(ctx.options),ctx.global):runFiles(fileId,withAddNoteOption(ctx.options),ctx.global)}function runMcpTelemetryAction(ctx){return runTelemetry({subcommand:readString(ctx.args,"subcommand")??readString(ctx.options,"subcommand"),limit:resolveRuntimeLimit(ctx.args,ctx.options)},ctx.global)}function runMcpHealthAction(ctx){const healthOptions={...ctx.options};return healthOptions.brief===void 0&&healthOptions.summary===void 0&&healthOptions.full===void 0&&(healthOptions.summary=!0),runHealth(ctx.global,healthOptions)}function runMcpConfigAction(ctx){const configAction=readString(ctx.args,"configAction")??readString(ctx.options,"configAction")??readString(ctx.options,"action");if(configAction===void 0)throw new PmCliError("Missing required argument: configAction",64);const value=readString(ctx.args,"value")??readString(ctx.options,"value"),options=readString(ctx.options,"policy")!==void 0&&value!==void 0?{...ctx.options,value}:ctx.options,key=readString(ctx.args,"key")??readString(ctx.options,"key");return runConfig(readString(ctx.args,"scope")??readString(ctx.options,"scope")??defaultConfigScope(key),configAction,key,options,ctx.global,readString(ctx.options,"policy")===void 0?value:void 0)}function runMcpActivityAction(ctx){const options=ctx.options;return runActivity(normalizeActivityProjectionOptions(options),ctx.global)}function parseMcpIntegerPrefix(value,label){if(typeof value=="number"){if(!Number.isFinite(value)||!Number.isInteger(value))throw new PmCliError(`${label} must be a finite integer.`,64);return value}if(typeof value=="string"&&value.trim().length>0){const trimmed=value.trim();if(!/^[+-]?\d+(?:st|nd|rd|th)?$/i.test(trimmed))throw new PmCliError(`${label} must be a finite integer.`,64);const parsed=Number.parseInt(trimmed,10);if(!Number.isInteger(parsed))throw new PmCliError(`${label} must be a finite integer.`,64);return parsed}}async function runMcpPlanAction(ctx){const subcommand=readString(ctx.args,"subcommand")??readRequiredString(ctx.options,"subcommand"),planRecord=ctx.options,{changedFields,idOnly}=withMutationCompaction(ctx.args,ctx.options),result=await runPlan({subcommand,id:typeof ctx.id=="string"?ctx.id:typeof planRecord.id=="string"?planRecord.id:void 0,stepRef:readMcpPlanStepRef(ctx),reorderTo:parseMcpIntegerPrefix(planRecord.reorderTo??ctx.args.reorderTo,"plan reorderTo"),options:ctx.options,global:ctx.global});return subcommand!=="show"&&isMcpMutationTransportInput(ctx.args)&&(result.mutation_receipt=buildPlanMutationReceipt(result,void 0)),subcommand==="show"?result:projectMutationResult(result,{changedFields,idOnly,compactEnvelope:changedFields==="compact"&&!idOnly})}function readMcpPlanStepRef(ctx){return typeof ctx.options.stepRef=="string"?ctx.options.stepRef:typeof ctx.args.stepRef=="string"?ctx.args.stepRef:void 0}function runMcpProfileAction(ctx){const subcommand=readString(ctx.args,"subcommand")??readRequiredString(ctx.options,"subcommand"),normalizedSubcommand=subcommand.trim().toLowerCase(),profileName=readString(ctx.args,"name")??readString(ctx.options,"name"),handler=getOwnHandler({list:()=>runProfileList(),show:()=>runProfileShow(profileName),lint:()=>runProfileLint(profileName),apply:()=>runProfileApply(profileName,{dryRun:ctx.args.dryRun===!0||ctx.options.dryRun===!0,author:readString(ctx.args,"author")??readString(ctx.options,"author"),force:ctx.args.force===!0||ctx.options.force===!0},ctx.global)},normalizedSubcommand);if(!handler)throw createUnknownSubcommandError({command_path:"profile",token:subcommand,allowed:PROFILE_SUBCOMMANDS,exit_code:64});return handler()}async function runMcpAppendAction(ctx){const{changedFields,idOnly,runnerOptions}=withMutationCompaction(ctx.args,ctx.options);return projectMutationResult(await runAppend(requireMcpItemId(ctx,runnerOptions),runnerOptions,ctx.global),{changedFields,compactEnvelope:changedFields==="compact"&&!idOnly,idOnly})}async function runMcpUpdateManyAction(ctx){const{changedFields,runnerOptions}=withMutationCompaction(ctx.args,ctx.options);return projectMutationResult(await runUpdateMany(updateManyOptionsFromFlat(runnerOptions),ctx.global),{changedFields})}async function runMcpCloseManyAction(ctx){const{changedFields,runnerOptions}=withMutationCompaction(ctx.args,ctx.options),topLevelReason=readString(ctx.args,"reason"),closeManyRunnerOptions=topLevelReason!==void 0&&runnerOptions.reason===void 0?{...runnerOptions,reason:topLevelReason}:{...runnerOptions};return ctx.force&&closeManyRunnerOptions.force===void 0&&(closeManyRunnerOptions.force=!0),projectMutationResult(await runCloseMany(closeManyOptionsFromFlat(closeManyRunnerOptions),ctx.global),{changedFields})}async function runMcpRestoreAction(ctx){const{changedFields,idOnly,runnerOptions}=withMutationCompaction(ctx.args,ctx.options),target=readString(runnerOptions,"target")??readRequiredString(ctx.args,"target");return projectMutationResult(await runRestore(requireMcpItemId(ctx,runnerOptions),target,runnerOptions,ctx.global),{changedFields,compactEnvelope:changedFields==="compact"&&!idOnly,idOnly})}function runMcpGraphAction(ctx){const merged={...ctx.args,...ctx.options};return runGraph(readRequiredString(merged,"subcommand"),readString(merged,"id")??ctx.id,readString(merged,"target"),graphOptionsFromFlat(merged),ctx.global)}function runMcpHistoryAuthorAcknowledgeAction(ctx){return acknowledgeUnknownAuthorHistoryEventsFromTransport(resolvePmRoot(process.cwd(),ctx.global.path),{...ctx.args,...ctx.options})}const SDK_ACTION_HANDLERS={init:ctx=>runInit(readString(ctx.args,"prefix"),ctx.global,ctx.options),context:ctx=>runContext(applyContextIntentProjection("context",ctx.options),ctx.global),next:ctx=>runNext(applyContextIntentProjection("next",ctx.options),ctx.global),eval:runRuntimeEvalAction,events:runRuntimeEventsAction,merge:runRuntimeMergeAction,workspace:runRuntimeWorkspaceAction,meet:runRuntimeSchedulingAction,event:runRuntimeSchedulingAction,remind:runRuntimeSchedulingAction,list:runMcpListAction,get:ctx=>{const id=requireMcpItemId(ctx);return runGet(id,ctx.global,applyContextIntentProjection("get",ctx.options,[id]))},search:runMcpSearchAction,duplicates:ctx=>{const status=typeof ctx.options.status=="string"?[ctx.options.status]:readStringArray(ctx.options.status);return runDuplicates(ctx.global,{exhaustive:ctx.options.exhaustive===!0,...status.length===0?{}:{status},since:readString(ctx.options,"since"),threshold:typeof ctx.options.threshold=="number"?ctx.options.threshold:void 0,limit:ctx.options.limit==="default"?void 0:parseMcpInteger(ctx.options.limit,"limit")})},create:runMcpCreateAction,copy:runMcpCopyAction,focus:ctx=>runFocus(ctx.id,{clear:ctx.options.clear===!0||ctx.args.clear===!0},ctx.global),update:runMcpUpdateAction,"item-reopen":runMcpReopenAction,restore:runMcpRestoreAction,claim:runMcpClaimAction,release:runMcpReleaseAction,"start-task":ctx=>runMcpTaskCompositionAction(ctx,"start_task"),"pause-task":ctx=>runMcpTaskCompositionAction(ctx,"pause_task"),"close-task":ctx=>runMcpTaskCompositionAction(ctx,"close_task"),close:runMcpCloseAction,comments:runMcpCommentsAction,notes:ctx=>runNotes(requireMcpItemId(ctx),normalizeAnnotationTransportOptions(ctx.options),ctx.global),learnings:ctx=>runLearnings(requireMcpItemId(ctx),normalizeAnnotationTransportOptions(ctx.options),ctx.global),files:runMcpFilesAction,docs:ctx=>runDocs(requireMcpItemId(ctx),withAddNoteOption(ctx.options),ctx.global),test:ctx=>runTest(requireMcpItemId(ctx),ctx.options,ctx.global),"test-all":ctx=>runTestAll(ctx.options,ctx.global),telemetry:runMcpTelemetryAction,validate:ctx=>runValidate(ctx.options,ctx.global,{runUpdate:(id,options,global2)=>runUpdate(id,options,global2)}),health:runMcpHealthAction,assurance:ctx=>runAssuranceDispatch(ctx.args,ctx.options,ctx.global),contracts:ctx=>runContracts(ctx.options,ctx.global),config:runMcpConfigAction,activity:runMcpActivityAction,aggregate:ctx=>runAggregate(ctx.options,ctx.global),extension:ctx=>runExtension(readMcpTarget(ctx),ctx.options,ctx.global),package:ctx=>runExtension(readMcpTarget(ctx),ctx.options,ctx.global),install:ctx=>runExtension(readMcpTarget(ctx),{...ctx.options,install:!0},ctx.global),upgrade:ctx=>runUpgrade(readMcpTarget(ctx),ctx.options,ctx.global),delete:ctx=>runDelete(requireMcpItemId(ctx),ctx.options,ctx.global),deps:ctx=>runDeps(requireMcpItemId(ctx),ctx.options,ctx.global),graph:runMcpGraphAction,"files-discover":ctx=>runFilesDiscover(requireMcpItemId(ctx),ctx.options,ctx.global),"files-lookup":ctx=>runMcpFilesLookupAction(ctx,readStringArray(ctx.options.paths)),history:ctx=>runHistory(requireMcpItemId(ctx),{...ctx.options,compact:ctx.options.full===!0||ctx.options.provenance===!0?!1:ctx.options.compact!==!1},ctx.global),"history-redact":ctx=>runHistoryRedact(requireMcpItemId(ctx),ctx.options,ctx.global),"history-repair":runMcpHistoryRepairAction,"history-compact":runMcpHistoryCompactAction,"history-attest":ctx=>runHistoryAttest(ctx.options,ctx.global),"history-author-acknowledge":runMcpHistoryAuthorAcknowledgeAction,plan:runMcpPlanAction,schema:runMcpSchemaAction,profile:runMcpProfileAction,stats:ctx=>runStats(ctx.global,statsCommandOptionsFromRuntime(ctx.options)),append:runMcpAppendAction,"update-many":runMcpUpdateManyAction,"close-many":runMcpCloseManyAction,gc:ctx=>runGc(ctx.global,ctx.options)};export{SDK_ACTION_HANDLERS};
2
2
  //# sourceMappingURL=actions.js.map
@@ -1,2 +1,2 @@
1
- (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="39aa8f48-11f9-528b-b5a2-ff4272a6b644")}catch{}})();import{EXIT_CODE}from"../../core/shared/constants.js";import{PmCliError}from"../../core/shared/errors.js";import{asRecordClone}from"../../core/shared/primitives.js";import{CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS}from"../cli-contracts/commander-mutation-options.js";import{TOOL_CREATE_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACTS}from"../cli-contracts/tool-option-contracts.js";import{PM_TOOL_PARAMETER_PROPERTIES}from"../cli-contracts/tool-parameter-tables.js";import{PM_TOOL_ACTION_PARAMETER_CONTRACTS}from"../cli-contracts/tool-schema.js";import{preserveSdkMutationInput}from"../../core/item/parse.js";import{isCliMutationInput}from"../../core/item/literal-mutation-input.js";const MUTATION_INPUT_EXAMPLES={create:'client.create({ type: "Task", title: "Example", createMode: "progressive" })',update:'client.update(id, { estimatedMinutes: "45", force: false })',append:'client.append(id, "Body text")',reopen:'client.reopen(id, "The work recurred", { expectedResult: "Verified recovery" })'};function refuseValue(action,field,expected){const correction=`${action} ${field} must be ${expected}.`;throw new PmCliError(correction,EXIT_CODE.USAGE,{code:"invalid_argument_value",reason:"invalid_mutation_option_value",field,changed:!1,required:correction,examples:[MUTATION_INPUT_EXAMPLES[action]]})}function assertMutationStringOperand(value,action,field){typeof value!="string"&&refuseValue(action,field,"a string")}function assertMutationOptionBag(options,action){(options===null||typeof options!="object"||Array.isArray(options))&&refuseValue(action,"options","an object")}function assertMutationItemOperand(action,args){(action==="append"||action==="update")&&args.id!==void 0&&assertMutationStringOperand(args.id,action,"id"),action==="item-reopen"&&(args.id!==void 0&&assertMutationStringOperand(args.id,"reopen","id"),args.reason!==void 0&&assertMutationStringOperand(args.reason,"reopen","reason"),args.options!==void 0&&assertReopenMutationValues(args.options))}function assertAppendMutationValues(options){assertMutationOptionBag(options,"append");for(const field of["body","author","message"])options[field]!==void 0&&assertMutationStringOperand(options[field],"append",field);options.force!==void 0&&typeof options.force!="boolean"&&refuseValue("append","force","a boolean")}function assertReopenMutationValues(options){assertMutationOptionBag(options,"reopen");for(const field of PM_TOOL_ACTION_PARAMETER_CONTRACTS["item-reopen"].optional){const value=options[field];value!==void 0&&(asRecordClone(Reflect.get(PM_TOOL_PARAMETER_PROPERTIES,field)).type==="boolean"?typeof value!="boolean"&&refuseValue("reopen",field,"a boolean"):assertMutationStringOperand(value,"reopen",field))}}function optionValueType(list,scalarRepeatables){return list?scalarRepeatables?"a string or string array":"a string array":"a string"}function assertOptionValue(action,key,value,target,list,scalarRepeatables){value===void 0||typeof value=="string"&&(!list||scalarRepeatables)||target==="priority"&&typeof value=="number"&&Number.isFinite(value)||list&&Array.isArray(value)&&Array.from(value).every(entry=>typeof entry=="string")||refuseValue(action,key,optionValueType(list,scalarRepeatables))}function assertBooleanOptions(action,options,contracts){const parameters=action==="create"?TOOL_CREATE_OPTION_CONTRACTS:TOOL_UPDATE_OPTION_CONTRACTS;for(const{param}of[...parameters,...TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,{param:"force"}]){if(asRecordClone(Reflect.get(PM_TOOL_PARAMETER_PROPERTIES,param)).type!=="boolean")continue;const keys=contracts.find(contract=>contract.keys.includes(param))?.keys??[param];for(const key of keys)options[key]!==void 0&&typeof options[key]!="boolean"&&refuseValue(action,key,"a boolean")}}function assertNativeMutationValueTypes(action,options,scalarRepeatables=!0,cliAliases=!1){const contracts=action==="create"?CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS:UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS;for(const{target,keys,repeatable}of contracts)if(asRecordClone(Reflect.get(PM_TOOL_PARAMETER_PROPERTIES,target)).type!=="boolean")for(const key of keys){const cliAlias=cliAliases&&key!==target,list=repeatable===!0&&(target!=="acceptanceCriteria"||cliAlias);assertOptionValue(action,key,options[key],target,list,scalarRepeatables||cliAlias)}assertBooleanOptions(action,options,contracts)}function prepareNativeMutationOptions(action,options){assertMutationOptionBag(options,action);const prepared=preserveSdkMutationInput(options);return assertNativeMutationValueTypes(action,prepared,!1,isCliMutationInput(prepared)),prepared}export{assertAppendMutationValues,assertMutationItemOperand,assertMutationOptionBag,assertMutationStringOperand,assertNativeMutationValueTypes,assertReopenMutationValues,prepareNativeMutationOptions};
1
+ (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="837a5c2d-6447-5696-b0de-32641cde14cd")}catch{}})();import{EXIT_CODE}from"../../core/shared/constants.js";import{PmCliError}from"../../core/shared/errors.js";import{asRecordClone}from"../../core/shared/primitives.js";import{CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS}from"../cli-contracts/commander-mutation-options.js";import{TOOL_CREATE_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACTS}from"../cli-contracts/tool-option-contracts.js";import{PM_TOOL_PARAMETER_PROPERTIES}from"../cli-contracts/tool-parameter-tables.js";import{PM_TOOL_ACTION_PARAMETER_CONTRACTS}from"../cli-contracts/tool-schema.js";import{preserveSdkMutationInput}from"../../core/item/parse.js";import{isCliMutationInput}from"../../core/item/literal-mutation-input.js";import{foldNullClearsIntoUnset}from"../lifecycle/shared-unset-fields.js";const MUTATION_INPUT_EXAMPLES={create:'client.create({ type: "Task", title: "Example", createMode: "progressive" })',update:'client.update(id, { estimatedMinutes: "45", force: false })',append:'client.append(id, "Body text")',reopen:'client.reopen(id, "The work recurred", { expectedResult: "Verified recovery" })'};function refuseValue(action,field,expected){const correction=`${action} ${field} must be ${expected}.`;throw new PmCliError(correction,EXIT_CODE.USAGE,{code:"invalid_argument_value",reason:"invalid_mutation_option_value",field,changed:!1,required:correction,examples:[MUTATION_INPUT_EXAMPLES[action]]})}function assertMutationStringOperand(value,action,field){typeof value!="string"&&refuseValue(action,field,"a string")}function assertMutationOptionBag(options,action){(options===null||typeof options!="object"||Array.isArray(options))&&refuseValue(action,"options","an object")}function assertMutationItemOperand(action,args){(action==="append"||action==="update")&&args.id!==void 0&&assertMutationStringOperand(args.id,action,"id"),action==="item-reopen"&&(args.id!==void 0&&assertMutationStringOperand(args.id,"reopen","id"),args.reason!==void 0&&assertMutationStringOperand(args.reason,"reopen","reason"),args.options!==void 0&&assertReopenMutationValues(args.options))}function assertAppendMutationValues(options){assertMutationOptionBag(options,"append");for(const field of["body","author","message"])options[field]!==void 0&&assertMutationStringOperand(options[field],"append",field);options.force!==void 0&&typeof options.force!="boolean"&&refuseValue("append","force","a boolean")}function assertReopenMutationValues(options){assertMutationOptionBag(options,"reopen");for(const field of PM_TOOL_ACTION_PARAMETER_CONTRACTS["item-reopen"].optional){const value=options[field];value!==void 0&&(asRecordClone(Reflect.get(PM_TOOL_PARAMETER_PROPERTIES,field)).type==="boolean"?typeof value!="boolean"&&refuseValue("reopen",field,"a boolean"):assertMutationStringOperand(value,"reopen",field))}}function optionValueType(list,scalarRepeatables){return list?scalarRepeatables?"a string or string array":"a string array":"a string"}function assertOptionValue(action,key,value,target,list,scalarRepeatables){value===void 0||typeof value=="string"&&(!list||scalarRepeatables)||target==="priority"&&typeof value=="number"&&Number.isFinite(value)||list&&Array.isArray(value)&&Array.from(value).every(entry=>typeof entry=="string")||refuseValue(action,key,optionValueType(list,scalarRepeatables))}function assertBooleanOptions(action,options,contracts){const parameters=action==="create"?TOOL_CREATE_OPTION_CONTRACTS:TOOL_UPDATE_OPTION_CONTRACTS;for(const{param}of[...parameters,...TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,{param:"force"}]){if(asRecordClone(Reflect.get(PM_TOOL_PARAMETER_PROPERTIES,param)).type!=="boolean")continue;const keys=contracts.find(contract=>contract.keys.includes(param))?.keys??[param];for(const key of keys)options[key]!==void 0&&typeof options[key]!="boolean"&&refuseValue(action,key,"a boolean")}}function assertNativeMutationValueTypes(action,options,scalarRepeatables=!0,cliAliases=!1){const contracts=action==="create"?CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS:UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS;for(const{target,keys,repeatable}of contracts)if(asRecordClone(Reflect.get(PM_TOOL_PARAMETER_PROPERTIES,target)).type!=="boolean")for(const key of keys){const cliAlias=cliAliases&&key!==target,list=repeatable===!0&&(target!=="acceptanceCriteria"||cliAlias);assertOptionValue(action,key,options[key],target,list,scalarRepeatables||cliAlias)}assertBooleanOptions(action,options,contracts)}function prepareNativeMutationOptions(action,options){assertMutationOptionBag(options,action);const prepared=preserveSdkMutationInput(options),cli=isCliMutationInput(prepared);return cli||foldNullClearsIntoUnset(action,prepared),assertNativeMutationValueTypes(action,prepared,!1,cli),prepared}export{assertAppendMutationValues,assertMutationItemOperand,assertMutationOptionBag,assertMutationStringOperand,assertNativeMutationValueTypes,assertReopenMutationValues,prepareNativeMutationOptions};
2
2
  //# sourceMappingURL=mutation-value-validation.js.map
@@ -61,3 +61,15 @@ export declare function updateManyUpdateOptionsFromFlat(options:Record<string,un
61
61
  export declare function normalizeMcpUpdateOptions(options:Record<string,unknown>):Record<string,unknown>;
62
62
  /** Build update-many command options from one flat MCP parameter payload. */
63
63
  export declare function updateManyOptionsFromFlat(options:Record<string,unknown>):UpdateManyCommandOptions;
64
+ /**
65
+ * Return every supplied guard and the arguments with all placements removed.
66
+ * One placement passes through unchanged (so its validation message names it
67
+ * exactly); several are merged into one token list, so no placement is
68
+ * dropped, and a conflicting hash for one id still refuses at binding with
69
+ * `expected_revision_duplicate`. A supplied `null` counts as supplied, so
70
+ * validation can refuse it.
71
+ */
72
+ export declare function splitExpectHashInput(args:Record<string,unknown>):{
73
+ expectHash:unknown;
74
+ dispatchArgs:Record<string,unknown>;
75
+ };
@@ -1,2 +1,2 @@
1
- (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="29b6b04b-c4f9-5b83-b7e3-5b88a91106e9")}catch{}})();import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{asRecordClone}from"../core/shared/primitives.js";import{resolveCheckpointRollbackId}from"../core/checkpoint/mutation-checkpoint.js";import{withLiteralMutationInput}from"./lifecycle/cli-input.js";import{isCliMutationInput}from"../core/item/literal-mutation-input.js";import{assertMutationItemOperand,assertNativeMutationValueTypes}from"./runtime/mutation-value-validation.js";import{normalizeListOptions,normalizeCreateOptions,normalizeUpdateOptions}from"./cli-contracts/registration-helpers.js";import{CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,CREATE_COMMANDER_STRING_OPTION_CONTRACTS,UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,UPDATE_COMMANDER_STRING_OPTION_CONTRACTS}from"./cli-contracts/commander-mutation-options.js";import{TOOL_CREATE_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACTS}from"./cli-contracts/tool-option-contracts.js";import{PM_TOOL_PARAMETER_PROPERTIES}from"./cli-contracts/tool-parameter-tables.js";import{PM_TOOL_ACTION_PARAMETER_CONTRACTS}from"./cli-contracts/tool-schema.js";import{normalizeBulkIdsValue}from"../core/io/bulk-ids-input.js";import{overlayMutationStdinTokenPolicy,preserveMutationStdinTokenLiterals,transferMutationStdinTokenPolicy}from"../core/item/parse.js";const MCP_MUTATION_TRANSPORT=Symbol("pm.mcp-mutation-transport"),LITERAL_MUTATION_ACTIONS=new Set(["create","update","append"]),MCP_MUTATION_OPTION_CONTRACTS={create:{parameters:TOOL_CREATE_OPTION_CONTRACTS,aliases:CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,strings:CREATE_COMMANDER_STRING_OPTION_CONTRACTS,repeatables:CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS},update:{parameters:TOOL_UPDATE_OPTION_CONTRACTS,aliases:UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,strings:UPDATE_COMMANDER_STRING_OPTION_CONTRACTS,repeatables:UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS}},WORKSPACE_CONTRACTS_CACHE_PRESERVING_ACTIONS=new Set(["activity","aggregate","context","contracts","deps","files-discover","files-lookup","get","graph","health","history","history-attest","list","next","search","stats","telemetry","validate"]);function markMcpMutationTransportInput(input){return Object.defineProperty(input,MCP_MUTATION_TRANSPORT,{value:!0,enumerable:!0}),input}function isMcpMutationTransportInput(input){return MCP_MUTATION_TRANSPORT in input}function preserveTransportLiteralOptions(source,options){return isMcpMutationTransportInput(source)?preserveMutationStdinTokenLiterals(options):transferMutationStdinTokenPolicy(source,options)}function mutationOptionsWithOverrides(source,overrides,omittedKeys=[]){const options=transferMutationStdinTokenPolicy(source,{...source,...overrides});for(const key of omittedKeys)Reflect.deleteProperty(options,key);return options}function readRuntimeString(args,key){const value=args[key];return typeof value=="string"&&value.trim().length>0?value:void 0}function readRuntimeScalarString(args,key){const value=args[key];return typeof value=="string"?value.trim().length>0?value:void 0:typeof value=="number"&&Number.isFinite(value)?String(value):void 0}function readRuntimeScalarStringAllowBlank(args,key){const value=args[key];return typeof value=="string"?value:typeof value=="number"&&Number.isFinite(value)?String(value):void 0}function isRuntimeRecord(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function parseRuntimeInteger(value,label){if(typeof value=="number"){if(!Number.isInteger(value))throw new PmCliError(`${label} must be a finite integer.`,EXIT_CODE.USAGE);return value}if(typeof value=="string"&&value.trim().length>0){const parsed=Number(value);if(!Number.isInteger(parsed))throw new PmCliError(`${label} must be a finite integer.`,EXIT_CODE.USAGE);return parsed}}function resolveRuntimeLimit(args,options){return typeof args.limit=="number"&&Number.isFinite(args.limit)?args.limit:typeof options.limit=="number"&&Number.isFinite(options.limit)?options.limit:readRuntimeString(args,"limit")??readRuntimeString(options,"limit")}function actionGlobalOptions(args){const outputFormat=readRuntimeString(args,"outputFormat");return{json:!0,quiet:!0,author:readRuntimeString(args,"author"),path:readRuntimeString(args,"path"),noExtensions:args.noExtensions===!0||args.no_extensions===!0,noPager:!0,outputInclude:readRuntimeString(args,"outputInclude"),outputLimit:readRuntimeScalarString(args,"outputLimit"),outputBudget:readRuntimeScalarString(args,"outputBudget"),outputSession:readRuntimeString(args,"outputSession"),outputCursor:readRuntimeString(args,"outputCursor"),outputFormat:outputFormat==="json"||outputFormat==="toon"?outputFormat:void 0}}const ARRAY_TO_CSV_FIELDS=new Set(["tags","blockedBy","blocked_by","skills","fields"]),SCALAR_TO_ARRAY_FIELDS=new Set(["comment","note","learning","reminder","event","dep","depRemove","dep_remove","file","doc","test","unset","addGlob","add_glob","migrate","envSet","env_set","envClear","env_clear"]),ANNOTATION_SCALAR_TO_ARRAY_FIELDS=new Set([...SCALAR_TO_ARRAY_FIELDS].filter(field=>field!=="file")),ARRAY_ADD_REMOVE_ACTIONS=new Set(["files","files-discover","docs","test","test-all"]),SCALAR_ANNOTATION_SOURCE_ACTIONS=new Set(["comments","notes","learnings"]);function assertMcpAnnotationFileUnavailable(action,options){if(!(!SCALAR_ANNOTATION_SOURCE_ACTIONS.has(action)||!Object.prototype.hasOwnProperty.call(options,"file")))throw new PmCliError(`MCP ${action} does not accept options.file. Pass annotation text in options.add instead.`,EXIT_CODE.USAGE,{code:"mcp_annotation_file_unavailable",required:"Pass annotation text as JSON data; MCP annotation actions cannot read server-local files."})}const LIFECYCLE_AUTHOR_ALIAS_ACTIONS=new Set(["claim","release","start-task","pause-task","close-task"]),HOISTED_ACTION_OPTION_KEYS={history:["order"],"history-attest":["verify","output","hashAlgorithm"],list:["status","type","tag","priority","limit","offset"],search:["mode","status","type","tag","priority","limit"],create:["title","type","status","description","body","priority","tags","parent","createMode","create_mode","allowMissingParent","allowDuplicate","inheritFocus"],update:["parent","allowMissingParent","completedAt"],copy:["allowDuplicate"],close:["duplicateOf","completedAt","releaseAssignment"],claim:["start","next","ifAvailable"],release:["pause","handoff"],comments:["ifAbsent"],notes:["ifAbsent"],learnings:["ifAbsent"],extension:["dryRun","offline"],package:["dryRun","offline"],install:["dryRun"],upgrade:["scope","dryRun","cliOnly","packagesOnly","repair","tag","packageName"],append:["body"]},CONTRACT_HOISTED_READ_ACTIONS=new Set(["context","get","list","next","search"]),READ_ACTION_OPERAND_KEYS=new Set(["query","keywords"]);function declaredReadActionOptionKeys(action){return CONTRACT_HOISTED_READ_ACTIONS.has(action)?PM_TOOL_ACTION_PARAMETER_CONTRACTS[action].optional.filter(key=>!READ_ACTION_OPERAND_KEYS.has(key)):[]}function nestedOptionPresent(nested,key){const snakeKey=key.replace(/[A-Z]/gu,letter=>`_${letter.toLowerCase()}`);return nested[key]!==void 0||nested[snakeKey]!==void 0}function hoistedActionOptionKeys(action){return[...HOISTED_ACTION_OPTION_KEYS[action]??[],...declaredReadActionOptionKeys(action),...UNIVERSAL_READ_OUTPUT_OPTION_KEYS]}const UNIVERSAL_READ_OUTPUT_OPTION_KEYS=["outputInclude","outputLimit","outputBudget","outputFormat","outputSession","outputCursor"];function normalizeMcpOptionsArrays(options,action=""){const result={},promoteAddRemove=ARRAY_ADD_REMOVE_ACTIONS.has(action),preserveStandaloneNote=action==="files"||action==="files-discover"||action==="docs",scalarToArrayFields=SCALAR_ANNOTATION_SOURCE_ACTIONS.has(action)?ANNOTATION_SCALAR_TO_ARRAY_FIELDS:SCALAR_TO_ARRAY_FIELDS;for(const[key,value]of Object.entries(options)){if(Array.isArray(value)&&ARRAY_TO_CSV_FIELDS.has(key)){result[key]=value.join(",");continue}if(key==="note"&&preserveStandaloneNote){result[key]=value;continue}if(typeof value=="string"&&scalarToArrayFields.has(key)){result[key]=[value];continue}if(typeof value=="string"&&promoteAddRemove&&(key==="add"||key==="remove")){result[key]=[value];continue}result[key]=value}return Object.assign(result,Object.fromEntries(Object.getOwnPropertySymbols(options).map(symbol=>[symbol,Reflect.get(options,symbol)]))),result}function resolveMcpActionAuthor(args,options,action){const author=readRuntimeString(args,"author");return author!==void 0?author:action!==void 0&&LIFECYCLE_AUTHOR_ALIAS_ACTIONS.has(action)?readRuntimeString(args,"assignee")??readRuntimeString(options,"assignee"):void 0}function withResolvedAuthor(options,author){return author!==void 0&&options.author===void 0?{...options,author}:options}function hoistedMcpMutationOptions(action,args,nested){const result={},contracts=MCP_MUTATION_OPTION_CONTRACTS[action],parameters=new Set([...contracts.parameters.map(({param})=>param),...TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS.map(({param})=>param),...HOISTED_ACTION_OPTION_KEYS[action],...UNIVERSAL_READ_OUTPUT_OPTION_KEYS,"force"]);for(const param of parameters){const keys=contracts.aliases.find(contract=>contract.keys.includes(param))?.keys??[param];args[param]===void 0||keys.some(key=>nested[key]!==void 0)||(result[param]=args[param])}return result}function refuseMcpMutationValue(action,field){throw new PmCliError(`Invalid MCP ${action} value for "${field}". No changes were made.`,EXIT_CODE.USAGE,{code:"invalid_argument_value",reason:"invalid_mutation_option_value",changed:!1,field,required:`Provide valid ${action} field values and an options object; inspect the pm_${action} input schema for supported types.`})}function assertMcpMutationBooleans(action,args,options){const contracts=MCP_MUTATION_OPTION_CONTRACTS[action],parameters=[...contracts.parameters,...TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,{param:"force"}];for(const{param}of parameters){if(asRecordClone(PM_TOOL_PARAMETER_PROPERTIES[param]).type!=="boolean")continue;const invalid=(contracts.aliases.find(contract=>contract.keys.includes(param))?.keys??[param]).find(key=>options[key]!==void 0&&typeof options[key]!="boolean");invalid!==void 0&&refuseMcpMutationValue(action,invalid)}for(const key of["idOnly","fullChangedFields"])args[key]!==void 0&&typeof args[key]!="boolean"&&refuseMcpMutationValue(action,key)}function checkedMcpMutationOptions(action,args,options){args.options!==void 0&&!isRuntimeRecord(args.options)&&refuseMcpMutationValue(action,"options"),assertMcpMutationBooleans(action,args,options);for(const key of ARRAY_TO_CSV_FIELDS){const value=options[key];Array.isArray(value)&&value.some(entry=>typeof entry!="string")&&refuseMcpMutationValue(action,key)}const normalized=normalizeMcpMutationOptions(options,action),contracts=MCP_MUTATION_OPTION_CONTRACTS[action];for(const{keys,target}of contracts.strings)keys.some(key=>options[key]!==void 0)&&normalized[target]===void 0&&refuseMcpMutationValue(action,target);const invalidRepeatable=contracts.repeatables.flatMap(({keys})=>keys).find(key=>{const value=options[key];return value!==void 0&&typeof value!="string"&&(!Array.isArray(value)||value.some(entry=>typeof entry!="string"))});return invalidRepeatable!==void 0&&refuseMcpMutationValue(action,invalidRepeatable),normalized}function normalizedActionOptions(args,action,hoisted,nested){const mcpMutation=(action==="create"||action==="update")&&isMcpMutationTransportInput(args),options={...mcpMutation?hoistedMcpMutationOptions(action,args,nested):hoisted,...nested};return(action==="create"||action==="update")&&!mcpMutation&&assertNativeMutationValueTypes(action,options,!0,isRuntimeRecord(args.options)&&isCliMutationInput(args.options)),mcpMutation?checkedMcpMutationOptions(action,args,options):normalizeMcpOptionsArrays(options,action)}function literalActionOptions(action,options){return!LITERAL_MUTATION_ACTIONS.has(action??"")||isCliMutationInput(options)?options:withLiteralMutationInput(options)}function optionsWithAuthor(args,action){assertMutationItemOperand(action,args);const sourceOptions=isRuntimeRecord(args.options)?args.options:void 0,baseOptions=asRecordClone(args.options),hoistedTopLevel={},hoistKey=key=>{nestedOptionPresent(baseOptions,key)||args[key]===void 0||(hoistedTopLevel[key]=args[key])};for(const key of hoistedActionOptionKeys(action??""))hoistKey(key);action!==void 0&&isMcpMutationTransportInput(args)&&assertMcpAnnotationFileUnavailable(action,baseOptions);const options=normalizedActionOptions(args,action,hoistedTopLevel,baseOptions);if(action==="history-attest"&&isMcpMutationTransportInput(args)&&(options.output!==void 0||typeof options.verify=="string"))throw new PmCliError("MCP history attest does not accept server-local proof paths. Export the returned JSON bundle and pass that JSON object as verify.",EXIT_CODE.USAGE);const stdinPolicySource=isMcpMutationTransportInput(args)?args:sourceOptions??args,resolved=preserveTransportLiteralOptions(stdinPolicySource,withResolvedAuthor(options,resolveMcpActionAuthor(args,options,action)));return literalActionOptions(action,resolved)}function withAddNoteOption(options){if(options.addNote===void 0)return options;const next={...options};return next.note===void 0&&typeof next.addNote=="string"&&(next.note=next.addNote),delete next.addNote,next}function withFilesDiscoveryOptions(options){const next={...options};return next.discoveryNote!==void 0&&next.note===void 0&&typeof next.discoveryNote=="string"&&(next.note=next.discoveryNote),delete next.discover,delete next.discoveryNote,next}function normalizeActionName(value){const chunks=[];let lastWasSeparator=!0;for(const character of value.trim().toLowerCase()){if(character>="a"&&character<="z"||character>="0"&&character<="9"){chunks.push(character),lastWasSeparator=!1;continue}lastWasSeparator||(chunks.push("-"),lastWasSeparator=!0)}return chunks.at(-1)==="-"&&chunks.pop(),chunks.join("")}function shouldInvalidateWorkspaceContractsCacheAfterAction(action){return!WORKSPACE_CONTRACTS_CACHE_PRESERVING_ACTIONS.has(normalizeActionName(action))}function normalizeCommandPath(value){return value.trim().toLowerCase().split(/\s+/).filter(Boolean).join(" ")}function readRuntimeStringArray(value){return Array.isArray(value)?value.map(entry=>String(entry)).filter(entry=>entry.length>0):[]}function extensionOptionsFromArgs(args,options){const reserved=new Set(["action","args","author","cwd","fullChangedFields","id","options","path","query","reason","target"]),passthrough={};for(const[key,value]of Object.entries(args))reserved.has(key)||(passthrough[key]=value);const normalizedOptions={...passthrough,...options};return delete normalizedOptions.args,delete normalizedOptions.author,normalizedOptions}function withMutationCompaction(args,options){const runnerOptions=preserveTransportLiteralOptions(options??{},{...options});return{changedFields:args.fullChangedFields===!0?"full":"compact",idOnly:args.idOnly===!0,runnerOptions}}function mutationListOptions(options){return{type:readRuntimeScalarString(options,"filterType"),tag:readRuntimeScalarString(options,"filterTag"),priority:readRuntimeScalarString(options,"filterPriority"),deadlineBefore:readRuntimeScalarString(options,"filterDeadlineBefore"),deadlineAfter:readRuntimeScalarString(options,"filterDeadlineAfter"),updatedAfter:readRuntimeScalarString(options,"filterUpdatedAfter"),updatedBefore:readRuntimeScalarString(options,"filterUpdatedBefore"),createdAfter:readRuntimeScalarString(options,"filterCreatedAfter"),createdBefore:readRuntimeScalarString(options,"filterCreatedBefore"),ids:normalizeBulkIdsValue(options.ids),assignee:readRuntimeScalarString(options,"filterAssignee"),assigneeFilter:readRuntimeScalarString(options,"filterAssigneeFilter")??readRuntimeScalarString(options,"filterAssignee_filter"),parent:readRuntimeScalarString(options,"filterParent"),sprint:readRuntimeScalarString(options,"filterSprint"),release:readRuntimeScalarString(options,"filterRelease"),limit:readRuntimeScalarString(options,"limit"),offset:readRuntimeScalarString(options,"offset")}}function readGraphIdListOption(value){if(typeof value=="string"&&value.trim().length>0)return value;if(Array.isArray(value))return readRuntimeStringArray(value)}function readGraphBoundOption(value){if(typeof value=="number"&&Number.isFinite(value)||typeof value=="string"&&value.trim().length>0)return value}function graphOptionsFromFlat(options){const kind=readGraphIdListOption(options.kind),exemptIsolate=readGraphIdListOption(options.exemptIsolate),exemptIsolateType=readGraphIdListOption(options.exemptIsolateType);return{...kind===void 0?{}:{kind},maxDepth:readGraphBoundOption(options.maxDepth),limit:readGraphBoundOption(options.limit),after:readRuntimeString(options,"after"),direction:readRuntimeString(options,"direction"),maxPaths:readGraphBoundOption(options.maxPaths),sample:readGraphBoundOption(options.sample),...exemptIsolate===void 0?{}:{exemptIsolate},...exemptIsolateType===void 0?{}:{exemptIsolateType},saveBaseline:options.saveBaseline===!0,rebuild:options.rebuild===!0,clear:options.clear===!0,summary:options.summary===!0,...options.full===!0?{full:!0}:{}}}function normalizeBulkMutationListOptions(options){const normalized=normalizeListOptions(options);return options.ids!==void 0&&(normalized.ids=normalizeBulkIdsValue(options.ids)),normalized}function closeManyOptionsFromFlat(options){return{status:readRuntimeString(options,"filterStatus"),list:isRuntimeRecord(options.list)?normalizeBulkMutationListOptions(options.list):mutationListOptions(options),reason:readRuntimeString(options,"reason"),completedAt:readRuntimeString(options,"completedAt")??readRuntimeString(options,"completed_at"),resolution:readRuntimeString(options,"resolution"),expectedResult:readRuntimeString(options,"expectedResult")??readRuntimeString(options,"expected_result")??readRuntimeString(options,"expected"),actualResult:readRuntimeString(options,"actualResult")??readRuntimeString(options,"actual_result")??readRuntimeString(options,"actual"),validateClose:readRuntimeString(options,"validateClose")??readRuntimeString(options,"validate_close"),author:readRuntimeString(options,"author"),message:readRuntimeString(options,"message"),force:options.force===!0?!0:void 0,dryRun:options.dryRun===!0||options.dry_run===!0?!0:void 0,rollback:resolveCheckpointRollbackId(options.rollback),checkpoint:options.checkpoint===!1||options.noCheckpoint===!0||options.no_checkpoint===!0?!1:void 0}}const UPDATE_MANY_FLAT_CONTROL_KEYS=new Set(["filterStatus","filterType","filterTag","filterPriority","filterDeadlineBefore","filterDeadlineAfter","filterUpdatedAfter","filterUpdatedBefore","filterCreatedAfter","filterCreatedBefore","filterAssignee","filterAssigneeFilter","filterAssignee_filter","filterParent","filterSprint","filterRelease","ids","list","update","limit","offset","dryRun","dry_run","rollback","checkpoint","noCheckpoint","no_checkpoint"]);function updateManyUpdateOptionsFromFlat(options){const update={};for(const[key,value]of Object.entries(options))UPDATE_MANY_FLAT_CONTROL_KEYS.has(key)||(update[key]=value);return normalizeMcpUpdateOptions(update)}function normalizeMcpUpdateOptions(options){return normalizeMcpMutationOptions(options,"update")}function normalizeMcpMutationOptions(options,action){const normalizedInput=normalizeMcpOptionsArrays(options,action),contracts=MCP_MUTATION_OPTION_CONTRACTS[action],booleanishKeys=new Set([...contracts.parameters,...TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS].filter(({booleanish})=>booleanish===!0).map(({param})=>param));for(const{keys}of contracts.repeatables)for(const key of keys)typeof normalizedInput[key]=="string"&&(normalizedInput[key]=[normalizedInput[key]]);for(const contract of contracts.strings)for(const key of contract.keys){const value=normalizedInput[key];(typeof value=="number"&&Number.isFinite(value)||value===!1&&booleanishKeys.has(key))&&(normalizedInput[key]=String(value))}return action==="create"?{...normalizeCreateOptions(normalizedInput,{requireType:!1})}:normalizeUpdateOptions(normalizedInput)}function updateManyOptionsFromFlat(options){if(isRuntimeRecord(options.list)||isRuntimeRecord(options.update)){const updateSource=isRuntimeRecord(options.update)?options.update:updateManyUpdateOptionsFromFlat(options),normalizedUpdate=preserveTransportLiteralOptions(options,normalizeMcpUpdateOptions(updateSource));return{status:readRuntimeScalarString(options,"filterStatus"),list:isRuntimeRecord(options.list)?normalizeBulkMutationListOptions(options.list):mutationListOptions(options),update:overlayMutationStdinTokenPolicy(updateSource,normalizedUpdate),dryRun:options.dryRun===!0||options.dry_run===!0?!0:void 0,rollback:resolveCheckpointRollbackId(options.rollback),checkpoint:options.checkpoint===!1||options.noCheckpoint===!0||options.no_checkpoint===!0?!1:void 0}}return{status:readRuntimeScalarString(options,"filterStatus"),list:mutationListOptions(options),update:preserveTransportLiteralOptions(options,updateManyUpdateOptionsFromFlat(options)),dryRun:options.dryRun===!0||options.dry_run===!0?!0:void 0,rollback:resolveCheckpointRollbackId(options.rollback),checkpoint:options.checkpoint===!1||options.noCheckpoint===!0||options.no_checkpoint===!0?!1:void 0}}export{HOISTED_ACTION_OPTION_KEYS,actionGlobalOptions,closeManyOptionsFromFlat,extensionOptionsFromArgs,graphOptionsFromFlat,isMcpMutationTransportInput,isRuntimeRecord,markMcpMutationTransportInput,mutationListOptions,mutationOptionsWithOverrides,normalizeActionName,normalizeCommandPath,normalizeMcpOptionsArrays,normalizeMcpUpdateOptions,optionsWithAuthor,parseRuntimeInteger,readRuntimeScalarString,readRuntimeScalarStringAllowBlank,readRuntimeString,readRuntimeStringArray,resolveRuntimeLimit,shouldInvalidateWorkspaceContractsCacheAfterAction,updateManyOptionsFromFlat,updateManyUpdateOptionsFromFlat,withAddNoteOption,withFilesDiscoveryOptions,withMutationCompaction};
1
+ (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d4a2401b-171f-5d8f-87cd-21c0144f2cb9")}catch{}})();import{EXIT_CODE}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{asRecordClone}from"../core/shared/primitives.js";import{resolveCheckpointRollbackId}from"../core/checkpoint/mutation-checkpoint.js";import{withLiteralMutationInput}from"./lifecycle/cli-input.js";import{isCliMutationInput}from"../core/item/literal-mutation-input.js";import{assertMutationItemOperand,assertNativeMutationValueTypes}from"./runtime/mutation-value-validation.js";import{foldNullClearsIntoUnset}from"./lifecycle/shared-unset-fields.js";import{normalizeListOptions,normalizeCreateOptions,normalizeUpdateOptions}from"./cli-contracts/registration-helpers.js";import{CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,CREATE_COMMANDER_STRING_OPTION_CONTRACTS,UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,UPDATE_COMMANDER_STRING_OPTION_CONTRACTS}from"./cli-contracts/commander-mutation-options.js";import{TOOL_CREATE_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACTS}from"./cli-contracts/tool-option-contracts.js";import{PM_TOOL_PARAMETER_PROPERTIES}from"./cli-contracts/tool-parameter-tables.js";import{PM_TOOL_ACTION_PARAMETER_CONTRACTS}from"./cli-contracts/tool-schema.js";import{normalizeBulkIdsValue}from"../core/io/bulk-ids-input.js";import{overlayMutationStdinTokenPolicy,preserveMutationStdinTokenLiterals,transferMutationStdinTokenPolicy}from"../core/item/parse.js";const MCP_MUTATION_TRANSPORT=Symbol("pm.mcp-mutation-transport"),LITERAL_MUTATION_ACTIONS=new Set(["create","update","append"]),MCP_MUTATION_OPTION_CONTRACTS={create:{parameters:TOOL_CREATE_OPTION_CONTRACTS,aliases:CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,strings:CREATE_COMMANDER_STRING_OPTION_CONTRACTS,repeatables:CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS},update:{parameters:TOOL_UPDATE_OPTION_CONTRACTS,aliases:UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,strings:UPDATE_COMMANDER_STRING_OPTION_CONTRACTS,repeatables:UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS}},WORKSPACE_CONTRACTS_CACHE_PRESERVING_ACTIONS=new Set(["activity","aggregate","context","contracts","deps","files-discover","files-lookup","get","graph","health","history","history-attest","list","next","search","stats","telemetry","validate"]);function markMcpMutationTransportInput(input){return Object.defineProperty(input,MCP_MUTATION_TRANSPORT,{value:!0,enumerable:!0}),input}function isMcpMutationTransportInput(input){return MCP_MUTATION_TRANSPORT in input}function preserveTransportLiteralOptions(source,options){return isMcpMutationTransportInput(source)?preserveMutationStdinTokenLiterals(options):transferMutationStdinTokenPolicy(source,options)}function mutationOptionsWithOverrides(source,overrides,omittedKeys=[]){const options=transferMutationStdinTokenPolicy(source,{...source,...overrides});for(const key of omittedKeys)Reflect.deleteProperty(options,key);return options}function readRuntimeString(args,key){const value=args[key];return typeof value=="string"&&value.trim().length>0?value:void 0}function readRuntimeScalarString(args,key){const value=args[key];return typeof value=="string"?value.trim().length>0?value:void 0:typeof value=="number"&&Number.isFinite(value)?String(value):void 0}function readRuntimeScalarStringAllowBlank(args,key){const value=args[key];return typeof value=="string"?value:typeof value=="number"&&Number.isFinite(value)?String(value):void 0}function isRuntimeRecord(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function parseRuntimeInteger(value,label){if(typeof value=="number"){if(!Number.isInteger(value))throw new PmCliError(`${label} must be a finite integer.`,EXIT_CODE.USAGE);return value}if(typeof value=="string"&&value.trim().length>0){const parsed=Number(value);if(!Number.isInteger(parsed))throw new PmCliError(`${label} must be a finite integer.`,EXIT_CODE.USAGE);return parsed}}function resolveRuntimeLimit(args,options){return typeof args.limit=="number"&&Number.isFinite(args.limit)?args.limit:typeof options.limit=="number"&&Number.isFinite(options.limit)?options.limit:readRuntimeString(args,"limit")??readRuntimeString(options,"limit")}function actionGlobalOptions(args){const outputFormat=readRuntimeString(args,"outputFormat");return{json:!0,quiet:!0,author:readRuntimeString(args,"author"),path:readRuntimeString(args,"path"),noExtensions:args.noExtensions===!0||args.no_extensions===!0,noPager:!0,outputInclude:readRuntimeString(args,"outputInclude"),outputLimit:readRuntimeScalarString(args,"outputLimit"),outputBudget:readRuntimeScalarString(args,"outputBudget"),outputSession:readRuntimeString(args,"outputSession"),outputCursor:readRuntimeString(args,"outputCursor"),outputFormat:outputFormat==="json"||outputFormat==="toon"?outputFormat:void 0}}const ARRAY_TO_CSV_FIELDS=new Set(["tags","blockedBy","blocked_by","skills","fields"]),SCALAR_TO_ARRAY_FIELDS=new Set(["comment","note","learning","reminder","event","dep","depRemove","dep_remove","file","doc","test","unset","addGlob","add_glob","migrate","envSet","env_set","envClear","env_clear"]),ANNOTATION_SCALAR_TO_ARRAY_FIELDS=new Set([...SCALAR_TO_ARRAY_FIELDS].filter(field=>field!=="file")),ARRAY_ADD_REMOVE_ACTIONS=new Set(["files","files-discover","docs","test","test-all"]),SCALAR_ANNOTATION_SOURCE_ACTIONS=new Set(["comments","notes","learnings"]);function assertMcpAnnotationFileUnavailable(action,options){if(!(!SCALAR_ANNOTATION_SOURCE_ACTIONS.has(action)||!Object.prototype.hasOwnProperty.call(options,"file")))throw new PmCliError(`MCP ${action} does not accept options.file. Pass annotation text in options.add instead.`,EXIT_CODE.USAGE,{code:"mcp_annotation_file_unavailable",required:"Pass annotation text as JSON data; MCP annotation actions cannot read server-local files."})}const LIFECYCLE_AUTHOR_ALIAS_ACTIONS=new Set(["claim","release","start-task","pause-task","close-task"]),HOISTED_ACTION_OPTION_KEYS={history:["order"],"history-attest":["verify","output","hashAlgorithm"],list:["status","type","tag","priority","limit","offset"],search:["mode","status","type","tag","priority","limit"],create:["title","type","status","description","body","priority","tags","parent","createMode","create_mode","allowMissingParent","allowDuplicate","inheritFocus"],update:["parent","allowMissingParent","completedAt"],copy:["allowDuplicate"],close:["duplicateOf","completedAt","releaseAssignment"],claim:["start","next","ifAvailable"],release:["pause","handoff"],comments:["ifAbsent"],notes:["ifAbsent"],learnings:["ifAbsent"],extension:["dryRun","offline"],package:["dryRun","offline"],install:["dryRun"],upgrade:["scope","dryRun","cliOnly","packagesOnly","repair","tag","packageName"],append:["body"]},CONTRACT_HOISTED_READ_ACTIONS=new Set(["context","get","list","next","search"]),READ_ACTION_OPERAND_KEYS=new Set(["query","keywords"]);function declaredReadActionOptionKeys(action){return CONTRACT_HOISTED_READ_ACTIONS.has(action)?PM_TOOL_ACTION_PARAMETER_CONTRACTS[action].optional.filter(key=>!READ_ACTION_OPERAND_KEYS.has(key)):[]}function nestedOptionPresent(nested,key){const snakeKey=key.replace(/[A-Z]/gu,letter=>`_${letter.toLowerCase()}`);return nested[key]!==void 0||nested[snakeKey]!==void 0}function hoistedActionOptionKeys(action){return[...HOISTED_ACTION_OPTION_KEYS[action]??[],...declaredReadActionOptionKeys(action),...UNIVERSAL_READ_OUTPUT_OPTION_KEYS]}const UNIVERSAL_READ_OUTPUT_OPTION_KEYS=["outputInclude","outputLimit","outputBudget","outputFormat","outputSession","outputCursor"];function normalizeMcpOptionsArrays(options,action=""){const result={},promoteAddRemove=ARRAY_ADD_REMOVE_ACTIONS.has(action),preserveStandaloneNote=action==="files"||action==="files-discover"||action==="docs",scalarToArrayFields=SCALAR_ANNOTATION_SOURCE_ACTIONS.has(action)?ANNOTATION_SCALAR_TO_ARRAY_FIELDS:SCALAR_TO_ARRAY_FIELDS;for(const[key,value]of Object.entries(options)){if(Array.isArray(value)&&ARRAY_TO_CSV_FIELDS.has(key)){result[key]=value.join(",");continue}if(key==="note"&&preserveStandaloneNote){result[key]=value;continue}if(typeof value=="string"&&scalarToArrayFields.has(key)){result[key]=[value];continue}if(typeof value=="string"&&promoteAddRemove&&(key==="add"||key==="remove")){result[key]=[value];continue}result[key]=value}return Object.assign(result,Object.fromEntries(Object.getOwnPropertySymbols(options).map(symbol=>[symbol,Reflect.get(options,symbol)]))),result}function resolveMcpActionAuthor(args,options,action){const author=readRuntimeString(args,"author");return author!==void 0?author:action!==void 0&&LIFECYCLE_AUTHOR_ALIAS_ACTIONS.has(action)?readRuntimeString(args,"assignee")??readRuntimeString(options,"assignee"):void 0}function withResolvedAuthor(options,author){return author!==void 0&&options.author===void 0?{...options,author}:options}function hoistedMcpMutationOptions(action,args,nested){const result={},contracts=MCP_MUTATION_OPTION_CONTRACTS[action],parameters=new Set([...contracts.parameters.map(({param})=>param),...TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS.map(({param})=>param),...HOISTED_ACTION_OPTION_KEYS[action],...UNIVERSAL_READ_OUTPUT_OPTION_KEYS,"force"]);for(const param of parameters){const keys=contracts.aliases.find(contract=>contract.keys.includes(param))?.keys??[param];args[param]===void 0||keys.some(key=>nested[key]!==void 0)||(result[param]=args[param])}return result}function refuseMcpMutationValue(action,field){throw new PmCliError(`Invalid MCP ${action} value for "${field}". No changes were made.`,EXIT_CODE.USAGE,{code:"invalid_argument_value",reason:"invalid_mutation_option_value",changed:!1,field,required:`Provide valid ${action} field values and an options object; inspect the pm_${action} input schema for supported types.`})}function assertMcpMutationBooleans(action,args,options){const contracts=MCP_MUTATION_OPTION_CONTRACTS[action],parameters=[...contracts.parameters,...TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,{param:"force"}];for(const{param}of parameters){if(asRecordClone(PM_TOOL_PARAMETER_PROPERTIES[param]).type!=="boolean")continue;const invalid=(contracts.aliases.find(contract=>contract.keys.includes(param))?.keys??[param]).find(key=>options[key]!==void 0&&typeof options[key]!="boolean");invalid!==void 0&&refuseMcpMutationValue(action,invalid)}for(const key of["idOnly","fullChangedFields"])args[key]!==void 0&&typeof args[key]!="boolean"&&refuseMcpMutationValue(action,key)}function checkedMcpMutationOptions(action,args,options){args.options!==void 0&&!isRuntimeRecord(args.options)&&refuseMcpMutationValue(action,"options"),assertMcpMutationBooleans(action,args,options);for(const key of ARRAY_TO_CSV_FIELDS){const value=options[key];Array.isArray(value)&&value.some(entry=>typeof entry!="string")&&refuseMcpMutationValue(action,key)}const normalized=normalizeMcpMutationOptions(options,action),contracts=MCP_MUTATION_OPTION_CONTRACTS[action];for(const{keys,target}of contracts.strings)keys.some(key=>options[key]!==void 0)&&normalized[target]===void 0&&refuseMcpMutationValue(action,target);const invalidRepeatable=contracts.repeatables.flatMap(({keys})=>keys).find(key=>{const value=options[key];return value!==void 0&&typeof value!="string"&&(!Array.isArray(value)||value.some(entry=>typeof entry!="string"))});return invalidRepeatable!==void 0&&refuseMcpMutationValue(action,invalidRepeatable),normalized}function normalizedActionOptions(args,action,hoisted,nested){const mcpMutation=(action==="create"||action==="update")&&isMcpMutationTransportInput(args),options={...mcpMutation?hoistedMcpMutationOptions(action,args,nested):hoisted,...nested};if((action==="create"||action==="update")&&!mcpMutation){const cli=isRuntimeRecord(args.options)&&isCliMutationInput(args.options);cli||foldNullClearsIntoUnset(action,options),assertNativeMutationValueTypes(action,options,!0,cli)}return mcpMutation?checkedMcpMutationOptions(action,args,options):normalizeMcpOptionsArrays(options,action)}function literalActionOptions(action,options){return!LITERAL_MUTATION_ACTIONS.has(action??"")||isCliMutationInput(options)?options:withLiteralMutationInput(options)}function optionsWithAuthor(args,action){assertMutationItemOperand(action,args);const sourceOptions=isRuntimeRecord(args.options)?args.options:void 0,baseOptions=asRecordClone(args.options),hoistedTopLevel={},hoistKey=key=>{nestedOptionPresent(baseOptions,key)||args[key]===void 0||(hoistedTopLevel[key]=args[key])};for(const key of hoistedActionOptionKeys(action??""))hoistKey(key);action!==void 0&&isMcpMutationTransportInput(args)&&assertMcpAnnotationFileUnavailable(action,baseOptions);const options=normalizedActionOptions(args,action,hoistedTopLevel,baseOptions);if(action==="history-attest"&&isMcpMutationTransportInput(args)&&(options.output!==void 0||typeof options.verify=="string"))throw new PmCliError("MCP history attest does not accept server-local proof paths. Export the returned JSON bundle and pass that JSON object as verify.",EXIT_CODE.USAGE);const stdinPolicySource=isMcpMutationTransportInput(args)?args:sourceOptions??args,resolved=preserveTransportLiteralOptions(stdinPolicySource,withResolvedAuthor(options,resolveMcpActionAuthor(args,options,action)));return literalActionOptions(action,resolved)}function withAddNoteOption(options){if(options.addNote===void 0)return options;const next={...options};return next.note===void 0&&typeof next.addNote=="string"&&(next.note=next.addNote),delete next.addNote,next}function withFilesDiscoveryOptions(options){const next={...options};return next.discoveryNote!==void 0&&next.note===void 0&&typeof next.discoveryNote=="string"&&(next.note=next.discoveryNote),delete next.discover,delete next.discoveryNote,next}function normalizeActionName(value){const chunks=[];let lastWasSeparator=!0;for(const character of value.trim().toLowerCase()){if(character>="a"&&character<="z"||character>="0"&&character<="9"){chunks.push(character),lastWasSeparator=!1;continue}lastWasSeparator||(chunks.push("-"),lastWasSeparator=!0)}return chunks.at(-1)==="-"&&chunks.pop(),chunks.join("")}function shouldInvalidateWorkspaceContractsCacheAfterAction(action){return!WORKSPACE_CONTRACTS_CACHE_PRESERVING_ACTIONS.has(normalizeActionName(action))}function normalizeCommandPath(value){return value.trim().toLowerCase().split(/\s+/).filter(Boolean).join(" ")}function readRuntimeStringArray(value){return Array.isArray(value)?value.map(entry=>String(entry)).filter(entry=>entry.length>0):[]}function extensionOptionsFromArgs(args,options){const reserved=new Set(["action","args","author","cwd","fullChangedFields","id","options","path","query","reason","target"]),passthrough={};for(const[key,value]of Object.entries(args))reserved.has(key)||(passthrough[key]=value);const normalizedOptions={...passthrough,...options};return delete normalizedOptions.args,delete normalizedOptions.author,normalizedOptions}function withMutationCompaction(args,options){const runnerOptions=preserveTransportLiteralOptions(options??{},{...options});return{changedFields:args.fullChangedFields===!0?"full":"compact",idOnly:args.idOnly===!0,runnerOptions}}function mutationListOptions(options){return{type:readRuntimeScalarString(options,"filterType"),tag:readRuntimeScalarString(options,"filterTag"),priority:readRuntimeScalarString(options,"filterPriority"),deadlineBefore:readRuntimeScalarString(options,"filterDeadlineBefore"),deadlineAfter:readRuntimeScalarString(options,"filterDeadlineAfter"),updatedAfter:readRuntimeScalarString(options,"filterUpdatedAfter"),updatedBefore:readRuntimeScalarString(options,"filterUpdatedBefore"),createdAfter:readRuntimeScalarString(options,"filterCreatedAfter"),createdBefore:readRuntimeScalarString(options,"filterCreatedBefore"),ids:normalizeBulkIdsValue(options.ids),assignee:readRuntimeScalarString(options,"filterAssignee"),assigneeFilter:readRuntimeScalarString(options,"filterAssigneeFilter")??readRuntimeScalarString(options,"filterAssignee_filter"),parent:readRuntimeScalarString(options,"filterParent"),sprint:readRuntimeScalarString(options,"filterSprint"),release:readRuntimeScalarString(options,"filterRelease"),limit:readRuntimeScalarString(options,"limit"),offset:readRuntimeScalarString(options,"offset")}}function readGraphIdListOption(value){if(typeof value=="string"&&value.trim().length>0)return value;if(Array.isArray(value))return readRuntimeStringArray(value)}function readGraphBoundOption(value){if(typeof value=="number"&&Number.isFinite(value)||typeof value=="string"&&value.trim().length>0)return value}function graphOptionsFromFlat(options){const kind=readGraphIdListOption(options.kind),exemptIsolate=readGraphIdListOption(options.exemptIsolate),exemptIsolateType=readGraphIdListOption(options.exemptIsolateType);return{...kind===void 0?{}:{kind},maxDepth:readGraphBoundOption(options.maxDepth),limit:readGraphBoundOption(options.limit),after:readRuntimeString(options,"after"),direction:readRuntimeString(options,"direction"),maxPaths:readGraphBoundOption(options.maxPaths),sample:readGraphBoundOption(options.sample),...exemptIsolate===void 0?{}:{exemptIsolate},...exemptIsolateType===void 0?{}:{exemptIsolateType},saveBaseline:options.saveBaseline===!0,rebuild:options.rebuild===!0,clear:options.clear===!0,summary:options.summary===!0,...options.full===!0?{full:!0}:{}}}function normalizeBulkMutationListOptions(options){const normalized=normalizeListOptions(options);return options.ids!==void 0&&(normalized.ids=normalizeBulkIdsValue(options.ids)),normalized}function closeManyOptionsFromFlat(options){return{status:readRuntimeString(options,"filterStatus"),list:isRuntimeRecord(options.list)?normalizeBulkMutationListOptions(options.list):mutationListOptions(options),reason:readRuntimeString(options,"reason"),completedAt:readRuntimeString(options,"completedAt")??readRuntimeString(options,"completed_at"),resolution:readRuntimeString(options,"resolution"),expectedResult:readRuntimeString(options,"expectedResult")??readRuntimeString(options,"expected_result")??readRuntimeString(options,"expected"),actualResult:readRuntimeString(options,"actualResult")??readRuntimeString(options,"actual_result")??readRuntimeString(options,"actual"),validateClose:readRuntimeString(options,"validateClose")??readRuntimeString(options,"validate_close"),author:readRuntimeString(options,"author"),message:readRuntimeString(options,"message"),force:options.force===!0?!0:void 0,dryRun:options.dryRun===!0||options.dry_run===!0?!0:void 0,rollback:resolveCheckpointRollbackId(options.rollback),checkpoint:options.checkpoint===!1||options.noCheckpoint===!0||options.no_checkpoint===!0?!1:void 0}}const UPDATE_MANY_FLAT_CONTROL_KEYS=new Set(["filterStatus","filterType","filterTag","filterPriority","filterDeadlineBefore","filterDeadlineAfter","filterUpdatedAfter","filterUpdatedBefore","filterCreatedAfter","filterCreatedBefore","filterAssignee","filterAssigneeFilter","filterAssignee_filter","filterParent","filterSprint","filterRelease","ids","list","update","limit","offset","dryRun","dry_run","rollback","checkpoint","noCheckpoint","no_checkpoint"]);function updateManyUpdateOptionsFromFlat(options){const update={};for(const[key,value]of Object.entries(options))UPDATE_MANY_FLAT_CONTROL_KEYS.has(key)||(update[key]=value);return normalizeMcpUpdateOptions(update)}function normalizeMcpUpdateOptions(options){return normalizeMcpMutationOptions(options,"update")}function normalizeMcpMutationOptions(options,action){const normalizedInput=normalizeMcpOptionsArrays(options,action),contracts=MCP_MUTATION_OPTION_CONTRACTS[action],booleanishKeys=new Set([...contracts.parameters,...TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS].filter(({booleanish})=>booleanish===!0).map(({param})=>param));for(const{keys}of contracts.repeatables)for(const key of keys)typeof normalizedInput[key]=="string"&&(normalizedInput[key]=[normalizedInput[key]]);for(const contract of contracts.strings)for(const key of contract.keys){const value=normalizedInput[key];(typeof value=="number"&&Number.isFinite(value)||value===!1&&booleanishKeys.has(key))&&(normalizedInput[key]=String(value))}return action==="create"?{...normalizeCreateOptions(normalizedInput,{requireType:!1})}:normalizeUpdateOptions(normalizedInput)}function updateManyOptionsFromFlat(options){if(isRuntimeRecord(options.list)||isRuntimeRecord(options.update)){const updateSource=isRuntimeRecord(options.update)?options.update:updateManyUpdateOptionsFromFlat(options),normalizedUpdate=preserveTransportLiteralOptions(options,normalizeMcpUpdateOptions(updateSource));return{status:readRuntimeScalarString(options,"filterStatus"),list:isRuntimeRecord(options.list)?normalizeBulkMutationListOptions(options.list):mutationListOptions(options),update:overlayMutationStdinTokenPolicy(updateSource,normalizedUpdate),dryRun:options.dryRun===!0||options.dry_run===!0?!0:void 0,rollback:resolveCheckpointRollbackId(options.rollback),checkpoint:options.checkpoint===!1||options.noCheckpoint===!0||options.no_checkpoint===!0?!1:void 0}}return{status:readRuntimeScalarString(options,"filterStatus"),list:mutationListOptions(options),update:preserveTransportLiteralOptions(options,updateManyUpdateOptionsFromFlat(options)),dryRun:options.dryRun===!0||options.dry_run===!0?!0:void 0,rollback:resolveCheckpointRollbackId(options.rollback),checkpoint:options.checkpoint===!1||options.noCheckpoint===!0||options.no_checkpoint===!0?!1:void 0}}function hasExpectHashKey(record){return"expectHash"in record||"expect_hash"in record}function splitExpectHashInput(args){if(!hasExpectHashKey(args)&&!(isRuntimeRecord(args.options)&&hasExpectHashKey(args.options)))return{expectHash:void 0,dispatchArgs:args};const{expectHash,expect_hash:alias,...rest}=args,options=isRuntimeRecord(rest.options)?rest.options:{},{expectHash:nested,expect_hash:nestedAlias,...nestedRest}=options,supplied=[expectHash,alias,nested,nestedAlias].filter(candidate=>candidate!==void 0),merged=supplied.length>1?supplied.flatMap(candidate=>Array.isArray(candidate)?candidate:[candidate]):supplied[0],dispatchArgs=transferMutationStdinTokenPolicy(args,"options"in rest?{...rest,options:isRuntimeRecord(rest.options)?transferMutationStdinTokenPolicy(rest.options,nestedRest):rest.options}:rest);return{expectHash:merged,dispatchArgs}}export{HOISTED_ACTION_OPTION_KEYS,actionGlobalOptions,closeManyOptionsFromFlat,extensionOptionsFromArgs,graphOptionsFromFlat,isMcpMutationTransportInput,isRuntimeRecord,markMcpMutationTransportInput,mutationListOptions,mutationOptionsWithOverrides,normalizeActionName,normalizeCommandPath,normalizeMcpOptionsArrays,normalizeMcpUpdateOptions,optionsWithAuthor,parseRuntimeInteger,readRuntimeScalarString,readRuntimeScalarStringAllowBlank,readRuntimeString,readRuntimeStringArray,resolveRuntimeLimit,shouldInvalidateWorkspaceContractsCacheAfterAction,splitExpectHashInput,updateManyOptionsFromFlat,updateManyUpdateOptionsFromFlat,withAddNoteOption,withFilesDiscoveryOptions,withMutationCompaction};
2
2
  //# sourceMappingURL=runtime-input.js.map
@@ -16,6 +16,7 @@ export { createUnknownSubcommandError,type UnknownSubcommandErrorOptions,} from
16
16
  export { type ActiveExtensionHookContext,type ExtensionCommandRegistry,type ExtensionDiscoveryResult,type ExtensionHookRegistry,type ExtensionParserRegistry,type ExtensionPreflightRegistry,type ExtensionRegistrationRegistry,type ExtensionRendererRegistry,type ExtensionServiceRegistry,type FlagDefinition,type PreflightRuntimeDecision,type RegisteredExtensionCommandDefinition,type RegisteredExtensionFlagDefinitions,type RegisteredExtensionSchemaMigrationDefinition,activateExtensions,clearActiveExtensionHooks,consumeAfterCommandAffectedItems,createCoreCommandHookContext,createEmptyExtensionRegistrationRegistry,discoverExtensions,getActiveCommandResult,getActiveExtensionRegistrations,loadExtensions,projectAfterCommandItemSnapshot,recordAfterCommandAffectedItem,resetActiveExtensionRuntimeState,runActiveCommandHandler,runActiveBeforeMutationHooks,runActiveOnIndexHooks,runActiveOnReadHooks,runActiveOnWriteHooks,runActiveParserOverride,runActivePreflightOverride,runActiveServiceOverride,runAfterCommandHooks,runBeforeCommandHooks,setActiveCommandContext,setActiveCommandResult,setActiveExtensionCommands,setActiveExtensionHooks,setActiveExtensionParsers,setActiveExtensionPreflight,setActiveExtensionRegistrations,setActiveExtensionRenderers,setActiveExtensionServices,} from "../core/extensions/index.js";
17
17
  export { applyRegisteredItemFieldDefaultsAndValidation,collectRegisteredItemFieldNames,parseRegisteredItemFieldAssignments,} from "../core/extensions/item-fields.js";
18
18
  export { resolveExtensionRoots } from "../core/extensions/loader.js";
19
+ export { defaultConfigScope } from "../core/config/positional-value.js";
19
20
  export { resolveRegisteredSearchProvider,resolveRegisteredVectorStoreAdapter,} from "../core/extensions/runtime-registrations.js";
20
21
  export { isFileMissingError,pathExists,readFileIfExists,removeFileIfExists,writeFileAtomic,} from "../core/fs/fs-utils.js";
21
22
  export { normalizeBulkIdsValue,parseBulkIdsText,resolveCliBulkIdsInput,type BulkIdsFileReader,type BulkIdsInputReaders,type BulkIdsStdinReader,type BulkIdsValue,} from "../core/io/bulk-ids-input.js";
@@ -1,2 +1,2 @@
1
- (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1e571c5b-0ebf-578a-8a53-398eab70d71e")}catch{}})();import{assertSchemaPreviewSupported}from"./runtime/schema-preview.js";import{resolveLinkedResourcePositionalRecovery}from"./agent/linked-resource-recovery.js";import{parseExtensionLongFlagToken,resolveExtensionLongFlagName}from"../core/extensions/flag-definition-validation.js";import{createCheckpointId,loadMutationCheckpoint,restoreCheckpointItems,writeMutationCheckpoint}from"../core/checkpoint/mutation-checkpoint.js";import{describeFlagScalarValueFailure,flattenFlagListValue,resolveExtensionFlagValueContract,resolveFlagValueKind}from"../core/extensions/flag-value-types.js";import{createUnknownSubcommandError}from"./agent/subcommand-recovery.js";import{activateExtensions,clearActiveExtensionHooks,consumeAfterCommandAffectedItems,createCoreCommandHookContext,createEmptyExtensionRegistrationRegistry,discoverExtensions,getActiveCommandResult,getActiveExtensionRegistrations,loadExtensions,projectAfterCommandItemSnapshot,recordAfterCommandAffectedItem,resetActiveExtensionRuntimeState,runActiveCommandHandler,runActiveBeforeMutationHooks,runActiveOnIndexHooks,runActiveOnReadHooks,runActiveOnWriteHooks,runActiveParserOverride,runActivePreflightOverride,runActiveServiceOverride,runAfterCommandHooks,runBeforeCommandHooks,setActiveCommandContext,setActiveCommandResult,setActiveExtensionCommands,setActiveExtensionHooks,setActiveExtensionParsers,setActiveExtensionPreflight,setActiveExtensionRegistrations,setActiveExtensionRenderers,setActiveExtensionServices}from"../core/extensions/index.js";import{applyRegisteredItemFieldDefaultsAndValidation,collectRegisteredItemFieldNames,parseRegisteredItemFieldAssignments}from"../core/extensions/item-fields.js";import{resolveExtensionRoots}from"../core/extensions/loader.js";import{resolveRegisteredSearchProvider,resolveRegisteredVectorStoreAdapter}from"../core/extensions/runtime-registrations.js";import{isFileMissingError,pathExists,readFileIfExists,removeFileIfExists,writeFileAtomic}from"../core/fs/fs-utils.js";import{normalizeBulkIdsValue,parseBulkIdsText,resolveCliBulkIdsInput}from"../core/io/bulk-ids-input.js";import{computeHistoryDiff,patchPathToChangedField}from"../core/history/history-diff.js";import{enforceHistoryStreamPolicyForItem,enforceHistoryStreamPolicyForItems}from"../core/history/history-stream-policy.js";import{appendHistoryEntry,CURRENT_HISTORY_ITEM_HASH_VERSION,CURRENT_HISTORY_RECORD_HASH_VERSION,createHistoryEntry,hashDocument,hashDocumentForVersion,hashEmptyDocument,hashHistoryPatch,hashHistoryRecord,hashHistoryStream,resealHistoryRewrite,sealHistoryRecord,SUPPORTED_HISTORY_ITEM_HASH_VERSIONS,SUPPORTED_HISTORY_RECORD_HASH_VERSIONS,verifyHistoryRecordHash,verifyHistoryRewriteEvidence}from"../core/history/history.js";import{readHistoryEntries}from"../core/history/read.js";import{appendWorkspaceAuditEvent,appendWorkspaceHistoryChange,getWorkspaceHistoryPath,inspectWorkspaceHistoryState,mutateWorkspaceJsonWithHistory,reconcileWorkspaceJsonHistory,restoreWorkspaceJsonFromHistory,WORKSPACE_HISTORY_ID,writeWorkspaceJsonWithHistory}from"../core/history/workspace-history.js";import{normalizeReplayPatchOps,reanchorHistoryEntries,replayToCanonicalItemDocument,replayToItemDocument,toReplayDocument,verifyHistoryChain,verifyHistoryChainWithVersion}from"../core/history/replay.js";import{resolveBodyFileContent}from"../core/io/body-file.js";import{generateItemId,normalizeItemId,normalizeRawItemId}from"../core/item/id.js";import{canonicalDocument,normalizeItemMetadata,parseItemDocument,serializeItemDocument}from"../core/item/item-format.js";import{toItemRecord}from"../core/item/item-record.js";import{assertParentReferenceIsNotSelf,isPlaceholderReferenceToken,normalizeParentReferenceValue,validateMissingParentReference}from"../core/item/parent-reference-policy.js";import{applyAcceptanceCriteriaMutations,applyTagRemovals,assertNoUnknownCsvKeys,createStdinTokenResolver,looksLikeGenericKeyValueEntry,mergeAdditiveTags,parseCsvKv,parseOptionalNonNegativeInteger,parseOptionalNumber,parseTags,preserveMutationStdinTokenFields,preserveMutationStdinTokenLiterals,transferMutationStdinTokenPolicy,shouldResolveMutationStdinTokenField,shouldResolveMutationStdinTokens,splitAcceptanceCriteria}from"../core/item/parse.js";import{resolvePriority}from"../core/item/priority.js";import{withCliMutationInput,withLiteralMutationInput}from"./lifecycle/cli-input.js";import{validateSprintOrReleaseValue}from"../core/item/sprint-release-format.js";import{parseStatusFilterCsv}from"../core/item/status-filter.js";import{isTerminalStatus,normalizeStatusForRegistry,normalizeStatusInput}from"../core/item/status.js";import{COMMON_MUTATION_COMMAND_OPTION_KEYS,canonicalizeCommandOptionKey,commandOptionFlagLabel,resolveCommandOptionPolicyState,resolveItemTypeRegistry,resolveTypeDefinition,resolveTypeName,validateTypeOptions}from"../core/item/type-registry.js";import{resolveTypeSynonym}from"../core/item/type-synonyms.js";import{acquireLock,acquireLockLease}from"../core/lock/lock.js";import{printError,printResult,writeStderr,writeStdout}from"../core/output/output.js";import{renderRowsAsCsv,renderRowsAsTable}from"../core/output/tabular.js";import{parseLimit}from"../core/shared/numeric-parsers.js";import{resolveConfiguredPmPackageRoot,resolvePmCliVersion,resolvePmPackageRootFromModule}from"../core/packages/root.js";import{buildInvalidTypeError}from"../core/schema/item-types-file.js";import{collectRuntimeFilterValues,matchesRuntimeFilters}from"../core/schema/runtime-field-filters.js";import{collectRuntimeCreateFieldValues,collectRuntimeUpdateFieldValues}from"../core/schema/runtime-field-values.js";import{readRuntimeFieldOptionValue}from"../core/schema/runtime-field-values.js";import{normalizeStatusInputWithRegistry,resolveItemTypesFilePath,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,statusIsTerminal}from"../core/schema/runtime-schema.js";import{describeAllowedTransitions,evaluateTransition,resolveTypeWorkflows}from"../core/schema/type-workflows.js";import{REINDEX_LOCK_ID,shouldRunSearchRefreshInForeground}from"../core/search/background-refresh.js";import{readVectorizationStatusLedger,refreshSearchArtifactsForMutation,writeVectorizationStatusLedger}from"../core/search/cache.js";import{buildSearchCorpus,buildSemanticCorpusInput,resolveSearchCorpusFields,resolveSemanticCorpusCharacterLimit}from"../core/search/corpus.js";import{executeEmbeddingBatchesWithRetry}from"../core/search/embedding-batches.js";import{resolveEmbeddingProviders}from"../core/search/providers.js";import{resolveSettingsWithSemanticRuntimeDefaults}from"../core/search/semantic-defaults.js";import{executeVectorDelete,executeVectorReset,executeVectorUpsert,resolveVectorStores}from"../core/search/vector-stores.js";import{buildVectorizationEmbeddingIdentity,buildVectorizationEmbeddingMetadata,hasVectorizationEmbeddingIdentityChanged,hasVectorizationVectorDimensionChanged,inferConsistentVectorDimension}from"../core/search/vectorization-metadata.js";import{sentryCaptureCliError,sentryDiscardCommandSpan,sentryFinishCommandSpan,sentryFlush,sentryLogCliUsageError,sentrySetCommandContext,sentryStartCommandSpan}from"../core/sentry/helpers.js";import{ensureSentryInit,ensureSentryCommandTracing}from"../core/sentry/instrument.js";import{clearFocusedItem,getFocusedItem,setFocusedItem}from"../core/session/session-state.js";import{readAuthorEnvironment,diagnoseAgentIdentity,resolveAuthor,resolveClaimPrincipal,runWithHarnessDetectionSignals,runWithWorkspaceHarnessSignalDescriptors,BUILTIN_AGENT_PROVENANCE_ADAPTERS,listAgentProvenanceAdapters,normalizeAgentProvenanceAdapterValue,registerAgentProvenanceAdapters,writeAuthorEnvironment}from"../core/shared/author.js";import{agentSessionEnvironment,boundAgentEpisodeIdentity,runWithAgentSessionContext,resolveAgentSessionContextFromSignals}from"../core/shared/agent-session-context.js";import{evaluateMutationGuard,isMutationAction,listMutationActions,scanMutationSecrets}from"./mutation-guard.js";import{jaccardSimilarity,normalizeSimilarityText,scoreItemSimilarity,tokenizeSimilarityText}from"./similarity-scoring.js";import{inspectStaleInProgressItems,scanStaleInProgressItems}from"./governance/stale-work.js";import{CREATE_DIRECT_CLOSE_REASON_DEFAULT,EXIT_CODE,ITEM_METADATA_KEY_ORDER,SETTINGS_DEFAULTS,TYPE_TO_FOLDER,resolveTelemetryErrorCategory}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{decodeHtmlEntitiesInOptions}from"../core/shared/html-entity-decode.js";import{createLazyModule}from"../core/shared/lazy-module.js";import{levenshteinDistanceWithinLimit}from"../core/shared/levenshtein.js";import{isPureSnakeCaseAlias}from"../core/shared/option-alias-visibility.js";import{asRecordClone,asRecordOrNull,toErrorMessage,toNonEmptyStringOrUndefined}from"../core/shared/primitives.js";import{createSerialQueue}from"../core/shared/serial-queue.js";import{stableStringify,stableValueEquals}from"../core/shared/serialization.js";import{splitCommaList}from"../core/shared/split-comma-list.js";import{compareTimestampStrings,nowIso,resolveIsoOrRelative}from"../core/shared/time.js";import{migrateItemFilesToFormat}from"../core/store/item-format-migration.js";import{listAllDocumentCandidatesCached}from"../core/store/item-metadata-cache.js";import{buildItemNotFoundError,createMutationGuardSdk,deleteItem,listAllItemMetadata,listAllItemMetadataLight,locateItem,mutateItem,mutateItemWithHistoryContext,readLocatedItem}from"../core/store/item-store.js";import{isTerminalPlanMode,shouldCompletePlanOnClose}from"../core/item/plan-lifecycle.js";import{getHistoryPath,getItemPath,getSettingsPath,resolveGlobalPmRoot,resolveImplicitPmRoot,resolvePmRoot,resolveWorkspaceRoot}from"../core/store/paths.js";import{isSettingsReadFallback,persistSelectedItemFormat,readSettings,readSettingsWithMetadata,runWithConfigurationOnlySettings,writeSettings}from"../core/store/settings.js";import{readSettingsSection,settingsSectionRevision,writeSettingsSection}from"../core/store/settings-sections.js";import{maybeRunFirstUseTelemetryPrompt}from"../core/telemetry/consent.js";import{deriveTelemetryCommandResolution}from"../core/telemetry/observability.js";import{emitTelemetryErrorEvent,finishTelemetryCommand,startTelemetryCommand}from"../core/telemetry/runtime.js";import{resolveTelemetrySourceAttribution}from"../core/telemetry/policy.js";export{BUILTIN_AGENT_PROVENANCE_ADAPTERS,COMMON_MUTATION_COMMAND_OPTION_KEYS,CREATE_DIRECT_CLOSE_REASON_DEFAULT,CURRENT_HISTORY_ITEM_HASH_VERSION,CURRENT_HISTORY_RECORD_HASH_VERSION,EXIT_CODE,ITEM_METADATA_KEY_ORDER,PmCliError,REINDEX_LOCK_ID,SETTINGS_DEFAULTS,SUPPORTED_HISTORY_ITEM_HASH_VERSIONS,SUPPORTED_HISTORY_RECORD_HASH_VERSIONS,TYPE_TO_FOLDER,WORKSPACE_HISTORY_ID,acquireLock,acquireLockLease,activateExtensions,agentSessionEnvironment,appendHistoryEntry,appendWorkspaceAuditEvent,appendWorkspaceHistoryChange,applyAcceptanceCriteriaMutations,applyRegisteredItemFieldDefaultsAndValidation,applyTagRemovals,asRecordClone,asRecordOrNull,assertNoUnknownCsvKeys,assertParentReferenceIsNotSelf,assertSchemaPreviewSupported,boundAgentEpisodeIdentity,buildInvalidTypeError,buildItemNotFoundError,buildSearchCorpus,buildSemanticCorpusInput,buildVectorizationEmbeddingIdentity,buildVectorizationEmbeddingMetadata,canonicalDocument,canonicalizeCommandOptionKey,clearActiveExtensionHooks,clearFocusedItem,collectRegisteredItemFieldNames,collectRuntimeCreateFieldValues,collectRuntimeFilterValues,collectRuntimeUpdateFieldValues,commandOptionFlagLabel,compareTimestampStrings,computeHistoryDiff,consumeAfterCommandAffectedItems,createCheckpointId,createCoreCommandHookContext,createEmptyExtensionRegistrationRegistry,createHistoryEntry,createLazyModule,createMutationGuardSdk,createSerialQueue,createStdinTokenResolver,createUnknownSubcommandError,decodeHtmlEntitiesInOptions,deleteItem,deriveTelemetryCommandResolution,describeAllowedTransitions,describeFlagScalarValueFailure,diagnoseAgentIdentity,discoverExtensions,emitTelemetryErrorEvent,enforceHistoryStreamPolicyForItem,enforceHistoryStreamPolicyForItems,ensureSentryCommandTracing,ensureSentryInit,evaluateMutationGuard,evaluateTransition,executeEmbeddingBatchesWithRetry,executeVectorDelete,executeVectorReset,executeVectorUpsert,finishTelemetryCommand,flattenFlagListValue,generateItemId,getActiveCommandResult,getActiveExtensionRegistrations,getFocusedItem,getHistoryPath,getItemPath,getSettingsPath,getWorkspaceHistoryPath,hasVectorizationEmbeddingIdentityChanged,hasVectorizationVectorDimensionChanged,hashDocument,hashDocumentForVersion,hashEmptyDocument,hashHistoryPatch,hashHistoryRecord,hashHistoryStream,inferConsistentVectorDimension,inspectStaleInProgressItems,inspectWorkspaceHistoryState,isFileMissingError,isMutationAction,isPlaceholderReferenceToken,isPureSnakeCaseAlias,isSettingsReadFallback,isTerminalPlanMode,isTerminalStatus,jaccardSimilarity,levenshteinDistanceWithinLimit,listAgentProvenanceAdapters,listAllDocumentCandidatesCached,listAllItemMetadata,listAllItemMetadataLight,listMutationActions,loadExtensions,loadMutationCheckpoint,locateItem,looksLikeGenericKeyValueEntry,matchesRuntimeFilters,maybeRunFirstUseTelemetryPrompt,mergeAdditiveTags,migrateItemFilesToFormat,mutateItem,mutateItemWithHistoryContext,mutateWorkspaceJsonWithHistory,normalizeAgentProvenanceAdapterValue,normalizeBulkIdsValue,normalizeItemId,normalizeItemMetadata,normalizeParentReferenceValue,normalizeRawItemId,normalizeReplayPatchOps,normalizeSimilarityText,normalizeStatusForRegistry,normalizeStatusInput,normalizeStatusInputWithRegistry,nowIso,parseBulkIdsText,parseCsvKv,parseExtensionLongFlagToken,parseItemDocument,parseLimit,parseOptionalNonNegativeInteger,parseOptionalNumber,parseRegisteredItemFieldAssignments,parseStatusFilterCsv,parseTags,patchPathToChangedField,pathExists,persistSelectedItemFormat,preserveMutationStdinTokenFields,preserveMutationStdinTokenLiterals,printError,printResult,projectAfterCommandItemSnapshot,readAuthorEnvironment,readFileIfExists,readHistoryEntries,readLocatedItem,readRuntimeFieldOptionValue,readSettings,readSettingsSection,readSettingsWithMetadata,readVectorizationStatusLedger,reanchorHistoryEntries,reconcileWorkspaceJsonHistory,recordAfterCommandAffectedItem,refreshSearchArtifactsForMutation,registerAgentProvenanceAdapters,removeFileIfExists,renderRowsAsCsv,renderRowsAsTable,replayToCanonicalItemDocument,replayToItemDocument,resealHistoryRewrite,resetActiveExtensionRuntimeState,resolveAgentSessionContextFromSignals,resolveAuthor,resolveBodyFileContent,resolveClaimPrincipal,resolveCliBulkIdsInput,resolveCommandOptionPolicyState,resolveConfiguredPmPackageRoot,resolveEmbeddingProviders,resolveExtensionFlagValueContract,resolveExtensionLongFlagName,resolveExtensionRoots,resolveFlagValueKind,resolveGlobalPmRoot,resolveImplicitPmRoot,resolveIsoOrRelative,resolveItemTypeRegistry,resolveItemTypesFilePath,resolveLinkedResourcePositionalRecovery,resolvePmCliVersion,resolvePmPackageRootFromModule,resolvePmRoot,resolvePriority,resolveRegisteredSearchProvider,resolveRegisteredVectorStoreAdapter,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,resolveSearchCorpusFields,resolveSemanticCorpusCharacterLimit,resolveSettingsWithSemanticRuntimeDefaults,resolveTelemetryErrorCategory,resolveTelemetrySourceAttribution,resolveTypeDefinition,resolveTypeName,resolveTypeSynonym,resolveTypeWorkflows,resolveVectorStores,resolveWorkspaceRoot,restoreCheckpointItems,restoreWorkspaceJsonFromHistory,runActiveBeforeMutationHooks,runActiveCommandHandler,runActiveOnIndexHooks,runActiveOnReadHooks,runActiveOnWriteHooks,runActiveParserOverride,runActivePreflightOverride,runActiveServiceOverride,runAfterCommandHooks,runBeforeCommandHooks,runWithAgentSessionContext,runWithConfigurationOnlySettings,runWithHarnessDetectionSignals,runWithWorkspaceHarnessSignalDescriptors,scanMutationSecrets,scanStaleInProgressItems,scoreItemSimilarity,sealHistoryRecord,sentryCaptureCliError,sentryDiscardCommandSpan,sentryFinishCommandSpan,sentryFlush,sentryLogCliUsageError,sentrySetCommandContext,sentryStartCommandSpan,serializeItemDocument,setActiveCommandContext,setActiveCommandResult,setActiveExtensionCommands,setActiveExtensionHooks,setActiveExtensionParsers,setActiveExtensionPreflight,setActiveExtensionRegistrations,setActiveExtensionRenderers,setActiveExtensionServices,setFocusedItem,settingsSectionRevision,shouldCompletePlanOnClose,shouldResolveMutationStdinTokenField,shouldResolveMutationStdinTokens,shouldRunSearchRefreshInForeground,splitAcceptanceCriteria,splitCommaList,stableStringify,stableValueEquals,startTelemetryCommand,statusIsTerminal,toErrorMessage,toItemRecord,toNonEmptyStringOrUndefined,toReplayDocument,tokenizeSimilarityText,transferMutationStdinTokenPolicy,validateMissingParentReference,validateSprintOrReleaseValue,validateTypeOptions,verifyHistoryChain,verifyHistoryChainWithVersion,verifyHistoryRecordHash,verifyHistoryRewriteEvidence,withCliMutationInput,withLiteralMutationInput,writeAuthorEnvironment,writeFileAtomic,writeMutationCheckpoint,writeSettings,writeSettingsSection,writeStderr,writeStdout,writeVectorizationStatusLedger,writeWorkspaceJsonWithHistory};
1
+ (function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="79bb744c-f468-5333-b39a-552bf8639096")}catch{}})();import{assertSchemaPreviewSupported}from"./runtime/schema-preview.js";import{resolveLinkedResourcePositionalRecovery}from"./agent/linked-resource-recovery.js";import{parseExtensionLongFlagToken,resolveExtensionLongFlagName}from"../core/extensions/flag-definition-validation.js";import{createCheckpointId,loadMutationCheckpoint,restoreCheckpointItems,writeMutationCheckpoint}from"../core/checkpoint/mutation-checkpoint.js";import{describeFlagScalarValueFailure,flattenFlagListValue,resolveExtensionFlagValueContract,resolveFlagValueKind}from"../core/extensions/flag-value-types.js";import{createUnknownSubcommandError}from"./agent/subcommand-recovery.js";import{activateExtensions,clearActiveExtensionHooks,consumeAfterCommandAffectedItems,createCoreCommandHookContext,createEmptyExtensionRegistrationRegistry,discoverExtensions,getActiveCommandResult,getActiveExtensionRegistrations,loadExtensions,projectAfterCommandItemSnapshot,recordAfterCommandAffectedItem,resetActiveExtensionRuntimeState,runActiveCommandHandler,runActiveBeforeMutationHooks,runActiveOnIndexHooks,runActiveOnReadHooks,runActiveOnWriteHooks,runActiveParserOverride,runActivePreflightOverride,runActiveServiceOverride,runAfterCommandHooks,runBeforeCommandHooks,setActiveCommandContext,setActiveCommandResult,setActiveExtensionCommands,setActiveExtensionHooks,setActiveExtensionParsers,setActiveExtensionPreflight,setActiveExtensionRegistrations,setActiveExtensionRenderers,setActiveExtensionServices}from"../core/extensions/index.js";import{applyRegisteredItemFieldDefaultsAndValidation,collectRegisteredItemFieldNames,parseRegisteredItemFieldAssignments}from"../core/extensions/item-fields.js";import{resolveExtensionRoots}from"../core/extensions/loader.js";import{defaultConfigScope}from"../core/config/positional-value.js";import{resolveRegisteredSearchProvider,resolveRegisteredVectorStoreAdapter}from"../core/extensions/runtime-registrations.js";import{isFileMissingError,pathExists,readFileIfExists,removeFileIfExists,writeFileAtomic}from"../core/fs/fs-utils.js";import{normalizeBulkIdsValue,parseBulkIdsText,resolveCliBulkIdsInput}from"../core/io/bulk-ids-input.js";import{computeHistoryDiff,patchPathToChangedField}from"../core/history/history-diff.js";import{enforceHistoryStreamPolicyForItem,enforceHistoryStreamPolicyForItems}from"../core/history/history-stream-policy.js";import{appendHistoryEntry,CURRENT_HISTORY_ITEM_HASH_VERSION,CURRENT_HISTORY_RECORD_HASH_VERSION,createHistoryEntry,hashDocument,hashDocumentForVersion,hashEmptyDocument,hashHistoryPatch,hashHistoryRecord,hashHistoryStream,resealHistoryRewrite,sealHistoryRecord,SUPPORTED_HISTORY_ITEM_HASH_VERSIONS,SUPPORTED_HISTORY_RECORD_HASH_VERSIONS,verifyHistoryRecordHash,verifyHistoryRewriteEvidence}from"../core/history/history.js";import{readHistoryEntries}from"../core/history/read.js";import{appendWorkspaceAuditEvent,appendWorkspaceHistoryChange,getWorkspaceHistoryPath,inspectWorkspaceHistoryState,mutateWorkspaceJsonWithHistory,reconcileWorkspaceJsonHistory,restoreWorkspaceJsonFromHistory,WORKSPACE_HISTORY_ID,writeWorkspaceJsonWithHistory}from"../core/history/workspace-history.js";import{normalizeReplayPatchOps,reanchorHistoryEntries,replayToCanonicalItemDocument,replayToItemDocument,toReplayDocument,verifyHistoryChain,verifyHistoryChainWithVersion}from"../core/history/replay.js";import{resolveBodyFileContent}from"../core/io/body-file.js";import{generateItemId,normalizeItemId,normalizeRawItemId}from"../core/item/id.js";import{canonicalDocument,normalizeItemMetadata,parseItemDocument,serializeItemDocument}from"../core/item/item-format.js";import{toItemRecord}from"../core/item/item-record.js";import{assertParentReferenceIsNotSelf,isPlaceholderReferenceToken,normalizeParentReferenceValue,validateMissingParentReference}from"../core/item/parent-reference-policy.js";import{applyAcceptanceCriteriaMutations,applyTagRemovals,assertNoUnknownCsvKeys,createStdinTokenResolver,looksLikeGenericKeyValueEntry,mergeAdditiveTags,parseCsvKv,parseOptionalNonNegativeInteger,parseOptionalNumber,parseTags,preserveMutationStdinTokenFields,preserveMutationStdinTokenLiterals,transferMutationStdinTokenPolicy,shouldResolveMutationStdinTokenField,shouldResolveMutationStdinTokens,splitAcceptanceCriteria}from"../core/item/parse.js";import{resolvePriority}from"../core/item/priority.js";import{withCliMutationInput,withLiteralMutationInput}from"./lifecycle/cli-input.js";import{validateSprintOrReleaseValue}from"../core/item/sprint-release-format.js";import{parseStatusFilterCsv}from"../core/item/status-filter.js";import{isTerminalStatus,normalizeStatusForRegistry,normalizeStatusInput}from"../core/item/status.js";import{COMMON_MUTATION_COMMAND_OPTION_KEYS,canonicalizeCommandOptionKey,commandOptionFlagLabel,resolveCommandOptionPolicyState,resolveItemTypeRegistry,resolveTypeDefinition,resolveTypeName,validateTypeOptions}from"../core/item/type-registry.js";import{resolveTypeSynonym}from"../core/item/type-synonyms.js";import{acquireLock,acquireLockLease}from"../core/lock/lock.js";import{printError,printResult,writeStderr,writeStdout}from"../core/output/output.js";import{renderRowsAsCsv,renderRowsAsTable}from"../core/output/tabular.js";import{parseLimit}from"../core/shared/numeric-parsers.js";import{resolveConfiguredPmPackageRoot,resolvePmCliVersion,resolvePmPackageRootFromModule}from"../core/packages/root.js";import{buildInvalidTypeError}from"../core/schema/item-types-file.js";import{collectRuntimeFilterValues,matchesRuntimeFilters}from"../core/schema/runtime-field-filters.js";import{collectRuntimeCreateFieldValues,collectRuntimeUpdateFieldValues}from"../core/schema/runtime-field-values.js";import{readRuntimeFieldOptionValue}from"../core/schema/runtime-field-values.js";import{normalizeStatusInputWithRegistry,resolveItemTypesFilePath,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,statusIsTerminal}from"../core/schema/runtime-schema.js";import{describeAllowedTransitions,evaluateTransition,resolveTypeWorkflows}from"../core/schema/type-workflows.js";import{REINDEX_LOCK_ID,shouldRunSearchRefreshInForeground}from"../core/search/background-refresh.js";import{readVectorizationStatusLedger,refreshSearchArtifactsForMutation,writeVectorizationStatusLedger}from"../core/search/cache.js";import{buildSearchCorpus,buildSemanticCorpusInput,resolveSearchCorpusFields,resolveSemanticCorpusCharacterLimit}from"../core/search/corpus.js";import{executeEmbeddingBatchesWithRetry}from"../core/search/embedding-batches.js";import{resolveEmbeddingProviders}from"../core/search/providers.js";import{resolveSettingsWithSemanticRuntimeDefaults}from"../core/search/semantic-defaults.js";import{executeVectorDelete,executeVectorReset,executeVectorUpsert,resolveVectorStores}from"../core/search/vector-stores.js";import{buildVectorizationEmbeddingIdentity,buildVectorizationEmbeddingMetadata,hasVectorizationEmbeddingIdentityChanged,hasVectorizationVectorDimensionChanged,inferConsistentVectorDimension}from"../core/search/vectorization-metadata.js";import{sentryCaptureCliError,sentryDiscardCommandSpan,sentryFinishCommandSpan,sentryFlush,sentryLogCliUsageError,sentrySetCommandContext,sentryStartCommandSpan}from"../core/sentry/helpers.js";import{ensureSentryInit,ensureSentryCommandTracing}from"../core/sentry/instrument.js";import{clearFocusedItem,getFocusedItem,setFocusedItem}from"../core/session/session-state.js";import{readAuthorEnvironment,diagnoseAgentIdentity,resolveAuthor,resolveClaimPrincipal,runWithHarnessDetectionSignals,runWithWorkspaceHarnessSignalDescriptors,BUILTIN_AGENT_PROVENANCE_ADAPTERS,listAgentProvenanceAdapters,normalizeAgentProvenanceAdapterValue,registerAgentProvenanceAdapters,writeAuthorEnvironment}from"../core/shared/author.js";import{agentSessionEnvironment,boundAgentEpisodeIdentity,runWithAgentSessionContext,resolveAgentSessionContextFromSignals}from"../core/shared/agent-session-context.js";import{evaluateMutationGuard,isMutationAction,listMutationActions,scanMutationSecrets}from"./mutation-guard.js";import{jaccardSimilarity,normalizeSimilarityText,scoreItemSimilarity,tokenizeSimilarityText}from"./similarity-scoring.js";import{inspectStaleInProgressItems,scanStaleInProgressItems}from"./governance/stale-work.js";import{CREATE_DIRECT_CLOSE_REASON_DEFAULT,EXIT_CODE,ITEM_METADATA_KEY_ORDER,SETTINGS_DEFAULTS,TYPE_TO_FOLDER,resolveTelemetryErrorCategory}from"../core/shared/constants.js";import{PmCliError}from"../core/shared/errors.js";import{decodeHtmlEntitiesInOptions}from"../core/shared/html-entity-decode.js";import{createLazyModule}from"../core/shared/lazy-module.js";import{levenshteinDistanceWithinLimit}from"../core/shared/levenshtein.js";import{isPureSnakeCaseAlias}from"../core/shared/option-alias-visibility.js";import{asRecordClone,asRecordOrNull,toErrorMessage,toNonEmptyStringOrUndefined}from"../core/shared/primitives.js";import{createSerialQueue}from"../core/shared/serial-queue.js";import{stableStringify,stableValueEquals}from"../core/shared/serialization.js";import{splitCommaList}from"../core/shared/split-comma-list.js";import{compareTimestampStrings,nowIso,resolveIsoOrRelative}from"../core/shared/time.js";import{migrateItemFilesToFormat}from"../core/store/item-format-migration.js";import{listAllDocumentCandidatesCached}from"../core/store/item-metadata-cache.js";import{buildItemNotFoundError,createMutationGuardSdk,deleteItem,listAllItemMetadata,listAllItemMetadataLight,locateItem,mutateItem,mutateItemWithHistoryContext,readLocatedItem}from"../core/store/item-store.js";import{isTerminalPlanMode,shouldCompletePlanOnClose}from"../core/item/plan-lifecycle.js";import{getHistoryPath,getItemPath,getSettingsPath,resolveGlobalPmRoot,resolveImplicitPmRoot,resolvePmRoot,resolveWorkspaceRoot}from"../core/store/paths.js";import{isSettingsReadFallback,persistSelectedItemFormat,readSettings,readSettingsWithMetadata,runWithConfigurationOnlySettings,writeSettings}from"../core/store/settings.js";import{readSettingsSection,settingsSectionRevision,writeSettingsSection}from"../core/store/settings-sections.js";import{maybeRunFirstUseTelemetryPrompt}from"../core/telemetry/consent.js";import{deriveTelemetryCommandResolution}from"../core/telemetry/observability.js";import{emitTelemetryErrorEvent,finishTelemetryCommand,startTelemetryCommand}from"../core/telemetry/runtime.js";import{resolveTelemetrySourceAttribution}from"../core/telemetry/policy.js";export{BUILTIN_AGENT_PROVENANCE_ADAPTERS,COMMON_MUTATION_COMMAND_OPTION_KEYS,CREATE_DIRECT_CLOSE_REASON_DEFAULT,CURRENT_HISTORY_ITEM_HASH_VERSION,CURRENT_HISTORY_RECORD_HASH_VERSION,EXIT_CODE,ITEM_METADATA_KEY_ORDER,PmCliError,REINDEX_LOCK_ID,SETTINGS_DEFAULTS,SUPPORTED_HISTORY_ITEM_HASH_VERSIONS,SUPPORTED_HISTORY_RECORD_HASH_VERSIONS,TYPE_TO_FOLDER,WORKSPACE_HISTORY_ID,acquireLock,acquireLockLease,activateExtensions,agentSessionEnvironment,appendHistoryEntry,appendWorkspaceAuditEvent,appendWorkspaceHistoryChange,applyAcceptanceCriteriaMutations,applyRegisteredItemFieldDefaultsAndValidation,applyTagRemovals,asRecordClone,asRecordOrNull,assertNoUnknownCsvKeys,assertParentReferenceIsNotSelf,assertSchemaPreviewSupported,boundAgentEpisodeIdentity,buildInvalidTypeError,buildItemNotFoundError,buildSearchCorpus,buildSemanticCorpusInput,buildVectorizationEmbeddingIdentity,buildVectorizationEmbeddingMetadata,canonicalDocument,canonicalizeCommandOptionKey,clearActiveExtensionHooks,clearFocusedItem,collectRegisteredItemFieldNames,collectRuntimeCreateFieldValues,collectRuntimeFilterValues,collectRuntimeUpdateFieldValues,commandOptionFlagLabel,compareTimestampStrings,computeHistoryDiff,consumeAfterCommandAffectedItems,createCheckpointId,createCoreCommandHookContext,createEmptyExtensionRegistrationRegistry,createHistoryEntry,createLazyModule,createMutationGuardSdk,createSerialQueue,createStdinTokenResolver,createUnknownSubcommandError,decodeHtmlEntitiesInOptions,defaultConfigScope,deleteItem,deriveTelemetryCommandResolution,describeAllowedTransitions,describeFlagScalarValueFailure,diagnoseAgentIdentity,discoverExtensions,emitTelemetryErrorEvent,enforceHistoryStreamPolicyForItem,enforceHistoryStreamPolicyForItems,ensureSentryCommandTracing,ensureSentryInit,evaluateMutationGuard,evaluateTransition,executeEmbeddingBatchesWithRetry,executeVectorDelete,executeVectorReset,executeVectorUpsert,finishTelemetryCommand,flattenFlagListValue,generateItemId,getActiveCommandResult,getActiveExtensionRegistrations,getFocusedItem,getHistoryPath,getItemPath,getSettingsPath,getWorkspaceHistoryPath,hasVectorizationEmbeddingIdentityChanged,hasVectorizationVectorDimensionChanged,hashDocument,hashDocumentForVersion,hashEmptyDocument,hashHistoryPatch,hashHistoryRecord,hashHistoryStream,inferConsistentVectorDimension,inspectStaleInProgressItems,inspectWorkspaceHistoryState,isFileMissingError,isMutationAction,isPlaceholderReferenceToken,isPureSnakeCaseAlias,isSettingsReadFallback,isTerminalPlanMode,isTerminalStatus,jaccardSimilarity,levenshteinDistanceWithinLimit,listAgentProvenanceAdapters,listAllDocumentCandidatesCached,listAllItemMetadata,listAllItemMetadataLight,listMutationActions,loadExtensions,loadMutationCheckpoint,locateItem,looksLikeGenericKeyValueEntry,matchesRuntimeFilters,maybeRunFirstUseTelemetryPrompt,mergeAdditiveTags,migrateItemFilesToFormat,mutateItem,mutateItemWithHistoryContext,mutateWorkspaceJsonWithHistory,normalizeAgentProvenanceAdapterValue,normalizeBulkIdsValue,normalizeItemId,normalizeItemMetadata,normalizeParentReferenceValue,normalizeRawItemId,normalizeReplayPatchOps,normalizeSimilarityText,normalizeStatusForRegistry,normalizeStatusInput,normalizeStatusInputWithRegistry,nowIso,parseBulkIdsText,parseCsvKv,parseExtensionLongFlagToken,parseItemDocument,parseLimit,parseOptionalNonNegativeInteger,parseOptionalNumber,parseRegisteredItemFieldAssignments,parseStatusFilterCsv,parseTags,patchPathToChangedField,pathExists,persistSelectedItemFormat,preserveMutationStdinTokenFields,preserveMutationStdinTokenLiterals,printError,printResult,projectAfterCommandItemSnapshot,readAuthorEnvironment,readFileIfExists,readHistoryEntries,readLocatedItem,readRuntimeFieldOptionValue,readSettings,readSettingsSection,readSettingsWithMetadata,readVectorizationStatusLedger,reanchorHistoryEntries,reconcileWorkspaceJsonHistory,recordAfterCommandAffectedItem,refreshSearchArtifactsForMutation,registerAgentProvenanceAdapters,removeFileIfExists,renderRowsAsCsv,renderRowsAsTable,replayToCanonicalItemDocument,replayToItemDocument,resealHistoryRewrite,resetActiveExtensionRuntimeState,resolveAgentSessionContextFromSignals,resolveAuthor,resolveBodyFileContent,resolveClaimPrincipal,resolveCliBulkIdsInput,resolveCommandOptionPolicyState,resolveConfiguredPmPackageRoot,resolveEmbeddingProviders,resolveExtensionFlagValueContract,resolveExtensionLongFlagName,resolveExtensionRoots,resolveFlagValueKind,resolveGlobalPmRoot,resolveImplicitPmRoot,resolveIsoOrRelative,resolveItemTypeRegistry,resolveItemTypesFilePath,resolveLinkedResourcePositionalRecovery,resolvePmCliVersion,resolvePmPackageRootFromModule,resolvePmRoot,resolvePriority,resolveRegisteredSearchProvider,resolveRegisteredVectorStoreAdapter,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,resolveSearchCorpusFields,resolveSemanticCorpusCharacterLimit,resolveSettingsWithSemanticRuntimeDefaults,resolveTelemetryErrorCategory,resolveTelemetrySourceAttribution,resolveTypeDefinition,resolveTypeName,resolveTypeSynonym,resolveTypeWorkflows,resolveVectorStores,resolveWorkspaceRoot,restoreCheckpointItems,restoreWorkspaceJsonFromHistory,runActiveBeforeMutationHooks,runActiveCommandHandler,runActiveOnIndexHooks,runActiveOnReadHooks,runActiveOnWriteHooks,runActiveParserOverride,runActivePreflightOverride,runActiveServiceOverride,runAfterCommandHooks,runBeforeCommandHooks,runWithAgentSessionContext,runWithConfigurationOnlySettings,runWithHarnessDetectionSignals,runWithWorkspaceHarnessSignalDescriptors,scanMutationSecrets,scanStaleInProgressItems,scoreItemSimilarity,sealHistoryRecord,sentryCaptureCliError,sentryDiscardCommandSpan,sentryFinishCommandSpan,sentryFlush,sentryLogCliUsageError,sentrySetCommandContext,sentryStartCommandSpan,serializeItemDocument,setActiveCommandContext,setActiveCommandResult,setActiveExtensionCommands,setActiveExtensionHooks,setActiveExtensionParsers,setActiveExtensionPreflight,setActiveExtensionRegistrations,setActiveExtensionRenderers,setActiveExtensionServices,setFocusedItem,settingsSectionRevision,shouldCompletePlanOnClose,shouldResolveMutationStdinTokenField,shouldResolveMutationStdinTokens,shouldRunSearchRefreshInForeground,splitAcceptanceCriteria,splitCommaList,stableStringify,stableValueEquals,startTelemetryCommand,statusIsTerminal,toErrorMessage,toItemRecord,toNonEmptyStringOrUndefined,toReplayDocument,tokenizeSimilarityText,transferMutationStdinTokenPolicy,validateMissingParentReference,validateSprintOrReleaseValue,validateTypeOptions,verifyHistoryChain,verifyHistoryChainWithVersion,verifyHistoryRecordHash,verifyHistoryRewriteEvidence,withCliMutationInput,withLiteralMutationInput,writeAuthorEnvironment,writeFileAtomic,writeMutationCheckpoint,writeSettings,writeSettingsSection,writeStderr,writeStdout,writeVectorizationStatusLedger,writeWorkspaceJsonWithHistory};
2
2
  //# sourceMappingURL=runtime-primitives.js.map
@@ -7,6 +7,7 @@ import { type ContractsCommandOptions,type ContractsResult } from "./cli-contrac
7
7
  import type { PmCreateActionOptions,PmUpdateActionOptions } from "./cli-contracts/typed-action-inputs.js";
8
8
  import type { CommentsCommandOptions,CommentsResult } from "./comments.js";
9
9
  import type { ConfigCommandOptions,ConfigResult } from "./config.js";
10
+ import type { ExpectedItemRevision,ExpectedItemRevisionsOutcome,ItemRevision } from "./lifecycle/item-revision.js";
10
11
  import type { DepsCommandOptions,DepsResult } from "./dependencies.js";
11
12
  import type { DocsCommandOptions,DocsResult } from "./docs.js";
12
13
  import { type DuplicatesCommandOptions,type DuplicatesResult } from "./duplicates.js";
@@ -155,6 +156,15 @@ status:(transactionId:string) => Promise<ItemTransactionStatus | undefined>;
155
156
  abandon:(transactionId:string,options:Omit<AbandonItemTransactionOptions,"pmRoot" | "author" | "transactionId">) => Promise<ItemTransactionStatus>;
156
157
  supersede:(transactionId:string,newId:string,options:Omit<AbandonItemTransactionOptions,"pmRoot" | "author" | "transactionId" | "supersededBy">) => Promise<ItemTransactionStatus>;
157
158
  };
159
+ /** Read an item's current revision (`item_hash`) inside this client's extension context, without writing. */
160
+ readItemRevision(id:string):Promise<ItemRevision>;
161
+ /**
162
+ * Run SDK calls so every locked write to an expected item refuses with
163
+ * `item_revision_conflict` unless the item is still at the declared revision.
164
+ * Targets resolve inside this client's extension context, so extension item
165
+ * types and fields bind exactly as `get` reads them.
166
+ */
167
+ withExpectedItemRevisions<T>(expectations:readonly ExpectedItemRevision[],operation:() => Promise<T>):Promise<ExpectedItemRevisionsOutcome<T>>;
158
168
  /** Return the same context snapshot produced by `pm context`. */
159
169
  context<Options extends ReadOptions<ContextOptions> = InitialReadOptions>(options?:Options):ReadPromise<ContextResult & PmReadOutputMetadata,Options>;
160
170
  /** Read every item through the scalar-only metadata cache without materializing heavy collections or bodies. */