@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
package/dist/sdk/index.js CHANGED
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b10b19f2-dc4f-5480-99ec-a5c3c45398b5")}catch(e2){}})();import{PM_COMMAND_CAPABILITY_CONTRACTS,PM_COMMAND_VISIBILITY_CONTRACTS,PM_MCP_PROMPT_CONTRACTS,PM_MCP_RESOURCE_CONTRACTS,PM_MCP_TOOL_COMMAND_CONTRACTS,listPmCommandsForFamily,listPmCommandsForTier,listPmMcpToolsForProfile,renderPmCommandVisibilityMarkdown,resolvePmCommandCapabilityFamily,resolvePmCommandVisibilityTier}from"./agent-capability-contracts.js";export*from"./mcp/protocol.js";export*from"./mcp/interactions.js";export*from"./mcp/tasks.js";export*from"./mcp/subscriptions.js";export*from"./mcp/transport.js";export*from"./mcp/authorization.js";export*from"./mcp/apps.js";export*from"./mcp/skills.js";export*from"./cli-contracts/grammar-contracts.js";export*from"./agent-session-context.js";export*from"./environment/agent-environment.js";import{isErrnoError,limitAnnotationEntries,parseAnnotationTextInput,readAnnotationEntries,normalizeAnnotationTransportOptions,resolveAnnotationInput,resolveAnnotationIndex,runAnnotationCommand,wrapOwnershipConflict}from"./annotations.js";import{acknowledgeUnknownAuthorHistoryEvents,acknowledgeUnknownAuthorHistoryEventsFromTransport,inspectHistoryAuthorStream,parseUnknownAuthorHistoryEventCoordinates,planUnknownAuthorHistoryAcknowledgment,resolveUnknownAuthorAcknowledgmentSelector,scanHistoryAuthorAttribution}from"./author-attribution.js";import{BUILTIN_CORPUS_SHAPES,PM_CORPUS_SHAPE_SCHEMA,buildCorpusShapeItemPlan,createCorpusShapeMeasurement,defineCorpusShape,listBuiltinCorpusShapes,measureCorpusShapePlan,resolveBuiltinCorpusShape}from"./corpus-shape.js";export*from"./core-governance.js";import{createPmCliProgram}from"./cli-program.js";import{runSearchRefreshWorkerEntrypoint}from"./search-refresh-worker.js";import{PM_REPRODUCIBLE_PROCESS_ENV,createReproducibleProcessRunner,resolveReproducibleProcessEnvironment,runWithReproducibleProcessEnvironment}from"./reproducibility/process.js";import{PM_WORKSPACE_RECIPE_SCHEMA,defineWorkspaceRecipe,executeWorkspaceRecipe,runWithWorkspaceRecipe}from"./workspace-recipe.js";import{SNAPSHOT_SCHEMA,WORKSPACE_SNAPSHOT_ACTIONS,createWorkspaceSnapshot,deleteWorkspaceSnapshot,inspectWorkspaceSnapshot,listWorkspaceSnapshots,planWorkspaceSnapshotRestore,restoreWorkspaceSnapshot,restoreWorkspaceSnapshotWithRecovery}from"./workspace-snapshot.js";import{flushTelemetryQueue}from"./telemetry-flush.js";import{PM_HISTORY_COMMAND_ALIASES,resolvePmHistoryOperation}from"./cli-contracts.js";import{EXECUTABLE_COMMAND_ALIASES,PM_COMMAND_ALIAS_CONTRACTS,renderPmCommandAliasMigrationHint,resolvePmCommandAlias,applyBootstrapPagerPolicy,coalesceRepeatedListFlags,listAliasPluralKeys,mergeLinkedTestTwoTokenEntries,normalizeBootstrapInvocation,normalizeLegacyExtensionActionSyntax,parseBootstrapCommandName,parseBootstrapGlobalOptions,parseBootstrapHelpRequest,parseBootstrapTypeValue,stripGlobalBootstrapTokens}from"./cli-bootstrap.js";import{quoteCommandArg,quoteWindowsCommandArg,renderPmCommand}from"./command-line.js";export*from"./agent/command-recovery.js";export*from"./agent/command-suggestions.js";export*from"./agent/item-addressing.js";export*from"./agent/create-option-policy.js";import{runGc}from"./governance/gc.js";import{PM_EXACT_COVERAGE_METRICS,findCoverageDeficits}from"./governance/coverage-assurance.js";import{_testOnlyHealthCommand,runHealth}from"./governance/health.js";import{_testOnlyValidateCommand,projectValidateCounts,runValidate}from"./governance/validate.js";import{runExtension}from"./extension.js";import{buildExtensionInstallPlan,planExtensionDirectoryCopy}from"./extension/install-plan.js";import{resolveExtensionInstallSourceIdentity}from"./extension/source-resolution.js";import{applyStoredExtensionMigrationState,readExtensionMigrationState,resolveExtensionMigrationStatePath,runExtensionMigrateAction,runExtensionMigrations}from"./extension/migrations.js";import{findInstalledNpmPackageCandidate}from"./extension/install-sources.js";import{buildExtensionDescribeResult,renderExtensionDescribeMarkdown}from"./extension/describe.js";import{runEvent,runMeet,runRemind}from"./scheduling-shortcuts.js";import{createExtensionCommandSdk}from"./extension-command-context.js";import{isRuntimeRecord}from"./runtime-input.js";import{resolveStartTaskInProgressStatus}from"./start-task-status.js";import{auditMergeAttributeFence,buildMergeAttributePatterns,findGitWorkspaceRoot,installMergeFence,refreshMergeAttributeFenceIfInstalled,resolveMergeInstallContext,resolveProjectMergeTypeFolders,runMergeInstall}from"./merge/install.js";import{deriveSchemaEvolutionMigrationId,formatSchemaEvolutionMigrationHuman,planSchemaEvolutionMigration,runSchemaEvolutionMigration}from"./schema-migration.js";import{runWithActiveExtensions}from"./runtime.js";import{applyInvocationAuthorOverride}from"./invocation-author.js";import{evaluateMutationGuard,getMutationActionContract,isMutationAction,listMutationActions,PM_MUTATION_ACTION_CONTRACTS,scanMutationSecrets}from"./mutation-guard.js";import{findSimilarItems,findDuplicateClusters,evaluateSimilarityGovernance,similarityAdvisoryWarnings,jaccardSimilarity,normalizeSimilarityText,prepareSimilarityText,scoreItemSimilarity,scorePreparedItemSimilarity,tokenizeSimilarityText}from"./similarity.js";import{inspectStaleInProgressItems,scanStaleInProgressItems}from"./governance/stale-work.js";import{describeItemOwnershipConflict}from"./ownership-source.js";import{discoverNearbyPmRoot}from"./tracker-root-discovery.js";import{assertInitializedTracker,assertReadableTrackerRoot,buildTrackerInitializationRecovery}from"./environment/tracker-preflight.js";import{_testOnly}from"./templates.js";import{runConfig,_testOnlyConfigCommand}from"./config.js";export*from"./agent/identity-config.js";import{INIT_AGENT_GUIDANCE_MODE_VALUES,runInitAgentGuidance,_testOnly as _testOnly2}from"./init-agent-guidance.js";import{runInit,summarizeInitResult,_testOnly as _testOnly3}from"./init.js";import{PROFILE_SUBCOMMANDS,formatProfileApplyHuman,formatProfileLintHuman,formatProfileListHuman,formatProfileShowHuman,runProfileApply,runProfileLint,runProfileList,runProfileShow}from"./profile.js";export*from"./extension-contracts.js";import{RESERVED_ITEM_FIELD_NAMES}from"../core/extensions/item-fields.js";import{PM_PACKAGE_CONVENTIONAL_RESOURCE_ROOTS,PM_PACKAGE_RESOURCE_KINDS,collectPackageExtensionDirectories,readPmPackageManifest}from"../core/packages/manifest.js";import{ACTIVITY_FLAG_CONTRACTS,ACTIVITY_COMMANDER_STRING_OPTION_CONTRACTS,AGGREGATE_FLAG_CONTRACTS,ASSURANCE_FLAG_CONTRACTS,APPEND_FLAG_CONTRACTS,CALENDAR_COMMANDER_STRING_OPTION_CONTRACTS,CALENDAR_FLAG_CONTRACTS,CLAIM_FLAG_CONTRACTS,CLOSE_ACTION_OPTION_KEYS,CLOSE_FLAG_CONTRACTS,CLOSE_MANY_FLAG_CONTRACTS,CLOSE_TASK_FLAG_CONTRACTS,COMMENTS_FLAG_CONTRACTS,COMPLETION_FLAG_CONTRACTS,CONFIG_FLAG_CONTRACTS,CONTEXT_COMMANDER_STRING_OPTION_CONTRACTS,CONTEXT_FLAG_CONTRACTS,CONTRACTS_FLAG_CONTRACTS,COPY_FLAG_CONTRACTS,CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,CREATE_COMMANDER_STRING_OPTION_CONTRACTS,CREATE_FLAG_CONTRACTS,DELETE_FLAG_CONTRACTS,DEPS_FLAG_CONTRACTS,DOCS_FLAG_CONTRACTS,EVAL_FLAG_CONTRACTS,EVENT_FLAG_CONTRACTS,EVENTS_FLAG_CONTRACTS,EXTENSION_ACTIVATE_FLAG_CONTRACTS,EXTENSION_ADOPT_ALL_FLAG_CONTRACTS,EXTENSION_ADOPT_FLAG_CONTRACTS,EXTENSION_CATALOG_FLAG_CONTRACTS,EXTENSION_DEACTIVATE_FLAG_CONTRACTS,EXTENSION_DESCRIBE_FLAG_CONTRACTS,EXTENSION_DOCTOR_FLAG_CONTRACTS,EXTENSION_EXPLORE_FLAG_CONTRACTS,EXTENSION_FLAG_CONTRACTS,EXTENSION_INIT_FLAG_CONTRACTS,EXTENSION_INSTALL_FLAG_CONTRACTS,EXTENSION_MANAGE_FLAG_CONTRACTS,EXTENSION_MIGRATE_FLAG_CONTRACTS,EXTENSION_RELOAD_FLAG_CONTRACTS,EXTENSION_SCOPE_FLAG_CONTRACTS,EXTENSION_UNINSTALL_FLAG_CONTRACTS,FILES_FLAG_CONTRACTS,FOCUS_FLAG_CONTRACTS,GC_FLAG_CONTRACTS,GET_FLAG_CONTRACTS,GRAPH_FLAG_CONTRACTS,GLOBAL_FLAG_CONTRACTS,GUIDE_FLAG_CONTRACTS,HEALTH_FLAG_CONTRACTS,HISTORY_COMPACT_FLAG_CONTRACTS,HISTORY_FLAG_CONTRACTS,HISTORY_REDACT_FLAG_CONTRACTS,HISTORY_REPAIR_FLAG_CONTRACTS,HISTORY_AUTHOR_ACKNOWLEDGE_FLAG_CONTRACTS,INIT_FLAG_CONTRACTS,INSTALL_FLAG_CONTRACTS,ITEM_MUTATE_FLAG_CONTRACTS,ITEM_COMPLETE_FLAG_CONTRACTS,ITEM_REOPEN_FLAG_CONTRACTS,LEARNINGS_FLAG_CONTRACTS,LIST_COMMANDER_STRING_OPTION_CONTRACTS,LIST_FILTER_FLAG_CONTRACTS,MEET_FLAG_CONTRACTS,MERGE_FLAG_CONTRACTS,NEXT_COMMANDER_STRING_OPTION_CONTRACTS,NEXT_FLAG_CONTRACTS,NOTES_FLAG_CONTRACTS,PACKAGE_FLAG_CONTRACTS,PACKAGE_INIT_FLAG_CONTRACTS,PAUSE_TASK_FLAG_CONTRACTS,PLAN_CREATE_METADATA_PARAMETER_KEYS,PLAN_FLAG_CONTRACTS,PM_COMMAND_OUTPUT_BUDGET_CONTRACTS,PM_DIAGNOSTIC_DEGRADATION_STEPS,PM_DIAGNOSTIC_OUTPUT_BUDGET_CONTRACTS,PM_DIAGNOSTIC_OUTPUT_CLASSES,PM_CLI_ONLY_TOOL_ACTION_WAIVERS,PM_CORE_COMMAND_NAMES,PM_EXTENSION_PACKAGE_ACTION_SUBCOMMANDS,PM_PACKAGE_ONLY_ACTION_SUBCOMMANDS,PM_ITEM_ACTION_SUBCOMMANDS,PM_DEPRECATED_TOOL_ACTIONS,PM_DISCOVERABLE_TOOL_ACTIONS,PM_EXTENSION_CAPABILITY_CONTRACTS,PM_EXTENSION_POLICY_MODE_CONTRACTS,PM_EXTENSION_POLICY_SURFACE_CONTRACTS,PM_EXTENSION_SANDBOX_PROFILE_CONTRACTS,PM_EXTENSION_SERVICE_NAME_CONTRACTS,PM_EXTENSION_TRUST_MODE_CONTRACTS,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA_VERSION,PM_TOOL_ACTIONS,analyzePmToolActionParity,PM_TOOL_ACTION_PARAMETER_CONTRACTS,PM_TOOL_PARAMETERS_SCHEMA,PM_TOOL_PARAMETERS_SCHEMA_MAJOR,PM_TOOL_PARAMETERS_SCHEMA_VERSION,PM_OUTPUT_BUDGET_CLASSES,PM_OUTPUT_DEGRADATION_STEPS,PROFILE_FLAG_CONTRACTS,REINDEX_FLAG_CONTRACTS,RELEASE_FLAG_CONTRACTS,REMIND_FLAG_CONTRACTS,RESTORE_FLAG_CONTRACTS,SCHEMA_FLAG_CONTRACTS,SEARCH_COMMANDER_STRING_OPTION_CONTRACTS,SEARCH_FLAG_CONTRACTS,START_TASK_FLAG_CONTRACTS,STATS_FLAG_CONTRACTS,DUPLICATES_FLAG_CONTRACTS,SUBCOMMAND_GLOBAL_FLAG_CONTRACTS,TELEMETRY_FLAG_CONTRACTS,TEST_ALL_FLAG_CONTRACTS,TEST_FLAG_CONTRACTS,TEST_RUNS_FLAG_CONTRACTS,TOOL_ACTIVITY_OPTION_CONTRACTS,TOOL_AGGREGATE_OPTION_CONTRACTS,TOOL_BULK_MUTATION_FILTER_OPTION_CONTRACT_SOURCE,TOOL_CALENDAR_OPTION_CONTRACTS,TOOL_CLOSE_MANY_FILTER_OPTION_CONTRACTS,TOOL_CONTEXT_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACT_SOURCE,TOOL_DEPS_OPTION_CONTRACTS,TOOL_GRAPH_OPTION_CONTRACTS,TOOL_LIST_FILTER_OPTION_CONTRACTS,TOOL_SEARCH_FILTER_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACT_SOURCE,TOOL_UPDATE_MANY_FILTER_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACT_SOURCE,verifyToolOptionCliParity,UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,UPDATE_COMMANDER_STRING_OPTION_CONTRACTS,UPDATE_FLAG_CONTRACTS,UPDATE_MANY_FLAG_CONTRACTS,UPGRADE_FLAG_CONTRACTS,VALIDATE_FLAG_CONTRACTS,WORKSPACE_FLAG_CONTRACTS,buildPmActionToolInputSchema,PM_TOOL_RESERVED_CUSTOM_FIELD_PROPERTIES,compactFlagAliasContracts,createPmCommandOutputBudget,definePmCommandOutputBudget,estimatePmOutputTokens,inferPmOutputBudgetClass,projectPmDiagnosticOutput,projectPmDiagnosticText,analyzeSdkCliParameterCompleteness,isPmExtensionCapabilityContract,isPmExtensionPolicyModeContract,isPmExtensionPolicySurfaceContract,isPmExtensionServiceNameContract,isPmToolAction,hasSubcommandFlagContractsForCommand,readFirstStringFromCommanderOptions,readFirstValueFromCommanderOptions,readStringArrayFromCommanderOptions,resolvePmPositionalActionFlagContracts,resolveSubcommandFlagContractsForCommand,resolvePmCommandOutputBudget,resolvePmDiagnosticOutputBudget,resolvePmToolCustomFieldCollision,toCompletionFlagString,withFlagAliasMetadata}from"./cli-contracts.js";export*from"./compose.js";export*from"./governance/assurance.js";export*from"./governance/assurance-action.js";export*from"./governance/assurance-runtime.js";export*from"./governance/assurance-presets.js";export*from"./governance/boundary-fixtures.js";export*from"./governance/defect-recurrence.js";export*from"./governance/merge-receipt-history.js";export*from"./compile-cache.js";export*from"./environment/project-runtime-compatibility.js";export*from"./environment/source-context.js";export*from"./environment/host-environment-errors.js";export*from"./cli-contracts/command-exit-contracts.js";export*from"./context-relevance.js";export*from"./context/recency.js";export*from"./context-intent-contracts.js";export*from"./context-intent-runtime.js";export*from"./context-signal-store.js";export*from"./workspace-memory.js";export*from"./lifecycle-completion.js";export*from"./lifecycle-policy.js";export*from"./output-projection.js";export*from"./read-output-contracts.js";export*from"./read-output-rows.js";export*from"./read-output-session.js";export*from"./output-token-accounting.js";export*from"./context-packing.js";export*from"./context-usage.js";import{classifyHistoryEvent,HISTORY_EVENT_CLASSIFICATION_VERSION,MAINTENANCE_HISTORY_OPERATIONS,SUBSTANTIVE_HISTORY_OPERATIONS}from"../core/history/event-classification.js";export*from"./dependency-provenance.js";export*from"./duplicates.js";export*from"./lifecycle/reopen.js";export*from"./history-compact.js";export*from"./history-read.js";export*from"./history/maintenance.js";import{readHistorySnapshot}from"../core/history/read.js";export*from"./history-provenance.js";export*from"./mutation-events.js";import{appendWorkspaceAuditEvent,appendWorkspaceHistoryChange,getWorkspaceHistoryPath,inspectWorkspaceHistoryState,mutateWorkspaceJsonWithHistory,reconcileWorkspaceJsonHistory,restoreWorkspaceJsonFromHistory,WORKSPACE_HISTORY_ID,writeWorkspaceJsonWithHistory}from"../core/history/workspace-history.js";export*from"./history-redact.js";import{_testOnly as _testOnly4}from"./history-redact.js";export*from"./history-repair.js";export*from"./item-children.js";export*from"./item-schedule.js";export*from"./merge/index.js";import{runDeps}from"./dependencies.js";export*from"./graph/index.js";import{runDocs}from"./docs.js";import{runFiles,runFilesDiscover,runFilesLookup}from"./files.js";import{applyPathMigrations,applyStandaloneNote,artifactKey,assertLinkedArtifactMutationIsUnambiguous,dedupeLinkedArtifacts,ensureScope,expandAddGlobEntries,normalizeLinkedPath,parseAddEntries,parseAddGlobEntries,parseMigrateEntries,parseRemoveEntries,renameArtifactsResultKey,runLinkedArtifacts,sortLinkedArtifacts,validateLinkedPaths}from"./linked-artifacts.js";export*from"./pagination.js";export*from"./query/item-filter-options.js";export*from"./query/parsers.js";export*from"./output.js";export*from"./output-contracts.js";export*from"./agent/task-transcript-contracts.js";export*from"./relationship-analytics.js";export*from"./relationship-context.js";export*from"./relationship-history.js";export*from"./relationship-migration.js";export*from"./workspace-transaction.js";export*from"./workspace-transaction-gc.js";export*from"./item-transaction.js";export*from"./item-metadata-index.js";export*from"./structured-mutations.js";export*from"./runtime-primitives.js";export*from"./error-runtime.js";export*from"./error-code-catalog.js";export*from"./generated-error-code-catalog.js";export*from"./agent/refusal-reachability.js";export*from"./agent/refusal-closure-census.js";export*from"./agent/refusal-closure.js";export*from"./agent/closed-domain-contracts.js";export*from"./agent/refusal-corpus-contracts.js";import{MERGE_SUBCOMMAND_VALUES}from"./cli-contracts.js";export*from"./agent/tracker-preflight-contracts.js";export*from"./agent/subcommand-recovery.js";export*from"./flag-invocation-contracts.js";export*from"./cli-contracts/flag-lexicon-contracts.js";export*from"./relationships.js";export*from"./actionability.js";import{runCreate}from"./lifecycle/create.js";import{runPlan}from"./lifecycle/plan.js";import{runAppend}from"./lifecycle/append.js";import{isAlreadyClaimedError,runClaim,runClaimNext,runRelease}from"./lifecycle/claim.js";import{runCloseMany}from"./lifecycle/close-many.js";import{runUpdateMany}from"./lifecycle/update-many.js";import{runComments}from"./comments.js";import{runNotes}from"./notes.js";import{runLearnings}from"./learnings.js";import{runUpgrade}from"./governance/upgrade.js";import{PLAN_SHOW_DEPTH_VALUES,PLAN_SUBCOMMANDS,PLAN_TEMPLATE_NAMES}from"./lifecycle/plan.js";export*from"./define.js";import{BASELINE_ITEM_FORMAT_VERSION,BUILTIN_ITEM_TYPE_VALUES,CONFIDENCE_TEXT_VALUES,CURRENT_ITEM_FORMAT_VERSION,DEPENDENCY_KIND_VALUES,EXIT_CODE,ISSUE_SEVERITY_VALUES,ITEM_TYPE_VALUES,PM_CLI_EXPECTED_ERROR_NAME,PmCliError,PmClient,RISK_VALUES,STATUS_VALUES,acquireLock,appendHistoryEntry,canonicalDocument,classifyItemFormatVersion,clearWorkspaceContractsCache,commitImportedItem,createHistoryEntry,createPmCliExpectedError,effectiveItemFormatVersion,emptyImportedDocument,ensureTrackerInitialized,generateItemId,getActiveExtensionRegistrations,getContracts,getHistoryPath,getItemPath,getSettingsPath,getWorkspaceContracts,isPmCliExpectedError,isTimestampLiteral,listAllItemMetadata,loadCreateTemplateOptions,locateItem,normalizeItemMetadata,normalizeItemFormatVersion,normalizeItemId,normalizeRawItemId,normalizeStatusInput,nowIso,parseTags,pathExists,readBooleanOption,readCsvListOption,readFileIfExists,readLocatedItem,readRequiredString,readSettings,readStringOption,removeFileIfExists,renderCalendarMarkdown,renderCalendarToon,renderGuideMarkdown,resolveCalendarOutputFormat,resolveGuideOutputFormat,resolveItemTypeRegistry,resolveImplicitPmRoot,resolvePmRoot,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,runAction,runActiveOnReadHooks,runActiveOnWriteHooks,runCalendar,runCompletion,runGuide,runList,runReindex,runSearch,runTemplatesList,runTemplatesSave,runTemplatesShow,runTestRunsList,runTestRunsLogs,runTestRunsResume,runTestRunsStatus,runTestRunsStop,scanItemFormatVersions,selectImportAuthor,serializeItemDocument,splitFrontMatter,toEstimatedMinutesValue,toImportBoolean,toImportConfidence,toImportInteger,toImportLinkedDocs,toImportLinkedFiles,toImportLinkedTests,toImportLogEntries,toImportNormalizedEnum,toImportNumberMap,toImportPriority,toImportStatus,toImportStringList,toImportStringMap,toImportTags,toNonEmptyImportString,writeFileAtomic,aggregate,append,claim,claimNext,close,reopen,closeTask,comments,config,context,copy,create,deleteItem,deps,docs,duplicates,extension,extensionActivate,extensionDeactivate,extensionList,files,filesDiscover,filesLookup,focus,gc,get,graph,health,historyCompact,historyCompactBulk,historyRedact,historyRepair,historyRepairAll,init,learnings,list,listAllComplete,next,notes,packageActivate,packageCatalog,packageDeactivate,packageDescribe,packageDoctor,packageInstall,packageLifecycle,packageList,packageManage,packageReload,packageUninstall,pauseTask,profile,profileApply,profileLint,profileList,profileShow,release,restore,schema,schemaAddField,schemaAddStatus,schemaAddType,schemaApplyPreset,schemaInferTypes,schemaList,schemaListFields,schemaRemapStatus,schemaRemoveField,schemaRemoveStatus,schemaRemoveType,schemaShow,schemaShowField,schemaShowStatus,schemaRenameField,schemaRenameType,search,startTask,stats,update,upgrade,validate}from"./runtime.js";import{extensionMigrate,packageMigrate}from"./package-migrations.js";import{CONTEXT_OUTPUT_VALUES,NEXT_OUTPUT_VALUES,PM_GITIGNORE_END,PM_GITIGNORE_START,analyzeSdkActionCoverage,ensurePmGitignore,getPmGitignoreBlock,closeItem,runAggregate,runClose,runCopy,runContext,runDelete,runFocus,runGet,runNext,runRestore,runUpdate}from"./runtime.js";import{runStats}from"./stats.js";import{readImprovementLedger,recordImprovementObservation}from"./improvement-ledger.js";import{evaluateProvenanceCoverage,projectFleetAttributionAnalytics,projectProvenanceCoverageAnalytics,readHistoryAnalyticsWindow,runFleetAttributionAnalytics,runProvenanceCoverageAnalytics}from"./history-analytics.js";import{DEFAULT_EVAL_QUERIES_RELATIVE_PATH,EVAL_QUERY_SET_CONTRACT,EVAL_QUERY_SET_EXAMPLE,EVAL_QUERY_SET_SCHEMA_ID,parseEvalQuerySet,runEval}from"./eval.js";import{runTelemetry,TELEMETRY_SUBCOMMANDS}from"./telemetry.js";import{classifyLinkedTestCommandSafety,classifyLinkedTestFailure,countFailureCategories,extractReferencedPmItemIdsFromCommand,resolveLinkedTestFailureExitCode,runLinkedTests,runTest,summarizeContextPreflight}from"./test/execution.js";import{TEST_RUN_MEASUREMENT_LIMIT,diffTestRunMeasurements,parseTestRunMeasurements,queryTestRunMeasurementsBelow}from"./test/measurements.js";import{runTestAll}from"./test/batch.js";import{LINKED_TEST_ENV_NAME_PATTERN,LINKED_TEST_PM_CONTEXT_MODE_VALUES,LINKED_TEST_WORKSPACE_CONTEXT_MODE_VALUES,LINKED_TEST_PROTECTED_ENV_KEYS,parseLinkedTestAssertionEqualsMap,parseLinkedTestAssertionGteMap,parseLinkedTestBoolean,parseLinkedTestContextMode,parseLinkedTestEnvClear,parseLinkedTestEnvSet,parseLinkedTestJsonEntries,parseLinkedTestMinLines,parseLinkedTestRegexList,parseLinkedTestStringList,parseLinkedTestWorkspaceContextMode}from"./test/parsers.js";import{acknowledgeLinkedTests,attachLinkedTestMutationProvenance,attachLinkedTestProvenance,linkedTestTrustFingerprint,resolveLinkedTestSourceRef,resolveLinkedTestSourceWorkspaceRoot,resolveLinkedTestTrust,resolveLinkedTestTrustBatch}from"./test/trust.js";import{runStartBackgroundRun,runTestRunsWorker}from"./test/runs.js";import{BUILTIN_PROFILES,listProfiles,normalizeProfileName,PROFILE_NAMES,resolveProfile}from"../core/profile/profile-presets.js";import{planProfileApplication}from"../core/profile/profile-plan.js";import{describeProfileComposition,describeProjectProfile}from"../core/profile/profile-describe.js";import{lintProjectProfile,PROFILE_LINT_CODES,PROFILE_LINT_DIMENSIONS}from"../core/profile/profile-lint.js";export*from"./authoring.js";export*from"./governance.js";export*from"./mcp/discovery.js";export*from"./query.js";export*from"./testing.js";export{ACTIVITY_COMMANDER_STRING_OPTION_CONTRACTS,ACTIVITY_FLAG_CONTRACTS,AGGREGATE_FLAG_CONTRACTS,APPEND_FLAG_CONTRACTS,ASSURANCE_FLAG_CONTRACTS,BASELINE_ITEM_FORMAT_VERSION,BUILTIN_CORPUS_SHAPES,BUILTIN_ITEM_TYPE_VALUES,BUILTIN_PROFILES,CALENDAR_COMMANDER_STRING_OPTION_CONTRACTS,CALENDAR_FLAG_CONTRACTS,CLAIM_FLAG_CONTRACTS,CLOSE_ACTION_OPTION_KEYS,CLOSE_FLAG_CONTRACTS,CLOSE_MANY_FLAG_CONTRACTS,CLOSE_TASK_FLAG_CONTRACTS,COMMENTS_FLAG_CONTRACTS,COMPLETION_FLAG_CONTRACTS,CONFIDENCE_TEXT_VALUES,CONFIG_FLAG_CONTRACTS,CONTEXT_COMMANDER_STRING_OPTION_CONTRACTS,CONTEXT_FLAG_CONTRACTS,CONTEXT_OUTPUT_VALUES,CONTRACTS_FLAG_CONTRACTS,COPY_FLAG_CONTRACTS,CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,CREATE_COMMANDER_STRING_OPTION_CONTRACTS,CREATE_FLAG_CONTRACTS,CURRENT_ITEM_FORMAT_VERSION,DEFAULT_EVAL_QUERIES_RELATIVE_PATH,DELETE_FLAG_CONTRACTS,DEPENDENCY_KIND_VALUES,DEPS_FLAG_CONTRACTS,DOCS_FLAG_CONTRACTS,DUPLICATES_FLAG_CONTRACTS,EVAL_FLAG_CONTRACTS,EVAL_QUERY_SET_CONTRACT,EVAL_QUERY_SET_EXAMPLE,EVAL_QUERY_SET_SCHEMA_ID,EVENTS_FLAG_CONTRACTS,EVENT_FLAG_CONTRACTS,EXECUTABLE_COMMAND_ALIASES,EXIT_CODE,EXTENSION_ACTIVATE_FLAG_CONTRACTS,EXTENSION_ADOPT_ALL_FLAG_CONTRACTS,EXTENSION_ADOPT_FLAG_CONTRACTS,EXTENSION_CATALOG_FLAG_CONTRACTS,EXTENSION_DEACTIVATE_FLAG_CONTRACTS,EXTENSION_DESCRIBE_FLAG_CONTRACTS,EXTENSION_DOCTOR_FLAG_CONTRACTS,EXTENSION_EXPLORE_FLAG_CONTRACTS,EXTENSION_FLAG_CONTRACTS,EXTENSION_INIT_FLAG_CONTRACTS,EXTENSION_INSTALL_FLAG_CONTRACTS,EXTENSION_MANAGE_FLAG_CONTRACTS,EXTENSION_MIGRATE_FLAG_CONTRACTS,EXTENSION_RELOAD_FLAG_CONTRACTS,EXTENSION_SCOPE_FLAG_CONTRACTS,EXTENSION_UNINSTALL_FLAG_CONTRACTS,FILES_FLAG_CONTRACTS,FOCUS_FLAG_CONTRACTS,GC_FLAG_CONTRACTS,GET_FLAG_CONTRACTS,GLOBAL_FLAG_CONTRACTS,GRAPH_FLAG_CONTRACTS,GUIDE_FLAG_CONTRACTS,HEALTH_FLAG_CONTRACTS,HISTORY_AUTHOR_ACKNOWLEDGE_FLAG_CONTRACTS,HISTORY_COMPACT_FLAG_CONTRACTS,HISTORY_EVENT_CLASSIFICATION_VERSION,HISTORY_FLAG_CONTRACTS,HISTORY_REDACT_FLAG_CONTRACTS,HISTORY_REPAIR_FLAG_CONTRACTS,INIT_AGENT_GUIDANCE_MODE_VALUES,INIT_FLAG_CONTRACTS,INSTALL_FLAG_CONTRACTS,ISSUE_SEVERITY_VALUES,ITEM_COMPLETE_FLAG_CONTRACTS,ITEM_MUTATE_FLAG_CONTRACTS,ITEM_REOPEN_FLAG_CONTRACTS,ITEM_TYPE_VALUES,LEARNINGS_FLAG_CONTRACTS,LINKED_TEST_ENV_NAME_PATTERN,LINKED_TEST_PM_CONTEXT_MODE_VALUES,LINKED_TEST_PROTECTED_ENV_KEYS,LINKED_TEST_WORKSPACE_CONTEXT_MODE_VALUES,LIST_COMMANDER_STRING_OPTION_CONTRACTS,LIST_FILTER_FLAG_CONTRACTS,MAINTENANCE_HISTORY_OPERATIONS,MEET_FLAG_CONTRACTS,MERGE_FLAG_CONTRACTS,MERGE_SUBCOMMAND_VALUES,NEXT_COMMANDER_STRING_OPTION_CONTRACTS,NEXT_FLAG_CONTRACTS,NEXT_OUTPUT_VALUES,NOTES_FLAG_CONTRACTS,PACKAGE_FLAG_CONTRACTS,PACKAGE_INIT_FLAG_CONTRACTS,PAUSE_TASK_FLAG_CONTRACTS,PLAN_CREATE_METADATA_PARAMETER_KEYS,PLAN_FLAG_CONTRACTS,PLAN_SHOW_DEPTH_VALUES,PLAN_SUBCOMMANDS,PLAN_TEMPLATE_NAMES,PM_CLI_EXPECTED_ERROR_NAME,PM_CLI_ONLY_TOOL_ACTION_WAIVERS,PM_COMMAND_ALIAS_CONTRACTS,PM_COMMAND_CAPABILITY_CONTRACTS,PM_COMMAND_OUTPUT_BUDGET_CONTRACTS,PM_COMMAND_VISIBILITY_CONTRACTS,PM_CORE_COMMAND_NAMES,PM_CORPUS_SHAPE_SCHEMA,PM_DEPRECATED_TOOL_ACTIONS,PM_DIAGNOSTIC_DEGRADATION_STEPS,PM_DIAGNOSTIC_OUTPUT_BUDGET_CONTRACTS,PM_DIAGNOSTIC_OUTPUT_CLASSES,PM_DISCOVERABLE_TOOL_ACTIONS,PM_EXACT_COVERAGE_METRICS,PM_EXTENSION_CAPABILITY_CONTRACTS,PM_EXTENSION_PACKAGE_ACTION_SUBCOMMANDS,PM_EXTENSION_POLICY_MODE_CONTRACTS,PM_EXTENSION_POLICY_SURFACE_CONTRACTS,PM_EXTENSION_SANDBOX_PROFILE_CONTRACTS,PM_EXTENSION_SERVICE_NAME_CONTRACTS,PM_EXTENSION_TRUST_MODE_CONTRACTS,PM_GITIGNORE_END,PM_GITIGNORE_START,PM_HISTORY_COMMAND_ALIASES,PM_ITEM_ACTION_SUBCOMMANDS,PM_MCP_PROMPT_CONTRACTS,PM_MCP_RESOURCE_CONTRACTS,PM_MCP_TOOL_COMMAND_CONTRACTS,PM_MUTATION_ACTION_CONTRACTS,PM_OUTPUT_BUDGET_CLASSES,PM_OUTPUT_DEGRADATION_STEPS,PM_PACKAGE_CONVENTIONAL_RESOURCE_ROOTS,PM_PACKAGE_ONLY_ACTION_SUBCOMMANDS,PM_PACKAGE_RESOURCE_KINDS,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA_VERSION,PM_REPRODUCIBLE_PROCESS_ENV,PM_TOOL_ACTIONS,PM_TOOL_ACTION_PARAMETER_CONTRACTS,PM_TOOL_PARAMETERS_SCHEMA,PM_TOOL_PARAMETERS_SCHEMA_MAJOR,PM_TOOL_PARAMETERS_SCHEMA_VERSION,PM_TOOL_RESERVED_CUSTOM_FIELD_PROPERTIES,PM_WORKSPACE_RECIPE_SCHEMA,PROFILE_FLAG_CONTRACTS,PROFILE_LINT_CODES,PROFILE_LINT_DIMENSIONS,PROFILE_NAMES,PROFILE_SUBCOMMANDS,PmCliError,PmClient,REINDEX_FLAG_CONTRACTS,RELEASE_FLAG_CONTRACTS,REMIND_FLAG_CONTRACTS,RESERVED_ITEM_FIELD_NAMES,RESTORE_FLAG_CONTRACTS,RISK_VALUES,SCHEMA_FLAG_CONTRACTS,SEARCH_COMMANDER_STRING_OPTION_CONTRACTS,SEARCH_FLAG_CONTRACTS,SNAPSHOT_SCHEMA,START_TASK_FLAG_CONTRACTS,STATS_FLAG_CONTRACTS,STATUS_VALUES,SUBCOMMAND_GLOBAL_FLAG_CONTRACTS,SUBSTANTIVE_HISTORY_OPERATIONS,TELEMETRY_FLAG_CONTRACTS,TELEMETRY_SUBCOMMANDS,TEST_ALL_FLAG_CONTRACTS,TEST_FLAG_CONTRACTS,TEST_RUNS_FLAG_CONTRACTS,TEST_RUN_MEASUREMENT_LIMIT,TOOL_ACTIVITY_OPTION_CONTRACTS,TOOL_AGGREGATE_OPTION_CONTRACTS,TOOL_BULK_MUTATION_FILTER_OPTION_CONTRACT_SOURCE,TOOL_CALENDAR_OPTION_CONTRACTS,TOOL_CLOSE_MANY_FILTER_OPTION_CONTRACTS,TOOL_CONTEXT_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACT_SOURCE,TOOL_DEPS_OPTION_CONTRACTS,TOOL_GRAPH_OPTION_CONTRACTS,TOOL_LIST_FILTER_OPTION_CONTRACTS,TOOL_SEARCH_FILTER_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACT_SOURCE,TOOL_UPDATE_MANY_FILTER_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACT_SOURCE,UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,UPDATE_COMMANDER_STRING_OPTION_CONTRACTS,UPDATE_FLAG_CONTRACTS,UPDATE_MANY_FLAG_CONTRACTS,UPGRADE_FLAG_CONTRACTS,VALIDATE_FLAG_CONTRACTS,WORKSPACE_FLAG_CONTRACTS,WORKSPACE_HISTORY_ID,WORKSPACE_SNAPSHOT_ACTIONS,_testOnly4 as _testOnly,_testOnlyConfigCommand,_testOnlyHealthCommand,_testOnly3 as _testOnlyInit,_testOnly2 as _testOnlyInitAgentGuidance,_testOnly as _testOnlyTemplates,_testOnlyValidateCommand,acknowledgeLinkedTests,acknowledgeUnknownAuthorHistoryEvents,acknowledgeUnknownAuthorHistoryEventsFromTransport,acquireLock,aggregate,analyzePmToolActionParity,analyzeSdkActionCoverage,analyzeSdkCliParameterCompleteness,append,appendHistoryEntry,appendWorkspaceAuditEvent,appendWorkspaceHistoryChange,applyBootstrapPagerPolicy,applyInvocationAuthorOverride,applyPathMigrations,applyStandaloneNote,applyStoredExtensionMigrationState,artifactKey,assertInitializedTracker,assertLinkedArtifactMutationIsUnambiguous,assertReadableTrackerRoot,attachLinkedTestMutationProvenance,attachLinkedTestProvenance,auditMergeAttributeFence,buildCorpusShapeItemPlan,buildExtensionDescribeResult,buildExtensionInstallPlan,buildMergeAttributePatterns,buildPmActionToolInputSchema,buildTrackerInitializationRecovery,canonicalDocument,claim,claimNext,classifyHistoryEvent,classifyItemFormatVersion,classifyLinkedTestCommandSafety,classifyLinkedTestFailure,clearWorkspaceContractsCache,close,closeItem,closeTask,coalesceRepeatedListFlags,collectPackageExtensionDirectories,comments,commitImportedItem,compactFlagAliasContracts,config,context,copy,countFailureCategories,create,createCorpusShapeMeasurement,createExtensionCommandSdk,createHistoryEntry,createPmCliExpectedError,createPmCliProgram,createPmCommandOutputBudget,createReproducibleProcessRunner,createWorkspaceSnapshot,dedupeLinkedArtifacts,defineCorpusShape,definePmCommandOutputBudget,defineWorkspaceRecipe,deleteItem,deleteWorkspaceSnapshot,deps,deriveSchemaEvolutionMigrationId,describeItemOwnershipConflict,describeProfileComposition,describeProjectProfile,diffTestRunMeasurements,discoverNearbyPmRoot,docs,duplicates,effectiveItemFormatVersion,emptyImportedDocument,ensurePmGitignore,ensureScope,ensureTrackerInitialized,estimatePmOutputTokens,evaluateMutationGuard,evaluateProvenanceCoverage,evaluateSimilarityGovernance,executeWorkspaceRecipe,expandAddGlobEntries,extension,extensionActivate,extensionDeactivate,extensionList,extensionMigrate,extractReferencedPmItemIdsFromCommand,files,filesDiscover,filesLookup,findCoverageDeficits,findDuplicateClusters,findGitWorkspaceRoot,findInstalledNpmPackageCandidate,findSimilarItems,flushTelemetryQueue,focus,formatProfileApplyHuman,formatProfileLintHuman,formatProfileListHuman,formatProfileShowHuman,formatSchemaEvolutionMigrationHuman,gc,generateItemId,get,getActiveExtensionRegistrations,getContracts,getHistoryPath,getItemPath,getMutationActionContract,getPmGitignoreBlock,getSettingsPath,getWorkspaceContracts,getWorkspaceHistoryPath,graph,hasSubcommandFlagContractsForCommand,health,historyCompact,historyCompactBulk,historyRedact,historyRepair,historyRepairAll,inferPmOutputBudgetClass,init,inspectHistoryAuthorStream,inspectStaleInProgressItems,inspectWorkspaceHistoryState,inspectWorkspaceSnapshot,installMergeFence,isAlreadyClaimedError,isErrnoError,isMutationAction,isPmCliExpectedError,isPmExtensionCapabilityContract,isPmExtensionPolicyModeContract,isPmExtensionPolicySurfaceContract,isPmExtensionServiceNameContract,isPmToolAction,isRuntimeRecord,isTimestampLiteral,jaccardSimilarity,learnings,limitAnnotationEntries,linkedTestTrustFingerprint,lintProjectProfile,list,listAliasPluralKeys,listAllComplete,listAllItemMetadata,listBuiltinCorpusShapes,listMutationActions,listPmCommandsForFamily,listPmCommandsForTier,listPmMcpToolsForProfile,listProfiles,listWorkspaceSnapshots,loadCreateTemplateOptions,locateItem,measureCorpusShapePlan,mergeLinkedTestTwoTokenEntries,mutateWorkspaceJsonWithHistory,next,normalizeAnnotationTransportOptions,normalizeBootstrapInvocation,normalizeItemFormatVersion,normalizeItemId,normalizeItemMetadata,normalizeLegacyExtensionActionSyntax,normalizeLinkedPath,normalizeProfileName,normalizeRawItemId,normalizeSimilarityText,normalizeStatusInput,notes,nowIso,packageActivate,packageCatalog,packageDeactivate,packageDescribe,packageDoctor,packageInstall,packageLifecycle,packageList,packageManage,packageMigrate,packageReload,packageUninstall,parseAddEntries,parseAddGlobEntries,parseAnnotationTextInput,parseBootstrapCommandName,parseBootstrapGlobalOptions,parseBootstrapHelpRequest,parseBootstrapTypeValue,parseEvalQuerySet,parseLinkedTestAssertionEqualsMap,parseLinkedTestAssertionGteMap,parseLinkedTestBoolean,parseLinkedTestContextMode,parseLinkedTestEnvClear,parseLinkedTestEnvSet,parseLinkedTestJsonEntries,parseLinkedTestMinLines,parseLinkedTestRegexList,parseLinkedTestStringList,parseLinkedTestWorkspaceContextMode,parseMigrateEntries,parseRemoveEntries,parseTags,parseTestRunMeasurements,parseUnknownAuthorHistoryEventCoordinates,pathExists,pauseTask,planExtensionDirectoryCopy,planProfileApplication,planSchemaEvolutionMigration,planUnknownAuthorHistoryAcknowledgment,planWorkspaceSnapshotRestore,prepareSimilarityText,profile,profileApply,profileLint,profileList,profileShow,projectFleetAttributionAnalytics,projectPmDiagnosticOutput,projectPmDiagnosticText,projectProvenanceCoverageAnalytics,projectValidateCounts,queryTestRunMeasurementsBelow,quoteCommandArg,quoteWindowsCommandArg,readAnnotationEntries,readBooleanOption,readCsvListOption,readExtensionMigrationState,readFileIfExists,readFirstStringFromCommanderOptions,readFirstValueFromCommanderOptions,readHistoryAnalyticsWindow,readHistorySnapshot,readImprovementLedger,readLocatedItem,readPmPackageManifest,readRequiredString,readSettings,readStringArrayFromCommanderOptions,readStringOption,reconcileWorkspaceJsonHistory,recordImprovementObservation,refreshMergeAttributeFenceIfInstalled,release,removeFileIfExists,renameArtifactsResultKey,renderCalendarMarkdown,renderCalendarToon,renderExtensionDescribeMarkdown,renderGuideMarkdown,renderPmCommand,renderPmCommandAliasMigrationHint,renderPmCommandVisibilityMarkdown,reopen,resolveAnnotationIndex,resolveAnnotationInput,resolveBuiltinCorpusShape,resolveCalendarOutputFormat,resolveExtensionInstallSourceIdentity,resolveExtensionMigrationStatePath,resolveGuideOutputFormat,resolveImplicitPmRoot,resolveItemTypeRegistry,resolveLinkedTestFailureExitCode,resolveLinkedTestSourceRef,resolveLinkedTestSourceWorkspaceRoot,resolveLinkedTestTrust,resolveLinkedTestTrustBatch,resolveMergeInstallContext,resolvePmCommandAlias,resolvePmCommandCapabilityFamily,resolvePmCommandOutputBudget,resolvePmCommandVisibilityTier,resolvePmDiagnosticOutputBudget,resolvePmHistoryOperation,resolvePmPositionalActionFlagContracts,resolvePmRoot,resolvePmToolCustomFieldCollision,resolveProfile,resolveProjectMergeTypeFolders,resolveReproducibleProcessEnvironment,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,resolveStartTaskInProgressStatus,resolveSubcommandFlagContractsForCommand,resolveUnknownAuthorAcknowledgmentSelector,restore,restoreWorkspaceJsonFromHistory,restoreWorkspaceSnapshot,restoreWorkspaceSnapshotWithRecovery,runAction,runActiveOnReadHooks,runActiveOnWriteHooks,runAggregate,runAnnotationCommand,runAppend,runCalendar,runClaim,runClaimNext,runClose,runCloseMany,runComments,runCompletion,runConfig,runContext,runCopy,runCreate,runDelete,runDeps,runDocs,runEval,runEvent,runExtension,runExtensionMigrateAction,runExtensionMigrations,runFiles,runFilesDiscover,runFilesLookup,runFleetAttributionAnalytics,runFocus,runGc,runGet,runGuide,runHealth,runInit,runInitAgentGuidance,runLearnings,runLinkedArtifacts,runLinkedTests,runList,runMeet,runMergeInstall,runNext,runNotes,runPlan,runProfileApply,runProfileLint,runProfileList,runProfileShow,runProvenanceCoverageAnalytics,runReindex,runRelease,runRemind,runRestore,runSchemaEvolutionMigration,runSearch,runSearchRefreshWorkerEntrypoint,runStartBackgroundRun,runStats,runTelemetry,runTemplatesList,runTemplatesSave,runTemplatesShow,runTest,runTestAll,runTestRunsList,runTestRunsLogs,runTestRunsResume,runTestRunsStatus,runTestRunsStop,runTestRunsWorker,runUpdate,runUpdateMany,runUpgrade,runValidate,runWithActiveExtensions,runWithReproducibleProcessEnvironment,runWithWorkspaceRecipe,scanHistoryAuthorAttribution,scanItemFormatVersions,scanMutationSecrets,scanStaleInProgressItems,schema,schemaAddField,schemaAddStatus,schemaAddType,schemaApplyPreset,schemaInferTypes,schemaList,schemaListFields,schemaRemapStatus,schemaRemoveField,schemaRemoveStatus,schemaRemoveType,schemaRenameField,schemaRenameType,schemaShow,schemaShowField,schemaShowStatus,scoreItemSimilarity,scorePreparedItemSimilarity,search,selectImportAuthor,serializeItemDocument,similarityAdvisoryWarnings,sortLinkedArtifacts,splitFrontMatter,startTask,stats,stripGlobalBootstrapTokens,summarizeContextPreflight,summarizeInitResult,toCompletionFlagString,toEstimatedMinutesValue,toImportBoolean,toImportConfidence,toImportInteger,toImportLinkedDocs,toImportLinkedFiles,toImportLinkedTests,toImportLogEntries,toImportNormalizedEnum,toImportNumberMap,toImportPriority,toImportStatus,toImportStringList,toImportStringMap,toImportTags,toNonEmptyImportString,tokenizeSimilarityText,update,upgrade,validate,validateLinkedPaths,verifyToolOptionCliParity,withFlagAliasMetadata,wrapOwnershipConflict,writeFileAtomic,writeWorkspaceJsonWithHistory};
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]="25763f4f-7689-5fb7-b083-30a7080adb22")}catch(e2){}})();import{PM_COMMAND_CAPABILITY_CONTRACTS,PM_COMMAND_VISIBILITY_CONTRACTS,PM_MCP_PROMPT_CONTRACTS,PM_MCP_RESOURCE_CONTRACTS,PM_MCP_TOOL_COMMAND_CONTRACTS,listPmCommandsForFamily,listPmCommandsForTier,listPmMcpToolsForProfile,renderPmCommandVisibilityMarkdown,resolvePmCommandCapabilityFamily,resolvePmCommandVisibilityTier}from"./agent-capability-contracts.js";export*from"./mcp/protocol.js";export*from"./mcp/interactions.js";export*from"./mcp/tasks.js";export*from"./mcp/subscriptions.js";export*from"./mcp/transport.js";export*from"./mcp/authorization.js";export*from"./mcp/apps.js";export*from"./mcp/skills.js";export*from"./cli-contracts/grammar-contracts.js";export*from"./agent-session-context.js";export*from"./environment/agent-environment.js";import{isErrnoError,limitAnnotationEntries,parseAnnotationTextInput,readAnnotationEntries,normalizeAnnotationTransportOptions,resolveAnnotationInput,resolveAnnotationIndex,runAnnotationCommand,wrapOwnershipConflict}from"./annotations.js";import{acknowledgeUnknownAuthorHistoryEvents,acknowledgeUnknownAuthorHistoryEventsFromTransport,inspectHistoryAuthorStream,parseUnknownAuthorHistoryEventCoordinates,planUnknownAuthorHistoryAcknowledgment,resolveUnknownAuthorAcknowledgmentSelector,scanHistoryAuthorAttribution}from"./author-attribution.js";import{BUILTIN_CORPUS_SHAPES,PM_CORPUS_SHAPE_SCHEMA,buildCorpusShapeItemPlan,createCorpusShapeMeasurement,defineCorpusShape,listBuiltinCorpusShapes,measureCorpusShapePlan,resolveBuiltinCorpusShape}from"./corpus-shape.js";export*from"./core-governance.js";import{createPmCliProgram}from"./cli-program.js";import{runSearchRefreshWorkerEntrypoint}from"./search-refresh-worker.js";import{PM_REPRODUCIBLE_PROCESS_ENV,createReproducibleProcessRunner,resolveReproducibleProcessEnvironment,runWithReproducibleProcessEnvironment}from"./reproducibility/process.js";import{PM_WORKSPACE_RECIPE_SCHEMA,defineWorkspaceRecipe,executeWorkspaceRecipe,runWithWorkspaceRecipe}from"./workspace-recipe.js";import{SNAPSHOT_SCHEMA,WORKSPACE_SNAPSHOT_ACTIONS,createWorkspaceSnapshot,deleteWorkspaceSnapshot,inspectWorkspaceSnapshot,listWorkspaceSnapshots,planWorkspaceSnapshotRestore,restoreWorkspaceSnapshot,restoreWorkspaceSnapshotWithRecovery}from"./workspace-snapshot.js";import{flushTelemetryQueue}from"./telemetry-flush.js";import{PM_HISTORY_COMMAND_ALIASES,PM_CONTEXT_OPS_COMMAND_ALIASES,PM_BULK_LIFECYCLE_COMMAND_ALIASES,PM_RELOCATED_COMMAND_ALIASES,PM_NAMESPACED_COMMAND_ALIASES,resolvePmCommandOperation,resolvePmHistoryOperation}from"./cli-contracts.js";import{EXECUTABLE_COMMAND_ALIASES,PM_COMMAND_ALIAS_CONTRACTS,renderPmCommandAliasMigrationHint,resolvePmCommandAlias,applyBootstrapPagerPolicy,coalesceRepeatedListFlags,listAliasPluralKeys,mergeLinkedTestTwoTokenEntries,normalizeBootstrapInvocation,normalizeLegacyExtensionActionSyntax,parseBootstrapCommandName,parseBootstrapGlobalOptions,parseBootstrapHelpRequest,parseBootstrapTypeValue,stripGlobalBootstrapTokens}from"./cli-bootstrap.js";import{quoteCommandArg,quoteWindowsCommandArg,renderPmCommand}from"./command-line.js";export*from"./agent/command-recovery.js";export*from"./agent/command-suggestions.js";export*from"./agent/item-addressing.js";export*from"./agent/create-option-policy.js";import{runGc}from"./governance/gc.js";import{PM_EXACT_COVERAGE_METRICS,findCoverageDeficits}from"./governance/coverage-assurance.js";import{_testOnlyHealthCommand,runHealth}from"./governance/health.js";import{_testOnlyValidateCommand,projectValidateCounts,runValidate}from"./governance/validate.js";import{runExtension}from"./extension.js";import{buildExtensionInstallPlan,planExtensionDirectoryCopy}from"./extension/install-plan.js";import{resolveExtensionInstallSourceIdentity}from"./extension/source-resolution.js";import{applyStoredExtensionMigrationState,readExtensionMigrationState,resolveExtensionMigrationStatePath,runExtensionMigrateAction,runExtensionMigrations}from"./extension/migrations.js";import{findInstalledNpmPackageCandidate}from"./extension/install-sources.js";import{buildExtensionDescribeResult,renderExtensionDescribeMarkdown}from"./extension/describe.js";import{runEvent,runMeet,runRemind}from"./scheduling-shortcuts.js";import{createExtensionCommandSdk}from"./extension-command-context.js";import{isRuntimeRecord}from"./runtime-input.js";import{resolveStartTaskInProgressStatus}from"./start-task-status.js";import{auditMergeAttributeFence,buildMergeAttributePatterns,findGitWorkspaceRoot,installMergeFence,refreshMergeAttributeFenceIfInstalled,resolveMergeInstallContext,resolveProjectMergeTypeFolders,runMergeInstall}from"./merge/install.js";import{deriveSchemaEvolutionMigrationId,formatSchemaEvolutionMigrationHuman,planSchemaEvolutionMigration,runSchemaEvolutionMigration}from"./schema-migration.js";import{runWithActiveExtensions}from"./runtime.js";import{applyInvocationAuthorOverride}from"./invocation-author.js";import{evaluateMutationGuard,getMutationActionContract,isMutationAction,listMutationActions,PM_MUTATION_ACTION_CONTRACTS,scanMutationSecrets}from"./mutation-guard.js";import{findSimilarItems,findDuplicateClusters,evaluateSimilarityGovernance,similarityAdvisoryWarnings,jaccardSimilarity,normalizeSimilarityText,prepareSimilarityText,scoreItemSimilarity,scorePreparedItemSimilarity,tokenizeSimilarityText}from"./similarity.js";import{inspectStaleInProgressItems,scanStaleInProgressItems}from"./governance/stale-work.js";import{describeItemOwnershipConflict}from"./ownership-source.js";import{discoverNearbyPmRoot}from"./tracker-root-discovery.js";import{assertInitializedTracker,assertReadableTrackerRoot,buildTrackerInitializationRecovery}from"./environment/tracker-preflight.js";import{_testOnly}from"./templates.js";import{runConfig,_testOnlyConfigCommand}from"./config.js";export*from"./agent/identity-config.js";import{INIT_AGENT_GUIDANCE_MODE_VALUES,runInitAgentGuidance,_testOnly as _testOnly2}from"./init-agent-guidance.js";import{runInit,summarizeInitResult,_testOnly as _testOnly3}from"./init.js";import{PROFILE_SUBCOMMANDS,formatProfileApplyHuman,formatProfileLintHuman,formatProfileListHuman,formatProfileShowHuman,runProfileApply,runProfileLint,runProfileList,runProfileShow}from"./profile.js";export*from"./extension-contracts.js";import{RESERVED_ITEM_FIELD_NAMES}from"../core/extensions/item-fields.js";import{PM_PACKAGE_CONVENTIONAL_RESOURCE_ROOTS,PM_PACKAGE_RESOURCE_KINDS,collectPackageExtensionDirectories,readPmPackageManifest}from"../core/packages/manifest.js";import{ACTIVITY_FLAG_CONTRACTS,ACTIVITY_COMMANDER_STRING_OPTION_CONTRACTS,AGGREGATE_FLAG_CONTRACTS,ASSURANCE_FLAG_CONTRACTS,APPEND_FLAG_CONTRACTS,CALENDAR_COMMANDER_STRING_OPTION_CONTRACTS,CALENDAR_FLAG_CONTRACTS,CLAIM_FLAG_CONTRACTS,CLOSE_ACTION_OPTION_KEYS,CLOSE_FLAG_CONTRACTS,CLOSE_MANY_FLAG_CONTRACTS,CLOSE_TASK_FLAG_CONTRACTS,COMMENTS_FLAG_CONTRACTS,COMPLETION_FLAG_CONTRACTS,CONFIG_FLAG_CONTRACTS,CONTEXT_COMMANDER_STRING_OPTION_CONTRACTS,CONTEXT_FLAG_CONTRACTS,CONTRACTS_FLAG_CONTRACTS,COPY_FLAG_CONTRACTS,CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,CREATE_COMMANDER_STRING_OPTION_CONTRACTS,CREATE_FLAG_CONTRACTS,DELETE_FLAG_CONTRACTS,DEPS_FLAG_CONTRACTS,DOCS_FLAG_CONTRACTS,EVAL_FLAG_CONTRACTS,EVENT_FLAG_CONTRACTS,EVENTS_FLAG_CONTRACTS,EXTENSION_ACTIVATE_FLAG_CONTRACTS,EXTENSION_ADOPT_ALL_FLAG_CONTRACTS,EXTENSION_ADOPT_FLAG_CONTRACTS,EXTENSION_CATALOG_FLAG_CONTRACTS,EXTENSION_DEACTIVATE_FLAG_CONTRACTS,EXTENSION_DESCRIBE_FLAG_CONTRACTS,EXTENSION_DOCTOR_FLAG_CONTRACTS,EXTENSION_EXPLORE_FLAG_CONTRACTS,EXTENSION_FLAG_CONTRACTS,EXTENSION_INIT_FLAG_CONTRACTS,EXTENSION_INSTALL_FLAG_CONTRACTS,EXTENSION_MANAGE_FLAG_CONTRACTS,EXTENSION_MIGRATE_FLAG_CONTRACTS,EXTENSION_RELOAD_FLAG_CONTRACTS,EXTENSION_SCOPE_FLAG_CONTRACTS,EXTENSION_UNINSTALL_FLAG_CONTRACTS,FILES_FLAG_CONTRACTS,FOCUS_FLAG_CONTRACTS,GC_FLAG_CONTRACTS,GET_FLAG_CONTRACTS,GRAPH_FLAG_CONTRACTS,GLOBAL_FLAG_CONTRACTS,GUIDE_FLAG_CONTRACTS,HEALTH_FLAG_CONTRACTS,HISTORY_COMPACT_FLAG_CONTRACTS,HISTORY_FLAG_CONTRACTS,HISTORY_REDACT_FLAG_CONTRACTS,HISTORY_REPAIR_FLAG_CONTRACTS,HISTORY_AUTHOR_ACKNOWLEDGE_FLAG_CONTRACTS,INIT_FLAG_CONTRACTS,INSTALL_FLAG_CONTRACTS,ITEM_MUTATE_FLAG_CONTRACTS,ITEM_COMPLETE_FLAG_CONTRACTS,ITEM_REOPEN_FLAG_CONTRACTS,LEARNINGS_FLAG_CONTRACTS,LIST_COMMANDER_STRING_OPTION_CONTRACTS,LIST_FILTER_FLAG_CONTRACTS,MEET_FLAG_CONTRACTS,MERGE_FLAG_CONTRACTS,NEXT_COMMANDER_STRING_OPTION_CONTRACTS,NEXT_FLAG_CONTRACTS,NOTES_FLAG_CONTRACTS,PACKAGE_FLAG_CONTRACTS,PACKAGE_INIT_FLAG_CONTRACTS,PAUSE_TASK_FLAG_CONTRACTS,PLAN_CREATE_METADATA_PARAMETER_KEYS,PLAN_FLAG_CONTRACTS,PM_COMMAND_OUTPUT_BUDGET_CONTRACTS,PM_DIAGNOSTIC_DEGRADATION_STEPS,PM_DIAGNOSTIC_OUTPUT_BUDGET_CONTRACTS,PM_DIAGNOSTIC_OUTPUT_CLASSES,PM_CLI_ONLY_TOOL_ACTION_WAIVERS,PM_CORE_COMMAND_NAMES,PM_EXTENSION_PACKAGE_ACTION_SUBCOMMANDS,PM_PACKAGE_ONLY_ACTION_SUBCOMMANDS,PM_ITEM_ACTION_SUBCOMMANDS,PM_DEPRECATED_TOOL_ACTIONS,PM_DISCOVERABLE_TOOL_ACTIONS,PM_EXTENSION_CAPABILITY_CONTRACTS,PM_EXTENSION_POLICY_MODE_CONTRACTS,PM_EXTENSION_POLICY_SURFACE_CONTRACTS,PM_EXTENSION_SANDBOX_PROFILE_CONTRACTS,PM_EXTENSION_SERVICE_NAME_CONTRACTS,PM_EXTENSION_TRUST_MODE_CONTRACTS,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA_VERSION,PM_TOOL_ACTIONS,analyzePmToolActionParity,PM_TOOL_ACTION_PARAMETER_CONTRACTS,PM_TOOL_PARAMETERS_SCHEMA,PM_TOOL_PARAMETERS_SCHEMA_MAJOR,PM_TOOL_PARAMETERS_SCHEMA_VERSION,PM_OUTPUT_BUDGET_CLASSES,PM_OUTPUT_DEGRADATION_STEPS,PROFILE_FLAG_CONTRACTS,REINDEX_FLAG_CONTRACTS,RELEASE_FLAG_CONTRACTS,REMIND_FLAG_CONTRACTS,RESTORE_FLAG_CONTRACTS,SCHEMA_FLAG_CONTRACTS,SEARCH_COMMANDER_STRING_OPTION_CONTRACTS,SEARCH_FLAG_CONTRACTS,START_TASK_FLAG_CONTRACTS,STATS_FLAG_CONTRACTS,DUPLICATES_FLAG_CONTRACTS,SUBCOMMAND_GLOBAL_FLAG_CONTRACTS,TELEMETRY_FLAG_CONTRACTS,TEST_ALL_FLAG_CONTRACTS,TEST_FLAG_CONTRACTS,TEST_RUNS_FLAG_CONTRACTS,TOOL_ACTIVITY_OPTION_CONTRACTS,TOOL_AGGREGATE_OPTION_CONTRACTS,TOOL_BULK_MUTATION_FILTER_OPTION_CONTRACT_SOURCE,TOOL_CALENDAR_OPTION_CONTRACTS,TOOL_CLOSE_MANY_FILTER_OPTION_CONTRACTS,TOOL_CONTEXT_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACT_SOURCE,TOOL_DEPS_OPTION_CONTRACTS,TOOL_GRAPH_OPTION_CONTRACTS,TOOL_LIST_FILTER_OPTION_CONTRACTS,TOOL_SEARCH_FILTER_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACT_SOURCE,TOOL_UPDATE_MANY_FILTER_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACT_SOURCE,verifyToolOptionCliParity,UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,UPDATE_COMMANDER_STRING_OPTION_CONTRACTS,UPDATE_FLAG_CONTRACTS,UPDATE_MANY_FLAG_CONTRACTS,UPGRADE_FLAG_CONTRACTS,VALIDATE_FLAG_CONTRACTS,WORKSPACE_FLAG_CONTRACTS,buildPmActionToolInputSchema,PM_TOOL_RESERVED_CUSTOM_FIELD_PROPERTIES,compactFlagAliasContracts,createPmCommandOutputBudget,definePmCommandOutputBudget,estimatePmOutputTokens,inferPmOutputBudgetClass,projectPmDiagnosticOutput,projectPmDiagnosticText,analyzeSdkCliParameterCompleteness,isPmExtensionCapabilityContract,isPmExtensionPolicyModeContract,isPmExtensionPolicySurfaceContract,isPmExtensionServiceNameContract,isPmToolAction,hasSubcommandFlagContractsForCommand,readFirstStringFromCommanderOptions,readFirstValueFromCommanderOptions,readStringArrayFromCommanderOptions,resolvePmPositionalActionFlagContracts,resolveSubcommandFlagContractsForCommand,resolvePmCommandOutputBudget,resolvePmDiagnosticOutputBudget,resolvePmToolCustomFieldCollision,toCompletionFlagString,withFlagAliasMetadata}from"./cli-contracts.js";export*from"./compose.js";export*from"./governance/assurance.js";export*from"./governance/assurance-action.js";export*from"./governance/assurance-runtime.js";export*from"./governance/assurance-presets.js";export*from"./governance/boundary-fixtures.js";export*from"./governance/defect-recurrence.js";export*from"./governance/merge-receipt-history.js";export*from"./compile-cache.js";export*from"./environment/project-runtime-compatibility.js";export*from"./environment/source-context.js";export*from"./environment/host-environment-errors.js";export*from"./cli-contracts/command-exit-contracts.js";export*from"./context-relevance.js";export*from"./context/recency.js";export*from"./context-intent-contracts.js";export*from"./context-intent-runtime.js";export*from"./context-signal-store.js";export*from"./workspace-memory.js";export*from"./lifecycle-completion.js";export*from"./lifecycle-policy.js";export*from"./output-projection.js";export*from"./read-output-contracts.js";export*from"./read-output-rows.js";export*from"./read-output-session.js";export*from"./output-token-accounting.js";export*from"./context-packing.js";export*from"./context-usage.js";import{classifyHistoryEvent,HISTORY_EVENT_CLASSIFICATION_VERSION,MAINTENANCE_HISTORY_OPERATIONS,SUBSTANTIVE_HISTORY_OPERATIONS}from"../core/history/event-classification.js";export*from"./dependency-provenance.js";export*from"./duplicates.js";export*from"./lifecycle/reopen.js";export*from"./history-compact.js";export*from"./history-read.js";export*from"./history/maintenance.js";import{readHistorySnapshot}from"../core/history/read.js";export*from"./history-provenance.js";export*from"./mutation-events.js";export*from"./history-redact.js";import{_testOnly as _testOnly4}from"./history-redact.js";export*from"./history-repair.js";export*from"./item-children.js";export*from"./item-schedule.js";export*from"./merge/index.js";import{runDeps}from"./dependencies.js";export*from"./graph/index.js";import{runDocs}from"./docs.js";import{runFiles,runFilesDiscover,runFilesLookup}from"./files.js";import{applyPathMigrations,applyStandaloneNote,artifactKey,assertLinkedArtifactMutationIsUnambiguous,dedupeLinkedArtifacts,ensureScope,expandAddGlobEntries,normalizeLinkedPath,parseAddEntries,parseAddGlobEntries,parseMigrateEntries,parseRemoveEntries,renameArtifactsResultKey,runLinkedArtifacts,sortLinkedArtifacts,validateLinkedPaths}from"./linked-artifacts.js";export*from"./pagination.js";export*from"./query/item-filter-options.js";export*from"./query/parsers.js";export*from"./output.js";export*from"./output-contracts.js";export*from"./agent/task-transcript-contracts.js";export*from"./relationship-analytics.js";export*from"./relationship-context.js";export*from"./relationship-history.js";export*from"./relationship-migration.js";export*from"./workspace-transaction.js";export*from"./workspace-transaction-gc.js";export*from"./item-transaction.js";export*from"./item-metadata-index.js";export*from"./structured-mutations.js";export*from"./runtime-primitives.js";export*from"./error-runtime.js";export*from"./error-code-catalog.js";export*from"./generated-error-code-catalog.js";export*from"./agent/refusal-reachability.js";export*from"./agent/refusal-closure-census.js";export*from"./agent/refusal-closure.js";export*from"./agent/closed-domain-contracts.js";export*from"./agent/refusal-corpus-contracts.js";import{MERGE_SUBCOMMAND_VALUES}from"./cli-contracts.js";export*from"./agent/tracker-preflight-contracts.js";export*from"./agent/subcommand-recovery.js";export*from"./flag-invocation-contracts.js";export*from"./cli-contracts/flag-lexicon-contracts.js";export*from"./relationships.js";export*from"./actionability.js";import{runCreate}from"./lifecycle/create.js";import{runPlan}from"./lifecycle/plan.js";import{runAppend}from"./lifecycle/append.js";import{isAlreadyClaimedError,runClaim,runClaimNext,runRelease}from"./lifecycle/claim.js";import{runStartTask,runPauseTask,runCloseTask}from"./lifecycle/task-composition.js";import{runCloseMany}from"./lifecycle/close-many.js";import{runUpdateMany}from"./lifecycle/update-many.js";import{runComments}from"./comments.js";import{runNotes}from"./notes.js";import{runLearnings}from"./learnings.js";import{runUpgrade}from"./governance/upgrade.js";import{PLAN_SHOW_DEPTH_VALUES,PLAN_SUBCOMMANDS,PLAN_TEMPLATE_NAMES}from"./lifecycle/plan.js";export*from"./define.js";import{BASELINE_ITEM_FORMAT_VERSION,BUILTIN_ITEM_TYPE_VALUES,CONFIDENCE_TEXT_VALUES,CURRENT_ITEM_FORMAT_VERSION,DEPENDENCY_KIND_VALUES,EXIT_CODE,ISSUE_SEVERITY_VALUES,ITEM_TYPE_VALUES,PM_CLI_EXPECTED_ERROR_NAME,PmCliError,PmClient,RISK_VALUES,STATUS_VALUES,acquireLock,appendHistoryEntry,canonicalDocument,classifyItemFormatVersion,clearWorkspaceContractsCache,commitImportedItem,createHistoryEntry,createPmCliExpectedError,effectiveItemFormatVersion,emptyImportedDocument,ensureTrackerInitialized,generateItemId,getActiveExtensionRegistrations,getContracts,getHistoryPath,getItemPath,getSettingsPath,getWorkspaceContracts,isPmCliExpectedError,isTimestampLiteral,listAllItemMetadata,loadCreateTemplateOptions,locateItem,normalizeItemMetadata,normalizeItemFormatVersion,normalizeItemId,normalizeRawItemId,normalizeStatusInput,nowIso,parseTags,pathExists,readBooleanOption,readCsvListOption,readFileIfExists,readLocatedItem,readRequiredString,readSettings,readStringOption,removeFileIfExists,renderCalendarMarkdown,renderCalendarToon,renderGuideMarkdown,resolveCalendarOutputFormat,resolveGuideOutputFormat,resolveItemTypeRegistry,resolveImplicitPmRoot,resolvePmRoot,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,runAction,runActiveOnReadHooks,runActiveOnWriteHooks,runCalendar,runCompletion,runGuide,runList,runReindex,runSearch,runTemplatesList,runTemplatesSave,runTemplatesShow,runTestRunsList,runTestRunsLogs,runTestRunsResume,runTestRunsStatus,runTestRunsStop,scanItemFormatVersions,selectImportAuthor,serializeItemDocument,splitFrontMatter,toEstimatedMinutesValue,toImportBoolean,toImportConfidence,toImportInteger,toImportLinkedDocs,toImportLinkedFiles,toImportLinkedTests,toImportLogEntries,toImportNormalizedEnum,toImportNumberMap,toImportPriority,toImportStatus,toImportStringList,toImportStringMap,toImportTags,toNonEmptyImportString,writeFileAtomic,aggregate,append,claim,claimNext,close,reopen,closeTask,comments,config,context,copy,create,deleteItem,deps,docs,duplicates,extension,extensionActivate,extensionDeactivate,extensionList,files,filesDiscover,filesLookup,focus,gc,get,graph,health,historyCompact,historyCompactBulk,historyRedact,historyRepair,historyRepairAll,init,learnings,list,listAllComplete,next,notes,packageActivate,packageCatalog,packageDeactivate,packageDescribe,packageDoctor,packageInstall,packageLifecycle,packageList,packageManage,packageReload,packageUninstall,pauseTask,profile,profileApply,profileLint,profileList,profileShow,release,restore,schema,schemaAddField,schemaAddStatus,schemaAddType,schemaApplyPreset,schemaInferTypes,schemaList,schemaListFields,schemaRemapStatus,schemaRemoveField,schemaRemoveStatus,schemaRemoveType,schemaShow,schemaShowField,schemaShowStatus,schemaRenameField,schemaRenameType,search,startTask,stats,update,upgrade,validate}from"./runtime.js";import{extensionMigrate,packageMigrate}from"./package-migrations.js";import{CONTEXT_OUTPUT_VALUES,NEXT_OUTPUT_VALUES,PM_GITIGNORE_END,PM_GITIGNORE_START,analyzeSdkActionCoverage,ensurePmGitignore,getPmGitignoreBlock,closeItem,runAggregate,runClose,runCopy,runContext,runDelete,runFocus,runGet,runNext,runRestore,runUpdate}from"./runtime.js";import{runStats}from"./stats.js";import{readImprovementLedger,recordImprovementObservation}from"./improvement-ledger.js";import{evaluateProvenanceCoverage,projectFleetAttributionAnalytics,projectProvenanceCoverageAnalytics,readHistoryAnalyticsWindow,runFleetAttributionAnalytics,runProvenanceCoverageAnalytics}from"./history-analytics.js";import{DEFAULT_EVAL_QUERIES_RELATIVE_PATH,EVAL_QUERY_SET_CONTRACT,EVAL_QUERY_SET_EXAMPLE,EVAL_QUERY_SET_SCHEMA_ID,parseEvalQuerySet,runEval}from"./eval.js";import{runTelemetry,TELEMETRY_SUBCOMMANDS}from"./telemetry.js";import{classifyLinkedTestCommandSafety,classifyLinkedTestFailure,countFailureCategories,extractReferencedPmItemIdsFromCommand,resolveLinkedTestFailureExitCode,runLinkedTests,runTest,summarizeContextPreflight}from"./test/execution.js";import{TEST_RUN_MEASUREMENT_LIMIT,diffTestRunMeasurements,parseTestRunMeasurements,queryTestRunMeasurementsBelow}from"./test/measurements.js";import{runTestAll}from"./test/batch.js";import{LINKED_TEST_ENV_NAME_PATTERN,LINKED_TEST_PM_CONTEXT_MODE_VALUES,LINKED_TEST_WORKSPACE_CONTEXT_MODE_VALUES,LINKED_TEST_PROTECTED_ENV_KEYS,parseLinkedTestAssertionEqualsMap,parseLinkedTestAssertionGteMap,parseLinkedTestBoolean,parseLinkedTestContextMode,parseLinkedTestEnvClear,parseLinkedTestEnvSet,parseLinkedTestJsonEntries,parseLinkedTestMinLines,parseLinkedTestRegexList,parseLinkedTestStringList,parseLinkedTestWorkspaceContextMode}from"./test/parsers.js";import{acknowledgeLinkedTests,attachLinkedTestMutationProvenance,attachLinkedTestProvenance,linkedTestTrustFingerprint,resolveLinkedTestSourceRef,resolveLinkedTestSourceWorkspaceRoot,resolveLinkedTestTrust,resolveLinkedTestTrustBatch}from"./test/trust.js";import{runStartBackgroundRun,runTestRunsWorker}from"./test/runs.js";import{BUILTIN_PROFILES,listProfiles,normalizeProfileName,PROFILE_NAMES,resolveProfile}from"../core/profile/profile-presets.js";import{planProfileApplication}from"../core/profile/profile-plan.js";import{describeProfileComposition,describeProjectProfile}from"../core/profile/profile-describe.js";import{lintProjectProfile,PROFILE_LINT_CODES,PROFILE_LINT_DIMENSIONS}from"../core/profile/profile-lint.js";export*from"./authoring.js";export*from"./governance.js";export*from"./mcp/discovery.js";export*from"./query.js";export*from"./testing.js";export{ACTIVITY_COMMANDER_STRING_OPTION_CONTRACTS,ACTIVITY_FLAG_CONTRACTS,AGGREGATE_FLAG_CONTRACTS,APPEND_FLAG_CONTRACTS,ASSURANCE_FLAG_CONTRACTS,BASELINE_ITEM_FORMAT_VERSION,BUILTIN_CORPUS_SHAPES,BUILTIN_ITEM_TYPE_VALUES,BUILTIN_PROFILES,CALENDAR_COMMANDER_STRING_OPTION_CONTRACTS,CALENDAR_FLAG_CONTRACTS,CLAIM_FLAG_CONTRACTS,CLOSE_ACTION_OPTION_KEYS,CLOSE_FLAG_CONTRACTS,CLOSE_MANY_FLAG_CONTRACTS,CLOSE_TASK_FLAG_CONTRACTS,COMMENTS_FLAG_CONTRACTS,COMPLETION_FLAG_CONTRACTS,CONFIDENCE_TEXT_VALUES,CONFIG_FLAG_CONTRACTS,CONTEXT_COMMANDER_STRING_OPTION_CONTRACTS,CONTEXT_FLAG_CONTRACTS,CONTEXT_OUTPUT_VALUES,CONTRACTS_FLAG_CONTRACTS,COPY_FLAG_CONTRACTS,CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,CREATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,CREATE_COMMANDER_STRING_OPTION_CONTRACTS,CREATE_FLAG_CONTRACTS,CURRENT_ITEM_FORMAT_VERSION,DEFAULT_EVAL_QUERIES_RELATIVE_PATH,DELETE_FLAG_CONTRACTS,DEPENDENCY_KIND_VALUES,DEPS_FLAG_CONTRACTS,DOCS_FLAG_CONTRACTS,DUPLICATES_FLAG_CONTRACTS,EVAL_FLAG_CONTRACTS,EVAL_QUERY_SET_CONTRACT,EVAL_QUERY_SET_EXAMPLE,EVAL_QUERY_SET_SCHEMA_ID,EVENTS_FLAG_CONTRACTS,EVENT_FLAG_CONTRACTS,EXECUTABLE_COMMAND_ALIASES,EXIT_CODE,EXTENSION_ACTIVATE_FLAG_CONTRACTS,EXTENSION_ADOPT_ALL_FLAG_CONTRACTS,EXTENSION_ADOPT_FLAG_CONTRACTS,EXTENSION_CATALOG_FLAG_CONTRACTS,EXTENSION_DEACTIVATE_FLAG_CONTRACTS,EXTENSION_DESCRIBE_FLAG_CONTRACTS,EXTENSION_DOCTOR_FLAG_CONTRACTS,EXTENSION_EXPLORE_FLAG_CONTRACTS,EXTENSION_FLAG_CONTRACTS,EXTENSION_INIT_FLAG_CONTRACTS,EXTENSION_INSTALL_FLAG_CONTRACTS,EXTENSION_MANAGE_FLAG_CONTRACTS,EXTENSION_MIGRATE_FLAG_CONTRACTS,EXTENSION_RELOAD_FLAG_CONTRACTS,EXTENSION_SCOPE_FLAG_CONTRACTS,EXTENSION_UNINSTALL_FLAG_CONTRACTS,FILES_FLAG_CONTRACTS,FOCUS_FLAG_CONTRACTS,GC_FLAG_CONTRACTS,GET_FLAG_CONTRACTS,GLOBAL_FLAG_CONTRACTS,GRAPH_FLAG_CONTRACTS,GUIDE_FLAG_CONTRACTS,HEALTH_FLAG_CONTRACTS,HISTORY_AUTHOR_ACKNOWLEDGE_FLAG_CONTRACTS,HISTORY_COMPACT_FLAG_CONTRACTS,HISTORY_EVENT_CLASSIFICATION_VERSION,HISTORY_FLAG_CONTRACTS,HISTORY_REDACT_FLAG_CONTRACTS,HISTORY_REPAIR_FLAG_CONTRACTS,INIT_AGENT_GUIDANCE_MODE_VALUES,INIT_FLAG_CONTRACTS,INSTALL_FLAG_CONTRACTS,ISSUE_SEVERITY_VALUES,ITEM_COMPLETE_FLAG_CONTRACTS,ITEM_MUTATE_FLAG_CONTRACTS,ITEM_REOPEN_FLAG_CONTRACTS,ITEM_TYPE_VALUES,LEARNINGS_FLAG_CONTRACTS,LINKED_TEST_ENV_NAME_PATTERN,LINKED_TEST_PM_CONTEXT_MODE_VALUES,LINKED_TEST_PROTECTED_ENV_KEYS,LINKED_TEST_WORKSPACE_CONTEXT_MODE_VALUES,LIST_COMMANDER_STRING_OPTION_CONTRACTS,LIST_FILTER_FLAG_CONTRACTS,MAINTENANCE_HISTORY_OPERATIONS,MEET_FLAG_CONTRACTS,MERGE_FLAG_CONTRACTS,MERGE_SUBCOMMAND_VALUES,NEXT_COMMANDER_STRING_OPTION_CONTRACTS,NEXT_FLAG_CONTRACTS,NEXT_OUTPUT_VALUES,NOTES_FLAG_CONTRACTS,PACKAGE_FLAG_CONTRACTS,PACKAGE_INIT_FLAG_CONTRACTS,PAUSE_TASK_FLAG_CONTRACTS,PLAN_CREATE_METADATA_PARAMETER_KEYS,PLAN_FLAG_CONTRACTS,PLAN_SHOW_DEPTH_VALUES,PLAN_SUBCOMMANDS,PLAN_TEMPLATE_NAMES,PM_BULK_LIFECYCLE_COMMAND_ALIASES,PM_CLI_EXPECTED_ERROR_NAME,PM_CLI_ONLY_TOOL_ACTION_WAIVERS,PM_COMMAND_ALIAS_CONTRACTS,PM_COMMAND_CAPABILITY_CONTRACTS,PM_COMMAND_OUTPUT_BUDGET_CONTRACTS,PM_COMMAND_VISIBILITY_CONTRACTS,PM_CONTEXT_OPS_COMMAND_ALIASES,PM_CORE_COMMAND_NAMES,PM_CORPUS_SHAPE_SCHEMA,PM_DEPRECATED_TOOL_ACTIONS,PM_DIAGNOSTIC_DEGRADATION_STEPS,PM_DIAGNOSTIC_OUTPUT_BUDGET_CONTRACTS,PM_DIAGNOSTIC_OUTPUT_CLASSES,PM_DISCOVERABLE_TOOL_ACTIONS,PM_EXACT_COVERAGE_METRICS,PM_EXTENSION_CAPABILITY_CONTRACTS,PM_EXTENSION_PACKAGE_ACTION_SUBCOMMANDS,PM_EXTENSION_POLICY_MODE_CONTRACTS,PM_EXTENSION_POLICY_SURFACE_CONTRACTS,PM_EXTENSION_SANDBOX_PROFILE_CONTRACTS,PM_EXTENSION_SERVICE_NAME_CONTRACTS,PM_EXTENSION_TRUST_MODE_CONTRACTS,PM_GITIGNORE_END,PM_GITIGNORE_START,PM_HISTORY_COMMAND_ALIASES,PM_ITEM_ACTION_SUBCOMMANDS,PM_MCP_PROMPT_CONTRACTS,PM_MCP_RESOURCE_CONTRACTS,PM_MCP_TOOL_COMMAND_CONTRACTS,PM_MUTATION_ACTION_CONTRACTS,PM_NAMESPACED_COMMAND_ALIASES,PM_OUTPUT_BUDGET_CLASSES,PM_OUTPUT_DEGRADATION_STEPS,PM_PACKAGE_CONVENTIONAL_RESOURCE_ROOTS,PM_PACKAGE_ONLY_ACTION_SUBCOMMANDS,PM_PACKAGE_RESOURCE_KINDS,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA,PM_PROVIDER_TOOL_PARAMETERS_SCHEMA_VERSION,PM_RELOCATED_COMMAND_ALIASES,PM_REPRODUCIBLE_PROCESS_ENV,PM_TOOL_ACTIONS,PM_TOOL_ACTION_PARAMETER_CONTRACTS,PM_TOOL_PARAMETERS_SCHEMA,PM_TOOL_PARAMETERS_SCHEMA_MAJOR,PM_TOOL_PARAMETERS_SCHEMA_VERSION,PM_TOOL_RESERVED_CUSTOM_FIELD_PROPERTIES,PM_WORKSPACE_RECIPE_SCHEMA,PROFILE_FLAG_CONTRACTS,PROFILE_LINT_CODES,PROFILE_LINT_DIMENSIONS,PROFILE_NAMES,PROFILE_SUBCOMMANDS,PmCliError,PmClient,REINDEX_FLAG_CONTRACTS,RELEASE_FLAG_CONTRACTS,REMIND_FLAG_CONTRACTS,RESERVED_ITEM_FIELD_NAMES,RESTORE_FLAG_CONTRACTS,RISK_VALUES,SCHEMA_FLAG_CONTRACTS,SEARCH_COMMANDER_STRING_OPTION_CONTRACTS,SEARCH_FLAG_CONTRACTS,SNAPSHOT_SCHEMA,START_TASK_FLAG_CONTRACTS,STATS_FLAG_CONTRACTS,STATUS_VALUES,SUBCOMMAND_GLOBAL_FLAG_CONTRACTS,SUBSTANTIVE_HISTORY_OPERATIONS,TELEMETRY_FLAG_CONTRACTS,TELEMETRY_SUBCOMMANDS,TEST_ALL_FLAG_CONTRACTS,TEST_FLAG_CONTRACTS,TEST_RUNS_FLAG_CONTRACTS,TEST_RUN_MEASUREMENT_LIMIT,TOOL_ACTIVITY_OPTION_CONTRACTS,TOOL_AGGREGATE_OPTION_CONTRACTS,TOOL_BULK_MUTATION_FILTER_OPTION_CONTRACT_SOURCE,TOOL_CALENDAR_OPTION_CONTRACTS,TOOL_CLOSE_MANY_FILTER_OPTION_CONTRACTS,TOOL_CONTEXT_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACTS,TOOL_CREATE_OPTION_CONTRACT_SOURCE,TOOL_DEPS_OPTION_CONTRACTS,TOOL_GRAPH_OPTION_CONTRACTS,TOOL_LIST_FILTER_OPTION_CONTRACTS,TOOL_SEARCH_FILTER_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACTS,TOOL_SHARED_CREATE_UPDATE_OPTION_CONTRACT_SOURCE,TOOL_UPDATE_MANY_FILTER_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACTS,TOOL_UPDATE_OPTION_CONTRACT_SOURCE,UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,UPDATE_COMMANDER_REPEATABLE_OPTION_CONTRACTS,UPDATE_COMMANDER_STRING_OPTION_CONTRACTS,UPDATE_FLAG_CONTRACTS,UPDATE_MANY_FLAG_CONTRACTS,UPGRADE_FLAG_CONTRACTS,VALIDATE_FLAG_CONTRACTS,WORKSPACE_FLAG_CONTRACTS,WORKSPACE_SNAPSHOT_ACTIONS,_testOnly4 as _testOnly,_testOnlyConfigCommand,_testOnlyHealthCommand,_testOnly3 as _testOnlyInit,_testOnly2 as _testOnlyInitAgentGuidance,_testOnly as _testOnlyTemplates,_testOnlyValidateCommand,acknowledgeLinkedTests,acknowledgeUnknownAuthorHistoryEvents,acknowledgeUnknownAuthorHistoryEventsFromTransport,acquireLock,aggregate,analyzePmToolActionParity,analyzeSdkActionCoverage,analyzeSdkCliParameterCompleteness,append,appendHistoryEntry,applyBootstrapPagerPolicy,applyInvocationAuthorOverride,applyPathMigrations,applyStandaloneNote,applyStoredExtensionMigrationState,artifactKey,assertInitializedTracker,assertLinkedArtifactMutationIsUnambiguous,assertReadableTrackerRoot,attachLinkedTestMutationProvenance,attachLinkedTestProvenance,auditMergeAttributeFence,buildCorpusShapeItemPlan,buildExtensionDescribeResult,buildExtensionInstallPlan,buildMergeAttributePatterns,buildPmActionToolInputSchema,buildTrackerInitializationRecovery,canonicalDocument,claim,claimNext,classifyHistoryEvent,classifyItemFormatVersion,classifyLinkedTestCommandSafety,classifyLinkedTestFailure,clearWorkspaceContractsCache,close,closeItem,closeTask,coalesceRepeatedListFlags,collectPackageExtensionDirectories,comments,commitImportedItem,compactFlagAliasContracts,config,context,copy,countFailureCategories,create,createCorpusShapeMeasurement,createExtensionCommandSdk,createHistoryEntry,createPmCliExpectedError,createPmCliProgram,createPmCommandOutputBudget,createReproducibleProcessRunner,createWorkspaceSnapshot,dedupeLinkedArtifacts,defineCorpusShape,definePmCommandOutputBudget,defineWorkspaceRecipe,deleteItem,deleteWorkspaceSnapshot,deps,deriveSchemaEvolutionMigrationId,describeItemOwnershipConflict,describeProfileComposition,describeProjectProfile,diffTestRunMeasurements,discoverNearbyPmRoot,docs,duplicates,effectiveItemFormatVersion,emptyImportedDocument,ensurePmGitignore,ensureScope,ensureTrackerInitialized,estimatePmOutputTokens,evaluateMutationGuard,evaluateProvenanceCoverage,evaluateSimilarityGovernance,executeWorkspaceRecipe,expandAddGlobEntries,extension,extensionActivate,extensionDeactivate,extensionList,extensionMigrate,extractReferencedPmItemIdsFromCommand,files,filesDiscover,filesLookup,findCoverageDeficits,findDuplicateClusters,findGitWorkspaceRoot,findInstalledNpmPackageCandidate,findSimilarItems,flushTelemetryQueue,focus,formatProfileApplyHuman,formatProfileLintHuman,formatProfileListHuman,formatProfileShowHuman,formatSchemaEvolutionMigrationHuman,gc,generateItemId,get,getActiveExtensionRegistrations,getContracts,getHistoryPath,getItemPath,getMutationActionContract,getPmGitignoreBlock,getSettingsPath,getWorkspaceContracts,graph,hasSubcommandFlagContractsForCommand,health,historyCompact,historyCompactBulk,historyRedact,historyRepair,historyRepairAll,inferPmOutputBudgetClass,init,inspectHistoryAuthorStream,inspectStaleInProgressItems,inspectWorkspaceSnapshot,installMergeFence,isAlreadyClaimedError,isErrnoError,isMutationAction,isPmCliExpectedError,isPmExtensionCapabilityContract,isPmExtensionPolicyModeContract,isPmExtensionPolicySurfaceContract,isPmExtensionServiceNameContract,isPmToolAction,isRuntimeRecord,isTimestampLiteral,jaccardSimilarity,learnings,limitAnnotationEntries,linkedTestTrustFingerprint,lintProjectProfile,list,listAliasPluralKeys,listAllComplete,listAllItemMetadata,listBuiltinCorpusShapes,listMutationActions,listPmCommandsForFamily,listPmCommandsForTier,listPmMcpToolsForProfile,listProfiles,listWorkspaceSnapshots,loadCreateTemplateOptions,locateItem,measureCorpusShapePlan,mergeLinkedTestTwoTokenEntries,next,normalizeAnnotationTransportOptions,normalizeBootstrapInvocation,normalizeItemFormatVersion,normalizeItemId,normalizeItemMetadata,normalizeLegacyExtensionActionSyntax,normalizeLinkedPath,normalizeProfileName,normalizeRawItemId,normalizeSimilarityText,normalizeStatusInput,notes,nowIso,packageActivate,packageCatalog,packageDeactivate,packageDescribe,packageDoctor,packageInstall,packageLifecycle,packageList,packageManage,packageMigrate,packageReload,packageUninstall,parseAddEntries,parseAddGlobEntries,parseAnnotationTextInput,parseBootstrapCommandName,parseBootstrapGlobalOptions,parseBootstrapHelpRequest,parseBootstrapTypeValue,parseEvalQuerySet,parseLinkedTestAssertionEqualsMap,parseLinkedTestAssertionGteMap,parseLinkedTestBoolean,parseLinkedTestContextMode,parseLinkedTestEnvClear,parseLinkedTestEnvSet,parseLinkedTestJsonEntries,parseLinkedTestMinLines,parseLinkedTestRegexList,parseLinkedTestStringList,parseLinkedTestWorkspaceContextMode,parseMigrateEntries,parseRemoveEntries,parseTags,parseTestRunMeasurements,parseUnknownAuthorHistoryEventCoordinates,pathExists,pauseTask,planExtensionDirectoryCopy,planProfileApplication,planSchemaEvolutionMigration,planUnknownAuthorHistoryAcknowledgment,planWorkspaceSnapshotRestore,prepareSimilarityText,profile,profileApply,profileLint,profileList,profileShow,projectFleetAttributionAnalytics,projectPmDiagnosticOutput,projectPmDiagnosticText,projectProvenanceCoverageAnalytics,projectValidateCounts,queryTestRunMeasurementsBelow,quoteCommandArg,quoteWindowsCommandArg,readAnnotationEntries,readBooleanOption,readCsvListOption,readExtensionMigrationState,readFileIfExists,readFirstStringFromCommanderOptions,readFirstValueFromCommanderOptions,readHistoryAnalyticsWindow,readHistorySnapshot,readImprovementLedger,readLocatedItem,readPmPackageManifest,readRequiredString,readSettings,readStringArrayFromCommanderOptions,readStringOption,recordImprovementObservation,refreshMergeAttributeFenceIfInstalled,release,removeFileIfExists,renameArtifactsResultKey,renderCalendarMarkdown,renderCalendarToon,renderExtensionDescribeMarkdown,renderGuideMarkdown,renderPmCommand,renderPmCommandAliasMigrationHint,renderPmCommandVisibilityMarkdown,reopen,resolveAnnotationIndex,resolveAnnotationInput,resolveBuiltinCorpusShape,resolveCalendarOutputFormat,resolveExtensionInstallSourceIdentity,resolveExtensionMigrationStatePath,resolveGuideOutputFormat,resolveImplicitPmRoot,resolveItemTypeRegistry,resolveLinkedTestFailureExitCode,resolveLinkedTestSourceRef,resolveLinkedTestSourceWorkspaceRoot,resolveLinkedTestTrust,resolveLinkedTestTrustBatch,resolveMergeInstallContext,resolvePmCommandAlias,resolvePmCommandCapabilityFamily,resolvePmCommandOperation,resolvePmCommandOutputBudget,resolvePmCommandVisibilityTier,resolvePmDiagnosticOutputBudget,resolvePmHistoryOperation,resolvePmPositionalActionFlagContracts,resolvePmRoot,resolvePmToolCustomFieldCollision,resolveProfile,resolveProjectMergeTypeFolders,resolveReproducibleProcessEnvironment,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,resolveStartTaskInProgressStatus,resolveSubcommandFlagContractsForCommand,resolveUnknownAuthorAcknowledgmentSelector,restore,restoreWorkspaceSnapshot,restoreWorkspaceSnapshotWithRecovery,runAction,runActiveOnReadHooks,runActiveOnWriteHooks,runAggregate,runAnnotationCommand,runAppend,runCalendar,runClaim,runClaimNext,runClose,runCloseMany,runCloseTask,runComments,runCompletion,runConfig,runContext,runCopy,runCreate,runDelete,runDeps,runDocs,runEval,runEvent,runExtension,runExtensionMigrateAction,runExtensionMigrations,runFiles,runFilesDiscover,runFilesLookup,runFleetAttributionAnalytics,runFocus,runGc,runGet,runGuide,runHealth,runInit,runInitAgentGuidance,runLearnings,runLinkedArtifacts,runLinkedTests,runList,runMeet,runMergeInstall,runNext,runNotes,runPauseTask,runPlan,runProfileApply,runProfileLint,runProfileList,runProfileShow,runProvenanceCoverageAnalytics,runReindex,runRelease,runRemind,runRestore,runSchemaEvolutionMigration,runSearch,runSearchRefreshWorkerEntrypoint,runStartBackgroundRun,runStartTask,runStats,runTelemetry,runTemplatesList,runTemplatesSave,runTemplatesShow,runTest,runTestAll,runTestRunsList,runTestRunsLogs,runTestRunsResume,runTestRunsStatus,runTestRunsStop,runTestRunsWorker,runUpdate,runUpdateMany,runUpgrade,runValidate,runWithActiveExtensions,runWithReproducibleProcessEnvironment,runWithWorkspaceRecipe,scanHistoryAuthorAttribution,scanItemFormatVersions,scanMutationSecrets,scanStaleInProgressItems,schema,schemaAddField,schemaAddStatus,schemaAddType,schemaApplyPreset,schemaInferTypes,schemaList,schemaListFields,schemaRemapStatus,schemaRemoveField,schemaRemoveStatus,schemaRemoveType,schemaRenameField,schemaRenameType,schemaShow,schemaShowField,schemaShowStatus,scoreItemSimilarity,scorePreparedItemSimilarity,search,selectImportAuthor,serializeItemDocument,similarityAdvisoryWarnings,sortLinkedArtifacts,splitFrontMatter,startTask,stats,stripGlobalBootstrapTokens,summarizeContextPreflight,summarizeInitResult,toCompletionFlagString,toEstimatedMinutesValue,toImportBoolean,toImportConfidence,toImportInteger,toImportLinkedDocs,toImportLinkedFiles,toImportLinkedTests,toImportLogEntries,toImportNormalizedEnum,toImportNumberMap,toImportPriority,toImportStatus,toImportStringList,toImportStringMap,toImportTags,toNonEmptyImportString,tokenizeSimilarityText,update,upgrade,validate,validateLinkedPaths,verifyToolOptionCliParity,withFlagAliasMetadata,wrapOwnershipConflict,writeFileAtomic};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="90cfbd3e-1656-54cc-a9f8-66bffe14685f")}catch(e2){}})();import{assertInitializedTracker}from"../environment/tracker-preflight.js";import{resolveRuntimeStatusRegistry,statusIsTerminal,EXIT_CODE,PmCliError,toItemRecord,mutateItem,resolvePmRoot,readSettings,resolveAuthor,resolveClaimPrincipal,normalizeStatusForRegistry}from"../runtime-primitives.js";import{wrapOwnershipConflict}from"../annotations.js";import{describeItemOwnershipConflict}from"../ownership-source.js";import{runNext}from"../query/next.js";import{recordClaimSemanticAttribution,recordReleaseSemanticAttribution}from"../context/semantic-session-attribution.js";const NO_AVAILABLE_NEXT_ITEM_CODE="no_available_next_item";function isAlreadyClaimedError(error){if(!(error instanceof Error)||error.name!=="PmCliError"){return false}const context=error.context;return typeof context==="object"&&context!==null&&"code"in context&&context.code==="already_claimed_by"}async function runClaim(id,force,global2,options={}){const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertInitializedTracker(pmRoot);const settings=await readSettings(pmRoot);const statusRegistry=resolveRuntimeStatusRegistry(settings.schema);const author=resolveAuthor(options.author,settings.author_default);const claimPrincipal=resolveClaimPrincipal(author);let previousAssignee=null;let skipped=false;const mutationWarnings=[];const result=await mutateItem({pmRoot,settings,id,op:"claim",author,message:options.message,force,skipNoop:true,async mutate(document){const currentAssignee=document.metadata.assignee;const currentAssigneeText=currentAssignee??"";const currentClaimPrincipal=document.metadata.claim_principal?.trim()||currentAssigneeText;previousAssignee=currentAssigneeText.trim().length>0?currentAssigneeText:null;if(statusIsTerminal(document.metadata.status,statusRegistry)&&!force){throw new PmCliError(`Cannot claim terminal item ${document.metadata.id} without --force`,EXIT_CODE.CONFLICT)}const heldByOther=previousAssignee!==null&&currentClaimPrincipal!==claimPrincipal;if(heldByOther){if(options.ifAvailable===true){skipped=true;mutationWarnings.push(`claim_skipped_held_by:${previousAssignee}`);return{changedFields:[]}}if(!force){const ownershipPhrase=await describeItemOwnershipConflict(pmRoot,document.metadata.id,currentAssigneeText);throw new PmCliError(`Item ${document.metadata.id} is already ${ownershipPhrase}. Use --force to take over, or --if-available to skip without failing.`,EXIT_CODE.CONFLICT,{code:"already_claimed_by",why:"Claim is an atomic test-and-set so parallel agents never proceed believing they own the same item.",nextSteps:["Run pm next to pick a different unclaimed item.","Re-run with --if-available to treat a held item as a no-op skip.","Re-run with --force only when taking over the item is coordinated."]})}mutationWarnings.push(`claim_takeover:${previousAssignee}->${author}`)}const ownership={assignee:author,claim_principal:claimPrincipal};const changedFields=["assignee","claim_principal"].filter(field=>document.metadata[field]!==ownership[field]);Object.assign(document.metadata,ownership);return{changedFields,warnings:mutationWarnings}}});if(!skipped){await recordClaimSemanticAttribution({pmRoot,settings,principal:claimPrincipal,itemId:result.item.id})}return{item:toItemRecord(result.item),changed_fields:result.changedFields,claimed_by:skipped&&previousAssignee!==null?previousAssignee:author,previous_assignee:previousAssignee,forced:force,...skipped?{skipped:true}:{},...mutationWarnings.length>0?{warnings:mutationWarnings}:{}}}async function runClaimNext(force,global2,options={},nextOptions={}){const maxAttempts=parseClaimNextAttempts(options.maxAttempts);const settings=await readSettings(resolvePmRoot(process.cwd(),global2.path));const claimOptions={...options,author:resolveAuthor(options.author,settings.author_default)};const next=await runNext({...nextOptions,callerAuthor:claimOptions.author,limit:String(maxAttempts)},global2);const recommendations=[next.recommended,...next.ready].filter(entry=>entry!==null).map(entry=>({...entry,reasons:"reasons"in entry?entry.reasons:["ranked ready candidate"]}));return claimNextFromRecommendations(recommendations.slice(0,maxAttempts),force,global2,claimOptions)}function parseClaimNextAttempts(raw){if(raw===void 0)return 10;const parsed=Number(raw);if(!Number.isSafeInteger(parsed)||parsed<1||parsed>100){throw new PmCliError("--max-attempts must be an integer from 1 to 100",EXIT_CODE.USAGE)}return parsed}async function claimNextFromRecommendations(recommendations,force,global2,options={},claimRunner=runClaim){let attempts=0;for(const recommendation of recommendations){attempts+=1;try{const claimed=await claimRunner(recommendation.id,force,global2,options);const result={...claimed,recommendation,attempts,available:true};if(!claimed.skipped)return result}catch(error){if(!isAlreadyClaimedError(error))throw error}}if(options.ifAvailable===true){return{available:false,item:null,claimed_by:resolveAuthor(options.author,""),previous_assignee:null,forced:force,skipped:true,recommendation:null,attempts,warnings:[NO_AVAILABLE_NEXT_ITEM_CODE]}}const noCandidatesMatched=attempts===0;throw new PmCliError(noCandidatesMatched?"No actionable items matched the selection filters":"No actionable item remained available to claim",noCandidatesMatched?EXIT_CODE.NOT_FOUND:EXIT_CODE.CONFLICT,{code:NO_AVAILABLE_NEXT_ITEM_CODE,why:noCandidatesMatched?"No ready items matched the specified filters or selection criteria.":"Every ranked candidate was claimed by another agent before this atomic selection completed.",nextSteps:[noCandidatesMatched?"Verify the filters or run pm next to inspect all ready work.":"Run pm claim --next again to refresh the ranked candidate set."]})}async function runRelease(id,force,global2,options={}){const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertInitializedTracker(pmRoot);const settings=await readSettings(pmRoot);const author=resolveAuthor(options.author,settings.author_default);const claimPrincipal=resolveClaimPrincipal(author);const ownershipReleaseBypass=options.ownershipReleaseBypass===true;let previousAssignee=null;let result;try{result=await mutateItem({pmRoot,settings,id,op:"release",author,message:options.message,force,bypassAssigneeConflict:ownershipReleaseBypass,mutate(document){previousAssignee=document.metadata.assignee??null;if(!previousAssignee&&!document.metadata.claim_principal){return{changedFields:[]}}delete document.metadata.assignee;delete document.metadata.claim_principal;return{changedFields:["assignee","claim_principal"]}}})}catch(error){wrapOwnershipConflict(error,{required:"For approved non-owner handoffs, prefer the ownership-release bypass before considering --force.",examples:['pm release pm-a1b2 --author "reviewer" --force'],nextSteps:["Use the package-provided ownership-release bypass for handoffs that only clear assignee metadata.","Use --force only when an explicit override is approved for broader ownership conflicts."]})}await recordReleaseSemanticAttribution({pmRoot,principal:claimPrincipal,itemId:result.item.id});const statusRegistry=resolveRuntimeStatusRegistry(settings.schema);const stillInProgress=normalizeStatusForRegistry(result.item.status,statusRegistry)===normalizeStatusForRegistry(statusRegistry.in_progress_status,statusRegistry);return{item:toItemRecord(result.item),released_by:author,previous_assignee:previousAssignee,forced:force,...stillInProgress?{warnings:["released_unclaimed_in_progress"],suggestions:[`${result.item.id} remains ${result.item.status} and unclaimed. If work is paused, run pm pause-task ${result.item.id} to move it to ${statusRegistry.open_status}.`]}:{}}}export{NO_AVAILABLE_NEXT_ITEM_CODE,claimNextFromRecommendations,isAlreadyClaimedError,parseClaimNextAttempts,runClaim,runClaimNext,runRelease};
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]="c9c1089b-b070-5a89-af49-f6be643c49e5")}catch(e2){}})();import{assertInitializedTracker}from"../environment/tracker-preflight.js";import{resolveRuntimeStatusRegistry,statusIsTerminal,EXIT_CODE,PmCliError,toItemRecord,mutateItem,resolvePmRoot,readSettings,resolveAuthor,resolveClaimPrincipal,normalizeStatusForRegistry}from"../runtime-primitives.js";import{wrapOwnershipConflict}from"../annotations.js";import{describeItemOwnershipConflict}from"../ownership-source.js";import{runNext}from"../query/next.js";import{recordClaimSemanticAttribution,recordReleaseSemanticAttribution}from"../context/semantic-session-attribution.js";const NO_AVAILABLE_NEXT_ITEM_CODE="no_available_next_item";function isAlreadyClaimedError(error){if(!(error instanceof Error)||error.name!=="PmCliError"){return false}const context=error.context;return typeof context==="object"&&context!==null&&"code"in context&&context.code==="already_claimed_by"}async function runClaim(id,force,global2,options={}){const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertInitializedTracker(pmRoot);const settings=await readSettings(pmRoot);const statusRegistry=resolveRuntimeStatusRegistry(settings.schema);const author=resolveAuthor(options.author,settings.author_default);const claimPrincipal=resolveClaimPrincipal(author);let previousAssignee=null;let skipped=false;const mutationWarnings=[];const result=await mutateItem({pmRoot,settings,id,op:"claim",author,message:options.message,force,skipNoop:true,async mutate(document){const currentAssignee=document.metadata.assignee;const currentAssigneeText=currentAssignee??"";const currentClaimPrincipal=document.metadata.claim_principal?.trim()||currentAssigneeText;previousAssignee=currentAssigneeText.trim().length>0?currentAssigneeText:null;if(statusIsTerminal(document.metadata.status,statusRegistry)&&!force){throw new PmCliError(`Cannot claim terminal item ${document.metadata.id} without --force`,EXIT_CODE.CONFLICT)}const heldByOther=previousAssignee!==null&&currentClaimPrincipal!==claimPrincipal;if(heldByOther){if(options.ifAvailable===true){skipped=true;mutationWarnings.push(`claim_skipped_held_by:${previousAssignee}`);return{changedFields:[]}}if(!force){const ownershipPhrase=await describeItemOwnershipConflict(pmRoot,document.metadata.id,currentAssigneeText);throw new PmCliError(`Item ${document.metadata.id} is already ${ownershipPhrase}. Use --force to take over, or --if-available to skip without failing.`,EXIT_CODE.CONFLICT,{code:"already_claimed_by",why:"Claim is an atomic test-and-set so parallel agents never proceed believing they own the same item.",nextSteps:["Run pm next to pick a different unclaimed item.","Re-run with --if-available to treat a held item as a no-op skip.","Re-run with --force only when taking over the item is coordinated."]})}mutationWarnings.push(`claim_takeover:${previousAssignee}->${author}`)}const ownership={assignee:author,claim_principal:claimPrincipal};const changedFields=["assignee","claim_principal"].filter(field=>document.metadata[field]!==ownership[field]);Object.assign(document.metadata,ownership);return{changedFields,warnings:mutationWarnings}}});if(!skipped){await recordClaimSemanticAttribution({pmRoot,settings,principal:claimPrincipal,itemId:result.item.id})}return{item:toItemRecord(result.item),changed_fields:result.changedFields,claimed_by:skipped&&previousAssignee!==null?previousAssignee:author,previous_assignee:previousAssignee,forced:force,...skipped?{skipped:true}:{},...mutationWarnings.length>0?{warnings:mutationWarnings}:{}}}async function runClaimNext(force,global2,options={},nextOptions={}){const maxAttempts=parseClaimNextAttempts(options.maxAttempts);const settings=await readSettings(resolvePmRoot(process.cwd(),global2.path));const claimOptions={...options,author:resolveAuthor(options.author,settings.author_default)};const next=await runNext({...nextOptions,callerAuthor:claimOptions.author,limit:String(maxAttempts)},global2);const recommendations=[next.recommended,...next.ready].filter(entry=>entry!==null).map(entry=>({...entry,reasons:"reasons"in entry?entry.reasons:["ranked ready candidate"]}));return claimNextFromRecommendations(recommendations.slice(0,maxAttempts),force,global2,claimOptions)}function parseClaimNextAttempts(raw){if(raw===void 0)return 10;const parsed=Number(raw);if(!Number.isSafeInteger(parsed)||parsed<1||parsed>100){throw new PmCliError("--max-attempts must be an integer from 1 to 100",EXIT_CODE.USAGE)}return parsed}async function claimNextFromRecommendations(recommendations,force,global2,options={},claimRunner=runClaim){let attempts=0;for(const recommendation of recommendations){attempts+=1;try{const claimed=await claimRunner(recommendation.id,force,global2,options);const result={...claimed,recommendation,attempts,available:true};if(!claimed.skipped)return result}catch(error){if(!isAlreadyClaimedError(error))throw error}}if(options.ifAvailable===true){return{available:false,item:null,claimed_by:resolveAuthor(options.author,""),previous_assignee:null,forced:force,skipped:true,recommendation:null,attempts,warnings:[NO_AVAILABLE_NEXT_ITEM_CODE]}}const noCandidatesMatched=attempts===0;throw new PmCliError(noCandidatesMatched?"No actionable items matched the selection filters":"No actionable item remained available to claim",noCandidatesMatched?EXIT_CODE.NOT_FOUND:EXIT_CODE.CONFLICT,{code:NO_AVAILABLE_NEXT_ITEM_CODE,why:noCandidatesMatched?"No ready items matched the specified filters or selection criteria.":"Every ranked candidate was claimed by another agent before this atomic selection completed.",nextSteps:[noCandidatesMatched?"Verify the filters or run pm next to inspect all ready work.":"Run pm claim --next again to refresh the ranked candidate set."]})}async function runRelease(id,force,global2,options={}){const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertInitializedTracker(pmRoot);const settings=await readSettings(pmRoot);const author=resolveAuthor(options.author,settings.author_default);const claimPrincipal=resolveClaimPrincipal(author);const ownershipReleaseBypass=options.ownershipReleaseBypass===true;let previousAssignee=null;let result;try{result=await mutateItem({pmRoot,settings,id,op:"release",author,message:options.message,force,bypassAssigneeConflict:ownershipReleaseBypass,mutate(document){previousAssignee=document.metadata.assignee??null;if(!previousAssignee&&!document.metadata.claim_principal){return{changedFields:[]}}delete document.metadata.assignee;delete document.metadata.claim_principal;return{changedFields:["assignee","claim_principal"]}}})}catch(error){wrapOwnershipConflict(error,{required:"For approved non-owner handoffs, prefer the ownership-release bypass before considering --force.",examples:['pm release pm-a1b2 --author "reviewer" --force'],nextSteps:["Use the package-provided ownership-release bypass for handoffs that only clear assignee metadata.","Use --force only when an explicit override is approved for broader ownership conflicts."]})}await recordReleaseSemanticAttribution({pmRoot,principal:claimPrincipal,itemId:result.item.id});const statusRegistry=resolveRuntimeStatusRegistry(settings.schema);const stillInProgress=normalizeStatusForRegistry(result.item.status,statusRegistry)===normalizeStatusForRegistry(statusRegistry.in_progress_status,statusRegistry);return{item:toItemRecord(result.item),released_by:author,previous_assignee:previousAssignee,forced:force,...stillInProgress?{warnings:["released_unclaimed_in_progress"],suggestions:[`${result.item.id} remains ${result.item.status} and unclaimed. If work is paused, run pm release ${result.item.id} --pause to move it to ${statusRegistry.open_status}.`]}:{}}}export{NO_AVAILABLE_NEXT_ITEM_CODE,claimNextFromRecommendations,isAlreadyClaimedError,parseClaimNextAttempts,runClaim,runClaimNext,runRelease};
2
2
  //# sourceMappingURL=claim.js.map
@@ -1,2 +1,2 @@
1
- !(function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=new e.Error().stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b09a9308-0725-5761-9850-a85beb926e42")}catch(e2){}})();import{assertInitializedTracker}from"../environment/tracker-preflight.js";import{assertNoAmbiguousBareCommaEntry,looksLikeStructuredKeyValueEntry,resolveMutationStdinTokenFields}from"../../core/item/parse.js";import{removeFileIfExists,writeFileAtomic,appendHistoryEntry,createHistoryEntry,generateItemId,normalizeItemId,canonicalDocument,normalizeItemMetadata,serializeItemDocument,assertParentReferenceIsNotSelf,isPlaceholderReferenceToken,normalizeParentReferenceValue,validateMissingParentReference,validateSprintOrReleaseValue,assertNoUnknownCsvKeys,looksLikeGenericKeyValueEntry,mergeAdditiveTags,parseCsvKv,parseOptionalNonNegativeInteger,parseOptionalNumber,parseTags,shouldResolveMutationStdinTokens,transferMutationStdinTokenPolicy,resolvePriority,getFocusedItem,normalizeStatusInput,isTerminalStatus,canonicalizeCommandOptionKey,commandOptionFlagLabel,resolveItemTypeRegistry,resolveCommandOptionPolicyState,resolveTypeDefinition,resolveTypeName,validateTypeOptions,acquireLock,printError,buildInvalidTypeError,resolveTypeSynonym,collectRuntimeCreateFieldValues,resolveItemTypesFilePath,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,EXIT_CODE,ITEM_METADATA_KEY_ORDER,PmCliError,nowIso,resolveIsoOrRelative,getActiveExtensionRegistrations,projectAfterCommandItemSnapshot,recordAfterCommandAffectedItem,runActiveCommandHandler,runActiveBeforeMutationHooks,runActiveOnWriteHooks,collectRegisteredItemFieldNames,applyRegisteredItemFieldDefaultsAndValidation,parseRegisteredItemFieldAssignments,listAllItemMetadataLight,locateItem,createMutationGuardSdk,getHistoryPath,getItemPath,resolvePmRoot,readSettings,resolveAuthor}from"../runtime-primitives.js";import{requireTerminalReasonWithRecovery}from"../lifecycle-policy.js";import{evaluateSimilarityGovernance,similarityAdvisoryWarnings}from"../similarity.js";import{acquireItemMetadataDerivedIndexLock,refreshItemMetadataDerivedIndex}from"../item-metadata-index.js";import{collectNewOrderingCycleWarnings}from"../graph/mutation-advisory.js";import{assertHierarchyMutationAllowed}from"../graph/hierarchy-integrity.js";import{resolveWorkspaceRelationshipKindRegistry}from"../graph/assembly.js";import{acquireHierarchyMutationLock}from"./hierarchy-mutation-lock.js";import{normalizeRiskInput,normalizeSeverityInput,parseConfidenceInput,parseRegressionInput}from"./metadata-normalizers.js";import{applyLegacyNoneCollectionNormalizers,createLegacyNoneCollectionNormalizers,assertNoLegacyNoneToken,assertNoLegacyNoneTokens,isLegacyNoneToken}from"./legacy-none-tokens.js";import{suggestNextLifecycleTransition}from"./lifecycle-transitions.js";import{parseLinkedTestAssertionEqualsMap,parseLinkedTestAssertionGteMap,parseLinkedTestBoolean,parseLinkedTestContextMode,parseLinkedTestEnvClear,parseLinkedTestEnvSet,parseLinkedTestMinLines,parseLinkedTestRegexList,parseLinkedTestStringList,parseLinkedTestWorkspaceContextMode}from"../test/parsers.js";import{STRUCTURED_LINKED_TEST_KEYS,normalizeStructuredLinkedTestEntry}from"../test/entry.js";import{attachLinkedTestMutationProvenance}from"../test/trust.js";import{COMMON_UNSET_FIELD_DEFINITIONS_AFTER_AUTHOR,COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_AUTHOR,parseCommandUnsetTargets,resolveRuntimeUnsetFieldDefinition}from"./shared-unset-fields.js";import{ensureEnumValue}from"./recurrence-parsers.js";import{assertDependencyEdgesAllowed,assertDependencyTargetsResolvable,assertValidBareDependencyFlagValue}from"../dependency-flag-validation.js";import{normalizeDependencySeedId,normalizeItemReference,isExternalDependencyReference,normalizeDependencySourceKind}from"../dependency-provenance.js";import{resolveCanonicalRelationshipKind}from"../relationships.js";import{supportsCreateExplicitEmpty}from"../agent/create-option-policy.js";import{parseEventEntries,parseReminderEntries,parseTypeOptionEntries}from"./repeatable-metadata-parsers.js";import{DEPENDENCY_KIND_VALUES,ISSUE_SEVERITY_VALUES,RISK_VALUES,SCOPE_VALUES}from"../../types/index.js";const CREATE_MODE_VALUES=["strict","progressive"];const SCHEDULE_CREATE_PRESET_VALUES=["lightweight"];const SCHEDULE_CREATE_PRESET_TYPES=new Set(["Reminder","Meeting","Event"]);const LOG_SEED_ALLOWED_KEYS=new Set(["author","created_at","text"]);const CREATE_UNSET_FIELD_DEFINITIONS=[...COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_AUTHOR,{canonical:"author",aliases:["author"],optionKey:"author",metadataKey:"author"},...COMMON_UNSET_FIELD_DEFINITIONS_AFTER_AUTHOR];const CREATE_UNSET_ALIAS_MAP=(()=>{const map=new Map;for(const definition of CREATE_UNSET_FIELD_DEFINITIONS){for(const alias of definition.aliases){map.set(alias,{optionKey:definition.optionKey,metadataKey:definition.metadataKey})}}return map})();const CREATE_OPTION_KEY_TO_UNSET_CANONICAL=new Map(CREATE_UNSET_FIELD_DEFINITIONS.map(definition=>[definition.optionKey,definition.canonical]));const CREATE_UNSET_SUPPORTED_CANONICAL_FIELDS=CREATE_UNSET_FIELD_DEFINITIONS.map(definition=>definition.canonical).sort((left,right)=>left.localeCompare(right)).join(", ");function buildInvalidLogSeedKeysMessage(optionName,unsupportedKeys){const sortedUnsupported=[...unsupportedKeys].sort((left,right)=>left.localeCompare(right));const keyLabel=sortedUnsupported.length===1?"key":"keys";return`${optionName} supports only author, created_at, and text seed fields. Found unsupported ${keyLabel}: ${sortedUnsupported.join(", ")}. If text contains comma-separated key:value-like fragments, wrap text in quotes (for example text="first,scope:project"), use markdown-style key/value input, or pass ${optionName} - with piped stdin.`}function parseStatusValue(value,statusRegistry){const normalized=normalizeStatusInput(value,statusRegistry);if(!normalized){const allowedStatuses=statusRegistry.definitions.map(definition=>definition.id);throw new PmCliError(`Invalid status value "${value}". Allowed: ${allowedStatuses.join(", ")}`,EXIT_CODE.USAGE)}return normalized}function resolveCreateDefaultStatus(typeDefinition,statusRegistry){const configured=typeDefinition.default_status;if(configured!==void 0){const normalized=normalizeStatusInput(configured,statusRegistry);if(normalized){return normalized}}return statusRegistry.open_status}function parseCreatedAt(value,currentIso){if(!value||value.trim()===""||value.trim().toLowerCase()==="now"){return currentIso}const parsed=Date.parse(value);if(!Number.isFinite(parsed)){throw new PmCliError(`Invalid created_at timestamp "${value}"`,EXIT_CODE.USAGE)}return new Date(parsed).toISOString()}const CREATE_LEGACY_NONE_COLLECTION_NORMALIZERS=createLegacyNoneCollectionNormalizers();function normalizeLegacyNoneCreateOptions(options){const normalized={...options,unset:options.unset?[...options.unset]:void 0};const appendUnsetTarget=value=>{const current=normalized.unset?[...normalized.unset]:[];if(!current.includes(value)){current.push(value)}normalized.unset=current};if(isLegacyNoneToken(normalized.template)){normalized.template=void 0}const scalarOptionKeys=new Set([...CREATE_OPTION_KEY_TO_UNSET_CANONICAL.keys(),"rank"]);for(const optionKey of scalarOptionKeys){const candidate=normalized[optionKey];if(typeof candidate!=="string"||!isLegacyNoneToken(candidate)){continue}const canonicalUnset=optionKey==="rank"?"order":CREATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey)??optionKey;appendUnsetTarget(canonicalUnset);normalized[optionKey]=void 0}return transferMutationStdinTokenPolicy(options,applyLegacyNoneCollectionNormalizers(normalized,CREATE_LEGACY_NONE_COLLECTION_NORMALIZERS))}function parseOptionalString(value){if(value===void 0)return void 0;return value}function parseCreateUnsetTargets(raw,runtimeFieldRegistry){return parseCommandUnsetTargets({raw,supportedFields:CREATE_UNSET_SUPPORTED_CANONICAL_FIELDS,resolveDefinition:trimmed=>CREATE_UNSET_ALIAS_MAP.get(trimmed)??resolveRuntimeUnsetFieldDefinition(trimmed,"create",runtimeFieldRegistry)})}const DEP_SEED_KEYS=["id","kind","type","author","created_at","source_kind"];const LINKED_ARTIFACT_SEED_KEYS=["path","scope","note"];function parseDependencies(raw,nowValue,prefix,fallbackAuthor){if(!raw||raw.length===0)return{values:void 0,explicitEmpty:false};assertNoLegacyNoneTokens(raw,"--dep","Use --clear-deps to clear dependencies.");const values=raw.map(entry=>{const trimmedEntry=entry.trim();const isStructured=looksLikeStructuredEntry(trimmedEntry,DEP_SEED_KEYS);assertValidBareDependencyFlagValue(trimmedEntry,isStructured);const kv=isStructured?parseCsvKv(entry,"--dep"):{id:trimmedEntry,kind:"related"};if(isStructured){assertNoUnknownCsvKeys(kv,"--dep",DEP_SEED_KEYS)}const id=parseOptionalString(kv.id);const kind=normalizeDependencyKindInput(parseOptionalString(kv.kind??kv.type));if(!id||!kind){throw new PmCliError("--dep requires id and kind, or a bare item id to create a related dependency",EXIT_CODE.USAGE)}if(id.trim().toLowerCase()==="undefined"){throw new PmCliError(`--dep id must not use placeholder token "${id}". Use --clear-deps to clear dependencies.`,EXIT_CODE.USAGE)}const sourceKind=normalizeDependencySourceKind(parseOptionalString(kv.source_kind));const explicitAuthor=parseOptionalString(kv.author);return{id:normalizeDependencySeedId(id,prefix,sourceKind),kind:ensureEnumValue(kind,DEPENDENCY_KIND_VALUES,"dependency kind"),created_at:parseCreatedAt(kv.created_at,nowValue),author:explicitAuthor??fallbackAuthor,source_kind:sourceKind??"cli:create:dep",author_source:explicitAuthor?"asserted":"detected"}});return{values,explicitEmpty:false}}function normalizeDependencyKindInput(raw){return typeof raw==="string"?resolveCanonicalRelationshipKind(raw)??raw.trim():raw}function looksLikeStructuredEntry(raw,keys){if(looksLikeStructuredKeyValueEntry(raw,keys)){return true}return looksLikeGenericKeyValueEntry(raw)}function parseLogSeed(optionName,raw,nowValue,fallbackAuthor){if(!raw||raw.length===0)return{values:void 0,explicitEmpty:false};const clearHint=optionName==="--comment"?"Use --clear-comments to clear comments.":optionName==="--note"?"Use --clear-notes to clear notes.":"Use --clear-learnings to clear learnings.";assertNoLegacyNoneTokens(raw,optionName,clearHint);const values=raw.map(entry=>{const trimmedEntry=entry.trim();const buildPlainTextCommentSeed=()=>{if(trimmedEntry.length===0){throw new PmCliError(`${optionName} requires text=<value>`,EXIT_CODE.USAGE)}return{created_at:nowValue,author:fallbackAuthor,text:trimmedEntry}};let kv;try{kv=parseCsvKv(entry,optionName)}catch(error){if(optionName==="--comment"||optionName==="--note"||optionName==="--learning"){return buildPlainTextCommentSeed()}throw error}const unsupportedKeys=Object.keys(kv).filter(key=>!LOG_SEED_ALLOWED_KEYS.has(key));if(unsupportedKeys.length>0){return{created_at:parseCreatedAt(kv.created_at,nowValue),author:parseOptionalString(kv.author)??fallbackAuthor,text:trimmedEntry}}const text=kv.text??"";if(text===""){throw new PmCliError(`${optionName} requires text=<value>`,EXIT_CODE.USAGE)}return{created_at:parseCreatedAt(kv.created_at,nowValue),author:parseOptionalString(kv.author)??fallbackAuthor,text}});return{values,explicitEmpty:false}}function parseFiles(raw){if(!raw||raw.length===0)return{values:void 0,explicitEmpty:false};assertNoLegacyNoneTokens(raw,"--file","Use --clear-files to clear linked files.");const values=raw.map(entry=>{const trimmedEntry=entry.trim();const isStructured=looksLikeStructuredEntry(trimmedEntry,LINKED_ARTIFACT_SEED_KEYS);assertNoAmbiguousBareCommaEntry(trimmedEntry,"--file","file path",isStructured);const kv=isStructured?parseCsvKv(entry,"--file"):{path:trimmedEntry};if(isStructured){assertNoUnknownCsvKeys(kv,"--file",LINKED_ARTIFACT_SEED_KEYS)}if(!kv.path){throw new PmCliError("--file requires path=<value> or a bare file path",EXIT_CODE.USAGE)}return{path:kv.path,scope:ensureEnumValue(kv.scope??"project",SCOPE_VALUES,"file scope"),note:parseOptionalString(kv.note)}});return{values,explicitEmpty:false}}function parseTests(raw){if(!raw||raw.length===0)return{values:void 0,explicitEmpty:false};assertNoLegacyNoneTokens(raw,"--test","Use --clear-tests to clear linked tests.");const values=raw.map(entry=>{const trimmedEntry=entry.trim();const isStructured=looksLikeStructuredEntry(trimmedEntry,STRUCTURED_LINKED_TEST_KEYS);assertNoAmbiguousBareCommaEntry(trimmedEntry,"--test","test command",isStructured);const kv=isStructured?normalizeStructuredLinkedTestEntry(parseCsvKv(entry,"--test"),"--test"):{command:trimmedEntry};const command=parseOptionalString(kv.command);const filePath=parseOptionalString(kv.path);if(!command){throw new PmCliError("--test requires command=<value> or a bare command (path=<value> is optional metadata)",EXIT_CODE.USAGE)}const timeoutSecondsRaw=parseOptionalString(kv.timeout_seconds);const timeoutAliasRaw=parseOptionalString(kv.timeout);if(timeoutSecondsRaw&&timeoutAliasRaw&&timeoutSecondsRaw!==timeoutAliasRaw){throw new PmCliError("--test timeout and timeout_seconds must match when both are provided",EXIT_CODE.USAGE)}const timeoutRaw=timeoutSecondsRaw??timeoutAliasRaw;return{command,path:filePath,scope:ensureEnumValue(kv.scope??"project",SCOPE_VALUES,"test scope"),timeout_seconds:timeoutRaw?parseOptionalNumber(timeoutRaw,"timeout_seconds"):void 0,pm_context_mode:parseLinkedTestContextMode(kv.pm_context_mode,"--test"),workspace_context_mode:parseLinkedTestWorkspaceContextMode(kv.workspace_context_mode,"--test"),env_set:parseLinkedTestEnvSet(kv.env_set,"--test"),env_clear:parseLinkedTestEnvClear(kv.env_clear,"--test"),shared_host_safe:parseLinkedTestBoolean(kv.shared_host_safe,"--test","shared_host_safe"),assert_stdout_contains:parseLinkedTestStringList(kv.assert_stdout_contains),assert_stdout_regex:parseLinkedTestRegexList(kv.assert_stdout_regex,"--test","assert_stdout_regex"),assert_stderr_contains:parseLinkedTestStringList(kv.assert_stderr_contains),assert_stderr_regex:parseLinkedTestRegexList(kv.assert_stderr_regex,"--test","assert_stderr_regex"),assert_stdout_min_lines:parseLinkedTestMinLines(kv.assert_stdout_min_lines,"--test"),assert_json_field_equals:parseLinkedTestAssertionEqualsMap(kv.assert_json_field_equals,"--test"),assert_json_field_gte:parseLinkedTestAssertionGteMap(kv.assert_json_field_gte,"--test"),note:parseOptionalString(kv.note)}});return{values,explicitEmpty:false}}function parseDocs(raw){if(!raw||raw.length===0)return{values:void 0,explicitEmpty:false};assertNoLegacyNoneTokens(raw,"--doc","Use --clear-docs to clear linked docs.");const values=raw.map(entry=>{const trimmedEntry=entry.trim();const isStructured=looksLikeStructuredEntry(trimmedEntry,LINKED_ARTIFACT_SEED_KEYS);const kv=isStructured?parseCsvKv(entry,"--doc"):{path:trimmedEntry};if(isStructured){assertNoUnknownCsvKeys(kv,"--doc",LINKED_ARTIFACT_SEED_KEYS)}if(!kv.path){throw new PmCliError("--doc requires path=<value> or a bare doc path",EXIT_CODE.USAGE)}return{path:kv.path,scope:ensureEnumValue(kv.scope??"project",SCOPE_VALUES,"doc scope"),note:parseOptionalString(kv.note)}});return{values,explicitEmpty:false}}function parseReminders(raw,nowValue){if(!raw||raw.length===0)return{values:void 0,explicitEmpty:false};assertNoLegacyNoneTokens(raw,"--reminder","Use --clear-reminders to clear reminders.");return{values:parseReminderEntries(raw,new Date(nowValue),{valueMode:"raw"}),explicitEmpty:false}}function parseEvents(raw,nowValue){if(!raw||raw.length===0)return{values:void 0,explicitEmpty:false};assertNoLegacyNoneTokens(raw,"--event","Use --clear-events to clear linked events.");return{values:parseEventEntries(raw,new Date(nowValue),{allDayEmptyGuard:"defined",recurrenceEmptyNumericGuard:"defined"}),explicitEmpty:false}}function buildChangedFields(itemMetadata,body,explicitUnsets,additionalItemMetadataKeys=[]){const changed=[...ITEM_METADATA_KEY_ORDER.filter(key=>itemMetadata[key]!==void 0),...additionalItemMetadataKeys.filter(key=>itemMetadata[key]!==void 0),...body.length>0?["body"]:[],...explicitUnsets.map(key=>`unset:${key}`)];return Array.from(new Set(changed))}function buildHistoryMessage(baseMessage,explicitUnsets){const trimmed=baseMessage??"";if(explicitUnsets.length===0){return trimmed}const suffix=`explicit_unset=${explicitUnsets.join(",")}`;return trimmed?`${trimmed} | ${suffix}`:suffix}function normalizeCreatePolicyOptionKey(raw,typeName,sourceLabel){const canonical=canonicalizeCommandOptionKey("create",raw);if(!canonical){throw new PmCliError(`Unsupported ${sourceLabel} entry "${raw}" for type "${typeName}"`,EXIT_CODE.CONFLICT)}return canonical}function buildCreateOptionValueLookup(options){return{scalarValues:{title:options.title,description:options.description,type:options.type,status:options.status,priority:options.priority,tags:options.tags,body:options.body,deadline:options.deadline,estimatedMinutes:options.estimatedMinutes,acceptanceCriteria:options.acceptanceCriteria,definitionOfReady:options.definitionOfReady,order:options.order??options.rank,goal:options.goal,objective:options.objective,value:options.value,impact:options.impact,outcome:options.outcome,whyNow:options.whyNow,author:options.author,message:options.message,assignee:options.assignee,parent:options.parent,reviewer:options.reviewer,risk:options.risk,confidence:options.confidence,sprint:options.sprint,release:options.release,blockedBy:options.blockedBy,blockedReason:options.blockedReason,unblockNote:options.unblockNote,reporter:options.reporter,severity:options.severity,environment:options.environment,reproSteps:options.reproSteps,resolution:options.resolution,expectedResult:options.expectedResult,actualResult:options.actualResult,affectedVersion:options.affectedVersion,fixedVersion:options.fixedVersion,component:options.component,regression:options.regression,customerImpact:options.customerImpact},repeatableValues:{dep:options.dep,comment:options.comment,note:options.note,learning:options.learning,file:options.file,test:options.test,doc:options.doc,reminder:options.reminder,event:options.event,typeOption:options.typeOption,field:options.field},addTags:options.addTags}}function hasCreateOptionValue(lookup,optionKey){if(optionKey==="tags"){return lookup.scalarValues.tags!==void 0||Array.isArray(lookup.addTags)&&lookup.addTags.length>0}if(Object.prototype.hasOwnProperty.call(lookup.scalarValues,optionKey)){return lookup.scalarValues[optionKey]!==void 0}if(Object.prototype.hasOwnProperty.call(lookup.repeatableValues,optionKey)){const value=lookup.repeatableValues[optionKey];return Array.isArray(value)&&value.length>0}return false}function buildRequiredCreateOptions(typeDefinition,createMode){const requiredOptions=new Set(["title","type"]);if(createMode!=="strict"){return requiredOptions}for(const field of typeDefinition.required_create_fields){requiredOptions.add(normalizeCreatePolicyOptionKey(field,typeDefinition.name,"required_create_fields"))}for(const field of typeDefinition.required_create_repeatables){requiredOptions.add(normalizeCreatePolicyOptionKey(field,typeDefinition.name,"required_create_repeatables"))}return requiredOptions}function assertNoDisabledCreateOptions(disabledOptions,lookup,clearOptionKeys,typeName){for(const option of disabledOptions){if(!hasCreateOptionValue(lookup,option)&&!clearOptionKeys.has(option)){continue}throw new PmCliError(`Option ${commandOptionFlagLabel("create",option)} is disabled for type "${typeName}" by command_option_policies`,EXIT_CODE.USAGE)}}function assertNoStrictRequiredOptionClears(requiredOptions,createMode,clearOptionKeys){if(createMode!=="strict"){return}const strictRequiredClears=requiredOptions.filter(required=>clearOptionKeys.has(required)&&!supportsCreateExplicitEmpty(required));if(strictRequiredClears.length===0){return}const requiredFlags=[...new Set(strictRequiredClears.map(required=>commandOptionFlagLabel("create",required)))].sort((left,right)=>left.localeCompare(right));throw new PmCliError(`Strict create mode requires concrete values for ${requiredFlags.join(", ")}; --unset/--clear-* directives cannot satisfy required options`,EXIT_CODE.USAGE)}function parseTypeOptions(raw){if(!raw||raw.length===0){return{values:void 0,explicitEmpty:false}}assertNoLegacyNoneTokens(raw,"--type-option","Use --clear-type-options to clear existing type options.");return{values:parseTypeOptionEntries(raw),explicitEmpty:false}}async function resolveCreateStdinInputs(options){const scalarFields=[["body","--body"],["description","--description"]];const listFields=[["dep","--dep"],["comment","--comment"],["note","--note"],["learning","--learning"],["file","--file"],["test","--test"],["doc","--doc"],["reminder","--reminder"],["event","--event"],["typeOption","--type-option"],["field","--field"]];return await resolveMutationStdinTokenFields(options,scalarFields,listFields)}async function resolveCreateTransportInputs(options){return shouldResolveMutationStdinTokens(options)?await resolveCreateStdinInputs(options):options}function resolveCreateMode(createMode,defaultMode){if(createMode===void 0){return defaultMode}const normalized=createMode.trim().toLowerCase();if(normalized.length===0){return defaultMode}if(normalized==="strict"||normalized==="progressive"){return normalized}throw new PmCliError(`Invalid --create-mode value "${createMode}". Allowed: ${CREATE_MODE_VALUES.join(", ")}`,EXIT_CODE.USAGE)}function resolveScheduleCreatePreset(raw){if(raw===void 0){return void 0}const normalized=raw.trim().toLowerCase();if(normalized.length===0){throw new PmCliError("--schedule-preset must not be empty",EXIT_CODE.USAGE)}if(normalized==="lightweight"||normalized==="lite"||normalized==="schedule-lite"){return"lightweight"}throw new PmCliError(`Invalid --schedule-preset value "${raw}". Allowed: ${SCHEDULE_CREATE_PRESET_VALUES.join(", ")}`,EXIT_CODE.USAGE)}function resolveEffectiveCreateMode(createMode,schedulePreset,defaultMode){const resolvedMode=resolveCreateMode(createMode,defaultMode);if(schedulePreset===void 0){return resolvedMode}const createModeWasExplicit=typeof createMode==="string"&&createMode.trim().length>0;if(createModeWasExplicit&&resolvedMode==="strict"){throw new PmCliError("--schedule-preset lightweight cannot be combined with --create-mode strict. Use --create-mode progressive or omit --create-mode.",EXIT_CODE.USAGE)}return"progressive"}function requireCreateOptionByType(typeDefinition,options,createMode,clearOptionKeys){const typeName=typeDefinition.name;const optionLookup=buildCreateOptionValueLookup(options);const baseRequiredOptions=buildRequiredCreateOptions(typeDefinition,createMode);const policyState=resolveCommandOptionPolicyState(typeDefinition,"create",baseRequiredOptions);if(policyState.errors.length>0){throw new PmCliError(policyState.errors.join("; "),EXIT_CODE.CONFLICT)}assertNoDisabledCreateOptions(policyState.disabled,optionLookup,clearOptionKeys,typeName);assertNoStrictRequiredOptionClears(policyState.required,createMode,clearOptionKeys);const satisfiesRequiredOption=optionKey=>{if(optionKey==="status"&&typeDefinition.default_status!==void 0){return true}if(clearOptionKeys.has(optionKey)&&supportsCreateExplicitEmpty(optionKey)){return true}return hasCreateOptionValue(optionLookup,optionKey)};const missingRequiredOptions=policyState.required.filter(required=>!satisfiesRequiredOption(required));return[...new Set(missingRequiredOptions.map(required=>commandOptionFlagLabel("create",required)))].sort((left,right)=>left.localeCompare(right))}const MISSING_REQUIRED_TYPE_OPTION_PATTERN=/^Missing required type option "([^"]+)" for type "([^"]+)"$/;function collectMissingRequiredTypeOptionKeys(errors,typeName){const missingKeys=[];for(const error of errors){const match=error.match(MISSING_REQUIRED_TYPE_OPTION_PATTERN);if(!match){continue}if(match[2]!==typeName){continue}missingKeys.push(match[1])}return[...new Set(missingKeys)].sort((left,right)=>left.localeCompare(right))}function filterNonMissingTypeOptionErrors(errors,typeName){return errors.filter(error=>{const match=error.match(MISSING_REQUIRED_TYPE_OPTION_PATTERN);return!match||match[2]!==typeName})}function assertNoInvalidTypeOptions(errors,type,typeDefinition,statusRegistry){const nonMissingTypeOptionErrors=filterNonMissingTypeOptionErrors(errors,type);if(nonMissingTypeOptionErrors.length===0){return}const nextValidExample=buildTypeSpecificCreateExample(typeDefinition,[],[],statusRegistry.open_status);throw new PmCliError(nonMissingTypeOptionErrors.join("; "),EXIT_CODE.USAGE,{code:"invalid_argument_value",required:`Provide valid --type-option key/value pairs for type "${type}".`,examples:[nextValidExample],nextSteps:[`Run "pm create --help --type ${type}" to review allowed type-option keys and values.`]})}function typeOptionExampleValue(typeDefinition,key){const optionDefinition=typeDefinition.options.find(option=>option.key===key);const firstAllowed=optionDefinition?.values[0];if(typeof firstAllowed==="string"&&firstAllowed.trim().length>0){return firstAllowed}return"<value>"}function createExampleTokensForFlag(flag,typeName,openStatus){switch(flag){case"--title":return["--title",`"${typeName} example title"`];case"--description":return["--description",`"${typeName} example description"`];case"--type":return["--type",typeName];case"--status":return["--status",openStatus];case"--priority":return["--priority","1"];case"--message":return["--message",`"Create ${typeName} item"`];case"--dep":return["--dep",'"id=pm-xxxx,kind=related,author=maintainer,created_at=now"'];case"--comment":return["--comment",'"author=maintainer,created_at=now,text=Implementation context"'];case"--note":return["--note",'"author=maintainer,created_at=now,text=Design note"'];case"--learning":return["--learning",'"author=maintainer,created_at=now,text=Durable lesson"'];case"--file":return["--file",'"path=src/example.ts,note=implementation file"'];case"--test":return["--test",'"command=node scripts/run-tests.mjs test,timeout_seconds=240"'];case"--doc":return["--doc",'"path=README.md,note=reference doc"'];default:return[flag,'"<value>"']}}function buildTypeSpecificCreateExample(typeDefinition,missingCreateFlags,missingTypeOptionKeys,openStatus){const tokens=["pm","create","--title",`"${typeDefinition.name} example title"`,"--description",`"${typeDefinition.name} example description"`,"--type",typeDefinition.name];const optionalRecommendationFlags=["--status","--priority","--message"];const orderedFlags=[...new Set([...optionalRecommendationFlags,...missingCreateFlags])];const includedFlags=new Set(["--title","--description","--type"]);for(const flag of orderedFlags){if(includedFlags.has(flag)){continue}tokens.push(...createExampleTokensForFlag(flag,typeDefinition.name,openStatus));includedFlags.add(flag)}for(const key of missingTypeOptionKeys){const value=typeOptionExampleValue(typeDefinition,key);tokens.push("--type-option",`${key}=${value}`)}return tokens.join(" ")}function requireStringOption(value,flag){const normalized=value?.trim();if(!normalized){if(flag==="--title"){if(value!==void 0){throw new PmCliError("Title cannot be empty or whitespace-only. Retry: pass a non-empty title with --title.",EXIT_CODE.USAGE)}throw new PmCliError('Missing required option --title. Why required: every item needs a human-readable title for lookup, search, and reporting. Retry: pass the title as the first positional argument (example: pm create "Fix login bug" --type Issue) or with --title.',EXIT_CODE.USAGE)}throw new PmCliError(`Missing required option ${flag}`,EXIT_CODE.USAGE)}return normalized}function mergeCreateOptionsWithTemplate(templateOptions,explicitOptions){const merged={};for(const[key,value]of Object.entries(templateOptions)){merged[key]=Array.isArray(value)?[...value]:value}for(const[key,value]of Object.entries(explicitOptions)){if(value!==void 0){merged[key]=Array.isArray(value)?[...value]:value}}return merged}function normalizeExtensionCommandPath(command){return command.trim().toLowerCase().split(/\s+/).filter(part=>part.length>0).join(" ")}function hasTemplatesShowHandler(){const registrations=getActiveExtensionRegistrations();if(!registrations){return false}return registrations.commands.some(entry=>{return entry.action==="templates-show"||normalizeExtensionCommandPath(entry.command)==="templates show"})}function readTemplateOptionsFromRuntimeResult(result,templateName){if(typeof result!=="object"||result===null||!("options"in result)){throw new PmCliError(`Templates package returned invalid payload for template "${templateName}". Expected an options object.`,EXIT_CODE.GENERIC_FAILURE)}const options=result.options;if(typeof options!=="object"||options===null||Array.isArray(options)){throw new PmCliError(`Templates package returned invalid options for template "${templateName}".`,EXIT_CODE.GENERIC_FAILURE)}const normalized={};for(const[key,value]of Object.entries(options)){if(typeof value==="string"||typeof value==="number"||typeof value==="boolean"){normalized[key]=value;continue}if(Array.isArray(value)&&value.every(entry=>typeof entry==="string")){normalized[key]=[...value];continue}throw new PmCliError(`Templates package returned unsupported option value for "${key}" in template "${templateName}".`,EXIT_CODE.GENERIC_FAILURE)}return normalized}async function loadCreateTemplateOptionsFromRuntime(templateName,global2,pmRoot){if(!hasTemplatesShowHandler()){throw new PmCliError(`--template requires the templates package. Install it first (for example: pm install templates --project).`,EXIT_CODE.USAGE)}const handlerResult=await runActiveCommandHandler({command:"templates show",args:[templateName],options:{},global:global2,pm_root:pmRoot});if(!handlerResult.handled){const warningSuffix=handlerResult.warnings.length>0?` (${handlerResult.warnings.join(", ")})`:"";throw new PmCliError(`Unable to resolve template "${templateName}" via templates package. Run "pm templates show ${templateName}" for details.${warningSuffix}`,EXIT_CODE.USAGE)}return readTemplateOptionsFromRuntimeResult(handlerResult.result,templateName)}function resolveUnsettableOptionalString(unsetKeys,metadataKey,raw){return unsetKeys.has(metadataKey)||raw===void 0?void 0:parseOptionalString(raw)}function resolveUnsettableTransformed(unsetKeys,metadataKey,raw,transform){return unsetKeys.has(metadataKey)||raw===void 0?void 0:transform(raw)}const CALENDAR_RELEVANT_CREATE_TYPES=new Set(["milestone","meeting","reminder","event"]);function createItemLacksSchedule(type,deadline,reminders,events){const hasDeadline=deadline!==void 0;const hasReminders=reminders!==void 0&&reminders.length>0;const hasEvents=events!==void 0&&events.length>0;return CALENDAR_RELEVANT_CREATE_TYPES.has(type.toLowerCase())&&!hasDeadline&&!hasReminders&&!hasEvents}function collectCreateScheduleWarnings(type,id,deadline,reminders,events){const warnings=[];if(type.toLowerCase()==="event"&&(events===void 0||events.length===0)){warnings.push(`event_without_schedule:${id}:no_time_set`)}if(createItemLacksSchedule(type,deadline,reminders,events)){warnings.push(`calendar_item_without_schedule:${id}:no_deadline_or_reminder_or_event (hint: set --deadline <ISO> or --reminder "<when>", or link an Event via --event "start=<ISO>,end=<ISO>"; otherwise this item never appears on pm calendar)`)}return warnings}async function inheritFocusedParent(parent,resolvedOptions,unsetKeys,pmRoot){if(parent!==void 0||unsetKeys.has("parent")||resolvedOptions.parent!==void 0){return{parent,parentSource:void 0}}const focused=await getFocusedItem(pmRoot);if(focused===void 0){return{parent,parentSource:void 0}}return{parent:focused,parentSource:"focus"}}async function validateCreateParentReference(pmRoot,settings,typeRegistry,itemId,parent,policy){const normalized=normalizeItemReference(normalizeParentReferenceValue(parent),settings.id_prefix);if(isExternalDependencyReference(normalized)){return{parent:normalized,warnings:[]}}assertParentReferenceIsNotSelf(itemId,normalized,settings.id_prefix);const parentLocated=await locateItem(pmRoot,normalized,settings.id_prefix,settings.item_format,typeRegistry.type_to_folder);if(parentLocated){return{parent:normalized,warnings:[]}}const normalizedParentId=normalizeItemId(normalized,settings.id_prefix);return{parent:normalized,warnings:validateMissingParentReference(normalizedParentId,policy).warnings}}async function resolveCreateParentWithWarnings(params){if(params.parent===void 0){return{parent:void 0,warnings:[]}}const parentValidation=await validateCreateParentReference(params.pmRoot,params.settings,params.typeRegistry,params.itemId,params.parent,params.policy);return parentValidation}async function resolveCreateItemId(params){if(params.explicitId===void 0){return generateItemId(params.pmRoot,params.settings.id_prefix,{tokenLength:params.settings.ids.token_length,typeToFolder:params.typeRegistry.type_to_folder,probeExisting:false})}if(typeof params.explicitId!=="string"){throw new PmCliError("--id must be a string",EXIT_CODE.USAGE)}const trimmedId=params.explicitId.trim();if(trimmedId.length===0||isPlaceholderReferenceToken(trimmedId)){throw new PmCliError("--id must not be empty or use a placeholder token",EXIT_CODE.USAGE)}const normalizedId=normalizeItemId(trimmedId,params.settings.id_prefix);if(!/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/.test(normalizedId)){throw new PmCliError("--id must contain only letters, numbers, and dashes after normalization",EXIT_CODE.USAGE)}return normalizedId}function resolveCreateSprintOrRelease(unsetKeys,metadataKey,raw,field,policy){const resolved=resolveUnsettableOptionalString(unsetKeys,metadataKey,raw);if(resolved===void 0){return{value:void 0,warnings:[]}}const validation=validateSprintOrReleaseValue(field,resolved,policy);return{value:validation.value,warnings:validation.warnings}}async function resolveCreateBlockedByDependency(params){const{pmRoot,settings,typeRegistry,statusRegistry,blockedBy,status,statusExplicit,nowValue,author}=params;let dependencyValues=params.dependencyValues;if(blockedBy===void 0){return{dependencyValues,status}}const normalizedBlockedBy=normalizeItemId(blockedBy,settings.id_prefix);const blockedByLocated=await locateItem(pmRoot,normalizedBlockedBy,settings.id_prefix,settings.item_format,typeRegistry.type_to_folder);if(!blockedByLocated){return{dependencyValues,status}}const hasBlockedByDependency=(dependencyValues??[]).some(dependency=>dependency.id===blockedByLocated.id&&dependency.kind==="blocked_by");if(!hasBlockedByDependency){dependencyValues=[...dependencyValues??[],{id:blockedByLocated.id,kind:"blocked_by",created_at:nowValue,author,source_kind:"cli:create:blocked_by",author_source:"detected"}]}if(statusExplicit){return{dependencyValues,status}}const blockedStatus=statusRegistry.blocked_statuses.has("blocked")?"blocked":[...statusRegistry.blocked_statuses].sort((left,right)=>left.localeCompare(right))[0]??statusRegistry.open_status;return{dependencyValues,status:blockedStatus}}function applyCreateDefaultType(resolvedOptions,settings,typeRegistry){const explicitStrictMode=typeof resolvedOptions.createMode==="string"&&resolvedOptions.createMode.trim().toLowerCase()==="strict";if(explicitStrictMode){return}const defaultType=settings.governance.create_default_type?.trim();if(defaultType&&defaultType.length>0&&resolveTypeName(defaultType,typeRegistry)){resolvedOptions.type=defaultType;return}if(resolveTypeName("Task",typeRegistry)){resolvedOptions.type="Task"}}function collectTemplateCustomTypeOptions(typeDefinition,resolvedOptions){return typeDefinition.options.filter(option=>canonicalizeCommandOptionKey("create",option.key)===void 0).flatMap(option=>{const value=resolvedOptions[option.key];if(value===void 0){return[]}if(typeof value==="string"||typeof value==="number"||typeof value==="boolean"){return[option]}throw new PmCliError(`Template custom type option "${option.key}" must be a string, number, or boolean value`,EXIT_CODE.USAGE)})}async function resolveCreateTypeSelection(options,global2,pmRoot,settings,typeRegistry){let resolvedOptions=options;const warnings=[];if(resolvedOptions.template!==void 0){const templateName=resolvedOptions.template.trim();if(templateName.length===0){throw new PmCliError("--template must not be empty. Omit --template to disable template usage.",EXIT_CODE.USAGE)}const templateOptions=await loadCreateTemplateOptionsFromRuntime(templateName,global2,pmRoot);resolvedOptions=normalizeLegacyNoneCreateOptions(mergeCreateOptionsWithTemplate(templateOptions,resolvedOptions))}if(resolvedOptions.type===void 0){applyCreateDefaultType(resolvedOptions,settings,typeRegistry)}if(resolvedOptions.type===void 0){throw new PmCliError("Missing required option --type <value>",EXIT_CODE.USAGE)}let resolvedTypeName=resolveTypeName(resolvedOptions.type,typeRegistry);if(!resolvedTypeName){const synonymCanonical=resolveTypeSynonym(resolvedOptions.type);const synonymResolved=synonymCanonical?resolveTypeName(synonymCanonical,typeRegistry):void 0;if(synonymResolved){warnings.push(`type_coercion:${resolvedOptions.type.trim()}:${synonymResolved}`);resolvedOptions.type=synonymResolved;resolvedTypeName=synonymResolved}else{throw new PmCliError(buildInvalidTypeError(resolvedOptions.type,typeRegistry.types,resolveItemTypesFilePath(pmRoot,settings.schema)),EXIT_CODE.USAGE)}}const typeDefinition=resolveTypeDefinition(resolvedTypeName,typeRegistry);if(!typeDefinition){throw new PmCliError(`Invalid type value "${resolvedOptions.type}"`,EXIT_CODE.USAGE)}const type=typeDefinition.name;const matchedTemplateTypeOptions=collectTemplateCustomTypeOptions(typeDefinition,resolvedOptions);const templateTypeOptions=matchedTemplateTypeOptions.map(option=>`${option.key}=${String(resolvedOptions[option.key])}`);if(templateTypeOptions.length>0){resolvedOptions.typeOption=[...templateTypeOptions,...resolvedOptions.typeOption??[]];for(const option of matchedTemplateTypeOptions){delete resolvedOptions[option.key]}}const schedulePreset=resolveScheduleCreatePreset(resolvedOptions.schedulePreset);if(schedulePreset!==void 0&&!SCHEDULE_CREATE_PRESET_TYPES.has(type)){throw new PmCliError(`--schedule-preset ${schedulePreset} is only supported for Reminder, Meeting, or Event types`,EXIT_CODE.USAGE)}const createMode=resolveEffectiveCreateMode(resolvedOptions.createMode,schedulePreset,settings.governance.create_mode_default);return{resolvedOptions,typeDefinition,type,schedulePreset,createMode,warnings}}function collectCreateClearTargets(resolvedOptions,unsetTargets){const explicitUnsets=new Set(unsetTargets.metadataKeys);const clearOptionKeys=new Set(unsetTargets.optionKeys);const clearCollectionDefinitions=[{enabled:resolvedOptions.clearDeps,optionKey:"dep",clearFlag:"--clear-deps",valueFlag:"--dep",values:resolvedOptions.dep,metadataKey:"dependencies"},{enabled:resolvedOptions.clearComments,optionKey:"comment",clearFlag:"--clear-comments",valueFlag:"--comment",values:resolvedOptions.comment,metadataKey:"comments"},{enabled:resolvedOptions.clearNotes,optionKey:"note",clearFlag:"--clear-notes",valueFlag:"--note",values:resolvedOptions.note,metadataKey:"notes"},{enabled:resolvedOptions.clearLearnings,optionKey:"learning",clearFlag:"--clear-learnings",valueFlag:"--learning",values:resolvedOptions.learning,metadataKey:"learnings"},{enabled:resolvedOptions.clearFiles,optionKey:"file",clearFlag:"--clear-files",valueFlag:"--file",values:resolvedOptions.file,metadataKey:"files"},{enabled:resolvedOptions.clearTests,optionKey:"test",clearFlag:"--clear-tests",valueFlag:"--test",values:resolvedOptions.test,metadataKey:"tests"},{enabled:resolvedOptions.clearDocs,optionKey:"doc",clearFlag:"--clear-docs",valueFlag:"--doc",values:resolvedOptions.doc,metadataKey:"docs"},{enabled:resolvedOptions.clearReminders,optionKey:"reminder",clearFlag:"--clear-reminders",valueFlag:"--reminder",values:resolvedOptions.reminder,metadataKey:"reminders"},{enabled:resolvedOptions.clearEvents,optionKey:"event",clearFlag:"--clear-events",valueFlag:"--event",values:resolvedOptions.event,metadataKey:"events"},{enabled:resolvedOptions.clearTypeOptions,optionKey:"typeOption",clearFlag:"--clear-type-options",valueFlag:"--type-option",values:resolvedOptions.typeOption,metadataKey:"type_options"}];for(const definition of clearCollectionDefinitions){if(!definition.enabled){continue}if(definition.values&&definition.values.length>0){throw new PmCliError(`Cannot combine ${definition.clearFlag} with ${definition.valueFlag}`,EXIT_CODE.USAGE)}explicitUnsets.add(definition.metadataKey);clearOptionKeys.add(definition.optionKey)}return{explicitUnsets,clearOptionKeys}}function assertNoCreateScalarUnsetConflicts(resolvedOptions,unsetTargets){const scalarOptionPresence={tags:resolvedOptions.tags!==void 0,deadline:resolvedOptions.deadline!==void 0,estimatedMinutes:resolvedOptions.estimatedMinutes!==void 0,acceptanceCriteria:resolvedOptions.acceptanceCriteria!==void 0,definitionOfReady:resolvedOptions.definitionOfReady!==void 0,order:resolvedOptions.order!==void 0||resolvedOptions.rank!==void 0,goal:resolvedOptions.goal!==void 0,objective:resolvedOptions.objective!==void 0,value:resolvedOptions.value!==void 0,impact:resolvedOptions.impact!==void 0,outcome:resolvedOptions.outcome!==void 0,whyNow:resolvedOptions.whyNow!==void 0,author:resolvedOptions.author!==void 0,assignee:resolvedOptions.assignee!==void 0,parent:resolvedOptions.parent!==void 0,reviewer:resolvedOptions.reviewer!==void 0,risk:resolvedOptions.risk!==void 0,confidence:resolvedOptions.confidence!==void 0,sprint:resolvedOptions.sprint!==void 0,release:resolvedOptions.release!==void 0,blockedBy:resolvedOptions.blockedBy!==void 0,blockedReason:resolvedOptions.blockedReason!==void 0,unblockNote:resolvedOptions.unblockNote!==void 0,reporter:resolvedOptions.reporter!==void 0,severity:resolvedOptions.severity!==void 0,environment:resolvedOptions.environment!==void 0,reproSteps:resolvedOptions.reproSteps!==void 0,resolution:resolvedOptions.resolution!==void 0,expectedResult:resolvedOptions.expectedResult!==void 0,actualResult:resolvedOptions.actualResult!==void 0,affectedVersion:resolvedOptions.affectedVersion!==void 0,fixedVersion:resolvedOptions.fixedVersion!==void 0,component:resolvedOptions.component!==void 0,regression:resolvedOptions.regression!==void 0,customerImpact:resolvedOptions.customerImpact!==void 0};for(const[optionKey,hasValue]of Object.entries(scalarOptionPresence)){if(!hasValue||!unsetTargets.optionKeys.has(optionKey)){continue}const unsetField=CREATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey)??optionKey;throw new PmCliError(`Cannot combine --unset ${unsetField} with ${commandOptionFlagLabel("create",optionKey)}`,EXIT_CODE.USAGE)}}function assertNoLegacyCreateScalarTokens(resolvedOptions){const assertNoLegacyScalarToken=(value,optionKey)=>{const unsetField=CREATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey);const hint=unsetField?`Use --unset ${unsetField} to clear this field.`:void 0;assertNoLegacyNoneToken(value,commandOptionFlagLabel("create",optionKey),hint)};assertNoLegacyScalarToken(resolvedOptions.tags,"tags");assertNoLegacyScalarToken(resolvedOptions.deadline,"deadline");assertNoLegacyScalarToken(resolvedOptions.estimatedMinutes,"estimatedMinutes");assertNoLegacyScalarToken(resolvedOptions.acceptanceCriteria,"acceptanceCriteria");assertNoLegacyScalarToken(resolvedOptions.definitionOfReady,"definitionOfReady");assertNoLegacyScalarToken(resolvedOptions.order??resolvedOptions.rank,"order");assertNoLegacyScalarToken(resolvedOptions.goal,"goal");assertNoLegacyScalarToken(resolvedOptions.objective,"objective");assertNoLegacyScalarToken(resolvedOptions.value,"value");assertNoLegacyScalarToken(resolvedOptions.impact,"impact");assertNoLegacyScalarToken(resolvedOptions.outcome,"outcome");assertNoLegacyScalarToken(resolvedOptions.whyNow,"whyNow");assertNoLegacyScalarToken(resolvedOptions.author,"author");assertNoLegacyScalarToken(resolvedOptions.assignee,"assignee");assertNoLegacyScalarToken(resolvedOptions.parent,"parent");assertNoLegacyScalarToken(resolvedOptions.reviewer,"reviewer");assertNoLegacyScalarToken(resolvedOptions.risk,"risk");assertNoLegacyScalarToken(resolvedOptions.confidence,"confidence");assertNoLegacyScalarToken(resolvedOptions.sprint,"sprint");assertNoLegacyScalarToken(resolvedOptions.release,"release");assertNoLegacyScalarToken(resolvedOptions.blockedBy,"blockedBy");assertNoLegacyScalarToken(resolvedOptions.blockedReason,"blockedReason");assertNoLegacyScalarToken(resolvedOptions.unblockNote,"unblockNote");assertNoLegacyScalarToken(resolvedOptions.reporter,"reporter");assertNoLegacyScalarToken(resolvedOptions.severity,"severity");assertNoLegacyScalarToken(resolvedOptions.environment,"environment");assertNoLegacyScalarToken(resolvedOptions.reproSteps,"reproSteps");assertNoLegacyScalarToken(resolvedOptions.resolution,"resolution");assertNoLegacyScalarToken(resolvedOptions.expectedResult,"expectedResult");assertNoLegacyScalarToken(resolvedOptions.actualResult,"actualResult");assertNoLegacyScalarToken(resolvedOptions.affectedVersion,"affectedVersion");assertNoLegacyScalarToken(resolvedOptions.fixedVersion,"fixedVersion");assertNoLegacyScalarToken(resolvedOptions.component,"component");assertNoLegacyScalarToken(resolvedOptions.regression,"regression");assertNoLegacyScalarToken(resolvedOptions.customerImpact,"customerImpact")}function assertNoCreateFieldUnsetConflicts(registeredItemFieldValues,runtimeCreateFieldValues,unsetTargets){for(const fieldKey of Object.keys(registeredItemFieldValues)){if(!unsetTargets.metadataKeys.has(fieldKey)){continue}throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_","-")} with --field ${fieldKey}=...`,EXIT_CODE.USAGE)}for(const fieldKey of Object.keys(runtimeCreateFieldValues.values??{})){if(!unsetTargets.metadataKeys.has(fieldKey)){continue}throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_","-")} with its value flag`,EXIT_CODE.USAGE)}}const CLEAR_FLAG_BY_REQUIRED_CREATE_FLAG={"--comment":"--clear-comments","--dep":"--clear-deps","--doc":"--clear-docs","--event":"--clear-events","--file":"--clear-files","--learning":"--clear-learnings","--note":"--clear-notes","--reminder":"--clear-reminders","--test":"--clear-tests","--type-option":"--clear-type-options"};function assertNoMissingRequiredCreateOptions(params){const{combinedMissingFlags,typeDefinition,missingRequiredCreateFlags,missingRequiredTypeOptionKeys,openStatus,type,createMode,missingRequiredRuntimeFields}=params;if(combinedMissingFlags.length===0){return}const runtimeFieldSyntax=missingRequiredRuntimeFields.map(field=>{const placeholder=field.type==="boolean"?"<true|false>":field.type==="array"?"<json-array>":field.type==="object"?"<json-object>":field.type==="number"?"<number>":field.type==="string_array"||field.repeatable?"<value>":"<string>";return{example:`--${field.cli_flag} ${placeholder}`,description:`--${field.cli_flag} maps to ${field.metadata_key} (${field.type}${field.repeatable?", repeatable":""})`}});const nextValidExample=[buildTypeSpecificCreateExample(typeDefinition,missingRequiredCreateFlags,missingRequiredTypeOptionKeys,openStatus),...runtimeFieldSyntax.map(field=>field.example)].join(" ");const nextSteps=[`Run "pm create --help --type ${type}" for type-aware required option guidance.`,...combinedMissingFlags.filter(flag=>flag==="--title").map(()=>'Title can also be passed as the first positional argument (example: pm create "Your title" --type '+type+").")];if(createMode==="strict"){nextSteps.push('For staged onboarding, retry with "--create-mode progressive".');if(SCHEDULE_CREATE_PRESET_TYPES.has(type)){nextSteps.push('For minimal scheduling inputs, try "--schedule-preset lightweight".')}}if(runtimeFieldSyntax.length>0){nextSteps.push(`Required custom field formats: ${runtimeFieldSyntax.map(field=>field.description).join("; ")}.`)}const collectionClearFlags=[...new Set(combinedMissingFlags.flatMap(flag=>{const normalizedFlag=flag.split(" ",1)[0];const clearFlag=CLEAR_FLAG_BY_REQUIRED_CREATE_FLAG[normalizedFlag];return clearFlag?[clearFlag]:[]}))];if(collectionClearFlags.length>0){nextSteps.push(`If the truthful value is an empty collection, use ${collectionClearFlags.join(", ")} instead of inventing metadata.`)}const errorMessage=combinedMissingFlags.length===1?`Missing required option ${combinedMissingFlags[0]} for type "${type}"`:`Missing required options ${combinedMissingFlags.join(", ")} for type "${type}"`;throw new PmCliError(errorMessage,EXIT_CODE.USAGE,{code:"missing_required_option",required:`Provide all required create options and type options for type "${type}" in one invocation.`,examples:[...collectionClearFlags.map(flag=>`pm create --type ${type} ${flag} ...`),nextValidExample],nextSteps,recovery:createMode==="strict"?{recovery_mode:"compact",missing_required_fields:combinedMissingFlags,suggested_flags:[...collectionClearFlags,...combinedMissingFlags,"--create-mode progressive"]}:void 0})}function resolveCreateTags(unsetKeys,resolvedOptions){if(unsetKeys.has("tags")&&Array.isArray(resolvedOptions.addTags)&&resolvedOptions.addTags.length>0){throw new PmCliError("Cannot combine --unset tags with --add-tags",EXIT_CODE.USAGE)}const baseTags=unsetKeys.has("tags")?[]:resolvedOptions.tags!==void 0?parseTags(resolvedOptions.tags):[];return mergeAdditiveTags(baseTags,resolvedOptions.addTags)}function resolveCreateOrder(unsetKeys,resolvedOptions){if(resolvedOptions.order!==void 0&&resolvedOptions.rank!==void 0&&resolvedOptions.order!==resolvedOptions.rank){throw new PmCliError("--order and --rank must match when both are provided",EXIT_CODE.USAGE)}const orderRaw=resolvedOptions.order??resolvedOptions.rank;const order=resolveUnsettableTransformed(unsetKeys,"order",orderRaw,raw=>parseOptionalNumber(raw,"order"));if(order!==void 0&&!Number.isInteger(order)){throw new PmCliError("Order must be an integer",EXIT_CODE.USAGE)}return order}function resolveCreateCloseReason(status,statusRegistry,settings,resolvedOptions,resolution,nowValue){if(resolvedOptions.completedAt!==void 0&&status!==statusRegistry.close_status){throw new PmCliError("--completed-at requires a terminal create status.",EXIT_CODE.USAGE)}const completedAt=status!==statusRegistry.close_status?void 0:resolvedOptions.completedAt===void 0?nowValue:resolveIsoOrRelative(resolvedOptions.completedAt,new Date(nowValue),"completed-at");if(status!==statusRegistry.close_status){return{closeReason:void 0,completedAt,warnings:[]}}const reasonInput=settings.governance.require_close_reason?{explicit:resolvedOptions.closeReason??resolvedOptions.message,resolution}:{explicit:resolvedOptions.closeReason};return{closeReason:requireTerminalReasonWithRecovery(reasonInput,settings.governance.require_close_reason,{operation:"create",status}).closeReason,completedAt,warnings:[]}}async function writeCreatedItem(params){const{pmRoot,type,id,settings,typeRegistry,author,extensionFieldNames,afterDocument,beforeDocument,historyMessage,changedFields,nowValue,similarityCandidate,allowDuplicate}=params;const itemPath=getItemPath(pmRoot,type,id,settings.item_format,typeRegistry.type_to_folder);const historyPath=getHistoryPath(pmRoot,id);const relationshipRegistry=resolveWorkspaceRelationshipKindRegistry();const hierarchyMutationRequired=afterDocument.metadata.parent!==void 0||(afterDocument.metadata.dependencies??[]).some(dependency=>relationshipRegistry.resolve(dependency.kind)?.hierarchy);const hierarchyLockRelease=await acquireHierarchyMutationLock({pmRoot,author,ttlSeconds:settings.locks.ttl_seconds,waitMs:settings.locks.wait_ms,required:hierarchyMutationRequired});let hierarchyLockHeld=hierarchyMutationRequired;let hookWarnings=[];try{const lockRelease=await acquireLock(pmRoot,id,settings.locks.ttl_seconds,author,false,settings.governance.force_required_for_stale_lock,settings.locks.wait_ms);try{const graphBeforeCreate=afterDocument.metadata.parent!==void 0||afterDocument.metadata.dependencies!==void 0&&afterDocument.metadata.dependencies.length>0?await listAllItemMetadataLight(pmRoot,settings.item_format,typeRegistry.type_to_folder,void 0,settings.schema):void 0;const existing=await locateItem(pmRoot,id,settings.id_prefix,settings.item_format,typeRegistry.type_to_folder);if(existing){throw new PmCliError(`Item "${id}" already exists`,EXIT_CODE.CONFLICT)}if(graphBeforeCreate){const statusRegistry=resolveRuntimeStatusRegistry(settings.schema);assertHierarchyMutationAllowed(graphBeforeCreate,[...graphBeforeCreate,afterDocument.metadata],id,status=>isTerminalStatus(status,statusRegistry),relationshipRegistry)}await runActiveBeforeMutationHooks({pm_root:pmRoot,operation:"create",before:null,after:afterDocument,changed_fields:changedFields,sdk:createMutationGuardSdk({pmRoot,settings,typeToFolder:typeRegistry.type_to_folder})});const releaseDerivedIndexLock=await acquireItemMetadataDerivedIndexLock(pmRoot,author,{required:settings.governance.duplicate_detection_mode==="strict"&&allowDuplicate!==true});let derivedIndexWarnings=[];try{if(settings.governance.duplicate_detection_mode==="strict"&&allowDuplicate!==true){await evaluateSimilarityGovernance(similarityCandidate,{pmRoot,mode:"strict",threshold:settings.governance.duplicate_detection_threshold,limit:settings.governance.duplicate_detection_limit,allowDuplicate:false})}await writeFileAtomic(itemPath,serializeItemDocument(afterDocument,{format:settings.item_format,schema:settings.schema,extensionFieldNames}));try{const entry=createHistoryEntry({nowIso:nowValue,author,op:"create",before:beforeDocument,after:afterDocument,message:historyMessage});await appendHistoryEntry(historyPath,entry)}catch(error){await removeFileIfExists(itemPath);throw error}if(hierarchyLockHeld){await hierarchyLockRelease();hierarchyLockHeld=false}derivedIndexWarnings=await refreshItemMetadataDerivedIndex({pmRoot,preferredFormat:settings.item_format,typeToFolder:typeRegistry.type_to_folder,schema:settings.schema,itemPath,document:afterDocument})}finally{await releaseDerivedIndexLock()}hookWarnings=[...graphBeforeCreate?collectNewOrderingCycleWarnings(graphBeforeCreate,[...graphBeforeCreate,afterDocument.metadata],id):[],...derivedIndexWarnings,...await runActiveOnWriteHooks({path:itemPath,scope:"project",op:"create",item_id:afterDocument.metadata.id,item_type:afterDocument.metadata.type,before:beforeDocument,after:afterDocument,changed_fields:changedFields}),...await runActiveOnWriteHooks({path:historyPath,scope:"project",op:"create:history",item_id:afterDocument.metadata.id,item_type:afterDocument.metadata.type,before:beforeDocument,after:afterDocument,changed_fields:changedFields})];recordAfterCommandAffectedItem({id:afterDocument.metadata.id,op:"create",item_type:afterDocument.metadata.type,status:afterDocument.metadata.status,current:projectAfterCommandItemSnapshot(afterDocument.metadata,changedFields),changed_fields:changedFields})}finally{await lockRelease()}}finally{if(hierarchyLockHeld)await hierarchyLockRelease()}return hookWarnings}async function runCreate(options,global2){let resolvedOptions=normalizeLegacyNoneCreateOptions(await resolveCreateTransportInputs(options));const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertInitializedTracker(pmRoot);const settings=await readSettings(pmRoot);const statusRegistry=resolveRuntimeStatusRegistry(settings.schema);const runtimeFieldRegistry=resolveRuntimeFieldRegistry(settings.schema);const typeRegistry=resolveItemTypeRegistry(settings,getActiveExtensionRegistrations());const typeSelection=await resolveCreateTypeSelection(resolvedOptions,global2,pmRoot,settings,typeRegistry);resolvedOptions=typeSelection.resolvedOptions;const{typeDefinition,type,createMode}=typeSelection;const unsetTargets=parseCreateUnsetTargets(resolvedOptions.unset,runtimeFieldRegistry);const{explicitUnsets,clearOptionKeys}=collectCreateClearTargets(resolvedOptions,unsetTargets);assertNoCreateScalarUnsetConflicts(resolvedOptions,unsetTargets);assertNoLegacyCreateScalarTokens(resolvedOptions);const missingRequiredCreateFlags=requireCreateOptionByType(typeDefinition,resolvedOptions,createMode,clearOptionKeys);const nowValue=nowIso();const author=resolveAuthor(parseOptionalString(resolvedOptions.author),settings.author_default);const dependencies=parseDependencies(resolvedOptions.dep,nowValue,settings.id_prefix,author);const comments=parseLogSeed("--comment",resolvedOptions.comment,nowValue,author);const notes=parseLogSeed("--note",resolvedOptions.note,nowValue,author);const learnings=parseLogSeed("--learning",resolvedOptions.learning,nowValue,author);const files=parseFiles(resolvedOptions.file);const tests=parseTests(resolvedOptions.test);tests.values=await attachLinkedTestMutationProvenance(tests.values,author,nowValue);const docs=parseDocs(resolvedOptions.doc);const reminders=parseReminders(resolvedOptions.reminder,nowValue);const events=parseEvents(resolvedOptions.event,nowValue);const typeOptions=parseTypeOptions(resolvedOptions.typeOption);const validatedTypeOptions=validateTypeOptions(type,typeOptions.values,typeRegistry);const extensionRegistrations=getActiveExtensionRegistrations();const extensionFieldNames=collectRegisteredItemFieldNames(extensionRegistrations);const registeredItemFieldValues=parseRegisteredItemFieldAssignments(resolvedOptions.field,extensionRegistrations);const runtimeCreateFieldValues=collectRuntimeCreateFieldValues(resolvedOptions,runtimeFieldRegistry,type);const missingRequiredRuntimeFlagSet=new Set(runtimeCreateFieldValues.missing_required_flags);const missingRequiredRuntimeFields=runtimeFieldRegistry.definitions.filter(field=>missingRequiredRuntimeFlagSet.has(`--${field.cli_flag}`));assertNoCreateFieldUnsetConflicts(registeredItemFieldValues,runtimeCreateFieldValues,unsetTargets);const missingRequiredTypeOptionKeys=collectMissingRequiredTypeOptionKeys(validatedTypeOptions.errors,type);const missingRequiredTypeOptionFlags=missingRequiredTypeOptionKeys.map(key=>`--type-option ${key}=<value>`);const combinedMissingFlags=[...new Set([...missingRequiredCreateFlags,...missingRequiredTypeOptionFlags,...runtimeCreateFieldValues.missing_required_flags])].sort((left,right)=>left.localeCompare(right));assertNoMissingRequiredCreateOptions({combinedMissingFlags,typeDefinition,missingRequiredCreateFlags,missingRequiredTypeOptionKeys,openStatus:statusRegistry.open_status,type,createMode,missingRequiredRuntimeFields});assertNoInvalidTypeOptions(validatedTypeOptions.errors,type,typeDefinition,statusRegistry);const id=await resolveCreateItemId({pmRoot,settings,typeRegistry,explicitId:resolvedOptions.id});let status=resolvedOptions.status!==void 0?parseStatusValue(resolvedOptions.status,statusRegistry):resolveCreateDefaultStatus(typeDefinition,statusRegistry);const priority=resolvedOptions.priority!==void 0?resolvePriority(resolvedOptions.priority):2;const unsetKeys=unsetTargets.metadataKeys;const tags=resolveCreateTags(unsetKeys,resolvedOptions);const deadline=resolveUnsettableTransformed(unsetKeys,"deadline",resolvedOptions.deadline,raw=>resolveIsoOrRelative(raw,new Date(nowValue),"deadline"));const estimatedMinutes=resolveUnsettableTransformed(unsetKeys,"estimated_minutes",resolvedOptions.estimatedMinutes,raw=>parseOptionalNonNegativeInteger(raw,"estimated-minutes"));const acceptanceCriteria=resolveUnsettableOptionalString(unsetKeys,"acceptance_criteria",resolvedOptions.acceptanceCriteria);const definitionOfReady=resolveUnsettableOptionalString(unsetKeys,"definition_of_ready",resolvedOptions.definitionOfReady);const order=resolveCreateOrder(unsetKeys,resolvedOptions);const goal=resolveUnsettableOptionalString(unsetKeys,"goal",resolvedOptions.goal);const objective=resolveUnsettableOptionalString(unsetKeys,"objective",resolvedOptions.objective);const value=resolveUnsettableOptionalString(unsetKeys,"value",resolvedOptions.value);const impact=resolveUnsettableOptionalString(unsetKeys,"impact",resolvedOptions.impact);const outcome=resolveUnsettableOptionalString(unsetKeys,"outcome",resolvedOptions.outcome);const whyNow=resolveUnsettableOptionalString(unsetKeys,"why_now",resolvedOptions.whyNow);const assignee=resolveUnsettableOptionalString(unsetKeys,"assignee",resolvedOptions.assignee);const authorValue=unsetKeys.has("author")?void 0:parseOptionalString(resolvedOptions.author)??author;const initialParent=resolveUnsettableOptionalString(unsetKeys,"parent",resolvedOptions.parent);const inheritedParent=await inheritFocusedParent(initialParent,resolvedOptions,unsetKeys,pmRoot);let parent=inheritedParent.parent;const parentSource=inheritedParent.parentSource;const reviewer=resolveUnsettableOptionalString(unsetKeys,"reviewer",resolvedOptions.reviewer);const risk=resolveUnsettableTransformed(unsetKeys,"risk",resolvedOptions.risk,raw=>ensureEnumValue(normalizeRiskInput(raw),RISK_VALUES,"risk"));const confidence=resolveUnsettableTransformed(unsetKeys,"confidence",resolvedOptions.confidence,raw=>parseConfidenceInput(raw));const parentReferencePolicy=resolvedOptions.allowMissingParent===true&&settings.validation.parent_reference==="strict_error"?"warn":settings.validation.parent_reference;const sprintReleasePolicy=settings.validation.sprint_release_format;const validationWarnings=[...typeSelection.warnings,...collectCreateScheduleWarnings(type,id,deadline,reminders.values,events.values)];const parentValidation=await resolveCreateParentWithWarnings({itemId:id,parent,pmRoot,settings,typeRegistry,policy:parentReferencePolicy});parent=parentValidation.parent;validationWarnings.push(...parentValidation.warnings);const sprintResolved=resolveCreateSprintOrRelease(unsetKeys,"sprint",resolvedOptions.sprint,"sprint",sprintReleasePolicy);const sprint=sprintResolved.value;validationWarnings.push(...sprintResolved.warnings);const releaseResolved=resolveCreateSprintOrRelease(unsetKeys,"release",resolvedOptions.release,"release",sprintReleasePolicy);const release=releaseResolved.value;validationWarnings.push(...releaseResolved.warnings);const blockedBy=resolveUnsettableOptionalString(unsetKeys,"blocked_by",resolvedOptions.blockedBy);const blockedByResolution=await resolveCreateBlockedByDependency({pmRoot,settings,typeRegistry,statusRegistry,blockedBy,dependencyValues:dependencies.values,status,statusExplicit:resolvedOptions.status!==void 0,nowValue,author});const dependencyValues=blockedByResolution.dependencyValues;assertDependencyEdgesAllowed(id,dependencyValues);validationWarnings.push(...await assertDependencyTargetsResolvable({pmRoot,dependencies:dependencyValues,idPrefix:settings.id_prefix,itemFormat:settings.item_format,typeToFolder:typeRegistry.type_to_folder,allowUnresolved:resolvedOptions.allowUnresolvedDeps,holders:[{id,createdAt:nowValue}],schema:settings.schema}));status=blockedByResolution.status;const blockedReason=resolveUnsettableOptionalString(unsetKeys,"blocked_reason",resolvedOptions.blockedReason);const unblockNote=resolveUnsettableOptionalString(unsetKeys,"unblock_note",resolvedOptions.unblockNote);const reporter=resolveUnsettableOptionalString(unsetKeys,"reporter",resolvedOptions.reporter);const severity=resolveUnsettableTransformed(unsetKeys,"severity",resolvedOptions.severity,raw=>ensureEnumValue(normalizeSeverityInput(raw),ISSUE_SEVERITY_VALUES,"severity"));const environment=resolveUnsettableOptionalString(unsetKeys,"environment",resolvedOptions.environment);const reproSteps=resolveUnsettableOptionalString(unsetKeys,"repro_steps",resolvedOptions.reproSteps);const resolution=resolveUnsettableOptionalString(unsetKeys,"resolution",resolvedOptions.resolution);const expectedResult=resolveUnsettableOptionalString(unsetKeys,"expected_result",resolvedOptions.expectedResult);const actualResult=resolveUnsettableOptionalString(unsetKeys,"actual_result",resolvedOptions.actualResult);const affectedVersion=resolveUnsettableOptionalString(unsetKeys,"affected_version",resolvedOptions.affectedVersion);const fixedVersion=resolveUnsettableOptionalString(unsetKeys,"fixed_version",resolvedOptions.fixedVersion);const component=resolveUnsettableOptionalString(unsetKeys,"component",resolvedOptions.component);const regression=resolveUnsettableTransformed(unsetKeys,"regression",resolvedOptions.regression,raw=>parseRegressionInput(raw));const customerImpact=resolveUnsettableOptionalString(unsetKeys,"customer_impact",resolvedOptions.customerImpact);const title=requireStringOption(resolvedOptions.title,"--title");const description=resolvedOptions.description??"";const body=resolvedOptions.body??"";const similarityAdvisory=await evaluateSimilarityGovernance({title,description,body},{pmRoot,mode:settings.governance.duplicate_detection_mode,threshold:settings.governance.duplicate_detection_threshold,limit:settings.governance.duplicate_detection_limit,allowDuplicate:resolvedOptions.allowDuplicate});validationWarnings.push(...similarityAdvisoryWarnings(similarityAdvisory));const closeReasonResolution=resolveCreateCloseReason(status,statusRegistry,settings,resolvedOptions,resolution,nowValue);const closeReason=closeReasonResolution.closeReason;const closedAt=status===statusRegistry.close_status?nowValue:void 0;const completedAt=closeReasonResolution.completedAt;validationWarnings.push(...closeReasonResolution.warnings);const itemMetadata=normalizeItemMetadata({id,title,description,type,type_options:validatedTypeOptions.normalized,status,closed_at:closedAt,completed_at:completedAt,close_reason:closeReason,priority,tags,created_at:nowValue,updated_at:nowValue,deadline,assignee,author:authorValue,estimated_minutes:estimatedMinutes,acceptance_criteria:acceptanceCriteria,definition_of_ready:definitionOfReady,order,goal,objective,value,impact,outcome,why_now:whyNow,parent,reviewer,risk,confidence,sprint,release,blocked_by:blockedBy,blocked_reason:blockedReason,unblock_note:unblockNote,reporter,severity,environment,repro_steps:reproSteps,resolution,expected_result:expectedResult,actual_result:actualResult,affected_version:affectedVersion,fixed_version:fixedVersion,component,regression,customer_impact:customerImpact,dependencies:dependencyValues,comments:comments.values,notes:notes.values,learnings:learnings.values,files:files.values,tests:tests.values,docs:docs.values,reminders:reminders.values,events:events.values,...registeredItemFieldValues,...runtimeCreateFieldValues.values});try{applyRegisteredItemFieldDefaultsAndValidation(itemMetadata,extensionRegistrations)}catch(error){throw new PmCliError(error instanceof Error?error.message:"Invalid extension item field values",EXIT_CODE.USAGE)}const afterDocument=canonicalDocument({metadata:itemMetadata,body},{schema:settings.schema,extensionFieldNames});const beforeDocument={metadata:{},body:""};const explicitUnsetKeys=[...explicitUnsets].sort((left,right)=>left.localeCompare(right));const historyMessage=buildHistoryMessage(resolvedOptions.message,explicitUnsetKeys);const changedFields=buildChangedFields(itemMetadata,body,explicitUnsetKeys,[...Object.keys(registeredItemFieldValues),...Object.keys(runtimeCreateFieldValues.values??{})]);const hookWarnings=await writeCreatedItem({pmRoot,type,id,settings,typeRegistry,author,extensionFieldNames,afterDocument,beforeDocument,historyMessage,changedFields,nowValue,similarityCandidate:{title,description,body},allowDuplicate:resolvedOptions.allowDuplicate});const outputItem=structuredClone(itemMetadata);if(createMode==="strict"&&explicitUnsets.has("dependencies")){outputItem.dependencies=[]}const nextTransition=suggestNextLifecycleTransition(id,type,status,statusRegistry);if(createItemLacksSchedule(type,deadline,reminders.values,events.values)){printError(`[pm] warning: ${type} '${id}' has no deadline/reminder/event \u2014 it will not appear on the calendar. Add one via 'pm update ${id} --deadline <ISO>' or 'pm update ${id} --event "start=<ISO>,end=<ISO>"'.`)}return{item:outputItem,changed_fields:changedFields,warnings:[...validationWarnings,...hookWarnings],...Object.fromEntries([["parent_source",parentSource],["next_transition",nextTransition],["similarity_advisory",similarityAdvisory]].filter(entry=>entry[1]!==void 0))}}const _testOnlyCreateCommand={buildHistoryMessage,buildInvalidLogSeedKeysMessage,buildTypeSpecificCreateExample,collectMissingRequiredTypeOptionKeys,createExampleTokensForFlag,filterNonMissingTypeOptionErrors,hasTemplatesShowHandler,hasCreateOptionValue,loadCreateTemplateOptionsFromRuntime,looksLikeStructuredEntry,mergeCreateOptionsWithTemplate,normalizeCreatePolicyOptionKey,normalizeDependencyKindInput,parseDependencies,normalizeExtensionCommandPath,parseCreateUnsetTargets,requireStringOption,readTemplateOptionsFromRuntimeResult,resolveRuntimeCreateUnsetDefinition:(token,registry)=>resolveRuntimeUnsetFieldDefinition(token,"create",registry),typeOptionExampleValue};export{_testOnlyCreateCommand,parseDocs,parseFiles,parseLogSeed,parseTests,requireStringOption,runCreate};
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]="ad3f992c-db2e-5276-a8ae-5d5d4ec8ae68")}catch(e2){}})();import{assertInitializedTracker}from"../environment/tracker-preflight.js";import{enforceWorkflowMutation}from"../../core/policy/workflow-policy-store.js";import{assertNoAmbiguousBareCommaEntry,looksLikeStructuredKeyValueEntry,resolveMutationStdinTokenFields}from"../../core/item/parse.js";import{removeFileIfExists,writeFileAtomic,appendHistoryEntry,createHistoryEntry,generateItemId,normalizeItemId,canonicalDocument,normalizeItemMetadata,serializeItemDocument,assertParentReferenceIsNotSelf,isPlaceholderReferenceToken,normalizeParentReferenceValue,validateMissingParentReference,validateSprintOrReleaseValue,assertNoUnknownCsvKeys,looksLikeGenericKeyValueEntry,mergeAdditiveTags,parseCsvKv,parseOptionalNonNegativeInteger,parseOptionalNumber,parseTags,shouldResolveMutationStdinTokens,transferMutationStdinTokenPolicy,resolvePriority,getFocusedItem,normalizeStatusInput,isTerminalStatus,canonicalizeCommandOptionKey,commandOptionFlagLabel,resolveItemTypeRegistry,resolveCommandOptionPolicyState,resolveTypeDefinition,resolveTypeName,validateTypeOptions,acquireLock,printError,buildInvalidTypeError,resolveTypeSynonym,collectRuntimeCreateFieldValues,resolveItemTypesFilePath,resolveRuntimeFieldRegistry,resolveRuntimeStatusRegistry,EXIT_CODE,ITEM_METADATA_KEY_ORDER,PmCliError,nowIso,resolveIsoOrRelative,getActiveExtensionRegistrations,projectAfterCommandItemSnapshot,recordAfterCommandAffectedItem,runActiveCommandHandler,runActiveBeforeMutationHooks,runActiveOnWriteHooks,collectRegisteredItemFieldNames,applyRegisteredItemFieldDefaultsAndValidation,parseRegisteredItemFieldAssignments,listAllItemMetadataLight,locateItem,createMutationGuardSdk,getHistoryPath,getItemPath,resolvePmRoot,readSettings,resolveAuthor}from"../runtime-primitives.js";import{requireTerminalReasonWithRecovery}from"../lifecycle-policy.js";import{evaluateSimilarityGovernance,similarityAdvisoryWarnings}from"../similarity.js";import{acquireItemMetadataDerivedIndexLock,refreshItemMetadataDerivedIndex}from"../item-metadata-index.js";import{collectNewOrderingCycleWarnings}from"../graph/mutation-advisory.js";import{assertHierarchyMutationAllowed}from"../graph/hierarchy-integrity.js";import{resolveWorkspaceRelationshipKindRegistry}from"../graph/assembly.js";import{acquireHierarchyMutationLock}from"./hierarchy-mutation-lock.js";import{normalizeRiskInput,normalizeSeverityInput,parseConfidenceInput,parseRegressionInput}from"./metadata-normalizers.js";import{applyLegacyNoneCollectionNormalizers,createLegacyNoneCollectionNormalizers,assertNoLegacyNoneToken,assertNoLegacyNoneTokens,isLegacyNoneToken}from"./legacy-none-tokens.js";import{suggestNextLifecycleTransition}from"./lifecycle-transitions.js";import{parseLinkedTestAssertionEqualsMap,parseLinkedTestAssertionGteMap,parseLinkedTestBoolean,parseLinkedTestContextMode,parseLinkedTestEnvClear,parseLinkedTestEnvSet,parseLinkedTestMinLines,parseLinkedTestRegexList,parseLinkedTestStringList,parseLinkedTestWorkspaceContextMode}from"../test/parsers.js";import{STRUCTURED_LINKED_TEST_KEYS,normalizeStructuredLinkedTestEntry}from"../test/entry.js";import{attachLinkedTestMutationProvenance}from"../test/trust.js";import{COMMON_UNSET_FIELD_DEFINITIONS_AFTER_AUTHOR,COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_AUTHOR,parseCommandUnsetTargets,resolveRuntimeUnsetFieldDefinition}from"./shared-unset-fields.js";import{ensureEnumValue}from"./recurrence-parsers.js";import{assertDependencyEdgesAllowed,assertDependencyTargetsResolvable,assertValidBareDependencyFlagValue}from"../dependency-flag-validation.js";import{normalizeDependencySeedId,normalizeItemReference,isExternalDependencyReference,normalizeDependencySourceKind}from"../dependency-provenance.js";import{resolveCanonicalRelationshipKind}from"../relationships.js";import{supportsCreateExplicitEmpty}from"../agent/create-option-policy.js";import{parseEventEntries,parseReminderEntries,parseTypeOptionEntries}from"./repeatable-metadata-parsers.js";import{DEPENDENCY_KIND_VALUES,ISSUE_SEVERITY_VALUES,RISK_VALUES,SCOPE_VALUES}from"../../types/index.js";const CREATE_MODE_VALUES=["strict","progressive"];const SCHEDULE_CREATE_PRESET_VALUES=["lightweight"];const SCHEDULE_CREATE_PRESET_TYPES=new Set(["Reminder","Meeting","Event"]);const LOG_SEED_ALLOWED_KEYS=new Set(["author","created_at","text"]);const CREATE_UNSET_FIELD_DEFINITIONS=[...COMMON_UNSET_FIELD_DEFINITIONS_BEFORE_AUTHOR,{canonical:"author",aliases:["author"],optionKey:"author",metadataKey:"author"},...COMMON_UNSET_FIELD_DEFINITIONS_AFTER_AUTHOR];const CREATE_UNSET_ALIAS_MAP=(()=>{const map=new Map;for(const definition of CREATE_UNSET_FIELD_DEFINITIONS){for(const alias of definition.aliases){map.set(alias,{optionKey:definition.optionKey,metadataKey:definition.metadataKey})}}return map})();const CREATE_OPTION_KEY_TO_UNSET_CANONICAL=new Map(CREATE_UNSET_FIELD_DEFINITIONS.map(definition=>[definition.optionKey,definition.canonical]));const CREATE_UNSET_SUPPORTED_CANONICAL_FIELDS=CREATE_UNSET_FIELD_DEFINITIONS.map(definition=>definition.canonical).sort((left,right)=>left.localeCompare(right)).join(", ");function buildInvalidLogSeedKeysMessage(optionName,unsupportedKeys){const sortedUnsupported=[...unsupportedKeys].sort((left,right)=>left.localeCompare(right));const keyLabel=sortedUnsupported.length===1?"key":"keys";return`${optionName} supports only author, created_at, and text seed fields. Found unsupported ${keyLabel}: ${sortedUnsupported.join(", ")}. If text contains comma-separated key:value-like fragments, wrap text in quotes (for example text="first,scope:project"), use markdown-style key/value input, or pass ${optionName} - with piped stdin.`}function parseStatusValue(value,statusRegistry){const normalized=normalizeStatusInput(value,statusRegistry);if(!normalized){const allowedStatuses=statusRegistry.definitions.map(definition=>definition.id);throw new PmCliError(`Invalid status value "${value}". Allowed: ${allowedStatuses.join(", ")}`,EXIT_CODE.USAGE)}return normalized}function resolveCreateDefaultStatus(typeDefinition,statusRegistry){const configured=typeDefinition.default_status;if(configured!==void 0){const normalized=normalizeStatusInput(configured,statusRegistry);if(normalized){return normalized}}return statusRegistry.open_status}function parseCreatedAt(value,currentIso){if(!value||value.trim()===""||value.trim().toLowerCase()==="now"){return currentIso}const parsed=Date.parse(value);if(!Number.isFinite(parsed)){throw new PmCliError(`Invalid created_at timestamp "${value}"`,EXIT_CODE.USAGE)}return new Date(parsed).toISOString()}const CREATE_LEGACY_NONE_COLLECTION_NORMALIZERS=createLegacyNoneCollectionNormalizers();function normalizeLegacyNoneCreateOptions(options){const normalized={...options,unset:options.unset?[...options.unset]:void 0};const appendUnsetTarget=value=>{const current=normalized.unset?[...normalized.unset]:[];if(!current.includes(value)){current.push(value)}normalized.unset=current};if(isLegacyNoneToken(normalized.template)){normalized.template=void 0}const scalarOptionKeys=new Set([...CREATE_OPTION_KEY_TO_UNSET_CANONICAL.keys(),"rank"]);for(const optionKey of scalarOptionKeys){const candidate=normalized[optionKey];if(typeof candidate!=="string"||!isLegacyNoneToken(candidate)){continue}const canonicalUnset=optionKey==="rank"?"order":CREATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey)??optionKey;appendUnsetTarget(canonicalUnset);normalized[optionKey]=void 0}return transferMutationStdinTokenPolicy(options,applyLegacyNoneCollectionNormalizers(normalized,CREATE_LEGACY_NONE_COLLECTION_NORMALIZERS))}function parseOptionalString(value){if(value===void 0)return void 0;return value}function parseCreateUnsetTargets(raw,runtimeFieldRegistry){return parseCommandUnsetTargets({raw,supportedFields:CREATE_UNSET_SUPPORTED_CANONICAL_FIELDS,resolveDefinition:trimmed=>CREATE_UNSET_ALIAS_MAP.get(trimmed)??resolveRuntimeUnsetFieldDefinition(trimmed,"create",runtimeFieldRegistry)})}const DEP_SEED_KEYS=["id","kind","type","author","created_at","source_kind"];const LINKED_ARTIFACT_SEED_KEYS=["path","scope","note"];function parseDependencies(raw,nowValue,prefix,fallbackAuthor){if(!raw||raw.length===0)return{values:void 0,explicitEmpty:false};assertNoLegacyNoneTokens(raw,"--dep","Use --clear-deps to clear dependencies.");const values=raw.map(entry=>{const trimmedEntry=entry.trim();const isStructured=looksLikeStructuredEntry(trimmedEntry,DEP_SEED_KEYS);assertValidBareDependencyFlagValue(trimmedEntry,isStructured);const kv=isStructured?parseCsvKv(entry,"--dep"):{id:trimmedEntry,kind:"related"};if(isStructured){assertNoUnknownCsvKeys(kv,"--dep",DEP_SEED_KEYS)}const id=parseOptionalString(kv.id);const kind=normalizeDependencyKindInput(parseOptionalString(kv.kind??kv.type));if(!id||!kind){throw new PmCliError("--dep requires id and kind, or a bare item id to create a related dependency",EXIT_CODE.USAGE)}if(id.trim().toLowerCase()==="undefined"){throw new PmCliError(`--dep id must not use placeholder token "${id}". Use --clear-deps to clear dependencies.`,EXIT_CODE.USAGE)}const sourceKind=normalizeDependencySourceKind(parseOptionalString(kv.source_kind));const explicitAuthor=parseOptionalString(kv.author);return{id:normalizeDependencySeedId(id,prefix,sourceKind),kind:ensureEnumValue(kind,DEPENDENCY_KIND_VALUES,"dependency kind","kind"),created_at:parseCreatedAt(kv.created_at,nowValue),author:explicitAuthor??fallbackAuthor,source_kind:sourceKind??"cli:create:dep",author_source:explicitAuthor?"asserted":"detected"}});return{values,explicitEmpty:false}}function normalizeDependencyKindInput(raw){return typeof raw==="string"?resolveCanonicalRelationshipKind(raw)??raw.trim():raw}function looksLikeStructuredEntry(raw,keys){if(looksLikeStructuredKeyValueEntry(raw,keys)){return true}return looksLikeGenericKeyValueEntry(raw)}function parseLogSeed(optionName,raw,nowValue,fallbackAuthor){if(!raw||raw.length===0)return{values:void 0,explicitEmpty:false};const clearHint=optionName==="--comment"?"Use --clear-comments to clear comments.":optionName==="--note"?"Use --clear-notes to clear notes.":"Use --clear-learnings to clear learnings.";assertNoLegacyNoneTokens(raw,optionName,clearHint);const values=raw.map(entry=>{const trimmedEntry=entry.trim();const buildPlainTextCommentSeed=()=>{if(trimmedEntry.length===0){throw new PmCliError(`${optionName} requires text=<value>`,EXIT_CODE.USAGE)}return{created_at:nowValue,author:fallbackAuthor,text:trimmedEntry}};let kv;try{kv=parseCsvKv(entry,optionName)}catch(error){if(optionName==="--comment"||optionName==="--note"||optionName==="--learning"){return buildPlainTextCommentSeed()}throw error}const unsupportedKeys=Object.keys(kv).filter(key=>!LOG_SEED_ALLOWED_KEYS.has(key));if(unsupportedKeys.length>0){return{created_at:parseCreatedAt(kv.created_at,nowValue),author:parseOptionalString(kv.author)??fallbackAuthor,text:trimmedEntry}}const text=kv.text??"";if(text===""){throw new PmCliError(`${optionName} requires text=<value>`,EXIT_CODE.USAGE)}return{created_at:parseCreatedAt(kv.created_at,nowValue),author:parseOptionalString(kv.author)??fallbackAuthor,text}});return{values,explicitEmpty:false}}function parseFiles(raw){if(!raw||raw.length===0)return{values:void 0,explicitEmpty:false};assertNoLegacyNoneTokens(raw,"--file","Use --clear-files to clear linked files.");const values=raw.map(entry=>{const trimmedEntry=entry.trim();const isStructured=looksLikeStructuredEntry(trimmedEntry,LINKED_ARTIFACT_SEED_KEYS);assertNoAmbiguousBareCommaEntry(trimmedEntry,"--file","file path",isStructured);const kv=isStructured?parseCsvKv(entry,"--file"):{path:trimmedEntry};if(isStructured){assertNoUnknownCsvKeys(kv,"--file",LINKED_ARTIFACT_SEED_KEYS)}if(!kv.path){throw new PmCliError("--file requires path=<value> or a bare file path",EXIT_CODE.USAGE)}return{path:kv.path,scope:ensureEnumValue(kv.scope??"project",SCOPE_VALUES,"file scope"),note:parseOptionalString(kv.note)}});return{values,explicitEmpty:false}}function parseTests(raw){if(!raw||raw.length===0)return{values:void 0,explicitEmpty:false};assertNoLegacyNoneTokens(raw,"--test","Use --clear-tests to clear linked tests.");const values=raw.map(entry=>{const trimmedEntry=entry.trim();const isStructured=looksLikeStructuredEntry(trimmedEntry,STRUCTURED_LINKED_TEST_KEYS);assertNoAmbiguousBareCommaEntry(trimmedEntry,"--test","test command",isStructured);const kv=isStructured?normalizeStructuredLinkedTestEntry(parseCsvKv(entry,"--test"),"--test"):{command:trimmedEntry};const command=parseOptionalString(kv.command);const filePath=parseOptionalString(kv.path);if(!command){throw new PmCliError("--test requires command=<value> or a bare command (path=<value> is optional metadata)",EXIT_CODE.USAGE)}const timeoutSecondsRaw=parseOptionalString(kv.timeout_seconds);const timeoutAliasRaw=parseOptionalString(kv.timeout);if(timeoutSecondsRaw&&timeoutAliasRaw&&timeoutSecondsRaw!==timeoutAliasRaw){throw new PmCliError("--test timeout and timeout_seconds must match when both are provided",EXIT_CODE.USAGE)}const timeoutRaw=timeoutSecondsRaw??timeoutAliasRaw;return{command,path:filePath,scope:ensureEnumValue(kv.scope??"project",SCOPE_VALUES,"test scope"),timeout_seconds:timeoutRaw?parseOptionalNumber(timeoutRaw,"timeout_seconds"):void 0,pm_context_mode:parseLinkedTestContextMode(kv.pm_context_mode,"--test"),workspace_context_mode:parseLinkedTestWorkspaceContextMode(kv.workspace_context_mode,"--test"),env_set:parseLinkedTestEnvSet(kv.env_set,"--test"),env_clear:parseLinkedTestEnvClear(kv.env_clear,"--test"),shared_host_safe:parseLinkedTestBoolean(kv.shared_host_safe,"--test","shared_host_safe"),assert_stdout_contains:parseLinkedTestStringList(kv.assert_stdout_contains),assert_stdout_regex:parseLinkedTestRegexList(kv.assert_stdout_regex,"--test","assert_stdout_regex"),assert_stderr_contains:parseLinkedTestStringList(kv.assert_stderr_contains),assert_stderr_regex:parseLinkedTestRegexList(kv.assert_stderr_regex,"--test","assert_stderr_regex"),assert_stdout_min_lines:parseLinkedTestMinLines(kv.assert_stdout_min_lines,"--test"),assert_json_field_equals:parseLinkedTestAssertionEqualsMap(kv.assert_json_field_equals,"--test"),assert_json_field_gte:parseLinkedTestAssertionGteMap(kv.assert_json_field_gte,"--test"),note:parseOptionalString(kv.note)}});return{values,explicitEmpty:false}}function parseDocs(raw){if(!raw||raw.length===0)return{values:void 0,explicitEmpty:false};assertNoLegacyNoneTokens(raw,"--doc","Use --clear-docs to clear linked docs.");const values=raw.map(entry=>{const trimmedEntry=entry.trim();const isStructured=looksLikeStructuredEntry(trimmedEntry,LINKED_ARTIFACT_SEED_KEYS);const kv=isStructured?parseCsvKv(entry,"--doc"):{path:trimmedEntry};if(isStructured){assertNoUnknownCsvKeys(kv,"--doc",LINKED_ARTIFACT_SEED_KEYS)}if(!kv.path){throw new PmCliError("--doc requires path=<value> or a bare doc path",EXIT_CODE.USAGE)}return{path:kv.path,scope:ensureEnumValue(kv.scope??"project",SCOPE_VALUES,"doc scope"),note:parseOptionalString(kv.note)}});return{values,explicitEmpty:false}}function parseReminders(raw,nowValue){if(!raw||raw.length===0)return{values:void 0,explicitEmpty:false};assertNoLegacyNoneTokens(raw,"--reminder","Use --clear-reminders to clear reminders.");return{values:parseReminderEntries(raw,new Date(nowValue),{valueMode:"raw"}),explicitEmpty:false}}function parseEvents(raw,nowValue){if(!raw||raw.length===0)return{values:void 0,explicitEmpty:false};assertNoLegacyNoneTokens(raw,"--event","Use --clear-events to clear linked events.");return{values:parseEventEntries(raw,new Date(nowValue),{allDayEmptyGuard:"defined",recurrenceEmptyNumericGuard:"defined"}),explicitEmpty:false}}function buildChangedFields(itemMetadata,body,explicitUnsets,additionalItemMetadataKeys=[]){const changed=[...ITEM_METADATA_KEY_ORDER.filter(key=>itemMetadata[key]!==void 0),...additionalItemMetadataKeys.filter(key=>itemMetadata[key]!==void 0),...body.length>0?["body"]:[],...explicitUnsets.map(key=>`unset:${key}`)];return Array.from(new Set(changed))}function buildHistoryMessage(baseMessage,explicitUnsets){const trimmed=baseMessage??"";if(explicitUnsets.length===0){return trimmed}const suffix=`explicit_unset=${explicitUnsets.join(",")}`;return trimmed?`${trimmed} | ${suffix}`:suffix}function normalizeCreatePolicyOptionKey(raw,typeName,sourceLabel){const canonical=canonicalizeCommandOptionKey("create",raw);if(!canonical){throw new PmCliError(`Unsupported ${sourceLabel} entry "${raw}" for type "${typeName}"`,EXIT_CODE.CONFLICT)}return canonical}function buildCreateOptionValueLookup(options){return{scalarValues:{title:options.title,description:options.description,type:options.type,status:options.status,priority:options.priority,tags:options.tags,body:options.body,deadline:options.deadline,estimatedMinutes:options.estimatedMinutes,acceptanceCriteria:options.acceptanceCriteria,definitionOfReady:options.definitionOfReady,order:options.order??options.rank,goal:options.goal,objective:options.objective,value:options.value,impact:options.impact,outcome:options.outcome,whyNow:options.whyNow,author:options.author,message:options.message,assignee:options.assignee,parent:options.parent,reviewer:options.reviewer,risk:options.risk,confidence:options.confidence,sprint:options.sprint,release:options.release,blockedBy:options.blockedBy,blockedReason:options.blockedReason,unblockNote:options.unblockNote,reporter:options.reporter,severity:options.severity,environment:options.environment,reproSteps:options.reproSteps,resolution:options.resolution,expectedResult:options.expectedResult,actualResult:options.actualResult,affectedVersion:options.affectedVersion,fixedVersion:options.fixedVersion,component:options.component,regression:options.regression,customerImpact:options.customerImpact},repeatableValues:{dep:options.dep,comment:options.comment,note:options.note,learning:options.learning,file:options.file,test:options.test,doc:options.doc,reminder:options.reminder,event:options.event,typeOption:options.typeOption,field:options.field},addTags:options.addTags}}function hasCreateOptionValue(lookup,optionKey){if(optionKey==="tags"){return lookup.scalarValues.tags!==void 0||Array.isArray(lookup.addTags)&&lookup.addTags.length>0}if(Object.prototype.hasOwnProperty.call(lookup.scalarValues,optionKey)){return lookup.scalarValues[optionKey]!==void 0}if(Object.prototype.hasOwnProperty.call(lookup.repeatableValues,optionKey)){const value=lookup.repeatableValues[optionKey];return Array.isArray(value)&&value.length>0}return false}function buildRequiredCreateOptions(typeDefinition,createMode){const requiredOptions=new Set(["title","type"]);if(createMode!=="strict"){return requiredOptions}for(const field of typeDefinition.required_create_fields){requiredOptions.add(normalizeCreatePolicyOptionKey(field,typeDefinition.name,"required_create_fields"))}for(const field of typeDefinition.required_create_repeatables){requiredOptions.add(normalizeCreatePolicyOptionKey(field,typeDefinition.name,"required_create_repeatables"))}return requiredOptions}function assertNoDisabledCreateOptions(disabledOptions,lookup,clearOptionKeys,typeName){for(const option of disabledOptions){if(!hasCreateOptionValue(lookup,option)&&!clearOptionKeys.has(option)){continue}throw new PmCliError(`Option ${commandOptionFlagLabel("create",option)} is disabled for type "${typeName}" by command_option_policies`,EXIT_CODE.USAGE)}}function assertNoStrictRequiredOptionClears(requiredOptions,createMode,clearOptionKeys){if(createMode!=="strict"){return}const strictRequiredClears=requiredOptions.filter(required=>clearOptionKeys.has(required)&&!supportsCreateExplicitEmpty(required));if(strictRequiredClears.length===0){return}const requiredFlags=[...new Set(strictRequiredClears.map(required=>commandOptionFlagLabel("create",required)))].sort((left,right)=>left.localeCompare(right));throw new PmCliError(`Strict create mode requires concrete values for ${requiredFlags.join(", ")}; --unset/--clear-* directives cannot satisfy required options`,EXIT_CODE.USAGE)}function parseTypeOptions(raw){if(!raw||raw.length===0){return{values:void 0,explicitEmpty:false}}assertNoLegacyNoneTokens(raw,"--type-option","Use --clear-type-options to clear existing type options.");return{values:parseTypeOptionEntries(raw),explicitEmpty:false}}async function resolveCreateStdinInputs(options){const scalarFields=[["body","--body"],["description","--description"]];const listFields=[["dep","--dep"],["comment","--comment"],["note","--note"],["learning","--learning"],["file","--file"],["test","--test"],["doc","--doc"],["reminder","--reminder"],["event","--event"],["typeOption","--type-option"],["field","--field"]];return await resolveMutationStdinTokenFields(options,scalarFields,listFields)}async function resolveCreateTransportInputs(options){return shouldResolveMutationStdinTokens(options)?await resolveCreateStdinInputs(options):options}function resolveCreateMode(createMode,defaultMode){if(createMode===void 0){return defaultMode}const normalized=createMode.trim().toLowerCase();if(normalized.length===0){return defaultMode}if(normalized==="strict"||normalized==="progressive"){return normalized}throw new PmCliError(`Invalid --create-mode value "${createMode}". Allowed: ${CREATE_MODE_VALUES.join(", ")}`,EXIT_CODE.USAGE)}function resolveScheduleCreatePreset(raw){if(raw===void 0){return void 0}const normalized=raw.trim().toLowerCase();if(normalized.length===0){throw new PmCliError("--schedule-preset must not be empty",EXIT_CODE.USAGE)}if(normalized==="lightweight"||normalized==="lite"||normalized==="schedule-lite"){return"lightweight"}throw new PmCliError(`Invalid --schedule-preset value "${raw}". Allowed: ${SCHEDULE_CREATE_PRESET_VALUES.join(", ")}`,EXIT_CODE.USAGE)}function resolveEffectiveCreateMode(createMode,schedulePreset,defaultMode){const resolvedMode=resolveCreateMode(createMode,defaultMode);if(schedulePreset===void 0){return resolvedMode}const createModeWasExplicit=typeof createMode==="string"&&createMode.trim().length>0;if(createModeWasExplicit&&resolvedMode==="strict"){throw new PmCliError("--schedule-preset lightweight cannot be combined with --create-mode strict. Use --create-mode progressive or omit --create-mode.",EXIT_CODE.USAGE)}return"progressive"}function requireCreateOptionByType(typeDefinition,options,createMode,clearOptionKeys){const typeName=typeDefinition.name;const optionLookup=buildCreateOptionValueLookup(options);const baseRequiredOptions=buildRequiredCreateOptions(typeDefinition,createMode);const policyState=resolveCommandOptionPolicyState(typeDefinition,"create",baseRequiredOptions);if(policyState.errors.length>0){throw new PmCliError(policyState.errors.join("; "),EXIT_CODE.CONFLICT)}assertNoDisabledCreateOptions(policyState.disabled,optionLookup,clearOptionKeys,typeName);assertNoStrictRequiredOptionClears(policyState.required,createMode,clearOptionKeys);const satisfiesRequiredOption=optionKey=>{if(optionKey==="status"&&typeDefinition.default_status!==void 0){return true}if(clearOptionKeys.has(optionKey)&&supportsCreateExplicitEmpty(optionKey)){return true}return hasCreateOptionValue(optionLookup,optionKey)};const missingRequiredOptions=policyState.required.filter(required=>!satisfiesRequiredOption(required));return[...new Set(missingRequiredOptions.map(required=>commandOptionFlagLabel("create",required)))].sort((left,right)=>left.localeCompare(right))}const MISSING_REQUIRED_TYPE_OPTION_PATTERN=/^Missing required type option "([^"]+)" for type "([^"]+)"$/;function collectMissingRequiredTypeOptionKeys(errors,typeName){const missingKeys=[];for(const error of errors){const match=error.match(MISSING_REQUIRED_TYPE_OPTION_PATTERN);if(!match){continue}if(match[2]!==typeName){continue}missingKeys.push(match[1])}return[...new Set(missingKeys)].sort((left,right)=>left.localeCompare(right))}function filterNonMissingTypeOptionErrors(errors,typeName){return errors.filter(error=>{const match=error.match(MISSING_REQUIRED_TYPE_OPTION_PATTERN);return!match||match[2]!==typeName})}function assertNoInvalidTypeOptions(errors,type,typeDefinition,statusRegistry){const nonMissingTypeOptionErrors=filterNonMissingTypeOptionErrors(errors,type);if(nonMissingTypeOptionErrors.length===0){return}const nextValidExample=buildTypeSpecificCreateExample(typeDefinition,[],[],statusRegistry.open_status);throw new PmCliError(nonMissingTypeOptionErrors.join("; "),EXIT_CODE.USAGE,{code:"invalid_argument_value",required:`Provide valid --type-option key/value pairs for type "${type}".`,examples:[nextValidExample],nextSteps:[`Run "pm create --help --type ${type}" to review allowed type-option keys and values.`]})}function typeOptionExampleValue(typeDefinition,key){const optionDefinition=typeDefinition.options.find(option=>option.key===key);const firstAllowed=optionDefinition?.values[0];if(typeof firstAllowed==="string"&&firstAllowed.trim().length>0){return firstAllowed}return"<value>"}function createExampleTokensForFlag(flag,typeName,openStatus){switch(flag){case"--title":return["--title",`"${typeName} example title"`];case"--description":return["--description",`"${typeName} example description"`];case"--type":return["--type",typeName];case"--status":return["--status",openStatus];case"--priority":return["--priority","1"];case"--message":return["--message",`"Create ${typeName} item"`];case"--dep":return["--dep",'"id=pm-xxxx,kind=related,author=maintainer,created_at=now"'];case"--comment":return["--comment",'"author=maintainer,created_at=now,text=Implementation context"'];case"--note":return["--note",'"author=maintainer,created_at=now,text=Design note"'];case"--learning":return["--learning",'"author=maintainer,created_at=now,text=Durable lesson"'];case"--file":return["--file",'"path=src/example.ts,note=implementation file"'];case"--test":return["--test",'"command=node scripts/run-tests.mjs test,timeout_seconds=240"'];case"--doc":return["--doc",'"path=README.md,note=reference doc"'];default:return[flag,'"<value>"']}}function buildTypeSpecificCreateExample(typeDefinition,missingCreateFlags,missingTypeOptionKeys,openStatus){const tokens=["pm","create","--title",`"${typeDefinition.name} example title"`,"--description",`"${typeDefinition.name} example description"`,"--type",typeDefinition.name];const optionalRecommendationFlags=["--status","--priority","--message"];const orderedFlags=[...new Set([...optionalRecommendationFlags,...missingCreateFlags])];const includedFlags=new Set(["--title","--description","--type"]);for(const flag of orderedFlags){if(includedFlags.has(flag)){continue}tokens.push(...createExampleTokensForFlag(flag,typeDefinition.name,openStatus));includedFlags.add(flag)}for(const key of missingTypeOptionKeys){const value=typeOptionExampleValue(typeDefinition,key);tokens.push("--type-option",`${key}=${value}`)}return tokens.join(" ")}function requireStringOption(value,flag){const normalized=value?.trim();if(!normalized){if(flag==="--title"){if(value!==void 0){throw new PmCliError("Title cannot be empty or whitespace-only. Retry: pass a non-empty title with --title.",EXIT_CODE.USAGE)}throw new PmCliError('Missing required option --title. Why required: every item needs a human-readable title for lookup, search, and reporting. Retry: pass the title as the first positional argument (example: pm create "Fix login bug" --type Issue) or with --title.',EXIT_CODE.USAGE)}throw new PmCliError(`Missing required option ${flag}`,EXIT_CODE.USAGE)}return normalized}function mergeCreateOptionsWithTemplate(templateOptions,explicitOptions){const merged={};for(const[key,value]of Object.entries(templateOptions)){merged[key]=Array.isArray(value)?[...value]:value}for(const[key,value]of Object.entries(explicitOptions)){if(value!==void 0){merged[key]=Array.isArray(value)?[...value]:value}}return merged}function normalizeExtensionCommandPath(command){return command.trim().toLowerCase().split(/\s+/).filter(part=>part.length>0).join(" ")}function hasTemplatesShowHandler(){const registrations=getActiveExtensionRegistrations();if(!registrations){return false}return registrations.commands.some(entry=>{return entry.action==="templates-show"||normalizeExtensionCommandPath(entry.command)==="templates show"})}function readTemplateOptionsFromRuntimeResult(result,templateName){if(typeof result!=="object"||result===null||!("options"in result)){throw new PmCliError(`Templates package returned invalid payload for template "${templateName}". Expected an options object.`,EXIT_CODE.GENERIC_FAILURE)}const options=result.options;if(typeof options!=="object"||options===null||Array.isArray(options)){throw new PmCliError(`Templates package returned invalid options for template "${templateName}".`,EXIT_CODE.GENERIC_FAILURE)}const normalized={};for(const[key,value]of Object.entries(options)){if(typeof value==="string"||typeof value==="number"||typeof value==="boolean"){normalized[key]=value;continue}if(Array.isArray(value)&&value.every(entry=>typeof entry==="string")){normalized[key]=[...value];continue}throw new PmCliError(`Templates package returned unsupported option value for "${key}" in template "${templateName}".`,EXIT_CODE.GENERIC_FAILURE)}return normalized}async function loadCreateTemplateOptionsFromRuntime(templateName,global2,pmRoot){if(!hasTemplatesShowHandler()){throw new PmCliError(`--template requires the templates package. Install it first (for example: pm install templates --project).`,EXIT_CODE.USAGE)}const handlerResult=await runActiveCommandHandler({command:"templates show",args:[templateName],options:{},global:global2,pm_root:pmRoot});if(!handlerResult.handled){const warningSuffix=handlerResult.warnings.length>0?` (${handlerResult.warnings.join(", ")})`:"";throw new PmCliError(`Unable to resolve template "${templateName}" via templates package. Run "pm templates show ${templateName}" for details.${warningSuffix}`,EXIT_CODE.USAGE)}return readTemplateOptionsFromRuntimeResult(handlerResult.result,templateName)}function resolveUnsettableOptionalString(unsetKeys,metadataKey,raw){return unsetKeys.has(metadataKey)||raw===void 0?void 0:parseOptionalString(raw)}function resolveUnsettableTransformed(unsetKeys,metadataKey,raw,transform){return unsetKeys.has(metadataKey)||raw===void 0?void 0:transform(raw)}const CALENDAR_RELEVANT_CREATE_TYPES=new Set(["milestone","meeting","reminder","event"]);function createItemLacksSchedule(type,deadline,reminders,events){const hasDeadline=deadline!==void 0;const hasReminders=reminders!==void 0&&reminders.length>0;const hasEvents=events!==void 0&&events.length>0;return CALENDAR_RELEVANT_CREATE_TYPES.has(type.toLowerCase())&&!hasDeadline&&!hasReminders&&!hasEvents}function collectCreateScheduleWarnings(type,id,deadline,reminders,events){const warnings=[];if(type.toLowerCase()==="event"&&(events===void 0||events.length===0)){warnings.push(`event_without_schedule:${id}:no_time_set`)}if(createItemLacksSchedule(type,deadline,reminders,events)){warnings.push(`calendar_item_without_schedule:${id}:no_deadline_or_reminder_or_event (hint: set --deadline <ISO> or --reminder "<when>", or link an Event via --event "start=<ISO>,end=<ISO>"; otherwise this item never appears on pm calendar)`)}return warnings}async function inheritFocusedParent(parent,resolvedOptions,unsetKeys,pmRoot){if(parent!==void 0||unsetKeys.has("parent")||resolvedOptions.parent!==void 0){return{parent,parentSource:void 0}}const focused=await getFocusedItem(pmRoot);if(focused===void 0){return{parent,parentSource:void 0}}return{parent:focused,parentSource:"focus"}}async function validateCreateParentReference(pmRoot,settings,typeRegistry,itemId,parent,policy){const normalized=normalizeItemReference(normalizeParentReferenceValue(parent),settings.id_prefix);if(isExternalDependencyReference(normalized)){return{parent:normalized,warnings:[]}}assertParentReferenceIsNotSelf(itemId,normalized,settings.id_prefix);const parentLocated=await locateItem(pmRoot,normalized,settings.id_prefix,settings.item_format,typeRegistry.type_to_folder);if(parentLocated){return{parent:normalized,warnings:[]}}const normalizedParentId=normalizeItemId(normalized,settings.id_prefix);return{parent:normalized,warnings:validateMissingParentReference(normalizedParentId,policy).warnings}}async function resolveCreateParentWithWarnings(params){if(params.parent===void 0){return{parent:void 0,warnings:[]}}const parentValidation=await validateCreateParentReference(params.pmRoot,params.settings,params.typeRegistry,params.itemId,params.parent,params.policy);return parentValidation}async function resolveCreateItemId(params){if(params.explicitId===void 0){return generateItemId(params.pmRoot,params.settings.id_prefix,{tokenLength:params.settings.ids.token_length,typeToFolder:params.typeRegistry.type_to_folder,probeExisting:false})}if(typeof params.explicitId!=="string"){throw new PmCliError("--id must be a string",EXIT_CODE.USAGE)}const trimmedId=params.explicitId.trim();if(trimmedId.length===0||isPlaceholderReferenceToken(trimmedId)){throw new PmCliError("--id must not be empty or use a placeholder token",EXIT_CODE.USAGE)}const normalizedId=normalizeItemId(trimmedId,params.settings.id_prefix);if(!/^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/.test(normalizedId)){throw new PmCliError("--id must contain only letters, numbers, and dashes after normalization",EXIT_CODE.USAGE)}return normalizedId}function resolveCreateSprintOrRelease(unsetKeys,metadataKey,raw,field,policy){const resolved=resolveUnsettableOptionalString(unsetKeys,metadataKey,raw);if(resolved===void 0){return{value:void 0,warnings:[]}}const validation=validateSprintOrReleaseValue(field,resolved,policy);return{value:validation.value,warnings:validation.warnings}}async function resolveCreateBlockedByDependency(params){const{pmRoot,settings,typeRegistry,statusRegistry,blockedBy,status,statusExplicit,nowValue,author}=params;let dependencyValues=params.dependencyValues;if(blockedBy===void 0){return{dependencyValues,status}}const normalizedBlockedBy=normalizeItemId(blockedBy,settings.id_prefix);const blockedByLocated=await locateItem(pmRoot,normalizedBlockedBy,settings.id_prefix,settings.item_format,typeRegistry.type_to_folder);if(!blockedByLocated){return{dependencyValues,status}}const hasBlockedByDependency=(dependencyValues??[]).some(dependency=>dependency.id===blockedByLocated.id&&dependency.kind==="blocked_by");if(!hasBlockedByDependency){dependencyValues=[...dependencyValues??[],{id:blockedByLocated.id,kind:"blocked_by",created_at:nowValue,author,source_kind:"cli:create:blocked_by",author_source:"detected"}]}if(statusExplicit){return{dependencyValues,status}}const blockedStatus=statusRegistry.blocked_statuses.has("blocked")?"blocked":[...statusRegistry.blocked_statuses].sort((left,right)=>left.localeCompare(right))[0]??statusRegistry.open_status;return{dependencyValues,status:blockedStatus}}function applyCreateDefaultType(resolvedOptions,settings,typeRegistry){const explicitStrictMode=typeof resolvedOptions.createMode==="string"&&resolvedOptions.createMode.trim().toLowerCase()==="strict";if(explicitStrictMode){return}const defaultType=settings.governance.create_default_type?.trim();if(defaultType&&defaultType.length>0&&resolveTypeName(defaultType,typeRegistry)){resolvedOptions.type=defaultType;return}if(resolveTypeName("Task",typeRegistry)){resolvedOptions.type="Task"}}function collectTemplateCustomTypeOptions(typeDefinition,resolvedOptions){return typeDefinition.options.filter(option=>canonicalizeCommandOptionKey("create",option.key)===void 0).flatMap(option=>{const value=resolvedOptions[option.key];if(value===void 0){return[]}if(typeof value==="string"||typeof value==="number"||typeof value==="boolean"){return[option]}throw new PmCliError(`Template custom type option "${option.key}" must be a string, number, or boolean value`,EXIT_CODE.USAGE)})}async function resolveCreateTypeSelection(options,global2,pmRoot,settings,typeRegistry){let resolvedOptions=options;const warnings=[];if(resolvedOptions.template!==void 0){const templateName=resolvedOptions.template.trim();if(templateName.length===0){throw new PmCliError("--template must not be empty. Omit --template to disable template usage.",EXIT_CODE.USAGE)}const templateOptions=await loadCreateTemplateOptionsFromRuntime(templateName,global2,pmRoot);resolvedOptions=normalizeLegacyNoneCreateOptions(mergeCreateOptionsWithTemplate(templateOptions,resolvedOptions))}if(resolvedOptions.type===void 0){applyCreateDefaultType(resolvedOptions,settings,typeRegistry)}if(resolvedOptions.type===void 0){throw new PmCliError("Missing required option --type <value>",EXIT_CODE.USAGE)}let resolvedTypeName=resolveTypeName(resolvedOptions.type,typeRegistry);if(!resolvedTypeName){const synonymCanonical=resolveTypeSynonym(resolvedOptions.type);const synonymResolved=synonymCanonical?resolveTypeName(synonymCanonical,typeRegistry):void 0;if(synonymResolved){warnings.push(`type_coercion:${resolvedOptions.type.trim()}:${synonymResolved}`);resolvedOptions.type=synonymResolved;resolvedTypeName=synonymResolved}else{throw new PmCliError(buildInvalidTypeError(resolvedOptions.type,typeRegistry.types,resolveItemTypesFilePath(pmRoot,settings.schema)),EXIT_CODE.USAGE)}}const typeDefinition=resolveTypeDefinition(resolvedTypeName,typeRegistry);if(!typeDefinition){throw new PmCliError(`Invalid type value "${resolvedOptions.type}"`,EXIT_CODE.USAGE)}const type=typeDefinition.name;const matchedTemplateTypeOptions=collectTemplateCustomTypeOptions(typeDefinition,resolvedOptions);const templateTypeOptions=matchedTemplateTypeOptions.map(option=>`${option.key}=${String(resolvedOptions[option.key])}`);if(templateTypeOptions.length>0){resolvedOptions.typeOption=[...templateTypeOptions,...resolvedOptions.typeOption??[]];for(const option of matchedTemplateTypeOptions){delete resolvedOptions[option.key]}}const schedulePreset=resolveScheduleCreatePreset(resolvedOptions.schedulePreset);if(schedulePreset!==void 0&&!SCHEDULE_CREATE_PRESET_TYPES.has(type)){throw new PmCliError(`--schedule-preset ${schedulePreset} is only supported for Reminder, Meeting, or Event types`,EXIT_CODE.USAGE)}const createMode=resolveEffectiveCreateMode(resolvedOptions.createMode,schedulePreset,settings.governance.create_mode_default);return{resolvedOptions,typeDefinition,type,schedulePreset,createMode,warnings}}function collectCreateClearTargets(resolvedOptions,unsetTargets){const explicitUnsets=new Set(unsetTargets.metadataKeys);const clearOptionKeys=new Set(unsetTargets.optionKeys);const clearCollectionDefinitions=[{enabled:resolvedOptions.clearDeps,optionKey:"dep",clearFlag:"--clear-deps",valueFlag:"--dep",values:resolvedOptions.dep,metadataKey:"dependencies"},{enabled:resolvedOptions.clearComments,optionKey:"comment",clearFlag:"--clear-comments",valueFlag:"--comment",values:resolvedOptions.comment,metadataKey:"comments"},{enabled:resolvedOptions.clearNotes,optionKey:"note",clearFlag:"--clear-notes",valueFlag:"--note",values:resolvedOptions.note,metadataKey:"notes"},{enabled:resolvedOptions.clearLearnings,optionKey:"learning",clearFlag:"--clear-learnings",valueFlag:"--learning",values:resolvedOptions.learning,metadataKey:"learnings"},{enabled:resolvedOptions.clearFiles,optionKey:"file",clearFlag:"--clear-files",valueFlag:"--file",values:resolvedOptions.file,metadataKey:"files"},{enabled:resolvedOptions.clearTests,optionKey:"test",clearFlag:"--clear-tests",valueFlag:"--test",values:resolvedOptions.test,metadataKey:"tests"},{enabled:resolvedOptions.clearDocs,optionKey:"doc",clearFlag:"--clear-docs",valueFlag:"--doc",values:resolvedOptions.doc,metadataKey:"docs"},{enabled:resolvedOptions.clearReminders,optionKey:"reminder",clearFlag:"--clear-reminders",valueFlag:"--reminder",values:resolvedOptions.reminder,metadataKey:"reminders"},{enabled:resolvedOptions.clearEvents,optionKey:"event",clearFlag:"--clear-events",valueFlag:"--event",values:resolvedOptions.event,metadataKey:"events"},{enabled:resolvedOptions.clearTypeOptions,optionKey:"typeOption",clearFlag:"--clear-type-options",valueFlag:"--type-option",values:resolvedOptions.typeOption,metadataKey:"type_options"}];for(const definition of clearCollectionDefinitions){if(!definition.enabled){continue}if(definition.values&&definition.values.length>0){throw new PmCliError(`Cannot combine ${definition.clearFlag} with ${definition.valueFlag}`,EXIT_CODE.USAGE)}explicitUnsets.add(definition.metadataKey);clearOptionKeys.add(definition.optionKey)}return{explicitUnsets,clearOptionKeys}}function assertNoCreateScalarUnsetConflicts(resolvedOptions,unsetTargets){const scalarOptionPresence={tags:resolvedOptions.tags!==void 0,deadline:resolvedOptions.deadline!==void 0,estimatedMinutes:resolvedOptions.estimatedMinutes!==void 0,acceptanceCriteria:resolvedOptions.acceptanceCriteria!==void 0,definitionOfReady:resolvedOptions.definitionOfReady!==void 0,order:resolvedOptions.order!==void 0||resolvedOptions.rank!==void 0,goal:resolvedOptions.goal!==void 0,objective:resolvedOptions.objective!==void 0,value:resolvedOptions.value!==void 0,impact:resolvedOptions.impact!==void 0,outcome:resolvedOptions.outcome!==void 0,whyNow:resolvedOptions.whyNow!==void 0,author:resolvedOptions.author!==void 0,assignee:resolvedOptions.assignee!==void 0,parent:resolvedOptions.parent!==void 0,reviewer:resolvedOptions.reviewer!==void 0,risk:resolvedOptions.risk!==void 0,confidence:resolvedOptions.confidence!==void 0,sprint:resolvedOptions.sprint!==void 0,release:resolvedOptions.release!==void 0,blockedBy:resolvedOptions.blockedBy!==void 0,blockedReason:resolvedOptions.blockedReason!==void 0,unblockNote:resolvedOptions.unblockNote!==void 0,reporter:resolvedOptions.reporter!==void 0,severity:resolvedOptions.severity!==void 0,environment:resolvedOptions.environment!==void 0,reproSteps:resolvedOptions.reproSteps!==void 0,resolution:resolvedOptions.resolution!==void 0,expectedResult:resolvedOptions.expectedResult!==void 0,actualResult:resolvedOptions.actualResult!==void 0,affectedVersion:resolvedOptions.affectedVersion!==void 0,fixedVersion:resolvedOptions.fixedVersion!==void 0,component:resolvedOptions.component!==void 0,regression:resolvedOptions.regression!==void 0,customerImpact:resolvedOptions.customerImpact!==void 0};for(const[optionKey,hasValue]of Object.entries(scalarOptionPresence)){if(!hasValue||!unsetTargets.optionKeys.has(optionKey)){continue}const unsetField=CREATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey)??optionKey;throw new PmCliError(`Cannot combine --unset ${unsetField} with ${commandOptionFlagLabel("create",optionKey)}`,EXIT_CODE.USAGE)}}function assertNoLegacyCreateScalarTokens(resolvedOptions){const assertNoLegacyScalarToken=(value,optionKey)=>{const unsetField=CREATE_OPTION_KEY_TO_UNSET_CANONICAL.get(optionKey);const hint=unsetField?`Use --unset ${unsetField} to clear this field.`:void 0;assertNoLegacyNoneToken(value,commandOptionFlagLabel("create",optionKey),hint)};assertNoLegacyScalarToken(resolvedOptions.tags,"tags");assertNoLegacyScalarToken(resolvedOptions.deadline,"deadline");assertNoLegacyScalarToken(resolvedOptions.estimatedMinutes,"estimatedMinutes");assertNoLegacyScalarToken(resolvedOptions.acceptanceCriteria,"acceptanceCriteria");assertNoLegacyScalarToken(resolvedOptions.definitionOfReady,"definitionOfReady");assertNoLegacyScalarToken(resolvedOptions.order??resolvedOptions.rank,"order");assertNoLegacyScalarToken(resolvedOptions.goal,"goal");assertNoLegacyScalarToken(resolvedOptions.objective,"objective");assertNoLegacyScalarToken(resolvedOptions.value,"value");assertNoLegacyScalarToken(resolvedOptions.impact,"impact");assertNoLegacyScalarToken(resolvedOptions.outcome,"outcome");assertNoLegacyScalarToken(resolvedOptions.whyNow,"whyNow");assertNoLegacyScalarToken(resolvedOptions.author,"author");assertNoLegacyScalarToken(resolvedOptions.assignee,"assignee");assertNoLegacyScalarToken(resolvedOptions.parent,"parent");assertNoLegacyScalarToken(resolvedOptions.reviewer,"reviewer");assertNoLegacyScalarToken(resolvedOptions.risk,"risk");assertNoLegacyScalarToken(resolvedOptions.confidence,"confidence");assertNoLegacyScalarToken(resolvedOptions.sprint,"sprint");assertNoLegacyScalarToken(resolvedOptions.release,"release");assertNoLegacyScalarToken(resolvedOptions.blockedBy,"blockedBy");assertNoLegacyScalarToken(resolvedOptions.blockedReason,"blockedReason");assertNoLegacyScalarToken(resolvedOptions.unblockNote,"unblockNote");assertNoLegacyScalarToken(resolvedOptions.reporter,"reporter");assertNoLegacyScalarToken(resolvedOptions.severity,"severity");assertNoLegacyScalarToken(resolvedOptions.environment,"environment");assertNoLegacyScalarToken(resolvedOptions.reproSteps,"reproSteps");assertNoLegacyScalarToken(resolvedOptions.resolution,"resolution");assertNoLegacyScalarToken(resolvedOptions.expectedResult,"expectedResult");assertNoLegacyScalarToken(resolvedOptions.actualResult,"actualResult");assertNoLegacyScalarToken(resolvedOptions.affectedVersion,"affectedVersion");assertNoLegacyScalarToken(resolvedOptions.fixedVersion,"fixedVersion");assertNoLegacyScalarToken(resolvedOptions.component,"component");assertNoLegacyScalarToken(resolvedOptions.regression,"regression");assertNoLegacyScalarToken(resolvedOptions.customerImpact,"customerImpact")}function assertNoCreateFieldUnsetConflicts(registeredItemFieldValues,runtimeCreateFieldValues,unsetTargets){for(const fieldKey of Object.keys(registeredItemFieldValues)){if(!unsetTargets.metadataKeys.has(fieldKey)){continue}throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_","-")} with --field ${fieldKey}=...`,EXIT_CODE.USAGE)}for(const fieldKey of Object.keys(runtimeCreateFieldValues.values??{})){if(!unsetTargets.metadataKeys.has(fieldKey)){continue}throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_","-")} with its value flag`,EXIT_CODE.USAGE)}}const CLEAR_FLAG_BY_REQUIRED_CREATE_FLAG={"--comment":"--clear-comments","--dep":"--clear-deps","--doc":"--clear-docs","--event":"--clear-events","--file":"--clear-files","--learning":"--clear-learnings","--note":"--clear-notes","--reminder":"--clear-reminders","--test":"--clear-tests","--type-option":"--clear-type-options"};function assertNoMissingRequiredCreateOptions(params){const{combinedMissingFlags,typeDefinition,missingRequiredCreateFlags,missingRequiredTypeOptionKeys,openStatus,type,createMode,missingRequiredRuntimeFields}=params;if(combinedMissingFlags.length===0){return}const runtimeFieldSyntax=missingRequiredRuntimeFields.map(field=>{const placeholder=field.type==="boolean"?"<true|false>":field.type==="array"?"<json-array>":field.type==="object"?"<json-object>":field.type==="number"?"<number>":field.type==="string_array"||field.repeatable?"<value>":"<string>";return{example:`--${field.cli_flag} ${placeholder}`,description:`--${field.cli_flag} maps to ${field.metadata_key} (${field.type}${field.repeatable?", repeatable":""})`}});const nextValidExample=[buildTypeSpecificCreateExample(typeDefinition,missingRequiredCreateFlags,missingRequiredTypeOptionKeys,openStatus),...runtimeFieldSyntax.map(field=>field.example)].join(" ");const nextSteps=[`Run "pm create --help --type ${type}" for type-aware required option guidance.`,...combinedMissingFlags.filter(flag=>flag==="--title").map(()=>'Title can also be passed as the first positional argument (example: pm create "Your title" --type '+type+").")];if(createMode==="strict"){nextSteps.push('For staged onboarding, retry with "--create-mode progressive".');if(SCHEDULE_CREATE_PRESET_TYPES.has(type)){nextSteps.push('For minimal scheduling inputs, try "--schedule-preset lightweight".')}}if(runtimeFieldSyntax.length>0){nextSteps.push(`Required custom field formats: ${runtimeFieldSyntax.map(field=>field.description).join("; ")}.`)}const collectionClearFlags=[...new Set(combinedMissingFlags.flatMap(flag=>{const normalizedFlag=flag.split(" ",1)[0];const clearFlag=CLEAR_FLAG_BY_REQUIRED_CREATE_FLAG[normalizedFlag];return clearFlag?[clearFlag]:[]}))];if(collectionClearFlags.length>0){nextSteps.push(`If the truthful value is an empty collection, use ${collectionClearFlags.join(", ")} instead of inventing metadata.`)}const errorMessage=combinedMissingFlags.length===1?`Missing required option ${combinedMissingFlags[0]} for type "${type}"`:`Missing required options ${combinedMissingFlags.join(", ")} for type "${type}"`;throw new PmCliError(errorMessage,EXIT_CODE.USAGE,{code:"missing_required_option",required:`Provide all required create options and type options for type "${type}" in one invocation.`,examples:[...collectionClearFlags.map(flag=>`pm create --type ${type} ${flag} ...`),nextValidExample],nextSteps,recovery:createMode==="strict"?{recovery_mode:"compact",missing_required_fields:combinedMissingFlags,suggested_flags:[...collectionClearFlags,...combinedMissingFlags,"--create-mode progressive"]}:void 0})}function resolveCreateTags(unsetKeys,resolvedOptions){if(unsetKeys.has("tags")&&Array.isArray(resolvedOptions.addTags)&&resolvedOptions.addTags.length>0){throw new PmCliError("Cannot combine --unset tags with --add-tags",EXIT_CODE.USAGE)}const baseTags=unsetKeys.has("tags")?[]:resolvedOptions.tags!==void 0?parseTags(resolvedOptions.tags):[];return mergeAdditiveTags(baseTags,resolvedOptions.addTags)}function resolveCreateOrder(unsetKeys,resolvedOptions){if(resolvedOptions.order!==void 0&&resolvedOptions.rank!==void 0&&resolvedOptions.order!==resolvedOptions.rank){throw new PmCliError("--order and --rank must match when both are provided",EXIT_CODE.USAGE)}const orderRaw=resolvedOptions.order??resolvedOptions.rank;const order=resolveUnsettableTransformed(unsetKeys,"order",orderRaw,raw=>parseOptionalNumber(raw,"order"));if(order!==void 0&&!Number.isInteger(order)){throw new PmCliError("Order must be an integer",EXIT_CODE.USAGE)}return order}function resolveCreateCloseReason(status,statusRegistry,settings,resolvedOptions,resolution,nowValue){if(resolvedOptions.completedAt!==void 0&&status!==statusRegistry.close_status){throw new PmCliError("--completed-at requires a terminal create status.",EXIT_CODE.USAGE)}const completedAt=status!==statusRegistry.close_status?void 0:resolvedOptions.completedAt===void 0?nowValue:resolveIsoOrRelative(resolvedOptions.completedAt,new Date(nowValue),"completed-at");if(status!==statusRegistry.close_status){return{closeReason:void 0,completedAt,warnings:[]}}const reasonInput=settings.governance.require_close_reason?{explicit:resolvedOptions.closeReason??resolvedOptions.message,resolution}:{explicit:resolvedOptions.closeReason};return{closeReason:requireTerminalReasonWithRecovery(reasonInput,settings.governance.require_close_reason,{operation:"create",status}).closeReason,completedAt,warnings:[]}}async function writeCreatedItem(params){const{pmRoot,type,id,settings,typeRegistry,author,extensionFieldNames,afterDocument,beforeDocument,historyMessage,changedFields,nowValue,similarityCandidate,allowDuplicate}=params;const itemPath=getItemPath(pmRoot,type,id,settings.item_format,typeRegistry.type_to_folder);const historyPath=getHistoryPath(pmRoot,id);const relationshipRegistry=resolveWorkspaceRelationshipKindRegistry();const hierarchyMutationRequired=afterDocument.metadata.parent!==void 0||(afterDocument.metadata.dependencies??[]).some(dependency=>relationshipRegistry.resolve(dependency.kind)?.hierarchy);const hierarchyLockRelease=await acquireHierarchyMutationLock({pmRoot,author,ttlSeconds:settings.locks.ttl_seconds,waitMs:settings.locks.wait_ms,required:hierarchyMutationRequired});let hierarchyLockHeld=hierarchyMutationRequired;let hookWarnings=[];try{const lockRelease=await acquireLock(pmRoot,id,settings.locks.ttl_seconds,author,false,settings.governance.force_required_for_stale_lock,settings.locks.wait_ms);try{const graphBeforeCreate=afterDocument.metadata.parent!==void 0||afterDocument.metadata.dependencies!==void 0&&afterDocument.metadata.dependencies.length>0?await listAllItemMetadataLight(pmRoot,settings.item_format,typeRegistry.type_to_folder,void 0,settings.schema):void 0;const existing=await locateItem(pmRoot,id,settings.id_prefix,settings.item_format,typeRegistry.type_to_folder);if(existing){throw new PmCliError(`Item "${id}" already exists`,EXIT_CODE.CONFLICT)}if(graphBeforeCreate){const statusRegistry=resolveRuntimeStatusRegistry(settings.schema);assertHierarchyMutationAllowed(graphBeforeCreate,[...graphBeforeCreate,afterDocument.metadata],id,status=>isTerminalStatus(status,statusRegistry),relationshipRegistry)}const workflowPolicy=await enforceWorkflowMutation({pmRoot,settings,operation:"create",author,before:null,after:afterDocument});await runActiveBeforeMutationHooks({pm_root:pmRoot,operation:"create",before:null,after:afterDocument,changed_fields:changedFields,sdk:createMutationGuardSdk({pmRoot,settings,typeToFolder:typeRegistry.type_to_folder})});const releaseDerivedIndexLock=await acquireItemMetadataDerivedIndexLock(pmRoot,author,{required:settings.governance.duplicate_detection_mode==="strict"&&allowDuplicate!==true});let derivedIndexWarnings=[];try{if(settings.governance.duplicate_detection_mode==="strict"&&allowDuplicate!==true){await evaluateSimilarityGovernance(similarityCandidate,{pmRoot,mode:"strict",threshold:settings.governance.duplicate_detection_threshold,limit:settings.governance.duplicate_detection_limit,allowDuplicate:false})}await writeFileAtomic(itemPath,serializeItemDocument(afterDocument,{format:settings.item_format,schema:settings.schema,extensionFieldNames}));try{const entry=createHistoryEntry({nowIso:nowValue,author,op:"create",before:beforeDocument,after:afterDocument,message:historyMessage,context:workflowPolicy.decisions.length===0?void 0:{workflow_policies:workflowPolicy.decisions}});await appendHistoryEntry(historyPath,entry)}catch(error){await removeFileIfExists(itemPath);throw error}if(hierarchyLockHeld){await hierarchyLockRelease();hierarchyLockHeld=false}derivedIndexWarnings=await refreshItemMetadataDerivedIndex({pmRoot,preferredFormat:settings.item_format,typeToFolder:typeRegistry.type_to_folder,schema:settings.schema,itemPath,document:afterDocument})}finally{await releaseDerivedIndexLock()}hookWarnings=[...workflowPolicy.warnings,...graphBeforeCreate?collectNewOrderingCycleWarnings(graphBeforeCreate,[...graphBeforeCreate,afterDocument.metadata],id):[],...derivedIndexWarnings,...await runActiveOnWriteHooks({path:itemPath,scope:"project",op:"create",item_id:afterDocument.metadata.id,item_type:afterDocument.metadata.type,before:beforeDocument,after:afterDocument,changed_fields:changedFields}),...await runActiveOnWriteHooks({path:historyPath,scope:"project",op:"create:history",item_id:afterDocument.metadata.id,item_type:afterDocument.metadata.type,before:beforeDocument,after:afterDocument,changed_fields:changedFields})];recordAfterCommandAffectedItem({id:afterDocument.metadata.id,op:"create",item_type:afterDocument.metadata.type,status:afterDocument.metadata.status,current:projectAfterCommandItemSnapshot(afterDocument.metadata,changedFields),changed_fields:changedFields})}finally{await lockRelease()}}finally{if(hierarchyLockHeld)await hierarchyLockRelease()}return hookWarnings}async function runCreate(options,global2){let resolvedOptions=normalizeLegacyNoneCreateOptions(await resolveCreateTransportInputs(options));const pmRoot=resolvePmRoot(process.cwd(),global2.path);await assertInitializedTracker(pmRoot);const settings=await readSettings(pmRoot);const statusRegistry=resolveRuntimeStatusRegistry(settings.schema);const runtimeFieldRegistry=resolveRuntimeFieldRegistry(settings.schema);const typeRegistry=resolveItemTypeRegistry(settings,getActiveExtensionRegistrations());const typeSelection=await resolveCreateTypeSelection(resolvedOptions,global2,pmRoot,settings,typeRegistry);resolvedOptions=typeSelection.resolvedOptions;const{typeDefinition,type,createMode}=typeSelection;const unsetTargets=parseCreateUnsetTargets(resolvedOptions.unset,runtimeFieldRegistry);const{explicitUnsets,clearOptionKeys}=collectCreateClearTargets(resolvedOptions,unsetTargets);assertNoCreateScalarUnsetConflicts(resolvedOptions,unsetTargets);assertNoLegacyCreateScalarTokens(resolvedOptions);const missingRequiredCreateFlags=requireCreateOptionByType(typeDefinition,resolvedOptions,createMode,clearOptionKeys);const nowValue=nowIso();const author=resolveAuthor(parseOptionalString(resolvedOptions.author),settings.author_default);const dependencies=parseDependencies(resolvedOptions.dep,nowValue,settings.id_prefix,author);const comments=parseLogSeed("--comment",resolvedOptions.comment,nowValue,author);const notes=parseLogSeed("--note",resolvedOptions.note,nowValue,author);const learnings=parseLogSeed("--learning",resolvedOptions.learning,nowValue,author);const files=parseFiles(resolvedOptions.file);const tests=parseTests(resolvedOptions.test);tests.values=await attachLinkedTestMutationProvenance(tests.values,author,nowValue);const docs=parseDocs(resolvedOptions.doc);const reminders=parseReminders(resolvedOptions.reminder,nowValue);const events=parseEvents(resolvedOptions.event,nowValue);const typeOptions=parseTypeOptions(resolvedOptions.typeOption);const validatedTypeOptions=validateTypeOptions(type,typeOptions.values,typeRegistry);const extensionRegistrations=getActiveExtensionRegistrations();const extensionFieldNames=collectRegisteredItemFieldNames(extensionRegistrations);const registeredItemFieldValues=parseRegisteredItemFieldAssignments(resolvedOptions.field,extensionRegistrations);const runtimeCreateFieldValues=collectRuntimeCreateFieldValues(resolvedOptions,runtimeFieldRegistry,type);const missingRequiredRuntimeFlagSet=new Set(runtimeCreateFieldValues.missing_required_flags);const missingRequiredRuntimeFields=runtimeFieldRegistry.definitions.filter(field=>missingRequiredRuntimeFlagSet.has(`--${field.cli_flag}`));assertNoCreateFieldUnsetConflicts(registeredItemFieldValues,runtimeCreateFieldValues,unsetTargets);const missingRequiredTypeOptionKeys=collectMissingRequiredTypeOptionKeys(validatedTypeOptions.errors,type);const missingRequiredTypeOptionFlags=missingRequiredTypeOptionKeys.map(key=>`--type-option ${key}=<value>`);const combinedMissingFlags=[...new Set([...missingRequiredCreateFlags,...missingRequiredTypeOptionFlags,...runtimeCreateFieldValues.missing_required_flags])].sort((left,right)=>left.localeCompare(right));assertNoMissingRequiredCreateOptions({combinedMissingFlags,typeDefinition,missingRequiredCreateFlags,missingRequiredTypeOptionKeys,openStatus:statusRegistry.open_status,type,createMode,missingRequiredRuntimeFields});assertNoInvalidTypeOptions(validatedTypeOptions.errors,type,typeDefinition,statusRegistry);const id=await resolveCreateItemId({pmRoot,settings,typeRegistry,explicitId:resolvedOptions.id});let status=resolvedOptions.status!==void 0?parseStatusValue(resolvedOptions.status,statusRegistry):resolveCreateDefaultStatus(typeDefinition,statusRegistry);const priority=resolvedOptions.priority!==void 0?resolvePriority(resolvedOptions.priority):2;const unsetKeys=unsetTargets.metadataKeys;const tags=resolveCreateTags(unsetKeys,resolvedOptions);const deadline=resolveUnsettableTransformed(unsetKeys,"deadline",resolvedOptions.deadline,raw=>resolveIsoOrRelative(raw,new Date(nowValue),"deadline"));const estimatedMinutes=resolveUnsettableTransformed(unsetKeys,"estimated_minutes",resolvedOptions.estimatedMinutes,raw=>parseOptionalNonNegativeInteger(raw,"estimated-minutes"));const acceptanceCriteria=resolveUnsettableOptionalString(unsetKeys,"acceptance_criteria",resolvedOptions.acceptanceCriteria);const definitionOfReady=resolveUnsettableOptionalString(unsetKeys,"definition_of_ready",resolvedOptions.definitionOfReady);const order=resolveCreateOrder(unsetKeys,resolvedOptions);const goal=resolveUnsettableOptionalString(unsetKeys,"goal",resolvedOptions.goal);const objective=resolveUnsettableOptionalString(unsetKeys,"objective",resolvedOptions.objective);const value=resolveUnsettableOptionalString(unsetKeys,"value",resolvedOptions.value);const impact=resolveUnsettableOptionalString(unsetKeys,"impact",resolvedOptions.impact);const outcome=resolveUnsettableOptionalString(unsetKeys,"outcome",resolvedOptions.outcome);const whyNow=resolveUnsettableOptionalString(unsetKeys,"why_now",resolvedOptions.whyNow);const assignee=resolveUnsettableOptionalString(unsetKeys,"assignee",resolvedOptions.assignee);const authorValue=unsetKeys.has("author")?void 0:parseOptionalString(resolvedOptions.author)??author;const initialParent=resolveUnsettableOptionalString(unsetKeys,"parent",resolvedOptions.parent);const inheritedParent=await inheritFocusedParent(initialParent,resolvedOptions,unsetKeys,pmRoot);let parent=inheritedParent.parent;const parentSource=inheritedParent.parentSource;const reviewer=resolveUnsettableOptionalString(unsetKeys,"reviewer",resolvedOptions.reviewer);const risk=resolveUnsettableTransformed(unsetKeys,"risk",resolvedOptions.risk,raw=>ensureEnumValue(normalizeRiskInput(raw),RISK_VALUES,"risk"));const confidence=resolveUnsettableTransformed(unsetKeys,"confidence",resolvedOptions.confidence,raw=>parseConfidenceInput(raw));const parentReferencePolicy=resolvedOptions.allowMissingParent===true&&settings.validation.parent_reference==="strict_error"?"warn":settings.validation.parent_reference;const sprintReleasePolicy=settings.validation.sprint_release_format;const validationWarnings=[...typeSelection.warnings,...collectCreateScheduleWarnings(type,id,deadline,reminders.values,events.values)];const parentValidation=await resolveCreateParentWithWarnings({itemId:id,parent,pmRoot,settings,typeRegistry,policy:parentReferencePolicy});parent=parentValidation.parent;validationWarnings.push(...parentValidation.warnings);const sprintResolved=resolveCreateSprintOrRelease(unsetKeys,"sprint",resolvedOptions.sprint,"sprint",sprintReleasePolicy);const sprint=sprintResolved.value;validationWarnings.push(...sprintResolved.warnings);const releaseResolved=resolveCreateSprintOrRelease(unsetKeys,"release",resolvedOptions.release,"release",sprintReleasePolicy);const release=releaseResolved.value;validationWarnings.push(...releaseResolved.warnings);const blockedBy=resolveUnsettableOptionalString(unsetKeys,"blocked_by",resolvedOptions.blockedBy);const blockedByResolution=await resolveCreateBlockedByDependency({pmRoot,settings,typeRegistry,statusRegistry,blockedBy,dependencyValues:dependencies.values,status,statusExplicit:resolvedOptions.status!==void 0,nowValue,author});const dependencyValues=blockedByResolution.dependencyValues;assertDependencyEdgesAllowed(id,dependencyValues);validationWarnings.push(...await assertDependencyTargetsResolvable({pmRoot,dependencies:dependencyValues,idPrefix:settings.id_prefix,itemFormat:settings.item_format,typeToFolder:typeRegistry.type_to_folder,allowUnresolved:resolvedOptions.allowUnresolvedDeps,holders:[{id,createdAt:nowValue}],schema:settings.schema}));status=blockedByResolution.status;const blockedReason=resolveUnsettableOptionalString(unsetKeys,"blocked_reason",resolvedOptions.blockedReason);const unblockNote=resolveUnsettableOptionalString(unsetKeys,"unblock_note",resolvedOptions.unblockNote);const reporter=resolveUnsettableOptionalString(unsetKeys,"reporter",resolvedOptions.reporter);const severity=resolveUnsettableTransformed(unsetKeys,"severity",resolvedOptions.severity,raw=>ensureEnumValue(normalizeSeverityInput(raw),ISSUE_SEVERITY_VALUES,"severity"));const environment=resolveUnsettableOptionalString(unsetKeys,"environment",resolvedOptions.environment);const reproSteps=resolveUnsettableOptionalString(unsetKeys,"repro_steps",resolvedOptions.reproSteps);const resolution=resolveUnsettableOptionalString(unsetKeys,"resolution",resolvedOptions.resolution);const expectedResult=resolveUnsettableOptionalString(unsetKeys,"expected_result",resolvedOptions.expectedResult);const actualResult=resolveUnsettableOptionalString(unsetKeys,"actual_result",resolvedOptions.actualResult);const affectedVersion=resolveUnsettableOptionalString(unsetKeys,"affected_version",resolvedOptions.affectedVersion);const fixedVersion=resolveUnsettableOptionalString(unsetKeys,"fixed_version",resolvedOptions.fixedVersion);const component=resolveUnsettableOptionalString(unsetKeys,"component",resolvedOptions.component);const regression=resolveUnsettableTransformed(unsetKeys,"regression",resolvedOptions.regression,raw=>parseRegressionInput(raw));const customerImpact=resolveUnsettableOptionalString(unsetKeys,"customer_impact",resolvedOptions.customerImpact);const title=requireStringOption(resolvedOptions.title,"--title");const description=resolvedOptions.description??"";const body=resolvedOptions.body??"";const similarityAdvisory=await evaluateSimilarityGovernance({title,description,body},{pmRoot,mode:settings.governance.duplicate_detection_mode,threshold:settings.governance.duplicate_detection_threshold,limit:settings.governance.duplicate_detection_limit,allowDuplicate:resolvedOptions.allowDuplicate});validationWarnings.push(...similarityAdvisoryWarnings(similarityAdvisory));const closeReasonResolution=resolveCreateCloseReason(status,statusRegistry,settings,resolvedOptions,resolution,nowValue);const closeReason=closeReasonResolution.closeReason;const closedAt=status===statusRegistry.close_status?nowValue:void 0;const completedAt=closeReasonResolution.completedAt;validationWarnings.push(...closeReasonResolution.warnings);const itemMetadata=normalizeItemMetadata({id,title,description,type,type_options:validatedTypeOptions.normalized,status,closed_at:closedAt,completed_at:completedAt,close_reason:closeReason,priority,tags,created_at:nowValue,updated_at:nowValue,deadline,assignee,author:authorValue,estimated_minutes:estimatedMinutes,acceptance_criteria:acceptanceCriteria,definition_of_ready:definitionOfReady,order,goal,objective,value,impact,outcome,why_now:whyNow,parent,reviewer,risk,confidence,sprint,release,blocked_by:blockedBy,blocked_reason:blockedReason,unblock_note:unblockNote,reporter,severity,environment,repro_steps:reproSteps,resolution,expected_result:expectedResult,actual_result:actualResult,affected_version:affectedVersion,fixed_version:fixedVersion,component,regression,customer_impact:customerImpact,dependencies:dependencyValues,comments:comments.values,notes:notes.values,learnings:learnings.values,files:files.values,tests:tests.values,docs:docs.values,reminders:reminders.values,events:events.values,...registeredItemFieldValues,...runtimeCreateFieldValues.values});try{applyRegisteredItemFieldDefaultsAndValidation(itemMetadata,extensionRegistrations)}catch(error){throw new PmCliError(error instanceof Error?error.message:"Invalid extension item field values",EXIT_CODE.USAGE)}const afterDocument=canonicalDocument({metadata:itemMetadata,body},{schema:settings.schema,extensionFieldNames});const beforeDocument={metadata:{},body:""};const explicitUnsetKeys=[...explicitUnsets].sort((left,right)=>left.localeCompare(right));const historyMessage=buildHistoryMessage(resolvedOptions.message,explicitUnsetKeys);const changedFields=buildChangedFields(itemMetadata,body,explicitUnsetKeys,[...Object.keys(registeredItemFieldValues),...Object.keys(runtimeCreateFieldValues.values??{})]);const hookWarnings=await writeCreatedItem({pmRoot,type,id,settings,typeRegistry,author,extensionFieldNames,afterDocument,beforeDocument,historyMessage,changedFields,nowValue,similarityCandidate:{title,description,body},allowDuplicate:resolvedOptions.allowDuplicate});const outputItem=structuredClone(itemMetadata);if(createMode==="strict"&&explicitUnsets.has("dependencies")){outputItem.dependencies=[]}const nextTransition=suggestNextLifecycleTransition(id,type,status,statusRegistry);if(createItemLacksSchedule(type,deadline,reminders.values,events.values)){printError(`[pm] warning: ${type} '${id}' has no deadline/reminder/event \u2014 it will not appear on the calendar. Add one via 'pm update ${id} --deadline <ISO>' or 'pm update ${id} --event "start=<ISO>,end=<ISO>"'.`)}return{item:outputItem,changed_fields:changedFields,warnings:[...validationWarnings,...hookWarnings],...Object.fromEntries([["parent_source",parentSource],["next_transition",nextTransition],["similarity_advisory",similarityAdvisory]].filter(entry=>entry[1]!==void 0))}}const _testOnlyCreateCommand={buildHistoryMessage,buildInvalidLogSeedKeysMessage,buildTypeSpecificCreateExample,collectMissingRequiredTypeOptionKeys,createExampleTokensForFlag,filterNonMissingTypeOptionErrors,hasTemplatesShowHandler,hasCreateOptionValue,loadCreateTemplateOptionsFromRuntime,looksLikeStructuredEntry,mergeCreateOptionsWithTemplate,normalizeCreatePolicyOptionKey,normalizeDependencyKindInput,parseDependencies,normalizeExtensionCommandPath,parseCreateUnsetTargets,requireStringOption,readTemplateOptionsFromRuntimeResult,resolveRuntimeCreateUnsetDefinition:(token,registry)=>resolveRuntimeUnsetFieldDefinition(token,"create",registry),typeOptionExampleValue};export{_testOnlyCreateCommand,parseDocs,parseFiles,parseLogSeed,parseTests,requireStringOption,runCreate};
2
2
  //# sourceMappingURL=create.js.map
@@ -14,7 +14,7 @@ export interface LifecycleTransitionSuggestion {
14
14
  /**
15
15
  * Suggest the next lifecycle transition for a freshly created (or open) item.
16
16
  *
17
- * Returns a `pm start-task` hint when the item is a workable type currently in
17
+ * Returns a `pm claim --start` hint when the item is a workable type currently in
18
18
  * the workspace open status AND the workflow defines a distinct `in_progress`
19
19
  * status to advance to. Returns `undefined` (no hint) otherwise — including for
20
20
  * scheduling types and workflows that collapse `in_progress` into `open` — so