@unbrained/pm-cli 2026.10.4 → 2026.10.6

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 (751) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +37 -1
  3. package/dist/cli/after-command-context-usage.js +1 -1
  4. package/dist/cli/argv-utils.js +1 -1
  5. package/dist/cli/bootstrap-args.js +1 -1
  6. package/dist/cli/bundle-integrity.js +2 -2
  7. package/dist/cli/command-namespaces.js +1 -1
  8. package/dist/cli/commander-usage.d.ts +1 -1
  9. package/dist/cli/commander-usage.js +7 -4
  10. package/dist/cli/commands/annotations/comments.js +1 -1
  11. package/dist/cli/commands/annotations/docs.js +1 -1
  12. package/dist/cli/commands/annotations/files.js +1 -1
  13. package/dist/cli/commands/annotations/learnings.js +1 -1
  14. package/dist/cli/commands/annotations/notes.js +1 -1
  15. package/dist/cli/commands/extension/describe.js +1 -1
  16. package/dist/cli/commands/extension/extension.js +1 -1
  17. package/dist/cli/commands/extension/scaffold.js +1 -1
  18. package/dist/cli/commands/extension/shared.js +1 -1
  19. package/dist/cli/commands/governance/gc.js +1 -1
  20. package/dist/cli/commands/governance/health.js +1 -1
  21. package/dist/cli/commands/governance/telemetry.js +1 -1
  22. package/dist/cli/commands/governance/validate.js +1 -1
  23. package/dist/cli/commands/history/activity.js +1 -1
  24. package/dist/cli/commands/history/history-compact.js +1 -1
  25. package/dist/cli/commands/history/history-redact.js +1 -1
  26. package/dist/cli/commands/history/history-repair.js +1 -1
  27. package/dist/cli/commands/history/history.js +1 -1
  28. package/dist/cli/commands/history/restore.js +1 -1
  29. package/dist/cli/commands/lifecycle/append.js +1 -1
  30. package/dist/cli/commands/lifecycle/claim.js +1 -1
  31. package/dist/cli/commands/lifecycle/close-many.js +1 -1
  32. package/dist/cli/commands/lifecycle/close.js +1 -1
  33. package/dist/cli/commands/lifecycle/copy.js +1 -1
  34. package/dist/cli/commands/lifecycle/create.js +1 -1
  35. package/dist/cli/commands/lifecycle/delete.js +1 -1
  36. package/dist/cli/commands/lifecycle/focus.js +1 -1
  37. package/dist/cli/commands/lifecycle/plan.js +1 -1
  38. package/dist/cli/commands/lifecycle/update-many.js +1 -1
  39. package/dist/cli/commands/lifecycle/update.js +1 -1
  40. package/dist/cli/commands/query/aggregate.js +1 -1
  41. package/dist/cli/commands/query/context.js +1 -1
  42. package/dist/cli/commands/query/deps.js +1 -1
  43. package/dist/cli/commands/query/duplicates.js +1 -1
  44. package/dist/cli/commands/query/eval.js +1 -1
  45. package/dist/cli/commands/query/get.js +1 -1
  46. package/dist/cli/commands/query/graph.js +1 -1
  47. package/dist/cli/commands/query/list.js +1 -1
  48. package/dist/cli/commands/query/next.js +1 -1
  49. package/dist/cli/commands/query/search.js +1 -1
  50. package/dist/cli/commands/query/stats.js +1 -1
  51. package/dist/cli/commands/test/test-all.js +1 -1
  52. package/dist/cli/commands/test/test-runs.js +1 -1
  53. package/dist/cli/commands/test/test.js +1 -1
  54. package/dist/cli/commands/workspace/config.js +1 -1
  55. package/dist/cli/commands/workspace/contracts.js +1 -1
  56. package/dist/cli/commands/workspace/init.js +1 -1
  57. package/dist/cli/commands/workspace/merge.js +1 -1
  58. package/dist/cli/commands/workspace/profile.js +1 -1
  59. package/dist/cli/commands/workspace/schema.js +1 -1
  60. package/dist/cli/commands/workspace/upgrade.js +1 -1
  61. package/dist/cli/context-intent-invocation.js +1 -1
  62. package/dist/cli/description-stdin.js +1 -1
  63. package/dist/cli/error-guidance.js +3 -1
  64. package/dist/cli/extension-command-help.js +5 -3
  65. package/dist/cli/extension-command-options.js +1 -1
  66. package/dist/cli/extension-recovery.js +1 -1
  67. package/dist/cli/help-content.js +5 -2
  68. package/dist/cli/help-json-payload.js +6 -3
  69. package/dist/cli/invocation-profile.js +2 -2
  70. package/dist/cli/main.js +5 -5
  71. package/dist/cli/migration-gates.js +1 -1
  72. package/dist/cli/option-values.js +1 -1
  73. package/dist/cli/public.js +1 -1
  74. package/dist/cli/register-annotations.js +1 -1
  75. package/dist/cli/register-assurance.js +1 -1
  76. package/dist/cli/register-files-lookup.js +1 -1
  77. package/dist/cli/register-history-activity.js +1 -1
  78. package/dist/cli/register-history-author.js +1 -1
  79. package/dist/cli/register-history-maintenance.js +2 -2
  80. package/dist/cli/register-list-query.js +10 -10
  81. package/dist/cli/register-mutation-options.js +1 -1
  82. package/dist/cli/register-mutation.js +2 -2
  83. package/dist/cli/register-operations.js +1 -1
  84. package/dist/cli/register-setup.js +1 -1
  85. package/dist/cli/register-structured-mutation.js +1 -1
  86. package/dist/cli/registration-helpers.js +1 -1
  87. package/dist/cli/runtime/activation.js +1 -1
  88. package/dist/cli/runtime/invocation-options.js +1 -1
  89. package/dist/cli/runtime/projection-retry.js +1 -1
  90. package/dist/cli/runtime/selection.js +1 -1
  91. package/dist/cli/runtime/telemetry-outcome.js +1 -1
  92. package/dist/cli/runtime-compatibility-boundary.js +4 -4
  93. package/dist/cli/schema/registration.js +2 -2
  94. package/dist/cli/schema-registration-helpers.js +1 -1
  95. package/dist/cli/search-refresh.js +1 -1
  96. package/dist/cli/stats-analytics-json.js +1 -1
  97. package/dist/cli/telemetry-flush.js +1 -1
  98. package/dist/cli-bundle/bundle-manifest.json +163 -163
  99. package/dist/cli-bundle/chunks/{chunk-SMKHR6BM.js → chunk-25EW53VO.js} +89 -88
  100. package/dist/cli-bundle/chunks/chunk-3CCVTV6Q.js +8 -0
  101. package/dist/cli-bundle/chunks/chunk-3REXBTST.js +3 -0
  102. package/dist/cli-bundle/chunks/chunk-4WB55TBC.js +80 -0
  103. package/dist/cli-bundle/chunks/{chunk-7CE2DJMA.js → chunk-6STTPXOC.js} +2 -2
  104. package/dist/cli-bundle/chunks/chunk-ATB4ZZBQ.js +20 -0
  105. package/dist/cli-bundle/chunks/chunk-D4G43LBV.js +238 -0
  106. package/dist/cli-bundle/chunks/chunk-K6D6DMRT.js +31 -0
  107. package/dist/cli-bundle/chunks/chunk-KIRHWPZB.js +2 -0
  108. package/dist/cli-bundle/chunks/chunk-O67BH435.js +6 -0
  109. package/dist/cli-bundle/chunks/chunk-R7CG2DB7.js +2 -0
  110. package/dist/cli-bundle/chunks/chunk-RJHLD64E.js +3 -0
  111. package/dist/cli-bundle/chunks/chunk-TUKO5NF7.js +2 -0
  112. package/dist/cli-bundle/chunks/chunk-UZ7BIUCI.js +2 -0
  113. package/dist/cli-bundle/chunks/{chunk-GZMWISWW.js → chunk-XJD47LUH.js} +3 -3
  114. package/dist/cli-bundle/chunks/{register-list-query-QBGXO5JJ.js → register-list-query-53WYLNZT.js} +11 -11
  115. package/dist/cli-bundle/chunks/register-mutation-34XXUBVI.js +20 -0
  116. package/dist/cli-bundle/chunks/register-operations-WANO6EIM.js +2 -0
  117. package/dist/cli-bundle/chunks/register-setup-WT37UPBQ.js +2 -0
  118. package/dist/cli-bundle/focused-chunks/chunk-6KFKQD2D.js +165 -0
  119. package/dist/cli-bundle/focused-chunks/chunk-FOHRPFIT.js +2 -0
  120. package/dist/cli-bundle/focused-chunks/chunk-GRQXL5G5.js +8 -0
  121. package/dist/cli-bundle/focused-chunks/{chunk-467EW5RL.js → chunk-JZ4WGUVH.js} +3 -3
  122. package/dist/cli-bundle/focused-chunks/chunk-NM3PM6O6.js +3 -0
  123. package/dist/cli-bundle/focused-chunks/chunk-OT7HK7SG.js +2 -0
  124. package/dist/cli-bundle/focused-chunks/{chunk-Q6DJ5DFQ.js → chunk-PCLU34KB.js} +2 -2
  125. package/dist/cli-bundle/focused-chunks/{chunk-HFAW3FJQ.js → chunk-PSXFFQFT.js} +2 -2
  126. package/dist/cli-bundle/focused-chunks/chunk-QQIE4L42.js +2 -0
  127. package/dist/cli-bundle/focused-chunks/chunk-RPUNVKXK.js +2 -0
  128. package/dist/cli-bundle/focused-chunks/chunk-RXSVJPZ7.js +3 -0
  129. package/dist/cli-bundle/focused-chunks/chunk-SPN5QTZ3.js +30 -0
  130. package/dist/cli-bundle/focused-chunks/chunk-SUZJNPGB.js +6 -0
  131. package/dist/cli-bundle/focused-chunks/chunk-W4BG5HHS.js +2 -0
  132. package/dist/cli-bundle/focused-chunks/chunk-Y5HXFDTZ.js +20 -0
  133. package/dist/cli-bundle/focused-chunks/chunk-ZK5SOOPC.js +75 -0
  134. package/dist/cli-bundle/focused-chunks/chunk-ZQK2XUSS.js +12 -0
  135. package/dist/cli-bundle/main.js +25 -25
  136. package/dist/cli-bundle/sdk-authoring.js +1 -1
  137. package/dist/cli-bundle/sdk-contracts.js +2 -2
  138. package/dist/cli-bundle/sdk-core.js +25 -24
  139. package/dist/cli-bundle/sdk-governance.js +1 -1
  140. package/dist/cli-bundle/sdk-graph.js +1 -1
  141. package/dist/cli-bundle/sdk-merge.js +55 -55
  142. package/dist/cli-bundle/sdk-query.js +1 -1
  143. package/dist/cli-bundle/sdk-runtime.js +1 -1
  144. package/dist/cli-bundle/sdk-testing.js +1 -1
  145. package/dist/cli-bundle/sdk.js +10 -10
  146. package/dist/cli.js +1 -1
  147. package/dist/core/checkpoint/checkpoint-gc.js +1 -1
  148. package/dist/core/checkpoint/mutation-checkpoint.js +2 -2
  149. package/dist/core/config/nested-settings.js +1 -1
  150. package/dist/core/config/positional-value.js +1 -1
  151. package/dist/core/diagnostics/remediation.js +1 -1
  152. package/dist/core/extensions/activation-summary-markdown.js +2 -1
  153. package/dist/core/extensions/activation-summary.js +1 -1
  154. package/dist/core/extensions/activation-transaction.js +1 -1
  155. package/dist/core/extensions/capability-usage.js +1 -1
  156. package/dist/core/extensions/command-hook-context.js +1 -1
  157. package/dist/core/extensions/command-metadata-contract.js +1 -1
  158. package/dist/core/extensions/command-visibility-tier.js +1 -1
  159. package/dist/core/extensions/contribution-inventory.js +1 -1
  160. package/dist/core/extensions/exporter-output-contract.js +1 -1
  161. package/dist/core/extensions/extension-candidate.js +1 -1
  162. package/dist/core/extensions/extension-capability-aliases.js +1 -1
  163. package/dist/core/extensions/extension-hook-runtime.js +1 -1
  164. package/dist/core/extensions/extension-policy.js +1 -1
  165. package/dist/core/extensions/extension-registries.js +1 -1
  166. package/dist/core/extensions/extension-runtime-helpers.js +1 -1
  167. package/dist/core/extensions/extension-types.d.ts +2 -0
  168. package/dist/core/extensions/extension-types.js +1 -1
  169. package/dist/core/extensions/flag-definition-validation.js +1 -1
  170. package/dist/core/extensions/flag-value-types.js +1 -1
  171. package/dist/core/extensions/index.js +1 -1
  172. package/dist/core/extensions/item-field-types.js +1 -1
  173. package/dist/core/extensions/item-fields.js +1 -1
  174. package/dist/core/extensions/loader.js +1 -1
  175. package/dist/core/extensions/manifest-parser.js +1 -1
  176. package/dist/core/extensions/manifest-schema.js +1 -1
  177. package/dist/core/extensions/module-graph-snapshot.js +1 -1
  178. package/dist/core/extensions/preflight-ownership.js +1 -1
  179. package/dist/core/extensions/registration-contracts.js +1 -1
  180. package/dist/core/extensions/registration-validation.js +1 -1
  181. package/dist/core/extensions/registration-values.js +1 -1
  182. package/dist/core/extensions/reserved-host-flags.js +1 -1
  183. package/dist/core/extensions/runtime-registrations.js +1 -1
  184. package/dist/core/extensions/service-ownership.js +1 -1
  185. package/dist/core/extensions/version-compat.js +1 -1
  186. package/dist/core/fs/atomic-create.js +1 -1
  187. package/dist/core/fs/fs-utils.js +2 -2
  188. package/dist/core/fs/host-environment-errors.js +1 -1
  189. package/dist/core/fs/index.js +1 -1
  190. package/dist/core/fs/path-utils.js +1 -1
  191. package/dist/core/governance/content-fields.js +1 -1
  192. package/dist/core/governance/issue-codes.js +1 -1
  193. package/dist/core/governance/metadata-coverage.js +1 -1
  194. package/dist/core/history/digest.js +1 -1
  195. package/dist/core/history/drift-cache.js +3 -3
  196. package/dist/core/history/drift-scan.d.ts +4 -0
  197. package/dist/core/history/drift-scan.js +1 -1
  198. package/dist/core/history/event-classification.js +1 -1
  199. package/dist/core/history/event-index.js +8 -7
  200. package/dist/core/history/history-compact-bulk.js +1 -1
  201. package/dist/core/history/history-diff.js +1 -1
  202. package/dist/core/history/history-rewrite.js +1 -1
  203. package/dist/core/history/history-storage-stats.js +1 -1
  204. package/dist/core/history/history-stream-policy.js +1 -1
  205. package/dist/core/history/history.js +2 -2
  206. package/dist/core/history/identity.js +1 -1
  207. package/dist/core/history/index.js +1 -1
  208. package/dist/core/history/operation-contract.js +1 -1
  209. package/dist/core/history/projection.js +1 -1
  210. package/dist/core/history/read.js +1 -1
  211. package/dist/core/history/replay.js +2 -1
  212. package/dist/core/history/tombstone.js +1 -1
  213. package/dist/core/history/version-address.js +1 -1
  214. package/dist/core/history/workspace-history.js +2 -2
  215. package/dist/core/io/body-file.js +1 -1
  216. package/dist/core/io/bulk-ids-input.js +2 -1
  217. package/dist/core/item/actionability.js +1 -1
  218. package/dist/core/item/dependency-reference.js +1 -1
  219. package/dist/core/item/id.js +1 -1
  220. package/dist/core/item/index.js +1 -1
  221. package/dist/core/item/item-format-version.js +1 -1
  222. package/dist/core/item/item-format.js +6 -4
  223. package/dist/core/item/item-record.js +1 -1
  224. package/dist/core/item/item-type-definition.js +1 -1
  225. package/dist/core/item/parent-reference-policy.js +1 -1
  226. package/dist/core/item/parse.js +8 -2
  227. package/dist/core/item/plan-lifecycle.js +1 -1
  228. package/dist/core/item/priority.js +1 -1
  229. package/dist/core/item/sprint-release-format.js +1 -1
  230. package/dist/core/item/status-filter.js +1 -1
  231. package/dist/core/item/status.js +1 -1
  232. package/dist/core/item/toon-decode.js +1 -1
  233. package/dist/core/item/type-registry.js +1 -1
  234. package/dist/core/item/type-synonyms.js +1 -1
  235. package/dist/core/lock/index.js +1 -1
  236. package/dist/core/lock/lock-gc.js +1 -1
  237. package/dist/core/lock/lock.js +3 -3
  238. package/dist/core/output/mutation-projection.js +1 -1
  239. package/dist/core/output/output-control.js +1 -1
  240. package/dist/core/output/output.js +22 -10
  241. package/dist/core/output/query-summary.js +1 -1
  242. package/dist/core/output/tabular.js +3 -1
  243. package/dist/core/packages/manifest.js +1 -1
  244. package/dist/core/packages/root.js +1 -1
  245. package/dist/core/policy/workflow-policy-schema.js +1 -1
  246. package/dist/core/policy/workflow-policy-store.js +1 -1
  247. package/dist/core/policy/workflow-policy.js +1 -1
  248. package/dist/core/profile/profile-describe.js +1 -1
  249. package/dist/core/profile/profile-lint.js +1 -1
  250. package/dist/core/profile/profile-plan.js +1 -1
  251. package/dist/core/profile/profile-presets.js +25 -1
  252. package/dist/core/reproducibility/context.js +1 -1
  253. package/dist/core/schema/fields-file.js +2 -2
  254. package/dist/core/schema/item-types-file.js +2 -2
  255. package/dist/core/schema/runtime-field-filters.js +1 -1
  256. package/dist/core/schema/runtime-field-values.js +1 -1
  257. package/dist/core/schema/runtime-schema.js +2 -2
  258. package/dist/core/schema/status-defs-file.js +2 -2
  259. package/dist/core/schema/status-token.js +1 -1
  260. package/dist/core/schema/type-inference.js +1 -1
  261. package/dist/core/schema/type-presets.js +1 -1
  262. package/dist/core/schema/type-workflows.js +1 -1
  263. package/dist/core/search/background-refresh.js +2 -2
  264. package/dist/core/search/bm25.js +1 -1
  265. package/dist/core/search/cache.js +2 -2
  266. package/dist/core/search/corpus.js +1 -1
  267. package/dist/core/search/embedding-batches.js +1 -1
  268. package/dist/core/search/eval-thresholds.js +1 -1
  269. package/dist/core/search/eval.js +1 -1
  270. package/dist/core/search/http-client.js +1 -1
  271. package/dist/core/search/providers.js +1 -1
  272. package/dist/core/search/relevance.js +1 -1
  273. package/dist/core/search/semantic-defaults.js +1 -1
  274. package/dist/core/search/staleness.js +1 -1
  275. package/dist/core/search/vector-stores.js +2 -2
  276. package/dist/core/search/vectorization-metadata.js +1 -1
  277. package/dist/core/sentry/helpers.js +1 -1
  278. package/dist/core/sentry/instrument.js +1 -1
  279. package/dist/core/session/session-state.js +1 -1
  280. package/dist/core/shared/agent-session-context.js +1 -1
  281. package/dist/core/shared/author.js +5 -1
  282. package/dist/core/shared/command-line.js +1 -1
  283. package/dist/core/shared/command-types.js +1 -1
  284. package/dist/core/shared/conflict-markers.js +1 -1
  285. package/dist/core/shared/constants.js +1 -1
  286. package/dist/core/shared/errors.js +1 -1
  287. package/dist/core/shared/html-entity-decode.js +1 -1
  288. package/dist/core/shared/index.js +1 -1
  289. package/dist/core/shared/item-metadata-contract.js +1 -1
  290. package/dist/core/shared/lazy-module.js +1 -1
  291. package/dist/core/shared/levenshtein.js +1 -1
  292. package/dist/core/shared/memo.js +1 -1
  293. package/dist/core/shared/numeric-parsers.js +1 -1
  294. package/dist/core/shared/option-alias-visibility.js +1 -1
  295. package/dist/core/shared/primitives.js +1 -1
  296. package/dist/core/shared/secret-rules.js +1 -1
  297. package/dist/core/shared/serial-queue.js +1 -1
  298. package/dist/core/shared/serialization.js +1 -1
  299. package/dist/core/shared/split-comma-list.js +1 -1
  300. package/dist/core/shared/text-normalization.js +1 -1
  301. package/dist/core/shared/time.js +2 -1
  302. package/dist/core/store/index.js +1 -1
  303. package/dist/core/store/item-format-migration.js +1 -1
  304. package/dist/core/store/item-metadata-cache.js +1 -1
  305. package/dist/core/store/item-metadata-query-index.js +7 -7
  306. package/dist/core/store/item-metadata-read-work.js +1 -1
  307. package/dist/core/store/item-store.js +1 -1
  308. package/dist/core/store/paths.js +1 -1
  309. package/dist/core/store/settings-concurrency.js +1 -1
  310. package/dist/core/store/settings-read-cache.js +1 -1
  311. package/dist/core/store/settings-validator.js +1 -1
  312. package/dist/core/store/settings.js +3 -3
  313. package/dist/core/store/tracker-preflight.js +1 -1
  314. package/dist/core/telemetry/consent.js +2 -2
  315. package/dist/core/telemetry/observability.js +1 -1
  316. package/dist/core/telemetry/policy.js +1 -1
  317. package/dist/core/telemetry/read-sampling.js +2 -2
  318. package/dist/core/telemetry/runtime.js +9 -5
  319. package/dist/core/test/background-runs.js +3 -3
  320. package/dist/core/test/item-test-run-tracking.js +1 -1
  321. package/dist/core/test/run-selectors.js +1 -1
  322. package/dist/core/validate/estimate-defaults.js +1 -1
  323. package/dist/core/validate/fix-planning.js +1 -1
  324. package/dist/core/validate/linked-artifact-reference.js +1 -1
  325. package/dist/core/validate/missing-by-type.js +1 -1
  326. package/dist/core/validate/missing-link-owners.js +1 -1
  327. package/dist/core/validate/stale-file-classification.js +1 -1
  328. package/dist/mcp/http-server.js +6 -4
  329. package/dist/mcp/legacy-adapter.js +1 -1
  330. package/dist/mcp/runtime-capabilities.js +1 -1
  331. package/dist/mcp/server.js +4 -4
  332. package/dist/mcp/tool-definitions.js +1 -1
  333. package/dist/sdk/actionability.js +1 -1
  334. package/dist/sdk/agent/closed-domain-contracts.js +1 -1
  335. package/dist/sdk/agent/command-recovery.js +1 -1
  336. package/dist/sdk/agent/command-suggestions.js +1 -1
  337. package/dist/sdk/agent/create-option-policy.js +1 -1
  338. package/dist/sdk/agent/identity-config.js +1 -1
  339. package/dist/sdk/agent/item-addressing.js +1 -1
  340. package/dist/sdk/agent/refusal-closure-census.js +2 -1
  341. package/dist/sdk/agent/refusal-closure.js +1 -1
  342. package/dist/sdk/agent/refusal-corpus-contracts.js +1 -1
  343. package/dist/sdk/agent/refusal-reachability.js +3 -1
  344. package/dist/sdk/agent/subcommand-recovery.js +1 -1
  345. package/dist/sdk/agent/task-transcript-contracts.js +1 -1
  346. package/dist/sdk/agent/tracker-preflight-contracts.js +1 -1
  347. package/dist/sdk/agent-capability-contracts.js +3 -1
  348. package/dist/sdk/agent-session-context.js +1 -1
  349. package/dist/sdk/annotations.js +1 -1
  350. package/dist/sdk/author-attribution.js +1 -1
  351. package/dist/sdk/authoring.js +1 -1
  352. package/dist/sdk/cli-bootstrap.d.ts +5 -1
  353. package/dist/sdk/cli-bootstrap.js +1 -1
  354. package/dist/sdk/cli-contracts/agent-output-contracts.js +5 -3
  355. package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +1 -1
  356. package/dist/sdk/cli-contracts/command-aliases.js +1 -1
  357. package/dist/sdk/cli-contracts/command-exit-contracts.js +1 -1
  358. package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1
  359. package/dist/sdk/cli-contracts/commander-types.js +1 -1
  360. package/dist/sdk/cli-contracts/completeness.js +1 -1
  361. package/dist/sdk/cli-contracts/enum-contracts.js +1 -1
  362. package/dist/sdk/cli-contracts/flag-contracts.js +1 -1
  363. package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +2 -1
  364. package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
  365. package/dist/sdk/cli-contracts/registration-helpers.js +7 -7
  366. package/dist/sdk/cli-contracts/runtime-contracts.js +1 -1
  367. package/dist/sdk/cli-contracts/schemas/assurance-definition.js +1 -1
  368. package/dist/sdk/cli-contracts/string-lists.js +1 -1
  369. package/dist/sdk/cli-contracts/tool-option-contracts.js +1 -1
  370. package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -1
  371. package/dist/sdk/cli-contracts/tool-schema.d.ts +2 -2
  372. package/dist/sdk/cli-contracts/tool-schema.js +1 -1
  373. package/dist/sdk/cli-contracts/typed-action-inputs.js +1 -1
  374. package/dist/sdk/cli-contracts.js +1 -1
  375. package/dist/sdk/cli-program.js +1 -1
  376. package/dist/sdk/command-line.js +1 -1
  377. package/dist/sdk/comments.js +1 -1
  378. package/dist/sdk/compile-cache.js +1 -1
  379. package/dist/sdk/completion/bash.js +2 -1
  380. package/dist/sdk/completion/fish.js +13 -7
  381. package/dist/sdk/completion/shared.js +1 -1
  382. package/dist/sdk/completion/zsh.js +14 -8
  383. package/dist/sdk/completion.js +1 -1
  384. package/dist/sdk/compose.js +1 -1
  385. package/dist/sdk/config.js +1 -1
  386. package/dist/sdk/context/recency.js +1 -1
  387. package/dist/sdk/context/semantic-session-attribution.js +1 -1
  388. package/dist/sdk/context/usage-egress.js +1 -1
  389. package/dist/sdk/context/usage-ledger.js +6 -3
  390. package/dist/sdk/context-intent-contracts.js +1 -1
  391. package/dist/sdk/context-intent-runtime.js +1 -1
  392. package/dist/sdk/context-packing.js +1 -1
  393. package/dist/sdk/context-relevance.js +1 -1
  394. package/dist/sdk/context-signal-store.js +2 -2
  395. package/dist/sdk/context-usage.js +1 -1
  396. package/dist/sdk/contracts.js +1 -1
  397. package/dist/sdk/core-governance.js +1 -1
  398. package/dist/sdk/core.js +1 -1
  399. package/dist/sdk/corpus-shape.js +1 -1
  400. package/dist/sdk/define.js +1 -1
  401. package/dist/sdk/dependencies.js +1 -1
  402. package/dist/sdk/dependency-flag-validation.js +1 -1
  403. package/dist/sdk/dependency-provenance.js +1 -1
  404. package/dist/sdk/docs.js +1 -1
  405. package/dist/sdk/duplicates.js +1 -1
  406. package/dist/sdk/environment/agent-environment.js +1 -1
  407. package/dist/sdk/environment/host-environment-errors.js +1 -1
  408. package/dist/sdk/environment/project-runtime-compatibility.js +2 -1
  409. package/dist/sdk/environment/source-context.js +1 -1
  410. package/dist/sdk/environment/tracker-preflight.js +1 -1
  411. package/dist/sdk/error-code-catalog.js +1 -1
  412. package/dist/sdk/error-runtime.js +1 -1
  413. package/dist/sdk/errors.js +1 -1
  414. package/dist/sdk/eval.js +1 -1
  415. package/dist/sdk/extension/author-manifest.js +1 -1
  416. package/dist/sdk/extension/bundled-catalog.js +1 -1
  417. package/dist/sdk/extension/concurrency.js +1 -1
  418. package/dist/sdk/extension/copy-scope.js +1 -1
  419. package/dist/sdk/extension/custom-field-collisions.js +1 -1
  420. package/dist/sdk/extension/describe.js +4 -2
  421. package/dist/sdk/extension/doctor.js +1 -1
  422. package/dist/sdk/extension/install-plan.js +1 -1
  423. package/dist/sdk/extension/install-receipts.js +1 -1
  424. package/dist/sdk/extension/install-runtime.js +3 -3
  425. package/dist/sdk/extension/install-snapshot.js +1 -1
  426. package/dist/sdk/extension/install-sources.js +5 -5
  427. package/dist/sdk/extension/managed-state.d.ts +2 -0
  428. package/dist/sdk/extension/managed-state.js +2 -2
  429. package/dist/sdk/extension/managed-update-status.d.ts +3 -0
  430. package/dist/sdk/extension/managed-update-status.js +2 -0
  431. package/dist/sdk/extension/migrations.js +2 -2
  432. package/dist/sdk/extension/output-ownership.js +1 -1
  433. package/dist/sdk/extension/runtime-summary.js +1 -1
  434. package/dist/sdk/extension/scaffold.js +11 -4
  435. package/dist/sdk/extension/shared.js +1 -1
  436. package/dist/sdk/extension/source-resolution.d.ts +2 -6
  437. package/dist/sdk/extension/source-resolution.js +1 -1
  438. package/dist/sdk/extension/static-inventory.js +1 -1
  439. package/dist/sdk/extension/update-check.d.ts +10 -0
  440. package/dist/sdk/extension/update-check.js +1 -1
  441. package/dist/sdk/extension-command-context.js +2 -1
  442. package/dist/sdk/extension-contracts.js +1 -1
  443. package/dist/sdk/extension.d.ts +4 -0
  444. package/dist/sdk/extension.js +1 -1
  445. package/dist/sdk/files.js +1 -1
  446. package/dist/sdk/flag-invocation-contracts.js +1 -1
  447. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
  448. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  449. package/dist/sdk/generated-error-code-catalog.js +1 -1
  450. package/dist/sdk/governance/assurance-action-contracts.js +1 -1
  451. package/dist/sdk/governance/assurance-action.js +1 -1
  452. package/dist/sdk/governance/assurance-limits.js +1 -1
  453. package/dist/sdk/governance/assurance-mutation-error.js +1 -1
  454. package/dist/sdk/governance/assurance-presets.js +1 -1
  455. package/dist/sdk/governance/assurance-runtime.js +1 -1
  456. package/dist/sdk/governance/assurance.js +4 -4
  457. package/dist/sdk/governance/boundary-fixtures.js +1 -1
  458. package/dist/sdk/governance/closure-timestamps.js +1 -1
  459. package/dist/sdk/governance/coverage-assurance.js +1 -1
  460. package/dist/sdk/governance/defect-recurrence-coverage.js +1 -1
  461. package/dist/sdk/governance/defect-recurrence-graph.js +1 -1
  462. package/dist/sdk/governance/defect-recurrence-signals.js +1 -1
  463. package/dist/sdk/governance/defect-recurrence.js +1 -1
  464. package/dist/sdk/governance/extension-host-version.js +1 -1
  465. package/dist/sdk/governance/gc.js +1 -1
  466. package/dist/sdk/governance/health-merge-evidence.js +1 -1
  467. package/dist/sdk/governance/health.js +2 -1
  468. package/dist/sdk/governance/hierarchy-validation.js +1 -1
  469. package/dist/sdk/governance/linked-file-report.js +1 -1
  470. package/dist/sdk/governance/merge-receipt-history.js +1 -1
  471. package/dist/sdk/governance/provenance-health.js +4 -1
  472. package/dist/sdk/governance/reindex.js +5 -4
  473. package/dist/sdk/governance/stale-work.js +1 -1
  474. package/dist/sdk/governance/status-role-diagnostics.js +1 -1
  475. package/dist/sdk/governance/storage-integrity.js +1 -1
  476. package/dist/sdk/governance/tracked-runtime-cache.js +1 -1
  477. package/dist/sdk/governance/upgrade.js +2 -2
  478. package/dist/sdk/governance/validate-history-drift.js +1 -1
  479. package/dist/sdk/governance/validate-item-reader.js +1 -1
  480. package/dist/sdk/governance/validate-normalization.js +1 -1
  481. package/dist/sdk/governance/validate.js +1 -1
  482. package/dist/sdk/governance/workflow-completeness.js +1 -1
  483. package/dist/sdk/governance/workflow-policy.js +3 -3
  484. package/dist/sdk/governance/workspace-position.js +2 -1
  485. package/dist/sdk/governance.js +1 -1
  486. package/dist/sdk/graph/adapter.js +1 -1
  487. package/dist/sdk/graph/analytics.js +1 -1
  488. package/dist/sdk/graph/assembly.js +1 -1
  489. package/dist/sdk/graph/cache.js +1 -1
  490. package/dist/sdk/graph/centrality.js +1 -1
  491. package/dist/sdk/graph/conformance.js +1 -1
  492. package/dist/sdk/graph/deadline-scheduling.js +1 -1
  493. package/dist/sdk/graph/durable-cache.js +1 -1
  494. package/dist/sdk/graph/governance-contracts.js +1 -1
  495. package/dist/sdk/graph/governance.js +1 -1
  496. package/dist/sdk/graph/hierarchy-integrity.js +1 -1
  497. package/dist/sdk/graph/index.js +1 -1
  498. package/dist/sdk/graph/lifecycle-coverage.js +1 -1
  499. package/dist/sdk/graph/mutation-advisory.js +1 -1
  500. package/dist/sdk/graph/query-contracts.js +1 -1
  501. package/dist/sdk/graph/remediation.js +1 -1
  502. package/dist/sdk/graph/run.js +1 -1
  503. package/dist/sdk/graph/scheduling.js +1 -1
  504. package/dist/sdk/graph/traversal.js +1 -1
  505. package/dist/sdk/graph/workspace-relationship-kind-registry.js +1 -1
  506. package/dist/sdk/graph.js +1 -1
  507. package/dist/sdk/guide-topics.js +1 -1
  508. package/dist/sdk/guide.js +8 -1
  509. package/dist/sdk/history/attestation-command.js +1 -1
  510. package/dist/sdk/history/attestation-contract.js +1 -1
  511. package/dist/sdk/history/attestation-scan.js +1 -1
  512. package/dist/sdk/history/attestation.js +1 -1
  513. package/dist/sdk/history/maintenance.js +1 -1
  514. package/dist/sdk/history/salvage.js +3 -2
  515. package/dist/sdk/history/subject.js +1 -1
  516. package/dist/sdk/history-analytics.js +1 -1
  517. package/dist/sdk/history-compact.js +1 -1
  518. package/dist/sdk/history-mcp.js +1 -1
  519. package/dist/sdk/history-provenance.js +1 -1
  520. package/dist/sdk/history-read.js +1 -1
  521. package/dist/sdk/history-redact.js +1 -1
  522. package/dist/sdk/history-repair.js +1 -1
  523. package/dist/sdk/improvement-ledger-validation.js +1 -1
  524. package/dist/sdk/improvement-ledger.js +2 -2
  525. package/dist/sdk/index.js +1 -1
  526. package/dist/sdk/init-agent-guidance.js +16 -2
  527. package/dist/sdk/init.js +16 -2
  528. package/dist/sdk/invocation-author.js +1 -1
  529. package/dist/sdk/item-children.js +1 -1
  530. package/dist/sdk/item-metadata-index.js +1 -1
  531. package/dist/sdk/item-schedule.js +1 -1
  532. package/dist/sdk/item-transaction.js +1 -1
  533. package/dist/sdk/learnings.js +1 -1
  534. package/dist/sdk/lifecycle/append.js +4 -2
  535. package/dist/sdk/lifecycle/claim.js +1 -1
  536. package/dist/sdk/lifecycle/close-many.js +1 -1
  537. package/dist/sdk/lifecycle/close.js +1 -1
  538. package/dist/sdk/lifecycle/copy.js +1 -1
  539. package/dist/sdk/lifecycle/create.js +1 -1
  540. package/dist/sdk/lifecycle/delete.js +1 -1
  541. package/dist/sdk/lifecycle/event-validation-messages.js +1 -1
  542. package/dist/sdk/lifecycle/focus.js +1 -1
  543. package/dist/sdk/lifecycle/hierarchy-mutation-lock.js +1 -1
  544. package/dist/sdk/lifecycle/legacy-none-tokens.js +1 -1
  545. package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -1
  546. package/dist/sdk/lifecycle/mcp-actions.js +1 -1
  547. package/dist/sdk/lifecycle/metadata-normalizers.js +1 -1
  548. package/dist/sdk/lifecycle/mutation-command-options.js +1 -1
  549. package/dist/sdk/lifecycle/plan-mutation-receipt.js +1 -1
  550. package/dist/sdk/lifecycle/plan.js +1 -1
  551. package/dist/sdk/lifecycle/recurrence-parsers.js +1 -1
  552. package/dist/sdk/lifecycle/reopen.js +1 -1
  553. package/dist/sdk/lifecycle/repeatable-metadata-parsers.js +2 -1
  554. package/dist/sdk/lifecycle/restore.js +1 -1
  555. package/dist/sdk/lifecycle/shared-unset-fields.js +1 -1
  556. package/dist/sdk/lifecycle/task-composition.js +1 -1
  557. package/dist/sdk/lifecycle/update-many.js +1 -1
  558. package/dist/sdk/lifecycle/update.js +2 -1
  559. package/dist/sdk/lifecycle-completion.js +1 -1
  560. package/dist/sdk/lifecycle-policy.js +1 -1
  561. package/dist/sdk/linked-artifacts.js +2 -1
  562. package/dist/sdk/mcp/apps.js +1 -1
  563. package/dist/sdk/mcp/authorization.js +1 -1
  564. package/dist/sdk/mcp/discovery.js +1 -1
  565. package/dist/sdk/mcp/interactions.js +1 -1
  566. package/dist/sdk/mcp/protocol.js +1 -1
  567. package/dist/sdk/mcp/skills.js +3 -1
  568. package/dist/sdk/mcp/subscriptions.js +1 -1
  569. package/dist/sdk/mcp/tasks.js +2 -2
  570. package/dist/sdk/mcp/transport.js +1 -1
  571. package/dist/sdk/merge/abandoned-receipts.js +1 -1
  572. package/dist/sdk/merge/driver.js +1 -1
  573. package/dist/sdk/merge/index.js +1 -1
  574. package/dist/sdk/merge/install.js +4 -2
  575. package/dist/sdk/merge/receipt-file-boundary.js +1 -1
  576. package/dist/sdk/merge/receipt-operation.js +1 -1
  577. package/dist/sdk/merge/receipt-schema.js +1 -1
  578. package/dist/sdk/merge/receipts.js +4 -4
  579. package/dist/sdk/merge/reconcile.js +1 -1
  580. package/dist/sdk/merge/three-way.js +3 -2
  581. package/dist/sdk/merge/worktree-config.js +1 -1
  582. package/dist/sdk/merge.js +1 -1
  583. package/dist/sdk/mutation-events.js +1 -1
  584. package/dist/sdk/mutation-guard.js +1 -1
  585. package/dist/sdk/notes.js +1 -1
  586. package/dist/sdk/output-contracts.js +1 -1
  587. package/dist/sdk/output-projection.js +1 -1
  588. package/dist/sdk/output-token-accounting.js +1 -1
  589. package/dist/sdk/output.js +2 -1
  590. package/dist/sdk/ownership-source.js +1 -1
  591. package/dist/sdk/package-import-adapters.js +1 -1
  592. package/dist/sdk/package-migrations.js +1 -1
  593. package/dist/sdk/package-runtime-options.js +1 -1
  594. package/dist/sdk/pagination.js +1 -1
  595. package/dist/sdk/profile.js +5 -1
  596. package/dist/sdk/provenance.js +1 -1
  597. package/dist/sdk/public-surface.json +1 -1
  598. package/dist/sdk/query/activity.js +1 -1
  599. package/dist/sdk/query/aggregate.js +1 -1
  600. package/dist/sdk/query/calendar.js +4 -1
  601. package/dist/sdk/query/complete-list.js +1 -1
  602. package/dist/sdk/query/context.js +2 -1
  603. package/dist/sdk/query/duplicate-candidates.js +1 -1
  604. package/dist/sdk/query/get.d.ts +14 -2
  605. package/dist/sdk/query/get.js +1 -1
  606. package/dist/sdk/query/history.js +1 -1
  607. package/dist/sdk/query/item-filter-options.js +1 -1
  608. package/dist/sdk/query/light-metadata.js +1 -1
  609. package/dist/sdk/query/list-filter-shared.js +1 -1
  610. package/dist/sdk/query/list.js +1 -1
  611. package/dist/sdk/query/multi-value-filters.js +1 -1
  612. package/dist/sdk/query/next-ready-budget.js +1 -1
  613. package/dist/sdk/query/next.js +2 -1
  614. package/dist/sdk/query/parsers.js +1 -1
  615. package/dist/sdk/query/projection-contracts.js +1 -1
  616. package/dist/sdk/query/search/corpus.js +2 -1
  617. package/dist/sdk/query/search/filters.js +1 -1
  618. package/dist/sdk/query/search/input.js +1 -1
  619. package/dist/sdk/query/search/lexical.js +1 -1
  620. package/dist/sdk/query/search/response.js +1 -1
  621. package/dist/sdk/query/search/semantic.js +3 -2
  622. package/dist/sdk/query/search/types.js +1 -1
  623. package/dist/sdk/query/search-contracts.js +1 -1
  624. package/dist/sdk/query/search-pagination.js +1 -1
  625. package/dist/sdk/query/search-rendering.js +1 -1
  626. package/dist/sdk/query/search.js +1 -1
  627. package/dist/sdk/query/workspace-contracts.js +1 -1
  628. package/dist/sdk/query.js +1 -1
  629. package/dist/sdk/read-output/continuation.js +1 -1
  630. package/dist/sdk/read-output/options.js +1 -1
  631. package/dist/sdk/read-output/provenance.js +1 -1
  632. package/dist/sdk/read-output-budget.js +1 -1
  633. package/dist/sdk/read-output-contracts.js +1 -1
  634. package/dist/sdk/read-output-rows.js +1 -1
  635. package/dist/sdk/read-output-session.js +1 -1
  636. package/dist/sdk/relationship-analytics.js +1 -1
  637. package/dist/sdk/relationship-context.js +1 -1
  638. package/dist/sdk/relationship-history.js +7 -4
  639. package/dist/sdk/relationship-kinds/contract.js +1 -1
  640. package/dist/sdk/relationship-migration.js +1 -1
  641. package/dist/sdk/relationships.js +1 -1
  642. package/dist/sdk/reproducibility/process.js +1 -1
  643. package/dist/sdk/runtime/actions.js +1 -1
  644. package/dist/sdk/runtime/context.js +1 -1
  645. package/dist/sdk/runtime/schema-preview.js +1 -1
  646. package/dist/sdk/runtime/schema.js +1 -1
  647. package/dist/sdk/runtime-action-aliases.js +1 -1
  648. package/dist/sdk/runtime-extended-actions.js +1 -1
  649. package/dist/sdk/runtime-input.js +1 -1
  650. package/dist/sdk/runtime-primitives.js +1 -1
  651. package/dist/sdk/runtime-public-contracts.js +1 -1
  652. package/dist/sdk/runtime-stats-options.js +1 -1
  653. package/dist/sdk/runtime.js +1 -1
  654. package/dist/sdk/scheduling-shortcuts.js +1 -1
  655. package/dist/sdk/schema-migration.js +4 -3
  656. package/dist/sdk/schema.js +7 -1
  657. package/dist/sdk/search-refresh-worker.js +1 -1
  658. package/dist/sdk/similarity-scoring.js +1 -1
  659. package/dist/sdk/similarity.js +1 -1
  660. package/dist/sdk/start-task-status.js +1 -1
  661. package/dist/sdk/stats.js +1 -1
  662. package/dist/sdk/structured-mutations.js +1 -1
  663. package/dist/sdk/telemetry-flush.js +1 -1
  664. package/dist/sdk/telemetry.js +4 -3
  665. package/dist/sdk/templates.js +26 -2
  666. package/dist/sdk/test/batch.js +2 -2
  667. package/dist/sdk/test/entry.js +1 -1
  668. package/dist/sdk/test/execution.d.ts +2 -1
  669. package/dist/sdk/test/execution.js +6 -5
  670. package/dist/sdk/test/json-path.js +1 -1
  671. package/dist/sdk/test/linked-command-detection.js +1 -1
  672. package/dist/sdk/test/measurements.js +1 -1
  673. package/dist/sdk/test/parsers.js +1 -1
  674. package/dist/sdk/test/runs.js +1 -1
  675. package/dist/sdk/test/trust.js +2 -2
  676. package/dist/sdk/test/workspace-snapshot.js +1 -1
  677. package/dist/sdk/testing.js +7 -4
  678. package/dist/sdk/traceability/runtime-files-lookup.js +1 -1
  679. package/dist/sdk/traceability/source-traceability.js +2 -1
  680. package/dist/sdk/tracker-root-discovery.js +1 -1
  681. package/dist/sdk/workspace-contracts-cache.js +1 -1
  682. package/dist/sdk/workspace-contracts.js +1 -1
  683. package/dist/sdk/workspace-memory.js +2 -2
  684. package/dist/sdk/workspace-recipe.js +1 -1
  685. package/dist/sdk/workspace-snapshot.js +5 -4
  686. package/dist/sdk/workspace-transaction-gc.js +1 -1
  687. package/dist/sdk/workspace-transaction.js +2 -2
  688. package/dist/sdk/workspace.js +3 -2
  689. package/dist/types/index.js +1 -1
  690. package/dist/types.js +1 -1
  691. package/docs/AGENT_EVIDENCE_CONSISTENCY.md +88 -0
  692. package/docs/DEVELOPMENT_DEPENDENCY_SECURITY.md +36 -0
  693. package/docs/GET_READ_EVIDENCE.md +84 -0
  694. package/docs/OUTPUT_PROJECTION_CONTRACTS.md +23 -0
  695. package/docs/PR_REVIEW_LOOP.md +21 -4
  696. package/docs/README.md +3 -0
  697. package/docs/RELEASING.md +18 -0
  698. package/docs/SDK_CONFIGURATION_SAFETY.md +123 -0
  699. package/docs/generated/FLAG_LEXICON_BUDGETS.md +3 -3
  700. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +4 -3
  701. package/marketplace.json +2 -2
  702. package/package.json +3 -3
  703. package/packages/pm-beads/package.json +1 -1
  704. package/packages/pm-calendar/package.json +1 -1
  705. package/packages/pm-command-kit/package.json +1 -1
  706. package/packages/pm-digital-twin/package.json +1 -1
  707. package/packages/pm-governance-audit/package.json +1 -1
  708. package/packages/pm-guide-shell/package.json +1 -1
  709. package/packages/pm-kanban/package.json +1 -1
  710. package/packages/pm-lifecycle-hooks/package.json +1 -1
  711. package/packages/pm-linked-test-adapters/package.json +1 -1
  712. package/packages/pm-search-advanced/package.json +1 -1
  713. package/packages/pm-templates/package.json +1 -1
  714. package/packages/pm-todos/package.json +1 -1
  715. package/packages/pm-vcs/extensions/vcs/index.ts +4 -2
  716. package/packages/pm-vcs/package.json +1 -1
  717. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  718. package/plugins/pm-claude/package.json +2 -2
  719. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  720. package/plugins/pm-codex/package.json +2 -2
  721. package/plugins/pm-codex/plugin.json +1 -1
  722. package/scripts/finalize-build.mjs +3 -2
  723. package/dist/cli-bundle/chunks/chunk-7UVXKI7K.js +0 -2
  724. package/dist/cli-bundle/chunks/chunk-D7Z2ZMJL.js +0 -3
  725. package/dist/cli-bundle/chunks/chunk-DEZPZOQ7.js +0 -2
  726. package/dist/cli-bundle/chunks/chunk-J52QIRRZ.js +0 -80
  727. package/dist/cli-bundle/chunks/chunk-JDKD3WGG.js +0 -6
  728. package/dist/cli-bundle/chunks/chunk-JQ7DW663.js +0 -2
  729. package/dist/cli-bundle/chunks/chunk-QXIDOOWT.js +0 -20
  730. package/dist/cli-bundle/chunks/chunk-SGFQQXFD.js +0 -2
  731. package/dist/cli-bundle/chunks/chunk-V3U77H3V.js +0 -31
  732. package/dist/cli-bundle/chunks/chunk-XZDWAYJC.js +0 -3
  733. package/dist/cli-bundle/chunks/chunk-Y6VRBTP3.js +0 -238
  734. package/dist/cli-bundle/chunks/chunk-YAAFYFS4.js +0 -8
  735. package/dist/cli-bundle/chunks/register-mutation-53ZLT4RX.js +0 -20
  736. package/dist/cli-bundle/chunks/register-operations-OBK2FXUU.js +0 -2
  737. package/dist/cli-bundle/chunks/register-setup-HM3OCBH2.js +0 -2
  738. package/dist/cli-bundle/focused-chunks/chunk-2JFYR56O.js +0 -2
  739. package/dist/cli-bundle/focused-chunks/chunk-32EVUSS4.js +0 -8
  740. package/dist/cli-bundle/focused-chunks/chunk-5GUSO2P4.js +0 -20
  741. package/dist/cli-bundle/focused-chunks/chunk-6XBRADQQ.js +0 -3
  742. package/dist/cli-bundle/focused-chunks/chunk-7O4NUJVO.js +0 -2
  743. package/dist/cli-bundle/focused-chunks/chunk-CURTIIQT.js +0 -2
  744. package/dist/cli-bundle/focused-chunks/chunk-IJUWEEEB.js +0 -6
  745. package/dist/cli-bundle/focused-chunks/chunk-JCVMOSWQ.js +0 -2
  746. package/dist/cli-bundle/focused-chunks/chunk-JMJK2L4Z.js +0 -3
  747. package/dist/cli-bundle/focused-chunks/chunk-KG3H4UZZ.js +0 -30
  748. package/dist/cli-bundle/focused-chunks/chunk-MHQ2XICU.js +0 -2
  749. package/dist/cli-bundle/focused-chunks/chunk-RJV6QVJE.js +0 -75
  750. package/dist/cli-bundle/focused-chunks/chunk-ZE2JZ7R6.js +0 -12
  751. package/dist/cli-bundle/focused-chunks/chunk-ZLEN4HZD.js +0 -165
@@ -1,2 +1,3 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="6e743cc1-3ff0-58b1-bf11-351d1655864c")}catch(e2){}})();import fs from"node:fs/promises";import path from"node:path";import{getActiveExtensionRegistrations,runActiveOnReadHooks}from"../../../core/extensions/index.js";import{collectRegisteredItemFieldNames}from"../../../core/extensions/item-fields.js";import{isPathWithinDirectory}from"../../../core/fs/path-utils.js";import{parseItemDocument}from"../../../core/item/item-format.js";import{listAllDocumentCandidatesCached}from"../../../core/store/item-metadata-cache.js";import{listAllItemMetadata}from"../../../core/store/item-store.js";import{getItemPath,resolveGlobalPmRoot}from"../../../core/store/paths.js";function collectLinkedPaths(item){const fromFiles=(item.files??[]).map(entry=>({scope:entry.scope,path:entry.path.trim()}));const fromDocs=(item.docs??[]).map(entry=>({scope:entry.scope,path:entry.path.trim()}));const fromTests=(item.tests??[]).filter(entry=>typeof entry.path==="string"&&entry.path.trim().length>0).map(entry=>({scope:entry.scope,path:entry.path.trim()}));const sorted=[...fromFiles,...fromDocs,...fromTests].filter(entry=>entry.path.length>0).sort((a,b)=>a.scope.localeCompare(b.scope)||a.path.localeCompare(b.path));const deduped=new Map;for(const entry of sorted){deduped.set(`${entry.scope}:${entry.path}`,entry)}return[...deduped.values()]}async function resolveContainmentRoot(root){const resolved=path.resolve(root);try{const realpathRoot=await fs.realpath(resolved);return{resolved,realpath:realpathRoot}}catch{return null}}async function resolveLinkedCorpusRoots(projectRoot,globalRoot){const[projectContainmentRoot,globalContainmentRoot]=await Promise.all([resolveContainmentRoot(projectRoot),resolveContainmentRoot(globalRoot)]);return{projectContainmentRoot,globalContainmentRoot}}async function loadLinkedCorpus(document,roots){const linkedPaths=collectLinkedPaths(document.metadata);const chunks=[];for(const linkedPath of linkedPaths){const containmentRoot=linkedPath.scope==="global"?roots.globalContainmentRoot:roots.projectContainmentRoot;if(!containmentRoot){continue}const resolved=path.resolve(containmentRoot.resolved,linkedPath.path);if(!isPathWithinDirectory(containmentRoot.resolved,resolved)){continue}let linkedRealpath;try{linkedRealpath=await fs.realpath(resolved)}catch{continue}if(!isPathWithinDirectory(containmentRoot.realpath,linkedRealpath)){continue}try{await runActiveOnReadHooks({path:resolved,scope:linkedPath.scope});chunks.push(await fs.readFile(resolved,"utf8"))}catch{}}return chunks.join("\n")}async function loadDocuments(pmRoot,itemFormat,typeToFolder,schema){const extensionFieldNames=collectRegisteredItemFieldNames(getActiveExtensionRegistrations());const readDocumentBody=async(metadata,preferredPath,preferredFormat)=>{const tryRead=async(targetPath,format)=>{await runActiveOnReadHooks({path:targetPath,scope:"project"});const raw=await fs.readFile(targetPath,"utf8");const parsed=parseItemDocument(raw,{format,schema,extensionFieldNames,onWarning:warning=>listWarnings.push(warning)});return parsed.body};try{return await tryRead(preferredPath,preferredFormat)}catch{const alternateFormat=preferredFormat==="toon"?"json_markdown":"toon";const alternatePath=getItemPath(pmRoot,metadata.type,metadata.id,alternateFormat,typeToFolder);try{return await tryRead(alternatePath,alternateFormat)}catch{listWarnings.push(`item_list_item_read_failed:${path.relative(pmRoot,alternatePath)}`);return""}}};const listWarnings=[];const cachedDocuments=await listAllDocumentCandidatesCached(pmRoot,itemFormat,typeToFolder,listWarnings,schema);const documents=[];if(cachedDocuments.length===0){const itemMetadataDocuments=await listAllItemMetadata(pmRoot,itemFormat,typeToFolder,listWarnings,schema);for(const metadata of itemMetadataDocuments){const preferredPath=getItemPath(pmRoot,metadata.type,metadata.id,itemFormat,typeToFolder);const body=await readDocumentBody(metadata,preferredPath,itemFormat);documents.push({metadata,body})}return{documents,warnings:[...new Set(listWarnings)].sort((left,right)=>left.localeCompare(right))}}for(const cachedDocument of cachedDocuments){if(typeof cachedDocument.body==="string"){documents.push({metadata:cachedDocument.metadata,body:cachedDocument.body});continue}const body=await readDocumentBody(cachedDocument.metadata,cachedDocument.item_path,cachedDocument.item_format);documents.push({metadata:cachedDocument.metadata,body})}return{documents,warnings:[...new Set(listWarnings)].sort((left,right)=>left.localeCompare(right))}}async function collectLinkedCorpusById(includeLinked,effectiveMode,filteredDocuments){const linkedCorpusById=new Map;if(!includeLinked||effectiveMode!=="keyword"&&effectiveMode!=="hybrid"){return linkedCorpusById}const projectRoot=process.cwd();const linkedCorpusRoots=await resolveLinkedCorpusRoots(projectRoot,resolveGlobalPmRoot(projectRoot));const linkedCorpusEntries=await Promise.all(filteredDocuments.map(async document=>[document.metadata.id,await loadLinkedCorpus(document,linkedCorpusRoots)]));for(const[id,corpus]of linkedCorpusEntries){linkedCorpusById.set(id,corpus)}return linkedCorpusById}export{collectLinkedCorpusById,collectLinkedPaths,loadDocuments,loadLinkedCorpus,resolveLinkedCorpusRoots};
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]="de9a1cbd-f277-52ef-adc6-66225f2d2f4f")}catch{}})();import fs from"node:fs/promises";import path from"node:path";import{getActiveExtensionRegistrations,runActiveOnReadHooks}from"../../../core/extensions/index.js";import{collectRegisteredItemFieldNames}from"../../../core/extensions/item-fields.js";import{isPathWithinDirectory}from"../../../core/fs/path-utils.js";import{parseItemDocument}from"../../../core/item/item-format.js";import{listAllDocumentCandidatesCached}from"../../../core/store/item-metadata-cache.js";import{listAllItemMetadata}from"../../../core/store/item-store.js";import{getItemPath,resolveGlobalPmRoot}from"../../../core/store/paths.js";function collectLinkedPaths(item){const fromFiles=(item.files??[]).map(entry=>({scope:entry.scope,path:entry.path.trim()})),fromDocs=(item.docs??[]).map(entry=>({scope:entry.scope,path:entry.path.trim()})),fromTests=(item.tests??[]).filter(entry=>typeof entry.path=="string"&&entry.path.trim().length>0).map(entry=>({scope:entry.scope,path:entry.path.trim()})),sorted=[...fromFiles,...fromDocs,...fromTests].filter(entry=>entry.path.length>0).sort((a,b)=>a.scope.localeCompare(b.scope)||a.path.localeCompare(b.path)),deduped=new Map;for(const entry of sorted)deduped.set(`${entry.scope}:${entry.path}`,entry);return[...deduped.values()]}async function resolveContainmentRoot(root){const resolved=path.resolve(root);try{const realpathRoot=await fs.realpath(resolved);return{resolved,realpath:realpathRoot}}catch{return null}}async function resolveLinkedCorpusRoots(projectRoot,globalRoot){const[projectContainmentRoot,globalContainmentRoot]=await Promise.all([resolveContainmentRoot(projectRoot),resolveContainmentRoot(globalRoot)]);return{projectContainmentRoot,globalContainmentRoot}}async function loadLinkedCorpus(document,roots){const linkedPaths=collectLinkedPaths(document.metadata),chunks=[];for(const linkedPath of linkedPaths){const containmentRoot=linkedPath.scope==="global"?roots.globalContainmentRoot:roots.projectContainmentRoot;if(!containmentRoot)continue;const resolved=path.resolve(containmentRoot.resolved,linkedPath.path);if(!isPathWithinDirectory(containmentRoot.resolved,resolved))continue;let linkedRealpath;try{linkedRealpath=await fs.realpath(resolved)}catch{continue}if(isPathWithinDirectory(containmentRoot.realpath,linkedRealpath))try{await runActiveOnReadHooks({path:resolved,scope:linkedPath.scope}),chunks.push(await fs.readFile(resolved,"utf8"))}catch{}}return chunks.join(`
2
+ `)}async function loadDocuments(pmRoot,itemFormat,typeToFolder,schema){const extensionFieldNames=collectRegisteredItemFieldNames(getActiveExtensionRegistrations()),readDocumentBody=async(metadata,preferredPath,preferredFormat)=>{const tryRead=async(targetPath,format)=>{await runActiveOnReadHooks({path:targetPath,scope:"project"});const raw=await fs.readFile(targetPath,"utf8");return parseItemDocument(raw,{format,schema,extensionFieldNames,onWarning:warning=>listWarnings.push(warning)}).body};try{return await tryRead(preferredPath,preferredFormat)}catch{const alternateFormat=preferredFormat==="toon"?"json_markdown":"toon",alternatePath=getItemPath(pmRoot,metadata.type,metadata.id,alternateFormat,typeToFolder);try{return await tryRead(alternatePath,alternateFormat)}catch{return listWarnings.push(`item_list_item_read_failed:${path.relative(pmRoot,alternatePath)}`),""}}},listWarnings=[],cachedDocuments=await listAllDocumentCandidatesCached(pmRoot,itemFormat,typeToFolder,listWarnings,schema),documents=[];if(cachedDocuments.length===0){const itemMetadataDocuments=await listAllItemMetadata(pmRoot,itemFormat,typeToFolder,listWarnings,schema);for(const metadata of itemMetadataDocuments){const preferredPath=getItemPath(pmRoot,metadata.type,metadata.id,itemFormat,typeToFolder),body=await readDocumentBody(metadata,preferredPath,itemFormat);documents.push({metadata,body})}return{documents,warnings:[...new Set(listWarnings)].sort((left,right)=>left.localeCompare(right))}}for(const cachedDocument of cachedDocuments){if(typeof cachedDocument.body=="string"){documents.push({metadata:cachedDocument.metadata,body:cachedDocument.body});continue}const body=await readDocumentBody(cachedDocument.metadata,cachedDocument.item_path,cachedDocument.item_format);documents.push({metadata:cachedDocument.metadata,body})}return{documents,warnings:[...new Set(listWarnings)].sort((left,right)=>left.localeCompare(right))}}async function collectLinkedCorpusById(includeLinked,effectiveMode,filteredDocuments){const linkedCorpusById=new Map;if(!includeLinked||effectiveMode!=="keyword"&&effectiveMode!=="hybrid")return linkedCorpusById;const projectRoot=process.cwd(),linkedCorpusRoots=await resolveLinkedCorpusRoots(projectRoot,resolveGlobalPmRoot(projectRoot)),linkedCorpusEntries=await Promise.all(filteredDocuments.map(async document=>[document.metadata.id,await loadLinkedCorpus(document,linkedCorpusRoots)]));for(const[id,corpus]of linkedCorpusEntries)linkedCorpusById.set(id,corpus);return linkedCorpusById}export{collectLinkedCorpusById,collectLinkedPaths,loadDocuments,loadLinkedCorpus,resolveLinkedCorpusRoots};
2
3
  //# sourceMappingURL=corpus.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="a5e4bd88-a099-559f-8194-7b56f325eb0e")}catch(e2){}})();import{hasContentFieldFilter,itemMatchesContentFilters}from"../../../core/governance/content-fields.js";import{hasMissingMetadataFilter,itemMatchesMissingMetadata}from"../../../core/governance/metadata-coverage.js";import{matchesRuntimeFilters}from"../../../core/schema/runtime-field-filters.js";import{buildEventCorpus,buildPlanFlatCorpus,buildReminderCorpus}from"../../../core/search/corpus.js";import{EXIT_CODE}from"../../../core/shared/constants.js";import{PmCliError}from"../../../core/shared/errors.js";import{matchesTimestampFilters}from"../../../core/shared/time.js";import{resolveContentFieldFilters,resolveMissingMetadataFilters}from"../list.js";import{parsePriorityFilterSet,parseStringFilterSet,parseTypeFilterSet}from"../multi-value-filters.js";import{normalizeSearchPhrase,parseSearchDeadline,parseTimestampWindow}from"../search-contracts.js";function stringArray(value){return Array.isArray(value)?value.filter(entry=>typeof entry==="string"):[]}function textEntries(value){return Array.isArray(value)?value.filter(entry=>typeof entry==="object"&&entry!==null&&typeof entry.text==="string"):[]}function dependencyEntries(value){return Array.isArray(value)?value.filter(entry=>typeof entry==="object"&&entry!==null&&typeof entry.id==="string"&&typeof entry.kind==="string"):[]}function collectExactPhraseFields(document){const item=document.metadata;return[item.title,item.description,item.status,stringArray(item.tags).join(" "),document.body,textEntries(item.comments).map(entry=>entry.text).join(" "),textEntries(item.notes).map(entry=>entry.text).join(" "),textEntries(item.learnings).map(entry=>entry.text).join(" "),buildReminderCorpus(item).join(" "),buildEventCorpus(item).join(" "),dependencyEntries(item.dependencies).map(entry=>`${entry.id} ${entry.kind}`).join(" "),buildPlanFlatCorpus(item)]}function documentContainsExactPhrase(document,normalizedQuery){return collectExactPhraseFields(document).some(fieldValue=>normalizeSearchPhrase(fieldValue).includes(normalizedQuery))}function applyExactQueryFilters(items,normalizedQuery,options){if(!options.titleExact&&!options.phraseExact){return items}return items.filter(document=>{if(options.titleExact&&normalizeSearchPhrase(document.metadata.title)!==normalizedQuery){return false}if(options.phraseExact&&!documentContainsExactPhrase(document,normalizedQuery)){return false}return true})}function assertSearchAssigneeFilter(assigneeFilter){if(assigneeFilter&&[...assigneeFilter].some(value=>value.toLowerCase()==="none"||value.toLowerCase()==="null")){throw new PmCliError('--assignee no longer accepts "none" or "null".',EXIT_CODE.USAGE)}}function resolveSearchMetadataFilterSet(options,typeRegistry,statusFilter){const assigneeFilter=parseStringFilterSet(options.assignee,{label:"--assignee"});assertSearchAssigneeFilter(assigneeFilter);const missingMetadataFilters=resolveMissingMetadataFilters(options);const contentFieldFilters=resolveContentFieldFilters(options);return{typeFilter:parseTypeFilterSet(options.type,typeRegistry),tagFilter:parseStringFilterSet(options.tag,{label:"--tag",normalize:tag=>tag.toLowerCase()}),priorityFilter:parsePriorityFilterSet(options.priority),deadlineBefore:parseSearchDeadline(options.deadlineBefore,"deadline-before"),deadlineAfter:parseSearchDeadline(options.deadlineAfter,"deadline-after"),updatedAfter:parseTimestampWindow(options.updatedAfter,"updated-after"),updatedBefore:parseTimestampWindow(options.updatedBefore,"updated-before"),createdAfter:parseTimestampWindow(options.createdAfter,"created-after"),createdBefore:parseTimestampWindow(options.createdBefore,"created-before"),assigneeFilter,sprintFilter:parseStringFilterSet(options.sprint,{label:"--sprint"}),releaseFilter:parseStringFilterSet(options.release,{label:"--release"}),parentFilter:options.parent?.trim(),statusSet:statusFilter&&statusFilter.length>0?new Set(statusFilter):void 0,missingMetadataFilters,missingMetadataActive:hasMissingMetadataFilter(missingMetadataFilters),contentFieldFilters,contentFiltersActive:hasContentFieldFilter(contentFieldFilters)}}function matchesScalarSearchFilters(item,filters){return matchesIdentitySearchFilters(item,filters)&&matchesTimestampFilters(item,filters)&&matchesOwnerSearchFilters(item,filters)}function matchesIdentitySearchFilters(item,filters){if(filters.statusSet&&!filters.statusSet.has(item.status))return false;if(filters.typeFilter&&!filters.typeFilter.has(item.type))return false;const tagFilter=filters.tagFilter;if(tagFilter&&!stringArray(item.tags).some(tag=>tagFilter.has(tag)))return false;if(filters.priorityFilter!==void 0&&!filters.priorityFilter.has(item.priority))return false;return true}function matchesOwnerSearchFilters(item,filters){if(filters.assigneeFilter!==void 0&&(item.assignee===void 0||!filters.assigneeFilter.has(item.assignee)))return false;if(filters.sprintFilter!==void 0&&(item.sprint===void 0||!filters.sprintFilter.has(item.sprint)))return false;if(filters.releaseFilter!==void 0&&(item.release===void 0||!filters.releaseFilter.has(item.release)))return false;if(filters.parentFilter!==void 0&&item.parent!==filters.parentFilter)return false;return true}function matchesSearchMetadataFilters(document,filters,runtimeFieldFilters,lifecycleClassifier){const item=document.metadata;if(!matchesScalarSearchFilters(item,filters)){return false}if(!matchesRuntimeFilters(item,runtimeFieldFilters)){return false}if(filters.missingMetadataActive&&!itemMatchesMissingMetadata(item,filters.missingMetadataFilters,lifecycleClassifier)){return false}if(filters.contentFiltersActive&&!itemMatchesContentFilters(item,filters.contentFieldFilters)){return false}return true}function applyFilters(items,options,typeRegistry,runtimeFieldFilters,statusFilter,lifecycleClassifier){const filters=resolveSearchMetadataFilterSet(options,typeRegistry,statusFilter);return items.filter(document=>matchesSearchMetadataFilters(document,filters,runtimeFieldFilters,lifecycleClassifier))}export{applyExactQueryFilters,applyFilters,collectExactPhraseFields,dependencyEntries,documentContainsExactPhrase,stringArray,textEntries};
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]="a5d1f401-e5eb-5b6e-8b5a-d8135128f44b")}catch{}})();import{hasContentFieldFilter,itemMatchesContentFilters}from"../../../core/governance/content-fields.js";import{hasMissingMetadataFilter,itemMatchesMissingMetadata}from"../../../core/governance/metadata-coverage.js";import{matchesRuntimeFilters}from"../../../core/schema/runtime-field-filters.js";import{buildEventCorpus,buildPlanFlatCorpus,buildReminderCorpus}from"../../../core/search/corpus.js";import{EXIT_CODE}from"../../../core/shared/constants.js";import{PmCliError}from"../../../core/shared/errors.js";import{matchesTimestampFilters}from"../../../core/shared/time.js";import{resolveContentFieldFilters,resolveMissingMetadataFilters}from"../list.js";import{parsePriorityFilterSet,parseStringFilterSet,parseTypeFilterSet}from"../multi-value-filters.js";import{normalizeSearchPhrase,parseSearchDeadline,parseTimestampWindow}from"../search-contracts.js";function stringArray(value){return Array.isArray(value)?value.filter(entry=>typeof entry=="string"):[]}function textEntries(value){return Array.isArray(value)?value.filter(entry=>typeof entry=="object"&&entry!==null&&typeof entry.text=="string"):[]}function dependencyEntries(value){return Array.isArray(value)?value.filter(entry=>typeof entry=="object"&&entry!==null&&typeof entry.id=="string"&&typeof entry.kind=="string"):[]}function collectExactPhraseFields(document){const item=document.metadata;return[item.title,item.description,item.status,stringArray(item.tags).join(" "),document.body,textEntries(item.comments).map(entry=>entry.text).join(" "),textEntries(item.notes).map(entry=>entry.text).join(" "),textEntries(item.learnings).map(entry=>entry.text).join(" "),buildReminderCorpus(item).join(" "),buildEventCorpus(item).join(" "),dependencyEntries(item.dependencies).map(entry=>`${entry.id} ${entry.kind}`).join(" "),buildPlanFlatCorpus(item)]}function documentContainsExactPhrase(document,normalizedQuery){return collectExactPhraseFields(document).some(fieldValue=>normalizeSearchPhrase(fieldValue).includes(normalizedQuery))}function applyExactQueryFilters(items,normalizedQuery,options){return!options.titleExact&&!options.phraseExact?items:items.filter(document=>!(options.titleExact&&normalizeSearchPhrase(document.metadata.title)!==normalizedQuery||options.phraseExact&&!documentContainsExactPhrase(document,normalizedQuery)))}function assertSearchAssigneeFilter(assigneeFilter){if(assigneeFilter&&[...assigneeFilter].some(value=>value.toLowerCase()==="none"||value.toLowerCase()==="null"))throw new PmCliError('--assignee no longer accepts "none" or "null".',EXIT_CODE.USAGE)}function resolveSearchMetadataFilterSet(options,typeRegistry,statusFilter){const assigneeFilter=parseStringFilterSet(options.assignee,{label:"--assignee"});assertSearchAssigneeFilter(assigneeFilter);const missingMetadataFilters=resolveMissingMetadataFilters(options),contentFieldFilters=resolveContentFieldFilters(options);return{typeFilter:parseTypeFilterSet(options.type,typeRegistry),tagFilter:parseStringFilterSet(options.tag,{label:"--tag",normalize:tag=>tag.toLowerCase()}),priorityFilter:parsePriorityFilterSet(options.priority),deadlineBefore:parseSearchDeadline(options.deadlineBefore,"deadline-before"),deadlineAfter:parseSearchDeadline(options.deadlineAfter,"deadline-after"),updatedAfter:parseTimestampWindow(options.updatedAfter,"updated-after"),updatedBefore:parseTimestampWindow(options.updatedBefore,"updated-before"),createdAfter:parseTimestampWindow(options.createdAfter,"created-after"),createdBefore:parseTimestampWindow(options.createdBefore,"created-before"),assigneeFilter,sprintFilter:parseStringFilterSet(options.sprint,{label:"--sprint"}),releaseFilter:parseStringFilterSet(options.release,{label:"--release"}),parentFilter:options.parent?.trim(),statusSet:statusFilter&&statusFilter.length>0?new Set(statusFilter):void 0,missingMetadataFilters,missingMetadataActive:hasMissingMetadataFilter(missingMetadataFilters),contentFieldFilters,contentFiltersActive:hasContentFieldFilter(contentFieldFilters)}}function matchesScalarSearchFilters(item,filters){return matchesIdentitySearchFilters(item,filters)&&matchesTimestampFilters(item,filters)&&matchesOwnerSearchFilters(item,filters)}function matchesIdentitySearchFilters(item,filters){if(filters.statusSet&&!filters.statusSet.has(item.status)||filters.typeFilter&&!filters.typeFilter.has(item.type))return!1;const tagFilter=filters.tagFilter;return!(tagFilter&&!stringArray(item.tags).some(tag=>tagFilter.has(tag))||filters.priorityFilter!==void 0&&!filters.priorityFilter.has(item.priority))}function matchesOwnerSearchFilters(item,filters){return!(filters.assigneeFilter!==void 0&&(item.assignee===void 0||!filters.assigneeFilter.has(item.assignee))||filters.sprintFilter!==void 0&&(item.sprint===void 0||!filters.sprintFilter.has(item.sprint))||filters.releaseFilter!==void 0&&(item.release===void 0||!filters.releaseFilter.has(item.release))||filters.parentFilter!==void 0&&item.parent!==filters.parentFilter)}function matchesSearchMetadataFilters(document,filters,runtimeFieldFilters,lifecycleClassifier){const item=document.metadata;return!(!matchesScalarSearchFilters(item,filters)||!matchesRuntimeFilters(item,runtimeFieldFilters)||filters.missingMetadataActive&&!itemMatchesMissingMetadata(item,filters.missingMetadataFilters,lifecycleClassifier)||filters.contentFiltersActive&&!itemMatchesContentFilters(item,filters.contentFieldFilters))}function applyFilters(items,options,typeRegistry,runtimeFieldFilters,statusFilter,lifecycleClassifier){const filters=resolveSearchMetadataFilterSet(options,typeRegistry,statusFilter);return items.filter(document=>matchesSearchMetadataFilters(document,filters,runtimeFieldFilters,lifecycleClassifier))}export{applyExactQueryFilters,applyFilters,collectExactPhraseFields,dependencyEntries,documentContainsExactPhrase,stringArray,textEntries};
2
2
  //# sourceMappingURL=filters.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5ff2b814-42b0-50fc-92dd-17e9fc521982")}catch(e2){}})();import{EXIT_CODE}from"../../../core/shared/constants.js";import{PmCliError}from"../../../core/shared/errors.js";import{toNonEmptyStringOrUndefined}from"../../../core/shared/primitives.js";import{parseLimit}from"../parsers.js";import{normalizeSearchPhrase,parseMinScoreOverride,parseSearchBoolean,parseSearchMatchMode,parseSearchProjection,parseSearchTokens}from"../search-contracts.js";const INLINE_QUERY_FILTER_FIELDS=["tag","status","type","priority"];function parseInlineQueryFilters(query){const inlineFilters={};const residualTokens=[];for(const token of query.split(/\s+/).filter(entry=>entry.length>0)){const separatorIndex=token.indexOf(":");const field=separatorIndex>0?token.slice(0,separatorIndex).toLowerCase():"";const value=separatorIndex>0?token.slice(separatorIndex+1):"";const matchedField=INLINE_QUERY_FILTER_FIELDS.includes(field)?field:void 0;if(matchedField&&value.length>0&&inlineFilters[matchedField]===void 0){inlineFilters[matchedField]=value;continue}residualTokens.push(token)}return{residualQuery:residualTokens.join(" "),inlineFilters}}function applyInlineQueryFilters(options,inlineFilters,warnings){const merged={...options};for(const field of INLINE_QUERY_FILTER_FIELDS){const inlineValue=inlineFilters[field];if(inlineValue===void 0){continue}if(toNonEmptyStringOrUndefined(merged[field])!==void 0){warnings.push(`search_inline_filter_ignored:${field}:flag_takes_precedence`);continue}merged[field]=inlineValue}return merged}function prepareSearchInput(rawQuery,rawOptions){const inlineWarnings=[];const inlineParse=parseInlineQueryFilters(rawQuery);const hasInlineFilters=Object.keys(inlineParse.inlineFilters).length>0;if(hasInlineFilters&&inlineParse.residualQuery.trim().length===0){throw new PmCliError("Inline field:value tokens consumed the entire query, leaving no search terms.",EXIT_CODE.USAGE,{examples:["pm search auth tag:area:search","pm list --tag area:search --status open"],nextSteps:["Add keyword terms alongside the inline filters, or use pm list for pure tag/status/type/priority filtering."]})}const query=hasInlineFilters?inlineParse.residualQuery:rawQuery;const options=applyInlineQueryFilters(rawOptions,inlineParse.inlineFilters,inlineWarnings);return{query,options,inlineWarnings,highlight:options.highlight===true,includeLinked:parseSearchBoolean(options.includeLinked),titleExact:parseSearchBoolean(options.titleExact),phraseExact:parseSearchBoolean(options.phraseExact),matchMode:parseSearchMatchMode(typeof options.matchMode==="string"?options.matchMode:void 0),minScoreOverride:parseMinScoreOverride(options.minScore),countOnly:options.count===true,tokens:parseSearchTokens(query),normalizedQuery:normalizeSearchPhrase(query),limit:parseLimit(options.limit),projection:parseSearchProjection(options,rawQuery),modeWasExplicit:typeof options.mode==="string"&&options.mode.trim().length>0}}function assertSearchPagingOptions(options){if(options.after!==void 0&&options.count===true){throw new PmCliError("Search --after cannot be combined with --count.",EXIT_CODE.USAGE)}}export{applyInlineQueryFilters,assertSearchPagingOptions,parseInlineQueryFilters,prepareSearchInput};
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]="17122985-4157-5732-9142-444327cb273d")}catch{}})();import{EXIT_CODE}from"../../../core/shared/constants.js";import{PmCliError}from"../../../core/shared/errors.js";import{toNonEmptyStringOrUndefined}from"../../../core/shared/primitives.js";import{parseLimit}from"../parsers.js";import{normalizeSearchPhrase,parseMinScoreOverride,parseSearchBoolean,parseSearchMatchMode,parseSearchProjection,parseSearchTokens}from"../search-contracts.js";const INLINE_QUERY_FILTER_FIELDS=["tag","status","type","priority"];function parseInlineQueryFilters(query){const inlineFilters={},residualTokens=[];for(const token of query.split(/\s+/).filter(entry=>entry.length>0)){const separatorIndex=token.indexOf(":"),field=separatorIndex>0?token.slice(0,separatorIndex).toLowerCase():"",value=separatorIndex>0?token.slice(separatorIndex+1):"",matchedField=INLINE_QUERY_FILTER_FIELDS.includes(field)?field:void 0;if(matchedField&&value.length>0&&inlineFilters[matchedField]===void 0){inlineFilters[matchedField]=value;continue}residualTokens.push(token)}return{residualQuery:residualTokens.join(" "),inlineFilters}}function applyInlineQueryFilters(options,inlineFilters,warnings){const merged={...options};for(const field of INLINE_QUERY_FILTER_FIELDS){const inlineValue=inlineFilters[field];if(inlineValue!==void 0){if(toNonEmptyStringOrUndefined(merged[field])!==void 0){warnings.push(`search_inline_filter_ignored:${field}:flag_takes_precedence`);continue}merged[field]=inlineValue}}return merged}function prepareSearchInput(rawQuery,rawOptions){const inlineWarnings=[],inlineParse=parseInlineQueryFilters(rawQuery),hasInlineFilters=Object.keys(inlineParse.inlineFilters).length>0;if(hasInlineFilters&&inlineParse.residualQuery.trim().length===0)throw new PmCliError("Inline field:value tokens consumed the entire query, leaving no search terms.",EXIT_CODE.USAGE,{examples:["pm search auth tag:area:search","pm list --tag area:search --status open"],nextSteps:["Add keyword terms alongside the inline filters, or use pm list for pure tag/status/type/priority filtering."]});const query=hasInlineFilters?inlineParse.residualQuery:rawQuery,options=applyInlineQueryFilters(rawOptions,inlineParse.inlineFilters,inlineWarnings);return{query,options,inlineWarnings,highlight:options.highlight===!0,includeLinked:parseSearchBoolean(options.includeLinked),titleExact:parseSearchBoolean(options.titleExact),phraseExact:parseSearchBoolean(options.phraseExact),matchMode:parseSearchMatchMode(typeof options.matchMode=="string"?options.matchMode:void 0),minScoreOverride:parseMinScoreOverride(options.minScore),countOnly:options.count===!0,tokens:parseSearchTokens(query),normalizedQuery:normalizeSearchPhrase(query),limit:parseLimit(options.limit),projection:parseSearchProjection(options,rawQuery),modeWasExplicit:typeof options.mode=="string"&&options.mode.trim().length>0}}function assertSearchPagingOptions(options){if(options.after!==void 0&&options.count===!0)throw new PmCliError("Search --after cannot be combined with --count.",EXIT_CODE.USAGE)}export{applyInlineQueryFilters,assertSearchPagingOptions,parseInlineQueryFilters,prepareSearchInput};
2
2
  //# sourceMappingURL=input.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5a927991-1dbe-5906-a0eb-7da2534b6905")}catch(e2){}})();import{isTerminalStatus}from"../../../core/item/status.js";import{buildEventCorpus,buildPlanFlatCorpus,buildReminderCorpus}from"../../../core/search/corpus.js";import{tokenizeAlphaNumeric}from"../../../core/shared/text-normalization.js";import{compareTimestampStrings}from"../../../core/shared/time.js";import{normalizeSearchPhrase}from"../search-contracts.js";import{dependencyEntries,stringArray,textEntries}from"./filters.js";const LONG_QUERY_TOKEN_THRESHOLD=2;const LONG_QUERY_TITLE_EXACT_BONUS=120;const LONG_QUERY_PHRASE_MULTIPLIER=6;const ALL_TERMS_COVERAGE_BONUS=40;const EXACT_ID_MATCH_SCORE=1e3;const SHORT_ID_MATCH_SCORE=900;const HIGHLIGHT_OPEN="\xAB";const HIGHLIGHT_CLOSE="\xBB";const HIGHLIGHT_SNIPPET_RADIUS=60;function countOccurrences(haystack,needle){let count=0;let index=0;while(true){const foundAt=haystack.indexOf(needle,index);if(foundAt<0){return count}count+=1;index=foundAt+needle.length}}const SEARCHABLE_FIELD_BUILDERS=[{name:"title",weightKey:"title_weight",value:document=>document.metadata.title},{name:"description",weightKey:"description_weight",value:document=>document.metadata.description},{name:"tags",weightKey:"tags_weight",value:document=>stringArray(document.metadata.tags).join(" ")},{name:"status",weightKey:"status_weight",value:document=>typeof document.metadata.status==="string"?document.metadata.status:""},{name:"body",weightKey:"body_weight",value:document=>document.body},{name:"comments",weightKey:"comments_weight",value:document=>textEntries(document.metadata.comments).map(entry=>entry.text).join(" ")},{name:"notes",weightKey:"notes_weight",value:document=>textEntries(document.metadata.notes).map(entry=>entry.text).join(" ")},{name:"learnings",weightKey:"learnings_weight",value:document=>textEntries(document.metadata.learnings).map(entry=>entry.text).join(" ")},{name:"reminders",weightKey:"reminders_weight",value:document=>buildReminderCorpus(document.metadata).join(" ")},{name:"events",weightKey:"events_weight",value:document=>buildEventCorpus(document.metadata).join(" ")},{name:"dependencies",weightKey:"dependencies_weight",value:document=>dependencyEntries(document.metadata.dependencies).map(entry=>`${entry.id} ${entry.kind}`).join(" ")},{name:"plan",weightKey:"body_weight",value:document=>buildPlanFlatCorpus(document.metadata)}];const SEARCHABLE_FIELD_BUILDER_BY_NAME=new Map(SEARCHABLE_FIELD_BUILDERS.map(builder=>[builder.name,builder]));function markTokenRuns(text,tokens){const escaped=tokens.filter(token=>token.length>0).sort((left,right)=>right.length-left.length).map(value=>value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));if(escaped.length===0){return text}const pattern=new RegExp(escaped.join("|"),"gi");return text.replace(pattern,match=>`${HIGHLIGHT_OPEN}${match}${HIGHLIGHT_CLOSE}`)}function highlightFieldSnippet(text,tokens){if(text.length===0){return null}const lowerText=text.toLowerCase();let firstMatchIndex=-1;let firstMatchLength=0;for(const token of tokens){if(token.length===0){continue}const index=lowerText.indexOf(token);if(index>=0&&(firstMatchIndex<0||index<firstMatchIndex)){firstMatchIndex=index;firstMatchLength=token.length}}if(firstMatchIndex<0){return null}const windowStart=Math.max(0,firstMatchIndex-HIGHLIGHT_SNIPPET_RADIUS);const windowEnd=Math.min(text.length,firstMatchIndex+firstMatchLength+HIGHLIGHT_SNIPPET_RADIUS);const marked=markTokenRuns(text.slice(windowStart,windowEnd),tokens);const prefix=windowStart>0?"\u2026":"";const suffix=windowEnd<text.length?"\u2026":"";return`${prefix}${marked}${suffix}`}function buildHitHighlights(document,matchedFields,tokens){const highlights=[];for(const field of matchedFields){const builder=SEARCHABLE_FIELD_BUILDER_BY_NAME.get(field);if(builder===void 0){continue}const snippet=highlightFieldSnippet(builder.value(document),tokens);if(snippet!==null){highlights.push({field,snippet})}}return highlights}function buildSearchableScoringFields(document,linkedCorpus,tuning){return[...SEARCHABLE_FIELD_BUILDERS.map(builder=>({name:builder.name,value:builder.value(document),weight:tuning[builder.weightKey]})),{name:"linked_content",value:linkedCorpus,weight:tuning.linked_content_weight}]}function buildExactIdSearchHit(item,normalizedQuery,idPrefix){const normalizedId=normalizeSearchPhrase(item.id);const normalizedIdPrefix=typeof idPrefix==="string"?idPrefix.trim().toLowerCase():"";const normalizedIdPrefixPhrase=normalizeSearchPhrase(normalizedIdPrefix);const normalizedShortId=normalizedIdPrefixPhrase.length>0&&normalizedId.startsWith(normalizedIdPrefixPhrase)?normalizedId.slice(normalizedIdPrefixPhrase.length).trim():normalizedId;if(normalizedQuery!==normalizedId&&normalizedQuery!==normalizedShortId){return null}return{item,score:normalizedQuery===normalizedId?EXACT_ID_MATCH_SCORE:SHORT_ID_MATCH_SCORE,matched_fields:["id"],matched_all_terms:true,exact_id_match:true}}function scoreTokenMatches(tokens,titleTokenCounts,searchableFields,tuning,state){for(const token of tokens){const exactTitleMatches=titleTokenCounts.get(token)??0;if(exactTitleMatches>0){state.score+=exactTitleMatches*tuning.title_exact_bonus;state.matched.add("title");state.matchedTokens.add(token)}for(const field of searchableFields){const occurrences=countOccurrences(field.value.toLowerCase(),token);if(occurrences>0){state.score+=occurrences*field.weight;state.matched.add(field.name);state.matchedTokens.add(token)}}}}function scorePhraseMatches(item,normalizedQuery,searchableFields,state){const normalizedTitle=normalizeSearchPhrase(item.title);if(normalizedTitle===normalizedQuery){state.score+=LONG_QUERY_TITLE_EXACT_BONUS;state.matched.add("title")}for(const field of searchableFields){const phraseOccurrences=countOccurrences(normalizeSearchPhrase(field.value),normalizedQuery);if(phraseOccurrences>0){state.score+=phraseOccurrences*field.weight*LONG_QUERY_PHRASE_MULTIPLIER;state.matched.add(field.name)}}}function scoreDocument(document,tokens,normalizedQuery,linkedCorpus,tuning,idPrefix,applyCoverageBonus=false){const item=document.metadata;const exactIdHit=buildExactIdSearchHit(item,normalizedQuery,idPrefix);if(exactIdHit){return exactIdHit}const titleTokenCounts=new Map;for(const token of tokenizeAlphaNumeric(item.title)){titleTokenCounts.set(token,(titleTokenCounts.get(token)??0)+1)}const searchableFields=buildSearchableScoringFields(document,linkedCorpus,tuning);const state={score:0,matched:new Set,matchedTokens:new Set};scoreTokenMatches(tokens,titleTokenCounts,searchableFields,tuning,state);const distinctTokens=new Set(tokens);const matchedAllTerms=distinctTokens.size>0&&state.matchedTokens.size===distinctTokens.size;if(applyCoverageBonus&&distinctTokens.size>1&&matchedAllTerms){state.score+=ALL_TERMS_COVERAGE_BONUS}const isLongPhraseQuery=tokens.length>=LONG_QUERY_TOKEN_THRESHOLD&&normalizedQuery.includes(" ");if(isLongPhraseQuery){scorePhraseMatches(item,normalizedQuery,searchableFields,state)}if(state.score<=0){return null}return{item,score:state.score,matched_fields:[...state.matched].sort((a,b)=>a.localeCompare(b)),matched_all_terms:matchedAllTerms}}function sortHits(items,statusRegistry){return[...items].sort((a,b)=>{const byScore=b.score-a.score;if(byScore!==0)return byScore;const aTerminal=isTerminalStatus(a.item.status,statusRegistry);const bTerminal=isTerminalStatus(b.item.status,statusRegistry);if(aTerminal!==bTerminal){return aTerminal?1:-1}const byPriority=a.item.priority-b.item.priority;if(byPriority!==0)return byPriority;const byUpdated=compareTimestampStrings(b.item.updated_at,a.item.updated_at);if(byUpdated!==0)return byUpdated;return a.item.id.localeCompare(b.item.id)})}function buildHybridLexicalScore(document,tokens,normalizedQuery,includeLinked,linkedCorpusById,tuning,idPrefix,applyCoverageBonus=false){return scoreDocument(document,tokens,normalizedQuery,includeLinked?linkedCorpusById.get(document.metadata.id)??"":"",tuning,idPrefix,applyCoverageBonus)}function normalizeScoreMap(scoreById){if(scoreById.size===0){return new Map}let minScore=Number.POSITIVE_INFINITY;let maxScore=Number.NEGATIVE_INFINITY;for(const score of scoreById.values()){minScore=Math.min(minScore,score);maxScore=Math.max(maxScore,score)}if(maxScore===minScore){return new Map([...scoreById.keys()].map(id=>[id,1]))}const normalized=new Map;for(const[id,score]of scoreById){normalized.set(id,(score-minScore)/(maxScore-minScore))}return normalized}export{buildHitHighlights,buildHybridLexicalScore,countOccurrences,highlightFieldSnippet,markTokenRuns,normalizeScoreMap,scoreDocument,sortHits};
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]="a3f9e7fa-7ebf-5fc7-93a4-f12cff30f4ff")}catch{}})();import{isTerminalStatus}from"../../../core/item/status.js";import{buildEventCorpus,buildPlanFlatCorpus,buildReminderCorpus}from"../../../core/search/corpus.js";import{tokenizeAlphaNumeric}from"../../../core/shared/text-normalization.js";import{compareTimestampStrings}from"../../../core/shared/time.js";import{normalizeSearchPhrase}from"../search-contracts.js";import{dependencyEntries,stringArray,textEntries}from"./filters.js";const LONG_QUERY_TOKEN_THRESHOLD=2,LONG_QUERY_TITLE_EXACT_BONUS=120,LONG_QUERY_PHRASE_MULTIPLIER=6,ALL_TERMS_COVERAGE_BONUS=40,EXACT_ID_MATCH_SCORE=1e3,SHORT_ID_MATCH_SCORE=900,HIGHLIGHT_OPEN="\xAB",HIGHLIGHT_CLOSE="\xBB",HIGHLIGHT_SNIPPET_RADIUS=60;function countOccurrences(haystack,needle){let count=0,index=0;for(;;){const foundAt=haystack.indexOf(needle,index);if(foundAt<0)return count;count+=1,index=foundAt+needle.length}}const SEARCHABLE_FIELD_BUILDERS=[{name:"title",weightKey:"title_weight",value:document=>document.metadata.title},{name:"description",weightKey:"description_weight",value:document=>document.metadata.description},{name:"tags",weightKey:"tags_weight",value:document=>stringArray(document.metadata.tags).join(" ")},{name:"status",weightKey:"status_weight",value:document=>typeof document.metadata.status=="string"?document.metadata.status:""},{name:"body",weightKey:"body_weight",value:document=>document.body},{name:"comments",weightKey:"comments_weight",value:document=>textEntries(document.metadata.comments).map(entry=>entry.text).join(" ")},{name:"notes",weightKey:"notes_weight",value:document=>textEntries(document.metadata.notes).map(entry=>entry.text).join(" ")},{name:"learnings",weightKey:"learnings_weight",value:document=>textEntries(document.metadata.learnings).map(entry=>entry.text).join(" ")},{name:"reminders",weightKey:"reminders_weight",value:document=>buildReminderCorpus(document.metadata).join(" ")},{name:"events",weightKey:"events_weight",value:document=>buildEventCorpus(document.metadata).join(" ")},{name:"dependencies",weightKey:"dependencies_weight",value:document=>dependencyEntries(document.metadata.dependencies).map(entry=>`${entry.id} ${entry.kind}`).join(" ")},{name:"plan",weightKey:"body_weight",value:document=>buildPlanFlatCorpus(document.metadata)}],SEARCHABLE_FIELD_BUILDER_BY_NAME=new Map(SEARCHABLE_FIELD_BUILDERS.map(builder=>[builder.name,builder]));function markTokenRuns(text,tokens){const escaped=tokens.filter(token=>token.length>0).sort((left,right)=>right.length-left.length).map(value=>value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"));if(escaped.length===0)return text;const pattern=new RegExp(escaped.join("|"),"gi");return text.replace(pattern,match=>`${HIGHLIGHT_OPEN}${match}${HIGHLIGHT_CLOSE}`)}function highlightFieldSnippet(text,tokens){if(text.length===0)return null;const lowerText=text.toLowerCase();let firstMatchIndex=-1,firstMatchLength=0;for(const token of tokens){if(token.length===0)continue;const index=lowerText.indexOf(token);index>=0&&(firstMatchIndex<0||index<firstMatchIndex)&&(firstMatchIndex=index,firstMatchLength=token.length)}if(firstMatchIndex<0)return null;const windowStart=Math.max(0,firstMatchIndex-HIGHLIGHT_SNIPPET_RADIUS),windowEnd=Math.min(text.length,firstMatchIndex+firstMatchLength+HIGHLIGHT_SNIPPET_RADIUS),marked=markTokenRuns(text.slice(windowStart,windowEnd),tokens),prefix=windowStart>0?"\u2026":"",suffix=windowEnd<text.length?"\u2026":"";return`${prefix}${marked}${suffix}`}function buildHitHighlights(document,matchedFields,tokens){const highlights=[];for(const field of matchedFields){const builder=SEARCHABLE_FIELD_BUILDER_BY_NAME.get(field);if(builder===void 0)continue;const snippet=highlightFieldSnippet(builder.value(document),tokens);snippet!==null&&highlights.push({field,snippet})}return highlights}function buildSearchableScoringFields(document,linkedCorpus,tuning){return[...SEARCHABLE_FIELD_BUILDERS.map(builder=>({name:builder.name,value:builder.value(document),weight:tuning[builder.weightKey]})),{name:"linked_content",value:linkedCorpus,weight:tuning.linked_content_weight}]}function buildExactIdSearchHit(item,normalizedQuery,idPrefix){const normalizedId=normalizeSearchPhrase(item.id),normalizedIdPrefix=typeof idPrefix=="string"?idPrefix.trim().toLowerCase():"",normalizedIdPrefixPhrase=normalizeSearchPhrase(normalizedIdPrefix),normalizedShortId=normalizedIdPrefixPhrase.length>0&&normalizedId.startsWith(normalizedIdPrefixPhrase)?normalizedId.slice(normalizedIdPrefixPhrase.length).trim():normalizedId;return normalizedQuery!==normalizedId&&normalizedQuery!==normalizedShortId?null:{item,score:normalizedQuery===normalizedId?EXACT_ID_MATCH_SCORE:SHORT_ID_MATCH_SCORE,matched_fields:["id"],matched_all_terms:!0,exact_id_match:!0}}function scoreTokenMatches(tokens,titleTokenCounts,searchableFields,tuning,state){for(const token of tokens){const exactTitleMatches=titleTokenCounts.get(token)??0;exactTitleMatches>0&&(state.score+=exactTitleMatches*tuning.title_exact_bonus,state.matched.add("title"),state.matchedTokens.add(token));for(const field of searchableFields){const occurrences=countOccurrences(field.value.toLowerCase(),token);occurrences>0&&(state.score+=occurrences*field.weight,state.matched.add(field.name),state.matchedTokens.add(token))}}}function scorePhraseMatches(item,normalizedQuery,searchableFields,state){normalizeSearchPhrase(item.title)===normalizedQuery&&(state.score+=LONG_QUERY_TITLE_EXACT_BONUS,state.matched.add("title"));for(const field of searchableFields){const phraseOccurrences=countOccurrences(normalizeSearchPhrase(field.value),normalizedQuery);phraseOccurrences>0&&(state.score+=phraseOccurrences*field.weight*LONG_QUERY_PHRASE_MULTIPLIER,state.matched.add(field.name))}}function scoreDocument(document,tokens,normalizedQuery,linkedCorpus,tuning,idPrefix,applyCoverageBonus=!1){const item=document.metadata,exactIdHit=buildExactIdSearchHit(item,normalizedQuery,idPrefix);if(exactIdHit)return exactIdHit;const titleTokenCounts=new Map;for(const token of tokenizeAlphaNumeric(item.title))titleTokenCounts.set(token,(titleTokenCounts.get(token)??0)+1);const searchableFields=buildSearchableScoringFields(document,linkedCorpus,tuning),state={score:0,matched:new Set,matchedTokens:new Set};scoreTokenMatches(tokens,titleTokenCounts,searchableFields,tuning,state);const distinctTokens=new Set(tokens),matchedAllTerms=distinctTokens.size>0&&state.matchedTokens.size===distinctTokens.size;return applyCoverageBonus&&distinctTokens.size>1&&matchedAllTerms&&(state.score+=ALL_TERMS_COVERAGE_BONUS),tokens.length>=LONG_QUERY_TOKEN_THRESHOLD&&normalizedQuery.includes(" ")&&scorePhraseMatches(item,normalizedQuery,searchableFields,state),state.score<=0?null:{item,score:state.score,matched_fields:[...state.matched].sort((a,b)=>a.localeCompare(b)),matched_all_terms:matchedAllTerms}}function sortHits(items,statusRegistry){return[...items].sort((a,b)=>{const byScore=b.score-a.score;if(byScore!==0)return byScore;const aTerminal=isTerminalStatus(a.item.status,statusRegistry),bTerminal=isTerminalStatus(b.item.status,statusRegistry);if(aTerminal!==bTerminal)return aTerminal?1:-1;const byPriority=a.item.priority-b.item.priority;if(byPriority!==0)return byPriority;const byUpdated=compareTimestampStrings(b.item.updated_at,a.item.updated_at);return byUpdated!==0?byUpdated:a.item.id.localeCompare(b.item.id)})}function buildHybridLexicalScore(document,tokens,normalizedQuery,includeLinked,linkedCorpusById,tuning,idPrefix,applyCoverageBonus=!1){return scoreDocument(document,tokens,normalizedQuery,includeLinked?linkedCorpusById.get(document.metadata.id)??"":"",tuning,idPrefix,applyCoverageBonus)}function normalizeScoreMap(scoreById){if(scoreById.size===0)return new Map;let minScore=Number.POSITIVE_INFINITY,maxScore=Number.NEGATIVE_INFINITY;for(const score of scoreById.values())minScore=Math.min(minScore,score),maxScore=Math.max(maxScore,score);if(maxScore===minScore)return new Map([...scoreById.keys()].map(id=>[id,1]));const normalized=new Map;for(const[id,score]of scoreById)normalized.set(id,(score-minScore)/(maxScore-minScore));return normalized}export{buildHitHighlights,buildHybridLexicalScore,countOccurrences,highlightFieldSnippet,markTokenRuns,normalizeScoreMap,scoreDocument,sortHits};
2
2
  //# sourceMappingURL=lexical.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="984a6fdc-9383-5f89-8e71-b0d3ed2a35cc")}catch(e2){}})();import{toItemRecord}from"../../../core/item/item-record.js";import{nowIso}from"../../../core/shared/time.js";import{buildCompactSearchFilterSummary,buildVerboseSearchFilters}from"../search-rendering.js";import{buildHitHighlights}from"./lexical.js";function emptySearchResult(query,mode,matchMode,options,includeLinked,scoreThreshold,hybridSemanticWeight,queryExpansion,rerank,projection,warnings,runtimeFieldFilters,countOnly,modeSource){const countExtras=countOnly?{total:0,count_only:true}:{};const compactSummaryMode=projection.mode==="compact"&&options.compact===true;if(compactSummaryMode){const compactFilters=buildCompactSearchFilterSummary({mode,matchMode,options,includeLinked,titleExact:options.titleExact===true,phraseExact:options.phraseExact===true,scoreThreshold,hybridSemanticWeight,runtimeFieldFilters});return{query:query.trim(),mode,...compactModeSource(modeSource),items:[],count:0,...countExtras,filters:compactFilters,...warnings.length>0?{warnings}:{}}}const projectionFields=projection.mode==="full"?null:[...projection.fields];return{query:query.trim(),mode,mode_source:modeSource,items:[],count:0,...countExtras,filters:buildVerboseSearchFilters({effectiveMode:mode,matchMode,options,includeLinked,titleExact:options.titleExact===true,phraseExact:options.phraseExact===true,scoreThreshold,hybridSemanticWeight,queryExpansion,rerank,runtimeFieldFilters:runtimeFieldFilters??{}}),projection:{mode:projection.mode,fields:projectionFields},now:nowIso(),...warnings.length>0?{warnings}:{}}}function readSearchFieldValue(hit,field){const normalized=field.trim();if(normalized.length===0){return null}if(normalized==="score"){return hit.score}if(normalized==="matched_fields"){return hit.matched_fields}if(normalized.startsWith("item.")){const itemKey=normalized.slice("item.".length);if(itemKey.length===0){return null}const itemRecord2=toItemRecord(hit.item);return itemRecord2[itemKey]??null}const hitRecord=hit;const itemRecord=toItemRecord(hit.item);if(Object.prototype.hasOwnProperty.call(itemRecord,normalized)){return itemRecord[normalized]??null}if(Object.prototype.hasOwnProperty.call(hitRecord,normalized)){return hitRecord[normalized]??null}return null}function projectSearchHits(hits,projection){if(projection.mode==="full"){return hits.map(({matched_all_terms:_matchedAllTerms,exact_id_match:_exactIdMatch,...hit})=>hit)}return hits.map(hit=>{const projected={};for(const field of projection.fields){projected[field]=readSearchFieldValue(hit,field)}return projected})}function buildEmptySearchResultFromContext(response,countOnly){return emptySearchResult(response.query,response.effectiveMode,response.matchMode,response.options,response.includeLinked,response.scoreThreshold,response.hybridSemanticWeight,response.queryExpansion,response.rerank,response.projection,response.warnings,response.runtimeFieldFilters,countOnly,response.modeSource)}function buildCountOnlySearchResult(response,total){if(response.projection.mode==="compact"&&response.options.compact===true){return withSearchWarnings({query:response.query.trim(),mode:response.effectiveMode,...compactModeSource(response.modeSource),items:[],count:total,total,count_only:true,filters:buildCompactSearchFilterSummary({mode:response.effectiveMode,matchMode:response.matchMode,options:response.options,includeLinked:response.includeLinked,titleExact:response.titleExact,phraseExact:response.phraseExact,scoreThreshold:response.scoreThreshold,hybridSemanticWeight:response.hybridSemanticWeight,runtimeFieldFilters:response.runtimeFieldFilters})},response.warnings)}const projectionFields=response.projection.mode==="full"?null:[...response.projection.fields];return withSearchWarnings({query:response.query.trim(),mode:response.effectiveMode,mode_source:response.modeSource,items:[],count:total,total,count_only:true,filters:buildVerboseSearchFilters({effectiveMode:response.effectiveMode,matchMode:response.matchMode,options:response.options,includeLinked:response.includeLinked,titleExact:response.titleExact,phraseExact:response.phraseExact,scoreThreshold:response.scoreThreshold,hybridSemanticWeight:response.hybridSemanticWeight,queryExpansion:response.queryExpansion,rerank:response.rerank,runtimeFieldFilters:response.runtimeFieldFilters}),projection:{mode:response.projection.mode,fields:projectionFields},now:nowIso()},response.warnings)}function compactModeSource(source){return source==="settings"?{mode_source:source}:{}}function withSearchWarnings(result,warnings){if(warnings.length===0){return result}return{...result,warnings}}function withSearchWorkspaceMemory(result,memory){return memory?{...result,workspace_memory:memory}:result}function attachSearchHighlights(prepared,filteredDocuments,limited){if(!prepared.highlight){return{hits:limited,projection:prepared.projection}}const documentById=new Map(filteredDocuments.map(document=>[document.metadata.id,document]));const hits=limited.map(hit=>({...hit,highlights:buildHitHighlights(documentById.get(hit.item.id),hit.matched_fields,prepared.tokens)}));if(prepared.projection.mode==="full"||prepared.projection.fields.includes("highlights")){return{hits,projection:prepared.projection}}return{hits,projection:{mode:prepared.projection.mode,fields:[...prepared.projection.fields,"highlights"]}}}function buildSearchResultForHits(response,projectedItems,total,limitedCount,effectiveProjection,pageExtras){const truncationExtras=limitedCount<total?{total}:{};if(response.projection.mode==="compact"&&response.options.compact===true){return withSearchWarnings({query:response.query.trim(),mode:response.effectiveMode,...compactModeSource(response.modeSource),items:projectedItems,count:projectedItems.length,...truncationExtras,...pageExtras,filters:buildCompactSearchFilterSummary({mode:response.effectiveMode,matchMode:response.matchMode,options:response.options,includeLinked:response.includeLinked,titleExact:response.titleExact,phraseExact:response.phraseExact,scoreThreshold:response.scoreThreshold,hybridSemanticWeight:response.hybridSemanticWeight,runtimeFieldFilters:response.runtimeFieldFilters})},response.warnings)}const finalProjectionFields=effectiveProjection.mode==="full"?null:[...effectiveProjection.fields];return{query:response.query.trim(),mode:response.effectiveMode,mode_source:response.modeSource,items:projectedItems,count:projectedItems.length,...truncationExtras,...pageExtras,filters:buildVerboseSearchFilters({effectiveMode:response.effectiveMode,matchMode:response.matchMode,options:response.options,includeLinked:response.includeLinked,titleExact:response.titleExact,phraseExact:response.phraseExact,scoreThreshold:response.scoreThreshold,hybridSemanticWeight:response.hybridSemanticWeight,queryExpansion:response.queryExpansion,rerank:response.rerank,runtimeFieldFilters:response.runtimeFieldFilters}),projection:{mode:effectiveProjection.mode,fields:finalProjectionFields},now:nowIso(),...response.warnings.length>0?{warnings:response.warnings}:{}}}export{attachSearchHighlights,buildCountOnlySearchResult,buildEmptySearchResultFromContext,buildSearchResultForHits,emptySearchResult,projectSearchHits,readSearchFieldValue,withSearchWorkspaceMemory};
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]="d7beacb7-66a5-581f-93f0-68ceb4b8e41e")}catch{}})();import{toItemRecord}from"../../../core/item/item-record.js";import{nowIso}from"../../../core/shared/time.js";import{buildCompactSearchFilterSummary,buildVerboseSearchFilters}from"../search-rendering.js";import{buildHitHighlights}from"./lexical.js";function emptySearchResult(query,mode,matchMode,options,includeLinked,scoreThreshold,hybridSemanticWeight,queryExpansion,rerank,projection,warnings,runtimeFieldFilters,countOnly,modeSource){const countExtras=countOnly?{total:0,count_only:!0}:{};if(projection.mode==="compact"&&options.compact===!0){const compactFilters=buildCompactSearchFilterSummary({mode,matchMode,options,includeLinked,titleExact:options.titleExact===!0,phraseExact:options.phraseExact===!0,scoreThreshold,hybridSemanticWeight,runtimeFieldFilters});return{query:query.trim(),mode,...compactModeSource(modeSource),items:[],count:0,...countExtras,filters:compactFilters,...warnings.length>0?{warnings}:{}}}const projectionFields=projection.mode==="full"?null:[...projection.fields];return{query:query.trim(),mode,mode_source:modeSource,items:[],count:0,...countExtras,filters:buildVerboseSearchFilters({effectiveMode:mode,matchMode,options,includeLinked,titleExact:options.titleExact===!0,phraseExact:options.phraseExact===!0,scoreThreshold,hybridSemanticWeight,queryExpansion,rerank,runtimeFieldFilters:runtimeFieldFilters??{}}),projection:{mode:projection.mode,fields:projectionFields},now:nowIso(),...warnings.length>0?{warnings}:{}}}function readSearchFieldValue(hit,field){const normalized=field.trim();if(normalized.length===0)return null;if(normalized==="score")return hit.score;if(normalized==="matched_fields")return hit.matched_fields;if(normalized.startsWith("item.")){const itemKey=normalized.slice(5);return itemKey.length===0?null:toItemRecord(hit.item)[itemKey]??null}const hitRecord=hit,itemRecord=toItemRecord(hit.item);return Object.prototype.hasOwnProperty.call(itemRecord,normalized)?itemRecord[normalized]??null:Object.prototype.hasOwnProperty.call(hitRecord,normalized)?hitRecord[normalized]??null:null}function projectSearchHits(hits,projection){return projection.mode==="full"?hits.map(({matched_all_terms:_matchedAllTerms,exact_id_match:_exactIdMatch,...hit})=>hit):hits.map(hit=>{const projected={};for(const field of projection.fields)projected[field]=readSearchFieldValue(hit,field);return projected})}function buildEmptySearchResultFromContext(response,countOnly){return emptySearchResult(response.query,response.effectiveMode,response.matchMode,response.options,response.includeLinked,response.scoreThreshold,response.hybridSemanticWeight,response.queryExpansion,response.rerank,response.projection,response.warnings,response.runtimeFieldFilters,countOnly,response.modeSource)}function buildCountOnlySearchResult(response,total){if(response.projection.mode==="compact"&&response.options.compact===!0)return withSearchWarnings({query:response.query.trim(),mode:response.effectiveMode,...compactModeSource(response.modeSource),items:[],count:total,total,count_only:!0,filters:buildCompactSearchFilterSummary({mode:response.effectiveMode,matchMode:response.matchMode,options:response.options,includeLinked:response.includeLinked,titleExact:response.titleExact,phraseExact:response.phraseExact,scoreThreshold:response.scoreThreshold,hybridSemanticWeight:response.hybridSemanticWeight,runtimeFieldFilters:response.runtimeFieldFilters})},response.warnings);const projectionFields=response.projection.mode==="full"?null:[...response.projection.fields];return withSearchWarnings({query:response.query.trim(),mode:response.effectiveMode,mode_source:response.modeSource,items:[],count:total,total,count_only:!0,filters:buildVerboseSearchFilters({effectiveMode:response.effectiveMode,matchMode:response.matchMode,options:response.options,includeLinked:response.includeLinked,titleExact:response.titleExact,phraseExact:response.phraseExact,scoreThreshold:response.scoreThreshold,hybridSemanticWeight:response.hybridSemanticWeight,queryExpansion:response.queryExpansion,rerank:response.rerank,runtimeFieldFilters:response.runtimeFieldFilters}),projection:{mode:response.projection.mode,fields:projectionFields},now:nowIso()},response.warnings)}function compactModeSource(source){return source==="settings"?{mode_source:source}:{}}function withSearchWarnings(result,warnings){return warnings.length===0?result:{...result,warnings}}function withSearchWorkspaceMemory(result,memory){return memory?{...result,workspace_memory:memory}:result}function attachSearchHighlights(prepared,filteredDocuments,limited){if(!prepared.highlight)return{hits:limited,projection:prepared.projection};const documentById=new Map(filteredDocuments.map(document=>[document.metadata.id,document])),hits=limited.map(hit=>({...hit,highlights:buildHitHighlights(documentById.get(hit.item.id),hit.matched_fields,prepared.tokens)}));return prepared.projection.mode==="full"||prepared.projection.fields.includes("highlights")?{hits,projection:prepared.projection}:{hits,projection:{mode:prepared.projection.mode,fields:[...prepared.projection.fields,"highlights"]}}}function buildSearchResultForHits(response,projectedItems,total,limitedCount,effectiveProjection,pageExtras){const truncationExtras=limitedCount<total?{total}:{};if(response.projection.mode==="compact"&&response.options.compact===!0)return withSearchWarnings({query:response.query.trim(),mode:response.effectiveMode,...compactModeSource(response.modeSource),items:projectedItems,count:projectedItems.length,...truncationExtras,...pageExtras,filters:buildCompactSearchFilterSummary({mode:response.effectiveMode,matchMode:response.matchMode,options:response.options,includeLinked:response.includeLinked,titleExact:response.titleExact,phraseExact:response.phraseExact,scoreThreshold:response.scoreThreshold,hybridSemanticWeight:response.hybridSemanticWeight,runtimeFieldFilters:response.runtimeFieldFilters})},response.warnings);const finalProjectionFields=effectiveProjection.mode==="full"?null:[...effectiveProjection.fields];return{query:response.query.trim(),mode:response.effectiveMode,mode_source:response.modeSource,items:projectedItems,count:projectedItems.length,...truncationExtras,...pageExtras,filters:buildVerboseSearchFilters({effectiveMode:response.effectiveMode,matchMode:response.matchMode,options:response.options,includeLinked:response.includeLinked,titleExact:response.titleExact,phraseExact:response.phraseExact,scoreThreshold:response.scoreThreshold,hybridSemanticWeight:response.hybridSemanticWeight,queryExpansion:response.queryExpansion,rerank:response.rerank,runtimeFieldFilters:response.runtimeFieldFilters}),projection:{mode:effectiveProjection.mode,fields:finalProjectionFields},now:nowIso(),...response.warnings.length>0?{warnings:response.warnings}:{}}}export{attachSearchHighlights,buildCountOnlySearchResult,buildEmptySearchResultFromContext,buildSearchResultForHits,emptySearchResult,projectSearchHits,readSearchFieldValue,withSearchWorkspaceMemory};
2
2
  //# sourceMappingURL=response.js.map
@@ -1,3 +1,4 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0175d395-3f87-5a93-8d4f-a3150aaf16ae")}catch(e2){}})();import{getActiveExtensionRegistrations}from"../../../core/extensions/index.js";import{resolveRegisteredSearchProvider,resolveRegisteredVectorStoreAdapter}from"../../../core/extensions/runtime-registrations.js";import{buildBm25Index,flattenSearchCorpusText,scoreBm25Query,tokenizeBm25}from"../../../core/search/bm25.js";import{readVectorizationStatusLedger}from"../../../core/search/cache.js";import{buildSearchCorpus}from"../../../core/search/corpus.js";import{executeEmbeddingRequest}from"../../../core/search/providers.js";import{buildDeterministicQueryExpansions,mergeQueryExpansions,normalizeQueryExpansionOutput,normalizeRerankOutput,rerankCandidatesWithEmbeddings}from"../../../core/search/relevance.js";import{collectStaleVectorizationIds}from"../../../core/search/staleness.js";import{executeVectorQuery}from"../../../core/search/vector-stores.js";import{EXIT_CODE}from"../../../core/shared/constants.js";import{PmCliError}from"../../../core/shared/errors.js";import{toNonEmptyStringOrUndefined}from"../../../core/shared/primitives.js";import{normalizeScoreMap}from"./lexical.js";function collectErrorCauseCodes(error){const codes=[];let current=error;for(let depth=0;depth<5&&current&&typeof current==="object";depth+=1){const code=current.code;if(typeof code==="string"){codes.push(code.toLowerCase())}current=current.cause}return codes.join(" ")}function classifyImplicitSemanticFallbackReason(error){const message=(error instanceof Error?error.message:String(error)).toLowerCase();const causeCodes=collectErrorCauseCodes(error);const haystack=`${message} ${causeCodes}`;if(haystack.includes("timed out")||haystack.includes("timeout")||haystack.includes("etimedout")){return"timeout"}if(haystack.includes("econnrefused")||haystack.includes("connection refused")||haystack.includes("connect ")||haystack.includes("enotfound")||haystack.includes("eai_again")||haystack.includes("econnreset")||haystack.includes("fetch failed")){return"connection"}return"error"}function buildExplicitSemanticFallbackWarning(requestedMode,error){const reason=classifyImplicitSemanticFallbackReason(error);return`search_${requestedMode}_fallback:${reason}:using_keyword_mode`}function resolveVectorIndexRecovery(registrations){const hasReindex=registrations?.commands?.some(registration=>registration.command.trim()==="reindex")===true;return hasReindex?{command:"pm reindex --mode hybrid",args:["reindex","--mode","hybrid"]}:{command:"pm install search-advanced --project",args:["install","search-advanced","--project"],follow_up_command:"pm reindex --mode hybrid",follow_up_args:["reindex","--mode","hybrid"]}}async function maybeEmitVectorIndexStaleWarning(pmRoot,filteredDocuments,warnings){try{const ledger=await readVectorizationStatusLedger(pmRoot);if(ledger.warnings.length>0){warnings.push(...ledger.warnings)}const staleIds=collectStaleVectorizationIds(filteredDocuments.map(document=>({id:document.metadata.id,updated_at:document.metadata.updated_at})),ledger.entries);if(staleIds.length===0){return}const recovery=resolveVectorIndexRecovery(getActiveExtensionRegistrations());warnings.push(...formatVectorIndexRecoveryWarnings(staleIds.length,recovery));process.stderr.write(`[pm] warning: ${staleIds.length} item${staleIds.length===1?" is":"s are"} new or modified since the last reindex and ${staleIds.length===1?"is":"are"} NOT in the semantic index yet \u2014 run '${recovery.command}'${recovery.follow_up_command?`, then '${recovery.follow_up_command}'`:""}. (Write-time embedding is governed by search.mutation_refresh_policy; staleness means the embed was skipped, failed, or the backend was unreachable.)
2
- `)}catch{}}function formatVectorIndexRecoveryWarnings(staleCount,recovery){return[`vector_index_stale:${staleCount}`,`vector_index_recovery:${recovery.args.join(" ")}`,...recovery.follow_up_args?[`vector_index_recovery_follow_up:${recovery.follow_up_args.join(" ")}`]:[]]}function requireSemanticDependencies(requestedMode,providerResolution,vectorResolution,hasExtensionVectorQuery){if(!providerResolution.active){throw new PmCliError(`Search mode '${requestedMode}' requires a configured embedding provider in settings.providers.openai or settings.providers.ollama`,EXIT_CODE.USAGE)}if(!vectorResolution.active&&!hasExtensionVectorQuery){throw new PmCliError(`Search mode '${requestedMode}' requires a configured vector store in settings.vector_store.qdrant/settings.vector_store.lancedb or an extension adapter selected by settings.vector_store.adapter`,EXIT_CODE.USAGE)}return{provider:providerResolution.active,vectorStore:vectorResolution.active??null}}const toOptionalNonEmptyString=toNonEmptyStringOrUndefined;function resolveExtensionSearchProviderByName(providerName){const registrations=getActiveExtensionRegistrations();const resolved=resolveRegisteredSearchProvider(registrations,providerName);if(!resolved){return null}const runtimeDefinition=resolved.runtime_definition??resolved.definition;const query=runtimeDefinition.query;const queryExpansion=runtimeDefinition.queryExpansion??runtimeDefinition.query_expansion;const rerank=runtimeDefinition.rerank;const registeredName=toOptionalNonEmptyString(runtimeDefinition.name)??toOptionalNonEmptyString(resolved.definition.name)??providerName;if(!registeredName){return null}const hooks={providerName:registeredName,...typeof query==="function"?{query}:{},...typeof queryExpansion==="function"?{queryExpansion}:{},...typeof rerank==="function"?{rerank}:{}};if(!hooks.query&&!hooks.queryExpansion&&!hooks.rerank){return null}return hooks}function resolveExtensionSearchProvider(settings){const providerName=toOptionalNonEmptyString(settings.search?.provider);const resolved=resolveExtensionSearchProviderByName(providerName);if(!resolved?.query){return null}return{providerName:resolved.providerName,query:resolved.query}}function resolveExtensionVectorAdapter(settings){const registrations=getActiveExtensionRegistrations();const adapterName=toOptionalNonEmptyString(settings.vector_store?.adapter);const resolved=resolveRegisteredVectorStoreAdapter(registrations,adapterName);if(!resolved){return null}const runtimeDefinition=resolved.runtime_definition??resolved.definition;const query=runtimeDefinition.query;if(typeof query!=="function"){return null}const upsert=runtimeDefinition.upsert;const runtimeAdapterName=toOptionalNonEmptyString(runtimeDefinition.name)??toOptionalNonEmptyString(resolved.definition.name)??adapterName??"extension";return{adapterName:runtimeAdapterName,query,...typeof upsert==="function"?{upsert}:{}}}function normalizeExtensionProviderHits(providerName,raw,filteredById){const rawHits=Array.isArray(raw)?raw:raw?.hits;if(!Array.isArray(rawHits)){throw new PmCliError(`Extension search provider "${providerName}" must return an array of hits or { hits: [...] }`,EXIT_CODE.GENERIC_FAILURE)}const seen=new Set;const hits=[];for(const rawHit of rawHits){if(typeof rawHit!=="object"||rawHit===null){continue}const id=toOptionalNonEmptyString(rawHit.id);const score=rawHit.score;if(!id||typeof score!=="number"||!Number.isFinite(score)||seen.has(id)){continue}const document=filteredById.get(id);if(!document){continue}const matchedFieldsRaw=rawHit.matched_fields;const matchedFields=Array.isArray(matchedFieldsRaw)&&matchedFieldsRaw.every(entry=>typeof entry==="string")?[...new Set(matchedFieldsRaw.map(entry=>entry.trim()).filter(entry=>entry.length>0))].sort((a,b)=>a.localeCompare(b)):[`provider:${providerName}`];seen.add(id);hits.push({item:document.metadata,score,matched_fields:matchedFields})}return hits}function buildSemanticHits(vectorHits,filteredById){const semanticHits=[];const semanticScores=new Map;for(const vectorHit of vectorHits){if(semanticScores.has(vectorHit.id)){continue}const document=filteredById.get(vectorHit.id);if(!document){continue}semanticScores.set(vectorHit.id,vectorHit.score);semanticHits.push({item:document.metadata,score:vectorHit.score,matched_fields:["semantic"]})}return{semanticHits,semanticScores}}function forceExactIdHitsToTop(rankedHits,keywordHits){const exactIdHits=keywordHits.filter(hit=>hit.exact_id_match===true);if(exactIdHits.length===0){return rankedHits}const exactIdIds=new Set(exactIdHits.map(hit=>hit.item.id));const remaining=rankedHits.filter(hit=>!exactIdIds.has(hit.item.id));const maxRemainingScore=remaining.reduce((max,hit)=>Math.max(max,hit.score),0);const orderedExactHits=exactIdHits.sort((left,right)=>right.score-left.score);const bandBase=maxRemainingScore+orderedExactHits.length+1;const promoted=orderedExactHits.map((hit,index)=>({...hit,score:bandBase-index,matched_fields:["id"]}));return[...promoted,...remaining]}function combineHybridHits(filteredById,semanticScores,keywordHits,hybridSemanticWeight,semanticFieldLabel="semantic"){const keywordScores=new Map(keywordHits.map(entry=>[entry.item.id,entry.score]));const keywordMatches=new Map(keywordHits.map(entry=>[entry.item.id,entry.matched_fields]));const normalizedSemantic=normalizeScoreMap(semanticScores);const normalizedKeyword=normalizeScoreMap(keywordScores);const candidateIds=new Set([...semanticScores.keys(),...keywordScores.keys()]);const keywordWeight=1-hybridSemanticWeight;return[...candidateIds].map(id=>{const document=filteredById.get(id);const semanticScore=normalizedSemantic.get(id)??0;const keywordScore=normalizedKeyword.get(id)??0;const combinedScore=semanticScore*hybridSemanticWeight+keywordScore*keywordWeight;if(combinedScore<=0){return null}const matchedFields=new Set;if(semanticScores.has(id)){matchedFields.add(semanticFieldLabel)}for(const field of keywordMatches.get(id)??[]){matchedFields.add(field)}return{item:document.metadata,score:combinedScore,matched_fields:[...matchedFields].sort((a,b)=>a.localeCompare(b))}}).filter(entry=>entry!==null)}function resolveBuiltInBm25Mode(params){const normalized=params.configuredProvider?.trim().toLowerCase();if(normalized==="bm25"){return"explicit"}if(normalized==="auto"&&!params.hasEmbeddingProvider&&!params.hasExtensionSearchProvider){return"auto-fallback"}return null}function computeBuiltInBm25Hits(params){const bm25Documents=params.filteredDocuments.map(document=>({id:document.metadata.id,text:flattenSearchCorpusText(buildSearchCorpus(document,{fields:params.corpusFields}))}));const index=buildBm25Index(bm25Documents);const bm25Scores=scoreBm25Query(index,tokenizeBm25(params.query),params.bm25Params);const filteredById=new Map(params.filteredDocuments.map(document=>[document.metadata.id,document]));if(params.requestedMode==="semantic"){const semanticHits=[...bm25Scores].map(([id,score])=>({item:filteredById.get(id).metadata,score,matched_fields:["bm25"]}));return forceExactIdHitsToTop(semanticHits,params.keywordHits)}const hybridHits=combineHybridHits(filteredById,bm25Scores,params.keywordHits,params.hybridSemanticWeight,"bm25");return forceExactIdHitsToTop(hybridHits,params.keywordHits)}function mergeVectorHitsById(vectorHitGroups){const bestById=new Map;for(const group of vectorHitGroups){for(const hit of group){const existing=bestById.get(hit.id);if(!existing||hit.score>existing.score){bestById.set(hit.id,hit)}}}const merged=[...bestById.values()];merged.sort((left,right)=>{if(left.score!==right.score){return right.score-left.score}return left.id.localeCompare(right.id)});return merged}function buildRerankCorpus(document){const metadata=document.metadata;const tags=Array.isArray(metadata?.tags)?metadata.tags.join(" "):"";return[metadata?.title,metadata?.description,metadata?.type,metadata?.status,tags,document.body].map(entry=>typeof entry==="string"?entry.trim():"").filter(entry=>entry.length>0).join("\n")}async function resolveExpandedSemanticQueries(context,queryTrimmed){const baseExpandedQueries=context.queryExpansion.enabled?buildDeterministicQueryExpansions(queryTrimmed,context.queryExpansion.max_queries):[queryTrimmed];const expandedQueries=baseExpandedQueries.length>0?baseExpandedQueries:[queryTrimmed];if(!context.queryExpansion.enabled){return expandedQueries}if(context.queryExpansionExtension?.expand){try{const rawExpansion=await Promise.resolve(context.queryExpansionExtension.expand({query:queryTrimmed,mode:context.requestedMode,settings:context.settings}));return mergeQueryExpansions(expandedQueries,normalizeQueryExpansionOutput(rawExpansion),context.queryExpansion.max_queries)}catch{context.warnings.push(`search_query_expansion_provider_failed:${context.queryExpansionExtension.providerName}:using_builtin`);return expandedQueries}}if(context.queryExpansion.provider&&context.queryExpansion.provider!=="openai"&&context.queryExpansion.provider!=="ollama"){context.warnings.push(`search_query_expansion_provider_unavailable:${context.queryExpansion.provider}:using_builtin`)}return expandedQueries}async function executeSemanticVectorQuery(context,semanticVector,semanticLimit,vectorQueryOptions){if(context.extensionVectorAdapter?.query){try{return await Promise.resolve(context.extensionVectorAdapter.query({vector:semanticVector,limit:semanticLimit,settings:context.settings}))}catch(error){if(!context.vectorStore){throw new PmCliError(`Extension vector adapter query failed and no built-in fallback store is configured (${error instanceof Error?error.message:String(error)})`,EXIT_CODE.GENERIC_FAILURE)}context.warnings.push(`search_vector_adapter_failed:${context.extensionVectorAdapter.adapterName}:using_builtin`);return await executeVectorQuery(context.vectorStore,semanticVector,semanticLimit,vectorQueryOptions)}}if(context.vectorStore){return await executeVectorQuery(context.vectorStore,semanticVector,semanticLimit,vectorQueryOptions)}throw new PmCliError("Semantic search requires either a configured vector store or an extension vector adapter query handler",EXIT_CODE.USAGE)}function buildRerankCandidateContexts(hybridHits,filteredById,topK){const sortedForCandidates=[...hybridHits].sort((left,right)=>{if(left.score!==right.score){return right.score-left.score}return left.item.id.localeCompare(right.item.id)});return sortedForCandidates.slice(0,topK).map(hit=>{const document=filteredById.get(hit.item.id);return document?{hit,text:buildRerankCorpus(document)}:null}).filter(entry=>entry!==null)}async function resolveExtensionRerankScores(context,queryTrimmed,candidateContexts){if(!context.rerankExtension?.rerank){return null}try{const rawRerank=await Promise.resolve(context.rerankExtension.rerank({query:queryTrimmed,mode:"hybrid",model:context.rerank.model,top_k:context.rerank.top_k,settings:context.settings,candidates:candidateContexts.map(entry=>({id:entry.hit.item.id,text:entry.text,score:entry.hit.score}))}));const normalizedRerank=normalizeRerankOutput(rawRerank);if(normalizedRerank.length>0){return new Map(normalizedRerank.map(entry=>[entry.id,entry.score]))}context.warnings.push(`search_rerank_provider_invalid_response:${context.rerankExtension.providerName}:using_builtin`);return null}catch{context.warnings.push(`search_rerank_provider_failed:${context.rerankExtension.providerName}:using_builtin`);return null}}async function resolveRerankScores(context,queryTrimmed,candidateContexts){const extensionScores=await resolveExtensionRerankScores(context,queryTrimmed,candidateContexts);if(extensionScores){return extensionScores}const rerankCandidates=candidateContexts.map(entry=>({id:entry.hit.item.id,text:entry.text}));try{return await rerankCandidatesWithEmbeddings(context.provider,context.rerank.model,queryTrimmed,rerankCandidates,context.embeddingTimeoutMs)}catch{context.warnings.push("search_rerank_failed:using_hybrid_scores");return null}}function applyRerankScores(hybridHits,rerankScores){const rerankedIds=new Set(rerankScores.keys());const rerankedHits=hybridHits.map(hit=>{const rerankScore=rerankScores.get(hit.item.id);if(rerankScore===void 0){return hit}const matchedFields=new Set(hit.matched_fields);matchedFields.add("rerank");return{...hit,score:rerankScore,matched_fields:[...matchedFields].sort((left,right)=>left.localeCompare(right))}});rerankedHits.sort((left,right)=>{const leftWasReranked=rerankedIds.has(left.item.id);const rightWasReranked=rerankedIds.has(right.item.id);if(leftWasReranked!==rightWasReranked){return leftWasReranked?-1:1}if(left.score!==right.score){return right.score-left.score}return left.item.id.localeCompare(right.item.id)});return rerankedHits}async function applyHybridRerank(context,queryTrimmed,hybridHits,filteredById){if(!context.rerank.enabled||hybridHits.length<=1){return hybridHits}const candidateContexts=buildRerankCandidateContexts(hybridHits,filteredById,context.rerank.top_k);const rerankScores=await resolveRerankScores(context,queryTrimmed,candidateContexts);return rerankScores&&rerankScores.size>0?applyRerankScores(hybridHits,rerankScores):hybridHits}async function computeSemanticOrHybridHits(context){const semanticLimit=Math.max(context.limit??context.maxResults,context.maxResults);const embeddingOptions=context.embeddingTimeoutMs!==void 0?{timeout_ms:context.embeddingTimeoutMs}:{};const vectorQueryOptions=context.vectorQueryTimeoutMs!==void 0?{timeout_ms:context.vectorQueryTimeoutMs}:{};const queryTrimmed=context.query.trim();const expandedQueries=await resolveExpandedSemanticQueries(context,queryTrimmed);const queryVectors=await executeEmbeddingRequest(context.provider,expandedQueries,embeddingOptions);const queryVectorGroups=await Promise.all(queryVectors.map(async semanticVector=>await executeSemanticVectorQuery(context,semanticVector,semanticLimit,vectorQueryOptions)));const vectorHits=mergeVectorHitsById(queryVectorGroups);const filteredById=new Map(context.filteredDocuments.map(document=>[document.metadata.id,document]));const{semanticHits,semanticScores}=buildSemanticHits(vectorHits,filteredById);const vectorMatchCount=semanticScores.size;if(context.requestedMode==="semantic"){return{hits:forceExactIdHitsToTop(semanticHits,context.keywordHits),vectorMatchCount}}const hybridHits=await applyHybridRerank(context,queryTrimmed,combineHybridHits(filteredById,semanticScores,context.keywordHits,context.hybridSemanticWeight),filteredById);return{hits:forceExactIdHitsToTop(hybridHits,context.keywordHits),vectorMatchCount}}function resolveQueryExpansionExtension(queryExpansion){const provider=resolveExtensionSearchProviderByName(queryExpansion.provider??void 0);return provider?.queryExpansion?{providerName:provider.providerName,expand:provider.queryExpansion}:null}function resolveRerankExtension(settings){const provider=resolveExtensionSearchProviderByName(toOptionalNonEmptyString(settings.search?.provider));return provider?.rerank?{providerName:provider.providerName,rerank:provider.rerank}:null}export{buildExplicitSemanticFallbackWarning,buildRerankCorpus,buildSemanticHits,classifyImplicitSemanticFallbackReason,collectErrorCauseCodes,combineHybridHits,computeBuiltInBm25Hits,computeSemanticOrHybridHits,formatVectorIndexRecoveryWarnings,maybeEmitVectorIndexStaleWarning,mergeVectorHitsById,normalizeExtensionProviderHits,requireSemanticDependencies,resolveBuiltInBm25Mode,resolveExtensionSearchProvider,resolveExtensionSearchProviderByName,resolveExtensionVectorAdapter,resolveQueryExpansionExtension,resolveRerankExtension,resolveVectorIndexRecovery,toOptionalNonEmptyString};
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]="c8484fbd-5fb2-56aa-9d69-26646be262a9")}catch{}})();import{getActiveExtensionRegistrations}from"../../../core/extensions/index.js";import{resolveRegisteredSearchProvider,resolveRegisteredVectorStoreAdapter}from"../../../core/extensions/runtime-registrations.js";import{buildBm25Index,flattenSearchCorpusText,scoreBm25Query,tokenizeBm25}from"../../../core/search/bm25.js";import{readVectorizationStatusLedger}from"../../../core/search/cache.js";import{buildSearchCorpus}from"../../../core/search/corpus.js";import{executeEmbeddingRequest}from"../../../core/search/providers.js";import{buildDeterministicQueryExpansions,mergeQueryExpansions,normalizeQueryExpansionOutput,normalizeRerankOutput,rerankCandidatesWithEmbeddings}from"../../../core/search/relevance.js";import{collectStaleVectorizationIds}from"../../../core/search/staleness.js";import{executeVectorQuery}from"../../../core/search/vector-stores.js";import{EXIT_CODE}from"../../../core/shared/constants.js";import{PmCliError}from"../../../core/shared/errors.js";import{toNonEmptyStringOrUndefined}from"../../../core/shared/primitives.js";import{normalizeScoreMap}from"./lexical.js";function collectErrorCauseCodes(error){const codes=[];let current=error;for(let depth=0;depth<5&&current&&typeof current=="object";depth+=1){const code=current.code;typeof code=="string"&&codes.push(code.toLowerCase()),current=current.cause}return codes.join(" ")}function classifyImplicitSemanticFallbackReason(error){const message=(error instanceof Error?error.message:String(error)).toLowerCase(),causeCodes=collectErrorCauseCodes(error),haystack=`${message} ${causeCodes}`;return haystack.includes("timed out")||haystack.includes("timeout")||haystack.includes("etimedout")?"timeout":haystack.includes("econnrefused")||haystack.includes("connection refused")||haystack.includes("connect ")||haystack.includes("enotfound")||haystack.includes("eai_again")||haystack.includes("econnreset")||haystack.includes("fetch failed")?"connection":"error"}function buildExplicitSemanticFallbackWarning(requestedMode,error){const reason=classifyImplicitSemanticFallbackReason(error);return`search_${requestedMode}_fallback:${reason}:using_keyword_mode`}function resolveVectorIndexRecovery(registrations){return registrations?.commands?.some(registration=>registration.command.trim()==="reindex")===!0?{command:"pm reindex --mode hybrid",args:["reindex","--mode","hybrid"]}:{command:"pm install search-advanced --project",args:["install","search-advanced","--project"],follow_up_command:"pm reindex --mode hybrid",follow_up_args:["reindex","--mode","hybrid"]}}async function maybeEmitVectorIndexStaleWarning(pmRoot,filteredDocuments,warnings){try{const ledger=await readVectorizationStatusLedger(pmRoot);ledger.warnings.length>0&&warnings.push(...ledger.warnings);const staleIds=collectStaleVectorizationIds(filteredDocuments.map(document=>({id:document.metadata.id,updated_at:document.metadata.updated_at})),ledger.entries);if(staleIds.length===0)return;const recovery=resolveVectorIndexRecovery(getActiveExtensionRegistrations());warnings.push(...formatVectorIndexRecoveryWarnings(staleIds.length,recovery)),process.stderr.write(`[pm] warning: ${staleIds.length} item${staleIds.length===1?" is":"s are"} new or modified since the last reindex and ${staleIds.length===1?"is":"are"} NOT in the semantic index yet \u2014 run '${recovery.command}'${recovery.follow_up_command?`, then '${recovery.follow_up_command}'`:""}. (Write-time embedding is governed by search.mutation_refresh_policy; staleness means the embed was skipped, failed, or the backend was unreachable.)
2
+ `)}catch{}}function formatVectorIndexRecoveryWarnings(staleCount,recovery){return[`vector_index_stale:${staleCount}`,`vector_index_recovery:${recovery.args.join(" ")}`,...recovery.follow_up_args?[`vector_index_recovery_follow_up:${recovery.follow_up_args.join(" ")}`]:[]]}function requireSemanticDependencies(requestedMode,providerResolution,vectorResolution,hasExtensionVectorQuery){if(!providerResolution.active)throw new PmCliError(`Search mode '${requestedMode}' requires a configured embedding provider in settings.providers.openai or settings.providers.ollama`,EXIT_CODE.USAGE);if(!vectorResolution.active&&!hasExtensionVectorQuery)throw new PmCliError(`Search mode '${requestedMode}' requires a configured vector store in settings.vector_store.qdrant/settings.vector_store.lancedb or an extension adapter selected by settings.vector_store.adapter`,EXIT_CODE.USAGE);return{provider:providerResolution.active,vectorStore:vectorResolution.active??null}}const toOptionalNonEmptyString=toNonEmptyStringOrUndefined;function resolveExtensionSearchProviderByName(providerName){const registrations=getActiveExtensionRegistrations(),resolved=resolveRegisteredSearchProvider(registrations,providerName);if(!resolved)return null;const runtimeDefinition=resolved.runtime_definition??resolved.definition,query=runtimeDefinition.query,queryExpansion=runtimeDefinition.queryExpansion??runtimeDefinition.query_expansion,rerank=runtimeDefinition.rerank,registeredName=toOptionalNonEmptyString(runtimeDefinition.name)??toOptionalNonEmptyString(resolved.definition.name)??providerName;if(!registeredName)return null;const hooks={providerName:registeredName,...typeof query=="function"?{query}:{},...typeof queryExpansion=="function"?{queryExpansion}:{},...typeof rerank=="function"?{rerank}:{}};return!hooks.query&&!hooks.queryExpansion&&!hooks.rerank?null:hooks}function resolveExtensionSearchProvider(settings){const providerName=toOptionalNonEmptyString(settings.search?.provider),resolved=resolveExtensionSearchProviderByName(providerName);return resolved?.query?{providerName:resolved.providerName,query:resolved.query}:null}function resolveExtensionVectorAdapter(settings){const registrations=getActiveExtensionRegistrations(),adapterName=toOptionalNonEmptyString(settings.vector_store?.adapter),resolved=resolveRegisteredVectorStoreAdapter(registrations,adapterName);if(!resolved)return null;const runtimeDefinition=resolved.runtime_definition??resolved.definition,query=runtimeDefinition.query;if(typeof query!="function")return null;const upsert=runtimeDefinition.upsert;return{adapterName:toOptionalNonEmptyString(runtimeDefinition.name)??toOptionalNonEmptyString(resolved.definition.name)??adapterName??"extension",query,...typeof upsert=="function"?{upsert}:{}}}function normalizeExtensionProviderHits(providerName,raw,filteredById){const rawHits=Array.isArray(raw)?raw:raw?.hits;if(!Array.isArray(rawHits))throw new PmCliError(`Extension search provider "${providerName}" must return an array of hits or { hits: [...] }`,EXIT_CODE.GENERIC_FAILURE);const seen=new Set,hits=[];for(const rawHit of rawHits){if(typeof rawHit!="object"||rawHit===null)continue;const id=toOptionalNonEmptyString(rawHit.id),score=rawHit.score;if(!id||typeof score!="number"||!Number.isFinite(score)||seen.has(id))continue;const document=filteredById.get(id);if(!document)continue;const matchedFieldsRaw=rawHit.matched_fields,matchedFields=Array.isArray(matchedFieldsRaw)&&matchedFieldsRaw.every(entry=>typeof entry=="string")?[...new Set(matchedFieldsRaw.map(entry=>entry.trim()).filter(entry=>entry.length>0))].sort((a,b)=>a.localeCompare(b)):[`provider:${providerName}`];seen.add(id),hits.push({item:document.metadata,score,matched_fields:matchedFields})}return hits}function buildSemanticHits(vectorHits,filteredById){const semanticHits=[],semanticScores=new Map;for(const vectorHit of vectorHits){if(semanticScores.has(vectorHit.id))continue;const document=filteredById.get(vectorHit.id);document&&(semanticScores.set(vectorHit.id,vectorHit.score),semanticHits.push({item:document.metadata,score:vectorHit.score,matched_fields:["semantic"]}))}return{semanticHits,semanticScores}}function forceExactIdHitsToTop(rankedHits,keywordHits){const exactIdHits=keywordHits.filter(hit=>hit.exact_id_match===!0);if(exactIdHits.length===0)return rankedHits;const exactIdIds=new Set(exactIdHits.map(hit=>hit.item.id)),remaining=rankedHits.filter(hit=>!exactIdIds.has(hit.item.id)),maxRemainingScore=remaining.reduce((max,hit)=>Math.max(max,hit.score),0),orderedExactHits=exactIdHits.sort((left,right)=>right.score-left.score),bandBase=maxRemainingScore+orderedExactHits.length+1;return[...orderedExactHits.map((hit,index)=>({...hit,score:bandBase-index,matched_fields:["id"]})),...remaining]}function combineHybridHits(filteredById,semanticScores,keywordHits,hybridSemanticWeight,semanticFieldLabel="semantic"){const keywordScores=new Map(keywordHits.map(entry=>[entry.item.id,entry.score])),keywordMatches=new Map(keywordHits.map(entry=>[entry.item.id,entry.matched_fields])),normalizedSemantic=normalizeScoreMap(semanticScores),normalizedKeyword=normalizeScoreMap(keywordScores),candidateIds=new Set([...semanticScores.keys(),...keywordScores.keys()]),keywordWeight=1-hybridSemanticWeight;return[...candidateIds].map(id=>{const document=filteredById.get(id),semanticScore=normalizedSemantic.get(id)??0,keywordScore=normalizedKeyword.get(id)??0,combinedScore=semanticScore*hybridSemanticWeight+keywordScore*keywordWeight;if(combinedScore<=0)return null;const matchedFields=new Set;semanticScores.has(id)&&matchedFields.add(semanticFieldLabel);for(const field of keywordMatches.get(id)??[])matchedFields.add(field);return{item:document.metadata,score:combinedScore,matched_fields:[...matchedFields].sort((a,b)=>a.localeCompare(b))}}).filter(entry=>entry!==null)}function resolveBuiltInBm25Mode(params){const normalized=params.configuredProvider?.trim().toLowerCase();return normalized==="bm25"?"explicit":normalized==="auto"&&!params.hasEmbeddingProvider&&!params.hasExtensionSearchProvider?"auto-fallback":null}function computeBuiltInBm25Hits(params){const bm25Documents=params.filteredDocuments.map(document=>({id:document.metadata.id,text:flattenSearchCorpusText(buildSearchCorpus(document,{fields:params.corpusFields}))})),index=buildBm25Index(bm25Documents),bm25Scores=scoreBm25Query(index,tokenizeBm25(params.query),params.bm25Params),filteredById=new Map(params.filteredDocuments.map(document=>[document.metadata.id,document]));if(params.requestedMode==="semantic"){const semanticHits=[...bm25Scores].map(([id,score])=>({item:filteredById.get(id).metadata,score,matched_fields:["bm25"]}));return forceExactIdHitsToTop(semanticHits,params.keywordHits)}const hybridHits=combineHybridHits(filteredById,bm25Scores,params.keywordHits,params.hybridSemanticWeight,"bm25");return forceExactIdHitsToTop(hybridHits,params.keywordHits)}function mergeVectorHitsById(vectorHitGroups){const bestById=new Map;for(const group of vectorHitGroups)for(const hit of group){const existing=bestById.get(hit.id);(!existing||hit.score>existing.score)&&bestById.set(hit.id,hit)}const merged=[...bestById.values()];return merged.sort((left,right)=>left.score!==right.score?right.score-left.score:left.id.localeCompare(right.id)),merged}function buildRerankCorpus(document){const metadata=document.metadata,tags=Array.isArray(metadata?.tags)?metadata.tags.join(" "):"";return[metadata?.title,metadata?.description,metadata?.type,metadata?.status,tags,document.body].map(entry=>typeof entry=="string"?entry.trim():"").filter(entry=>entry.length>0).join(`
3
+ `)}async function resolveExpandedSemanticQueries(context,queryTrimmed){const baseExpandedQueries=context.queryExpansion.enabled?buildDeterministicQueryExpansions(queryTrimmed,context.queryExpansion.max_queries):[queryTrimmed],expandedQueries=baseExpandedQueries.length>0?baseExpandedQueries:[queryTrimmed];if(!context.queryExpansion.enabled)return expandedQueries;if(context.queryExpansionExtension?.expand)try{const rawExpansion=await Promise.resolve(context.queryExpansionExtension.expand({query:queryTrimmed,mode:context.requestedMode,settings:context.settings}));return mergeQueryExpansions(expandedQueries,normalizeQueryExpansionOutput(rawExpansion),context.queryExpansion.max_queries)}catch{return context.warnings.push(`search_query_expansion_provider_failed:${context.queryExpansionExtension.providerName}:using_builtin`),expandedQueries}return context.queryExpansion.provider&&context.queryExpansion.provider!=="openai"&&context.queryExpansion.provider!=="ollama"&&context.warnings.push(`search_query_expansion_provider_unavailable:${context.queryExpansion.provider}:using_builtin`),expandedQueries}async function executeSemanticVectorQuery(context,semanticVector,semanticLimit,vectorQueryOptions){if(context.extensionVectorAdapter?.query)try{return await Promise.resolve(context.extensionVectorAdapter.query({vector:semanticVector,limit:semanticLimit,settings:context.settings}))}catch(error){if(!context.vectorStore)throw new PmCliError(`Extension vector adapter query failed and no built-in fallback store is configured (${error instanceof Error?error.message:String(error)})`,EXIT_CODE.GENERIC_FAILURE);return context.warnings.push(`search_vector_adapter_failed:${context.extensionVectorAdapter.adapterName}:using_builtin`),await executeVectorQuery(context.vectorStore,semanticVector,semanticLimit,vectorQueryOptions)}if(context.vectorStore)return await executeVectorQuery(context.vectorStore,semanticVector,semanticLimit,vectorQueryOptions);throw new PmCliError("Semantic search requires either a configured vector store or an extension vector adapter query handler",EXIT_CODE.USAGE)}function buildRerankCandidateContexts(hybridHits,filteredById,topK){return[...hybridHits].sort((left,right)=>left.score!==right.score?right.score-left.score:left.item.id.localeCompare(right.item.id)).slice(0,topK).map(hit=>{const document=filteredById.get(hit.item.id);return document?{hit,text:buildRerankCorpus(document)}:null}).filter(entry=>entry!==null)}async function resolveExtensionRerankScores(context,queryTrimmed,candidateContexts){if(!context.rerankExtension?.rerank)return null;try{const rawRerank=await Promise.resolve(context.rerankExtension.rerank({query:queryTrimmed,mode:"hybrid",model:context.rerank.model,top_k:context.rerank.top_k,settings:context.settings,candidates:candidateContexts.map(entry=>({id:entry.hit.item.id,text:entry.text,score:entry.hit.score}))})),normalizedRerank=normalizeRerankOutput(rawRerank);return normalizedRerank.length>0?new Map(normalizedRerank.map(entry=>[entry.id,entry.score])):(context.warnings.push(`search_rerank_provider_invalid_response:${context.rerankExtension.providerName}:using_builtin`),null)}catch{return context.warnings.push(`search_rerank_provider_failed:${context.rerankExtension.providerName}:using_builtin`),null}}async function resolveRerankScores(context,queryTrimmed,candidateContexts){const extensionScores=await resolveExtensionRerankScores(context,queryTrimmed,candidateContexts);if(extensionScores)return extensionScores;const rerankCandidates=candidateContexts.map(entry=>({id:entry.hit.item.id,text:entry.text}));try{return await rerankCandidatesWithEmbeddings(context.provider,context.rerank.model,queryTrimmed,rerankCandidates,context.embeddingTimeoutMs)}catch{return context.warnings.push("search_rerank_failed:using_hybrid_scores"),null}}function applyRerankScores(hybridHits,rerankScores){const rerankedIds=new Set(rerankScores.keys()),rerankedHits=hybridHits.map(hit=>{const rerankScore=rerankScores.get(hit.item.id);if(rerankScore===void 0)return hit;const matchedFields=new Set(hit.matched_fields);return matchedFields.add("rerank"),{...hit,score:rerankScore,matched_fields:[...matchedFields].sort((left,right)=>left.localeCompare(right))}});return rerankedHits.sort((left,right)=>{const leftWasReranked=rerankedIds.has(left.item.id),rightWasReranked=rerankedIds.has(right.item.id);return leftWasReranked!==rightWasReranked?leftWasReranked?-1:1:left.score!==right.score?right.score-left.score:left.item.id.localeCompare(right.item.id)}),rerankedHits}async function applyHybridRerank(context,queryTrimmed,hybridHits,filteredById){if(!context.rerank.enabled||hybridHits.length<=1)return hybridHits;const candidateContexts=buildRerankCandidateContexts(hybridHits,filteredById,context.rerank.top_k),rerankScores=await resolveRerankScores(context,queryTrimmed,candidateContexts);return rerankScores&&rerankScores.size>0?applyRerankScores(hybridHits,rerankScores):hybridHits}async function computeSemanticOrHybridHits(context){const semanticLimit=Math.max(context.limit??context.maxResults,context.maxResults),embeddingOptions=context.embeddingTimeoutMs!==void 0?{timeout_ms:context.embeddingTimeoutMs}:{},vectorQueryOptions=context.vectorQueryTimeoutMs!==void 0?{timeout_ms:context.vectorQueryTimeoutMs}:{},queryTrimmed=context.query.trim(),expandedQueries=await resolveExpandedSemanticQueries(context,queryTrimmed),queryVectors=await executeEmbeddingRequest(context.provider,expandedQueries,embeddingOptions),queryVectorGroups=await Promise.all(queryVectors.map(async semanticVector=>await executeSemanticVectorQuery(context,semanticVector,semanticLimit,vectorQueryOptions))),vectorHits=mergeVectorHitsById(queryVectorGroups),filteredById=new Map(context.filteredDocuments.map(document=>[document.metadata.id,document])),{semanticHits,semanticScores}=buildSemanticHits(vectorHits,filteredById),vectorMatchCount=semanticScores.size;if(context.requestedMode==="semantic")return{hits:forceExactIdHitsToTop(semanticHits,context.keywordHits),vectorMatchCount};const hybridHits=await applyHybridRerank(context,queryTrimmed,combineHybridHits(filteredById,semanticScores,context.keywordHits,context.hybridSemanticWeight),filteredById);return{hits:forceExactIdHitsToTop(hybridHits,context.keywordHits),vectorMatchCount}}function resolveQueryExpansionExtension(queryExpansion){const provider=resolveExtensionSearchProviderByName(queryExpansion.provider??void 0);return provider?.queryExpansion?{providerName:provider.providerName,expand:provider.queryExpansion}:null}function resolveRerankExtension(settings){const provider=resolveExtensionSearchProviderByName(toOptionalNonEmptyString(settings.search?.provider));return provider?.rerank?{providerName:provider.providerName,rerank:provider.rerank}:null}export{buildExplicitSemanticFallbackWarning,buildRerankCorpus,buildSemanticHits,classifyImplicitSemanticFallbackReason,collectErrorCauseCodes,combineHybridHits,computeBuiltInBm25Hits,computeSemanticOrHybridHits,formatVectorIndexRecoveryWarnings,maybeEmitVectorIndexStaleWarning,mergeVectorHitsById,normalizeExtensionProviderHits,requireSemanticDependencies,resolveBuiltInBm25Mode,resolveExtensionSearchProvider,resolveExtensionSearchProviderByName,resolveExtensionVectorAdapter,resolveQueryExpansionExtension,resolveRerankExtension,resolveVectorIndexRecovery,toOptionalNonEmptyString};
3
4
  //# sourceMappingURL=semantic.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="e5f69492-4892-582c-af77-a8e142d02d37")}catch(e2){}})();
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]="e5f69492-4892-582c-af77-a8e142d02d37")}catch{}})();
2
2
  //# sourceMappingURL=types.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8920d604-004f-5546-a855-a192e7a86e0a")}catch(e2){}})();import{coerceNumberInRange}from"../../core/shared/primitives.js";import{resolveIsoOrRelative}from"../../core/shared/time.js";import{renderPmCommand}from"../command-line.js";import{EXIT_CODE,PmCliError}from"../runtime-primitives.js";import{DEFAULT_COMPACT_SEARCH_FIELDS,listSearchProjectionFields}from"./projection-contracts.js";function parseSearchMode(raw){if(raw===void 0)return"keyword";const normalized=raw.trim().toLowerCase();if(normalized!=="keyword"&&normalized!=="semantic"&&normalized!=="hybrid"){throw new PmCliError("Search mode must be one of keyword|semantic|hybrid",EXIT_CODE.USAGE)}return normalized}function parseSearchBoolean(raw){return raw===true}function parseSemanticWeightOverride(raw){return coerceNumberInRange(raw,0,1)??void 0}function parseSearchMatchMode(raw){if(raw===void 0)return"or";const normalized=raw.trim().toLowerCase();if(normalized!=="and"&&normalized!=="or"&&normalized!=="exact"){throw new PmCliError("Search --match-mode must be one of and|or|exact",EXIT_CODE.USAGE)}return normalized}function parseMinScoreOverride(raw){if(raw===void 0||raw===null||raw==="")return void 0;const parsed=typeof raw==="number"?raw:Number(String(raw).trim());if(!Number.isFinite(parsed)||parsed<0){throw new PmCliError("Search --min-score must be a finite number >= 0",EXIT_CODE.USAGE)}return parsed}function parseTimestampWindow(raw,fieldLabel){if(raw==null)return void 0;const value=String(raw).trim();if(value.length===0)return void 0;return resolveIsoOrRelative(value,new Date,fieldLabel)}function normalizeSearchPhrase(value){return value.toLowerCase().replace(/\s+/g," ").trim()}function parseSearchDeadline(raw,fieldLabel){if(raw===void 0)return void 0;return resolveIsoOrRelative(raw,new Date,fieldLabel)}function parseFieldSelectors(raw){if(raw===void 0)return void 0;const selectors=raw.split(",").map(entry=>entry.trim()).filter(entry=>entry.length>0);if(selectors.length===0){throw new PmCliError("Search --fields requires a comma-separated list of field names",EXIT_CODE.USAGE)}return[...new Set(selectors)]}function parseSearchProjection(options,query="<query>"){const compactRequested=options.compact===true;const fullRequested=options.full===true;const fieldSelectors=parseFieldSelectors(options.fields);const enabledModes=Number(compactRequested)+Number(fullRequested)+Number(fieldSelectors!==void 0);if(enabledModes>1){throw new PmCliError("Search projection options are mutually exclusive. Use one of --compact, --full, or --fields.",EXIT_CODE.USAGE,{code:"projection_options_mutually_exclusive",recovery:{suggested_retry:renderPmCommand(["search",query,"--full"]),suggested_retry_args:["search",query,"--full"]}})}if(compactRequested){return{mode:"compact",fields:[...DEFAULT_COMPACT_SEARCH_FIELDS]}}if(fullRequested)return{mode:"full",fields:[]};if(fieldSelectors)return{mode:"fields",fields:fieldSelectors};return{mode:"full",fields:[]}}function validateSearchProjectionFields(projection,runtimeFieldRegistry,query="<query>"){if(projection.mode!=="fields")return;const allowedValues=listSearchProjectionFields(runtimeFieldRegistry.definitions.flatMap(field=>[field.key,field.metadata_key]));const allowed=new Set(allowedValues);const unknown=projection.fields.filter(field=>{const normalized=field.trim();return!allowed.has(normalized)});if(unknown.length>0){const suggestedRetryArguments=["search",query,"--fields",projection.fields.filter(field=>!unknown.includes(field)).join(",")||"id,title,status,score"];throw new PmCliError(`Unknown search --fields value(s): ${unknown.join(", ")}`,EXIT_CODE.USAGE,{code:"unknown_field_projection",examples:["pm search <query> --fields id,title,status,score","pm search <query> --fields id,title,item.description,matched_fields"],nextSteps:["Use item.<field> for explicit item metadata fields, or run pm search --help for projection examples."],recovery:{allowed_values:allowedValues,suggested_retry:renderPmCommand(suggestedRetryArguments),suggested_retry_args:suggestedRetryArguments}})}}function parseSearchTokens(query){const normalized=normalizeSearchPhrase(query);if(!normalized){throw new PmCliError("Search query must not be empty",EXIT_CODE.USAGE)}return normalized.split(/\s+/u).filter(Boolean)}function resolveSearchMaxResults(settings){const candidate=settings.search?.max_results;if(typeof candidate==="number"&&Number.isFinite(candidate)&&candidate>0){return Math.floor(candidate)}return 50}const SEARCH_DEFAULT_MODE_VALUES=["auto","keyword","semantic","hybrid"];function resolveSearchDefaultModeSetting(settings){const candidate=settings.search?.default_mode;if(typeof candidate!=="string"){return"auto"}const normalized=candidate.trim().toLowerCase();return SEARCH_DEFAULT_MODE_VALUES.includes(normalized)?normalized:"auto"}function resolveEffectiveSearchMode(params){if(typeof params.requested==="string"&&params.requested.trim().length>0){return{mode:parseSearchMode(params.requested),source:"explicit"}}const declared=resolveSearchDefaultModeSetting(params.settings);if(declared!=="auto"){return{mode:declared,source:"settings"}}return{mode:params.semanticRunnable?"hybrid":"keyword",source:"auto"}}function resolveSearchScoreThreshold(settings){const candidate=settings.search?.score_threshold;return typeof candidate==="number"&&Number.isFinite(candidate)?candidate:0}function resolveHybridSemanticWeight(settings){const candidate=settings.search?.hybrid_semantic_weight;if(typeof candidate==="number"&&Number.isFinite(candidate)&&candidate>=0&&candidate<=1){return candidate}return .7}function resolveSearchTuning(settings){const defaults={title_exact_bonus:10,title_weight:48,description_weight:5,tags_weight:6,status_weight:2,body_weight:1,comments_weight:1,notes_weight:1,learnings_weight:1,reminders_weight:2,events_weight:2,dependencies_weight:3,linked_content_weight:1};const tuning=settings.search?.tuning;if(!tuning)return defaults;const resolveWeight=(candidate,fallback)=>typeof candidate==="number"&&Number.isFinite(candidate)&&candidate>=0?candidate:fallback;return{title_exact_bonus:resolveWeight(tuning.title_exact_bonus,defaults.title_exact_bonus),title_weight:resolveWeight(tuning.title_weight,defaults.title_weight),description_weight:resolveWeight(tuning.description_weight,defaults.description_weight),tags_weight:resolveWeight(tuning.tags_weight,defaults.tags_weight),status_weight:resolveWeight(tuning.status_weight,defaults.status_weight),body_weight:resolveWeight(tuning.body_weight,defaults.body_weight),comments_weight:resolveWeight(tuning.comments_weight,defaults.comments_weight),notes_weight:resolveWeight(tuning.notes_weight,defaults.notes_weight),learnings_weight:resolveWeight(tuning.learnings_weight,defaults.learnings_weight),reminders_weight:resolveWeight(tuning.reminders_weight,defaults.reminders_weight),events_weight:resolveWeight(tuning.events_weight,defaults.events_weight),dependencies_weight:resolveWeight(tuning.dependencies_weight,defaults.dependencies_weight),linked_content_weight:resolveWeight(tuning.linked_content_weight,defaults.linked_content_weight)}}export{SEARCH_DEFAULT_MODE_VALUES,normalizeSearchPhrase,parseMinScoreOverride,parseSearchBoolean,parseSearchDeadline,parseSearchMatchMode,parseSearchMode,parseSearchProjection,parseSearchTokens,parseSemanticWeightOverride,parseTimestampWindow,resolveEffectiveSearchMode,resolveHybridSemanticWeight,resolveSearchDefaultModeSetting,resolveSearchMaxResults,resolveSearchScoreThreshold,resolveSearchTuning,validateSearchProjectionFields};
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]="f7f0c9be-34c2-55fb-8676-de58e96c382f")}catch{}})();import{coerceNumberInRange}from"../../core/shared/primitives.js";import{resolveIsoOrRelative}from"../../core/shared/time.js";import{renderPmCommand}from"../command-line.js";import{EXIT_CODE,PmCliError}from"../runtime-primitives.js";import{DEFAULT_COMPACT_SEARCH_FIELDS,listSearchProjectionFields}from"./projection-contracts.js";function parseSearchMode(raw){if(raw===void 0)return"keyword";const normalized=raw.trim().toLowerCase();if(normalized!=="keyword"&&normalized!=="semantic"&&normalized!=="hybrid")throw new PmCliError("Search mode must be one of keyword|semantic|hybrid",EXIT_CODE.USAGE);return normalized}function parseSearchBoolean(raw){return raw===!0}function parseSemanticWeightOverride(raw){return coerceNumberInRange(raw,0,1)??void 0}function parseSearchMatchMode(raw){if(raw===void 0)return"or";const normalized=raw.trim().toLowerCase();if(normalized!=="and"&&normalized!=="or"&&normalized!=="exact")throw new PmCliError("Search --match-mode must be one of and|or|exact",EXIT_CODE.USAGE);return normalized}function parseMinScoreOverride(raw){if(raw==null||raw==="")return;const parsed=typeof raw=="number"?raw:Number(String(raw).trim());if(!Number.isFinite(parsed)||parsed<0)throw new PmCliError("Search --min-score must be a finite number >= 0",EXIT_CODE.USAGE);return parsed}function parseTimestampWindow(raw,fieldLabel){if(raw==null)return;const value=String(raw).trim();if(value.length!==0)return resolveIsoOrRelative(value,new Date,fieldLabel)}function normalizeSearchPhrase(value){return value.toLowerCase().replace(/\s+/g," ").trim()}function parseSearchDeadline(raw,fieldLabel){if(raw!==void 0)return resolveIsoOrRelative(raw,new Date,fieldLabel)}function parseFieldSelectors(raw){if(raw===void 0)return;const selectors=raw.split(",").map(entry=>entry.trim()).filter(entry=>entry.length>0);if(selectors.length===0)throw new PmCliError("Search --fields requires a comma-separated list of field names",EXIT_CODE.USAGE);return[...new Set(selectors)]}function parseSearchProjection(options,query="<query>"){const compactRequested=options.compact===!0,fullRequested=options.full===!0,fieldSelectors=parseFieldSelectors(options.fields);if(Number(compactRequested)+Number(fullRequested)+ +(fieldSelectors!==void 0)>1)throw new PmCliError("Search projection options are mutually exclusive. Use one of --compact, --full, or --fields.",EXIT_CODE.USAGE,{code:"projection_options_mutually_exclusive",recovery:{suggested_retry:renderPmCommand(["search",query,"--full"]),suggested_retry_args:["search",query,"--full"]}});return compactRequested?{mode:"compact",fields:[...DEFAULT_COMPACT_SEARCH_FIELDS]}:fullRequested?{mode:"full",fields:[]}:fieldSelectors?{mode:"fields",fields:fieldSelectors}:{mode:"full",fields:[]}}function validateSearchProjectionFields(projection,runtimeFieldRegistry,query="<query>"){if(projection.mode!=="fields")return;const allowedValues=listSearchProjectionFields(runtimeFieldRegistry.definitions.flatMap(field=>[field.key,field.metadata_key])),allowed=new Set(allowedValues),unknown=projection.fields.filter(field=>{const normalized=field.trim();return!allowed.has(normalized)});if(unknown.length>0){const suggestedRetryArguments=["search",query,"--fields",projection.fields.filter(field=>!unknown.includes(field)).join(",")||"id,title,status,score"];throw new PmCliError(`Unknown search --fields value(s): ${unknown.join(", ")}`,EXIT_CODE.USAGE,{code:"unknown_field_projection",examples:["pm search <query> --fields id,title,status,score","pm search <query> --fields id,title,item.description,matched_fields"],nextSteps:["Use item.<field> for explicit item metadata fields, or run pm search --help for projection examples."],recovery:{allowed_values:allowedValues,suggested_retry:renderPmCommand(suggestedRetryArguments),suggested_retry_args:suggestedRetryArguments}})}}function parseSearchTokens(query){const normalized=normalizeSearchPhrase(query);if(!normalized)throw new PmCliError("Search query must not be empty",EXIT_CODE.USAGE);return normalized.split(/\s+/u).filter(Boolean)}function resolveSearchMaxResults(settings){const candidate=settings.search?.max_results;return typeof candidate=="number"&&Number.isFinite(candidate)&&candidate>0?Math.floor(candidate):50}const SEARCH_DEFAULT_MODE_VALUES=["auto","keyword","semantic","hybrid"];function resolveSearchDefaultModeSetting(settings){const candidate=settings.search?.default_mode;if(typeof candidate!="string")return"auto";const normalized=candidate.trim().toLowerCase();return SEARCH_DEFAULT_MODE_VALUES.includes(normalized)?normalized:"auto"}function resolveEffectiveSearchMode(params){if(typeof params.requested=="string"&&params.requested.trim().length>0)return{mode:parseSearchMode(params.requested),source:"explicit"};const declared=resolveSearchDefaultModeSetting(params.settings);return declared!=="auto"?{mode:declared,source:"settings"}:{mode:params.semanticRunnable?"hybrid":"keyword",source:"auto"}}function resolveSearchScoreThreshold(settings){const candidate=settings.search?.score_threshold;return typeof candidate=="number"&&Number.isFinite(candidate)?candidate:0}function resolveHybridSemanticWeight(settings){const candidate=settings.search?.hybrid_semantic_weight;return typeof candidate=="number"&&Number.isFinite(candidate)&&candidate>=0&&candidate<=1?candidate:.7}function resolveSearchTuning(settings){const defaults={title_exact_bonus:10,title_weight:48,description_weight:5,tags_weight:6,status_weight:2,body_weight:1,comments_weight:1,notes_weight:1,learnings_weight:1,reminders_weight:2,events_weight:2,dependencies_weight:3,linked_content_weight:1},tuning=settings.search?.tuning;if(!tuning)return defaults;const resolveWeight=(candidate,fallback)=>typeof candidate=="number"&&Number.isFinite(candidate)&&candidate>=0?candidate:fallback;return{title_exact_bonus:resolveWeight(tuning.title_exact_bonus,defaults.title_exact_bonus),title_weight:resolveWeight(tuning.title_weight,defaults.title_weight),description_weight:resolveWeight(tuning.description_weight,defaults.description_weight),tags_weight:resolveWeight(tuning.tags_weight,defaults.tags_weight),status_weight:resolveWeight(tuning.status_weight,defaults.status_weight),body_weight:resolveWeight(tuning.body_weight,defaults.body_weight),comments_weight:resolveWeight(tuning.comments_weight,defaults.comments_weight),notes_weight:resolveWeight(tuning.notes_weight,defaults.notes_weight),learnings_weight:resolveWeight(tuning.learnings_weight,defaults.learnings_weight),reminders_weight:resolveWeight(tuning.reminders_weight,defaults.reminders_weight),events_weight:resolveWeight(tuning.events_weight,defaults.events_weight),dependencies_weight:resolveWeight(tuning.dependencies_weight,defaults.dependencies_weight),linked_content_weight:resolveWeight(tuning.linked_content_weight,defaults.linked_content_weight)}}export{SEARCH_DEFAULT_MODE_VALUES,normalizeSearchPhrase,parseMinScoreOverride,parseSearchBoolean,parseSearchDeadline,parseSearchMatchMode,parseSearchMode,parseSearchProjection,parseSearchTokens,parseSemanticWeightOverride,parseTimestampWindow,resolveEffectiveSearchMode,resolveHybridSemanticWeight,resolveSearchDefaultModeSetting,resolveSearchMaxResults,resolveSearchScoreThreshold,resolveSearchTuning,validateSearchProjectionFields};
2
2
  //# sourceMappingURL=search-contracts.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="1c634b84-b239-5b9f-be64-b1c8e03fc25b")}catch(e2){}})();import{createQueryFingerprint,paginateQueryRows,selectCursorSemanticOptions}from"../pagination.js";import path from"node:path";import{SEARCH_FLAG_CONTRACTS}from"../cli-contracts/flag-contracts.js";function createSearchCursorFingerprint(options){return createQueryFingerprint("search",{pmRoot:options.pmRoot===void 0?void 0:path.resolve(options.pmRoot),query:options.query.trim(),mode:options.mode,options:selectCursorSemanticOptions(options.searchOptions,SEARCH_FLAG_CONTRACTS)})}function resolveSearchPage(options){const page=paginateQueryRows(options.sorted,{cursor:options.searchOptions.after,fingerprint:createSearchCursorFingerprint(options),limit:options.limit,readId:hit=>hit.item.id});return{limited:page.rows,pageExtras:{applied_limit:options.limit,...page.has_more?{has_more:true,truncated:true}:{},...page.next_cursor?{next_cursor:page.next_cursor}:{}}}}export{createSearchCursorFingerprint,resolveSearchPage};
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]="e1f303b6-a641-5550-b58c-ef023b68d5e4")}catch{}})();import{createQueryFingerprint,paginateQueryRows,selectCursorSemanticOptions}from"../pagination.js";import path from"node:path";import{SEARCH_FLAG_CONTRACTS}from"../cli-contracts/flag-contracts.js";function createSearchCursorFingerprint(options){return createQueryFingerprint("search",{pmRoot:options.pmRoot===void 0?void 0:path.resolve(options.pmRoot),query:options.query.trim(),mode:options.mode,options:selectCursorSemanticOptions(options.searchOptions,SEARCH_FLAG_CONTRACTS)})}function resolveSearchPage(options){const page=paginateQueryRows(options.sorted,{cursor:options.searchOptions.after,fingerprint:createSearchCursorFingerprint(options),limit:options.limit,readId:hit=>hit.item.id});return{limited:page.rows,pageExtras:{applied_limit:options.limit,...page.has_more?{has_more:!0,truncated:!0}:{},...page.next_cursor?{next_cursor:page.next_cursor}:{}}}}export{createSearchCursorFingerprint,resolveSearchPage};
2
2
  //# sourceMappingURL=search-pagination.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="48888c80-60e1-5905-afd5-8c1b6e532f99")}catch(e2){}})();import{applyFilterValueEcho,buildContentFilterEcho,buildGovernanceMissingFilterEcho}from"./list.js";function isAllStatuses(value){if(typeof value!=="string")return false;const tokens=value.split(",").map(entry=>entry.trim().toLowerCase()).filter(Boolean);return tokens.length===1&&tokens[0]==="all"}const COMPACT_SEARCH_VALUE_FILTER_ECHO_ENTRIES=[{optionKey:"status",summaryKey:"status",normalize:value=>isAllStatuses(value)?"all":value},{optionKey:"type",summaryKey:"type"},{optionKey:"tag",summaryKey:"tag"},{optionKey:"priority",summaryKey:"priority"},{optionKey:"deadlineBefore",summaryKey:"deadline_before"},{optionKey:"deadlineAfter",summaryKey:"deadline_after"},{optionKey:"updatedAfter",summaryKey:"updated_after"},{optionKey:"updatedBefore",summaryKey:"updated_before"},{optionKey:"createdAfter",summaryKey:"created_after"},{optionKey:"createdBefore",summaryKey:"created_before"},{optionKey:"assignee",summaryKey:"assignee"},{optionKey:"sprint",summaryKey:"sprint"},{optionKey:"release",summaryKey:"release"},{optionKey:"parent",summaryKey:"parent"}];function buildCompactSearchFilterSummary(params){const{mode,matchMode,options,includeLinked,titleExact,phraseExact,scoreThreshold,hybridSemanticWeight,runtimeFieldFilters}=params;const filters={};applyFilterValueEcho(filters,options,COMPACT_SEARCH_VALUE_FILTER_ECHO_ENTRIES);Object.assign(filters,buildGovernanceMissingFilterEcho(options));Object.assign(filters,buildContentFilterEcho(options));if(matchMode!==void 0&&matchMode!=="or"){filters.match_mode=matchMode}if(includeLinked)filters.include_linked=true;if(titleExact)filters.title_exact=true;if(phraseExact)filters.phrase_exact=true;if(scoreThreshold>0)filters.score_threshold=scoreThreshold;if(mode==="hybrid"&&options.semanticWeight!==void 0){filters.hybrid_semantic_weight=hybridSemanticWeight}if(options.limit!==void 0)filters.limit=options.limit;if(runtimeFieldFilters&&Object.keys(runtimeFieldFilters).length>0){filters.runtime_filters=runtimeFieldFilters}return filters}function buildVerboseSearchFilters(params){const{effectiveMode,matchMode,options,includeLinked,titleExact,phraseExact,scoreThreshold,hybridSemanticWeight,queryExpansion,rerank,runtimeFieldFilters}=params;const valueOrNull=value=>value??null;return{mode:effectiveMode,match_mode:matchMode,status:options.status===void 0||isAllStatuses(options.status)?"all":options.status,type:valueOrNull(options.type),tag:valueOrNull(options.tag),priority:valueOrNull(options.priority),deadline_before:valueOrNull(options.deadlineBefore),deadline_after:valueOrNull(options.deadlineAfter),updated_after:valueOrNull(options.updatedAfter),updated_before:valueOrNull(options.updatedBefore),created_after:valueOrNull(options.createdAfter),created_before:valueOrNull(options.createdBefore),assignee:valueOrNull(options.assignee),sprint:valueOrNull(options.sprint),release:valueOrNull(options.release),parent:valueOrNull(options.parent),...buildGovernanceMissingFilterEcho(options),...buildContentFilterEcho(options),include_linked:includeLinked,title_exact:titleExact,phrase_exact:phraseExact,score_threshold:scoreThreshold,hybrid_semantic_weight:effectiveMode==="hybrid"?hybridSemanticWeight:null,query_expansion_enabled:queryExpansion.enabled,query_expansion_provider:queryExpansion.provider,rerank_enabled:rerank.enabled,rerank_model:rerank.model,rerank_top_k:rerank.top_k,limit:valueOrNull(options.limit),runtime_filters:runtimeFieldFilters}}export{buildCompactSearchFilterSummary,buildVerboseSearchFilters};
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]="c8a2412e-2b0c-59c2-81ad-43de4d51562f")}catch{}})();import{applyFilterValueEcho,buildContentFilterEcho,buildGovernanceMissingFilterEcho}from"./list.js";function isAllStatuses(value){if(typeof value!="string")return!1;const tokens=value.split(",").map(entry=>entry.trim().toLowerCase()).filter(Boolean);return tokens.length===1&&tokens[0]==="all"}const COMPACT_SEARCH_VALUE_FILTER_ECHO_ENTRIES=[{optionKey:"status",summaryKey:"status",normalize:value=>isAllStatuses(value)?"all":value},{optionKey:"type",summaryKey:"type"},{optionKey:"tag",summaryKey:"tag"},{optionKey:"priority",summaryKey:"priority"},{optionKey:"deadlineBefore",summaryKey:"deadline_before"},{optionKey:"deadlineAfter",summaryKey:"deadline_after"},{optionKey:"updatedAfter",summaryKey:"updated_after"},{optionKey:"updatedBefore",summaryKey:"updated_before"},{optionKey:"createdAfter",summaryKey:"created_after"},{optionKey:"createdBefore",summaryKey:"created_before"},{optionKey:"assignee",summaryKey:"assignee"},{optionKey:"sprint",summaryKey:"sprint"},{optionKey:"release",summaryKey:"release"},{optionKey:"parent",summaryKey:"parent"}];function buildCompactSearchFilterSummary(params){const{mode,matchMode,options,includeLinked,titleExact,phraseExact,scoreThreshold,hybridSemanticWeight,runtimeFieldFilters}=params,filters={};return applyFilterValueEcho(filters,options,COMPACT_SEARCH_VALUE_FILTER_ECHO_ENTRIES),Object.assign(filters,buildGovernanceMissingFilterEcho(options)),Object.assign(filters,buildContentFilterEcho(options)),matchMode!==void 0&&matchMode!=="or"&&(filters.match_mode=matchMode),includeLinked&&(filters.include_linked=!0),titleExact&&(filters.title_exact=!0),phraseExact&&(filters.phrase_exact=!0),scoreThreshold>0&&(filters.score_threshold=scoreThreshold),mode==="hybrid"&&options.semanticWeight!==void 0&&(filters.hybrid_semantic_weight=hybridSemanticWeight),options.limit!==void 0&&(filters.limit=options.limit),runtimeFieldFilters&&Object.keys(runtimeFieldFilters).length>0&&(filters.runtime_filters=runtimeFieldFilters),filters}function buildVerboseSearchFilters(params){const{effectiveMode,matchMode,options,includeLinked,titleExact,phraseExact,scoreThreshold,hybridSemanticWeight,queryExpansion,rerank,runtimeFieldFilters}=params,valueOrNull=value=>value??null;return{mode:effectiveMode,match_mode:matchMode,status:options.status===void 0||isAllStatuses(options.status)?"all":options.status,type:valueOrNull(options.type),tag:valueOrNull(options.tag),priority:valueOrNull(options.priority),deadline_before:valueOrNull(options.deadlineBefore),deadline_after:valueOrNull(options.deadlineAfter),updated_after:valueOrNull(options.updatedAfter),updated_before:valueOrNull(options.updatedBefore),created_after:valueOrNull(options.createdAfter),created_before:valueOrNull(options.createdBefore),assignee:valueOrNull(options.assignee),sprint:valueOrNull(options.sprint),release:valueOrNull(options.release),parent:valueOrNull(options.parent),...buildGovernanceMissingFilterEcho(options),...buildContentFilterEcho(options),include_linked:includeLinked,title_exact:titleExact,phrase_exact:phraseExact,score_threshold:scoreThreshold,hybrid_semantic_weight:effectiveMode==="hybrid"?hybridSemanticWeight:null,query_expansion_enabled:queryExpansion.enabled,query_expansion_provider:queryExpansion.provider,rerank_enabled:rerank.enabled,rerank_model:rerank.model,rerank_top_k:rerank.top_k,limit:valueOrNull(options.limit),runtime_filters:runtimeFieldFilters}}export{buildCompactSearchFilterSummary,buildVerboseSearchFilters};
2
2
  //# sourceMappingURL=search-rendering.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="59612a0b-e84f-5a7c-b9ae-a26ec9a939e2")}catch(e2){}})();import{getActiveExtensionRegistrations}from"../../core/extensions/index.js";import{lifecycleClassifierFromStatusRegistry}from"../../core/governance/metadata-coverage.js";import{parseStatusFilterCsv}from"../../core/item/status-filter.js";import{resolveItemTypeRegistry}from"../../core/item/type-registry.js";import{collectRuntimeFilterValues}from"../../core/schema/runtime-field-filters.js";import{resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry}from"../../core/schema/runtime-schema.js";import{resolveBm25Params}from"../../core/search/bm25.js";import{resolveSearchCorpusFields}from"../../core/search/corpus.js";import{resolveEmbeddingProviders,resolveProviderConfigSource}from"../../core/search/providers.js";import{resolveQueryExpansionConfig,resolveRerankConfig}from"../../core/search/relevance.js";import{resolveSettingsWithSemanticRuntimeDefaults}from"../../core/search/semantic-defaults.js";import{resolveVectorStores}from"../../core/search/vector-stores.js";import{EXIT_CODE}from"../../core/shared/constants.js";import{PmCliError}from"../../core/shared/errors.js";import{nowIso}from"../../core/shared/time.js";import{resolvePmRoot}from"../../core/store/paths.js";import{readSettings}from"../../core/store/settings.js";import{assertInitializedTracker}from"../environment/tracker-preflight.js";import{readWorkspaceMemory,searchWorkspaceMemoryReadResult}from"../workspace-memory.js";import{parseSearchProjection,parseSearchTokens,parseSemanticWeightOverride,parseTimestampWindow,resolveEffectiveSearchMode,resolveHybridSemanticWeight,resolveSearchMaxResults,resolveSearchScoreThreshold,resolveSearchTuning,validateSearchProjectionFields}from"./search-contracts.js";import{createSearchCursorFingerprint,resolveSearchPage}from"./search-pagination.js";import{decodeQueryCursor}from"../pagination.js";import{buildCompactSearchFilterSummary,buildVerboseSearchFilters}from"./search-rendering.js";import{collectLinkedCorpusById,collectLinkedPaths,loadDocuments,loadLinkedCorpus,resolveLinkedCorpusRoots}from"./search/corpus.js";import{applyExactQueryFilters,applyFilters,collectExactPhraseFields,dependencyEntries,documentContainsExactPhrase,stringArray,textEntries}from"./search/filters.js";import{applyInlineQueryFilters,assertSearchPagingOptions,parseInlineQueryFilters,prepareSearchInput}from"./search/input.js";import{buildHitHighlights,buildHybridLexicalScore,countOccurrences,highlightFieldSnippet,markTokenRuns,normalizeScoreMap,scoreDocument,sortHits}from"./search/lexical.js";import{attachSearchHighlights,buildCountOnlySearchResult,buildEmptySearchResultFromContext,buildSearchResultForHits,emptySearchResult,projectSearchHits,readSearchFieldValue,withSearchWorkspaceMemory}from"./search/response.js";import{buildExplicitSemanticFallbackWarning,buildRerankCorpus,buildSemanticHits,classifyImplicitSemanticFallbackReason,collectErrorCauseCodes,combineHybridHits,computeBuiltInBm25Hits,computeSemanticOrHybridHits,maybeEmitVectorIndexStaleWarning,mergeVectorHitsById,normalizeExtensionProviderHits,requireSemanticDependencies,resolveBuiltInBm25Mode,resolveExtensionSearchProvider,resolveExtensionSearchProviderByName,resolveExtensionVectorAdapter,resolveQueryExpansionExtension,resolveRerankExtension,toOptionalNonEmptyString}from"./search/semantic.js";import{resolveEffectiveSearchMode as resolveEffectiveSearchMode2,resolveHybridSemanticWeight as resolveHybridSemanticWeight2,resolveSearchMaxResults as resolveSearchMaxResults2,resolveSearchScoreThreshold as resolveSearchScoreThreshold2,resolveSearchTuning as resolveSearchTuning2}from"./search-contracts.js";import{classifyImplicitSemanticFallbackReason as classifyImplicitSemanticFallbackReason2,collectErrorCauseCodes as collectErrorCauseCodes2,formatVectorIndexRecoveryWarnings,resolveVectorIndexRecovery}from"./search/semantic.js";const _testOnlySearchCommand={applyFilters,applyExactQueryFilters,applyInlineQueryFilters,buildHitHighlights,buildVerboseSearchFilters,buildExplicitSemanticFallbackWarning,buildCompactSearchFilterSummary,buildHybridLexicalScore,buildRerankCorpus,buildSemanticHits,classifyImplicitSemanticFallbackReason,collectErrorCauseCodes,collectExactPhraseFields,collectLinkedPaths,combineHybridHits,computeBuiltInBm25Hits,computeSemanticOrHybridHits,resolveBuiltInBm25Mode,countOccurrences,dependencyEntries,documentContainsExactPhrase,emptySearchResult,highlightFieldSnippet,loadDocuments,markTokenRuns,parseInlineQueryFilters,maybeEmitVectorIndexStaleWarning,loadLinkedCorpus,mergeVectorHitsById,normalizeExtensionProviderHits,normalizeScoreMap,parseProjectionConfig:parseSearchProjection,parseTimestampWindow,parseTokens:parseSearchTokens,projectSearchHits,readSearchFieldValue,requireSemanticDependencies,resolveExtensionSearchProvider,resolveExtensionSearchProviderByName,resolveExtensionVectorAdapter,resolveLinkedCorpusRoots,scoreDocument,sortHits,stringArray,textEntries,validateSearchProjectionFields};async function resolveSearchRuntimeContext(prepared,global2){const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertInitializedTracker(pmRoot);const storedSettings=await readSettings(pmRoot);const settings=resolveSettingsWithSemanticRuntimeDefaults(storedSettings).settings;const statusRegistry=resolveRuntimeStatusRegistry(settings.schema);const runtimeFieldRegistry=resolveRuntimeFieldRegistry(settings.schema);validateSearchProjectionFields(prepared.projection,runtimeFieldRegistry,prepared.query);const runtimeFieldFilters=collectRuntimeFilterValues(prepared.options,runtimeFieldRegistry,"search");const typeRegistry=resolveItemTypeRegistry(settings,getActiveExtensionRegistrations());const providerResolution=resolveEmbeddingProviders(settings);const vectorResolution=resolveVectorStores(settings,pmRoot);const extensionSearchProvider=resolveExtensionSearchProvider(settings);const extensionVectorAdapter=resolveExtensionVectorAdapter(settings);const semanticWeightOverride=parseSemanticWeightOverride(prepared.options.semanticWeight);const queryExpansion=resolveQueryExpansionConfig(settings,providerResolution.active?.name??null);const rerank=resolveRerankConfig(settings,providerResolution.active?.model??toOptionalNonEmptyString(settings.search?.embedding_model)??"text-embedding-3-small");return{pmRoot,settings,statusRegistry,runtimeFieldRegistry,runtimeFieldFilters,typeRegistry,maxResults:resolveSearchMaxResults(settings),scoreThreshold:prepared.minScoreOverride??resolveSearchScoreThreshold(settings),semanticWeightProvided:prepared.options.semanticWeight!==void 0,semanticWeightOverride,hybridSemanticWeight:semanticWeightOverride??resolveHybridSemanticWeight(settings),tuning:resolveSearchTuning(settings),providerResolution,vectorResolution,extensionSearchProvider,extensionVectorAdapter,bm25Mode:resolveBuiltInBm25Mode({configuredProvider:toOptionalNonEmptyString(settings.search?.provider),hasEmbeddingProvider:providerResolution.active!==null,hasExtensionSearchProvider:extensionSearchProvider!==null}),queryExpansion,queryExpansionExtension:resolveQueryExpansionExtension(queryExpansion),rerank,rerankExtension:resolveRerankExtension(settings),...resolveRuntimeSearchMode({requested:prepared.options.mode,settings,configuredProvider:storedSettings.search?.provider??null,providerResolution,vectorResolution,extensionSearchProvider,extensionVectorAdapter})}}function resolveRuntimeSearchMode(params){const providerConfigured=resolveProviderConfigSource(params.providerResolution.active?.name,params.configuredProvider)==="configured";const builtInRunnable=providerConfigured&&(params.vectorResolution.active!==null||params.extensionVectorAdapter!==null);const semanticRunnable=params.extensionSearchProvider!==null||builtInRunnable;const resolution=resolveEffectiveSearchMode({requested:params.requested,settings:params.settings,semanticRunnable});return{effectiveMode:resolution.mode,modeSource:resolution.source}}async function loadFilteredSearchCorpus(prepared,runtime){const loadedDocuments=await loadDocuments(runtime.pmRoot,runtime.settings.item_format??"toon",runtime.typeRegistry.type_to_folder,runtime.settings.schema);const statusFilter=parseStatusFilterCsv(typeof prepared.options.status==="string"?prepared.options.status:void 0,runtime.statusRegistry,{strict:true});const lifecycleClassifier=lifecycleClassifierFromStatusRegistry(runtime.statusRegistry);const metadataFilteredDocuments=applyFilters(loadedDocuments.documents,prepared.options,runtime.typeRegistry,runtime.runtimeFieldFilters,statusFilter,lifecycleClassifier);return{warnings:loadedDocuments.warnings,allDocuments:loadedDocuments.documents,filteredDocuments:applyExactQueryFilters(metadataFilteredDocuments,prepared.normalizedQuery,{titleExact:prepared.titleExact,phraseExact:prepared.phraseExact||prepared.matchMode==="exact"})}}async function computeKeywordSearchHits(prepared,runtime,filteredDocuments){const linkedCorpusById=await collectLinkedCorpusById(prepared.includeLinked,runtime.effectiveMode,filteredDocuments);const applyCoverageBonus=prepared.matchMode==="or";return filteredDocuments.map(document=>buildHybridLexicalScore(document,prepared.tokens,prepared.normalizedQuery,prepared.includeLinked,linkedCorpusById,runtime.tuning,runtime.settings.id_prefix,applyCoverageBonus)).filter(entry=>entry!==null).filter(entry=>prepared.matchMode!=="and"||entry.matched_all_terms===true)}async function executeBuiltInBm25Search(prepared,runtime,filteredDocuments,keywordHits,warnings){if(runtime.bm25Mode===null||runtime.effectiveMode==="keyword"){return null}const hits=computeBuiltInBm25Hits({requestedMode:runtime.effectiveMode,query:prepared.query,filteredDocuments,keywordHits,corpusFields:resolveSearchCorpusFields(runtime.settings),bm25Params:resolveBm25Params(runtime.settings),hybridSemanticWeight:runtime.hybridSemanticWeight});if(runtime.bm25Mode==="auto-fallback"){warnings.push(`search_${runtime.effectiveMode}_offline_bm25:no_embedding_provider:using_lexical_bm25`)}return hits}async function executeExtensionSearchProvider(prepared,runtime,filteredDocuments,filteredById){if(!runtime.extensionSearchProvider){return null}const canUseBuiltInSemantic=runtime.providerResolution.active!==null&&(runtime.vectorResolution.active!==null||runtime.extensionVectorAdapter!==null);try{const providerResponse=await Promise.resolve(runtime.extensionSearchProvider.query({query:prepared.query,mode:runtime.effectiveMode,tokens:prepared.tokens,options:prepared.options,settings:runtime.settings,documents:filteredDocuments}));return normalizeExtensionProviderHits(runtime.extensionSearchProvider.providerName,providerResponse,filteredById)}catch(error){if(!canUseBuiltInSemantic){throw new PmCliError(`Extension search provider "${runtime.extensionSearchProvider.providerName}" failed: ${error instanceof Error?error.message:String(error)}`,EXIT_CODE.GENERIC_FAILURE)}return null}}function maybeApplyNoVectorFallback(effectiveMode,semanticResult,keywordHits,warnings){if(semanticResult.vectorMatchCount>0){return semanticResult.hits}warnings.push(`search_${effectiveMode}_degraded:no_vector_matches:results_are_lexical`);return effectiveMode==="semantic"?keywordHits:semanticResult.hits}async function prepareBuiltInSemanticSearch(runtime,effectiveMode,filteredDocuments,warnings,modeWasExplicit){const builtInSemanticWillRun=!runtime.extensionSearchProvider&&runtime.providerResolution.active!==null&&(runtime.vectorResolution.active!==null||runtime.extensionVectorAdapter!==null);if(modeWasExplicit&&builtInSemanticWillRun){await maybeEmitVectorIndexStaleWarning(runtime.pmRoot,filteredDocuments,warnings)}if(!runtime.extensionSearchProvider){requireSemanticDependencies(effectiveMode,runtime.providerResolution,runtime.vectorResolution,runtime.extensionVectorAdapter!==null)}}async function executeSemanticSearch(input){const{prepared,runtime,filteredDocuments,keywordHits,warnings,modeWasExplicit}=input;let hits=keywordHits;const bm25Hits=await executeBuiltInBm25Search(prepared,runtime,filteredDocuments,keywordHits,warnings);const semanticMode=runtime.effectiveMode;if(bm25Hits!==null||semanticMode==="keyword"){return{effectiveMode:runtime.effectiveMode,hits:bm25Hits??hits}}try{await prepareBuiltInSemanticSearch(runtime,semanticMode,filteredDocuments,warnings,modeWasExplicit);if(filteredDocuments.length===0||prepared.limit===0){return{effectiveMode:runtime.effectiveMode,hits:[]}}const filteredById=new Map(filteredDocuments.map(document=>[document.metadata.id,document]));hits=await executeExtensionSearchProvider(prepared,runtime,filteredDocuments,filteredById)??hits;if(hits===keywordHits){const{provider,vectorStore}=requireSemanticDependencies(semanticMode,runtime.providerResolution,runtime.vectorResolution,runtime.extensionVectorAdapter!==null);const semanticResult=await computeSemanticOrHybridHits({requestedMode:semanticMode,query:prepared.query,filteredDocuments,keywordHits,hybridSemanticWeight:runtime.hybridSemanticWeight,limit:prepared.limit,maxResults:runtime.maxResults,provider,vectorStore,extensionVectorAdapter:runtime.extensionVectorAdapter,queryExpansion:runtime.queryExpansion,queryExpansionExtension:runtime.queryExpansionExtension,rerank:runtime.rerank,rerankExtension:runtime.rerankExtension,warnings,settings:runtime.settings});hits=maybeApplyNoVectorFallback(semanticMode,semanticResult,keywordHits,warnings)}return{effectiveMode:runtime.effectiveMode,hits}}catch(error){warnings.push(buildExplicitSemanticFallbackWarning(runtime.effectiveMode,error));return{effectiveMode:"keyword",hits:keywordHits}}}function validateEmptySearchCursor(options){if(options.searchOptions.after!==void 0){decodeQueryCursor(options.searchOptions.after,createSearchCursorFingerprint(options))}}async function runSearch(rawQuery,rawOptions,global2){assertSearchPagingOptions(rawOptions);const prepared=prepareSearchInput(rawQuery,rawOptions);const runtime=await resolveSearchRuntimeContext(prepared,global2);const corpus=await loadFilteredSearchCorpus(prepared,runtime);const warnings=corpus.warnings;warnings.push(...prepared.inlineWarnings);const workspaceMemory=await readWorkspaceMemory(corpus.allDocuments.map(document=>document.metadata),{pmRoot:runtime.pmRoot,statusRegistry:runtime.statusRegistry,now:nowIso()});warnings.push(...workspaceMemory.warnings);const workspaceMemoryResult=searchWorkspaceMemoryReadResult(workspaceMemory,prepared.query);if(runtime.effectiveMode==="hybrid"&&runtime.semanticWeightProvided&&runtime.semanticWeightOverride===void 0){warnings.push("search_hybrid_semantic_weight_override_invalid:using_settings_default")}const responseBase={query:prepared.query,modeSource:runtime.modeSource,matchMode:prepared.matchMode,options:prepared.options,includeLinked:prepared.includeLinked,titleExact:prepared.titleExact,phraseExact:prepared.phraseExact,scoreThreshold:runtime.scoreThreshold,hybridSemanticWeight:runtime.hybridSemanticWeight,queryExpansion:runtime.queryExpansion,rerank:runtime.rerank,projection:prepared.projection,warnings,runtimeFieldFilters:runtime.runtimeFieldFilters};if(runtime.effectiveMode==="keyword"&&(corpus.filteredDocuments.length===0||prepared.limit===0&&!prepared.countOnly)){validateEmptySearchCursor({query:prepared.query,mode:runtime.effectiveMode,searchOptions:prepared.options,pmRoot:runtime.pmRoot});return withSearchWorkspaceMemory(buildEmptySearchResultFromContext({...responseBase,effectiveMode:runtime.effectiveMode},prepared.countOnly),workspaceMemoryResult)}const keywordHits=await computeKeywordSearchHits(prepared,runtime,corpus.filteredDocuments);const modeResult=await executeSemanticSearch({prepared,runtime,filteredDocuments:corpus.filteredDocuments,keywordHits,warnings,modeWasExplicit:prepared.modeWasExplicit});if(modeResult.effectiveMode!=="keyword"&&modeResult.hits.length===0&&(corpus.filteredDocuments.length===0||prepared.limit===0&&!prepared.countOnly)){validateEmptySearchCursor({query:prepared.query,mode:modeResult.effectiveMode,searchOptions:prepared.options,pmRoot:runtime.pmRoot});return withSearchWorkspaceMemory(buildEmptySearchResultFromContext({...responseBase,effectiveMode:modeResult.effectiveMode},prepared.countOnly),workspaceMemoryResult)}const thresholded=modeResult.hits.filter(entry=>entry.exact_id_match===true||entry.score>=runtime.scoreThreshold);const sorted=sortHits(thresholded,runtime.statusRegistry);const total=sorted.length;const page=resolveSearchPage({pmRoot:runtime.pmRoot,sorted,query:prepared.query,mode:modeResult.effectiveMode,searchOptions:prepared.options,limit:prepared.limit??runtime.maxResults});const response={...responseBase,effectiveMode:modeResult.effectiveMode};if(prepared.countOnly){return withSearchWorkspaceMemory(buildCountOnlySearchResult(response,total),workspaceMemoryResult)}const{hits:projectedHits,projection:effectiveProjection}=attachSearchHighlights(prepared,corpus.filteredDocuments,page.limited);const projectedItems=projectSearchHits(projectedHits,effectiveProjection);return withSearchWorkspaceMemory(buildSearchResultForHits(response,projectedItems,total,page.limited.length,effectiveProjection,page.pageExtras),workspaceMemoryResult)}export{_testOnlySearchCommand,classifyImplicitSemanticFallbackReason2 as classifyImplicitSemanticFallbackReason,collectErrorCauseCodes2 as collectErrorCauseCodes,formatVectorIndexRecoveryWarnings,resolveEffectiveSearchMode2 as resolveEffectiveSearchMode,resolveHybridSemanticWeight2 as resolveHybridSemanticWeight,resolveSearchMaxResults2 as resolveSearchMaxResults,resolveSearchScoreThreshold2 as resolveSearchScoreThreshold,resolveSearchTuning2 as resolveSearchTuning,resolveVectorIndexRecovery,runSearch};
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]="3bfd872f-6ed7-551c-a027-3748493de3e9")}catch{}})();import{getActiveExtensionRegistrations}from"../../core/extensions/index.js";import{lifecycleClassifierFromStatusRegistry}from"../../core/governance/metadata-coverage.js";import{parseStatusFilterCsv}from"../../core/item/status-filter.js";import{resolveItemTypeRegistry}from"../../core/item/type-registry.js";import{collectRuntimeFilterValues}from"../../core/schema/runtime-field-filters.js";import{resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry}from"../../core/schema/runtime-schema.js";import{resolveBm25Params}from"../../core/search/bm25.js";import{resolveSearchCorpusFields}from"../../core/search/corpus.js";import{resolveEmbeddingProviders,resolveProviderConfigSource}from"../../core/search/providers.js";import{resolveQueryExpansionConfig,resolveRerankConfig}from"../../core/search/relevance.js";import{resolveSettingsWithSemanticRuntimeDefaults}from"../../core/search/semantic-defaults.js";import{resolveVectorStores}from"../../core/search/vector-stores.js";import{EXIT_CODE}from"../../core/shared/constants.js";import{PmCliError}from"../../core/shared/errors.js";import{nowIso}from"../../core/shared/time.js";import{resolvePmRoot}from"../../core/store/paths.js";import{readSettings}from"../../core/store/settings.js";import{assertInitializedTracker}from"../environment/tracker-preflight.js";import{readWorkspaceMemory,searchWorkspaceMemoryReadResult}from"../workspace-memory.js";import{parseSearchProjection,parseSearchTokens,parseSemanticWeightOverride,parseTimestampWindow,resolveEffectiveSearchMode,resolveHybridSemanticWeight,resolveSearchMaxResults,resolveSearchScoreThreshold,resolveSearchTuning,validateSearchProjectionFields}from"./search-contracts.js";import{createSearchCursorFingerprint,resolveSearchPage}from"./search-pagination.js";import{decodeQueryCursor}from"../pagination.js";import{buildCompactSearchFilterSummary,buildVerboseSearchFilters}from"./search-rendering.js";import{collectLinkedCorpusById,collectLinkedPaths,loadDocuments,loadLinkedCorpus,resolveLinkedCorpusRoots}from"./search/corpus.js";import{applyExactQueryFilters,applyFilters,collectExactPhraseFields,dependencyEntries,documentContainsExactPhrase,stringArray,textEntries}from"./search/filters.js";import{applyInlineQueryFilters,assertSearchPagingOptions,parseInlineQueryFilters,prepareSearchInput}from"./search/input.js";import{buildHitHighlights,buildHybridLexicalScore,countOccurrences,highlightFieldSnippet,markTokenRuns,normalizeScoreMap,scoreDocument,sortHits}from"./search/lexical.js";import{attachSearchHighlights,buildCountOnlySearchResult,buildEmptySearchResultFromContext,buildSearchResultForHits,emptySearchResult,projectSearchHits,readSearchFieldValue,withSearchWorkspaceMemory}from"./search/response.js";import{buildExplicitSemanticFallbackWarning,buildRerankCorpus,buildSemanticHits,classifyImplicitSemanticFallbackReason,collectErrorCauseCodes,combineHybridHits,computeBuiltInBm25Hits,computeSemanticOrHybridHits,maybeEmitVectorIndexStaleWarning,mergeVectorHitsById,normalizeExtensionProviderHits,requireSemanticDependencies,resolveBuiltInBm25Mode,resolveExtensionSearchProvider,resolveExtensionSearchProviderByName,resolveExtensionVectorAdapter,resolveQueryExpansionExtension,resolveRerankExtension,toOptionalNonEmptyString}from"./search/semantic.js";import{resolveEffectiveSearchMode as resolveEffectiveSearchMode2,resolveHybridSemanticWeight as resolveHybridSemanticWeight2,resolveSearchMaxResults as resolveSearchMaxResults2,resolveSearchScoreThreshold as resolveSearchScoreThreshold2,resolveSearchTuning as resolveSearchTuning2}from"./search-contracts.js";import{classifyImplicitSemanticFallbackReason as classifyImplicitSemanticFallbackReason2,collectErrorCauseCodes as collectErrorCauseCodes2,formatVectorIndexRecoveryWarnings,resolveVectorIndexRecovery}from"./search/semantic.js";const _testOnlySearchCommand={applyFilters,applyExactQueryFilters,applyInlineQueryFilters,buildHitHighlights,buildVerboseSearchFilters,buildExplicitSemanticFallbackWarning,buildCompactSearchFilterSummary,buildHybridLexicalScore,buildRerankCorpus,buildSemanticHits,classifyImplicitSemanticFallbackReason,collectErrorCauseCodes,collectExactPhraseFields,collectLinkedPaths,combineHybridHits,computeBuiltInBm25Hits,computeSemanticOrHybridHits,resolveBuiltInBm25Mode,countOccurrences,dependencyEntries,documentContainsExactPhrase,emptySearchResult,highlightFieldSnippet,loadDocuments,markTokenRuns,parseInlineQueryFilters,maybeEmitVectorIndexStaleWarning,loadLinkedCorpus,mergeVectorHitsById,normalizeExtensionProviderHits,normalizeScoreMap,parseProjectionConfig:parseSearchProjection,parseTimestampWindow,parseTokens:parseSearchTokens,projectSearchHits,readSearchFieldValue,requireSemanticDependencies,resolveExtensionSearchProvider,resolveExtensionSearchProviderByName,resolveExtensionVectorAdapter,resolveLinkedCorpusRoots,scoreDocument,sortHits,stringArray,textEntries,validateSearchProjectionFields};async function resolveSearchRuntimeContext(prepared,global2){const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertInitializedTracker(pmRoot);const storedSettings=await readSettings(pmRoot),settings=resolveSettingsWithSemanticRuntimeDefaults(storedSettings).settings,statusRegistry=resolveRuntimeStatusRegistry(settings.schema),runtimeFieldRegistry=resolveRuntimeFieldRegistry(settings.schema);validateSearchProjectionFields(prepared.projection,runtimeFieldRegistry,prepared.query);const runtimeFieldFilters=collectRuntimeFilterValues(prepared.options,runtimeFieldRegistry,"search"),typeRegistry=resolveItemTypeRegistry(settings,getActiveExtensionRegistrations()),providerResolution=resolveEmbeddingProviders(settings),vectorResolution=resolveVectorStores(settings,pmRoot),extensionSearchProvider=resolveExtensionSearchProvider(settings),extensionVectorAdapter=resolveExtensionVectorAdapter(settings),semanticWeightOverride=parseSemanticWeightOverride(prepared.options.semanticWeight),queryExpansion=resolveQueryExpansionConfig(settings,providerResolution.active?.name??null),rerank=resolveRerankConfig(settings,providerResolution.active?.model??toOptionalNonEmptyString(settings.search?.embedding_model)??"text-embedding-3-small");return{pmRoot,settings,statusRegistry,runtimeFieldRegistry,runtimeFieldFilters,typeRegistry,maxResults:resolveSearchMaxResults(settings),scoreThreshold:prepared.minScoreOverride??resolveSearchScoreThreshold(settings),semanticWeightProvided:prepared.options.semanticWeight!==void 0,semanticWeightOverride,hybridSemanticWeight:semanticWeightOverride??resolveHybridSemanticWeight(settings),tuning:resolveSearchTuning(settings),providerResolution,vectorResolution,extensionSearchProvider,extensionVectorAdapter,bm25Mode:resolveBuiltInBm25Mode({configuredProvider:toOptionalNonEmptyString(settings.search?.provider),hasEmbeddingProvider:providerResolution.active!==null,hasExtensionSearchProvider:extensionSearchProvider!==null}),queryExpansion,queryExpansionExtension:resolveQueryExpansionExtension(queryExpansion),rerank,rerankExtension:resolveRerankExtension(settings),...resolveRuntimeSearchMode({requested:prepared.options.mode,settings,configuredProvider:storedSettings.search?.provider??null,providerResolution,vectorResolution,extensionSearchProvider,extensionVectorAdapter})}}function resolveRuntimeSearchMode(params){const builtInRunnable=resolveProviderConfigSource(params.providerResolution.active?.name,params.configuredProvider)==="configured"&&(params.vectorResolution.active!==null||params.extensionVectorAdapter!==null),semanticRunnable=params.extensionSearchProvider!==null||builtInRunnable,resolution=resolveEffectiveSearchMode({requested:params.requested,settings:params.settings,semanticRunnable});return{effectiveMode:resolution.mode,modeSource:resolution.source}}async function loadFilteredSearchCorpus(prepared,runtime){const loadedDocuments=await loadDocuments(runtime.pmRoot,runtime.settings.item_format??"toon",runtime.typeRegistry.type_to_folder,runtime.settings.schema),statusFilter=parseStatusFilterCsv(typeof prepared.options.status=="string"?prepared.options.status:void 0,runtime.statusRegistry,{strict:!0}),lifecycleClassifier=lifecycleClassifierFromStatusRegistry(runtime.statusRegistry),metadataFilteredDocuments=applyFilters(loadedDocuments.documents,prepared.options,runtime.typeRegistry,runtime.runtimeFieldFilters,statusFilter,lifecycleClassifier);return{warnings:loadedDocuments.warnings,allDocuments:loadedDocuments.documents,filteredDocuments:applyExactQueryFilters(metadataFilteredDocuments,prepared.normalizedQuery,{titleExact:prepared.titleExact,phraseExact:prepared.phraseExact||prepared.matchMode==="exact"})}}async function computeKeywordSearchHits(prepared,runtime,filteredDocuments){const linkedCorpusById=await collectLinkedCorpusById(prepared.includeLinked,runtime.effectiveMode,filteredDocuments),applyCoverageBonus=prepared.matchMode==="or";return filteredDocuments.map(document=>buildHybridLexicalScore(document,prepared.tokens,prepared.normalizedQuery,prepared.includeLinked,linkedCorpusById,runtime.tuning,runtime.settings.id_prefix,applyCoverageBonus)).filter(entry=>entry!==null).filter(entry=>prepared.matchMode!=="and"||entry.matched_all_terms===!0)}async function executeBuiltInBm25Search(prepared,runtime,filteredDocuments,keywordHits,warnings){if(runtime.bm25Mode===null||runtime.effectiveMode==="keyword")return null;const hits=computeBuiltInBm25Hits({requestedMode:runtime.effectiveMode,query:prepared.query,filteredDocuments,keywordHits,corpusFields:resolveSearchCorpusFields(runtime.settings),bm25Params:resolveBm25Params(runtime.settings),hybridSemanticWeight:runtime.hybridSemanticWeight});return runtime.bm25Mode==="auto-fallback"&&warnings.push(`search_${runtime.effectiveMode}_offline_bm25:no_embedding_provider:using_lexical_bm25`),hits}async function executeExtensionSearchProvider(prepared,runtime,filteredDocuments,filteredById){if(!runtime.extensionSearchProvider)return null;const canUseBuiltInSemantic=runtime.providerResolution.active!==null&&(runtime.vectorResolution.active!==null||runtime.extensionVectorAdapter!==null);try{const providerResponse=await Promise.resolve(runtime.extensionSearchProvider.query({query:prepared.query,mode:runtime.effectiveMode,tokens:prepared.tokens,options:prepared.options,settings:runtime.settings,documents:filteredDocuments}));return normalizeExtensionProviderHits(runtime.extensionSearchProvider.providerName,providerResponse,filteredById)}catch(error){if(!canUseBuiltInSemantic)throw new PmCliError(`Extension search provider "${runtime.extensionSearchProvider.providerName}" failed: ${error instanceof Error?error.message:String(error)}`,EXIT_CODE.GENERIC_FAILURE);return null}}function maybeApplyNoVectorFallback(effectiveMode,semanticResult,keywordHits,warnings){return semanticResult.vectorMatchCount>0?semanticResult.hits:(warnings.push(`search_${effectiveMode}_degraded:no_vector_matches:results_are_lexical`),effectiveMode==="semantic"?keywordHits:semanticResult.hits)}async function prepareBuiltInSemanticSearch(runtime,effectiveMode,filteredDocuments,warnings,modeWasExplicit){const builtInSemanticWillRun=!runtime.extensionSearchProvider&&runtime.providerResolution.active!==null&&(runtime.vectorResolution.active!==null||runtime.extensionVectorAdapter!==null);modeWasExplicit&&builtInSemanticWillRun&&await maybeEmitVectorIndexStaleWarning(runtime.pmRoot,filteredDocuments,warnings),runtime.extensionSearchProvider||requireSemanticDependencies(effectiveMode,runtime.providerResolution,runtime.vectorResolution,runtime.extensionVectorAdapter!==null)}async function executeSemanticSearch(input){const{prepared,runtime,filteredDocuments,keywordHits,warnings,modeWasExplicit}=input;let hits=keywordHits;const bm25Hits=await executeBuiltInBm25Search(prepared,runtime,filteredDocuments,keywordHits,warnings),semanticMode=runtime.effectiveMode;if(bm25Hits!==null||semanticMode==="keyword")return{effectiveMode:runtime.effectiveMode,hits:bm25Hits??hits};try{if(await prepareBuiltInSemanticSearch(runtime,semanticMode,filteredDocuments,warnings,modeWasExplicit),filteredDocuments.length===0||prepared.limit===0)return{effectiveMode:runtime.effectiveMode,hits:[]};const filteredById=new Map(filteredDocuments.map(document=>[document.metadata.id,document]));if(hits=await executeExtensionSearchProvider(prepared,runtime,filteredDocuments,filteredById)??hits,hits===keywordHits){const{provider,vectorStore}=requireSemanticDependencies(semanticMode,runtime.providerResolution,runtime.vectorResolution,runtime.extensionVectorAdapter!==null),semanticResult=await computeSemanticOrHybridHits({requestedMode:semanticMode,query:prepared.query,filteredDocuments,keywordHits,hybridSemanticWeight:runtime.hybridSemanticWeight,limit:prepared.limit,maxResults:runtime.maxResults,provider,vectorStore,extensionVectorAdapter:runtime.extensionVectorAdapter,queryExpansion:runtime.queryExpansion,queryExpansionExtension:runtime.queryExpansionExtension,rerank:runtime.rerank,rerankExtension:runtime.rerankExtension,warnings,settings:runtime.settings});hits=maybeApplyNoVectorFallback(semanticMode,semanticResult,keywordHits,warnings)}return{effectiveMode:runtime.effectiveMode,hits}}catch(error){return warnings.push(buildExplicitSemanticFallbackWarning(runtime.effectiveMode,error)),{effectiveMode:"keyword",hits:keywordHits}}}function validateEmptySearchCursor(options){options.searchOptions.after!==void 0&&decodeQueryCursor(options.searchOptions.after,createSearchCursorFingerprint(options))}async function runSearch(rawQuery,rawOptions,global2){assertSearchPagingOptions(rawOptions);const prepared=prepareSearchInput(rawQuery,rawOptions),runtime=await resolveSearchRuntimeContext(prepared,global2),corpus=await loadFilteredSearchCorpus(prepared,runtime),warnings=corpus.warnings;warnings.push(...prepared.inlineWarnings);const workspaceMemory=await readWorkspaceMemory(corpus.allDocuments.map(document=>document.metadata),{pmRoot:runtime.pmRoot,statusRegistry:runtime.statusRegistry,now:nowIso()});warnings.push(...workspaceMemory.warnings);const workspaceMemoryResult=searchWorkspaceMemoryReadResult(workspaceMemory,prepared.query);runtime.effectiveMode==="hybrid"&&runtime.semanticWeightProvided&&runtime.semanticWeightOverride===void 0&&warnings.push("search_hybrid_semantic_weight_override_invalid:using_settings_default");const responseBase={query:prepared.query,modeSource:runtime.modeSource,matchMode:prepared.matchMode,options:prepared.options,includeLinked:prepared.includeLinked,titleExact:prepared.titleExact,phraseExact:prepared.phraseExact,scoreThreshold:runtime.scoreThreshold,hybridSemanticWeight:runtime.hybridSemanticWeight,queryExpansion:runtime.queryExpansion,rerank:runtime.rerank,projection:prepared.projection,warnings,runtimeFieldFilters:runtime.runtimeFieldFilters};if(runtime.effectiveMode==="keyword"&&(corpus.filteredDocuments.length===0||prepared.limit===0&&!prepared.countOnly))return validateEmptySearchCursor({query:prepared.query,mode:runtime.effectiveMode,searchOptions:prepared.options,pmRoot:runtime.pmRoot}),withSearchWorkspaceMemory(buildEmptySearchResultFromContext({...responseBase,effectiveMode:runtime.effectiveMode},prepared.countOnly),workspaceMemoryResult);const keywordHits=await computeKeywordSearchHits(prepared,runtime,corpus.filteredDocuments),modeResult=await executeSemanticSearch({prepared,runtime,filteredDocuments:corpus.filteredDocuments,keywordHits,warnings,modeWasExplicit:prepared.modeWasExplicit});if(modeResult.effectiveMode!=="keyword"&&modeResult.hits.length===0&&(corpus.filteredDocuments.length===0||prepared.limit===0&&!prepared.countOnly))return validateEmptySearchCursor({query:prepared.query,mode:modeResult.effectiveMode,searchOptions:prepared.options,pmRoot:runtime.pmRoot}),withSearchWorkspaceMemory(buildEmptySearchResultFromContext({...responseBase,effectiveMode:modeResult.effectiveMode},prepared.countOnly),workspaceMemoryResult);const thresholded=modeResult.hits.filter(entry=>entry.exact_id_match===!0||entry.score>=runtime.scoreThreshold),sorted=sortHits(thresholded,runtime.statusRegistry),total=sorted.length,page=resolveSearchPage({pmRoot:runtime.pmRoot,sorted,query:prepared.query,mode:modeResult.effectiveMode,searchOptions:prepared.options,limit:prepared.limit??runtime.maxResults}),response={...responseBase,effectiveMode:modeResult.effectiveMode};if(prepared.countOnly)return withSearchWorkspaceMemory(buildCountOnlySearchResult(response,total),workspaceMemoryResult);const{hits:projectedHits,projection:effectiveProjection}=attachSearchHighlights(prepared,corpus.filteredDocuments,page.limited),projectedItems=projectSearchHits(projectedHits,effectiveProjection);return withSearchWorkspaceMemory(buildSearchResultForHits(response,projectedItems,total,page.limited.length,effectiveProjection,page.pageExtras),workspaceMemoryResult)}export{_testOnlySearchCommand,classifyImplicitSemanticFallbackReason2 as classifyImplicitSemanticFallbackReason,collectErrorCauseCodes2 as collectErrorCauseCodes,formatVectorIndexRecoveryWarnings,resolveEffectiveSearchMode2 as resolveEffectiveSearchMode,resolveHybridSemanticWeight2 as resolveHybridSemanticWeight,resolveSearchMaxResults2 as resolveSearchMaxResults,resolveSearchScoreThreshold2 as resolveSearchScoreThreshold,resolveSearchTuning2 as resolveSearchTuning,resolveVectorIndexRecovery,runSearch};
2
2
  //# sourceMappingURL=search.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b841f903-6276-5067-842f-6a6bff114cec")}catch(e2){}})();import path from"node:path";import{activateExtensions,deactivateExtensions,loadExtensions}from"../../core/extensions/index.js";import{resolveItemTypeRegistry}from"../../core/item/type-registry.js";import{resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry}from"../../core/schema/runtime-schema.js";import{readSettings}from"../../core/store/settings.js";import{buildWorkspaceExtensionCommandContracts,buildWorkspaceFieldContracts}from"../workspace-contracts.js";import{memoizeWorkspaceExtensionRegistrations}from"../workspace-contracts-cache.js";function buildWorkspaceExtensionRegistrationsCacheKey(pmRoot,settings,cwd){return JSON.stringify([path.resolve(pmRoot),path.resolve(cwd??process.cwd()),settings.extensions.enabled,settings.extensions.disabled,settings.extensions.policy])}async function resolveWorkspaceExtensionRegistrations(pmRoot,settings,cwd){const cacheKey=buildWorkspaceExtensionRegistrationsCacheKey(pmRoot,settings,cwd);return memoizeWorkspaceExtensionRegistrations(cacheKey,()=>loadWorkspaceExtensionRegistrations(pmRoot,settings,cwd))}async function getWorkspaceContracts(pmRoot,options={}){const settings=await readSettings(pmRoot);const extensionRegistrations=options.extensionRegistrations??(options.noExtensions===true?null:await resolveWorkspaceExtensionRegistrations(pmRoot,settings,options.cwd));const typeRegistry=resolveItemTypeRegistry(settings,extensionRegistrations);const statusRegistry=resolveRuntimeStatusRegistry(settings.schema);const fieldRegistry=resolveRuntimeFieldRegistry(settings.schema);return{types:[...typeRegistry.types],statuses:statusRegistry.definitions.map(definition=>definition.id),openStatus:statusRegistry.open_status,closeStatus:statusRegistry.close_status,canceledStatus:statusRegistry.canceled_status,fields:buildWorkspaceFieldContracts(fieldRegistry.definitions),extensionCommands:buildWorkspaceExtensionCommandContracts(extensionRegistrations?.commands??[])}}async function loadWorkspaceExtensionRegistrations(pmRoot,settings,cwd){const loadResult=await loadExtensions({pmRoot,settings,cwd:cwd??process.cwd(),noExtensions:false});const activationResult=await activateExtensions(loadResult);try{return activationResult.registrations}finally{try{await deactivateExtensions(loadResult,activationResult)}catch{}}}export{getWorkspaceContracts};
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]="5417c092-2e52-5b18-bcb6-da34f07f595f")}catch{}})();import path from"node:path";import{activateExtensions,deactivateExtensions,loadExtensions}from"../../core/extensions/index.js";import{resolveItemTypeRegistry}from"../../core/item/type-registry.js";import{resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry}from"../../core/schema/runtime-schema.js";import{readSettings}from"../../core/store/settings.js";import{buildWorkspaceExtensionCommandContracts,buildWorkspaceFieldContracts}from"../workspace-contracts.js";import{memoizeWorkspaceExtensionRegistrations}from"../workspace-contracts-cache.js";function buildWorkspaceExtensionRegistrationsCacheKey(pmRoot,settings,cwd){return JSON.stringify([path.resolve(pmRoot),path.resolve(cwd??process.cwd()),settings.extensions.enabled,settings.extensions.disabled,settings.extensions.policy])}async function resolveWorkspaceExtensionRegistrations(pmRoot,settings,cwd){const cacheKey=buildWorkspaceExtensionRegistrationsCacheKey(pmRoot,settings,cwd);return memoizeWorkspaceExtensionRegistrations(cacheKey,()=>loadWorkspaceExtensionRegistrations(pmRoot,settings,cwd))}async function getWorkspaceContracts(pmRoot,options={}){const settings=await readSettings(pmRoot),extensionRegistrations=options.extensionRegistrations??(options.noExtensions===!0?null:await resolveWorkspaceExtensionRegistrations(pmRoot,settings,options.cwd)),typeRegistry=resolveItemTypeRegistry(settings,extensionRegistrations),statusRegistry=resolveRuntimeStatusRegistry(settings.schema),fieldRegistry=resolveRuntimeFieldRegistry(settings.schema);return{types:[...typeRegistry.types],statuses:statusRegistry.definitions.map(definition=>definition.id),openStatus:statusRegistry.open_status,closeStatus:statusRegistry.close_status,canceledStatus:statusRegistry.canceled_status,fields:buildWorkspaceFieldContracts(fieldRegistry.definitions),extensionCommands:buildWorkspaceExtensionCommandContracts(extensionRegistrations?.commands??[])}}async function loadWorkspaceExtensionRegistrations(pmRoot,settings,cwd){const loadResult=await loadExtensions({pmRoot,settings,cwd:cwd??process.cwd(),noExtensions:!1}),activationResult=await activateExtensions(loadResult);try{return activationResult.registrations}finally{try{await deactivateExtensions(loadResult,activationResult)}catch{}}}export{getWorkspaceContracts};
2
2
  //# sourceMappingURL=workspace-contracts.js.map
package/dist/sdk/query.js CHANGED
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d007edcb-46f0-5546-b804-27d86afe23e7")}catch(e2){}})();export*from"./query/list.js";export*from"./query/complete-list.js";export*from"./query/search.js";import{runActivity}from"./query/activity.js";export*from"./query/aggregate.js";export*from"./query/calendar.js";import{CONTEXT_OUTPUT_VALUES,applyContextTagProjection,buildChildrenByParent,collectSubtreeIds,compareCriticalItems,mergeSortedWarnings,packRankedContextItems,parseContextDepth,parseContextFocusFields,parseContextSections,projectContextFocusRows,renderContextMarkdown,resolveContextOutputFormat,resolveContextTokenBudget,runContext,toContextFocusItem,toContextPackingSummary,toContextRankingSummary}from"./query/context.js";export*from"./query/get.js";export*from"./query/history.js";export*from"./query/next.js";export*from"./actionability.js";export*from"./query/search-pagination.js";export*from"./query/search-rendering.js";export*from"./query/item-filter-options.js";export*from"./query/multi-value-filters.js";export*from"./query/parsers.js";export*from"./pagination.js";export*from"./item-children.js";export*from"./item-metadata-index.js";export*from"./context-packing.js";export*from"./context-relevance.js";export*from"./context-signal-store.js";export*from"./context-usage.js";export*from"./workspace-memory.js";export*from"./duplicates.js";import{evaluateMetricFloors,parseEvalMetricFloors,EVAL_METRIC_NAMES}from"../core/search/eval-thresholds.js";import{analyzeDuplicateItems}from"./similarity.js";import{measureItemMetadataReadWork}from"../core/store/item-metadata-read-work.js";import{executeEmbeddingBatchesWithRetry}from"../core/search/embedding-batches.js";export{CONTEXT_OUTPUT_VALUES,EVAL_METRIC_NAMES,analyzeDuplicateItems,applyContextTagProjection,buildChildrenByParent,collectSubtreeIds,compareCriticalItems,evaluateMetricFloors,executeEmbeddingBatchesWithRetry,measureItemMetadataReadWork,mergeSortedWarnings,packRankedContextItems,parseContextDepth,parseContextFocusFields,parseContextSections,parseEvalMetricFloors,projectContextFocusRows,renderContextMarkdown,resolveContextOutputFormat,resolveContextTokenBudget,runActivity,runContext,toContextFocusItem,toContextPackingSummary,toContextRankingSummary};
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]="d007edcb-46f0-5546-b804-27d86afe23e7")}catch{}})();export*from"./query/list.js";export*from"./query/complete-list.js";export*from"./query/search.js";import{runActivity}from"./query/activity.js";export*from"./query/aggregate.js";export*from"./query/calendar.js";import{CONTEXT_OUTPUT_VALUES,applyContextTagProjection,buildChildrenByParent,collectSubtreeIds,compareCriticalItems,mergeSortedWarnings,packRankedContextItems,parseContextDepth,parseContextFocusFields,parseContextSections,projectContextFocusRows,renderContextMarkdown,resolveContextOutputFormat,resolveContextTokenBudget,runContext,toContextFocusItem,toContextPackingSummary,toContextRankingSummary}from"./query/context.js";export*from"./query/get.js";export*from"./query/history.js";export*from"./query/next.js";export*from"./actionability.js";export*from"./query/search-pagination.js";export*from"./query/search-rendering.js";export*from"./query/item-filter-options.js";export*from"./query/multi-value-filters.js";export*from"./query/parsers.js";export*from"./pagination.js";export*from"./item-children.js";export*from"./item-metadata-index.js";export*from"./context-packing.js";export*from"./context-relevance.js";export*from"./context-signal-store.js";export*from"./context-usage.js";export*from"./workspace-memory.js";export*from"./duplicates.js";import{evaluateMetricFloors,parseEvalMetricFloors,EVAL_METRIC_NAMES}from"../core/search/eval-thresholds.js";import{analyzeDuplicateItems}from"./similarity.js";import{measureItemMetadataReadWork}from"../core/store/item-metadata-read-work.js";import{executeEmbeddingBatchesWithRetry}from"../core/search/embedding-batches.js";export{CONTEXT_OUTPUT_VALUES,EVAL_METRIC_NAMES,analyzeDuplicateItems,applyContextTagProjection,buildChildrenByParent,collectSubtreeIds,compareCriticalItems,evaluateMetricFloors,executeEmbeddingBatchesWithRetry,measureItemMetadataReadWork,mergeSortedWarnings,packRankedContextItems,parseContextDepth,parseContextFocusFields,parseContextSections,parseEvalMetricFloors,projectContextFocusRows,renderContextMarkdown,resolveContextOutputFormat,resolveContextTokenBudget,runActivity,runContext,toContextFocusItem,toContextPackingSummary,toContextRankingSummary};
2
2
  //# sourceMappingURL=query.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="de370088-9285-5b33-8c7f-da8e9bb88286")}catch(e2){}})();import{createHash}from"node:crypto";import{EXIT_CODE}from"../../core/shared/constants.js";import{PmCliError}from"../../core/shared/errors.js";import{stableStringify}from"../../core/shared/serialization.js";import{resolveReadOutputSurface}from"../read-output-contracts.js";import{readOutputContinuationRowCollections,sliceReadOutputRowCollection}from"../read-output-rows.js";const MAX_READ_OUTPUT_CURSOR_LENGTH=4096;const HEALTH_TELEMETRY_VOLATILE_DETAIL_FIELDS=Object.freeze(["queue_draining","queue_entries","queue_exists","queue_high_retry_entries","queue_invalid_rows","queue_max_attempts","queue_rows_total","queue_size_bytes","pending_otel_spans","last_attempted_flush_at","last_failed_flush_at","last_otel_attempt_at","last_otel_failure_at","last_otel_success_at","last_successful_flush_at"]);const PM_READ_OUTPUT_CONTINUATION_FINGERPRINT_POLICIES=Object.freeze({health:Object.freeze({version:3,paths:Object.freeze(["checks"]),ignored_detail_field_names_by_row:Object.freeze({telemetry:HEALTH_TELEMETRY_VOLATILE_DETAIL_FIELDS}),guarantee:"nonvolatile_snapshot_and_stable_configuration"})});function isRecord(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)}function normalizeReadOutputFingerprintValue(value){if(Array.isArray(value)){return value.map(normalizeReadOutputFingerprintValue)}if(!isRecord(value))return value;return Object.fromEntries(Object.entries(value).map(([key,entry])=>[key,normalizeReadOutputFingerprintValue(entry)]))}function normalizeReadOutputFingerprintRow(value,policy){if(!isRecord(value))return normalizeReadOutputFingerprintValue(value);const rowName=typeof value.name==="string"?value.name:void 0;const ignoredDetailFields=rowName!==void 0&&Object.hasOwn(policy.ignored_detail_field_names_by_row,rowName)?policy.ignored_detail_field_names_by_row[rowName]:void 0;return Object.fromEntries(Object.entries(value).map(([key,entry])=>{if(key!=="details"||!ignoredDetailFields||!isRecord(entry)){return[key,normalizeReadOutputFingerprintValue(entry)]}return[key,Object.fromEntries(Object.entries(entry).filter(([detailKey])=>!ignoredDetailFields.includes(detailKey)).map(([detailKey,detailValue])=>[detailKey,normalizeReadOutputFingerprintValue(detailValue)]))]}))}function normalizeReadOutputFingerprintSnapshot(value,policy){return Array.isArray(value)?value.map(row=>normalizeReadOutputFingerprintRow(row,policy)):normalizeReadOutputFingerprintRow(value,policy)}function readOutputCollectionFingerprint(path,value,command){const policy=command?PM_READ_OUTPUT_CONTINUATION_FINGERPRINT_POLICIES[command]:void 0;const policyApplies=policy?.paths.includes(path)===true;return createHash("sha256").update(stableStringify({path,value:policyApplies?normalizeReadOutputFingerprintSnapshot(value,policy):value,...policyApplies?{fingerprint_policy_version:policy.version}:{}})).digest("base64url").slice(0,16)}function encodeReadOutputContinuationCursor(cursor){return Buffer.from(JSON.stringify({v:1,c:cursor.command,p:cursor.path,o:cursor.offset,n:cursor.total_rows,f:cursor.fingerprint}),"utf8").toString("base64url")}function decodeReadOutputContinuationCursor(raw){if(raw.length>MAX_READ_OUTPUT_CURSOR_LENGTH){throw new PmCliError("The read-output continuation cursor is malformed or unsupported.",EXIT_CODE.USAGE,{code:"read_output_cursor_invalid"})}let candidate;try{candidate=JSON.parse(Buffer.from(raw,"base64url").toString("utf8"))}catch{candidate=null}if(!isRecord(candidate)||candidate.v!==1||resolveReadOutputSurface(String(candidate.c??""))!==candidate.c||typeof candidate.p!=="string"||candidate.p.length===0||!Number.isSafeInteger(candidate.o)||candidate.o<0||!Number.isSafeInteger(candidate.n)||candidate.n<1||typeof candidate.f!=="string"||candidate.f.length===0){throw new PmCliError("The read-output continuation cursor is malformed or unsupported.",EXIT_CODE.USAGE,{code:"read_output_cursor_invalid"})}return{version:1,command:candidate.c,path:candidate.p,offset:candidate.o,total_rows:candidate.n,fingerprint:candidate.f}}function prioritizeAssuranceAssertions(result){if(!Array.isArray(result.assertions))return result;const priority=row=>{if(!isRecord(row)||row.verdict==="pass")return 4;if(row.verdict==="retired")return 3;return row.enforcement==="block"?0:row.enforcement==="warn"?1:2};return{...result,assertions:result.assertions.map((row,index)=>({row,index})).sort((left,right)=>priority(left.row)-priority(right.row)||left.index-right.index).map(({row})=>row),budget_retention_policy:"verdict_priority"}}function applyReadOutputContinuation(result,command,cursor){if(!cursor)return result;if(cursor.command!==command){throw new PmCliError(`The read-output cursor belongs to ${cursor.command}, not ${command}.`,EXIT_CODE.USAGE,{code:"read_output_cursor_command_mismatch"})}const collection=readOutputContinuationRowCollections(result).find(entry=>entry.path===cursor.path);const totalRows=collection?Array.isArray(collection.value)?collection.value.length:Object.keys(collection.value).length:0;if(!collection||totalRows!==cursor.total_rows||cursor.offset>totalRows||readOutputCollectionFingerprint(cursor.path,collection.value,command)!==cursor.fingerprint){throw new PmCliError("The read-output continuation no longer matches the declared row collection; restart the bounded read.",EXIT_CODE.USAGE,{code:"read_output_cursor_stale"})}return sliceReadOutputRowCollection(result,cursor.path,cursor.offset)}export{PM_READ_OUTPUT_CONTINUATION_FINGERPRINT_POLICIES,applyReadOutputContinuation,decodeReadOutputContinuationCursor,encodeReadOutputContinuationCursor,prioritizeAssuranceAssertions,readOutputCollectionFingerprint};
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]="ddc50fa6-a983-5d61-bc06-673c9b4a483e")}catch{}})();import{createHash}from"node:crypto";import{EXIT_CODE}from"../../core/shared/constants.js";import{PmCliError}from"../../core/shared/errors.js";import{stableStringify}from"../../core/shared/serialization.js";import{resolveReadOutputSurface}from"../read-output-contracts.js";import{readOutputContinuationRowCollections,sliceReadOutputRowCollection}from"../read-output-rows.js";const MAX_READ_OUTPUT_CURSOR_LENGTH=4096,HEALTH_TELEMETRY_VOLATILE_DETAIL_FIELDS=Object.freeze(["queue_draining","queue_entries","queue_exists","queue_high_retry_entries","queue_invalid_rows","queue_max_attempts","queue_rows_total","queue_size_bytes","pending_otel_spans","last_attempted_flush_at","last_failed_flush_at","last_otel_attempt_at","last_otel_failure_at","last_otel_success_at","last_successful_flush_at"]),PM_READ_OUTPUT_CONTINUATION_FINGERPRINT_POLICIES=Object.freeze({health:Object.freeze({version:3,paths:Object.freeze(["checks"]),ignored_detail_field_names_by_row:Object.freeze({telemetry:HEALTH_TELEMETRY_VOLATILE_DETAIL_FIELDS}),guarantee:"nonvolatile_snapshot_and_stable_configuration"})});function isRecord(value){return value!==null&&typeof value=="object"&&!Array.isArray(value)}function normalizeReadOutputFingerprintValue(value){return Array.isArray(value)?value.map(normalizeReadOutputFingerprintValue):isRecord(value)?Object.fromEntries(Object.entries(value).map(([key,entry])=>[key,normalizeReadOutputFingerprintValue(entry)])):value}function normalizeReadOutputFingerprintRow(value,policy){if(!isRecord(value))return normalizeReadOutputFingerprintValue(value);const rowName=typeof value.name=="string"?value.name:void 0,ignoredDetailFields=rowName!==void 0&&Object.hasOwn(policy.ignored_detail_field_names_by_row,rowName)?policy.ignored_detail_field_names_by_row[rowName]:void 0;return Object.fromEntries(Object.entries(value).map(([key,entry])=>key!=="details"||!ignoredDetailFields||!isRecord(entry)?[key,normalizeReadOutputFingerprintValue(entry)]:[key,Object.fromEntries(Object.entries(entry).filter(([detailKey])=>!ignoredDetailFields.includes(detailKey)).map(([detailKey,detailValue])=>[detailKey,normalizeReadOutputFingerprintValue(detailValue)]))]))}function normalizeReadOutputFingerprintSnapshot(value,policy){return Array.isArray(value)?value.map(row=>normalizeReadOutputFingerprintRow(row,policy)):normalizeReadOutputFingerprintRow(value,policy)}function readOutputCollectionFingerprint(path,value,command){const policy=command?PM_READ_OUTPUT_CONTINUATION_FINGERPRINT_POLICIES[command]:void 0,policyApplies=policy?.paths.includes(path)===!0;return createHash("sha256").update(stableStringify({path,value:policyApplies?normalizeReadOutputFingerprintSnapshot(value,policy):value,...policyApplies?{fingerprint_policy_version:policy.version}:{}})).digest("base64url").slice(0,16)}function encodeReadOutputContinuationCursor(cursor){return Buffer.from(JSON.stringify({v:1,c:cursor.command,p:cursor.path,o:cursor.offset,n:cursor.total_rows,f:cursor.fingerprint}),"utf8").toString("base64url")}function decodeReadOutputContinuationCursor(raw){if(raw.length>MAX_READ_OUTPUT_CURSOR_LENGTH)throw new PmCliError("The read-output continuation cursor is malformed or unsupported.",EXIT_CODE.USAGE,{code:"read_output_cursor_invalid"});let candidate;try{candidate=JSON.parse(Buffer.from(raw,"base64url").toString("utf8"))}catch{candidate=null}if(!isRecord(candidate)||candidate.v!==1||resolveReadOutputSurface(String(candidate.c??""))!==candidate.c||typeof candidate.p!="string"||candidate.p.length===0||!Number.isSafeInteger(candidate.o)||candidate.o<0||!Number.isSafeInteger(candidate.n)||candidate.n<1||typeof candidate.f!="string"||candidate.f.length===0)throw new PmCliError("The read-output continuation cursor is malformed or unsupported.",EXIT_CODE.USAGE,{code:"read_output_cursor_invalid"});return{version:1,command:candidate.c,path:candidate.p,offset:candidate.o,total_rows:candidate.n,fingerprint:candidate.f}}function prioritizeAssuranceAssertions(result){if(!Array.isArray(result.assertions))return result;const priority=row=>!isRecord(row)||row.verdict==="pass"?4:row.verdict==="retired"?3:row.enforcement==="block"?0:row.enforcement==="warn"?1:2;return{...result,assertions:result.assertions.map((row,index)=>({row,index})).sort((left,right)=>priority(left.row)-priority(right.row)||left.index-right.index).map(({row})=>row),budget_retention_policy:"verdict_priority"}}function applyReadOutputContinuation(result,command,cursor){if(!cursor)return result;if(cursor.command!==command)throw new PmCliError(`The read-output cursor belongs to ${cursor.command}, not ${command}.`,EXIT_CODE.USAGE,{code:"read_output_cursor_command_mismatch"});const collection=readOutputContinuationRowCollections(result).find(entry=>entry.path===cursor.path),totalRows=collection?Array.isArray(collection.value)?collection.value.length:Object.keys(collection.value).length:0;if(!collection||totalRows!==cursor.total_rows||cursor.offset>totalRows||readOutputCollectionFingerprint(cursor.path,collection.value,command)!==cursor.fingerprint)throw new PmCliError("The read-output continuation no longer matches the declared row collection; restart the bounded read.",EXIT_CODE.USAGE,{code:"read_output_cursor_stale"});return sliceReadOutputRowCollection(result,cursor.path,cursor.offset)}export{PM_READ_OUTPUT_CONTINUATION_FINGERPRINT_POLICIES,applyReadOutputContinuation,decodeReadOutputContinuationCursor,encodeReadOutputContinuationCursor,prioritizeAssuranceAssertions,readOutputCollectionFingerprint};
2
2
  //# sourceMappingURL=continuation.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="d2e9c5c4-d817-511d-b719-1d4eb70d0b42")}catch(e2){}})();const READ_OUTPUT_DIMENSION_FLAGS={include:"--output-include",amount:"--output-limit",cost:"--output-budget",encoding:"--output-format"};const READ_OUTPUT_COMPOSITION_FLAGS=Object.freeze(["--output-session","--output-cursor","--output-row-contract"]);export{READ_OUTPUT_COMPOSITION_FLAGS,READ_OUTPUT_DIMENSION_FLAGS};
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]="ddd492ec-2482-5047-8d7f-8c40e18b60e3")}catch{}})();const READ_OUTPUT_DIMENSION_FLAGS={include:"--output-include",amount:"--output-limit",cost:"--output-budget",encoding:"--output-format"},READ_OUTPUT_COMPOSITION_FLAGS=Object.freeze(["--output-session","--output-cursor","--output-row-contract"]);export{READ_OUTPUT_COMPOSITION_FLAGS,READ_OUTPUT_DIMENSION_FLAGS};
2
2
  //# sourceMappingURL=options.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c649c902-db30-5a05-982e-46669ca96148")}catch(e2){}})();const READ_OUTPUT_INVOCATION_PROVENANCE=Symbol.for("pm.readOutputInvocationProvenance");function markCanonicalSdkReadOutputOptions(options,canonicalIncludeModes){Reflect.set(options,READ_OUTPUT_INVOCATION_PROVENANCE,{canonical_include_modes:[...canonicalIncludeModes],explicit_legacy_aliases:[],sdk_invocation_observed:true});return options}export{READ_OUTPUT_INVOCATION_PROVENANCE,markCanonicalSdkReadOutputOptions};
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]="1cc0fcb7-2aaa-5233-bdfd-4b4d0fb3e9c1")}catch{}})();const READ_OUTPUT_INVOCATION_PROVENANCE=Symbol.for("pm.readOutputInvocationProvenance");function markCanonicalSdkReadOutputOptions(options,canonicalIncludeModes){return Reflect.set(options,READ_OUTPUT_INVOCATION_PROVENANCE,{canonical_include_modes:[...canonicalIncludeModes],explicit_legacy_aliases:[],sdk_invocation_observed:!0}),options}export{READ_OUTPUT_INVOCATION_PROVENANCE,markCanonicalSdkReadOutputOptions};
2
2
  //# sourceMappingURL=provenance.js.map