@unbrained/pm-cli 2026.8.28 → 2026.8.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +24 -0
  3. package/dist/cli-bundle/bundle-manifest.json +125 -125
  4. package/dist/cli-bundle/chunks/{chunk-E73FDIWT.js → chunk-2MKLQL2E.js} +2 -2
  5. package/dist/cli-bundle/chunks/{chunk-NTXZHRKA.js → chunk-2UETTHY6.js} +46 -46
  6. package/dist/cli-bundle/chunks/{chunk-FEVBFFCQ.js → chunk-3TEF3HM5.js} +2 -2
  7. package/dist/cli-bundle/chunks/{chunk-BY2FQ2NI.js → chunk-7SKMLSMX.js} +2 -2
  8. package/dist/cli-bundle/chunks/chunk-7X6OZEIV.js +34 -0
  9. package/dist/cli-bundle/chunks/{chunk-M7OXRQE3.js → chunk-CMIEDWAY.js} +50 -50
  10. package/dist/cli-bundle/chunks/{chunk-XWEQGHHG.js → chunk-GNWPTEBW.js} +64 -61
  11. package/dist/cli-bundle/chunks/{chunk-X2RROGZE.js → chunk-MTTKAUBX.js} +2 -2
  12. package/dist/cli-bundle/chunks/chunk-N6OR6FAR.js +13 -0
  13. package/dist/cli-bundle/chunks/{chunk-NBCBFVZI.js → chunk-TGNAA66W.js} +2 -2
  14. package/dist/cli-bundle/chunks/{chunk-QE6WQXFO.js → chunk-WS2GJQVG.js} +2 -2
  15. package/dist/cli-bundle/chunks/{register-list-query-J35ZPQQ5.js → register-list-query-OMKJ5ONN.js} +2 -2
  16. package/dist/cli-bundle/chunks/{register-mutation-J6XJJOGU.js → register-mutation-QBSNCOY3.js} +2 -2
  17. package/dist/cli-bundle/chunks/{register-operations-AE3JEMFT.js → register-operations-UC77FQZC.js} +2 -2
  18. package/dist/cli-bundle/chunks/{register-setup-OQERLLWE.js → register-setup-GLQ5SYV3.js} +2 -2
  19. package/dist/cli-bundle/focused-chunks/{chunk-HC7ODMH3.js → chunk-3AVAWVZA.js} +2 -2
  20. package/dist/cli-bundle/focused-chunks/chunk-3UMBF26I.js +158 -0
  21. package/dist/cli-bundle/focused-chunks/{chunk-YVVZ3LQ6.js → chunk-73EDXGYE.js} +16 -15
  22. package/dist/cli-bundle/focused-chunks/chunk-AXZ5AJAF.js +50 -0
  23. package/dist/cli-bundle/focused-chunks/{chunk-AHAM2HAU.js → chunk-G6PATS5E.js} +3 -3
  24. package/dist/cli-bundle/focused-chunks/chunk-RKOKG43G.js +2 -0
  25. package/dist/cli-bundle/focused-chunks/chunk-TDK3OCX3.js +2 -0
  26. package/dist/cli-bundle/focused-chunks/{chunk-FC2AXLB5.js → chunk-XXOWRJZ5.js} +2 -2
  27. package/dist/cli-bundle/main.js +2 -2
  28. package/dist/cli-bundle/sdk-contracts.js +1 -1
  29. package/dist/cli-bundle/sdk-core.js +31 -32
  30. package/dist/cli-bundle/sdk-governance.js +1 -1
  31. package/dist/cli-bundle/sdk-graph.js +1 -1
  32. package/dist/cli-bundle/sdk-merge.js +34 -32
  33. package/dist/cli-bundle/sdk-query.js +1 -1
  34. package/dist/cli-bundle/sdk-runtime.js +1 -1
  35. package/dist/cli-bundle/sdk-testing.js +1 -1
  36. package/dist/cli-bundle/sdk.js +8 -8
  37. package/dist/core/diagnostics/remediation.js +16 -6
  38. package/dist/core/history/drift-scan.d.ts +2 -0
  39. package/dist/core/history/drift-scan.js +72 -36
  40. package/dist/core/history/history.d.ts +3 -3
  41. package/dist/core/history/history.js +5 -5
  42. package/dist/core/history/replay.d.ts +1 -1
  43. package/dist/core/history/replay.js +50 -19
  44. package/dist/core/item/actionability.d.ts +7 -1
  45. package/dist/core/item/actionability.js +44 -11
  46. package/dist/core/item/dependency-reference.d.ts +10 -0
  47. package/dist/core/item/dependency-reference.js +21 -0
  48. package/dist/core/item/parse.d.ts +4 -0
  49. package/dist/core/item/parse.js +38 -16
  50. package/dist/core/shared/author.js +69 -17
  51. package/dist/sdk/dependency-provenance.d.ts +51 -2
  52. package/dist/sdk/dependency-provenance.js +91 -7
  53. package/dist/sdk/extension/install-sources.d.ts +1 -7
  54. package/dist/sdk/extension/install-sources.js +94 -33
  55. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +50 -14
  56. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +62 -26
  57. package/dist/sdk/governance/health.js +86 -22
  58. package/dist/sdk/governance/validate-history-drift.js +5 -2
  59. package/dist/sdk/graph/assembly.js +51 -22
  60. package/dist/sdk/history-repair.d.ts +1 -1
  61. package/dist/sdk/history-repair.js +20 -10
  62. package/dist/sdk/lifecycle/create.js +43 -19
  63. package/dist/sdk/linked-artifacts.js +21 -31
  64. package/dist/sdk/merge/reconcile.js +3 -16
  65. package/dist/sdk/query/next.d.ts +6 -0
  66. package/dist/sdk/query/next.js +7 -2
  67. package/dist/sdk/test/entry.d.ts +1 -1
  68. package/dist/sdk/test/entry.js +5 -9
  69. package/dist/sdk/test/execution.d.ts +3 -0
  70. package/dist/sdk/test/execution.js +54 -13
  71. package/docs/CONTEXT_RECOVERY_PRIMITIVES.md +67 -0
  72. package/docs/MERGE_SAFETY.md +23 -10
  73. package/docs/README.md +1 -0
  74. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +10 -4
  75. package/marketplace.json +2 -2
  76. package/package.json +7 -7
  77. package/packages/pm-beads/package.json +1 -1
  78. package/packages/pm-calendar/package.json +1 -1
  79. package/packages/pm-command-kit/package.json +1 -1
  80. package/packages/pm-digital-twin/package.json +1 -1
  81. package/packages/pm-governance-audit/package.json +1 -1
  82. package/packages/pm-guide-shell/package.json +1 -1
  83. package/packages/pm-kanban/package.json +1 -1
  84. package/packages/pm-lifecycle-hooks/package.json +1 -1
  85. package/packages/pm-linked-test-adapters/package.json +1 -1
  86. package/packages/pm-search-advanced/package.json +1 -1
  87. package/packages/pm-templates/package.json +1 -1
  88. package/packages/pm-todos/package.json +1 -1
  89. package/packages/pm-vcs/package.json +1 -1
  90. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  91. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  92. package/sdk/public-surface.json +100 -11
  93. package/dist/cli-bundle/chunks/chunk-TIQ6AMH2.js +0 -13
  94. package/dist/cli-bundle/chunks/chunk-XRVVYRRO.js +0 -35
  95. package/dist/cli-bundle/focused-chunks/chunk-4ZDRZYYJ.js +0 -50
  96. package/dist/cli-bundle/focused-chunks/chunk-XDPYBQCF.js +0 -156
  97. package/dist/cli-bundle/focused-chunks/chunk-Y5A7SJJ7.js +0 -2
  98. package/dist/cli-bundle/focused-chunks/chunk-YJLDHJOD.js +0 -2
@@ -1377,6 +1377,35 @@
1377
1377
  ],
1378
1378
  "package_version": "2026.8.27",
1379
1379
  "reason": "Add optional transcript terminal-value assertions while preserving version-two parser compatibility"
1380
+ },
1381
+ {
1382
+ "changes": [
1383
+ "signature ./sdk:CURRENT_HISTORY_ITEM_HASH_VERSION",
1384
+ "signature ./sdk:MergeReceiptProofResult",
1385
+ "signature ./sdk:NextBlockerRef",
1386
+ "signature ./sdk:ResolvedBlocker",
1387
+ "signature ./sdk:SUPPORTED_HISTORY_ITEM_HASH_VERSIONS",
1388
+ "signature ./sdk/graph:ResolvedBlocker",
1389
+ "signature ./sdk/query:NextBlockerRef",
1390
+ "signature ./sdk/runtime:NextBlockerRef"
1391
+ ],
1392
+ "package_version": "2026.8.28",
1393
+ "reason": "Adopt history hash epoch v3, proof-source-neutral merge receipts, and first-class external blocker projections."
1394
+ },
1395
+ {
1396
+ "changes": [
1397
+ "error code merge_reconcile_discards_require_acceptance removed"
1398
+ ],
1399
+ "package_version": "2026.8.28",
1400
+ "reason": "Replace force-only merge decision acceptance with exact receipt proof and add structured bare-comma refusal diagnostics."
1401
+ },
1402
+ {
1403
+ "changes": [
1404
+ "signature ./sdk:resolveItemBlockers",
1405
+ "signature ./sdk/graph:resolveItemBlockers"
1406
+ ],
1407
+ "package_version": "2026.8.28",
1408
+ "reason": "Broaden resolveItemBlockers input to accept optional id and updated_at context already consumed by blocker projection"
1380
1409
  }
1381
1410
  ],
1382
1411
  "entrypoints": {
@@ -4729,7 +4758,7 @@
4729
4758
  "classification": "advanced_export",
4730
4759
  "kind": "value",
4731
4760
  "name": "CURRENT_HISTORY_ITEM_HASH_VERSION",
4732
- "signature": "2"
4761
+ "signature": "3"
4733
4762
  },
4734
4763
  {
4735
4764
  "classification": "supported",
@@ -6513,6 +6542,12 @@
6513
6542
  "name": "ExtensionTrustMode",
6514
6543
  "signature": "export type ExtensionTrustMode = (typeof EXTENSION_TRUST_MODES)[number];"
6515
6544
  },
6545
+ {
6546
+ "classification": "advanced_export",
6547
+ "kind": "value",
6548
+ "name": "EXTERNAL_DEPENDENCY_RESOLUTION_STATUSES",
6549
+ "signature": "readonly [\"open\", \"closed\", \"unknown\"]"
6550
+ },
6516
6551
  {
6517
6552
  "classification": "advanced_export",
6518
6553
  "kind": "value",
@@ -6525,6 +6560,36 @@
6525
6560
  "name": "EXTERNAL_DEPENDENCY_SOURCE_KIND_ALIAS",
6526
6561
  "signature": "\"external\""
6527
6562
  },
6563
+ {
6564
+ "classification": "advanced_export",
6565
+ "kind": "interface",
6566
+ "name": "ExternalDependencyResolution",
6567
+ "signature": "export interface ExternalDependencyResolution { id: string; status: ExternalDependencyResolutionStatus; resolved: boolean; title: string | null; source: string; checked_at: string; resolver: string; }"
6568
+ },
6569
+ {
6570
+ "classification": "advanced_export",
6571
+ "kind": "interface",
6572
+ "name": "ExternalDependencyResolutionOptions",
6573
+ "signature": "export interface ExternalDependencyResolutionOptions { now?: () => string; }"
6574
+ },
6575
+ {
6576
+ "classification": "advanced_export",
6577
+ "kind": "type",
6578
+ "name": "ExternalDependencyResolutionStatus",
6579
+ "signature": "export type ExternalDependencyResolutionStatus = (typeof EXTERNAL_DEPENDENCY_RESOLUTION_STATUSES)[number];"
6580
+ },
6581
+ {
6582
+ "classification": "advanced_export",
6583
+ "kind": "interface",
6584
+ "name": "ExternalDependencyResolver",
6585
+ "signature": "export interface ExternalDependencyResolver { name: string; supports(reference: string): boolean; resolve(reference: string): Promise<ExternalDependencyResolverResult | null>; }"
6586
+ },
6587
+ {
6588
+ "classification": "advanced_export",
6589
+ "kind": "interface",
6590
+ "name": "ExternalDependencyResolverResult",
6591
+ "signature": "export interface ExternalDependencyResolverResult { status: ExternalDependencyResolutionStatus; title?: string; source?: string; checkedAt?: string; }"
6592
+ },
6528
6593
  {
6529
6594
  "classification": "advanced_export",
6530
6595
  "kind": "function",
@@ -8037,6 +8102,12 @@
8037
8102
  "name": "isErrnoError",
8038
8103
  "signature": "(error: unknown) => error is { code?: unknown; } | calls: (error: unknown) => error is { code?: unknown; }"
8039
8104
  },
8105
+ {
8106
+ "classification": "advanced_export",
8107
+ "kind": "function",
8108
+ "name": "isExternalDependencyReference",
8109
+ "signature": "(target: string | undefined) => boolean | calls: (target: string | undefined) => boolean"
8110
+ },
8040
8111
  {
8041
8112
  "classification": "advanced_export",
8042
8113
  "kind": "function",
@@ -9115,7 +9186,7 @@
9115
9186
  "classification": "advanced_export",
9116
9187
  "kind": "interface",
9117
9188
  "name": "MergeReceiptProofResult",
9118
- "signature": "export interface MergeReceiptProofResult { trusted: boolean; reason: \"trusted_clone_local_driver_evidence\" | \"git_workspace_unavailable\" | \"item_path_unavailable\" | \"no_item_receipts\" | \"no_receipt_set_proves_snapshot\"; receipt_ids: string[]; }"
9189
+ "signature": "export interface MergeReceiptProofResult { trusted: boolean; reason: \"trusted_merge_driver_hash_evidence\" | \"git_workspace_unavailable\" | \"item_path_unavailable\" | \"no_item_receipts\" | \"no_receipt_set_proves_snapshot\"; receipt_ids: string[]; }"
9119
9190
  },
9120
9191
  {
9121
9192
  "classification": "supported",
@@ -9277,7 +9348,7 @@
9277
9348
  "classification": "supported",
9278
9349
  "kind": "interface",
9279
9350
  "name": "NextBlockerRef",
9280
- "signature": "export interface NextBlockerRef { id: string; title: string | null; status: ItemStatus | null; }"
9351
+ "signature": "export interface NextBlockerRef { id: string; title: string | null; status: ItemStatus | null; external?: boolean; blocked_since?: string; resolver?: string | null; }"
9281
9352
  },
9282
9353
  {
9283
9354
  "classification": "supported",
@@ -13401,6 +13472,12 @@
13401
13472
  "name": "RegisteredVectorStoreAdapterExpectation",
13402
13473
  "signature": "export type RegisteredVectorStoreAdapterExpectation = NamedRegistrationExpectation<\"adapter\", string, { extensionName?: string; }>;"
13403
13474
  },
13475
+ {
13476
+ "classification": "advanced_export",
13477
+ "kind": "function",
13478
+ "name": "registerExternalDependencyResolver",
13479
+ "signature": "(resolver: ExternalDependencyResolver) => () => void | calls: (resolver: ExternalDependencyResolver) => () => void"
13480
+ },
13404
13481
  {
13405
13482
  "classification": "supported",
13406
13483
  "kind": "function",
@@ -14347,7 +14424,7 @@
14347
14424
  "classification": "supported",
14348
14425
  "kind": "interface",
14349
14426
  "name": "ResolvedBlocker",
14350
- "signature": "export interface ResolvedBlocker { id: string; title: string | null; status: ItemStatus | null; resolved: boolean; }"
14427
+ "signature": "export interface ResolvedBlocker { id: string; title: string | null; status: ItemStatus | null; resolved: boolean; external?: boolean; blocked_since?: string; resolver?: string | null; }"
14351
14428
  },
14352
14429
  {
14353
14430
  "classification": "advanced_export",
@@ -14403,6 +14480,12 @@
14403
14480
  "name": "resolveExtensionRoots",
14404
14481
  "signature": "(pmRoot: string, cwd?: string) => { global: string; project: string; } | calls: (pmRoot: string, cwd?: string) => { global: string; project: string; }"
14405
14482
  },
14483
+ {
14484
+ "classification": "advanced_export",
14485
+ "kind": "function",
14486
+ "name": "resolveExternalDependencyReference",
14487
+ "signature": "(reference: string, options?: ExternalDependencyResolutionOptions) => Promise<ExternalDependencyResolution | null> | calls: (reference: string, options?: ExternalDependencyResolutionOptions) => Promise<ExternalDependencyResolution | null>"
14488
+ },
14406
14489
  {
14407
14490
  "classification": "advanced_export",
14408
14491
  "kind": "function",
@@ -14461,7 +14544,7 @@
14461
14544
  "classification": "supported",
14462
14545
  "kind": "function",
14463
14546
  "name": "resolveItemBlockers",
14464
- "signature": "(item: Pick<ItemMetadata, \"blocked_by\" | \"dependencies\">, itemsById: Map<string, ItemMetadata>, statusRegistry: RuntimeStatusRegistry) => ResolvedBlocker[] | calls: (item: Pick<ItemMetadata, \"blocked_by\" | \"dependencies\">, itemsById: Map<string, ItemMetadata>, statusRegistry: RuntimeStatusRegistry) => ResolvedBlocker[]"
14547
+ "signature": "(item: Pick<ItemMetadata, \"blocked_by\" | \"dependencies\"> & Partial<Pick<ItemMetadata, \"id\" | \"updated_at\">>, itemsById: Map<string, ItemMetadata>, statusRegistry: RuntimeStatusRegistry) => ResolvedBlocker[] | calls: (item: Pick<ItemMetadata, \"blocked_by\" | \"dependencies\"> & Partial<Pick<ItemMetadata, \"id\" | \"updated_at\">>, itemsById: Map<string, ItemMetadata>, statusRegistry: RuntimeStatusRegistry) => ResolvedBlocker[]"
14465
14548
  },
14466
14549
  {
14467
14550
  "classification": "advanced_export",
@@ -17011,7 +17094,7 @@
17011
17094
  "classification": "advanced_export",
17012
17095
  "kind": "value",
17013
17096
  "name": "SUPPORTED_HISTORY_ITEM_HASH_VERSIONS",
17014
- "signature": "readonly [1, 2]"
17097
+ "signature": "readonly [1, 2, 3]"
17015
17098
  },
17016
17099
  {
17017
17100
  "classification": "advanced_export",
@@ -26101,13 +26184,13 @@
26101
26184
  "classification": "supported",
26102
26185
  "kind": "interface",
26103
26186
  "name": "ResolvedBlocker",
26104
- "signature": "export interface ResolvedBlocker { id: string; title: string | null; status: ItemStatus | null; resolved: boolean; }"
26187
+ "signature": "export interface ResolvedBlocker { id: string; title: string | null; status: ItemStatus | null; resolved: boolean; external?: boolean; blocked_since?: string; resolver?: string | null; }"
26105
26188
  },
26106
26189
  {
26107
26190
  "classification": "supported",
26108
26191
  "kind": "function",
26109
26192
  "name": "resolveItemBlockers",
26110
- "signature": "(item: Pick<ItemMetadata, \"blocked_by\" | \"dependencies\">, itemsById: Map<string, ItemMetadata>, statusRegistry: RuntimeStatusRegistry) => ResolvedBlocker[] | calls: (item: Pick<ItemMetadata, \"blocked_by\" | \"dependencies\">, itemsById: Map<string, ItemMetadata>, statusRegistry: RuntimeStatusRegistry) => ResolvedBlocker[]"
26193
+ "signature": "(item: Pick<ItemMetadata, \"blocked_by\" | \"dependencies\"> & Partial<Pick<ItemMetadata, \"id\" | \"updated_at\">>, itemsById: Map<string, ItemMetadata>, statusRegistry: RuntimeStatusRegistry) => ResolvedBlocker[] | calls: (item: Pick<ItemMetadata, \"blocked_by\" | \"dependencies\"> & Partial<Pick<ItemMetadata, \"id\" | \"updated_at\">>, itemsById: Map<string, ItemMetadata>, statusRegistry: RuntimeStatusRegistry) => ResolvedBlocker[]"
26111
26194
  },
26112
26195
  {
26113
26196
  "classification": "supported",
@@ -27415,7 +27498,7 @@
27415
27498
  "classification": "supported",
27416
27499
  "kind": "interface",
27417
27500
  "name": "NextBlockerRef",
27418
- "signature": "export interface NextBlockerRef { id: string; title: string | null; status: ItemStatus | null; }"
27501
+ "signature": "export interface NextBlockerRef { id: string; title: string | null; status: ItemStatus | null; external?: boolean; blocked_since?: string; resolver?: string | null; }"
27419
27502
  },
27420
27503
  {
27421
27504
  "classification": "supported",
@@ -29281,7 +29364,7 @@
29281
29364
  "classification": "supported",
29282
29365
  "kind": "interface",
29283
29366
  "name": "NextBlockerRef",
29284
- "signature": "export interface NextBlockerRef { id: string; title: string | null; status: ItemStatus | null; }"
29367
+ "signature": "export interface NextBlockerRef { id: string; title: string | null; status: ItemStatus | null; external?: boolean; blocked_since?: string; resolver?: string | null; }"
29285
29368
  },
29286
29369
  {
29287
29370
  "classification": "supported",
@@ -31553,6 +31636,7 @@
31553
31636
  "annotation_transposed_subcommand",
31554
31637
  "append_empty_body",
31555
31638
  "assurance_registry_invalid",
31639
+ "bare_comma_entry_ambiguous",
31556
31640
  "body_file_conflicts_with_body",
31557
31641
  "body_file_missing_path",
31558
31642
  "body_file_unreadable",
@@ -31638,6 +31722,7 @@
31638
31722
  "history_drift_merge_receipt",
31639
31723
  "history_drift_missing_stream",
31640
31724
  "history_drift_unreadable_stream",
31725
+ "history_drift_version_skew",
31641
31726
  "history_merge_conflict_markers_detected",
31642
31727
  "history_stream_over_compact_threshold",
31643
31728
  "history_target_out_of_range",
@@ -31708,7 +31793,6 @@
31708
31793
  "merge_git_config_unwritable",
31709
31794
  "merge_receipt_evidence_invalid",
31710
31795
  "merge_receipts_pending",
31711
- "merge_reconcile_discards_require_acceptance",
31712
31796
  "merge_reconcile_receipt_evidence_untrusted",
31713
31797
  "merge_root_not_found",
31714
31798
  "missing_allowed_values",
@@ -31721,6 +31805,7 @@
31721
31805
  "missing_observation",
31722
31806
  "missing_observed_signature",
31723
31807
  "missing_parameter_alias",
31808
+ "missing_positive_execution_receipt",
31724
31809
  "missing_probe",
31725
31810
  "missing_required_argument",
31726
31811
  "missing_required_option",
@@ -31737,6 +31822,7 @@
31737
31822
  "no_update_fields",
31738
31823
  "no_version_bounds_declared",
31739
31824
  "non_refusal_exit",
31825
+ "npm_pack_json_shape_unsupported",
31740
31826
  "npm_package_archive_missing",
31741
31827
  "npm_package_archive_unsafe",
31742
31828
  "npm_package_not_found",
@@ -31772,6 +31858,8 @@
31772
31858
  "reopen_reason_required",
31773
31859
  "reopen_receipt_missing",
31774
31860
  "reopen_target_status_invalid",
31861
+ "reported_zero_passes",
31862
+ "reported_zero_tests",
31775
31863
  "reserved_item_field",
31776
31864
  "retry_failed",
31777
31865
  "schema_migration_input_required",
@@ -31840,6 +31928,7 @@
31840
31928
  "validate_history_drift_hash_mismatches",
31841
31929
  "validate_history_drift_missing_streams",
31842
31930
  "validate_history_drift_unreadable_streams",
31931
+ "validate_history_drift_version_skews",
31843
31932
  "validate_history_unknown_author_events",
31844
31933
  "validate_lifecycle_active_closure_like_metadata",
31845
31934
  "validate_lifecycle_active_terminal_parent",