@unbrained/pm-cli 2026.9.8 → 2026.9.10

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 (183) hide show
  1. package/.agents/skills/pm-user/SKILL.md +2 -2
  2. package/.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md +1 -1
  3. package/.claude-plugin/marketplace.json +2 -2
  4. package/CHANGELOG.md +38 -2
  5. package/dist/cli/command-namespaces.d.ts +9 -0
  6. package/dist/cli/command-namespaces.js +2 -0
  7. package/dist/cli/help-content.js +1 -1
  8. package/dist/cli/help-json-payload.d.ts +5 -1
  9. package/dist/cli/help-json-payload.js +2 -2
  10. package/dist/cli/main.d.ts +1 -0
  11. package/dist/cli/main.js +3 -3
  12. package/dist/cli/register-list-query.js +4 -4
  13. package/dist/cli/register-mutation.d.ts +0 -5
  14. package/dist/cli/register-mutation.js +2 -2
  15. package/dist/cli/register-operations.d.ts +0 -5
  16. package/dist/cli/register-operations.js +1 -1
  17. package/dist/cli-bundle/bundle-manifest.json +154 -154
  18. package/dist/cli-bundle/chunks/chunk-4SFBH77G.js +2233 -0
  19. package/dist/cli-bundle/chunks/{chunk-LEZOUXG6.js → chunk-74RGSPLL.js} +2 -2
  20. package/dist/cli-bundle/chunks/chunk-7WIHZI2M.js +5 -0
  21. package/dist/cli-bundle/chunks/{chunk-JAAEYHUA.js → chunk-EOCKPCEY.js} +2 -2
  22. package/dist/cli-bundle/chunks/chunk-GLQMKUGP.js +2 -0
  23. package/dist/cli-bundle/chunks/{chunk-FLDWYEND.js → chunk-I6XT3DLQ.js} +62 -60
  24. package/dist/cli-bundle/chunks/chunk-MACGGTLQ.js +29 -0
  25. package/dist/cli-bundle/chunks/chunk-NKOYVKFM.js +3 -0
  26. package/dist/cli-bundle/chunks/{chunk-YVEQ2AMO.js → chunk-P6BEYAON.js} +2 -2
  27. package/dist/cli-bundle/chunks/{chunk-G5ADGQ2D.js → chunk-PYUITRSV.js} +2 -2
  28. package/dist/cli-bundle/chunks/chunk-T3AMFUCN.js +2 -0
  29. package/dist/cli-bundle/chunks/{chunk-XOD2PCB6.js → chunk-TSWEX72T.js} +2 -2
  30. package/dist/cli-bundle/chunks/chunk-YKQTETJI.js +235 -0
  31. package/dist/cli-bundle/chunks/{register-list-query-KSK3R63M.js → register-list-query-CUIW7SSE.js} +7 -7
  32. package/dist/cli-bundle/chunks/register-mutation-5F5CYUWZ.js +20 -0
  33. package/dist/cli-bundle/chunks/register-operations-XIZPLPQY.js +2 -0
  34. package/dist/cli-bundle/chunks/{register-setup-BQ5SVD4B.js → register-setup-JVGPCAIL.js} +2 -2
  35. package/dist/cli-bundle/focused-chunks/{chunk-RXT4P5QH.js → chunk-26O2WB73.js} +2 -2
  36. package/dist/cli-bundle/focused-chunks/chunk-5YU75QLV.js +2 -0
  37. package/dist/cli-bundle/focused-chunks/{chunk-EE5QSM4Z.js → chunk-7N5MRONP.js} +2 -2
  38. package/dist/cli-bundle/focused-chunks/chunk-B2CMFYRZ.js +2 -0
  39. package/dist/cli-bundle/focused-chunks/{chunk-OPFHFGDD.js → chunk-CRY5MHEI.js} +2 -2
  40. package/dist/cli-bundle/focused-chunks/{chunk-COPBO5HW.js → chunk-F6WKFXBT.js} +2 -2
  41. package/dist/cli-bundle/focused-chunks/{chunk-HJVARYM3.js → chunk-FHUARRMA.js} +2 -2
  42. package/dist/cli-bundle/focused-chunks/{chunk-3WRPWLA7.js → chunk-M36SF4GE.js} +2 -2
  43. package/dist/cli-bundle/focused-chunks/chunk-OROZM37I.js +177 -0
  44. package/dist/cli-bundle/focused-chunks/{chunk-7MBUII7U.js → chunk-PNGYYQY7.js} +2 -2
  45. package/dist/cli-bundle/focused-chunks/chunk-SL5YVVPV.js +58 -0
  46. package/dist/cli-bundle/focused-chunks/chunk-TPOL4TWE.js +9 -0
  47. package/dist/cli-bundle/focused-chunks/{chunk-RMWES4M6.js → chunk-U5SHHU7E.js} +2 -2
  48. package/dist/cli-bundle/focused-chunks/chunk-XSMA2W6Q.js +12 -0
  49. package/dist/cli-bundle/focused-chunks/chunk-ZAWAL2CG.js +2 -0
  50. package/dist/cli-bundle/focused-chunks/chunk-ZDNAWWQI.js +26 -0
  51. package/dist/cli-bundle/focused-chunks/{chunk-DUN4IXYN.js → chunk-ZJHYQOTM.js} +2 -2
  52. package/dist/cli-bundle/main.js +26 -26
  53. package/dist/cli-bundle/sdk-authoring.js +1 -1
  54. package/dist/cli-bundle/sdk-contracts.js +2 -2
  55. package/dist/cli-bundle/sdk-core.js +29 -29
  56. package/dist/cli-bundle/sdk-governance.js +1 -1
  57. package/dist/cli-bundle/sdk-graph.js +1 -1
  58. package/dist/cli-bundle/sdk-merge.js +42 -42
  59. package/dist/cli-bundle/sdk-query.js +1 -1
  60. package/dist/cli-bundle/sdk-runtime.js +1 -1
  61. package/dist/cli-bundle/sdk-testing.js +1 -1
  62. package/dist/cli-bundle/sdk.js +10 -10
  63. package/dist/core/config/nested-settings.js +1 -1
  64. package/dist/core/policy/workflow-policy-schema.d.ts +312 -0
  65. package/dist/core/policy/workflow-policy-schema.js +2 -0
  66. package/dist/core/policy/workflow-policy-store.d.ts +24 -0
  67. package/dist/core/policy/workflow-policy-store.js +2 -0
  68. package/dist/core/policy/workflow-policy.d.ts +139 -0
  69. package/dist/core/policy/workflow-policy.js +2 -0
  70. package/dist/core/shared/constants.js +1 -1
  71. package/dist/core/store/item-store.js +1 -1
  72. package/dist/core/store/settings-validator.d.ts +1 -0
  73. package/dist/core/store/settings-validator.js +1 -1
  74. package/dist/core/store/settings.js +1 -1
  75. package/dist/mcp/tool-definitions.js +1 -1
  76. package/dist/sdk/agent/item-addressing.js +1 -1
  77. package/dist/sdk/agent-capability-contracts.js +1 -1
  78. package/dist/sdk/cli-bootstrap.js +1 -1
  79. package/dist/sdk/cli-contracts/command-aliases.d.ts +11 -1
  80. package/dist/sdk/cli-contracts/command-aliases.js +1 -1
  81. package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
  82. package/dist/sdk/cli-contracts/enum-contracts.js +1 -1
  83. package/dist/sdk/cli-contracts/flag-contracts.js +1 -1
  84. package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -1
  85. package/dist/sdk/cli-contracts/grammar-contracts.js +1 -1
  86. package/dist/sdk/cli-contracts/runtime-contracts.d.ts +4 -1
  87. package/dist/sdk/cli-contracts/runtime-contracts.js +1 -1
  88. package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -1
  89. package/dist/sdk/cli-contracts/tool-schema.d.ts +3 -3
  90. package/dist/sdk/cli-contracts/tool-schema.js +1 -1
  91. package/dist/sdk/cli-contracts/typed-action-inputs.d.ts +2 -0
  92. package/dist/sdk/cli-contracts.d.ts +1 -1
  93. package/dist/sdk/cli-contracts.js +1 -1
  94. package/dist/sdk/completion.js +375 -347
  95. package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -1
  96. package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -1
  97. package/dist/sdk/governance/validate.d.ts +3 -1
  98. package/dist/sdk/governance/validate.js +1 -1
  99. package/dist/sdk/governance/workflow-completeness.d.ts +32 -0
  100. package/dist/sdk/governance/workflow-completeness.js +2 -0
  101. package/dist/sdk/governance/workflow-policy.d.ts +47 -0
  102. package/dist/sdk/governance/workflow-policy.js +4 -0
  103. package/dist/sdk/governance.d.ts +1 -0
  104. package/dist/sdk/governance.js +1 -1
  105. package/dist/sdk/index.d.ts +2 -2
  106. package/dist/sdk/index.js +1 -1
  107. package/dist/sdk/lifecycle/claim.js +1 -1
  108. package/dist/sdk/lifecycle/create.js +1 -1
  109. package/dist/sdk/lifecycle/lifecycle-transitions.d.ts +1 -1
  110. package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -1
  111. package/dist/sdk/lifecycle/mcp-actions.js +1 -1
  112. package/dist/sdk/lifecycle/recurrence-parsers.d.ts +1 -1
  113. package/dist/sdk/lifecycle/recurrence-parsers.js +1 -1
  114. package/dist/sdk/lifecycle/restore.js +1 -1
  115. package/dist/sdk/lifecycle/task-composition.d.ts +17 -0
  116. package/dist/sdk/lifecycle/task-composition.js +2 -0
  117. package/dist/sdk/lifecycle/update.js +1 -1
  118. package/dist/sdk/package-import-adapters.js +1 -1
  119. package/dist/sdk/public-surface.json +1 -1
  120. package/dist/sdk/query/search-contracts.d.ts +27 -0
  121. package/dist/sdk/query/search-contracts.js +1 -1
  122. package/dist/sdk/query/search.d.ts +6 -4
  123. package/dist/sdk/query/search.js +2 -2
  124. package/dist/sdk/query/workspace-contracts.d.ts +3 -0
  125. package/dist/sdk/query/workspace-contracts.js +2 -0
  126. package/dist/sdk/read-output-contracts.d.ts +1 -1
  127. package/dist/sdk/read-output-contracts.js +1 -1
  128. package/dist/sdk/runtime-input.js +1 -1
  129. package/dist/sdk/runtime-public-contracts.d.ts +2 -1
  130. package/dist/sdk/runtime.d.ts +73 -9
  131. package/dist/sdk/runtime.js +1 -1
  132. package/dist/sdk/schema.d.ts +2 -1
  133. package/dist/sdk/schema.js +1 -1
  134. package/dist/types.d.ts +4 -0
  135. package/dist/types.js +1 -1
  136. package/docs/COMMANDS.md +36 -24
  137. package/docs/COMMAND_NAMESPACES.md +65 -0
  138. package/docs/CONFIGURATION.md +12 -1
  139. package/docs/LIFECYCLE_COMMANDS.md +77 -0
  140. package/docs/README.md +3 -0
  141. package/docs/READ_OUTPUT_CONTRACTS.md +5 -0
  142. package/docs/TESTING.md +10 -0
  143. package/docs/WORKFLOW_POLICIES.md +129 -0
  144. package/docs/generated/AGENT_CAPABILITY_ROUTING.md +6 -6
  145. package/docs/generated/AGENT_COMMAND_SURFACE.md +19 -0
  146. package/docs/generated/FLAG_LEXICON_BUDGETS.md +23 -5
  147. package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +11 -5
  148. package/marketplace.json +2 -2
  149. package/package.json +5 -5
  150. package/packages/pm-beads/package.json +1 -1
  151. package/packages/pm-calendar/package.json +1 -1
  152. package/packages/pm-command-kit/package.json +1 -1
  153. package/packages/pm-digital-twin/package.json +1 -1
  154. package/packages/pm-governance-audit/README.md +4 -2
  155. package/packages/pm-governance-audit/package.json +1 -1
  156. package/packages/pm-guide-shell/package.json +1 -1
  157. package/packages/pm-kanban/package.json +1 -1
  158. package/packages/pm-lifecycle-hooks/package.json +1 -1
  159. package/packages/pm-linked-test-adapters/package.json +1 -1
  160. package/packages/pm-search-advanced/README.md +6 -4
  161. package/packages/pm-search-advanced/package.json +1 -1
  162. package/packages/pm-templates/package.json +1 -1
  163. package/packages/pm-todos/package.json +1 -1
  164. package/packages/pm-vcs/package.json +1 -1
  165. package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
  166. package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
  167. package/dist/cli-bundle/chunks/chunk-3BZZA6A3.js +0 -5
  168. package/dist/cli-bundle/chunks/chunk-AMRDVX36.js +0 -235
  169. package/dist/cli-bundle/chunks/chunk-DAM4CBBR.js +0 -2202
  170. package/dist/cli-bundle/chunks/chunk-KR3RP4FH.js +0 -3
  171. package/dist/cli-bundle/chunks/chunk-NSAPNEYH.js +0 -2
  172. package/dist/cli-bundle/chunks/chunk-QOEKOECV.js +0 -29
  173. package/dist/cli-bundle/chunks/chunk-RHSFOMHU.js +0 -2
  174. package/dist/cli-bundle/chunks/register-mutation-IQ5C7U6O.js +0 -20
  175. package/dist/cli-bundle/chunks/register-operations-DWVHR2NC.js +0 -2
  176. package/dist/cli-bundle/focused-chunks/chunk-IAUOUGVR.js +0 -177
  177. package/dist/cli-bundle/focused-chunks/chunk-KOOMJ54F.js +0 -2
  178. package/dist/cli-bundle/focused-chunks/chunk-MZDXX7JY.js +0 -56
  179. package/dist/cli-bundle/focused-chunks/chunk-QHNETP77.js +0 -9
  180. package/dist/cli-bundle/focused-chunks/chunk-SDOL6FM2.js +0 -12
  181. package/dist/cli-bundle/focused-chunks/chunk-SQV4AAUC.js +0 -2
  182. package/dist/cli-bundle/focused-chunks/chunk-WE3IUNIW.js +0 -26
  183. package/dist/cli-bundle/focused-chunks/chunk-YALOUBWJ.js +0 -2
@@ -1,5 +1,5 @@
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]="56fd6790-568a-5c97-ab94-4b645aaa3718")}catch(e2){}})();import{EXIT_CODE,PmCliError}from"./runtime-primitives.js";import{listPmCommandsForTier}from"./agent-capability-contracts.js";import{SCAFFOLD_CAPABILITIES}from"./extension/scaffold.js";import{AGGREGATE_FLAG_CONTRACTS,APPEND_FLAG_CONTRACTS,CALENDAR_FLAG_CONTRACTS,CLOSE_MANY_FLAG_CONTRACTS,COMPLETION_FLAG_CONTRACTS,CONTRACTS_FLAG_CONTRACTS,CONTEXT_FLAG_CONTRACTS,COPY_FLAG_CONTRACTS,FOCUS_FLAG_CONTRACTS,MEET_FLAG_CONTRACTS,REMIND_FLAG_CONTRACTS,CREATE_FLAG_CONTRACTS,DEPS_FLAG_CONTRACTS,DUPLICATES_FLAG_CONTRACTS,EXTENSION_FLAG_CONTRACTS,GRAPH_FLAG_CONTRACTS,GET_FLAG_CONTRACTS,GUIDE_FLAG_CONTRACTS,GLOBAL_FLAG_CONTRACTS,HEALTH_FLAG_CONTRACTS,HISTORY_AUTHOR_ACKNOWLEDGE_FLAG_CONTRACTS,HISTORY_FLAG_CONTRACTS,INIT_FLAG_CONTRACTS,LIST_FILTER_FLAG_CONTRACTS,NEXT_FLAG_CONTRACTS,PM_COMMAND_ALIAS_CONTRACTS,PM_HISTORY_COMMAND_ALIASES,resolveSubcommandFlagContractsForCommand,PACKAGE_FLAG_CONTRACTS,PLAN_FLAG_CONTRACTS,SEARCH_FLAG_CONTRACTS,STATS_FLAG_CONTRACTS,EVENTS_FLAG_CONTRACTS,UPDATE_FLAG_CONTRACTS,UPDATE_MANY_FLAG_CONTRACTS,UPGRADE_FLAG_CONTRACTS,toCompletionFlagString}from"./cli-contracts.js";import{BUILTIN_ITEM_TYPE_VALUES,STATUS_VALUES}from"../types/index.js";import{listGuideTopicIds}from"./guide-topics.js";import{enrichCliFlagInvocationContracts}from"./flag-invocation-contracts.js";import{GLOBAL_VALUE_CONSUMING_FLAGS}from"./cli-contracts/bootstrap-command-scanner.js";const VALID_SHELLS=["bash","zsh","fish"];const DEFAULT_ITEM_TYPES=[...BUILTIN_ITEM_TYPE_VALUES];const DEFAULT_STATUS_VALUES=[...STATUS_VALUES];const HIDDEN_COMMAND_ALIASES=new Set(PM_COMMAND_ALIAS_CONTRACTS.filter(contract=>contract.hidden).map(contract=>contract.alias));const ALL_COMMANDS=listPmCommandsForTier("full").filter(command=>!HIDDEN_COMMAND_ALIASES.has(command));const LIST_FLAGS=toCompletionFlagString(LIST_FILTER_FLAG_CONTRACTS);const AGGREGATE_FLAGS=toCompletionFlagString(AGGREGATE_FLAG_CONTRACTS);const APPEND_FLAGS=toCompletionFlagString(APPEND_FLAG_CONTRACTS);const COPY_FLAGS=toCompletionFlagString(COPY_FLAG_CONTRACTS);const RESTORE_INVOCATIONS=enrichCliFlagInvocationContracts("restore",resolveSubcommandFlagContractsForCommand("restore"));const FOCUS_FLAGS=toCompletionFlagString(FOCUS_FLAG_CONTRACTS);const MEET_FLAGS=toCompletionFlagString(MEET_FLAG_CONTRACTS);const REMIND_FLAGS=toCompletionFlagString(REMIND_FLAG_CONTRACTS);const CREATE_FLAGS=toCompletionFlagString(CREATE_FLAG_CONTRACTS);const GET_FLAGS=toCompletionFlagString(GET_FLAG_CONTRACTS);const UPDATE_FLAGS=toCompletionFlagString(UPDATE_FLAG_CONTRACTS);const UPDATE_MANY_FLAGS=toCompletionFlagString(UPDATE_MANY_FLAG_CONTRACTS);const CLOSE_MANY_FLAGS=toCompletionFlagString(CLOSE_MANY_FLAG_CONTRACTS);const HISTORY_LEAVES=PM_HISTORY_COMMAND_ALIASES.map(entry=>entry.canonical_argv[1]).join(" ");const HISTORY_OPERATION_FLAGS=PM_HISTORY_COMMAND_ALIASES.map(entry=>({...entry,flags:toCompletionFlagString(resolveSubcommandFlagContractsForCommand(entry.alias))}));const HISTORY_FLAGS=toCompletionFlagString(HISTORY_FLAG_CONTRACTS);const HISTORY_AUTHOR_ACKNOWLEDGE_FLAGS=toCompletionFlagString(HISTORY_AUTHOR_ACKNOWLEDGE_FLAG_CONTRACTS,false);const EVENTS_FLAGS=toCompletionFlagString(EVENTS_FLAG_CONTRACTS);const CALENDAR_FLAGS=toCompletionFlagString(CALENDAR_FLAG_CONTRACTS);const CONTEXT_FLAGS=toCompletionFlagString(CONTEXT_FLAG_CONTRACTS);const NEXT_FLAGS=toCompletionFlagString(NEXT_FLAG_CONTRACTS);const DEPS_FLAGS=toCompletionFlagString(DEPS_FLAG_CONTRACTS);const DUPLICATES_FLAGS=toCompletionFlagString(DUPLICATES_FLAG_CONTRACTS);const GRAPH_FLAGS=toCompletionFlagString(GRAPH_FLAG_CONTRACTS);const GUIDE_FLAGS=toCompletionFlagString(GUIDE_FLAG_CONTRACTS);const SEARCH_FLAGS=toCompletionFlagString(SEARCH_FLAG_CONTRACTS);const STATS_FLAGS=toCompletionFlagString(STATS_FLAG_CONTRACTS);const HEALTH_FLAGS=toCompletionFlagString(HEALTH_FLAG_CONTRACTS);const INIT_FLAGS=toCompletionFlagString(INIT_FLAG_CONTRACTS);const CONTRACTS_FLAGS=toCompletionFlagString(CONTRACTS_FLAG_CONTRACTS);const PLAN_FLAGS=toCompletionFlagString(PLAN_FLAG_CONTRACTS);const PLAN_SUBCOMMANDS_LIST="create show add-step update-step complete-step block-step reorder-step remove-step link unlink decision discovery validation resume approve materialize";const COMPLETION_FLAGS=toCompletionFlagString(COMPLETION_FLAG_CONTRACTS);const COMPLETION_SHELL_CHOICES=`${COMPLETION_FLAGS} bash zsh fish`;const GUIDE_TOPIC_CHOICES=joinCompletionValues(listGuideTopicIds());const EXTENSION_LIFECYCLE_ACTIONS="init scaffold install uninstall explore manage describe reload doctor catalog adopt adopt-all activate deactivate migrate";const PACKAGE_LIFECYCLE_ACTIONS=`${EXTENSION_LIFECYCLE_ACTIONS} upgrade`;const EXTENSION_LIFECYCLE_FLAGS=toCompletionFlagString(EXTENSION_FLAG_CONTRACTS);const PACKAGE_LIFECYCLE_FLAGS=toCompletionFlagString(PACKAGE_FLAG_CONTRACTS);const UPGRADE_FLAGS=toCompletionFlagString(UPGRADE_FLAG_CONTRACTS);const MUTATION_FLAGS="--author --message --force --json --quiet --no-changed-fields --id-only --pm-path --path --no-extensions --no-pager --profile --help";const DELETE_MUTATION_FLAGS="--dry-run --author --message --force --json --quiet --no-changed-fields --id-only --pm-path --path --no-extensions --no-pager --profile --help";const CLOSE_MUTATION_FLAGS="--author --message --validate-close --duplicate-of --force --json --quiet --no-changed-fields --id-only --pm-path --path --no-extensions --no-pager --profile --help";const RELEASE_MUTATION_FLAGS="--author --message --force --json --quiet --no-changed-fields --id-only --pm-path --path --no-extensions --no-pager --profile --help";const COMMAND_COMPLETION_DESCRIPTIONS=[["init","Initialize pm storage for the current workspace"],["config","Read or update pm settings"],["package","Manage package lifecycle operations"],["packages","Alias for package"],["create","Create a new project management item"],["copy","Copy an existing item to a new ID"],["focus","Set/clear/show the session focused parent for new items"],["list","List active items with optional filters"],["aggregate","Aggregate grouped item counts and numeric stats for governance queries"],["duplicates","Find bounded duplicate clusters across lifecycle statuses"],["guide","Browse local progressive-disclosure guides"],["calendar","Show calendar views for deadlines and reminders"],["cal","Alias for calendar"],["context","Show a token-efficient project context snapshot"],["ctx","Alias for context"],["get","Show item details by ID"],["next","Recommend the next actionable (unblocked, ready) work item"],["search","Search items with keyword, semantic, or hybrid modes"],["reindex","Rebuild search artifacts"],["history","Show item history entries"],["history-compact","Compact history streams into a synthetic baseline + retained tail"],["history-redact","Redact sensitive literals/patterns and recompute history hashes"],["history-repair","Re-anchor a drifted history chain so pm health/validate report ok"],["schema","Manage custom item types and statuses in .agents/pm/schema/*.json"],["profile","List, show, apply, and lint project profiles (archetype schema/config/template/package bundles)"],["plan","Agent-optimized Plan item workflow (create/show/add-step/update-step/complete-step/link/approve/materialize)"],["activity","Show recent activity across items"],["restore","Restore an item to an earlier state"],["update","Update item fields and metadata"],["update-many","Bulk-update matched items with dry-run and rollback checkpoints"],["close","Close an item (reason requirement follows governance settings)"],["close-many","Bulk-close matched items with an optional shared reason and rollback checkpoint"],["delete","Delete an item and record the change"],["append","Append text to an item body"],["comments","List or add comments for an item"],["notes","List or add notes for an item"],["learnings","List or add learnings for an item"],["files","Manage linked files"],["docs","Manage linked docs"],["deps","Show dependency relationships for an item"],["graph","Bounded graph traversal, analytics, and governance-audit queries"],["test","Manage linked tests and optionally run them"],["test-all","Run linked tests across matching items"],["test-runs","Manage background linked-test runs"],["stats","Show project tracker statistics"],["health","Show project tracker health checks"],["validate","Run standalone validation checks"],["gc","Clean optional cache artifacts"],["contracts","Show machine-readable command and schema contracts"],["claim","Claim an item for active work"],["release","Release the active claim for an item"],["start-task","Lifecycle alias to claim and set in_progress"],["pause-task","Lifecycle alias to reopen and release claim"],["close-task","Lifecycle alias to close and release claim"],["meet","Shortcut to create a Meeting with scheduling defaults"],["event","Shortcut to create an Event with scheduling defaults"],["remind","Shortcut to create a Reminder from a point in time"],["templates","Manage reusable create templates"],["completion","Generate shell completion"],["help","Display help for a command"]];const FISH_COMMAND_DESCRIPTION_OVERRIDES=new Map([["calendar","Show deadline/reminder calendar views"],["schema","Inspect and manage runtime schema"],["profile","List, show, apply, and lint project profiles (archetype bundles)"],["plan","Agent-optimized Plan workflow (create/show/add-step/update-step/complete-step/link/approve/materialize)"],["start-task","Lifecycle alias to claim and set in-progress"]]);const GLOBAL_FLAGS=GLOBAL_FLAG_CONTRACTS.flatMap(entry=>[entry.short,entry.flag,...entry.aliases??[]]).filter(value=>Boolean(value)).join(" ");const GLOBAL_COMPLETION_VALUE_PATTERNS=[...GLOBAL_VALUE_CONSUMING_FLAGS].join("|");const GLOBAL_COMPLETION_INLINE_PATTERNS=[...GLOBAL_VALUE_CONSUMING_FLAGS].map(flag=>`${flag}=*`).join("|");const GLOBAL_COMPLETION_SWITCH_PATTERNS=[...GLOBAL_FLAGS.split(" ").filter(flag=>!GLOBAL_VALUE_CONSUMING_FLAGS.has(flag)),"-h","-V"].join("|");function joinCompletionValues(values){return[...new Set(values.map(value=>value.trim()).filter(value=>value.length>0))].sort((left,right)=>left.localeCompare(right)).join(" ")}function joinCompletionValuesInOrder(values){return[...new Set(values.map(value=>value.trim()).filter(value=>value.length>0))].join(" ")}function shellDoubleQuote(value){return value.replaceAll("\\","\\\\").replaceAll('"','\\"').replaceAll("$","\\$").replaceAll("`","\\`")}function completionTypeValues(itemTypes,runtime){return joinCompletionValuesInOrder(itemTypes.length>0?itemTypes:runtime.item_types??DEFAULT_ITEM_TYPES)}function completionStatusValues(runtime){return joinCompletionValues(runtime.statuses??DEFAULT_STATUS_VALUES)}function mergeFlagStrings(baseFlags,runtimeFlags){const merged=[...baseFlags.split(/\s+/u).filter(value=>value.length>0),...runtimeFlags??[]];return joinCompletionValues(merged)}function normalizeRuntimeCompletionFlags(runtimeFlags){const normalized=(runtimeFlags??[]).map(value=>value.trim()).filter(value=>value.startsWith("--")&&value.length>2).map(value=>`--${value.slice(2).replaceAll("_","-")}`);return[...new Set(normalized)].sort((left,right)=>left.localeCompare(right))}function renderZshRuntimeFieldFlagSpecs(runtimeFlags){const normalized=normalizeRuntimeCompletionFlags(runtimeFlags);if(normalized.length===0){return""}return`${normalized.map(flag=>` '${flag}[Runtime schema field flag]:value' \\`).join("\n")}
2
- `}function renderZshArgumentSpecs(specs,options={}){const trailingContinuation=options.trailingContinuation??true;const lastSpecIndex=specs.length-1;return specs.map((spec,index)=>` ${spec}${trailingContinuation||index!==lastSpecIndex?" \\":""}`).join("\n")}function renderZshCommandDescriptions(){return COMMAND_COMPLETION_DESCRIPTIONS.filter(([command])=>!HIDDEN_COMMAND_ALIASES.has(command)).map(([command,description])=>` '${command}:${description}'`).join("\n")}function renderFishCommandDescriptions(){return COMMAND_COMPLETION_DESCRIPTIONS.filter(([command])=>command!=="help"&&!HIDDEN_COMMAND_ALIASES.has(command)).map(([command,description])=>{const fishDescription=FISH_COMMAND_DESCRIPTION_OVERRIDES.get(command)??description;return`complete -c pm -n __pm_no_subcommand -a ${command.padEnd(16)} -d '${fishDescription}'`}).join("\n")}function renderZshPresenceFilterSpecs(options){const missingSpecs=["reviewer-missing[Select only items missing reviewer]","risk-missing[Select only items missing risk]","confidence-missing[Select only items missing confidence]","sprint-missing[Select only items missing sprint]","release-missing[Select only items missing release]"];const contentMissingAliasSpecs=options.includeContentMissingAliases===true?["files-missing[Alias for --no-files]","docs-missing[Alias for --no-docs]"]:[];const pairedSpecs=[["has-notes[Select only items that have notes]","no-notes[Select only items with no notes]"],["has-learnings[Select only items that have learnings]","no-learnings[Select only items with no learnings]"],["has-files[Select only items that have linked files]","no-files[Select only items with no linked files]"],["has-docs[Select only items that have linked docs]","no-docs[Select only items with no linked docs]"],["has-tests[Select only items that have linked tests]","no-tests[Select only items with no linked tests]"],["has-comments[Select only items that have comments]","no-comments[Select only items with no comments]"],["has-deps[Select only items that have dependencies]","no-deps[Select only items with no dependencies]"],["has-body[Select only items with non-empty body]","empty-body[Select only items with empty body]"],["has-linked-command[Select only items that have a linked command]","no-linked-command[Select only items with no linked command]"]];return renderZshArgumentSpecs([...[...missingSpecs,...contentMissingAliasSpecs].map(spec=>`'--${options.missingPrefix}${spec}'`),...pairedSpecs.flatMap(([positive,negative])=>[`'--${options.pairedPrefix}${positive}'`,`'--${options.pairedPrefix}${negative}'`])])}const ZSH_MUTATION_COLLECTION_ARGUMENT_SPECS=["'--comment[Comment seed author=<value>,created_at=<iso|now>,text=<value>]:comment'","'--note[Note seed author=<value>,created_at=<iso|now>,text=<value>]:note'","'--learning[Learning seed author=<value>,created_at=<iso|now>,text=<value>]:learning'","'--file[Linked file path=<value>,scope=<project|global>,note=<text>]:file'","'--test[Linked test command=<value>,path=<value>,scope=<project|global>]:test'","'--doc[Linked doc path=<value>,scope=<project|global>,note=<text>]:doc'","'--reminder[Reminder entry at=<iso|relative>|date=<iso|relative>,text=<text>|title=<text>]:reminder'","'--event[Event entry start=<iso|relative>,end=<iso|relative>,recur_*]:event'","'--type-option[Type option key=value or key=<name>,value=<value>]:type_option'","'--unset[Clear scalar metadata field by name]:field'","'--replace-files[Atomically replace linked files with provided --file values]'","'--replace-docs[Atomically replace linked docs with provided --doc values]'","'--clear-deps[Clear dependency entries]'","'--clear-comments[Clear comments]'","'--clear-notes[Clear notes]'","'--clear-learnings[Clear learnings]'","'--clear-files[Clear linked files]'","'--clear-tests[Clear linked tests]'","'--clear-docs[Clear linked docs]'","'--clear-reminders[Clear reminders]'","'--clear-events[Clear events]'","'--clear-type-options[Clear type options]'"];function renderZshScheduleItemSpecs(kind){const leadingSpecs=kind==="reminder"?["'--at[Reminder time (default +1d)]:at'","'--text[Reminder text (defaults to title)]:text'"]:["'--start[Start time (ISO, now, or relative)]:start'","'--duration[Duration from start (default 1h)]:duration'","'--end[End time (overrides --duration)]:end'","'--location[Location]:location'","'--timezone[IANA timezone]:timezone'","'--all-day[Mark as an all-day event]'"];return renderZshArgumentSpecs([...leadingSpecs,"'--parent[Parent item id]:parent'","'--allow-missing-parent[Permit a parent id that does not exist yet]'","'--tags[Comma-separated tags]:tags'","'(-p --priority)'{-p,--priority}'[Priority (0-4)]:(0 1 2 3 4)'","'(-b --body)'{-b,--body}'[Item body]:body'","'(-d --description)'{-d,--description}'[Short description]:description'","'--author[Mutation author]:author'","'--message[History message]:message'","'--json[Output JSON]'","'--quiet[Suppress stdout]'"],{trailingContinuation:false})}function renderZshBulkSelectionFilterSpecs(action,statusChoices,typeChoices,tagChoices){return renderZshArgumentSpecs([`'--filter-status[Filter by status before ${action}]:(${statusChoices})'`,`'--filter-type[Filter by type before ${action}]:(${typeChoices})'`,`'--filter-tag[Filter by tag before ${action}]:(${tagChoices})'`,`'--filter-priority[Filter by priority before ${action}]:(0 1 2 3 4)'`,"'--filter-deadline-before[Filter by deadline upper bound]:deadline'","'--filter-deadline-after[Filter by deadline lower bound]:deadline'","'--filter-updated-after[Filter by updated_at lower bound (ISO/relative)]:timestamp'","'--filter-updated-before[Filter by updated_at upper bound (ISO/relative)]:timestamp'","'--filter-created-after[Filter by created_at lower bound (ISO/relative)]:timestamp'","'--filter-created-before[Filter by created_at upper bound (ISO/relative)]:timestamp'",`'--filter-assignee[Filter by assignee before ${action}]:assignee'`,"'--filter-assignee-filter[Filter assignee presence]:(assigned unassigned)'","'--filter-parent[Filter by parent item ID]:parent'","'--filter-sprint[Filter by sprint]:sprint'","'--filter-release[Filter by release]:release'"])}function renderFishRuntimeFieldFlagSpecs(commands,runtimeFlags){const normalizedFlags=normalizeRuntimeCompletionFlags(runtimeFlags).map(flag=>flag.slice(2));if(commands.length===0||normalizedFlags.length===0){return""}const lines=[];for(const command of commands){for(const flag of normalizedFlags){lines.push(`complete -c pm -n '__fish_seen_subcommand_from ${command}' -l ${flag} -d 'Runtime schema field flag' -r`)}}return`${lines.join("\n")}
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]="961951cf-e644-50ae-becc-205bea47225d")}catch(e2){}})();import{WORKFLOW_POLICY_ACTIONS}from"./cli-contracts/enum-contracts.js";import{EXIT_CODE,PmCliError}from"./runtime-primitives.js";import{listPmCommandsForTier}from"./agent-capability-contracts.js";import{SCAFFOLD_CAPABILITIES}from"./extension/scaffold.js";import{AGGREGATE_FLAG_CONTRACTS,APPEND_FLAG_CONTRACTS,CALENDAR_FLAG_CONTRACTS,CLOSE_MANY_FLAG_CONTRACTS,COMPLETION_FLAG_CONTRACTS,CONTRACTS_FLAG_CONTRACTS,CONTEXT_FLAG_CONTRACTS,COPY_FLAG_CONTRACTS,FOCUS_FLAG_CONTRACTS,MEET_FLAG_CONTRACTS,REMIND_FLAG_CONTRACTS,CREATE_FLAG_CONTRACTS,DEPS_FLAG_CONTRACTS,DUPLICATES_FLAG_CONTRACTS,EXTENSION_FLAG_CONTRACTS,GRAPH_FLAG_CONTRACTS,GET_FLAG_CONTRACTS,GUIDE_FLAG_CONTRACTS,GLOBAL_FLAG_CONTRACTS,HEALTH_FLAG_CONTRACTS,HISTORY_AUTHOR_ACKNOWLEDGE_FLAG_CONTRACTS,HISTORY_FLAG_CONTRACTS,INIT_FLAG_CONTRACTS,LIST_FILTER_FLAG_CONTRACTS,NEXT_FLAG_CONTRACTS,PM_COMMAND_ALIAS_CONTRACTS,PM_HISTORY_COMMAND_ALIASES,PM_NAMESPACED_COMMAND_ALIASES,resolveSubcommandFlagContractsForCommand,PACKAGE_FLAG_CONTRACTS,PLAN_FLAG_CONTRACTS,SEARCH_FLAG_CONTRACTS,STATS_FLAG_CONTRACTS,EVENTS_FLAG_CONTRACTS,UPDATE_FLAG_CONTRACTS,UPDATE_MANY_FLAG_CONTRACTS,UPGRADE_FLAG_CONTRACTS,toCompletionFlagString}from"./cli-contracts.js";import{BUILTIN_ITEM_TYPE_VALUES,STATUS_VALUES}from"../types/index.js";import{listGuideTopicIds}from"./guide-topics.js";import{enrichCliFlagInvocationContracts}from"./flag-invocation-contracts.js";import{GLOBAL_VALUE_CONSUMING_FLAGS}from"./cli-contracts/bootstrap-command-scanner.js";const VALID_SHELLS=["bash","zsh","fish"];const DEFAULT_ITEM_TYPES=[...BUILTIN_ITEM_TYPE_VALUES];const DEFAULT_STATUS_VALUES=[...STATUS_VALUES];const HIDDEN_COMMAND_ALIASES=new Set(PM_COMMAND_ALIAS_CONTRACTS.filter(contract=>contract.hidden).map(contract=>contract.alias));const ALL_COMMANDS=listPmCommandsForTier("full").filter(command=>!command.includes(" ")&&!HIDDEN_COMMAND_ALIASES.has(command));const LIST_FLAGS=toCompletionFlagString(LIST_FILTER_FLAG_CONTRACTS);const AGGREGATE_FLAGS=toCompletionFlagString(AGGREGATE_FLAG_CONTRACTS);const APPEND_FLAGS=toCompletionFlagString(APPEND_FLAG_CONTRACTS);const COPY_FLAGS=toCompletionFlagString(COPY_FLAG_CONTRACTS);const RESTORE_INVOCATIONS=enrichCliFlagInvocationContracts("restore",resolveSubcommandFlagContractsForCommand("restore"));const FOCUS_FLAGS=toCompletionFlagString(FOCUS_FLAG_CONTRACTS);const MEET_FLAGS=toCompletionFlagString(MEET_FLAG_CONTRACTS);const REMIND_FLAGS=toCompletionFlagString(REMIND_FLAG_CONTRACTS);const CREATE_FLAGS=toCompletionFlagString(CREATE_FLAG_CONTRACTS);const GET_FLAGS=toCompletionFlagString(GET_FLAG_CONTRACTS);const UPDATE_FLAGS=toCompletionFlagString(UPDATE_FLAG_CONTRACTS);const UPDATE_MANY_FLAGS=toCompletionFlagString(UPDATE_MANY_FLAG_CONTRACTS);const CLOSE_MANY_FLAGS=toCompletionFlagString(CLOSE_MANY_FLAG_CONTRACTS);const NAMESPACE_NOUNS=[...new Set(PM_NAMESPACED_COMMAND_ALIASES.map(entry=>entry.canonical_argv[0]))];const NAMESPACE_LEAVES=Object.fromEntries(NAMESPACE_NOUNS.map(noun=>[noun,PM_NAMESPACED_COMMAND_ALIASES.filter(entry=>entry.canonical_argv[0]===noun).map(entry=>entry.canonical_argv[1]).join(" ")]));const HISTORY_LEAVES=NAMESPACE_LEAVES.history;const HISTORY_OPERATION_FLAGS=PM_HISTORY_COMMAND_ALIASES.map(entry=>({...entry,flags:toCompletionFlagString(resolveSubcommandFlagContractsForCommand(entry.alias))}));const HISTORY_FLAGS=toCompletionFlagString(HISTORY_FLAG_CONTRACTS);const HISTORY_AUTHOR_ACKNOWLEDGE_FLAGS=toCompletionFlagString(HISTORY_AUTHOR_ACKNOWLEDGE_FLAG_CONTRACTS,false);const EVENTS_FLAGS=toCompletionFlagString(EVENTS_FLAG_CONTRACTS);const CALENDAR_FLAGS=toCompletionFlagString(CALENDAR_FLAG_CONTRACTS);const CONTEXT_FLAGS=toCompletionFlagString(CONTEXT_FLAG_CONTRACTS);const NEXT_FLAGS=toCompletionFlagString(NEXT_FLAG_CONTRACTS);const DEPS_FLAGS=toCompletionFlagString(DEPS_FLAG_CONTRACTS);const DUPLICATES_FLAGS=toCompletionFlagString(DUPLICATES_FLAG_CONTRACTS);const GRAPH_FLAGS=toCompletionFlagString(GRAPH_FLAG_CONTRACTS);const GUIDE_FLAGS=toCompletionFlagString(GUIDE_FLAG_CONTRACTS);const SEARCH_FLAGS=toCompletionFlagString(SEARCH_FLAG_CONTRACTS);const STATS_FLAGS=toCompletionFlagString(STATS_FLAG_CONTRACTS);const HEALTH_FLAGS=toCompletionFlagString(HEALTH_FLAG_CONTRACTS);const INIT_FLAGS=toCompletionFlagString(INIT_FLAG_CONTRACTS);const CONTRACTS_FLAGS=toCompletionFlagString(CONTRACTS_FLAG_CONTRACTS);const PLAN_FLAGS=toCompletionFlagString(PLAN_FLAG_CONTRACTS);const SCHEMA_SUBCOMMAND_CHOICES=`${WORKFLOW_POLICY_ACTIONS.join(" ")} list show show-status add-type remove-type add-status remove-status add-field remove-field list-fields show-field apply-preset rename-type rename-field remap-status`;const PLAN_SUBCOMMANDS_LIST="create show add-step update-step complete-step block-step reorder-step remove-step link unlink decision discovery validation resume approve materialize";const COMPLETION_FLAGS=toCompletionFlagString(COMPLETION_FLAG_CONTRACTS);const COMPLETION_SHELL_CHOICES=`${COMPLETION_FLAGS} bash zsh fish`;const GUIDE_TOPIC_CHOICES=joinCompletionValues(listGuideTopicIds());const EXTENSION_LIFECYCLE_ACTIONS="init scaffold install uninstall explore manage describe reload doctor catalog adopt adopt-all activate deactivate migrate";const PACKAGE_LIFECYCLE_ACTIONS=`${EXTENSION_LIFECYCLE_ACTIONS} upgrade`;const EXTENSION_LIFECYCLE_FLAGS=toCompletionFlagString(EXTENSION_FLAG_CONTRACTS);const PACKAGE_LIFECYCLE_FLAGS=toCompletionFlagString(PACKAGE_FLAG_CONTRACTS);const UPGRADE_FLAGS=toCompletionFlagString(UPGRADE_FLAG_CONTRACTS);const MUTATION_FLAGS="--author --message --force --json --quiet --no-changed-fields --id-only --pm-path --path --no-extensions --no-pager --profile --help";const DELETE_MUTATION_FLAGS="--dry-run --author --message --force --json --quiet --no-changed-fields --id-only --pm-path --path --no-extensions --no-pager --profile --help";const CLOSE_MUTATION_FLAGS=toCompletionFlagString(resolveSubcommandFlagContractsForCommand("close"));const CLOSE_TASK_MUTATION_FLAGS=toCompletionFlagString(resolveSubcommandFlagContractsForCommand("close-task"));const RELEASE_MUTATION_FLAGS=toCompletionFlagString(resolveSubcommandFlagContractsForCommand("release"));const CLAIM_MUTATION_FLAGS=toCompletionFlagString(resolveSubcommandFlagContractsForCommand("claim"));const COMMAND_COMPLETION_DESCRIPTIONS=[["init","Initialize pm storage for the current workspace"],["config","Read or update pm settings"],["package","Manage package lifecycle operations"],["packages","Alias for package"],["create","Create a new project management item"],["copy","Copy an existing item to a new ID"],["focus","Set/clear/show the session focused parent for new items"],["list","List active items with optional filters"],["aggregate","Aggregate grouped item counts and numeric stats for governance queries"],["duplicates","Find bounded duplicate clusters across lifecycle statuses"],["guide","Browse local progressive-disclosure guides"],["calendar","Show calendar views for deadlines and reminders"],["cal","Alias for calendar"],["context","Show a token-efficient project context snapshot"],["ctx","Alias for context"],["get","Show item details by ID"],["next","Recommend the next actionable (unblocked, ready) work item"],["search","Search items with keyword, semantic, or hybrid modes"],["reindex","Rebuild search artifacts"],["history","Show item history entries"],["history-compact","Compact history streams into a synthetic baseline + retained tail"],["history-redact","Redact sensitive literals/patterns and recompute history hashes"],["history-repair","Re-anchor a drifted history chain so pm health/validate report ok"],["schema","Manage custom item types and statuses in .agents/pm/schema/*.json"],["profile","List, show, apply, and lint project profiles (archetype schema/config/template/package bundles)"],["plan","Agent-optimized Plan item workflow (create/show/add-step/update-step/complete-step/link/approve/materialize)"],["activity","Show recent activity across items"],["restore","Restore an item to an earlier state"],["update","Update item fields and metadata"],["update-many","Bulk-update matched items with dry-run and rollback checkpoints"],["close","Close an item (reason requirement follows governance settings)"],["close-many","Bulk-close matched items with an optional shared reason and rollback checkpoint"],["delete","Delete an item and record the change"],["append","Append text to an item body"],["comments","List or add comments for an item"],["notes","List or add notes for an item"],["learnings","List or add learnings for an item"],["files","Manage linked files"],["docs","Manage linked docs"],["deps","Show dependency relationships for an item"],["graph","Bounded graph traversal, analytics, and governance-audit queries"],["test","Manage linked tests and optionally run them"],["test-all","Run linked tests across matching items"],["test-runs","Manage background linked-test runs"],["stats","Show project tracker statistics"],["health","Show project tracker health checks"],["validate","Run standalone validation checks"],["gc","Clean optional cache artifacts"],["contracts","Show machine-readable command and schema contracts"],["claim","Claim an item for active work"],["release","Release the active claim for an item"],["start-task","Lifecycle alias to claim and set in_progress"],["pause-task","Lifecycle alias to reopen and release claim"],["close-task","Lifecycle alias to close and release claim"],["meet","Shortcut to create a Meeting with scheduling defaults"],["event","Shortcut to create an Event with scheduling defaults"],["remind","Shortcut to create a Reminder from a point in time"],["templates","Manage reusable create templates"],["completion","Generate shell completion"],["help","Display help for a command"]];const FISH_COMMAND_DESCRIPTION_OVERRIDES=new Map([["calendar","Show deadline/reminder calendar views"],["schema","Inspect and manage runtime schema"],["profile","List, show, apply, and lint project profiles (archetype bundles)"],["plan","Agent-optimized Plan workflow (create/show/add-step/update-step/complete-step/link/approve/materialize)"],["start-task","Lifecycle alias to claim and set in-progress"]]);const GLOBAL_FLAGS=GLOBAL_FLAG_CONTRACTS.flatMap(entry=>[entry.short,entry.flag,...entry.aliases??[]]).filter(value=>Boolean(value)).join(" ");const GLOBAL_COMPLETION_VALUE_PATTERNS=[...GLOBAL_VALUE_CONSUMING_FLAGS].join("|");const GLOBAL_COMPLETION_INLINE_PATTERNS=[...GLOBAL_VALUE_CONSUMING_FLAGS].map(flag=>`${flag}=*`).join("|");const GLOBAL_COMPLETION_SWITCH_PATTERNS=[...GLOBAL_FLAGS.split(" ").filter(flag=>!GLOBAL_VALUE_CONSUMING_FLAGS.has(flag)),"-h","-V"].join("|");function joinCompletionValues(values){return[...new Set(values.map(value=>value.trim()).filter(value=>value.length>0))].sort((left,right)=>left.localeCompare(right)).join(" ")}function joinCompletionValuesInOrder(values){return[...new Set(values.map(value=>value.trim()).filter(value=>value.length>0))].join(" ")}function shellDoubleQuote(value){return value.replaceAll("\\","\\\\").replaceAll('"','\\"').replaceAll("$","\\$").replaceAll("`","\\`")}function completionTypeValues(itemTypes,runtime){return joinCompletionValuesInOrder(itemTypes.length>0?itemTypes:runtime.item_types??DEFAULT_ITEM_TYPES)}function completionStatusValues(runtime){return joinCompletionValues(runtime.statuses??DEFAULT_STATUS_VALUES)}function mergeFlagStrings(baseFlags,runtimeFlags){const merged=[...baseFlags.split(/\s+/u).filter(value=>value.length>0),...runtimeFlags??[]];return joinCompletionValues(merged)}function normalizeRuntimeCompletionFlags(runtimeFlags){const normalized=(runtimeFlags??[]).map(value=>value.trim()).filter(value=>value.startsWith("--")&&value.length>2).map(value=>`--${value.slice(2).replaceAll("_","-")}`);return[...new Set(normalized)].sort((left,right)=>left.localeCompare(right))}function renderZshRuntimeFieldFlagSpecs(runtimeFlags){const normalized=normalizeRuntimeCompletionFlags(runtimeFlags);if(normalized.length===0){return""}return`${normalized.map(flag=>` '${flag}[Runtime schema field flag]:value' \\`).join("\n")}
2
+ `}function renderZshArgumentSpecs(specs,options={}){const trailingContinuation=options.trailingContinuation??true;const lastSpecIndex=specs.length-1;return specs.map((spec,index)=>` ${spec}${trailingContinuation||index!==lastSpecIndex?" \\":""}`).join("\n")}function renderZshCommandDescriptions(){return[...COMMAND_COMPLETION_DESCRIPTIONS,["ops","Workspace maintenance and diagnostics"]].filter(([command])=>!HIDDEN_COMMAND_ALIASES.has(command)).map(([command,description])=>` '${command}:${description}'`).join("\n")}function renderFishCommandDescriptions(){return[...COMMAND_COMPLETION_DESCRIPTIONS,["ops","Workspace maintenance and diagnostics"]].filter(([command])=>command!=="help"&&!HIDDEN_COMMAND_ALIASES.has(command)).map(([command,description])=>{const fishDescription=FISH_COMMAND_DESCRIPTION_OVERRIDES.get(command)??description;return`complete -c pm -n __pm_no_subcommand -a ${command.padEnd(16)} -d '${fishDescription}'`}).join("\n")}function renderZshPresenceFilterSpecs(options){const missingSpecs=["reviewer-missing[Select only items missing reviewer]","risk-missing[Select only items missing risk]","confidence-missing[Select only items missing confidence]","sprint-missing[Select only items missing sprint]","release-missing[Select only items missing release]"];const contentMissingAliasSpecs=options.includeContentMissingAliases===true?["files-missing[Alias for --no-files]","docs-missing[Alias for --no-docs]"]:[];const pairedSpecs=[["has-notes[Select only items that have notes]","no-notes[Select only items with no notes]"],["has-learnings[Select only items that have learnings]","no-learnings[Select only items with no learnings]"],["has-files[Select only items that have linked files]","no-files[Select only items with no linked files]"],["has-docs[Select only items that have linked docs]","no-docs[Select only items with no linked docs]"],["has-tests[Select only items that have linked tests]","no-tests[Select only items with no linked tests]"],["has-comments[Select only items that have comments]","no-comments[Select only items with no comments]"],["has-deps[Select only items that have dependencies]","no-deps[Select only items with no dependencies]"],["has-body[Select only items with non-empty body]","empty-body[Select only items with empty body]"],["has-linked-command[Select only items that have a linked command]","no-linked-command[Select only items with no linked command]"]];return renderZshArgumentSpecs([...[...missingSpecs,...contentMissingAliasSpecs].map(spec=>`'--${options.missingPrefix}${spec}'`),...pairedSpecs.flatMap(([positive,negative])=>[`'--${options.pairedPrefix}${positive}'`,`'--${options.pairedPrefix}${negative}'`])])}const ZSH_MUTATION_COLLECTION_ARGUMENT_SPECS=["'--comment[Comment seed author=<value>,created_at=<iso|now>,text=<value>]:comment'","'--note[Note seed author=<value>,created_at=<iso|now>,text=<value>]:note'","'--learning[Learning seed author=<value>,created_at=<iso|now>,text=<value>]:learning'","'--file[Linked file path=<value>,scope=<project|global>,note=<text>]:file'","'--test[Linked test command=<value>,path=<value>,scope=<project|global>]:test'","'--doc[Linked doc path=<value>,scope=<project|global>,note=<text>]:doc'","'--reminder[Reminder entry at=<iso|relative>|date=<iso|relative>,text=<text>|title=<text>]:reminder'","'--event[Event entry start=<iso|relative>,end=<iso|relative>,recur_*]:event'","'--type-option[Type option key=value or key=<name>,value=<value>]:type_option'","'--unset[Clear scalar metadata field by name]:field'","'--replace-files[Atomically replace linked files with provided --file values]'","'--replace-docs[Atomically replace linked docs with provided --doc values]'","'--clear-deps[Clear dependency entries]'","'--clear-comments[Clear comments]'","'--clear-notes[Clear notes]'","'--clear-learnings[Clear learnings]'","'--clear-files[Clear linked files]'","'--clear-tests[Clear linked tests]'","'--clear-docs[Clear linked docs]'","'--clear-reminders[Clear reminders]'","'--clear-events[Clear events]'","'--clear-type-options[Clear type options]'"];function renderZshScheduleItemSpecs(kind){const leadingSpecs=kind==="reminder"?["'--at[Reminder time (default +1d)]:at'","'--text[Reminder text (defaults to title)]:text'"]:["'--start[Start time (ISO, now, or relative)]:start'","'--duration[Duration from start (default 1h)]:duration'","'--end[End time (overrides --duration)]:end'","'--location[Location]:location'","'--timezone[IANA timezone]:timezone'","'--all-day[Mark as an all-day event]'"];return renderZshArgumentSpecs([...leadingSpecs,"'--parent[Parent item id]:parent'","'--allow-missing-parent[Permit a parent id that does not exist yet]'","'--tags[Comma-separated tags]:tags'","'(-p --priority)'{-p,--priority}'[Priority (0-4)]:(0 1 2 3 4)'","'(-b --body)'{-b,--body}'[Item body]:body'","'(-d --description)'{-d,--description}'[Short description]:description'","'--author[Mutation author]:author'","'--message[History message]:message'","'--json[Output JSON]'","'--quiet[Suppress stdout]'"],{trailingContinuation:false})}function renderZshBulkSelectionFilterSpecs(action,statusChoices,typeChoices,tagChoices){return renderZshArgumentSpecs([`'--filter-status[Filter by status before ${action}]:(${statusChoices})'`,`'--filter-type[Filter by type before ${action}]:(${typeChoices})'`,`'--filter-tag[Filter by tag before ${action}]:(${tagChoices})'`,`'--filter-priority[Filter by priority before ${action}]:(0 1 2 3 4)'`,"'--filter-deadline-before[Filter by deadline upper bound]:deadline'","'--filter-deadline-after[Filter by deadline lower bound]:deadline'","'--filter-updated-after[Filter by updated_at lower bound (ISO/relative)]:timestamp'","'--filter-updated-before[Filter by updated_at upper bound (ISO/relative)]:timestamp'","'--filter-created-after[Filter by created_at lower bound (ISO/relative)]:timestamp'","'--filter-created-before[Filter by created_at upper bound (ISO/relative)]:timestamp'",`'--filter-assignee[Filter by assignee before ${action}]:assignee'`,"'--filter-assignee-filter[Filter assignee presence]:(assigned unassigned)'","'--filter-parent[Filter by parent item ID]:parent'","'--filter-sprint[Filter by sprint]:sprint'","'--filter-release[Filter by release]:release'"])}function renderFishRuntimeFieldFlagSpecs(commands,runtimeFlags){const normalizedFlags=normalizeRuntimeCompletionFlags(runtimeFlags).map(flag=>flag.slice(2));if(commands.length===0||normalizedFlags.length===0){return""}const lines=[];for(const command of commands){const predicate=NAMESPACE_NOUNS.includes(command)||PM_NAMESPACED_COMMAND_ALIASES.some(entry=>entry.alias===command)?"__pm_history_operation":"__fish_seen_subcommand_from";for(const flag of normalizedFlags){lines.push(`complete -c pm -n '${predicate} ${command}' -l ${flag} -d 'Runtime schema field flag' -r`)}}return`${lines.join("\n")}
3
3
  `}function renderBashDynamicChoiceResolver(kind,command,fallback){const envKind=kind.toUpperCase();const cacheVar=`PM_COMPLETION_${envKind}_CACHE`;const cacheTsVar=`PM_COMPLETION_${envKind}_CACHE_TS`;const ttlVar=`PM_COMPLETION_${envKind}_TTL`;const escapedFallback=shellDoubleQuote(fallback);return[`_pm_completion_${kind}_choices() {`," local now ttl cache_ts resolved",' now="$(date +%s 2>/dev/null || echo 0)"',` ttl="\${${ttlVar}:-120}"`,` cache_ts="\${${cacheTsVar}:-0}"`,` if [[ -n "\${${cacheVar}:-}" && "$now" -ne 0 && $((now - cache_ts)) -lt "$ttl" ]]; then`,` printf '%s\\n' "$${cacheVar}"`," return 0"," fi",` resolved="$(pm ${command} 2>/dev/null)"`,' if [[ -z "$resolved" ]]; then',` resolved="${escapedFallback}"`," fi",` ${cacheVar}="$resolved"`,` ${cacheTsVar}="$now"`,` printf '%s\\n' "$${cacheVar}"`,"}"]}function renderZshDynamicChoiceResolver(kind,command,fallback){const envKind=kind.toUpperCase();const cacheVar=`PM_COMPLETION_${envKind}_CACHE`;const cacheTsVar=`PM_COMPLETION_${envKind}_CACHE_TS`;const ttlVar=`PM_COMPLETION_${envKind}_TTL`;const escapedFallback=shellDoubleQuote(fallback);return`
4
4
  _pm_${kind}_choices() {
5
5
  local now ttl cache_ts resolved
@@ -43,7 +43,7 @@ function __pm_${kind}_choices
43
43
  set -gx PM_COMPLETION_${envKind}_CACHE_TS $now
44
44
  printf '%s\\n' $resolved
45
45
  end
46
- `}function generateBashScript(itemTypes=[],tags=[],eagerTagExpansion=false,runtime={}){const cmds=ALL_COMMANDS.join(" ");const useDynamicTypeExpansion=itemTypes.length===0;const typeValues=completionTypeValues(itemTypes,runtime);const statusValues=completionStatusValues(runtime);const tagValues=joinCompletionValues(tags);const listFlags=mergeFlagStrings(LIST_FLAGS,runtime.command_flags?.list);const createFlags=mergeFlagStrings(CREATE_FLAGS,runtime.command_flags?.create);const updateFlags=mergeFlagStrings(UPDATE_FLAGS,runtime.command_flags?.update);const updateManyFlags=mergeFlagStrings(UPDATE_MANY_FLAGS,runtime.command_flags?.["update-many"]);const searchFlags=mergeFlagStrings(SEARCH_FLAGS,runtime.command_flags?.search);const calendarFlags=mergeFlagStrings(CALENDAR_FLAGS,runtime.command_flags?.calendar);const contextFlags=mergeFlagStrings(CONTEXT_FLAGS,runtime.command_flags?.context);const useEagerTagExpansion=eagerTagExpansion||tags.length>0;const compgen=flags=>`$(compgen -W "${flags}" -- "$cur")`;return["# bash completion for pm",`# Source this file or add 'eval "$(pm completion bash)"' to ~/.bashrc`,"",...useDynamicTypeExpansion?[...renderBashDynamicChoiceResolver("type","completion-types",typeValues),""]:[],...renderBashDynamicChoiceResolver("status","completion-statuses",statusValues),"","_pm_completion() {"," local cur prev words cword"," _init_completion 2>/dev/null || {",' cur="${COMP_WORDS[COMP_CWORD]}"',' prev="${COMP_WORDS[COMP_CWORD-1]}"'," cword=$COMP_CWORD"," }",""," if [[ $cword -eq 1 ]]; then",` COMPREPLY=(${compgen(cmds)})`," return 0"," fi","",' if [[ "$prev" == "--type" ]]; then',useDynamicTypeExpansion?' COMPREPLY=($(compgen -W "$(_pm_completion_type_choices)" -- "$cur"))':` COMPREPLY=(${compgen(typeValues)})`," return 0"," fi","",' if [[ "$prev" == "--status" ]]; then',' COMPREPLY=($(compgen -W "$(_pm_completion_status_choices)" -- "$cur"))'," return 0"," fi","",...useEagerTagExpansion?[' if [[ ( "$prev" == "--tag" || "$prev" == "--tags" ) && ! ( ( "${COMP_WORDS[1]}" == "package" || "${COMP_WORDS[1]}" == "packages" ) && "${COMP_WORDS[2]}" == "upgrade" ) ]]; then',` COMPREPLY=(${compgen(tagValues)})`," return 0"," fi"]:[' if [[ ( "$prev" == "--tag" || "$prev" == "--tags" ) && ! ( ( "${COMP_WORDS[1]}" == "package" || "${COMP_WORDS[1]}" == "packages" ) && "${COMP_WORDS[2]}" == "upgrade" ) ]]; then'," local now ttl cache_ts tag_values",' now="$(date +%s 2>/dev/null || echo 0)"',' ttl="${PM_COMPLETION_TAG_TTL:-120}"',' cache_ts="${PM_COMPLETION_TAG_CACHE_TS:-0}"',' tag_values="${PM_COMPLETION_TAG_CACHE:-}"',' if [[ -z "$tag_values" || "$now" -eq 0 || $((now - cache_ts)) -ge "$ttl" ]]; then',' tag_values="$(pm completion-tags 2>/dev/null)"',' PM_COMPLETION_TAG_CACHE="$tag_values"',' PM_COMPLETION_TAG_CACHE_TS="$now"'," fi",' COMPREPLY=($(compgen -W "$tag_values" -- "$cur"))'," return 0"," fi"],"",' if [[ "$prev" == "--tag" && ( ( "${COMP_WORDS[1]}" == "package" || "${COMP_WORDS[1]}" == "packages" ) && "${COMP_WORDS[2]}" == "upgrade" ) ]]; then'," COMPREPLY=()"," return 0"," fi","",' local cmd="" word_index=1 word'," while (( word_index < cword )); do",' word="${COMP_WORDS[word_index]}"',' case "${word//_/-}" in',` ${GLOBAL_COMPLETION_VALUE_PATTERNS}) (( word_index += 2 )); continue ;;`,` ${GLOBAL_COMPLETION_INLINE_PATTERNS}|${GLOBAL_COMPLETION_SWITCH_PATTERNS}) (( word_index++ )); continue ;;`," --) break ;;"," esac",' if [[ -z "$cmd" ]]; then',' cmd="$word"',' [[ "$cmd" == "history" ]] || break'," else",' case "$word" in',...PM_HISTORY_COMMAND_ALIASES.map(entry=>` ${entry.canonical_argv[1]}) cmd="${entry.alias}" ;;`)," esac"," break"," fi"," (( word_index++ ))"," done",' case "$cmd" in',...HISTORY_OPERATION_FLAGS.flatMap(entry=>[` ${entry.alias})`,` COMPREPLY=(${compgen(entry.flags)})`," return 0"," ;;"])," list)",` COMPREPLY=(${compgen(listFlags)})`," ;;"," aggregate)",` COMPREPLY=(${compgen(AGGREGATE_FLAGS)})`," ;;"," duplicates)",` COMPREPLY=(${compgen(DUPLICATES_FLAGS)})`," ;;"," create)",` COMPREPLY=(${compgen(createFlags)})`," ;;"," copy)",` COMPREPLY=(${compgen(COPY_FLAGS)})`," ;;"," focus)",` COMPREPLY=(${compgen(FOCUS_FLAGS)})`," ;;"," update)",` COMPREPLY=(${compgen(updateFlags)})`," ;;"," update-many)",` COMPREPLY=(${compgen(updateManyFlags)})`," ;;"," calendar|cal)",` COMPREPLY=(${compgen(calendarFlags)})`," ;;"," context|ctx)",` COMPREPLY=(${compgen(contextFlags)})`," ;;"," next)",` COMPREPLY=(${compgen(NEXT_FLAGS)})`," ;;"," guide)",` COMPREPLY=(${compgen(`${GUIDE_FLAGS} ${GUIDE_TOPIC_CHOICES}`)})`," ;;"," search)",` COMPREPLY=(${compgen(searchFlags)})`," ;;"," reindex)",` COMPREPLY=(${compgen("--mode --progress --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," init)",` COMPREPLY=(${compgen(`${INIT_FLAGS} --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help`)})`," ;;"," config)",` COMPREPLY=(${compgen("--criterion --clear-criteria --format --policy --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," extension)",` COMPREPLY=(${compgen(`${EXTENSION_LIFECYCLE_ACTIONS} ${EXTENSION_LIFECYCLE_FLAGS}`)})`," ;;"," package|packages)",` COMPREPLY=(${compgen(`${PACKAGE_LIFECYCLE_ACTIONS} ${PACKAGE_LIFECYCLE_FLAGS} ${UPGRADE_FLAGS}`)})`," ;;"," comments)",` COMPREPLY=(${compgen("--add --body --stdin --file --edit --delete --limit --full-history --if-absent --author --message --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," notes)",` COMPREPLY=(${compgen("--add --add-json --stdin --file --edit --delete --limit --since --event-type --include-meta --full-history --if-absent --author --message --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," learnings)",` COMPREPLY=(${compgen("--add --stdin --file --edit --delete --limit --full-history --if-absent --author --message --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," files)",` COMPREPLY=(${compgen("discover lookup --add --add-glob --remove --migrate --list --apply --note --append-stable --validate-paths --scope --limit --offset --no-truncate --strict-read --explain --lines --decision-depth --author --message --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," docs)",` COMPREPLY=(${compgen("--add --add-glob --remove --migrate --note --validate-paths --author --message --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," append)",` COMPREPLY=(${compgen(APPEND_FLAGS)})`," ;;"," deps)",` COMPREPLY=(${compgen(DEPS_FLAGS)})`," ;;"," graph)",` COMPREPLY=(${compgen(`ancestors descendants predecessors successors paths impact analyze audit communities redundancy dominators slack centrality articulation plan index ${GRAPH_FLAGS}`)})`," ;;"," test)",` COMPREPLY=(${compgen("--add --add-json --remove --remove-index --list --run --match --only-index --only-last --background --timeout --progress --env-set --env-clear --shared-host-safe --pm-context --override-linked-pm-context --fail-on-context-mismatch --fail-on-skipped --fail-on-empty-test-run --require-assertions-for-pm --check-context --auto-pm-context --author --message --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," test-all)",` COMPREPLY=(${compgen("--status --limit --offset --background --timeout --progress --env-set --env-clear --shared-host-safe --pm-context --override-linked-pm-context --fail-on-context-mismatch --fail-on-skipped --fail-on-empty-test-run --require-assertions-for-pm --check-context --auto-pm-context --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," test-runs)",` COMPREPLY=(${compgen("list status logs stop resume --status --limit --stream --tail --force --author --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," validate)",` COMPREPLY=(${compgen("--check-metadata --metadata-profile --check-resolution --check-lifecycle --check-stale-blockers --dependency-cycle-severity --parent-cycle-severity --check-files --scan-mode --include-pm-internals --verbose-file-lists --verbose-diagnostics --all-affected-ids --strict-exit --fail-on-warn --fix-hints --auto-fix --dry-run --fix-scope --prune-missing --check-history-drift --check-command-references --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," health)",` COMPREPLY=(${compgen(HEALTH_FLAGS)})`," ;;"," history)"," if [[ $word_index -eq $cword ]]; then",` COMPREPLY=(${compgen(`${HISTORY_FLAGS} ${HISTORY_LEAVES}`)})`," else",` COMPREPLY=(${compgen(HISTORY_FLAGS)})`," fi"," ;;"," events)",` COMPREPLY=(${compgen(EVENTS_FLAGS)})`," ;;"," history-author-acknowledge)",` COMPREPLY=(${compgen(`${HISTORY_AUTHOR_ACKNOWLEDGE_FLAGS} --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help`)})`," ;;"," get)",` COMPREPLY=(${compgen(GET_FLAGS)})`," ;;"," schema)",` COMPREPLY=(${compgen("list show show-status add-type remove-type add-status remove-status add-field remove-field list-fields show-field apply-preset rename-type rename-field remap-status --description --default-status --folder --alias --role --order --type --commands --cli-flag --required --required-on-create --no-allow-unset --required-types --infer --min-count --apply --to --migration-id --dry-run --author --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," profile)",` COMPREPLY=(${compgen("list show apply lint agile ops research --dry-run --author --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," plan)",` COMPREPLY=(${compgen(`${PLAN_SUBCOMMANDS_LIST} ${PLAN_FLAGS}`)})`," ;;"," contracts)",` COMPREPLY=(${compgen(CONTRACTS_FLAGS)})`," ;;"," gc)",` COMPREPLY=(${compgen("--dry-run --scope --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," stats)",` COMPREPLY=(${compgen(STATS_FLAGS)})`," ;;"," close|close-task)",` COMPREPLY=(${compgen(CLOSE_MUTATION_FLAGS)})`," ;;"," close-many)",` COMPREPLY=(${compgen(CLOSE_MANY_FLAGS)})`," ;;"," release)",` COMPREPLY=(${compgen(RELEASE_MUTATION_FLAGS)})`," ;;"," delete)",` COMPREPLY=(${compgen(DELETE_MUTATION_FLAGS)})`," ;;"," claim|start-task|pause-task)",` COMPREPLY=(${compgen(MUTATION_FLAGS)})`," ;;"," meet|event)",` COMPREPLY=(${compgen(MEET_FLAGS)})`," ;;"," remind)",` COMPREPLY=(${compgen(REMIND_FLAGS)})`," ;;"," completion)",` COMPREPLY=(${compgen(COMPLETION_SHELL_CHOICES)})`," ;;"," templates)",` COMPREPLY=(${compgen("save list show")})`," ;;"," *)",` COMPREPLY=(${compgen(GLOBAL_FLAGS)})`," ;;"," esac",' if [[ "$cmd" == "comments" || "$cmd" == "notes" || "$cmd" == "learnings" ]]; then',` COMPREPLY+=(${compgen("--text")})`," fi"," return 0","}","","complete -F _pm_completion pm"].join("\n")}function generateZshScript(itemTypes=[],tags=[],eagerTagExpansion=false,runtime={}){const useDynamicTypeExpansion=itemTypes.length===0;const typeFallbackChoices=completionTypeValues(itemTypes,runtime);const statusFallbackChoices=completionStatusValues(runtime);const typeChoices=useDynamicTypeExpansion?'${(f)"$(_pm_type_choices)"}':typeFallbackChoices;const statusChoices='${(f)"$(_pm_status_choices)"}';const guideTopicChoices=GUIDE_TOPIC_CHOICES;const tagChoices=joinCompletionValues(tags);const useEagerTagExpansion=eagerTagExpansion||tags.length>0;const zshTagChoices=useEagerTagExpansion?tagChoices:'${(f)"$(_pm_tag_choices)"}';const zshListRuntimeFieldFlags=renderZshRuntimeFieldFlagSpecs(runtime.command_flags?.list);const zshCreateRuntimeFieldFlags=renderZshRuntimeFieldFlagSpecs(runtime.command_flags?.create);const zshSearchRuntimeFieldFlags=renderZshRuntimeFieldFlagSpecs(runtime.command_flags?.search);const zshCalendarRuntimeFieldFlags=renderZshRuntimeFieldFlagSpecs(runtime.command_flags?.calendar);const zshContextRuntimeFieldFlags=renderZshRuntimeFieldFlagSpecs(runtime.command_flags?.context);const zshPresenceFilterFlags=renderZshPresenceFilterSpecs({missingPrefix:"filter-",pairedPrefix:"",includeContentMissingAliases:true});const zshBulkPresenceFilterFlags=renderZshPresenceFilterSpecs({missingPrefix:"filter-",pairedPrefix:"filter-"});const zshMutationCollectionFlags=renderZshArgumentSpecs(ZSH_MUTATION_COLLECTION_ARGUMENT_SPECS);const dynamicTagResolver=useEagerTagExpansion?"":`
46
+ `}function generateBashScript(itemTypes=[],tags=[],eagerTagExpansion=false,runtime={}){const cmds=ALL_COMMANDS.join(" ");const useDynamicTypeExpansion=itemTypes.length===0;const typeValues=completionTypeValues(itemTypes,runtime);const statusValues=completionStatusValues(runtime);const tagValues=joinCompletionValues(tags);const listFlags=mergeFlagStrings(LIST_FLAGS,runtime.command_flags?.list);const createFlags=mergeFlagStrings(CREATE_FLAGS,runtime.command_flags?.create);const updateFlags=mergeFlagStrings(UPDATE_FLAGS,runtime.command_flags?.update);const updateManyFlags=mergeFlagStrings(UPDATE_MANY_FLAGS,runtime.command_flags?.["update-many"]);const searchFlags=mergeFlagStrings(SEARCH_FLAGS,runtime.command_flags?.search);const calendarFlags=mergeFlagStrings(CALENDAR_FLAGS,runtime.command_flags?.calendar);const contextFlags=mergeFlagStrings(CONTEXT_FLAGS,runtime.command_flags?.context);const useEagerTagExpansion=eagerTagExpansion||tags.length>0;const compgen=flags=>`$(compgen -W "${flags}" -- "$cur")`;return["# bash completion for pm",`# Source this file or add 'eval "$(pm completion bash)"' to ~/.bashrc`,"",...useDynamicTypeExpansion?[...renderBashDynamicChoiceResolver("type","completion-types",typeValues),""]:[],...renderBashDynamicChoiceResolver("status","completion-statuses",statusValues),"","_pm_completion() {"," local cur prev words cword"," _init_completion 2>/dev/null || {",' cur="${COMP_WORDS[COMP_CWORD]}"',' prev="${COMP_WORDS[COMP_CWORD-1]}"'," cword=$COMP_CWORD"," }",""," if [[ $cword -eq 1 ]]; then",` COMPREPLY=(${compgen(cmds)})`," return 0"," fi","",' if [[ "$prev" == "--type" ]]; then',useDynamicTypeExpansion?' COMPREPLY=($(compgen -W "$(_pm_completion_type_choices)" -- "$cur"))':` COMPREPLY=(${compgen(typeValues)})`," return 0"," fi","",' if [[ "$prev" == "--status" ]]; then',' COMPREPLY=($(compgen -W "$(_pm_completion_status_choices)" -- "$cur"))'," return 0"," fi","",...useEagerTagExpansion?[' if [[ ( "$prev" == "--tag" || "$prev" == "--tags" ) && ! ( ( "${COMP_WORDS[1]}" == "package" || "${COMP_WORDS[1]}" == "packages" ) && "${COMP_WORDS[2]}" == "upgrade" ) ]]; then',` COMPREPLY=(${compgen(tagValues)})`," return 0"," fi"]:[' if [[ ( "$prev" == "--tag" || "$prev" == "--tags" ) && ! ( ( "${COMP_WORDS[1]}" == "package" || "${COMP_WORDS[1]}" == "packages" ) && "${COMP_WORDS[2]}" == "upgrade" ) ]]; then'," local now ttl cache_ts tag_values",' now="$(date +%s 2>/dev/null || echo 0)"',' ttl="${PM_COMPLETION_TAG_TTL:-120}"',' cache_ts="${PM_COMPLETION_TAG_CACHE_TS:-0}"',' tag_values="${PM_COMPLETION_TAG_CACHE:-}"',' if [[ -z "$tag_values" || "$now" -eq 0 || $((now - cache_ts)) -ge "$ttl" ]]; then',' tag_values="$(pm completion-tags 2>/dev/null)"',' PM_COMPLETION_TAG_CACHE="$tag_values"',' PM_COMPLETION_TAG_CACHE_TS="$now"'," fi",' COMPREPLY=($(compgen -W "$tag_values" -- "$cur"))'," return 0"," fi"],"",' if [[ "$prev" == "--tag" && ( ( "${COMP_WORDS[1]}" == "package" || "${COMP_WORDS[1]}" == "packages" ) && "${COMP_WORDS[2]}" == "upgrade" ) ]]; then'," COMPREPLY=()"," return 0"," fi","",' local cmd="" word_index=1 word'," while (( word_index < cword )); do",' word="${COMP_WORDS[word_index]}"',' case "${word//_/-}" in',` ${GLOBAL_COMPLETION_VALUE_PATTERNS}) (( word_index += 2 )); continue ;;`,` ${GLOBAL_COMPLETION_INLINE_PATTERNS}|${GLOBAL_COMPLETION_SWITCH_PATTERNS}) (( word_index++ )); continue ;;`," --) break ;;"," esac",' if [[ -z "$cmd" ]]; then',' cmd="$word"',' [[ "$cmd" == "ctx" ]] && cmd="context"',` case "$cmd" in ${NAMESPACE_NOUNS.join("|")}) ;; *) break ;; esac`," else",' case "$cmd $word" in',...PM_NAMESPACED_COMMAND_ALIASES.map(entry=>` "${entry.canonical}") cmd="${entry.alias}" ;;`)," esac"," break"," fi"," (( word_index++ ))"," done",' case "$cmd" in',...HISTORY_OPERATION_FLAGS.flatMap(entry=>[` ${entry.alias})`,` COMPREPLY=(${compgen(entry.flags)})`," return 0"," ;;"])," list)",` COMPREPLY=(${compgen(listFlags)})`," ;;"," aggregate)",` COMPREPLY=(${compgen(AGGREGATE_FLAGS)})`," ;;"," duplicates)",` COMPREPLY=(${compgen(DUPLICATES_FLAGS)})`," ;;"," create)",` COMPREPLY=(${compgen(createFlags)})`," ;;"," copy)",` COMPREPLY=(${compgen(COPY_FLAGS)})`," ;;"," focus)",` COMPREPLY=(${compgen(FOCUS_FLAGS)})`," ;;"," update)",` COMPREPLY=(${compgen(updateFlags)})`," if [[ $word_index -eq $cword ]]; then",` COMPREPLY+=(${compgen(NAMESPACE_LEAVES.update)})`," fi"," ;;"," update-many)",` COMPREPLY=(${compgen(updateManyFlags)})`," ;;"," calendar|cal)",` COMPREPLY=(${compgen(calendarFlags)})`," ;;"," context|ctx)",` COMPREPLY=(${compgen(contextFlags)})`," if [[ $word_index -eq $cword ]]; then",` COMPREPLY+=(${compgen(NAMESPACE_LEAVES.context)})`," fi"," ;;"," ops)",` COMPREPLY=(${compgen(`${GLOBAL_FLAGS} ${NAMESPACE_LEAVES.ops}`)})`," ;;"," next)",` COMPREPLY=(${compgen(NEXT_FLAGS)})`," ;;"," guide)",` COMPREPLY=(${compgen(`${GUIDE_FLAGS} ${GUIDE_TOPIC_CHOICES}`)})`," ;;"," search)",` COMPREPLY=(${compgen(searchFlags)})`," ;;"," reindex)",` COMPREPLY=(${compgen("--mode --progress --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," init)",` COMPREPLY=(${compgen(`${INIT_FLAGS} --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help`)})`," ;;"," config)",` COMPREPLY=(${compgen("--criterion --clear-criteria --format --policy --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," extension)",` COMPREPLY=(${compgen(`${EXTENSION_LIFECYCLE_ACTIONS} ${EXTENSION_LIFECYCLE_FLAGS}`)})`," ;;"," package|packages)",` COMPREPLY=(${compgen(`${PACKAGE_LIFECYCLE_ACTIONS} ${PACKAGE_LIFECYCLE_FLAGS} ${UPGRADE_FLAGS}`)})`," ;;"," comments)",` COMPREPLY=(${compgen("--add --body --stdin --file --edit --delete --limit --full-history --if-absent --author --message --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," notes)",` COMPREPLY=(${compgen("--add --add-json --stdin --file --edit --delete --limit --since --event-type --include-meta --full-history --if-absent --author --message --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," learnings)",` COMPREPLY=(${compgen("--add --stdin --file --edit --delete --limit --full-history --if-absent --author --message --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," files)",` COMPREPLY=(${compgen("discover lookup --add --add-glob --remove --migrate --list --apply --note --append-stable --validate-paths --scope --limit --offset --no-truncate --strict-read --explain --lines --decision-depth --author --message --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," docs)",` COMPREPLY=(${compgen("--add --add-glob --remove --migrate --note --validate-paths --author --message --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," append)",` COMPREPLY=(${compgen(APPEND_FLAGS)})`," ;;"," deps)",` COMPREPLY=(${compgen(DEPS_FLAGS)})`," ;;"," graph)",` COMPREPLY=(${compgen(`ancestors descendants predecessors successors paths impact analyze audit communities redundancy dominators slack centrality articulation plan index ${GRAPH_FLAGS}`)})`," ;;"," test)",` COMPREPLY=(${compgen("--add --add-json --remove --remove-index --list --run --match --only-index --only-last --background --timeout --progress --env-set --env-clear --shared-host-safe --pm-context --override-linked-pm-context --fail-on-context-mismatch --fail-on-skipped --fail-on-empty-test-run --require-assertions-for-pm --check-context --auto-pm-context --author --message --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," test-all)",` COMPREPLY=(${compgen("--status --limit --offset --background --timeout --progress --env-set --env-clear --shared-host-safe --pm-context --override-linked-pm-context --fail-on-context-mismatch --fail-on-skipped --fail-on-empty-test-run --require-assertions-for-pm --check-context --auto-pm-context --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," test-runs)",` COMPREPLY=(${compgen("list status logs stop resume --status --limit --stream --tail --force --author --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," validate)",` COMPREPLY=(${compgen("--check-completeness --check-metadata --metadata-profile --check-resolution --check-lifecycle --check-stale-blockers --dependency-cycle-severity --parent-cycle-severity --check-files --scan-mode --include-pm-internals --verbose-file-lists --verbose-diagnostics --all-affected-ids --strict-exit --fail-on-warn --fix-hints --auto-fix --dry-run --fix-scope --prune-missing --check-history-drift --check-command-references --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," health)",` COMPREPLY=(${compgen(HEALTH_FLAGS)})`," ;;"," history)"," if [[ $word_index -eq $cword ]]; then",` COMPREPLY=(${compgen(`${HISTORY_FLAGS} ${HISTORY_LEAVES}`)})`," else",` COMPREPLY=(${compgen(HISTORY_FLAGS)})`," fi"," ;;"," events)",` COMPREPLY=(${compgen(EVENTS_FLAGS)})`," ;;"," history-author-acknowledge)",` COMPREPLY=(${compgen(`${HISTORY_AUTHOR_ACKNOWLEDGE_FLAGS} --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help`)})`," ;;"," get)",` COMPREPLY=(${compgen(GET_FLAGS)})`," ;;"," schema)",' if [[ "$prev" == "policy-mode" ]]; then',` COMPREPLY=(${compgen("advise refuse")})`," return"," fi",` COMPREPLY=(${compgen(`${SCHEMA_SUBCOMMAND_CHOICES} --definition --policy --message --description --default-status --folder --alias --role --order --type --commands --cli-flag --required --required-on-create --no-allow-unset --required-types --infer --min-count --apply --to --migration-id --dry-run --author --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help`)})`," ;;"," profile)",` COMPREPLY=(${compgen("list show apply lint agile ops research --dry-run --author --force --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," plan)",` COMPREPLY=(${compgen(`${PLAN_SUBCOMMANDS_LIST} ${PLAN_FLAGS}`)})`," ;;"," contracts)",` COMPREPLY=(${compgen(CONTRACTS_FLAGS)})`," ;;"," gc)",` COMPREPLY=(${compgen("--dry-run --scope --json --quiet --no-changed-fields --pm-path --path --no-extensions --no-pager --profile --help")})`," ;;"," stats)",` COMPREPLY=(${compgen(STATS_FLAGS)})`," ;;"," close-task)",` COMPREPLY=(${compgen(CLOSE_TASK_MUTATION_FLAGS)})`," ;;"," close)",` COMPREPLY=(${compgen(CLOSE_MUTATION_FLAGS)})`,' if [[ "$cmd" == "close" && $word_index -eq $cword ]]; then',` COMPREPLY+=(${compgen(NAMESPACE_LEAVES.close)})`," fi"," ;;"," close-many)",` COMPREPLY=(${compgen(CLOSE_MANY_FLAGS)})`," ;;"," release)",` COMPREPLY=(${compgen(RELEASE_MUTATION_FLAGS)})`," ;;"," delete)",` COMPREPLY=(${compgen(DELETE_MUTATION_FLAGS)})`," ;;"," claim)",` COMPREPLY=(${compgen(CLAIM_MUTATION_FLAGS)})`," ;;"," start-task|pause-task)",` COMPREPLY=(${compgen(MUTATION_FLAGS)})`," ;;"," meet|event)",` COMPREPLY=(${compgen(MEET_FLAGS)})`," ;;"," remind)",` COMPREPLY=(${compgen(REMIND_FLAGS)})`," ;;"," completion)",` COMPREPLY=(${compgen(COMPLETION_SHELL_CHOICES)})`," ;;"," templates)",` COMPREPLY=(${compgen("save list show")})`," ;;"," *)",` COMPREPLY=(${compgen(GLOBAL_FLAGS)})`," ;;"," esac",' if [[ "$cmd" == "comments" || "$cmd" == "notes" || "$cmd" == "learnings" ]]; then',` COMPREPLY+=(${compgen("--text")})`," fi"," return 0","}","","complete -F _pm_completion pm"].join("\n")}function generateZshScript(itemTypes=[],tags=[],eagerTagExpansion=false,runtime={}){const useDynamicTypeExpansion=itemTypes.length===0;const typeFallbackChoices=completionTypeValues(itemTypes,runtime);const statusFallbackChoices=completionStatusValues(runtime);const typeChoices=useDynamicTypeExpansion?'${(f)"$(_pm_type_choices)"}':typeFallbackChoices;const statusChoices='${(f)"$(_pm_status_choices)"}';const guideTopicChoices=GUIDE_TOPIC_CHOICES;const tagChoices=joinCompletionValues(tags);const useEagerTagExpansion=eagerTagExpansion||tags.length>0;const zshTagChoices=useEagerTagExpansion?tagChoices:'${(f)"$(_pm_tag_choices)"}';const zshListRuntimeFieldFlags=renderZshRuntimeFieldFlagSpecs(runtime.command_flags?.list);const zshCreateRuntimeFieldFlags=renderZshRuntimeFieldFlagSpecs(runtime.command_flags?.create);const zshSearchRuntimeFieldFlags=renderZshRuntimeFieldFlagSpecs(runtime.command_flags?.search);const zshCalendarRuntimeFieldFlags=renderZshRuntimeFieldFlagSpecs(runtime.command_flags?.calendar);const zshContextRuntimeFieldFlags=renderZshRuntimeFieldFlagSpecs(runtime.command_flags?.context);const zshPresenceFilterFlags=renderZshPresenceFilterSpecs({missingPrefix:"filter-",pairedPrefix:"",includeContentMissingAliases:true});const zshBulkPresenceFilterFlags=renderZshPresenceFilterSpecs({missingPrefix:"filter-",pairedPrefix:"filter-"});const zshMutationCollectionFlags=renderZshArgumentSpecs(ZSH_MUTATION_COLLECTION_ARGUMENT_SPECS);const dynamicTagResolver=useEagerTagExpansion?"":`
47
47
  _pm_tag_choices() {
48
48
  local now ttl cache_ts
49
49
  now=\${EPOCHSECONDS:-0}
@@ -76,7 +76,7 @@ _pm() {
76
76
  local context state line
77
77
  local -a words=("$words[@]")
78
78
  local CURRENT=$CURRENT
79
- local word_index=2 history_seen=0 operation_index=0 word
79
+ local word_index=2 namespace_noun="" operation_index=0 word
80
80
  while (( word_index < CURRENT )); do
81
81
  word="$words[word_index]"
82
82
  case "\${word//_/-}" in
@@ -84,24 +84,27 @@ _pm() {
84
84
  ${GLOBAL_COMPLETION_INLINE_PATTERNS}|${GLOBAL_COMPLETION_SWITCH_PATTERNS}) (( word_index++ )); continue ;;
85
85
  --) break ;;
86
86
  esac
87
- if (( history_seen == 0 )); then
88
- [[ "$word" == "history" ]] || break
89
- history_seen=1
87
+ if [[ -z "$namespace_noun" ]]; then
88
+ [[ "$word" == "ctx" ]] && word="context"
89
+ case "$word" in ${NAMESPACE_NOUNS.join("|")}) ;; *) break ;; esac
90
+ namespace_noun="$word"
90
91
  else
91
92
  operation_index=$word_index
92
93
  break
93
94
  fi
94
95
  (( word_index++ ))
95
96
  done
96
- if (( history_seen && word_index == CURRENT )) && [[ "$words[CURRENT]" != -* ]]; then
97
+ if [[ -n "$namespace_noun" ]] && (( word_index == CURRENT )) && [[ "$words[CURRENT]" != -* ]]; then
97
98
  local -a history_commands
98
- history_commands=(${HISTORY_LEAVES})
99
+ case "$namespace_noun" in
100
+ ${Object.entries(NAMESPACE_LEAVES).map(([noun,leaves])=>` ${noun}) history_commands=(${leaves}) ;;`).join("\n")}
101
+ esac
99
102
  _describe 'history operation' history_commands
100
103
  return
101
104
  fi
102
105
  if (( operation_index > 0 )); then
103
- case "$words[operation_index]" in
104
- ${PM_HISTORY_COMMAND_ALIASES.map(entry=>` ${entry.canonical_argv[1]}) words=("$words[1]" "${entry.alias}" "\${words[@]:$operation_index}"); (( CURRENT -= operation_index - 2 )) ;;`).join("\n")}
106
+ case "$namespace_noun $words[operation_index]" in
107
+ ${PM_NAMESPACED_COMMAND_ALIASES.map(entry=>` "${entry.canonical}") words=("$words[1]" "${entry.alias}" "\${words[@]:$operation_index}"); (( CURRENT -= operation_index - 2 )) ;;`).join("\n")}
105
108
  esac
106
109
  fi
107
110
  _arguments -C \\
@@ -571,8 +574,16 @@ ${zshSearchRuntimeFieldFlags} '--json[Output JSON]' \\
571
574
  '--quiet[Suppress stdout]'
572
575
  ;;
573
576
  schema)
577
+ if [[ "\${words[CURRENT-1]}" == policy-mode ]]; then
578
+ compadd advise refuse
579
+ return
580
+ fi
574
581
  _arguments \\
575
- '1:subcommand:(list show show-status add-type remove-type add-status remove-status add-field remove-field list-fields show-field apply-preset rename-type rename-field remap-status)' \\
582
+ '1:subcommand:(${SCHEMA_SUBCOMMAND_CHOICES})' \\
583
+ '--definition[Policy definition or proposed fields JSON]:json' \\
584
+ '--policy[Approval policy id]:id' \\
585
+ '--message[History rationale]:text' \\
586
+ '--dry-run[Preview schema changes]' \\
576
587
  '--description[Human description for the custom item type, status, or field]:text' \\
577
588
  '--default-status[Default status hint for the custom item type]:status' \\
578
589
  '--folder[Storage folder for items of this custom type]:dir' \\
@@ -893,6 +904,7 @@ ${zshSearchRuntimeFieldFlags} '--json[Output JSON]' \\
893
904
  ;;
894
905
  close)
895
906
  _arguments \\
907
+ '--release-assignment[Close and release assignment]' \\
896
908
  '--reason[Closure reason]:reason' \\
897
909
  '--close-reason[Alias for --reason]:close_reason' \\
898
910
  '--author[Mutation author]:author' \\
@@ -909,6 +921,7 @@ ${zshSearchRuntimeFieldFlags} '--json[Output JSON]' \\
909
921
  ;;
910
922
  claim)
911
923
  _arguments \\
924
+ '--start[Claim and start work]' \\
912
925
  '--author[Mutation author]:author' \\
913
926
  '--message[History message]:message' \\
914
927
  '--force[Force override]' \\
@@ -930,6 +943,7 @@ ${zshSearchRuntimeFieldFlags} '--json[Output JSON]' \\
930
943
  ;;
931
944
  release)
932
945
  _arguments \\
946
+ '--pause[Return to open and release ownership]' \\
933
947
  '--author[Mutation author]:author' \\
934
948
  '--message[History message]:message' \\
935
949
  '--force[Force override]' \\
@@ -968,6 +982,7 @@ ${renderZshArgumentSpecs(RESTORE_INVOCATIONS.map(flag=>`'${flag.flag}[${flag.des
968
982
  ;;
969
983
  validate)
970
984
  _arguments \\
985
+ '--check-completeness[Check declarative required fields]' \\
971
986
  '--check-metadata[Run metadata completeness checks]' \\
972
987
  '--metadata-profile[Select metadata validation profile for --check-metadata]:(core strict custom)' \\
973
988
  '--check-resolution[Run closed-item resolution metadata checks]' \\
@@ -1108,7 +1123,7 @@ ${renderZshArgumentSpecs(RESTORE_INVOCATIONS.map(flag=>`'${flag.flag}[${flag.des
1108
1123
  esac
1109
1124
  }
1110
1125
 
1111
- compdef _pm pm`}function generateFishScript(itemTypes=[],tags=[],eagerTagExpansion=false,runtime={}){const listCommandNames=ALL_COMMANDS.filter(command=>command==="list"||command.startsWith("list-"));const listCmds=listCommandNames.join(" ");const noSubcommandList=ALL_COMMANDS.join(" ");const useDynamicTypeExpansion=itemTypes.length===0;const typeFallbackChoices=completionTypeValues(itemTypes,runtime);const statusFallbackChoices=completionStatusValues(runtime);const typeChoices=useDynamicTypeExpansion?"(__pm_type_choices)":typeFallbackChoices;const statusChoices="(__pm_status_choices)";const guideTopicChoices=GUIDE_TOPIC_CHOICES;const tagChoices=joinCompletionValues(tags);const useEagerTagExpansion=eagerTagExpansion||tags.length>0;const fishTagChoices=useEagerTagExpansion?`'${tagChoices}'`:"'(__pm_tag_choices)'";const fishListRuntimeFieldFlags=renderFishRuntimeFieldFlagSpecs(listCommandNames,runtime.command_flags?.list);const fishCreateRuntimeFieldFlags=renderFishRuntimeFieldFlagSpecs(["create"],runtime.command_flags?.create);const fishUpdateRuntimeFieldFlags=renderFishRuntimeFieldFlagSpecs(["update"],runtime.command_flags?.update);const fishUpdateManyRuntimeFieldFlags=renderFishRuntimeFieldFlagSpecs(["update-many"],runtime.command_flags?.["update-many"]);const fishSearchRuntimeFieldFlags=renderFishRuntimeFieldFlagSpecs(["search"],runtime.command_flags?.search);const fishCalendarRuntimeFieldFlags=renderFishRuntimeFieldFlagSpecs(["calendar","cal"],runtime.command_flags?.calendar);const fishContextRuntimeFieldFlags=renderFishRuntimeFieldFlagSpecs(["context","ctx"],runtime.command_flags?.context);const dynamicTagResolver=useEagerTagExpansion?"":`
1126
+ compdef _pm pm`}function generateFishScript(itemTypes=[],tags=[],eagerTagExpansion=false,runtime={}){const listCommandNames=ALL_COMMANDS.filter(command=>command==="list"||command.startsWith("list-"));const listCmds=listCommandNames.join(" ");const noSubcommandList=ALL_COMMANDS.join(" ");const useDynamicTypeExpansion=itemTypes.length===0;const typeFallbackChoices=completionTypeValues(itemTypes,runtime);const statusFallbackChoices=completionStatusValues(runtime);const typeChoices=useDynamicTypeExpansion?"(__pm_type_choices)":typeFallbackChoices;const statusChoices="(__pm_status_choices)";const guideTopicChoices=GUIDE_TOPIC_CHOICES;const tagChoices=joinCompletionValues(tags);const useEagerTagExpansion=eagerTagExpansion||tags.length>0;const fishTagChoices=useEagerTagExpansion?`'${tagChoices}'`:"'(__pm_tag_choices)'";const fishListRuntimeFieldFlags=renderFishRuntimeFieldFlagSpecs(listCommandNames,runtime.command_flags?.list);const fishCreateRuntimeFieldFlags=renderFishRuntimeFieldFlagSpecs(["create"],runtime.command_flags?.create);const fishUpdateRuntimeFieldFlags=renderFishRuntimeFieldFlagSpecs(["update"],runtime.command_flags?.update);const fishUpdateManyRuntimeFieldFlags=renderFishRuntimeFieldFlagSpecs(["update-many"],runtime.command_flags?.["update-many"]);const fishSearchRuntimeFieldFlags=renderFishRuntimeFieldFlagSpecs(["search"],runtime.command_flags?.search);const fishCalendarRuntimeFieldFlags=renderFishRuntimeFieldFlagSpecs(["calendar","cal"],runtime.command_flags?.calendar);const fishContextRuntimeFieldFlags=renderFishRuntimeFieldFlagSpecs(["context"],runtime.command_flags?.context);const dynamicTagResolver=useEagerTagExpansion?"":`
1112
1127
  function __pm_tag_choices
1113
1128
  set -l now (date +%s ^/dev/null)
1114
1129
  if test -z "$now"
@@ -1289,170 +1304,170 @@ complete -c pm -n '__fish_seen_subcommand_from copy' -l message -d 'History mess
1289
1304
  complete -c pm -n '__fish_seen_subcommand_from copy' -l force -d 'Force ownership override'
1290
1305
 
1291
1306
  # focus flags
1292
- complete -c pm -n '__fish_seen_subcommand_from focus' -l clear -d 'Clear the focused item'
1307
+ complete -c pm -n '__pm_history_operation focus' -l clear -d 'Clear the focused item'
1293
1308
 
1294
1309
  # update flags
1295
- complete -c pm -n '__fish_seen_subcommand_from update' -s t -l title -d 'Item title' -r
1296
- complete -c pm -n '__fish_seen_subcommand_from update' -s d -l description -d 'Item description' -r
1297
- complete -c pm -n '__fish_seen_subcommand_from update' -s b -l body -d 'Item body' -r
1298
- complete -c pm -n '__fish_seen_subcommand_from update' -l body-file -d 'Load the item body from a file' -r -F
1299
- complete -c pm -n '__fish_seen_subcommand_from update' -s s -l status -d 'Item status' -r -a '${statusChoices}'
1300
- complete -c pm -n '__fish_seen_subcommand_from update' -l close-reason -d 'Set close reason' -r
1301
- complete -c pm -n '__fish_seen_subcommand_from update' -s p -l priority -d 'Priority (0-4)' -r -a '0 1 2 3 4'
1302
- complete -c pm -n '__fish_seen_subcommand_from update' -l type -d 'Item type' -r -a '${typeChoices}'
1303
- complete -c pm -n '__fish_seen_subcommand_from update' -l add-tags -d 'Add tags additively without replacing existing' -r
1304
- complete -c pm -n '__fish_seen_subcommand_from update' -l remove-tags -d 'Remove tags from the existing list' -r
1305
- complete -c pm -n '__fish_seen_subcommand_from update' -l add-ac -d 'Add one acceptance criterion without replacing existing' -r
1306
- complete -c pm -n '__fish_seen_subcommand_from update' -l remove-ac -d 'Remove one acceptance criterion by exact text' -r
1307
- complete -c pm -n '__fish_seen_subcommand_from update' -l expected -d 'Short alias for --expected-result' -r
1308
- complete -c pm -n '__fish_seen_subcommand_from update' -l actual -d 'Short alias for --actual-result' -r
1309
- complete -c pm -n '__fish_seen_subcommand_from update' -l comment -d 'Comment seed author=<value>,created_at=<iso|now>,text=<value>' -r
1310
- complete -c pm -n '__fish_seen_subcommand_from update' -l note -d 'Note seed author=<value>,created_at=<iso|now>,text=<value>' -r
1311
- complete -c pm -n '__fish_seen_subcommand_from update' -l learning -d 'Learning seed author=<value>,created_at=<iso|now>,text=<value>' -r
1312
- complete -c pm -n '__fish_seen_subcommand_from update' -l file -d 'Linked file path=<value>,scope=<project|global>,note=<text>' -r
1313
- complete -c pm -n '__fish_seen_subcommand_from update' -l test -d 'Linked test command=<value>,path=<value>,scope=<project|global>' -r
1314
- complete -c pm -n '__fish_seen_subcommand_from update' -l doc -d 'Linked doc path=<value>,scope=<project|global>,note=<text>' -r
1315
- complete -c pm -n '__fish_seen_subcommand_from update' -l reminder -d 'Reminder entry at=<iso|relative>|date=<iso|relative>,text=<text>|title=<text>' -r
1316
- complete -c pm -n '__fish_seen_subcommand_from update' -l event -d 'Event entry start=<iso|relative>,end=<iso|relative>,recur_*' -r
1317
- complete -c pm -n '__fish_seen_subcommand_from update' -l type-option -d 'Type option key=value or key=<name>,value=<value>' -r
1318
- complete -c pm -n '__fish_seen_subcommand_from update' -l unset -d 'Clear scalar metadata field by name' -r
1319
- complete -c pm -n '__fish_seen_subcommand_from update' -l replace-deps -d 'Atomically replace dependencies with provided --dep values'
1320
- complete -c pm -n '__fish_seen_subcommand_from update' -l replace-tests -d 'Atomically replace linked tests with provided --test values'
1321
- complete -c pm -n '__fish_seen_subcommand_from update' -l replace-files -d 'Atomically replace linked files with provided --file values'
1322
- complete -c pm -n '__fish_seen_subcommand_from update' -l replace-docs -d 'Atomically replace linked docs with provided --doc values'
1323
- complete -c pm -n '__fish_seen_subcommand_from update' -l clear-deps -d 'Clear dependency entries'
1324
- complete -c pm -n '__fish_seen_subcommand_from update' -l clear-comments -d 'Clear comments'
1325
- complete -c pm -n '__fish_seen_subcommand_from update' -l clear-notes -d 'Clear notes'
1326
- complete -c pm -n '__fish_seen_subcommand_from update' -l clear-learnings -d 'Clear learnings'
1327
- complete -c pm -n '__fish_seen_subcommand_from update' -l clear-files -d 'Clear linked files'
1328
- complete -c pm -n '__fish_seen_subcommand_from update' -l clear-tests -d 'Clear linked tests'
1329
- complete -c pm -n '__fish_seen_subcommand_from update' -l clear-docs -d 'Clear linked docs'
1330
- complete -c pm -n '__fish_seen_subcommand_from update' -l clear-reminders -d 'Clear reminders'
1331
- complete -c pm -n '__fish_seen_subcommand_from update' -l clear-events -d 'Clear events'
1332
- complete -c pm -n '__fish_seen_subcommand_from update' -l clear-type-options -d 'Clear type options'
1333
- complete -c pm -n '__fish_seen_subcommand_from update' -l author -d 'Mutation author' -r
1334
- complete -c pm -n '__fish_seen_subcommand_from update' -l message -d 'History message' -r
1335
- complete -c pm -n '__fish_seen_subcommand_from update' -l force -d 'Force override'
1310
+ complete -c pm -n '__pm_history_operation update' -s t -l title -d 'Item title' -r
1311
+ complete -c pm -n '__pm_history_operation update' -s d -l description -d 'Item description' -r
1312
+ complete -c pm -n '__pm_history_operation update' -s b -l body -d 'Item body' -r
1313
+ complete -c pm -n '__pm_history_operation update' -l body-file -d 'Load the item body from a file' -r -F
1314
+ complete -c pm -n '__pm_history_operation update' -s s -l status -d 'Item status' -r -a '${statusChoices}'
1315
+ complete -c pm -n '__pm_history_operation update' -l close-reason -d 'Set close reason' -r
1316
+ complete -c pm -n '__pm_history_operation update' -s p -l priority -d 'Priority (0-4)' -r -a '0 1 2 3 4'
1317
+ complete -c pm -n '__pm_history_operation update' -l type -d 'Item type' -r -a '${typeChoices}'
1318
+ complete -c pm -n '__pm_history_operation update' -l add-tags -d 'Add tags additively without replacing existing' -r
1319
+ complete -c pm -n '__pm_history_operation update' -l remove-tags -d 'Remove tags from the existing list' -r
1320
+ complete -c pm -n '__pm_history_operation update' -l add-ac -d 'Add one acceptance criterion without replacing existing' -r
1321
+ complete -c pm -n '__pm_history_operation update' -l remove-ac -d 'Remove one acceptance criterion by exact text' -r
1322
+ complete -c pm -n '__pm_history_operation update' -l expected -d 'Short alias for --expected-result' -r
1323
+ complete -c pm -n '__pm_history_operation update' -l actual -d 'Short alias for --actual-result' -r
1324
+ complete -c pm -n '__pm_history_operation update' -l comment -d 'Comment seed author=<value>,created_at=<iso|now>,text=<value>' -r
1325
+ complete -c pm -n '__pm_history_operation update' -l note -d 'Note seed author=<value>,created_at=<iso|now>,text=<value>' -r
1326
+ complete -c pm -n '__pm_history_operation update' -l learning -d 'Learning seed author=<value>,created_at=<iso|now>,text=<value>' -r
1327
+ complete -c pm -n '__pm_history_operation update' -l file -d 'Linked file path=<value>,scope=<project|global>,note=<text>' -r
1328
+ complete -c pm -n '__pm_history_operation update' -l test -d 'Linked test command=<value>,path=<value>,scope=<project|global>' -r
1329
+ complete -c pm -n '__pm_history_operation update' -l doc -d 'Linked doc path=<value>,scope=<project|global>,note=<text>' -r
1330
+ complete -c pm -n '__pm_history_operation update' -l reminder -d 'Reminder entry at=<iso|relative>|date=<iso|relative>,text=<text>|title=<text>' -r
1331
+ complete -c pm -n '__pm_history_operation update' -l event -d 'Event entry start=<iso|relative>,end=<iso|relative>,recur_*' -r
1332
+ complete -c pm -n '__pm_history_operation update' -l type-option -d 'Type option key=value or key=<name>,value=<value>' -r
1333
+ complete -c pm -n '__pm_history_operation update' -l unset -d 'Clear scalar metadata field by name' -r
1334
+ complete -c pm -n '__pm_history_operation update' -l replace-deps -d 'Atomically replace dependencies with provided --dep values'
1335
+ complete -c pm -n '__pm_history_operation update' -l replace-tests -d 'Atomically replace linked tests with provided --test values'
1336
+ complete -c pm -n '__pm_history_operation update' -l replace-files -d 'Atomically replace linked files with provided --file values'
1337
+ complete -c pm -n '__pm_history_operation update' -l replace-docs -d 'Atomically replace linked docs with provided --doc values'
1338
+ complete -c pm -n '__pm_history_operation update' -l clear-deps -d 'Clear dependency entries'
1339
+ complete -c pm -n '__pm_history_operation update' -l clear-comments -d 'Clear comments'
1340
+ complete -c pm -n '__pm_history_operation update' -l clear-notes -d 'Clear notes'
1341
+ complete -c pm -n '__pm_history_operation update' -l clear-learnings -d 'Clear learnings'
1342
+ complete -c pm -n '__pm_history_operation update' -l clear-files -d 'Clear linked files'
1343
+ complete -c pm -n '__pm_history_operation update' -l clear-tests -d 'Clear linked tests'
1344
+ complete -c pm -n '__pm_history_operation update' -l clear-docs -d 'Clear linked docs'
1345
+ complete -c pm -n '__pm_history_operation update' -l clear-reminders -d 'Clear reminders'
1346
+ complete -c pm -n '__pm_history_operation update' -l clear-events -d 'Clear events'
1347
+ complete -c pm -n '__pm_history_operation update' -l clear-type-options -d 'Clear type options'
1348
+ complete -c pm -n '__pm_history_operation update' -l author -d 'Mutation author' -r
1349
+ complete -c pm -n '__pm_history_operation update' -l message -d 'History message' -r
1350
+ complete -c pm -n '__pm_history_operation update' -l force -d 'Force override'
1336
1351
  ${fishUpdateRuntimeFieldFlags}
1337
1352
 
1338
1353
  # update-many flags
1339
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-status -d 'Filter by status before applying updates' -r -a '${statusChoices}'
1340
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-type -d 'Filter by type before applying updates' -r -a '${typeChoices}'
1341
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-tag -d 'Filter by tag before applying updates' -r -a ${fishTagChoices}
1342
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-priority -d 'Filter by priority before applying updates' -r -a '0 1 2 3 4'
1343
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-deadline-before -d 'Filter by deadline upper bound' -r
1344
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-deadline-after -d 'Filter by deadline lower bound' -r
1345
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-updated-after -d 'Filter by updated_at lower bound (ISO/relative)' -r
1346
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-updated-before -d 'Filter by updated_at upper bound (ISO/relative)' -r
1347
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-created-after -d 'Filter by created_at lower bound (ISO/relative)' -r
1348
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-created-before -d 'Filter by created_at upper bound (ISO/relative)' -r
1349
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-assignee -d 'Filter by assignee before applying updates' -r
1350
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-assignee-filter -d 'Filter assignee presence' -r -a 'assigned unassigned'
1351
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-parent -d 'Filter by parent item ID' -r
1352
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-sprint -d 'Filter by sprint before applying updates' -r
1353
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-release -d 'Filter by release before applying updates' -r
1354
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-ac-missing -d 'Select only items missing acceptance_criteria'
1355
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-estimates-missing -d 'Select only items missing estimated_minutes'
1356
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-resolution-missing -d 'Select only terminal items missing resolution'
1357
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-metadata-missing -d 'Select only items missing any tracked metadata'
1358
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-reviewer-missing -d 'Select only items missing reviewer'
1359
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-risk-missing -d 'Select only items missing risk'
1360
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-confidence-missing -d 'Select only items missing confidence'
1361
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-sprint-missing -d 'Select only items missing sprint'
1362
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-release-missing -d 'Select only items missing release'
1363
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-has-notes -d 'Select only items that have notes'
1364
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-no-notes -d 'Select only items with no notes'
1365
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-has-learnings -d 'Select only items that have learnings'
1366
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-no-learnings -d 'Select only items with no learnings'
1367
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-has-files -d 'Select only items that have linked files'
1368
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-no-files -d 'Select only items with no linked files'
1369
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-has-docs -d 'Select only items that have linked docs'
1370
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-no-docs -d 'Select only items with no linked docs'
1371
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-has-tests -d 'Select only items that have linked tests'
1372
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-no-tests -d 'Select only items with no linked tests'
1373
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-has-comments -d 'Select only items that have comments'
1374
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-no-comments -d 'Select only items with no comments'
1375
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-has-deps -d 'Select only items that have dependencies'
1376
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-no-deps -d 'Select only items with no dependencies'
1377
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-has-body -d 'Select only items with non-empty body'
1378
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-empty-body -d 'Select only items with empty body'
1379
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-has-linked-command -d 'Select only items that have a linked command'
1380
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l filter-no-linked-command -d 'Select only items with no linked command'
1381
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l ids -d 'Explicit comma-separated ID allowlist' -r
1382
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l limit -d 'Limit matched item count' -r
1383
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l offset -d 'Skip first n matched rows' -r
1384
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l dry-run -d 'Preview updates without mutating'
1385
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l rollback -d 'Rollback checkpoint ID' -r
1386
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l no-checkpoint -d 'Disable checkpoint creation during apply mode'
1387
- complete -c pm -n '__fish_seen_subcommand_from update-many' -s t -l title -d 'Item title' -r
1388
- complete -c pm -n '__fish_seen_subcommand_from update-many' -s d -l description -d 'Item description' -r
1389
- complete -c pm -n '__fish_seen_subcommand_from update-many' -s b -l body -d 'Item body' -r
1390
- complete -c pm -n '__fish_seen_subcommand_from update-many' -s p -l priority -d 'Priority (0-4)' -r -a '0 1 2 3 4'
1391
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l type -d 'Item type' -r -a '${typeChoices}'
1392
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l tags -d 'Comma-separated tags' -r
1393
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l add-tags -d 'Add tags additively without replacing existing' -r
1394
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l remove-tags -d 'Remove tags from the existing list' -r
1395
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l deadline -d 'Deadline (ISO/date string or relative)' -r
1396
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l estimate -d 'Estimated minutes' -r
1397
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l acceptance-criteria -d 'Acceptance criteria' -r
1398
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l add-ac -d 'Add one acceptance criterion without replacing existing' -r
1399
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l remove-ac -d 'Remove one acceptance criterion by exact text' -r
1400
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l definition-of-ready -d 'Definition of ready' -r
1401
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l order -d 'Planning order/rank' -r
1402
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l goal -d 'Goal identifier' -r
1403
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l objective -d 'Objective identifier' -r
1404
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l value -d 'Business value summary' -r
1405
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l impact -d 'Business impact summary' -r
1406
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l outcome -d 'Expected outcome summary' -r
1407
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l why-now -d 'Why-now rationale' -r
1408
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l reviewer -d 'Reviewer' -r
1409
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l risk -d 'Risk level' -r
1410
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l confidence -d 'Confidence level' -r
1411
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l sprint -d 'Sprint identifier' -r
1412
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l release -d 'Release identifier' -r
1413
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l reporter -d 'Issue reporter' -r
1414
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l severity -d 'Issue severity' -r
1415
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l environment -d 'Issue environment context' -r
1416
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l repro-steps -d 'Issue reproduction steps' -r
1417
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l resolution -d 'Issue resolution summary' -r
1418
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l expected-result -d 'Issue expected behavior' -r
1419
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l actual-result -d 'Issue observed behavior' -r
1420
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l expected -d 'Short alias for --expected-result' -r
1421
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l actual -d 'Short alias for --actual-result' -r
1422
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l affected-version -d 'Affected version identifier' -r
1423
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l fixed-version -d 'Fixed version identifier' -r
1424
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l component -d 'Issue component ownership' -r
1425
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l regression -d 'Regression marker true|false|1|0' -r
1426
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l customer-impact -d 'Customer impact summary' -r
1427
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l dep -d 'Dependency seed id=<id>,kind=<kind>,author=<author>,created_at=<timestamp>' -r
1428
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l dep-remove -d 'Dependency removal selector id=<id>,kind=<kind>,author=<author>,created_at=<timestamp>' -r
1429
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l replace-deps -d 'Atomically replace dependencies with provided --dep values'
1430
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l replace-tests -d 'Atomically replace linked tests with provided --test values'
1431
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l replace-files -d 'Atomically replace linked files with provided --file values'
1432
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l replace-docs -d 'Atomically replace linked docs with provided --doc values'
1433
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l comment -d 'Comment seed author=<value>,created_at=<iso|now>,text=<value>' -r
1434
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l note -d 'Note seed author=<value>,created_at=<iso|now>,text=<value>' -r
1435
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l learning -d 'Learning seed author=<value>,created_at=<iso|now>,text=<value>' -r
1436
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l file -d 'Linked file path=<value>,scope=<project|global>,note=<text>' -r
1437
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l test -d 'Linked test command=<value>,path=<value>,scope=<project|global>' -r
1438
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l doc -d 'Linked doc path=<value>,scope=<project|global>,note=<text>' -r
1439
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l reminder -d 'Reminder entry at=<iso|relative>|date=<iso|relative>,text=<text>|title=<text>' -r
1440
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l event -d 'Event entry start=<iso|relative>,end=<iso|relative>,recur_*' -r
1441
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l type-option -d 'Type option key=value or key=<name>,value=<value>' -r
1442
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l unset -d 'Clear scalar metadata field by name' -r
1443
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l clear-deps -d 'Clear dependency entries'
1444
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l clear-comments -d 'Clear comments'
1445
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l clear-notes -d 'Clear notes'
1446
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l clear-learnings -d 'Clear learnings'
1447
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l clear-files -d 'Clear linked files'
1448
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l clear-tests -d 'Clear linked tests'
1449
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l clear-docs -d 'Clear linked docs'
1450
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l clear-reminders -d 'Clear reminders'
1451
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l clear-events -d 'Clear events'
1452
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l clear-type-options -d 'Clear type options'
1453
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l author -d 'Mutation author' -r
1454
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l message -d 'History message' -r
1455
- complete -c pm -n '__fish_seen_subcommand_from update-many' -l force -d 'Force override'
1354
+ complete -c pm -n '__pm_history_operation update-many' -l filter-status -d 'Filter by status before applying updates' -r -a '${statusChoices}'
1355
+ complete -c pm -n '__pm_history_operation update-many' -l filter-type -d 'Filter by type before applying updates' -r -a '${typeChoices}'
1356
+ complete -c pm -n '__pm_history_operation update-many' -l filter-tag -d 'Filter by tag before applying updates' -r -a ${fishTagChoices}
1357
+ complete -c pm -n '__pm_history_operation update-many' -l filter-priority -d 'Filter by priority before applying updates' -r -a '0 1 2 3 4'
1358
+ complete -c pm -n '__pm_history_operation update-many' -l filter-deadline-before -d 'Filter by deadline upper bound' -r
1359
+ complete -c pm -n '__pm_history_operation update-many' -l filter-deadline-after -d 'Filter by deadline lower bound' -r
1360
+ complete -c pm -n '__pm_history_operation update-many' -l filter-updated-after -d 'Filter by updated_at lower bound (ISO/relative)' -r
1361
+ complete -c pm -n '__pm_history_operation update-many' -l filter-updated-before -d 'Filter by updated_at upper bound (ISO/relative)' -r
1362
+ complete -c pm -n '__pm_history_operation update-many' -l filter-created-after -d 'Filter by created_at lower bound (ISO/relative)' -r
1363
+ complete -c pm -n '__pm_history_operation update-many' -l filter-created-before -d 'Filter by created_at upper bound (ISO/relative)' -r
1364
+ complete -c pm -n '__pm_history_operation update-many' -l filter-assignee -d 'Filter by assignee before applying updates' -r
1365
+ complete -c pm -n '__pm_history_operation update-many' -l filter-assignee-filter -d 'Filter assignee presence' -r -a 'assigned unassigned'
1366
+ complete -c pm -n '__pm_history_operation update-many' -l filter-parent -d 'Filter by parent item ID' -r
1367
+ complete -c pm -n '__pm_history_operation update-many' -l filter-sprint -d 'Filter by sprint before applying updates' -r
1368
+ complete -c pm -n '__pm_history_operation update-many' -l filter-release -d 'Filter by release before applying updates' -r
1369
+ complete -c pm -n '__pm_history_operation update-many' -l filter-ac-missing -d 'Select only items missing acceptance_criteria'
1370
+ complete -c pm -n '__pm_history_operation update-many' -l filter-estimates-missing -d 'Select only items missing estimated_minutes'
1371
+ complete -c pm -n '__pm_history_operation update-many' -l filter-resolution-missing -d 'Select only terminal items missing resolution'
1372
+ complete -c pm -n '__pm_history_operation update-many' -l filter-metadata-missing -d 'Select only items missing any tracked metadata'
1373
+ complete -c pm -n '__pm_history_operation update-many' -l filter-reviewer-missing -d 'Select only items missing reviewer'
1374
+ complete -c pm -n '__pm_history_operation update-many' -l filter-risk-missing -d 'Select only items missing risk'
1375
+ complete -c pm -n '__pm_history_operation update-many' -l filter-confidence-missing -d 'Select only items missing confidence'
1376
+ complete -c pm -n '__pm_history_operation update-many' -l filter-sprint-missing -d 'Select only items missing sprint'
1377
+ complete -c pm -n '__pm_history_operation update-many' -l filter-release-missing -d 'Select only items missing release'
1378
+ complete -c pm -n '__pm_history_operation update-many' -l filter-has-notes -d 'Select only items that have notes'
1379
+ complete -c pm -n '__pm_history_operation update-many' -l filter-no-notes -d 'Select only items with no notes'
1380
+ complete -c pm -n '__pm_history_operation update-many' -l filter-has-learnings -d 'Select only items that have learnings'
1381
+ complete -c pm -n '__pm_history_operation update-many' -l filter-no-learnings -d 'Select only items with no learnings'
1382
+ complete -c pm -n '__pm_history_operation update-many' -l filter-has-files -d 'Select only items that have linked files'
1383
+ complete -c pm -n '__pm_history_operation update-many' -l filter-no-files -d 'Select only items with no linked files'
1384
+ complete -c pm -n '__pm_history_operation update-many' -l filter-has-docs -d 'Select only items that have linked docs'
1385
+ complete -c pm -n '__pm_history_operation update-many' -l filter-no-docs -d 'Select only items with no linked docs'
1386
+ complete -c pm -n '__pm_history_operation update-many' -l filter-has-tests -d 'Select only items that have linked tests'
1387
+ complete -c pm -n '__pm_history_operation update-many' -l filter-no-tests -d 'Select only items with no linked tests'
1388
+ complete -c pm -n '__pm_history_operation update-many' -l filter-has-comments -d 'Select only items that have comments'
1389
+ complete -c pm -n '__pm_history_operation update-many' -l filter-no-comments -d 'Select only items with no comments'
1390
+ complete -c pm -n '__pm_history_operation update-many' -l filter-has-deps -d 'Select only items that have dependencies'
1391
+ complete -c pm -n '__pm_history_operation update-many' -l filter-no-deps -d 'Select only items with no dependencies'
1392
+ complete -c pm -n '__pm_history_operation update-many' -l filter-has-body -d 'Select only items with non-empty body'
1393
+ complete -c pm -n '__pm_history_operation update-many' -l filter-empty-body -d 'Select only items with empty body'
1394
+ complete -c pm -n '__pm_history_operation update-many' -l filter-has-linked-command -d 'Select only items that have a linked command'
1395
+ complete -c pm -n '__pm_history_operation update-many' -l filter-no-linked-command -d 'Select only items with no linked command'
1396
+ complete -c pm -n '__pm_history_operation update-many' -l ids -d 'Explicit comma-separated ID allowlist' -r
1397
+ complete -c pm -n '__pm_history_operation update-many' -l limit -d 'Limit matched item count' -r
1398
+ complete -c pm -n '__pm_history_operation update-many' -l offset -d 'Skip first n matched rows' -r
1399
+ complete -c pm -n '__pm_history_operation update-many' -l dry-run -d 'Preview updates without mutating'
1400
+ complete -c pm -n '__pm_history_operation update-many' -l rollback -d 'Rollback checkpoint ID' -r
1401
+ complete -c pm -n '__pm_history_operation update-many' -l no-checkpoint -d 'Disable checkpoint creation during apply mode'
1402
+ complete -c pm -n '__pm_history_operation update-many' -s t -l title -d 'Item title' -r
1403
+ complete -c pm -n '__pm_history_operation update-many' -s d -l description -d 'Item description' -r
1404
+ complete -c pm -n '__pm_history_operation update-many' -s b -l body -d 'Item body' -r
1405
+ complete -c pm -n '__pm_history_operation update-many' -s p -l priority -d 'Priority (0-4)' -r -a '0 1 2 3 4'
1406
+ complete -c pm -n '__pm_history_operation update-many' -l type -d 'Item type' -r -a '${typeChoices}'
1407
+ complete -c pm -n '__pm_history_operation update-many' -l tags -d 'Comma-separated tags' -r
1408
+ complete -c pm -n '__pm_history_operation update-many' -l add-tags -d 'Add tags additively without replacing existing' -r
1409
+ complete -c pm -n '__pm_history_operation update-many' -l remove-tags -d 'Remove tags from the existing list' -r
1410
+ complete -c pm -n '__pm_history_operation update-many' -l deadline -d 'Deadline (ISO/date string or relative)' -r
1411
+ complete -c pm -n '__pm_history_operation update-many' -l estimate -d 'Estimated minutes' -r
1412
+ complete -c pm -n '__pm_history_operation update-many' -l acceptance-criteria -d 'Acceptance criteria' -r
1413
+ complete -c pm -n '__pm_history_operation update-many' -l add-ac -d 'Add one acceptance criterion without replacing existing' -r
1414
+ complete -c pm -n '__pm_history_operation update-many' -l remove-ac -d 'Remove one acceptance criterion by exact text' -r
1415
+ complete -c pm -n '__pm_history_operation update-many' -l definition-of-ready -d 'Definition of ready' -r
1416
+ complete -c pm -n '__pm_history_operation update-many' -l order -d 'Planning order/rank' -r
1417
+ complete -c pm -n '__pm_history_operation update-many' -l goal -d 'Goal identifier' -r
1418
+ complete -c pm -n '__pm_history_operation update-many' -l objective -d 'Objective identifier' -r
1419
+ complete -c pm -n '__pm_history_operation update-many' -l value -d 'Business value summary' -r
1420
+ complete -c pm -n '__pm_history_operation update-many' -l impact -d 'Business impact summary' -r
1421
+ complete -c pm -n '__pm_history_operation update-many' -l outcome -d 'Expected outcome summary' -r
1422
+ complete -c pm -n '__pm_history_operation update-many' -l why-now -d 'Why-now rationale' -r
1423
+ complete -c pm -n '__pm_history_operation update-many' -l reviewer -d 'Reviewer' -r
1424
+ complete -c pm -n '__pm_history_operation update-many' -l risk -d 'Risk level' -r
1425
+ complete -c pm -n '__pm_history_operation update-many' -l confidence -d 'Confidence level' -r
1426
+ complete -c pm -n '__pm_history_operation update-many' -l sprint -d 'Sprint identifier' -r
1427
+ complete -c pm -n '__pm_history_operation update-many' -l release -d 'Release identifier' -r
1428
+ complete -c pm -n '__pm_history_operation update-many' -l reporter -d 'Issue reporter' -r
1429
+ complete -c pm -n '__pm_history_operation update-many' -l severity -d 'Issue severity' -r
1430
+ complete -c pm -n '__pm_history_operation update-many' -l environment -d 'Issue environment context' -r
1431
+ complete -c pm -n '__pm_history_operation update-many' -l repro-steps -d 'Issue reproduction steps' -r
1432
+ complete -c pm -n '__pm_history_operation update-many' -l resolution -d 'Issue resolution summary' -r
1433
+ complete -c pm -n '__pm_history_operation update-many' -l expected-result -d 'Issue expected behavior' -r
1434
+ complete -c pm -n '__pm_history_operation update-many' -l actual-result -d 'Issue observed behavior' -r
1435
+ complete -c pm -n '__pm_history_operation update-many' -l expected -d 'Short alias for --expected-result' -r
1436
+ complete -c pm -n '__pm_history_operation update-many' -l actual -d 'Short alias for --actual-result' -r
1437
+ complete -c pm -n '__pm_history_operation update-many' -l affected-version -d 'Affected version identifier' -r
1438
+ complete -c pm -n '__pm_history_operation update-many' -l fixed-version -d 'Fixed version identifier' -r
1439
+ complete -c pm -n '__pm_history_operation update-many' -l component -d 'Issue component ownership' -r
1440
+ complete -c pm -n '__pm_history_operation update-many' -l regression -d 'Regression marker true|false|1|0' -r
1441
+ complete -c pm -n '__pm_history_operation update-many' -l customer-impact -d 'Customer impact summary' -r
1442
+ complete -c pm -n '__pm_history_operation update-many' -l dep -d 'Dependency seed id=<id>,kind=<kind>,author=<author>,created_at=<timestamp>' -r
1443
+ complete -c pm -n '__pm_history_operation update-many' -l dep-remove -d 'Dependency removal selector id=<id>,kind=<kind>,author=<author>,created_at=<timestamp>' -r
1444
+ complete -c pm -n '__pm_history_operation update-many' -l replace-deps -d 'Atomically replace dependencies with provided --dep values'
1445
+ complete -c pm -n '__pm_history_operation update-many' -l replace-tests -d 'Atomically replace linked tests with provided --test values'
1446
+ complete -c pm -n '__pm_history_operation update-many' -l replace-files -d 'Atomically replace linked files with provided --file values'
1447
+ complete -c pm -n '__pm_history_operation update-many' -l replace-docs -d 'Atomically replace linked docs with provided --doc values'
1448
+ complete -c pm -n '__pm_history_operation update-many' -l comment -d 'Comment seed author=<value>,created_at=<iso|now>,text=<value>' -r
1449
+ complete -c pm -n '__pm_history_operation update-many' -l note -d 'Note seed author=<value>,created_at=<iso|now>,text=<value>' -r
1450
+ complete -c pm -n '__pm_history_operation update-many' -l learning -d 'Learning seed author=<value>,created_at=<iso|now>,text=<value>' -r
1451
+ complete -c pm -n '__pm_history_operation update-many' -l file -d 'Linked file path=<value>,scope=<project|global>,note=<text>' -r
1452
+ complete -c pm -n '__pm_history_operation update-many' -l test -d 'Linked test command=<value>,path=<value>,scope=<project|global>' -r
1453
+ complete -c pm -n '__pm_history_operation update-many' -l doc -d 'Linked doc path=<value>,scope=<project|global>,note=<text>' -r
1454
+ complete -c pm -n '__pm_history_operation update-many' -l reminder -d 'Reminder entry at=<iso|relative>|date=<iso|relative>,text=<text>|title=<text>' -r
1455
+ complete -c pm -n '__pm_history_operation update-many' -l event -d 'Event entry start=<iso|relative>,end=<iso|relative>,recur_*' -r
1456
+ complete -c pm -n '__pm_history_operation update-many' -l type-option -d 'Type option key=value or key=<name>,value=<value>' -r
1457
+ complete -c pm -n '__pm_history_operation update-many' -l unset -d 'Clear scalar metadata field by name' -r
1458
+ complete -c pm -n '__pm_history_operation update-many' -l clear-deps -d 'Clear dependency entries'
1459
+ complete -c pm -n '__pm_history_operation update-many' -l clear-comments -d 'Clear comments'
1460
+ complete -c pm -n '__pm_history_operation update-many' -l clear-notes -d 'Clear notes'
1461
+ complete -c pm -n '__pm_history_operation update-many' -l clear-learnings -d 'Clear learnings'
1462
+ complete -c pm -n '__pm_history_operation update-many' -l clear-files -d 'Clear linked files'
1463
+ complete -c pm -n '__pm_history_operation update-many' -l clear-tests -d 'Clear linked tests'
1464
+ complete -c pm -n '__pm_history_operation update-many' -l clear-docs -d 'Clear linked docs'
1465
+ complete -c pm -n '__pm_history_operation update-many' -l clear-reminders -d 'Clear reminders'
1466
+ complete -c pm -n '__pm_history_operation update-many' -l clear-events -d 'Clear events'
1467
+ complete -c pm -n '__pm_history_operation update-many' -l clear-type-options -d 'Clear type options'
1468
+ complete -c pm -n '__pm_history_operation update-many' -l author -d 'Mutation author' -r
1469
+ complete -c pm -n '__pm_history_operation update-many' -l message -d 'History message' -r
1470
+ complete -c pm -n '__pm_history_operation update-many' -l force -d 'Force override'
1456
1471
  ${fishUpdateManyRuntimeFieldFlags}
1457
1472
 
1458
1473
  # files flags
@@ -1548,36 +1563,36 @@ complete -c pm -n '__fish_seen_subcommand_from calendar cal' -l format -d 'Ou
1548
1563
  ${fishCalendarRuntimeFieldFlags}
1549
1564
 
1550
1565
  # context flags
1551
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l date -d 'Anchor date/time (ISO/date string or relative)' -r
1552
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l from -d 'Agenda lower bound (ISO/date string or relative)' -r
1553
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l to -d 'Agenda upper bound (ISO/date string or relative)' -r
1554
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l past -d 'Include past entries in bounded windows'
1555
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l type -d 'Filter by type' -r -a '${typeChoices}'
1556
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l tag -d 'Filter by tag' -r -a ${fishTagChoices}
1557
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l priority -d 'Filter by priority' -r -a '0 1 2 3 4'
1558
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l assignee -d 'Filter by assignee' -r
1559
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l assignee-filter -d 'Filter assignee presence' -r -a 'assigned unassigned'
1560
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l sprint -d 'Filter by sprint' -r
1561
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l release -d 'Filter by release' -r
1562
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l parent -d 'Scope snapshot to one item subtree' -r
1563
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l limit -d 'Limit focus and agenda rows per section' -r
1564
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l depth -d 'Context depth' -r -a 'brief standard deep full'
1565
- complete -c pm -n '__fish_seen_subcommand_from context ctx' -l format -d 'Output override' -r -a 'markdown toon json'
1566
+ complete -c pm -n '__pm_history_operation context' -l date -d 'Anchor date/time (ISO/date string or relative)' -r
1567
+ complete -c pm -n '__pm_history_operation context' -l from -d 'Agenda lower bound (ISO/date string or relative)' -r
1568
+ complete -c pm -n '__pm_history_operation context' -l to -d 'Agenda upper bound (ISO/date string or relative)' -r
1569
+ complete -c pm -n '__pm_history_operation context' -l past -d 'Include past entries in bounded windows'
1570
+ complete -c pm -n '__pm_history_operation context' -l type -d 'Filter by type' -r -a '${typeChoices}'
1571
+ complete -c pm -n '__pm_history_operation context' -l tag -d 'Filter by tag' -r -a ${fishTagChoices}
1572
+ complete -c pm -n '__pm_history_operation context' -l priority -d 'Filter by priority' -r -a '0 1 2 3 4'
1573
+ complete -c pm -n '__pm_history_operation context' -l assignee -d 'Filter by assignee' -r
1574
+ complete -c pm -n '__pm_history_operation context' -l assignee-filter -d 'Filter assignee presence' -r -a 'assigned unassigned'
1575
+ complete -c pm -n '__pm_history_operation context' -l sprint -d 'Filter by sprint' -r
1576
+ complete -c pm -n '__pm_history_operation context' -l release -d 'Filter by release' -r
1577
+ complete -c pm -n '__pm_history_operation context' -l parent -d 'Scope snapshot to one item subtree' -r
1578
+ complete -c pm -n '__pm_history_operation context' -l limit -d 'Limit focus and agenda rows per section' -r
1579
+ complete -c pm -n '__pm_history_operation context' -l depth -d 'Context depth' -r -a 'brief standard deep full'
1580
+ complete -c pm -n '__pm_history_operation context' -l format -d 'Output override' -r -a 'markdown toon json'
1566
1581
  ${fishContextRuntimeFieldFlags}
1567
1582
 
1568
1583
  # next flags
1569
- complete -c pm -n '__fish_seen_subcommand_from next' -l type -d 'Filter candidates by type' -r -a '${typeChoices}'
1570
- complete -c pm -n '__fish_seen_subcommand_from next' -l tag -d 'Filter candidates by tag' -r -a ${fishTagChoices}
1571
- complete -c pm -n '__fish_seen_subcommand_from next' -l priority -d 'Filter candidates by priority' -r -a '0 1 2 3 4'
1572
- complete -c pm -n '__fish_seen_subcommand_from next' -l assignee -d 'Filter candidates by assignee' -r
1573
- complete -c pm -n '__fish_seen_subcommand_from next' -l assignee-filter -d 'Filter assignee presence' -r -a 'assigned unassigned'
1574
- complete -c pm -n '__fish_seen_subcommand_from next' -l sprint -d 'Filter candidates by sprint' -r
1575
- complete -c pm -n '__fish_seen_subcommand_from next' -l release -d 'Filter candidates by release' -r
1576
- complete -c pm -n '__fish_seen_subcommand_from next' -l parent -d 'Scope to one item subtree' -r
1577
- complete -c pm -n '__fish_seen_subcommand_from next' -l limit -d 'Limit ready rows' -r
1578
- complete -c pm -n '__fish_seen_subcommand_from next' -l blocked-limit -d 'Limit blocked rows' -r
1579
- complete -c pm -n '__fish_seen_subcommand_from next' -l ready-only -d 'Omit the blocked companion list'
1580
- complete -c pm -n '__fish_seen_subcommand_from next' -l format -d 'Output override' -r -a 'markdown toon json'
1584
+ complete -c pm -n '__pm_history_operation next' -l type -d 'Filter candidates by type' -r -a '${typeChoices}'
1585
+ complete -c pm -n '__pm_history_operation next' -l tag -d 'Filter candidates by tag' -r -a ${fishTagChoices}
1586
+ complete -c pm -n '__pm_history_operation next' -l priority -d 'Filter candidates by priority' -r -a '0 1 2 3 4'
1587
+ complete -c pm -n '__pm_history_operation next' -l assignee -d 'Filter candidates by assignee' -r
1588
+ complete -c pm -n '__pm_history_operation next' -l assignee-filter -d 'Filter assignee presence' -r -a 'assigned unassigned'
1589
+ complete -c pm -n '__pm_history_operation next' -l sprint -d 'Filter candidates by sprint' -r
1590
+ complete -c pm -n '__pm_history_operation next' -l release -d 'Filter candidates by release' -r
1591
+ complete -c pm -n '__pm_history_operation next' -l parent -d 'Scope to one item subtree' -r
1592
+ complete -c pm -n '__pm_history_operation next' -l limit -d 'Limit ready rows' -r
1593
+ complete -c pm -n '__pm_history_operation next' -l blocked-limit -d 'Limit blocked rows' -r
1594
+ complete -c pm -n '__pm_history_operation next' -l ready-only -d 'Omit the blocked companion list'
1595
+ complete -c pm -n '__pm_history_operation next' -l format -d 'Output override' -r -a 'markdown toon json'
1581
1596
 
1582
1597
  # guide flags
1583
1598
  complete -c pm -n '__fish_seen_subcommand_from guide' -l list -d 'Show guide topic index'
@@ -1586,8 +1601,8 @@ complete -c pm -n '__fish_seen_subcommand_from guide' -l depth -d 'Guide det
1586
1601
  complete -c pm -n '__fish_seen_subcommand_from guide' -a '${guideTopicChoices}' -d 'Guide topic'
1587
1602
 
1588
1603
  # reindex flags
1589
- complete -c pm -n '__fish_seen_subcommand_from reindex' -l mode -d 'Reindex mode' -r -a 'keyword semantic hybrid'
1590
- complete -c pm -n '__fish_seen_subcommand_from reindex' -l progress -d 'Emit progress updates to stderr'
1604
+ complete -c pm -n '__pm_history_operation reindex' -l mode -d 'Reindex mode' -r -a 'keyword semantic hybrid'
1605
+ complete -c pm -n '__pm_history_operation reindex' -l progress -d 'Emit progress updates to stderr'
1591
1606
 
1592
1607
  # get flags
1593
1608
  complete -c pm -n '__fish_seen_subcommand_from get' -l depth -d 'Detail depth' -r -a 'brief standard deep full'
@@ -1616,9 +1631,12 @@ function __pm_history_tokens
1616
1631
  printf '%s\\n' --
1617
1632
  return
1618
1633
  end
1634
+ if test $positions -eq 0; and test "$token" = ctx
1635
+ set token context
1636
+ end
1619
1637
  printf '%s\\n' "$token"
1620
1638
  set positions (math $positions + 1)
1621
- if test $positions -eq 2; or test "$token" != history
1639
+ if test $positions -eq 2; or not contains -- "$token" ${NAMESPACE_NOUNS.join(" ")}
1622
1640
  return
1623
1641
  end
1624
1642
  end
@@ -1630,13 +1648,14 @@ end
1630
1648
  # Match only the command positions, keeping item history separate from maintenance.
1631
1649
  function __pm_history_operation
1632
1650
  set -l tokens (__pm_history_tokens)
1633
- if test "$tokens[1]" = history; and contains -- "$tokens[2]" ${HISTORY_LEAVES}
1634
- test "$tokens[2]" = "$argv[2]"
1635
- else
1636
- test "$tokens[1]" = "$argv[1]"
1651
+ switch "$tokens[1] $tokens[2]"
1652
+ ${PM_NAMESPACED_COMMAND_ALIASES.map(entry=>` case '${entry.canonical}'
1653
+ contains -- '${entry.alias}' $argv
1654
+ return`).join("\n")}
1637
1655
  end
1656
+ contains -- "$tokens[1]" $argv
1638
1657
  end
1639
- complete -c pm -n 'test (count (__pm_history_tokens)) -eq 1; and __pm_history_operation history' -a '${HISTORY_LEAVES}' -d 'History operation'
1658
+ ${Object.entries(NAMESPACE_LEAVES).map(([noun,leaves])=>`complete -c pm -n 'test (count (__pm_history_tokens)) -eq 1; and __pm_history_operation ${noun}' -a '${leaves}' -d '${noun} operation'`).join("\n")}
1640
1659
  ${RESTORE_INVOCATIONS.map(flag=>`complete -c pm -n '__pm_history_operation restore restore' -l ${flag.flag.slice(2)}${flag.takes_value?" -r":""}`).join("\n")}
1641
1660
 
1642
1661
  # history / activity flags
@@ -1651,19 +1670,19 @@ complete -c pm -n '__pm_history_operation history' -l provenance-filter -d 'Fil
1651
1670
  complete -c pm -n '__pm_history_operation history' -l diff -d 'Include per-entry field-level before/after value diffs'
1652
1671
  complete -c pm -n '__pm_history_operation history' -l field -d 'With --diff, show only entries that changed this field' -r
1653
1672
  complete -c pm -n '__pm_history_operation history' -l verify -d 'Verify history hash chain and replay integrity'
1654
- complete -c pm -n '__fish_seen_subcommand_from events' -l since -d 'Resume after a cursor or from an ISO timestamp' -r
1655
- complete -c pm -n '__fish_seen_subcommand_from events' -l type -d 'Filter by mutation operation' -r
1656
- complete -c pm -n '__fish_seen_subcommand_from events' -l author -d 'Filter by mutation author' -r
1657
- complete -c pm -n '__fish_seen_subcommand_from events' -l item -d 'Filter by item or workspace stream' -r
1658
- complete -c pm -n '__fish_seen_subcommand_from events' -l limit -d 'Maximum events, up to 1000' -r
1659
- complete -c pm -n '__fish_seen_subcommand_from events' -l full -d 'Include complete authoritative history entries'
1660
- complete -c pm -n '__fish_seen_subcommand_from events' -l provenance -d 'Include patch-free identity and agent provenance'
1661
- complete -c pm -n '__fish_seen_subcommand_from events' -l provenance-summary -d 'Include bounded provenance completeness counts'
1662
- complete -c pm -n '__fish_seen_subcommand_from events' -l harness -d 'Filter by recorded or vocabulary-resolved harness' -r
1663
- complete -c pm -n '__fish_seen_subcommand_from events' -l agent-instance -d 'Filter by privacy-safe agent instance' -r
1664
- complete -c pm -n '__fish_seen_subcommand_from events' -l provenance-filter -d 'Filter by exact declared provenance value' -r
1665
- complete -c pm -n '__fish_seen_subcommand_from events' -l follow -d 'Continue emitting committed events'
1666
- complete -c pm -n '__fish_seen_subcommand_from events' -l interval-ms -d 'Empty-read delay while following' -r
1673
+ complete -c pm -n '__pm_history_operation events' -l since -d 'Resume after a cursor or from an ISO timestamp' -r
1674
+ complete -c pm -n '__pm_history_operation events' -l type -d 'Filter by mutation operation' -r
1675
+ complete -c pm -n '__pm_history_operation events' -l author -d 'Filter by mutation author' -r
1676
+ complete -c pm -n '__pm_history_operation events' -l item -d 'Filter by item or workspace stream' -r
1677
+ complete -c pm -n '__pm_history_operation events' -l limit -d 'Maximum events, up to 1000' -r
1678
+ complete -c pm -n '__pm_history_operation events' -l full -d 'Include complete authoritative history entries'
1679
+ complete -c pm -n '__pm_history_operation events' -l provenance -d 'Include patch-free identity and agent provenance'
1680
+ complete -c pm -n '__pm_history_operation events' -l provenance-summary -d 'Include bounded provenance completeness counts'
1681
+ complete -c pm -n '__pm_history_operation events' -l harness -d 'Filter by recorded or vocabulary-resolved harness' -r
1682
+ complete -c pm -n '__pm_history_operation events' -l agent-instance -d 'Filter by privacy-safe agent instance' -r
1683
+ complete -c pm -n '__pm_history_operation events' -l provenance-filter -d 'Filter by exact declared provenance value' -r
1684
+ complete -c pm -n '__pm_history_operation events' -l follow -d 'Continue emitting committed events'
1685
+ complete -c pm -n '__pm_history_operation events' -l interval-ms -d 'Empty-read delay while following' -r
1667
1686
  complete -c pm -n '__pm_history_operation history-compact compact' -l before -d 'Compact entries strictly before this version number or ISO timestamp' -r
1668
1687
  complete -c pm -n '__pm_history_operation history-compact compact' -l id -d 'Item ID (alternative to positional ID)' -r
1669
1688
  complete -c pm -n '__pm_history_operation history-compact compact' -l ids -d 'Bulk: compact an explicit comma-separated list of item ids' -r
@@ -1699,7 +1718,12 @@ complete -c pm -n '__pm_history_operation history-repair repair' -l dry-run -d '
1699
1718
  complete -c pm -n '__pm_history_operation history-repair repair' -l author -d 'Mutation author' -r
1700
1719
  complete -c pm -n '__pm_history_operation history-repair repair' -l message -d 'Audit history message' -r
1701
1720
  complete -c pm -n '__pm_history_operation history-repair repair' -l force -d 'Force ownership/lock override'
1702
- complete -c pm -n '__fish_seen_subcommand_from schema' -a 'list show show-status add-type remove-type add-status remove-status add-field remove-field list-fields show-field apply-preset rename-type rename-field remap-status' -d 'Schema subcommand'
1721
+ complete -c pm -n '__fish_seen_subcommand_from schema' -a '${SCHEMA_SUBCOMMAND_CHOICES}' -d 'Schema subcommand'
1722
+ complete -c pm -n '__fish_seen_subcommand_from schema; and __fish_seen_subcommand_from policy-mode' -a 'advise refuse' -d 'Policy enforcement'
1723
+ complete -c pm -n '__fish_seen_subcommand_from schema' -l definition -d 'Policy definition or proposed fields JSON' -r
1724
+ complete -c pm -n '__fish_seen_subcommand_from schema' -l policy -d 'Approval policy id' -r
1725
+ complete -c pm -n '__fish_seen_subcommand_from schema' -l message -d 'History rationale' -r
1726
+ complete -c pm -n '__fish_seen_subcommand_from schema' -l dry-run -d 'Preview schema changes'
1703
1727
  complete -c pm -n '__fish_seen_subcommand_from schema' -l description -d 'Human description for the custom item type, status, or field' -r
1704
1728
  complete -c pm -n '__fish_seen_subcommand_from schema' -l default-status -d 'Default status hint for the custom item type' -r
1705
1729
  complete -c pm -n '__fish_seen_subcommand_from schema' -l folder -d 'Storage folder for items of this custom type' -r
@@ -1845,23 +1869,23 @@ complete -c pm -n '__fish_seen_subcommand_from test' -l message -d 'History mess
1845
1869
  complete -c pm -n '__fish_seen_subcommand_from test' -l force -d 'Force override'
1846
1870
 
1847
1871
  # test-all flags
1848
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l status -d 'Filter by status' -r -a 'open in_progress'
1849
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l limit -d 'Limit matching items before running linked tests' -r
1850
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l offset -d 'Skip matching items before running linked tests' -r
1851
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l background -d 'Run linked tests in managed background mode'
1852
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l timeout -d 'Default timeout seconds' -r
1853
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l progress -d 'Emit linked-test progress to stderr'
1854
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l env-set -d 'Set linked-test runtime environment values' -r
1855
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l env-clear -d 'Clear linked-test runtime environment values' -r
1856
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l shared-host-safe -d 'Apply shared-host-safe runtime defaults'
1857
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l pm-context -d 'PM linked-test context mode' -r -a 'schema tracker auto'
1858
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l override-linked-pm-context -d 'Force run-level --pm-context over per-linked-test metadata'
1859
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l fail-on-context-mismatch -d 'Fail when context item counts mismatch'
1860
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l fail-on-skipped -d 'Treat skipped linked tests as dependency failures'
1861
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l fail-on-empty-test-run -d 'Treat empty linked-test selections as failures'
1862
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l require-assertions-for-pm -d 'Require assertions for linked PM command tests'
1863
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l check-context -d 'Preflight linked PM command context diagnostics before execution'
1864
- complete -c pm -n '__fish_seen_subcommand_from test-all' -l auto-pm-context -d 'Auto-remediate tracker-read context mismatches using tracker context'
1872
+ complete -c pm -n '__pm_history_operation test-all' -l status -d 'Filter by status' -r -a 'open in_progress'
1873
+ complete -c pm -n '__pm_history_operation test-all' -l limit -d 'Limit matching items before running linked tests' -r
1874
+ complete -c pm -n '__pm_history_operation test-all' -l offset -d 'Skip matching items before running linked tests' -r
1875
+ complete -c pm -n '__pm_history_operation test-all' -l background -d 'Run linked tests in managed background mode'
1876
+ complete -c pm -n '__pm_history_operation test-all' -l timeout -d 'Default timeout seconds' -r
1877
+ complete -c pm -n '__pm_history_operation test-all' -l progress -d 'Emit linked-test progress to stderr'
1878
+ complete -c pm -n '__pm_history_operation test-all' -l env-set -d 'Set linked-test runtime environment values' -r
1879
+ complete -c pm -n '__pm_history_operation test-all' -l env-clear -d 'Clear linked-test runtime environment values' -r
1880
+ complete -c pm -n '__pm_history_operation test-all' -l shared-host-safe -d 'Apply shared-host-safe runtime defaults'
1881
+ complete -c pm -n '__pm_history_operation test-all' -l pm-context -d 'PM linked-test context mode' -r -a 'schema tracker auto'
1882
+ complete -c pm -n '__pm_history_operation test-all' -l override-linked-pm-context -d 'Force run-level --pm-context over per-linked-test metadata'
1883
+ complete -c pm -n '__pm_history_operation test-all' -l fail-on-context-mismatch -d 'Fail when context item counts mismatch'
1884
+ complete -c pm -n '__pm_history_operation test-all' -l fail-on-skipped -d 'Treat skipped linked tests as dependency failures'
1885
+ complete -c pm -n '__pm_history_operation test-all' -l fail-on-empty-test-run -d 'Treat empty linked-test selections as failures'
1886
+ complete -c pm -n '__pm_history_operation test-all' -l require-assertions-for-pm -d 'Require assertions for linked PM command tests'
1887
+ complete -c pm -n '__pm_history_operation test-all' -l check-context -d 'Preflight linked PM command context diagnostics before execution'
1888
+ complete -c pm -n '__pm_history_operation test-all' -l auto-pm-context -d 'Auto-remediate tracker-read context mismatches using tracker context'
1865
1889
 
1866
1890
  # test-runs flags
1867
1891
  complete -c pm -n '__fish_seen_subcommand_from test-runs' -a 'list status logs stop resume' -d 'test-runs subcommand'
@@ -1873,19 +1897,19 @@ complete -c pm -n '__fish_seen_subcommand_from test-runs' -l force -d 'Force-sto
1873
1897
  complete -c pm -n '__fish_seen_subcommand_from test-runs' -l author -d 'Resume author' -r
1874
1898
 
1875
1899
  # gc flags
1876
- complete -c pm -n '__fish_seen_subcommand_from gc' -l dry-run -d 'Preview cleanup targets without deleting files'
1877
- complete -c pm -n '__fish_seen_subcommand_from gc' -l scope -d 'Limit cleanup to index/embeddings/runtime/locks scopes' -r
1900
+ complete -c pm -n '__pm_history_operation gc' -l dry-run -d 'Preview cleanup targets without deleting files'
1901
+ complete -c pm -n '__pm_history_operation gc' -l scope -d 'Limit cleanup to index/embeddings/runtime/locks scopes' -r
1878
1902
 
1879
1903
  # stats flags
1880
- complete -c pm -n '__fish_seen_subcommand_from stats' -l include-empty -d 'Include registered zero-count type and status buckets'
1881
- complete -c pm -n '__fish_seen_subcommand_from stats' -l storage -d 'Include aggregate history-stream storage metrics'
1882
- complete -c pm -n '__fish_seen_subcommand_from stats' -l metadata-coverage -d 'Include metadata coverage percentages overall and by type'
1883
- complete -c pm -n '__fish_seen_subcommand_from stats' -l field-utilization -d 'Include content-field utilization rates across all items'
1884
- complete -c pm -n '__fish_seen_subcommand_from stats' -l by-assignee -d 'Lifecycle-bucketed breakdown grouped by assignee'
1885
- complete -c pm -n '__fish_seen_subcommand_from stats' -l by-tag -d 'Lifecycle-bucketed breakdown grouped by tag'
1886
- complete -c pm -n '__fish_seen_subcommand_from stats' -l by-priority -d 'Lifecycle-bucketed breakdown grouped by priority'
1887
- complete -c pm -n '__fish_seen_subcommand_from stats' -l tag-prefix -d 'With --by-tag: only count tags with this prefix' -r
1888
- complete -c pm -n '__fish_seen_subcommand_from stats' -l analytics -d 'Improvement ledger/history analytics JSON' -r
1904
+ complete -c pm -n '__pm_history_operation stats' -l include-empty -d 'Include registered zero-count type and status buckets'
1905
+ complete -c pm -n '__pm_history_operation stats' -l storage -d 'Include aggregate history-stream storage metrics'
1906
+ complete -c pm -n '__pm_history_operation stats' -l metadata-coverage -d 'Include metadata coverage percentages overall and by type'
1907
+ complete -c pm -n '__pm_history_operation stats' -l field-utilization -d 'Include content-field utilization rates across all items'
1908
+ complete -c pm -n '__pm_history_operation stats' -l by-assignee -d 'Lifecycle-bucketed breakdown grouped by assignee'
1909
+ complete -c pm -n '__pm_history_operation stats' -l by-tag -d 'Lifecycle-bucketed breakdown grouped by tag'
1910
+ complete -c pm -n '__pm_history_operation stats' -l by-priority -d 'Lifecycle-bucketed breakdown grouped by priority'
1911
+ complete -c pm -n '__pm_history_operation stats' -l tag-prefix -d 'With --by-tag: only count tags with this prefix' -r
1912
+ complete -c pm -n '__pm_history_operation stats' -l analytics -d 'Improvement ledger/history analytics JSON' -r
1889
1913
 
1890
1914
  # append flags
1891
1915
  complete -c pm -n '__fish_seen_subcommand_from append' -s b -l body -d 'Item body' -r
@@ -1894,22 +1918,25 @@ complete -c pm -n '__fish_seen_subcommand_from append' -l message -d 'History me
1894
1918
  complete -c pm -n '__fish_seen_subcommand_from append' -l force -d 'Force override'
1895
1919
 
1896
1920
  # close flags
1897
- complete -c pm -n '__fish_seen_subcommand_from claim release start-task pause-task close close-task delete' -l author -d 'Mutation author' -r
1898
- complete -c pm -n '__fish_seen_subcommand_from claim release start-task pause-task close close-task delete' -l message -d 'History message' -r
1899
- complete -c pm -n '__fish_seen_subcommand_from claim release start-task pause-task close close-task delete' -l force -d 'Force override'
1921
+ complete -c pm -n '__pm_history_operation close' -l release-assignment -d 'Close and release assignment'
1922
+ complete -c pm -n '__pm_history_operation release' -l pause -d 'Return to open and release ownership'
1923
+ complete -c pm -n '__pm_history_operation claim' -l start -d 'Claim and start work'
1924
+ complete -c pm -n '__pm_history_operation claim release start-task pause-task close close-task delete' -l author -d 'Mutation author' -r
1925
+ complete -c pm -n '__pm_history_operation claim release start-task pause-task close close-task delete' -l message -d 'History message' -r
1926
+ complete -c pm -n '__pm_history_operation claim release start-task pause-task close close-task delete' -l force -d 'Force override'
1900
1927
  complete -c pm -n '__fish_seen_subcommand_from claim' -l if-available -d 'Skip work held by another author'
1901
1928
  complete -c pm -n '__fish_seen_subcommand_from claim' -l next -d 'Atomically claim the next actionable item'
1902
1929
  complete -c pm -n '__fish_seen_subcommand_from claim' -l token-budget -d 'Bound ranked candidate tokens' -r
1903
1930
  complete -c pm -n '__fish_seen_subcommand_from claim' -l explain-ranking -d 'Include ranking provenance'
1904
- complete -c pm -n '__fish_seen_subcommand_from close close-task' -l validate-close -d 'Validate closure metadata mode' -r -a 'off warn strict'
1905
- complete -c pm -n '__fish_seen_subcommand_from close' -l reason -d 'Closure reason' -r
1906
- complete -c pm -n '__fish_seen_subcommand_from close' -l close-reason -d 'Alias for --reason' -r
1907
- complete -c pm -n '__fish_seen_subcommand_from close' -l resolution -d 'Closure resolution summary' -r
1908
- complete -c pm -n '__fish_seen_subcommand_from close' -l expected-result -d 'Expected behavior note' -r
1909
- complete -c pm -n '__fish_seen_subcommand_from close' -l actual-result -d 'Observed behavior note' -r
1910
- complete -c pm -n '__fish_seen_subcommand_from close' -l expected -d 'Short alias for --expected-result' -r
1911
- complete -c pm -n '__fish_seen_subcommand_from close' -l actual -d 'Short alias for --actual-result' -r
1912
- complete -c pm -n '__fish_seen_subcommand_from delete' -l dry-run -d 'Preview the item file that would be deleted without mutating'
1931
+ complete -c pm -n '__pm_history_operation close close-task' -l validate-close -d 'Validate closure metadata mode' -r -a 'off warn strict'
1932
+ complete -c pm -n '__pm_history_operation close' -l reason -d 'Closure reason' -r
1933
+ complete -c pm -n '__pm_history_operation close' -l close-reason -d 'Alias for --reason' -r
1934
+ complete -c pm -n '__pm_history_operation close' -l resolution -d 'Closure resolution summary' -r
1935
+ complete -c pm -n '__pm_history_operation close' -l expected-result -d 'Expected behavior note' -r
1936
+ complete -c pm -n '__pm_history_operation close' -l actual-result -d 'Observed behavior note' -r
1937
+ complete -c pm -n '__pm_history_operation close' -l expected -d 'Short alias for --expected-result' -r
1938
+ complete -c pm -n '__pm_history_operation close' -l actual -d 'Short alias for --actual-result' -r
1939
+ complete -c pm -n '__pm_history_operation delete' -l dry-run -d 'Preview the item file that would be deleted without mutating'
1913
1940
 
1914
1941
  # scheduling shortcut flags (meet/event/remind)
1915
1942
  complete -c pm -n '__fish_seen_subcommand_from meet event' -l start -d 'Start time (ISO, now, or relative)' -r
@@ -1930,84 +1957,85 @@ complete -c pm -n '__fish_seen_subcommand_from meet event remind' -l author -d '
1930
1957
  complete -c pm -n '__fish_seen_subcommand_from meet event remind' -l message -d 'History message' -r
1931
1958
 
1932
1959
  # close-many flags
1933
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-status -d 'Filter by status before closing' -r -a '${statusChoices}'
1934
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-type -d 'Filter by type before closing' -r -a '${typeChoices}'
1935
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-tag -d 'Filter by tag before closing' -r -a ${fishTagChoices}
1936
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-priority -d 'Filter by priority before closing' -r -a '0 1 2 3 4'
1937
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-deadline-before -d 'Filter by deadline upper bound' -r
1938
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-deadline-after -d 'Filter by deadline lower bound' -r
1939
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-updated-after -d 'Filter by updated_at lower bound (ISO/relative)' -r
1940
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-updated-before -d 'Filter by updated_at upper bound (ISO/relative)' -r
1941
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-created-after -d 'Filter by created_at lower bound (ISO/relative)' -r
1942
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-created-before -d 'Filter by created_at upper bound (ISO/relative)' -r
1943
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-assignee -d 'Filter by assignee before closing' -r
1944
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-assignee-filter -d 'Filter assignee presence' -r -a 'assigned unassigned'
1945
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-parent -d 'Filter by parent item ID' -r
1946
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-sprint -d 'Filter by sprint before closing' -r
1947
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-release -d 'Filter by release before closing' -r
1948
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-reviewer-missing -d 'Select only items missing reviewer'
1949
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-risk-missing -d 'Select only items missing risk'
1950
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-confidence-missing -d 'Select only items missing confidence'
1951
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-sprint-missing -d 'Select only items missing sprint'
1952
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-release-missing -d 'Select only items missing release'
1953
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-has-notes -d 'Select only items that have notes'
1954
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-no-notes -d 'Select only items with no notes'
1955
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-has-learnings -d 'Select only items that have learnings'
1956
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-no-learnings -d 'Select only items with no learnings'
1957
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-has-files -d 'Select only items that have linked files'
1958
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-no-files -d 'Select only items with no linked files'
1959
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-has-docs -d 'Select only items that have linked docs'
1960
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-no-docs -d 'Select only items with no linked docs'
1961
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-has-tests -d 'Select only items that have linked tests'
1962
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-no-tests -d 'Select only items with no linked tests'
1963
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-has-comments -d 'Select only items that have comments'
1964
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-no-comments -d 'Select only items with no comments'
1965
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-has-deps -d 'Select only items that have dependencies'
1966
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-no-deps -d 'Select only items with no dependencies'
1967
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-has-body -d 'Select only items with non-empty body'
1968
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-empty-body -d 'Select only items with empty body'
1969
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-has-linked-command -d 'Select only items that have a linked command'
1970
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l filter-no-linked-command -d 'Select only items with no linked command'
1971
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l ids -d 'Explicit comma-separated ID allowlist' -r
1972
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l limit -d 'Limit matched item count' -r
1973
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l offset -d 'Skip first n matched rows' -r
1974
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l reason -d 'Optional shared close reason applied to every matched item' -r
1975
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l resolution -d 'Shared closure resolution' -r
1976
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l expected-result -d 'Shared expected-result note' -r
1977
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l actual-result -d 'Shared actual-result note' -r
1978
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l expected -d 'Short alias for --expected-result' -r
1979
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l actual -d 'Short alias for --actual-result' -r
1980
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l validate-close -d 'Validate closure metadata per item' -r -a 'off warn strict'
1981
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l author -d 'Mutation author' -r
1982
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l message -d 'History message' -r
1983
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l force -d 'Re-close terminal matches and override ownership'
1984
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l dry-run -d 'Preview matched items without mutating'
1985
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l rollback -d 'Rollback checkpoint ID' -r
1986
- complete -c pm -n '__fish_seen_subcommand_from close-many' -l no-checkpoint -d 'Disable checkpoint creation during apply mode'
1960
+ complete -c pm -n '__pm_history_operation close-many' -l filter-status -d 'Filter by status before closing' -r -a '${statusChoices}'
1961
+ complete -c pm -n '__pm_history_operation close-many' -l filter-type -d 'Filter by type before closing' -r -a '${typeChoices}'
1962
+ complete -c pm -n '__pm_history_operation close-many' -l filter-tag -d 'Filter by tag before closing' -r -a ${fishTagChoices}
1963
+ complete -c pm -n '__pm_history_operation close-many' -l filter-priority -d 'Filter by priority before closing' -r -a '0 1 2 3 4'
1964
+ complete -c pm -n '__pm_history_operation close-many' -l filter-deadline-before -d 'Filter by deadline upper bound' -r
1965
+ complete -c pm -n '__pm_history_operation close-many' -l filter-deadline-after -d 'Filter by deadline lower bound' -r
1966
+ complete -c pm -n '__pm_history_operation close-many' -l filter-updated-after -d 'Filter by updated_at lower bound (ISO/relative)' -r
1967
+ complete -c pm -n '__pm_history_operation close-many' -l filter-updated-before -d 'Filter by updated_at upper bound (ISO/relative)' -r
1968
+ complete -c pm -n '__pm_history_operation close-many' -l filter-created-after -d 'Filter by created_at lower bound (ISO/relative)' -r
1969
+ complete -c pm -n '__pm_history_operation close-many' -l filter-created-before -d 'Filter by created_at upper bound (ISO/relative)' -r
1970
+ complete -c pm -n '__pm_history_operation close-many' -l filter-assignee -d 'Filter by assignee before closing' -r
1971
+ complete -c pm -n '__pm_history_operation close-many' -l filter-assignee-filter -d 'Filter assignee presence' -r -a 'assigned unassigned'
1972
+ complete -c pm -n '__pm_history_operation close-many' -l filter-parent -d 'Filter by parent item ID' -r
1973
+ complete -c pm -n '__pm_history_operation close-many' -l filter-sprint -d 'Filter by sprint before closing' -r
1974
+ complete -c pm -n '__pm_history_operation close-many' -l filter-release -d 'Filter by release before closing' -r
1975
+ complete -c pm -n '__pm_history_operation close-many' -l filter-reviewer-missing -d 'Select only items missing reviewer'
1976
+ complete -c pm -n '__pm_history_operation close-many' -l filter-risk-missing -d 'Select only items missing risk'
1977
+ complete -c pm -n '__pm_history_operation close-many' -l filter-confidence-missing -d 'Select only items missing confidence'
1978
+ complete -c pm -n '__pm_history_operation close-many' -l filter-sprint-missing -d 'Select only items missing sprint'
1979
+ complete -c pm -n '__pm_history_operation close-many' -l filter-release-missing -d 'Select only items missing release'
1980
+ complete -c pm -n '__pm_history_operation close-many' -l filter-has-notes -d 'Select only items that have notes'
1981
+ complete -c pm -n '__pm_history_operation close-many' -l filter-no-notes -d 'Select only items with no notes'
1982
+ complete -c pm -n '__pm_history_operation close-many' -l filter-has-learnings -d 'Select only items that have learnings'
1983
+ complete -c pm -n '__pm_history_operation close-many' -l filter-no-learnings -d 'Select only items with no learnings'
1984
+ complete -c pm -n '__pm_history_operation close-many' -l filter-has-files -d 'Select only items that have linked files'
1985
+ complete -c pm -n '__pm_history_operation close-many' -l filter-no-files -d 'Select only items with no linked files'
1986
+ complete -c pm -n '__pm_history_operation close-many' -l filter-has-docs -d 'Select only items that have linked docs'
1987
+ complete -c pm -n '__pm_history_operation close-many' -l filter-no-docs -d 'Select only items with no linked docs'
1988
+ complete -c pm -n '__pm_history_operation close-many' -l filter-has-tests -d 'Select only items that have linked tests'
1989
+ complete -c pm -n '__pm_history_operation close-many' -l filter-no-tests -d 'Select only items with no linked tests'
1990
+ complete -c pm -n '__pm_history_operation close-many' -l filter-has-comments -d 'Select only items that have comments'
1991
+ complete -c pm -n '__pm_history_operation close-many' -l filter-no-comments -d 'Select only items with no comments'
1992
+ complete -c pm -n '__pm_history_operation close-many' -l filter-has-deps -d 'Select only items that have dependencies'
1993
+ complete -c pm -n '__pm_history_operation close-many' -l filter-no-deps -d 'Select only items with no dependencies'
1994
+ complete -c pm -n '__pm_history_operation close-many' -l filter-has-body -d 'Select only items with non-empty body'
1995
+ complete -c pm -n '__pm_history_operation close-many' -l filter-empty-body -d 'Select only items with empty body'
1996
+ complete -c pm -n '__pm_history_operation close-many' -l filter-has-linked-command -d 'Select only items that have a linked command'
1997
+ complete -c pm -n '__pm_history_operation close-many' -l filter-no-linked-command -d 'Select only items with no linked command'
1998
+ complete -c pm -n '__pm_history_operation close-many' -l ids -d 'Explicit comma-separated ID allowlist' -r
1999
+ complete -c pm -n '__pm_history_operation close-many' -l limit -d 'Limit matched item count' -r
2000
+ complete -c pm -n '__pm_history_operation close-many' -l offset -d 'Skip first n matched rows' -r
2001
+ complete -c pm -n '__pm_history_operation close-many' -l reason -d 'Optional shared close reason applied to every matched item' -r
2002
+ complete -c pm -n '__pm_history_operation close-many' -l resolution -d 'Shared closure resolution' -r
2003
+ complete -c pm -n '__pm_history_operation close-many' -l expected-result -d 'Shared expected-result note' -r
2004
+ complete -c pm -n '__pm_history_operation close-many' -l actual-result -d 'Shared actual-result note' -r
2005
+ complete -c pm -n '__pm_history_operation close-many' -l expected -d 'Short alias for --expected-result' -r
2006
+ complete -c pm -n '__pm_history_operation close-many' -l actual -d 'Short alias for --actual-result' -r
2007
+ complete -c pm -n '__pm_history_operation close-many' -l validate-close -d 'Validate closure metadata per item' -r -a 'off warn strict'
2008
+ complete -c pm -n '__pm_history_operation close-many' -l author -d 'Mutation author' -r
2009
+ complete -c pm -n '__pm_history_operation close-many' -l message -d 'History message' -r
2010
+ complete -c pm -n '__pm_history_operation close-many' -l force -d 'Re-close terminal matches and override ownership'
2011
+ complete -c pm -n '__pm_history_operation close-many' -l dry-run -d 'Preview matched items without mutating'
2012
+ complete -c pm -n '__pm_history_operation close-many' -l rollback -d 'Rollback checkpoint ID' -r
2013
+ complete -c pm -n '__pm_history_operation close-many' -l no-checkpoint -d 'Disable checkpoint creation during apply mode'
1987
2014
 
1988
2015
  # validate flags
1989
- complete -c pm -n '__fish_seen_subcommand_from validate' -l check-metadata -d 'Run metadata completeness checks'
1990
- complete -c pm -n '__fish_seen_subcommand_from validate' -l metadata-profile -d 'Select metadata validation profile for --check-metadata' -r -a 'core strict custom'
1991
- complete -c pm -n '__fish_seen_subcommand_from validate' -l check-resolution -d 'Run closed-item resolution metadata checks'
1992
- complete -c pm -n '__fish_seen_subcommand_from validate' -l check-lifecycle -d 'Run active-item lifecycle governance drift checks'
1993
- complete -c pm -n '__fish_seen_subcommand_from validate' -l check-stale-blockers -d 'Include stale blocker-pattern diagnostics in lifecycle checks'
1994
- complete -c pm -n '__fish_seen_subcommand_from validate' -l dependency-cycle-severity -d 'Set dependency-cycle warning policy for lifecycle checks' -r -a 'off warn error'
1995
- complete -c pm -n '__fish_seen_subcommand_from validate' -l parent-cycle-severity -d 'Set parent-hierarchy cycle warning policy for lifecycle checks' -r -a 'off warn error'
1996
- complete -c pm -n '__fish_seen_subcommand_from validate' -l check-files -d 'Run linked-file and orphaned-file checks'
1997
- complete -c pm -n '__fish_seen_subcommand_from validate' -l scan-mode -d 'Select file candidate scan mode for --check-files' -r -a 'default tracked-all tracked-all-strict'
1998
- complete -c pm -n '__fish_seen_subcommand_from validate' -l include-pm-internals -d 'Include PM storage internals in tracked-all candidate scans'
1999
- complete -c pm -n '__fish_seen_subcommand_from validate' -l verbose-file-lists -d 'Include full file-path lists for validate --check-files details'
2000
- complete -c pm -n '__fish_seen_subcommand_from validate' -l verbose-diagnostics -d 'Include full validate diagnostic ID lists instead of compact summaries'
2001
- complete -c pm -n '__fish_seen_subcommand_from validate' -l all-affected-ids -d 'Emit complete missing_* affected-ID lists with no truncation (implied by --json)'
2002
- complete -c pm -n '__fish_seen_subcommand_from validate' -l strict-exit -d 'Return non-zero exit when validation warnings are present'
2003
- complete -c pm -n '__fish_seen_subcommand_from validate' -l fail-on-warn -d 'Alias for --strict-exit'
2004
- complete -c pm -n '__fish_seen_subcommand_from validate' -l fix-hints -d 'Add a machine-executable fix_hints[] of pm commands to each failing check'
2005
- complete -c pm -n '__fish_seen_subcommand_from validate' -l auto-fix -d 'Apply the safe, deterministic subset of fix-hint remediations automatically'
2006
- complete -c pm -n '__fish_seen_subcommand_from validate' -l dry-run -d 'Preview planned --auto-fix/--prune-missing fixes without applying them'
2007
- complete -c pm -n '__fish_seen_subcommand_from validate' -l fix-scope -d 'Grant --auto-fix scopes (estimates/lifecycle must be named explicitly)' -r -a 'metadata resolution estimates lifecycle'
2008
- complete -c pm -n '__fish_seen_subcommand_from validate' -l prune-missing -d 'Remove stale linked-file/doc links classified as deleted'
2009
- complete -c pm -n '__fish_seen_subcommand_from validate' -l check-history-drift -d 'Run item/history hash drift checks'
2010
- complete -c pm -n '__fish_seen_subcommand_from validate' -l check-command-references -d 'Run linked-command PM-ID reference checks'
2016
+ complete -c pm -n '__pm_history_operation validate' -l check-completeness -d 'Check declarative required fields'
2017
+ complete -c pm -n '__pm_history_operation validate' -l check-metadata -d 'Run metadata completeness checks'
2018
+ complete -c pm -n '__pm_history_operation validate' -l metadata-profile -d 'Select metadata validation profile for --check-metadata' -r -a 'core strict custom'
2019
+ complete -c pm -n '__pm_history_operation validate' -l check-resolution -d 'Run closed-item resolution metadata checks'
2020
+ complete -c pm -n '__pm_history_operation validate' -l check-lifecycle -d 'Run active-item lifecycle governance drift checks'
2021
+ complete -c pm -n '__pm_history_operation validate' -l check-stale-blockers -d 'Include stale blocker-pattern diagnostics in lifecycle checks'
2022
+ complete -c pm -n '__pm_history_operation validate' -l dependency-cycle-severity -d 'Set dependency-cycle warning policy for lifecycle checks' -r -a 'off warn error'
2023
+ complete -c pm -n '__pm_history_operation validate' -l parent-cycle-severity -d 'Set parent-hierarchy cycle warning policy for lifecycle checks' -r -a 'off warn error'
2024
+ complete -c pm -n '__pm_history_operation validate' -l check-files -d 'Run linked-file and orphaned-file checks'
2025
+ complete -c pm -n '__pm_history_operation validate' -l scan-mode -d 'Select file candidate scan mode for --check-files' -r -a 'default tracked-all tracked-all-strict'
2026
+ complete -c pm -n '__pm_history_operation validate' -l include-pm-internals -d 'Include PM storage internals in tracked-all candidate scans'
2027
+ complete -c pm -n '__pm_history_operation validate' -l verbose-file-lists -d 'Include full file-path lists for validate --check-files details'
2028
+ complete -c pm -n '__pm_history_operation validate' -l verbose-diagnostics -d 'Include full validate diagnostic ID lists instead of compact summaries'
2029
+ complete -c pm -n '__pm_history_operation validate' -l all-affected-ids -d 'Emit complete missing_* affected-ID lists with no truncation (implied by --json)'
2030
+ complete -c pm -n '__pm_history_operation validate' -l strict-exit -d 'Return non-zero exit when validation warnings are present'
2031
+ complete -c pm -n '__pm_history_operation validate' -l fail-on-warn -d 'Alias for --strict-exit'
2032
+ complete -c pm -n '__pm_history_operation validate' -l fix-hints -d 'Add a machine-executable fix_hints[] of pm commands to each failing check'
2033
+ complete -c pm -n '__pm_history_operation validate' -l auto-fix -d 'Apply the safe, deterministic subset of fix-hint remediations automatically'
2034
+ complete -c pm -n '__pm_history_operation validate' -l dry-run -d 'Preview planned --auto-fix/--prune-missing fixes without applying them'
2035
+ complete -c pm -n '__pm_history_operation validate' -l fix-scope -d 'Grant --auto-fix scopes (estimates/lifecycle must be named explicitly)' -r -a 'metadata resolution estimates lifecycle'
2036
+ complete -c pm -n '__pm_history_operation validate' -l prune-missing -d 'Remove stale linked-file/doc links classified as deleted'
2037
+ complete -c pm -n '__pm_history_operation validate' -l check-history-drift -d 'Run item/history hash drift checks'
2038
+ complete -c pm -n '__pm_history_operation validate' -l check-command-references -d 'Run linked-command PM-ID reference checks'
2011
2039
  complete -c pm -n '__fish_seen_subcommand_from init' -l preset -d 'Governance preset for new setups' -r -a 'minimal default strict'
2012
2040
  complete -c pm -n '__fish_seen_subcommand_from init' -l id-prefix -d 'Set the item ID prefix' -r
2013
2041
  complete -c pm -n '__fish_seen_subcommand_from init' -l prefix -d 'Alias for --id-prefix' -r
@@ -2022,16 +2050,16 @@ complete -c pm -n '__fish_seen_subcommand_from config' -l criterion -d 'Criteria
2022
2050
  complete -c pm -n '__fish_seen_subcommand_from config' -l clear-criteria -d 'Clear config criteria-list key values'
2023
2051
  complete -c pm -n '__fish_seen_subcommand_from config' -l format -d 'Item format for item-format key' -r -a 'toon'
2024
2052
  complete -c pm -n '__fish_seen_subcommand_from config' -l policy -d 'Policy value for supported policy keys' -r
2025
- complete -c pm -n '__fish_seen_subcommand_from health' -l strict-directories -d 'Treat optional item-type directories as required failures'
2026
- complete -c pm -n '__fish_seen_subcommand_from health' -l check-only -d 'Run read-only health diagnostics without refreshing vectors'
2027
- complete -c pm -n '__fish_seen_subcommand_from health' -l no-refresh -d 'Disable automatic vector refresh attempts during health checks'
2028
- complete -c pm -n '__fish_seen_subcommand_from health' -l refresh-vectors -d 'Explicitly enable vector refresh attempts during health checks'
2029
- complete -c pm -n '__fish_seen_subcommand_from health' -l verbose-stale-items -d 'Include full stale vectorization ID lists in health output'
2030
- complete -c pm -n '__fish_seen_subcommand_from health' -l verbose-author-events -d 'Include complete actionable unknown-author coordinates'
2031
- complete -c pm -n '__fish_seen_subcommand_from health' -l brief -d 'Emit compact health details for low-token agent checks'
2032
- complete -c pm -n '__fish_seen_subcommand_from health' -l summary -d 'Emit one-line-style health status with check names and warning count'
2033
- complete -c pm -n '__fish_seen_subcommand_from health' -l strict-exit -d 'Return non-zero exit when health warnings are present'
2034
- complete -c pm -n '__fish_seen_subcommand_from health' -l fail-on-warn -d 'Alias for --strict-exit'
2053
+ complete -c pm -n '__pm_history_operation health' -l strict-directories -d 'Treat optional item-type directories as required failures'
2054
+ complete -c pm -n '__pm_history_operation health' -l check-only -d 'Run read-only health diagnostics without refreshing vectors'
2055
+ complete -c pm -n '__pm_history_operation health' -l no-refresh -d 'Disable automatic vector refresh attempts during health checks'
2056
+ complete -c pm -n '__pm_history_operation health' -l refresh-vectors -d 'Explicitly enable vector refresh attempts during health checks'
2057
+ complete -c pm -n '__pm_history_operation health' -l verbose-stale-items -d 'Include full stale vectorization ID lists in health output'
2058
+ complete -c pm -n '__pm_history_operation health' -l verbose-author-events -d 'Include complete actionable unknown-author coordinates'
2059
+ complete -c pm -n '__pm_history_operation health' -l brief -d 'Emit compact health details for low-token agent checks'
2060
+ complete -c pm -n '__pm_history_operation health' -l summary -d 'Emit one-line-style health status with check names and warning count'
2061
+ complete -c pm -n '__pm_history_operation health' -l strict-exit -d 'Return non-zero exit when health warnings are present'
2062
+ complete -c pm -n '__pm_history_operation health' -l fail-on-warn -d 'Alias for --strict-exit'
2035
2063
 
2036
2064
  # completion shell argument
2037
2065
  complete -c pm -n '__fish_seen_subcommand_from completion' -l eager-tags -d 'Embed current tracker tags directly in script output'