@unbrained/pm-cli 2026.9.7 → 2026.9.8
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.
- package/.agents/skills/pm-developer/SKILL.md +12 -4
- package/.agents/skills/pm-developer/references/MULTI_AGENT_MERGE.md +19 -10
- package/.agents/skills/pm-extensions/SKILL.md +6 -0
- package/.agents/skills/pm-sdk/SKILL.md +11 -2
- package/.agents/skills/pm-user/SKILL.md +5 -0
- package/.agents/skills/pm-user/references/ECOSYSTEM_PLANNING.md +95 -0
- package/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +211 -181
- package/dist/cli/after-command-context-usage.js +1 -48
- package/dist/cli/argv-utils.js +1 -40
- package/dist/cli/bootstrap-args.js +1 -9
- package/dist/cli/bundle-integrity.js +2 -110
- package/dist/cli/commander-usage.js +11 -771
- package/dist/cli/commands/activity.js +1 -9
- package/dist/cli/commands/aggregate.js +1 -5
- package/dist/cli/commands/append.js +1 -5
- package/dist/cli/commands/claim.js +1 -5
- package/dist/cli/commands/close-many.js +1 -5
- package/dist/cli/commands/close.js +1 -9
- package/dist/cli/commands/comments.js +1 -5
- package/dist/cli/commands/config.js +1 -9
- package/dist/cli/commands/context.js +1 -9
- package/dist/cli/commands/contracts.js +1 -5
- package/dist/cli/commands/copy.js +1 -9
- package/dist/cli/commands/create.js +1 -9
- package/dist/cli/commands/delete.js +1 -9
- package/dist/cli/commands/deps.js +1 -9
- package/dist/cli/commands/docs.js +1 -9
- package/dist/cli/commands/duplicates.js +1 -9
- package/dist/cli/commands/eval.js +1 -9
- package/dist/cli/commands/extension/describe.js +1 -5
- package/dist/cli/commands/extension/scaffold.js +1 -5
- package/dist/cli/commands/extension/shared.js +1 -5
- package/dist/cli/commands/extension.js +1 -9
- package/dist/cli/commands/files.js +1 -9
- package/dist/cli/commands/focus.js +1 -9
- package/dist/cli/commands/gc.js +1 -9
- package/dist/cli/commands/get.js +1 -9
- package/dist/cli/commands/graph.js +1 -10
- package/dist/cli/commands/health.js +1 -9
- package/dist/cli/commands/history-compact.js +1 -10
- package/dist/cli/commands/history-redact.js +1 -11
- package/dist/cli/commands/history-repair.js +1 -10
- package/dist/cli/commands/history.js +1 -5
- package/dist/cli/commands/index.js +1 -58
- package/dist/cli/commands/init-agent-guidance.js +1 -9
- package/dist/cli/commands/init.js +1 -9
- package/dist/cli/commands/learnings.js +1 -5
- package/dist/cli/commands/lifecycle-transitions.js +1 -5
- package/dist/cli/commands/list.js +1 -9
- package/dist/cli/commands/merge.js +1 -11
- package/dist/cli/commands/next.js +1 -9
- package/dist/cli/commands/notes.js +1 -5
- package/dist/cli/commands/plan.js +1 -9
- package/dist/cli/commands/profile.js +1 -9
- package/dist/cli/commands/restore.js +1 -9
- package/dist/cli/commands/scheduling-shortcuts.js +1 -9
- package/dist/cli/commands/schema.js +1 -10
- package/dist/cli/commands/search.js +1 -9
- package/dist/cli/commands/stats.js +1 -9
- package/dist/cli/commands/telemetry.js +1 -9
- package/dist/cli/commands/test-all.js +1 -9
- package/dist/cli/commands/test-runs.js +1 -9
- package/dist/cli/commands/test.js +1 -9
- package/dist/cli/commands/update-many.js +1 -5
- package/dist/cli/commands/update.js +1 -9
- package/dist/cli/commands/upgrade.js +1 -5
- package/dist/cli/commands/validate.js +1 -15
- package/dist/cli/context-intent-invocation.js +1 -20
- package/dist/cli/description-stdin.js +1 -17
- package/dist/cli/error-guidance.js +1 -1353
- package/dist/cli/extension-command-help.js +5 -636
- package/dist/cli/extension-command-options.js +1 -427
- package/dist/cli/extension-recovery.js +1 -126
- package/dist/cli/help-content.js +2 -1001
- package/dist/cli/help-json-payload.js +4 -570
- package/dist/cli/main.d.ts +4 -0
- package/dist/cli/main.js +5 -2573
- package/dist/cli/migration-gates.js +1 -289
- package/dist/cli/public.js +1 -20
- package/dist/cli/register-annotations.js +1 -270
- package/dist/cli/register-assurance.js +1 -62
- package/dist/cli/register-files-lookup.js +1 -56
- package/dist/cli/register-history-activity.d.ts +8 -0
- package/dist/cli/register-history-activity.js +2 -0
- package/dist/cli/register-history-author.js +1 -38
- package/dist/cli/register-history-maintenance.d.ts +9 -0
- package/dist/cli/register-history-maintenance.js +2 -0
- package/dist/cli/register-list-query.js +10 -943
- package/dist/cli/register-mutation-options.js +1 -9
- package/dist/cli/register-mutation.js +19 -1893
- package/dist/cli/register-operations.js +1 -920
- package/dist/cli/register-setup.js +1 -716
- package/dist/cli/register-structured-mutation.js +1 -196
- package/dist/cli/registration-helpers.js +1 -5
- package/dist/cli/runtime-compatibility-boundary.js +4 -42
- package/dist/cli/schema-registration-helpers.js +1 -73
- package/dist/cli/search-refresh.js +1 -13
- package/dist/cli/stats-analytics-json.js +1 -68
- package/dist/cli/telemetry-flush.js +1 -10
- package/dist/cli-bundle/bundle-manifest.json +164 -156
- package/dist/cli-bundle/chunks/chunk-3BZZA6A3.js +5 -0
- package/dist/cli-bundle/chunks/chunk-AMRDVX36.js +235 -0
- package/dist/cli-bundle/chunks/chunk-DAM4CBBR.js +2202 -0
- package/dist/cli-bundle/chunks/{chunk-WYRZZ5ZE.js → chunk-DEZPZOQ7.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-FLDWYEND.js +77 -0
- package/dist/cli-bundle/chunks/{chunk-NPN5I67J.js → chunk-G5ADGQ2D.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-JAAEYHUA.js +2 -0
- package/dist/cli-bundle/chunks/{chunk-JX4DH4WC.js → chunk-KR3RP4FH.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-LEZOUXG6.js +2 -0
- package/dist/cli-bundle/chunks/chunk-NSAPNEYH.js +2 -0
- package/dist/cli-bundle/chunks/chunk-QOEKOECV.js +29 -0
- package/dist/cli-bundle/chunks/chunk-RHSFOMHU.js +2 -0
- package/dist/cli-bundle/chunks/chunk-XOD2PCB6.js +20 -0
- package/dist/cli-bundle/chunks/{chunk-JT6XF6GE.js → chunk-YVEQ2AMO.js} +4 -4
- package/dist/cli-bundle/chunks/register-list-query-KSK3R63M.js +11 -0
- package/dist/cli-bundle/chunks/register-mutation-IQ5C7U6O.js +20 -0
- package/dist/cli-bundle/chunks/{register-operations-I5W3KMGB.js → register-operations-DWVHR2NC.js} +2 -2
- package/dist/cli-bundle/chunks/register-setup-BQ5SVD4B.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-3WRPWLA7.js +3 -0
- package/dist/cli-bundle/focused-chunks/chunk-7MBUII7U.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-COPBO5HW.js +8 -0
- package/dist/cli-bundle/focused-chunks/chunk-DUN4IXYN.js +20 -0
- package/dist/cli-bundle/focused-chunks/{chunk-LIJIA4TY.js → chunk-EE5QSM4Z.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-HJVARYM3.js +6 -0
- package/dist/cli-bundle/focused-chunks/chunk-IAUOUGVR.js +177 -0
- package/dist/cli-bundle/focused-chunks/chunk-KOOMJ54F.js +2 -0
- package/dist/cli-bundle/focused-chunks/chunk-MZDXX7JY.js +56 -0
- package/dist/cli-bundle/focused-chunks/{chunk-M6PBRFSH.js → chunk-OPFHFGDD.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-QHNETP77.js +9 -0
- package/dist/cli-bundle/focused-chunks/{chunk-3BZEOXLT.js → chunk-RMWES4M6.js} +2 -2
- package/dist/cli-bundle/focused-chunks/chunk-RXT4P5QH.js +10 -0
- package/dist/cli-bundle/focused-chunks/chunk-SDOL6FM2.js +12 -0
- package/dist/cli-bundle/focused-chunks/chunk-SQV4AAUC.js +2 -0
- package/dist/cli-bundle/focused-chunks/{chunk-PEFABF7E.js → chunk-WE3IUNIW.js} +3 -3
- package/dist/cli-bundle/focused-chunks/chunk-YALOUBWJ.js +2 -0
- package/dist/cli-bundle/main.js +20 -20
- package/dist/cli-bundle/sdk-authoring.js +1 -1
- package/dist/cli-bundle/sdk-contracts.js +2 -2
- package/dist/cli-bundle/sdk-core.js +29 -29
- package/dist/cli-bundle/sdk-governance.js +1 -1
- package/dist/cli-bundle/sdk-graph.js +1 -1
- package/dist/cli-bundle/sdk-merge.js +42 -42
- package/dist/cli-bundle/sdk-query.js +1 -1
- package/dist/cli-bundle/sdk-runtime.js +1 -1
- package/dist/cli-bundle/sdk-testing.js +1 -1
- package/dist/cli-bundle/sdk.js +11 -11
- package/dist/cli.js +1 -104
- package/dist/core/checkpoint/checkpoint-gc.js +1 -169
- package/dist/core/checkpoint/mutation-checkpoint.js +2 -133
- package/dist/core/config/nested-settings.js +1 -534
- package/dist/core/config/positional-value.js +1 -109
- package/dist/core/diagnostics/remediation.js +1 -506
- package/dist/core/extensions/activation-summary-markdown.js +2 -145
- package/dist/core/extensions/activation-summary.js +1 -92
- package/dist/core/extensions/activation-transaction.js +1 -46
- package/dist/core/extensions/capability-usage.js +1 -173
- package/dist/core/extensions/command-hook-context.js +1 -13
- package/dist/core/extensions/command-metadata-contract.js +1 -22
- package/dist/core/extensions/command-visibility-tier.js +1 -29
- package/dist/core/extensions/contribution-inventory.js +1 -173
- package/dist/core/extensions/exporter-output-contract.js +1 -66
- package/dist/core/extensions/extension-candidate.js +1 -18
- package/dist/core/extensions/extension-capability-aliases.js +1 -158
- package/dist/core/extensions/extension-hook-runtime.js +1 -699
- package/dist/core/extensions/extension-policy.js +1 -599
- package/dist/core/extensions/extension-registries.js +1 -62
- package/dist/core/extensions/extension-runtime-helpers.js +1 -33
- package/dist/core/extensions/extension-types.js +1 -102
- package/dist/core/extensions/flag-definition-validation.js +1 -52
- package/dist/core/extensions/flag-value-types.js +1 -64
- package/dist/core/extensions/index.js +1 -526
- package/dist/core/extensions/item-field-types.js +1 -39
- package/dist/core/extensions/item-fields.js +1 -261
- package/dist/core/extensions/loader.js +1 -2223
- package/dist/core/extensions/manifest-schema.js +1 -69
- package/dist/core/extensions/module-graph-snapshot.js +1 -33
- package/dist/core/extensions/preflight-ownership.js +1 -41
- package/dist/core/extensions/registration-validation.js +1 -82
- package/dist/core/extensions/registration-values.js +1 -209
- package/dist/core/extensions/reserved-host-flags.js +1 -36
- package/dist/core/extensions/runtime-registrations.js +1 -67
- package/dist/core/extensions/service-ownership.js +1 -19
- package/dist/core/extensions/version-compat.js +1 -216
- package/dist/core/fs/fs-utils.js +2 -158
- package/dist/core/fs/host-environment-errors.js +1 -141
- package/dist/core/fs/index.js +1 -9
- package/dist/core/fs/path-utils.js +1 -17
- package/dist/core/governance/content-fields.js +1 -160
- package/dist/core/governance/issue-codes.js +1 -151
- package/dist/core/governance/metadata-coverage.js +1 -358
- package/dist/core/history/drift-cache.js +3 -72
- package/dist/core/history/drift-scan.js +1 -342
- package/dist/core/history/event-classification.js +1 -109
- package/dist/core/history/event-index.js +8 -784
- package/dist/core/history/history-compact-bulk.js +1 -104
- package/dist/core/history/history-diff.js +1 -158
- package/dist/core/history/history-rewrite.d.ts +6 -1
- package/dist/core/history/history-rewrite.js +1 -107
- package/dist/core/history/history-storage-stats.js +1 -102
- package/dist/core/history/history-stream-policy.js +1 -62
- package/dist/core/history/history.js +2 -617
- package/dist/core/history/identity.js +1 -30
- package/dist/core/history/index.js +1 -9
- package/dist/core/history/projection.js +1 -196
- package/dist/core/history/read.d.ts +9 -0
- package/dist/core/history/read.js +1 -57
- package/dist/core/history/replay.js +2 -439
- package/dist/core/history/version-address.js +1 -32
- package/dist/core/history/workspace-history.js +2 -433
- package/dist/core/io/body-file.js +1 -62
- package/dist/core/io/bulk-ids-input.js +1 -112
- package/dist/core/item/actionability.js +1 -327
- package/dist/core/item/dependency-reference.js +1 -20
- package/dist/core/item/id.js +1 -112
- package/dist/core/item/index.js +1 -12
- package/dist/core/item/item-format-version.js +1 -78
- package/dist/core/item/item-format.js +5 -1473
- package/dist/core/item/item-record.js +1 -23
- package/dist/core/item/item-type-definition.js +1 -133
- package/dist/core/item/parent-reference-policy.js +1 -57
- package/dist/core/item/parse.js +2 -603
- package/dist/core/item/plan-lifecycle.js +1 -19
- package/dist/core/item/priority.js +1 -61
- package/dist/core/item/sprint-release-format.js +1 -38
- package/dist/core/item/status-filter.js +1 -115
- package/dist/core/item/status.js +1 -43
- package/dist/core/item/toon-decode.js +1 -29
- package/dist/core/item/type-registry.js +1 -715
- package/dist/core/item/type-synonyms.js +1 -38
- package/dist/core/lock/index.js +1 -9
- package/dist/core/lock/lock-gc.js +1 -240
- package/dist/core/lock/lock.js +3 -590
- package/dist/core/output/mutation-projection.js +1 -217
- package/dist/core/output/output-control.js +1 -25
- package/dist/core/output/output.js +11 -494
- package/dist/core/output/query-summary.js +1 -58
- package/dist/core/output/tabular.js +1 -77
- package/dist/core/packages/manifest.js +1 -244
- package/dist/core/packages/root.js +1 -84
- package/dist/core/profile/profile-describe.js +1 -83
- package/dist/core/profile/profile-lint.js +1 -415
- package/dist/core/profile/profile-plan.js +0 -0
- package/dist/core/profile/profile-presets.js +1 -370
- package/dist/core/reproducibility/context.js +1 -82
- package/dist/core/schema/fields-file.js +2 -288
- package/dist/core/schema/item-types-file.js +2 -296
- package/dist/core/schema/runtime-field-filters.js +1 -49
- package/dist/core/schema/runtime-field-values.js +1 -313
- package/dist/core/schema/runtime-schema.js +2 -826
- package/dist/core/schema/status-defs-file.js +2 -227
- package/dist/core/schema/status-token.js +1 -31
- package/dist/core/schema/type-inference.js +1 -95
- package/dist/core/schema/type-presets.js +1 -87
- package/dist/core/schema/type-workflows.js +1 -104
- package/dist/core/search/background-refresh.js +2 -286
- package/dist/core/search/bm25.js +1 -146
- package/dist/core/search/cache.js +2 -534
- package/dist/core/search/corpus.js +1 -311
- package/dist/core/search/embedding-batches.js +1 -163
- package/dist/core/search/eval.js +1 -225
- package/dist/core/search/http-client.js +1 -75
- package/dist/core/search/providers.js +1 -242
- package/dist/core/search/relevance.js +1 -244
- package/dist/core/search/semantic-defaults.js +1 -199
- package/dist/core/search/staleness.js +1 -30
- package/dist/core/search/vector-stores.js +2 -664
- package/dist/core/search/vectorization-metadata.js +1 -81
- package/dist/core/sentry/helpers.js +1 -272
- package/dist/core/sentry/instrument.js +1 -387
- package/dist/core/session/session-state.js +1 -260
- package/dist/core/shared/agent-session-context.js +1 -133
- package/dist/core/shared/author.js +1 -1172
- package/dist/core/shared/command-types.js +1 -4
- package/dist/core/shared/conflict-markers.js +1 -31
- package/dist/core/shared/constants.js +1 -405
- package/dist/core/shared/errors.js +1 -20
- package/dist/core/shared/html-entity-decode.js +1 -131
- package/dist/core/shared/index.js +1 -12
- package/dist/core/shared/item-metadata-contract.js +1 -89
- package/dist/core/shared/lazy-module.js +1 -16
- package/dist/core/shared/levenshtein.js +1 -61
- package/dist/core/shared/memo.js +1 -19
- package/dist/core/shared/numeric-parsers.js +1 -20
- package/dist/core/shared/option-alias-visibility.js +1 -67
- package/dist/core/shared/primitives.js +1 -127
- package/dist/core/shared/serial-queue.js +1 -79
- package/dist/core/shared/serialization.js +1 -210
- package/dist/core/shared/split-comma-list.js +1 -30
- package/dist/core/shared/text-normalization.js +1 -38
- package/dist/core/shared/time.js +1 -306
- package/dist/core/store/index.js +1 -12
- package/dist/core/store/item-format-migration.js +1 -125
- package/dist/core/store/item-metadata-cache.js +1 -1116
- package/dist/core/store/item-metadata-query-index.js +9 -394
- package/dist/core/store/item-metadata-read-work.js +1 -43
- package/dist/core/store/item-store.js +1 -693
- package/dist/core/store/paths.d.ts +1 -1
- package/dist/core/store/paths.js +1 -214
- package/dist/core/store/settings-read-cache.js +1 -85
- package/dist/core/store/settings-validator.js +1 -421
- package/dist/core/store/settings.js +3 -1309
- package/dist/core/store/tracker-preflight.js +1 -141
- package/dist/core/telemetry/consent.js +5 -108
- package/dist/core/telemetry/observability.js +1 -246
- package/dist/core/telemetry/runtime.js +4 -1988
- package/dist/core/test/background-runs.js +4 -945
- package/dist/core/test/item-test-run-tracking.js +1 -63
- package/dist/core/test/run-selectors.js +1 -120
- package/dist/core/validate/estimate-defaults.js +1 -89
- package/dist/core/validate/fix-planning.js +1 -189
- package/dist/core/validate/linked-artifact-reference.js +1 -36
- package/dist/core/validate/missing-by-type.js +1 -34
- package/dist/core/validate/missing-link-owners.js +1 -95
- package/dist/core/validate/stale-file-classification.js +1 -82
- package/dist/mcp/http-server.js +5 -448
- package/dist/mcp/legacy-adapter.js +1 -77
- package/dist/mcp/runtime-capabilities.js +1 -200
- package/dist/mcp/server.js +4 -1233
- package/dist/mcp/tool-definitions.js +1 -804
- package/dist/sdk/actionability.js +1 -13
- package/dist/sdk/agent/closed-domain-contracts.js +1 -161
- package/dist/sdk/agent/command-recovery.js +1 -59
- package/dist/sdk/agent/command-suggestions.js +1 -66
- package/dist/sdk/agent/create-option-policy.js +1 -31
- package/dist/sdk/agent/identity-config.js +1 -106
- package/dist/sdk/agent/item-addressing.js +1 -207
- package/dist/sdk/agent/refusal-closure-census.js +1 -151
- package/dist/sdk/agent/refusal-closure.js +1 -133
- package/dist/sdk/agent/refusal-corpus-contracts.js +1 -193
- package/dist/sdk/agent/refusal-reachability.js +1 -593
- package/dist/sdk/agent/subcommand-recovery.js +1 -83
- package/dist/sdk/agent/task-transcript-contracts.js +1 -197
- package/dist/sdk/agent/tracker-preflight-contracts.js +1 -126
- package/dist/sdk/agent-capability-contracts.js +1 -428
- package/dist/sdk/agent-session-context.js +1 -9
- package/dist/sdk/annotations.js +1 -448
- package/dist/sdk/author-attribution.js +1 -468
- package/dist/sdk/authoring.js +1 -20
- package/dist/sdk/cli-bootstrap.js +1 -838
- package/dist/sdk/cli-contracts/agent-output-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts/agent-output-contracts.js +4 -476
- package/dist/sdk/cli-contracts/bootstrap-command-scanner.js +1 -79
- package/dist/sdk/cli-contracts/command-aliases.d.ts +4 -0
- package/dist/sdk/cli-contracts/command-aliases.js +1 -107
- package/dist/sdk/cli-contracts/command-exit-contracts.js +1 -151
- package/dist/sdk/cli-contracts/commander-mutation-options.js +1 -1081
- package/dist/sdk/cli-contracts/commander-types.js +1 -159
- package/dist/sdk/cli-contracts/completeness.js +1 -393
- package/dist/sdk/cli-contracts/enum-contracts.js +1 -222
- package/dist/sdk/cli-contracts/flag-contracts.js +1 -1947
- package/dist/sdk/cli-contracts/flag-lexicon-contracts.js +1 -347
- package/dist/sdk/cli-contracts/grammar-contracts.js +1 -986
- package/dist/sdk/cli-contracts/registration-helpers.js +7 -990
- package/dist/sdk/cli-contracts/runtime-contracts.d.ts +5 -0
- package/dist/sdk/cli-contracts/runtime-contracts.js +1 -2090
- package/dist/sdk/cli-contracts/schemas/assurance-definition.js +1 -324
- package/dist/sdk/cli-contracts/string-lists.js +1 -16
- package/dist/sdk/cli-contracts/tool-option-contracts.js +1 -461
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +1 -2167
- package/dist/sdk/cli-contracts/tool-schema.d.ts +3 -1
- package/dist/sdk/cli-contracts/tool-schema.js +1 -1664
- package/dist/sdk/cli-contracts/typed-action-inputs.js +1 -4
- package/dist/sdk/cli-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts.js +1 -17
- package/dist/sdk/cli-program.js +1 -49
- package/dist/sdk/command-line.d.ts +2 -5
- package/dist/sdk/command-line.js +1 -78
- package/dist/sdk/comments.js +1 -133
- package/dist/sdk/compile-cache.js +1 -73
- package/dist/sdk/completion.js +157 -837
- package/dist/sdk/compose.js +1 -1090
- package/dist/sdk/config.js +1 -1204
- package/dist/sdk/context/recency.js +1 -33
- package/dist/sdk/context/semantic-session-attribution.js +1 -82
- package/dist/sdk/context/usage-egress.js +1 -29
- package/dist/sdk/context/usage-ledger.js +3 -185
- package/dist/sdk/context-intent-contracts.js +1 -709
- package/dist/sdk/context-intent-runtime.js +1 -115
- package/dist/sdk/context-packing.js +1 -218
- package/dist/sdk/context-relevance.js +1 -503
- package/dist/sdk/context-signal-store.js +2 -426
- package/dist/sdk/context-usage.js +1 -367
- package/dist/sdk/contracts.js +1 -23
- package/dist/sdk/core-governance.js +1 -14
- package/dist/sdk/core.js +1 -14
- package/dist/sdk/corpus-shape.js +1 -401
- package/dist/sdk/define.js +1 -220
- package/dist/sdk/dependencies.js +1 -718
- package/dist/sdk/dependency-flag-validation.js +1 -156
- package/dist/sdk/dependency-provenance.js +1 -135
- package/dist/sdk/docs.js +1 -14
- package/dist/sdk/duplicates.js +1 -40
- package/dist/sdk/environment/agent-environment.js +1 -466
- package/dist/sdk/environment/host-environment-errors.js +1 -8
- package/dist/sdk/environment/project-runtime-compatibility.js +1 -481
- package/dist/sdk/environment/source-context.js +1 -28
- package/dist/sdk/environment/tracker-preflight.js +1 -9
- package/dist/sdk/error-code-catalog.js +1 -153
- package/dist/sdk/error-runtime.js +1 -58
- package/dist/sdk/errors.js +1 -58
- package/dist/sdk/eval.js +1 -190
- package/dist/sdk/extension/author-manifest.js +1 -92
- package/dist/sdk/extension/bundled-catalog.js +1 -332
- package/dist/sdk/extension/concurrency.js +1 -25
- package/dist/sdk/extension/copy-scope.d.ts +2 -0
- package/dist/sdk/extension/copy-scope.js +2 -0
- package/dist/sdk/extension/custom-field-collisions.js +1 -30
- package/dist/sdk/extension/describe.js +3 -189
- package/dist/sdk/extension/doctor.js +1 -606
- package/dist/sdk/extension/install-plan.d.ts +69 -0
- package/dist/sdk/extension/install-plan.js +2 -0
- package/dist/sdk/extension/install-receipts.d.ts +7 -0
- package/dist/sdk/extension/install-receipts.js +2 -0
- package/dist/sdk/extension/install-runtime.js +3 -313
- package/dist/sdk/extension/install-snapshot.js +1 -66
- package/dist/sdk/extension/install-sources.js +5 -1057
- package/dist/sdk/extension/managed-state.js +2 -252
- package/dist/sdk/extension/migrations.js +2 -174
- package/dist/sdk/extension/output-ownership.js +1 -25
- package/dist/sdk/extension/runtime-summary.js +1 -18
- package/dist/sdk/extension/scaffold.js +4 -2308
- package/dist/sdk/extension/shared.js +1 -147
- package/dist/sdk/extension/source-resolution.js +1 -65
- package/dist/sdk/extension/update-check.js +1 -67
- package/dist/sdk/extension-command-context.js +1 -44
- package/dist/sdk/extension-contracts.js +1 -73
- package/dist/sdk/extension.d.ts +7 -2
- package/dist/sdk/extension.js +1 -2196
- package/dist/sdk/files.js +1 -535
- package/dist/sdk/flag-invocation-contracts.d.ts +0 -5
- package/dist/sdk/flag-invocation-contracts.js +1 -344
- package/dist/sdk/generated/generated-error-code-catalog-part-1.js +1 -2224
- package/dist/sdk/generated/generated-error-code-catalog-part-2.js +1 -2236
- package/dist/sdk/generated-error-code-catalog.js +1 -16
- package/dist/sdk/governance/assurance-action-contracts.js +1 -4
- package/dist/sdk/governance/assurance-action.js +1 -411
- package/dist/sdk/governance/assurance-limits.js +1 -10
- package/dist/sdk/governance/assurance-mutation-error.js +1 -81
- package/dist/sdk/governance/assurance-presets.js +1 -135
- package/dist/sdk/governance/assurance-runtime.js +1 -238
- package/dist/sdk/governance/assurance.js +4 -1182
- package/dist/sdk/governance/boundary-fixtures.js +1 -200
- package/dist/sdk/governance/coverage-assurance.js +1 -60
- package/dist/sdk/governance/defect-recurrence-coverage.js +1 -188
- package/dist/sdk/governance/defect-recurrence-graph.js +1 -120
- package/dist/sdk/governance/defect-recurrence-signals.js +1 -24
- package/dist/sdk/governance/defect-recurrence.js +1 -623
- package/dist/sdk/governance/extension-host-version.js +1 -115
- package/dist/sdk/governance/gc.js +1 -368
- package/dist/sdk/governance/health.js +1 -2367
- package/dist/sdk/governance/hierarchy-validation.js +1 -108
- package/dist/sdk/governance/linked-file-report.js +1 -71
- package/dist/sdk/governance/merge-receipt-history.js +1 -206
- package/dist/sdk/governance/provenance-health.js +1 -282
- package/dist/sdk/governance/reindex.js +4 -761
- package/dist/sdk/governance/stale-work.js +1 -82
- package/dist/sdk/governance/status-role-diagnostics.js +1 -35
- package/dist/sdk/governance/storage-integrity.js +1 -280
- package/dist/sdk/governance/tracked-runtime-cache.js +1 -106
- package/dist/sdk/governance/upgrade.js +2 -327
- package/dist/sdk/governance/validate-history-drift.js +1 -81
- package/dist/sdk/governance/validate-item-reader.js +1 -17
- package/dist/sdk/governance/validate-normalization.js +1 -36
- package/dist/sdk/governance/validate.js +1 -2261
- package/dist/sdk/governance/workspace-position.js +1 -163
- package/dist/sdk/governance.d.ts +1 -0
- package/dist/sdk/governance.js +1 -31
- package/dist/sdk/graph/adapter.js +1 -181
- package/dist/sdk/graph/analytics.js +1 -474
- package/dist/sdk/graph/assembly.js +1 -377
- package/dist/sdk/graph/cache.js +1 -160
- package/dist/sdk/graph/centrality.js +1 -258
- package/dist/sdk/graph/conformance.js +1 -130
- package/dist/sdk/graph/deadline-scheduling.d.ts +90 -0
- package/dist/sdk/graph/deadline-scheduling.js +2 -0
- package/dist/sdk/graph/durable-cache.d.ts +1 -1
- package/dist/sdk/graph/durable-cache.js +1 -361
- package/dist/sdk/graph/governance-contracts.js +1 -34
- package/dist/sdk/graph/governance.d.ts +13 -1
- package/dist/sdk/graph/governance.js +1 -735
- package/dist/sdk/graph/hierarchy-integrity.js +1 -310
- package/dist/sdk/graph/index.d.ts +3 -2
- package/dist/sdk/graph/index.js +1 -26
- package/dist/sdk/graph/lifecycle-coverage.d.ts +32 -0
- package/dist/sdk/graph/lifecycle-coverage.js +2 -0
- package/dist/sdk/graph/mutation-advisory.js +1 -176
- package/dist/sdk/graph/remediation.js +1 -197
- package/dist/sdk/graph/run.d.ts +15 -1
- package/dist/sdk/graph/run.js +1 -768
- package/dist/sdk/graph/scheduling.js +1 -124
- package/dist/sdk/graph/traversal.js +1 -284
- package/dist/sdk/graph/workspace-relationship-kind-registry.js +1 -27
- package/dist/sdk/graph.js +1 -15
- package/dist/sdk/guide-topics.js +1 -707
- package/dist/sdk/guide.js +1 -279
- package/dist/sdk/history/maintenance.d.ts +71 -0
- package/dist/sdk/history/maintenance.js +2 -0
- package/dist/sdk/history/salvage.js +2 -247
- package/dist/sdk/history/subject.d.ts +19 -0
- package/dist/sdk/history/subject.js +2 -0
- package/dist/sdk/history-analytics.js +1 -282
- package/dist/sdk/history-compact.js +1 -527
- package/dist/sdk/history-mcp.js +1 -68
- package/dist/sdk/history-provenance.js +1 -182
- package/dist/sdk/history-read.js +1 -96
- package/dist/sdk/history-redact.d.ts +1 -14
- package/dist/sdk/history-redact.js +1 -643
- package/dist/sdk/history-repair.d.ts +5 -0
- package/dist/sdk/history-repair.js +1 -657
- package/dist/sdk/improvement-ledger-validation.js +1 -62
- package/dist/sdk/improvement-ledger.js +2 -257
- package/dist/sdk/index.d.ts +4 -0
- package/dist/sdk/index.js +1 -183
- package/dist/sdk/init-agent-guidance.js +2 -496
- package/dist/sdk/init.js +2 -820
- package/dist/sdk/invocation-author.js +1 -39
- package/dist/sdk/item-children.js +1 -90
- package/dist/sdk/item-metadata-index.js +1 -15
- package/dist/sdk/item-schedule.js +1 -27
- package/dist/sdk/item-transaction.js +1 -396
- package/dist/sdk/learnings.js +1 -29
- package/dist/sdk/lifecycle/append.js +2 -53
- package/dist/sdk/lifecycle/claim.d.ts +2 -0
- package/dist/sdk/lifecycle/claim.js +1 -242
- package/dist/sdk/lifecycle/close-many.js +1 -438
- package/dist/sdk/lifecycle/close.js +1 -468
- package/dist/sdk/lifecycle/copy.js +1 -212
- package/dist/sdk/lifecycle/create.js +1 -1949
- package/dist/sdk/lifecycle/delete.js +1 -45
- package/dist/sdk/lifecycle/event-validation-messages.js +1 -91
- package/dist/sdk/lifecycle/focus.js +1 -91
- package/dist/sdk/lifecycle/hierarchy-mutation-lock.js +1 -24
- package/dist/sdk/lifecycle/legacy-none-tokens.js +1 -149
- package/dist/sdk/lifecycle/lifecycle-transitions.js +1 -40
- package/dist/sdk/lifecycle/mcp-actions.d.ts +2 -0
- package/dist/sdk/lifecycle/mcp-actions.js +1 -51
- package/dist/sdk/lifecycle/metadata-normalizers.js +1 -46
- package/dist/sdk/lifecycle/mutation-command-options.js +1 -9
- package/dist/sdk/lifecycle/plan.js +1 -1606
- package/dist/sdk/lifecycle/recurrence-parsers.js +1 -147
- package/dist/sdk/lifecycle/reopen.js +1 -68
- package/dist/sdk/lifecycle/repeatable-metadata-parsers.js +1 -143
- package/dist/sdk/lifecycle/restore.d.ts +1 -0
- package/dist/sdk/lifecycle/restore.js +1 -330
- package/dist/sdk/lifecycle/shared-unset-fields.js +1 -295
- package/dist/sdk/lifecycle/update-many.js +1 -861
- package/dist/sdk/lifecycle/update.js +1 -2136
- package/dist/sdk/lifecycle-completion.js +1 -92
- package/dist/sdk/lifecycle-policy.js +1 -120
- package/dist/sdk/linked-artifacts.js +1 -530
- package/dist/sdk/mcp/apps.js +4 -133
- package/dist/sdk/mcp/authorization.js +1 -404
- package/dist/sdk/mcp/discovery.js +1 -494
- package/dist/sdk/mcp/interactions.js +1 -336
- package/dist/sdk/mcp/protocol.d.ts +7 -0
- package/dist/sdk/mcp/protocol.js +1 -184
- package/dist/sdk/mcp/skills.js +1 -389
- package/dist/sdk/mcp/subscriptions.js +1 -211
- package/dist/sdk/mcp/tasks.js +2 -430
- package/dist/sdk/mcp/transport.js +1 -260
- package/dist/sdk/merge/abandoned-receipts.js +1 -46
- package/dist/sdk/merge/driver.js +1 -212
- package/dist/sdk/merge/index.js +1 -16
- package/dist/sdk/merge/install.js +3 -561
- package/dist/sdk/merge/receipt-file-boundary.js +1 -46
- package/dist/sdk/merge/receipt-operation.js +1 -96
- package/dist/sdk/merge/receipt-schema.js +1 -397
- package/dist/sdk/merge/receipts.js +4 -525
- package/dist/sdk/merge/reconcile.js +1 -352
- package/dist/sdk/merge/three-way.js +3 -775
- package/dist/sdk/merge.js +1 -10
- package/dist/sdk/mutation-events.js +1 -292
- package/dist/sdk/mutation-guard.js +1 -216
- package/dist/sdk/notes.js +1 -139
- package/dist/sdk/output-contracts.js +1 -172
- package/dist/sdk/output-projection.js +1 -430
- package/dist/sdk/output-token-accounting.js +1 -140
- package/dist/sdk/output.js +1 -64
- package/dist/sdk/ownership-source.js +1 -21
- package/dist/sdk/package-import-adapters.js +1 -442
- package/dist/sdk/package-migrations.js +1 -20
- package/dist/sdk/package-runtime-options.js +1 -80
- package/dist/sdk/pagination.js +1 -162
- package/dist/sdk/profile.js +1 -454
- package/dist/sdk/provenance.js +1 -258
- package/dist/sdk/public-surface.json +1 -1
- package/dist/sdk/query/activity.js +1 -401
- package/dist/sdk/query/aggregate.d.ts +16 -0
- package/dist/sdk/query/aggregate.js +1 -390
- package/dist/sdk/query/calendar.js +1 -964
- package/dist/sdk/query/complete-list.js +1 -215
- package/dist/sdk/query/context.js +1 -1702
- package/dist/sdk/query/duplicate-candidates.js +1 -70
- package/dist/sdk/query/get.js +1 -450
- package/dist/sdk/query/history.js +1 -186
- package/dist/sdk/query/item-filter-options.js +1 -9
- package/dist/sdk/query/light-metadata.js +1 -18
- package/dist/sdk/query/list-filter-shared.js +1 -81
- package/dist/sdk/query/list.js +1 -1304
- package/dist/sdk/query/multi-value-filters.js +1 -78
- package/dist/sdk/query/next.js +1 -513
- package/dist/sdk/query/parsers.js +1 -44
- package/dist/sdk/query/projection-contracts.js +1 -184
- package/dist/sdk/query/search-contracts.js +1 -230
- package/dist/sdk/query/search-pagination.js +1 -35
- package/dist/sdk/query/search-rendering.js +1 -105
- package/dist/sdk/query/search.js +2 -1987
- package/dist/sdk/query.js +1 -35
- package/dist/sdk/read-output/continuation.js +1 -194
- package/dist/sdk/read-output-budget.js +1 -135
- package/dist/sdk/read-output-contracts.js +1 -1225
- package/dist/sdk/read-output-rows.js +1 -186
- package/dist/sdk/read-output-session.js +1 -208
- package/dist/sdk/relationship-analytics.js +1 -410
- package/dist/sdk/relationship-context.js +1 -284
- package/dist/sdk/relationship-history.js +4 -519
- package/dist/sdk/relationship-kinds/contract.js +1 -22
- package/dist/sdk/relationship-migration.js +1 -77
- package/dist/sdk/relationships.js +1 -579
- package/dist/sdk/reproducibility/process.js +1 -87
- package/dist/sdk/runtime-action-aliases.js +1 -59
- package/dist/sdk/runtime-extended-actions.js +1 -177
- package/dist/sdk/runtime-input.js +1 -614
- package/dist/sdk/runtime-primitives.js +1 -84
- package/dist/sdk/runtime-public-contracts.js +1 -4
- package/dist/sdk/runtime-stats-options.js +1 -38
- package/dist/sdk/runtime.js +1 -1928
- package/dist/sdk/scheduling-shortcuts.js +1 -63
- package/dist/sdk/schema-migration.js +3 -856
- package/dist/sdk/schema.js +1 -1376
- package/dist/sdk/search-refresh-worker.js +1 -18
- package/dist/sdk/similarity-scoring.js +1 -53
- package/dist/sdk/similarity.js +1 -326
- package/dist/sdk/start-task-status.js +1 -14
- package/dist/sdk/stats.js +1 -270
- package/dist/sdk/structured-mutations.js +1 -580
- package/dist/sdk/telemetry-flush.js +1 -13
- package/dist/sdk/telemetry.js +1 -405
- package/dist/sdk/templates.js +2 -292
- package/dist/sdk/test/batch.js +2 -509
- package/dist/sdk/test/entry.js +1 -70
- package/dist/sdk/test/execution.js +6 -2211
- package/dist/sdk/test/linked-command-detection.js +1 -546
- package/dist/sdk/test/measurements.js +1 -91
- package/dist/sdk/test/parsers.js +1 -545
- package/dist/sdk/test/runs.js +1 -193
- package/dist/sdk/test/trust.js +2 -206
- package/dist/sdk/testing.js +4 -1391
- package/dist/sdk/traceability/runtime-files-lookup.js +1 -32
- package/dist/sdk/traceability/source-traceability.js +1 -292
- package/dist/sdk/tracker-root-discovery.js +1 -9
- package/dist/sdk/workspace-contracts-cache.js +1 -28
- package/dist/sdk/workspace-contracts.js +1 -33
- package/dist/sdk/workspace-memory.js +2 -318
- package/dist/sdk/workspace-recipe.js +1 -71
- package/dist/sdk/workspace-snapshot.js +4 -613
- package/dist/sdk/workspace-transaction-gc.js +1 -149
- package/dist/sdk/workspace-transaction.js +2 -363
- package/dist/sdk/workspace.js +3 -127
- package/dist/types/index.js +1 -9
- package/dist/types.js +1 -245
- package/docs/AGENT_GUIDE.md +1 -1
- package/docs/CONTEXT_ALGORITHM_PORTFOLIO.md +167 -0
- package/docs/DIAGNOSTIC_OUTPUT_CONTRACTS.md +9 -3
- package/docs/EXTENSIONS.md +1 -0
- package/docs/HISTORY_MAINTENANCE.md +125 -0
- package/docs/MCP_2026_07_28_CONFORMANCE.md +20 -10
- package/docs/PACKAGE_EVIDENCE.md +92 -0
- package/docs/PLANNING_MEASUREMENTS.md +183 -0
- package/docs/README.md +3 -0
- package/docs/SCRIPTING.md +21 -0
- package/docs/TESTING.md +23 -0
- package/docs/generated/FLAG_LEXICON_BUDGETS.md +5 -5
- package/docs/generated/REFUSAL_CLOSURE_CENSUS.md +2 -2
- package/marketplace.json +2 -2
- package/package.json +1 -1
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-digital-twin/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/scripts/finalize-build.mjs +45 -3
- package/dist/cli-bundle/chunks/chunk-AZDFJGH6.js +0 -9
- package/dist/cli-bundle/chunks/chunk-BAX2BYUW.js +0 -2111
- package/dist/cli-bundle/chunks/chunk-CKOL5U7J.js +0 -77
- package/dist/cli-bundle/chunks/chunk-OF76PSDQ.js +0 -5
- package/dist/cli-bundle/chunks/chunk-QUWFABDM.js +0 -232
- package/dist/cli-bundle/chunks/chunk-QWRRFYK3.js +0 -2
- package/dist/cli-bundle/chunks/chunk-RWWBOWJ5.js +0 -2
- package/dist/cli-bundle/chunks/chunk-WGAOYSYH.js +0 -40
- package/dist/cli-bundle/chunks/chunk-WI2AYPA7.js +0 -2
- package/dist/cli-bundle/chunks/register-list-query-5JL52D33.js +0 -11
- package/dist/cli-bundle/chunks/register-mutation-ZPG7KMVP.js +0 -20
- package/dist/cli-bundle/chunks/register-setup-H4SVAVX7.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-AL5ON6K6.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-CHC2IDXA.js +0 -6
- package/dist/cli-bundle/focused-chunks/chunk-CK6QFAPZ.js +0 -20
- package/dist/cli-bundle/focused-chunks/chunk-EZR3GHFE.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-H2WJWK7L.js +0 -56
- package/dist/cli-bundle/focused-chunks/chunk-NTPY5GSO.js +0 -3
- package/dist/cli-bundle/focused-chunks/chunk-P5O7MP5Y.js +0 -2
- package/dist/cli-bundle/focused-chunks/chunk-PDMW2E36.js +0 -177
- package/dist/cli-bundle/focused-chunks/chunk-QTVCLMSZ.js +0 -6
- package/dist/cli-bundle/focused-chunks/chunk-QTZRBUYA.js +0 -8
- package/dist/cli-bundle/focused-chunks/chunk-SGQST3PQ.js +0 -12
- package/dist/cli-bundle/focused-chunks/chunk-UKHASMMP.js +0 -10
- package/dist/cli-bundle/focused-chunks/chunk-ZPEKQHOC.js +0 -2
|
@@ -1,148 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/lifecycle/recurrence-parsers
|
|
3
|
-
*
|
|
4
|
-
* Implements the pm recurrence parsers command surface and its agent-facing runtime behavior.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
!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]="2fcfbe50-039b-5031-8b18-a208908a0d87")}catch(e){}}();
|
|
8
|
-
import { parseOptionalNumber, EXIT_CODE, PmCliError, resolveIsoOrRelative, } from "../runtime-primitives.js";
|
|
9
|
-
import { RECURRENCE_FREQUENCY_VALUES, RECURRENCE_WEEKDAY_VALUES, weekdayOrderIndex, } from "../../types/index.js";
|
|
10
|
-
/**
|
|
11
|
-
* Shared calendar recurrence/event parsing helpers used by the `create` and
|
|
12
|
-
* `update` commands. Extracted verbatim from create.ts and update.ts (pm-why9).
|
|
13
|
-
*
|
|
14
|
-
* `parseEventBoolean`, `parseDelimitedList`, and `ensureEnumValue` were
|
|
15
|
-
* byte-identical between the two commands (update spelled `ensureEnumValue` as
|
|
16
|
-
* `ensureEnum`).
|
|
17
|
-
*
|
|
18
|
-
* `parseRecurrenceRule` was identical apart from the recur_interval/recur_count
|
|
19
|
-
* "provided" guard: create used `intervalRaw !== undefined` (an empty
|
|
20
|
-
* `recur_interval=` is parsed and rejected), while update used the truthy
|
|
21
|
-
* `intervalRaw ?` (an empty value is skipped). That distinction is preserved
|
|
22
|
-
* via the `emptyNumericGuard` option so both call sites keep their exact
|
|
23
|
-
* behaviour, including error strings.
|
|
24
|
-
*/
|
|
25
|
-
export function parseEventBoolean(value, flag) {
|
|
26
|
-
const normalized = value.trim().toLowerCase();
|
|
27
|
-
if (normalized === "true" || normalized === "1" || normalized === "yes") {
|
|
28
|
-
return true;
|
|
29
|
-
}
|
|
30
|
-
if (normalized === "false" || normalized === "0" || normalized === "no") {
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
throw new PmCliError(`${flag} must be one of true|false|1|0|yes|no`, EXIT_CODE.USAGE);
|
|
34
|
-
}
|
|
35
|
-
/** Implements parse delimited list for the public runtime surface of this module. */
|
|
36
|
-
export function parseDelimitedList(raw) {
|
|
37
|
-
if (!raw) {
|
|
38
|
-
return [];
|
|
39
|
-
}
|
|
40
|
-
return raw
|
|
41
|
-
.split("|")
|
|
42
|
-
.map((value) => value.trim())
|
|
43
|
-
.filter((value) => value.length > 0);
|
|
44
|
-
}
|
|
45
|
-
/** Implements ensure enum value for the public runtime surface of this module. */
|
|
46
|
-
export function ensureEnumValue(value, allowed, label) {
|
|
47
|
-
if (!allowed.includes(value)) {
|
|
48
|
-
throw new PmCliError(`Invalid ${label} value "${value}". Allowed: ${allowed.join(", ")}`, EXIT_CODE.USAGE);
|
|
49
|
-
}
|
|
50
|
-
return value;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Authoritative list of the CSV/markdown recurrence keys this parser reads.
|
|
54
|
-
* Co-located with {@link parseRecurrenceRule} so adding a recurrence field
|
|
55
|
-
* updates the reads AND the strict unknown-key allow-list in one place — the
|
|
56
|
-
* `--event` validator (repeatable-metadata-parsers EVENT_KEYS) spreads this, so
|
|
57
|
-
* a new recur key can never be silently rejected (GH-258). Keep in sync with
|
|
58
|
-
* the `kv.recur_*` reads below.
|
|
59
|
-
*/
|
|
60
|
-
export const RECURRENCE_CSV_KEYS = [
|
|
61
|
-
"recur_freq",
|
|
62
|
-
"recur_interval",
|
|
63
|
-
"recur_count",
|
|
64
|
-
"recur_until",
|
|
65
|
-
"recur_by_weekday",
|
|
66
|
-
"recur_by_month_day",
|
|
67
|
-
"recur_exdates",
|
|
68
|
-
];
|
|
69
|
-
function numericRecurrenceValueProvided(raw, guard) {
|
|
70
|
-
return guard === "defined" ? raw !== undefined : Boolean(raw);
|
|
71
|
-
}
|
|
72
|
-
function parsePositiveRecurrenceInteger(raw, label, guard) {
|
|
73
|
-
if (!numericRecurrenceValueProvided(raw, guard)) {
|
|
74
|
-
return undefined;
|
|
75
|
-
}
|
|
76
|
-
const parsed = parseOptionalNumber(raw, `event ${label}`);
|
|
77
|
-
if (!Number.isInteger(parsed) || parsed < 1) {
|
|
78
|
-
throw new PmCliError(`--event ${label} must be an integer >= 1`, EXIT_CODE.USAGE);
|
|
79
|
-
}
|
|
80
|
-
return parsed;
|
|
81
|
-
}
|
|
82
|
-
function parseRecurrenceUntil(untilRaw, startAt, nowValue) {
|
|
83
|
-
const until = untilRaw
|
|
84
|
-
? resolveIsoOrRelative(untilRaw, nowValue, "event.recur_until")
|
|
85
|
-
: undefined;
|
|
86
|
-
if (until && until < startAt) {
|
|
87
|
-
throw new PmCliError("--event recur_until must be at or after start", EXIT_CODE.USAGE);
|
|
88
|
-
}
|
|
89
|
-
return until;
|
|
90
|
-
}
|
|
91
|
-
function parseRecurrenceWeekdays(raw) {
|
|
92
|
-
return Array.from(new Set(parseDelimitedList(raw).map((value) => ensureEnumValue(value.toLowerCase(), RECURRENCE_WEEKDAY_VALUES, "event weekday")))).sort((left, right) => weekdayOrderIndex(left) - weekdayOrderIndex(right));
|
|
93
|
-
}
|
|
94
|
-
function parseRecurrenceMonthDays(raw) {
|
|
95
|
-
return Array.from(new Set(parseDelimitedList(raw).map((value) => {
|
|
96
|
-
const day = parseOptionalNumber(value, "event recur_by_month_day");
|
|
97
|
-
if (!Number.isInteger(day) || day < 1 || day > 31) {
|
|
98
|
-
throw new PmCliError("--event recur_by_month_day values must be integers 1..31", EXIT_CODE.USAGE);
|
|
99
|
-
}
|
|
100
|
-
return day;
|
|
101
|
-
}))).sort((left, right) => left - right);
|
|
102
|
-
}
|
|
103
|
-
function parseRecurrenceExdates(raw, nowValue) {
|
|
104
|
-
return Array.from(new Set(parseDelimitedList(raw).map((value) => resolveIsoOrRelative(value, nowValue, "event.recur_exdates")))).sort((left, right) => left.localeCompare(right));
|
|
105
|
-
}
|
|
106
|
-
/** Implements parse recurrence rule for the public runtime surface of this module. */
|
|
107
|
-
export function parseRecurrenceRule(kv, startAt, nowValue, emptyNumericGuard) {
|
|
108
|
-
const freqRaw = kv.recur_freq?.trim();
|
|
109
|
-
const intervalRaw = kv.recur_interval?.trim();
|
|
110
|
-
const countRaw = kv.recur_count?.trim();
|
|
111
|
-
const untilRaw = kv.recur_until?.trim();
|
|
112
|
-
const byWeekdayRaw = kv.recur_by_weekday?.trim();
|
|
113
|
-
const byMonthDayRaw = kv.recur_by_month_day?.trim();
|
|
114
|
-
const exdatesRaw = kv.recur_exdates?.trim();
|
|
115
|
-
const recurrenceInputsProvided = [
|
|
116
|
-
freqRaw,
|
|
117
|
-
intervalRaw,
|
|
118
|
-
countRaw,
|
|
119
|
-
untilRaw,
|
|
120
|
-
byWeekdayRaw,
|
|
121
|
-
byMonthDayRaw,
|
|
122
|
-
exdatesRaw,
|
|
123
|
-
].some((value) => value !== undefined);
|
|
124
|
-
if (!recurrenceInputsProvided) {
|
|
125
|
-
return undefined;
|
|
126
|
-
}
|
|
127
|
-
if (!freqRaw) {
|
|
128
|
-
throw new PmCliError("--event recurrence fields require recur_freq=<daily|weekly|monthly|yearly>", EXIT_CODE.USAGE);
|
|
129
|
-
}
|
|
130
|
-
const freq = ensureEnumValue(freqRaw.toLowerCase(), RECURRENCE_FREQUENCY_VALUES, "event recurrence frequency");
|
|
131
|
-
const interval = parsePositiveRecurrenceInteger(intervalRaw, "recur_interval", emptyNumericGuard);
|
|
132
|
-
const count = parsePositiveRecurrenceInteger(countRaw, "recur_count", emptyNumericGuard);
|
|
133
|
-
const until = parseRecurrenceUntil(untilRaw, startAt, nowValue);
|
|
134
|
-
const byWeekday = parseRecurrenceWeekdays(byWeekdayRaw);
|
|
135
|
-
const byMonthDay = parseRecurrenceMonthDays(byMonthDayRaw);
|
|
136
|
-
const exdates = parseRecurrenceExdates(exdatesRaw, nowValue);
|
|
137
|
-
return {
|
|
138
|
-
freq,
|
|
139
|
-
interval,
|
|
140
|
-
count,
|
|
141
|
-
until,
|
|
142
|
-
by_weekday: byWeekday.length > 0 ? byWeekday : undefined,
|
|
143
|
-
by_month_day: byMonthDay.length > 0 ? byMonthDay : undefined,
|
|
144
|
-
exdates: exdates.length > 0 ? exdates : undefined,
|
|
145
|
-
};
|
|
146
|
-
}
|
|
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]="4cf64466-2612-5a12-a1ba-79fa2ed7c50d")}catch(e2){}})();import{parseOptionalNumber,EXIT_CODE,PmCliError,resolveIsoOrRelative}from"../runtime-primitives.js";import{RECURRENCE_FREQUENCY_VALUES,RECURRENCE_WEEKDAY_VALUES,weekdayOrderIndex}from"../../types/index.js";function parseEventBoolean(value,flag){const normalized=value.trim().toLowerCase();if(normalized==="true"||normalized==="1"||normalized==="yes"){return true}if(normalized==="false"||normalized==="0"||normalized==="no"){return false}throw new PmCliError(`${flag} must be one of true|false|1|0|yes|no`,EXIT_CODE.USAGE)}function parseDelimitedList(raw){if(!raw){return[]}return raw.split("|").map(value=>value.trim()).filter(value=>value.length>0)}function ensureEnumValue(value,allowed,label){if(!allowed.includes(value)){throw new PmCliError(`Invalid ${label} value "${value}". Allowed: ${allowed.join(", ")}`,EXIT_CODE.USAGE)}return value}const RECURRENCE_CSV_KEYS=["recur_freq","recur_interval","recur_count","recur_until","recur_by_weekday","recur_by_month_day","recur_exdates"];function numericRecurrenceValueProvided(raw,guard){return guard==="defined"?raw!==void 0:Boolean(raw)}function parsePositiveRecurrenceInteger(raw,label,guard){if(!numericRecurrenceValueProvided(raw,guard)){return void 0}const parsed=parseOptionalNumber(raw,`event ${label}`);if(!Number.isInteger(parsed)||parsed<1){throw new PmCliError(`--event ${label} must be an integer >= 1`,EXIT_CODE.USAGE)}return parsed}function parseRecurrenceUntil(untilRaw,startAt,nowValue){const until=untilRaw?resolveIsoOrRelative(untilRaw,nowValue,"event.recur_until"):void 0;if(until&&until<startAt){throw new PmCliError("--event recur_until must be at or after start",EXIT_CODE.USAGE)}return until}function parseRecurrenceWeekdays(raw){return Array.from(new Set(parseDelimitedList(raw).map(value=>ensureEnumValue(value.toLowerCase(),RECURRENCE_WEEKDAY_VALUES,"event weekday")))).sort((left,right)=>weekdayOrderIndex(left)-weekdayOrderIndex(right))}function parseRecurrenceMonthDays(raw){return Array.from(new Set(parseDelimitedList(raw).map(value=>{const day=parseOptionalNumber(value,"event recur_by_month_day");if(!Number.isInteger(day)||day<1||day>31){throw new PmCliError("--event recur_by_month_day values must be integers 1..31",EXIT_CODE.USAGE)}return day}))).sort((left,right)=>left-right)}function parseRecurrenceExdates(raw,nowValue){return Array.from(new Set(parseDelimitedList(raw).map(value=>resolveIsoOrRelative(value,nowValue,"event.recur_exdates")))).sort((left,right)=>left.localeCompare(right))}function parseRecurrenceRule(kv,startAt,nowValue,emptyNumericGuard){const freqRaw=kv.recur_freq?.trim();const intervalRaw=kv.recur_interval?.trim();const countRaw=kv.recur_count?.trim();const untilRaw=kv.recur_until?.trim();const byWeekdayRaw=kv.recur_by_weekday?.trim();const byMonthDayRaw=kv.recur_by_month_day?.trim();const exdatesRaw=kv.recur_exdates?.trim();const recurrenceInputsProvided=[freqRaw,intervalRaw,countRaw,untilRaw,byWeekdayRaw,byMonthDayRaw,exdatesRaw].some(value=>value!==void 0);if(!recurrenceInputsProvided){return void 0}if(!freqRaw){throw new PmCliError("--event recurrence fields require recur_freq=<daily|weekly|monthly|yearly>",EXIT_CODE.USAGE)}const freq=ensureEnumValue(freqRaw.toLowerCase(),RECURRENCE_FREQUENCY_VALUES,"event recurrence frequency");const interval=parsePositiveRecurrenceInteger(intervalRaw,"recur_interval",emptyNumericGuard);const count=parsePositiveRecurrenceInteger(countRaw,"recur_count",emptyNumericGuard);const until=parseRecurrenceUntil(untilRaw,startAt,nowValue);const byWeekday=parseRecurrenceWeekdays(byWeekdayRaw);const byMonthDay=parseRecurrenceMonthDays(byMonthDayRaw);const exdates=parseRecurrenceExdates(exdatesRaw,nowValue);return{freq,interval,count,until,by_weekday:byWeekday.length>0?byWeekday:void 0,by_month_day:byMonthDay.length>0?byMonthDay:void 0,exdates:exdates.length>0?exdates:void 0}}export{RECURRENCE_CSV_KEYS,ensureEnumValue,parseDelimitedList,parseEventBoolean,parseRecurrenceRule};
|
|
147
2
|
//# sourceMappingURL=recurrence-parsers.js.map
|
|
148
|
-
//# debugId=2fcfbe50-039b-5031-8b18-a208908a0d87
|
|
@@ -1,69 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
!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]="08dcee99-5572-5133-b76a-6a50e4e292e7")}catch(e){}}();
|
|
3
|
-
import { EXIT_CODE } from "../../core/shared/constants.js";
|
|
4
|
-
import { PmCliError } from "../../core/shared/errors.js";
|
|
5
|
-
import { normalizeStatusInput } from "../../core/item/status.js";
|
|
6
|
-
import { resolveRuntimeStatusRegistry } from "../../core/schema/runtime-schema.js";
|
|
7
|
-
import { resolvePmRoot } from "../../core/store/paths.js";
|
|
8
|
-
import { readSettings } from "../../core/store/settings.js";
|
|
9
|
-
import { resolveStartTaskInProgressStatus } from "../start-task-status.js";
|
|
10
|
-
import { runReopenUpdate, } from "./update.js";
|
|
11
|
-
/** Reopen terminal work through the canonical update mutation and history path. */
|
|
12
|
-
export async function runReopen(id, reason, options, global) {
|
|
13
|
-
const normalizedReason = reason.trim();
|
|
14
|
-
if (normalizedReason.length === 0) {
|
|
15
|
-
throw new PmCliError("pm item reopen requires a non-empty recurrence reason.", EXIT_CODE.USAGE, {
|
|
16
|
-
code: "reopen_reason_required",
|
|
17
|
-
required: "Describe why the terminal work became active again.",
|
|
18
|
-
recovery: {
|
|
19
|
-
suggested_retry: `pm item reopen ${id} "<recurrence reason>"`,
|
|
20
|
-
suggested_retry_args: ["item", "reopen", id, "<recurrence reason>"],
|
|
21
|
-
},
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
const pmRoot = resolvePmRoot(process.cwd(), global.path);
|
|
25
|
-
const statusRegistry = resolveRuntimeStatusRegistry((await readSettings(pmRoot)).schema);
|
|
26
|
-
const openStatus = statusRegistry.open_status;
|
|
27
|
-
const inProgressStatus = resolveStartTaskInProgressStatus(statusRegistry);
|
|
28
|
-
const requestedStatus = options.status ?? openStatus;
|
|
29
|
-
const targetStatus = normalizeStatusInput(requestedStatus, statusRegistry) ?? requestedStatus;
|
|
30
|
-
if (targetStatus !== openStatus && targetStatus !== inProgressStatus) {
|
|
31
|
-
throw new PmCliError(`Reopen target status must be ${openStatus} or ${inProgressStatus}; received ${requestedStatus}.`, EXIT_CODE.USAGE, {
|
|
32
|
-
code: "reopen_target_status_invalid",
|
|
33
|
-
required: "Choose the workspace open or in-progress lifecycle status.",
|
|
34
|
-
recovery: {
|
|
35
|
-
allowed_values: [...new Set([openStatus, inProgressStatus])],
|
|
36
|
-
suggested_retry: `pm item reopen ${id} "${normalizedReason}" --status ${openStatus}`,
|
|
37
|
-
suggested_retry_args: [
|
|
38
|
-
"item",
|
|
39
|
-
"reopen",
|
|
40
|
-
id,
|
|
41
|
-
normalizedReason,
|
|
42
|
-
"--status",
|
|
43
|
-
openStatus,
|
|
44
|
-
],
|
|
45
|
-
},
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
const update = await runReopenUpdate(id, {
|
|
49
|
-
status: targetStatus,
|
|
50
|
-
unset: [
|
|
51
|
-
"close-reason",
|
|
52
|
-
"resolution",
|
|
53
|
-
"expected-result",
|
|
54
|
-
"actual-result",
|
|
55
|
-
"fixed-version",
|
|
56
|
-
],
|
|
57
|
-
author: options.author,
|
|
58
|
-
message: options.message,
|
|
59
|
-
force: options.force,
|
|
60
|
-
}, global, normalizedReason);
|
|
61
|
-
return {
|
|
62
|
-
item: update.item,
|
|
63
|
-
changed_fields: update.changed_fields,
|
|
64
|
-
warnings: update.warnings,
|
|
65
|
-
recurrence: update.lifecycle_transition,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
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]="cd0e532e-0f27-5786-8216-c17132f6e784")}catch(e2){}})();import{EXIT_CODE}from"../../core/shared/constants.js";import{PmCliError}from"../../core/shared/errors.js";import{normalizeStatusInput}from"../../core/item/status.js";import{resolveRuntimeStatusRegistry}from"../../core/schema/runtime-schema.js";import{resolvePmRoot}from"../../core/store/paths.js";import{readSettings}from"../../core/store/settings.js";import{resolveStartTaskInProgressStatus}from"../start-task-status.js";import{runReopenUpdate}from"./update.js";async function runReopen(id,reason,options,global2){const normalizedReason=reason.trim();if(normalizedReason.length===0){throw new PmCliError("pm item reopen requires a non-empty recurrence reason.",EXIT_CODE.USAGE,{code:"reopen_reason_required",required:"Describe why the terminal work became active again.",recovery:{suggested_retry:`pm item reopen ${id} "<recurrence reason>"`,suggested_retry_args:["item","reopen",id,"<recurrence reason>"]}})}const pmRoot=resolvePmRoot(process.cwd(),global2.path);const statusRegistry=resolveRuntimeStatusRegistry((await readSettings(pmRoot)).schema);const openStatus=statusRegistry.open_status;const inProgressStatus=resolveStartTaskInProgressStatus(statusRegistry);const requestedStatus=options.status??openStatus;const targetStatus=normalizeStatusInput(requestedStatus,statusRegistry)??requestedStatus;if(targetStatus!==openStatus&&targetStatus!==inProgressStatus){throw new PmCliError(`Reopen target status must be ${openStatus} or ${inProgressStatus}; received ${requestedStatus}.`,EXIT_CODE.USAGE,{code:"reopen_target_status_invalid",required:"Choose the workspace open or in-progress lifecycle status.",recovery:{allowed_values:[...new Set([openStatus,inProgressStatus])],suggested_retry:`pm item reopen ${id} "${normalizedReason}" --status ${openStatus}`,suggested_retry_args:["item","reopen",id,normalizedReason,"--status",openStatus]}})}const update=await runReopenUpdate(id,{status:targetStatus,unset:["close-reason","resolution","expected-result","actual-result","fixed-version"],author:options.author,message:options.message,force:options.force},global2,normalizedReason);return{item:update.item,changed_fields:update.changed_fields,warnings:update.warnings,recurrence:update.lifecycle_transition}}export{runReopen};
|
|
68
2
|
//# sourceMappingURL=reopen.js.map
|
|
69
|
-
//# debugId=08dcee99-5572-5133-b76a-6a50e4e292e7
|
|
@@ -1,144 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* @module sdk/lifecycle/repeatable-metadata-parsers
|
|
3
|
-
*
|
|
4
|
-
* Implements the pm repeatable metadata parsers command surface and its agent-facing runtime behavior.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
!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]="fd41d2bf-7be0-55ee-9048-a9d5092a9a21")}catch(e){}}();
|
|
8
|
-
import { assertNoUnknownCsvKeys, parseCsvKv, EXIT_CODE, PmCliError, resolveIsoOrRelative, } from "../runtime-primitives.js";
|
|
9
|
-
import { resolveEventEndAt } from "./event-validation-messages.js";
|
|
10
|
-
import { parseEventBoolean, parseRecurrenceRule, RECURRENCE_CSV_KEYS, } from "./recurrence-parsers.js";
|
|
11
|
-
/** Allowed CSV/markdown keys for `--reminder` (GH-258). */
|
|
12
|
-
const REMINDER_KEYS = ["at", "date", "text", "title"];
|
|
13
|
-
/** Allowed CSV/markdown keys for `--event` (GH-258). Recurrence keys are spread from the authoritative RECURRENCE_CSV_KEYS next to parseRecurrenceRule so the allow-list can never drift from what the recurrence parser actually reads. */
|
|
14
|
-
const EVENT_KEYS = [
|
|
15
|
-
"start",
|
|
16
|
-
"date",
|
|
17
|
-
"end",
|
|
18
|
-
"duration",
|
|
19
|
-
"title",
|
|
20
|
-
"description",
|
|
21
|
-
"location",
|
|
22
|
-
"timezone",
|
|
23
|
-
"all_day",
|
|
24
|
-
...RECURRENCE_CSV_KEYS,
|
|
25
|
-
];
|
|
26
|
-
/** Allowed CSV/markdown keys for the `--type-option` structured form (GH-258). */
|
|
27
|
-
const TYPE_OPTION_KEYS = ["key", "value"];
|
|
28
|
-
function optionalString(value, mode) {
|
|
29
|
-
return mode === "trimmed" ? value?.trim() : value;
|
|
30
|
-
}
|
|
31
|
-
function isProvided(value, guard) {
|
|
32
|
-
return guard === "defined" ? value !== undefined : Boolean(value);
|
|
33
|
-
}
|
|
34
|
-
/** Implements parse reminder entries for the public runtime surface of this module. */
|
|
35
|
-
export function parseReminderEntries(raw, nowValue, options) {
|
|
36
|
-
return raw.map((entry) => {
|
|
37
|
-
const kv = parseCsvKv(entry, "--reminder");
|
|
38
|
-
assertNoUnknownCsvKeys(kv, "--reminder", REMINDER_KEYS);
|
|
39
|
-
const atRaw = optionalString(kv.at ?? kv.date, options.valueMode);
|
|
40
|
-
const textRaw = optionalString(kv.text ?? kv.title, options.valueMode);
|
|
41
|
-
if (!atRaw || !textRaw) {
|
|
42
|
-
throw new PmCliError("--reminder requires at=<iso|relative> or date=<iso|relative>, plus text=<value> or title=<value>", EXIT_CODE.USAGE);
|
|
43
|
-
}
|
|
44
|
-
const text = textRaw.trim();
|
|
45
|
-
if (!text) {
|
|
46
|
-
throw new PmCliError("--reminder text must not be empty", EXIT_CODE.USAGE);
|
|
47
|
-
}
|
|
48
|
-
return {
|
|
49
|
-
at: resolveIsoOrRelative(atRaw, nowValue, "reminder.at"),
|
|
50
|
-
text,
|
|
51
|
-
};
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
/** Implements parse event entries for the public runtime surface of this module. */
|
|
55
|
-
export function parseEventEntries(raw, nowValue, options) {
|
|
56
|
-
return raw.map((entry) => {
|
|
57
|
-
const kv = parseCsvKv(entry, "--event");
|
|
58
|
-
assertNoUnknownCsvKeys(kv, "--event", EVENT_KEYS);
|
|
59
|
-
const startRaw = (kv.start ?? kv.date)?.trim();
|
|
60
|
-
if (!startRaw) {
|
|
61
|
-
throw new PmCliError("--event requires start=<iso|relative> or date=<iso|relative>", EXIT_CODE.USAGE);
|
|
62
|
-
}
|
|
63
|
-
const startAt = resolveIsoOrRelative(startRaw, nowValue, "event.start");
|
|
64
|
-
const endRaw = kv.end?.trim();
|
|
65
|
-
const durationRaw = kv.duration?.trim();
|
|
66
|
-
const endAt = resolveEventEndAt(startAt, endRaw, durationRaw, nowValue);
|
|
67
|
-
const titleRaw = kv.title;
|
|
68
|
-
const descriptionRaw = kv.description;
|
|
69
|
-
const locationRaw = kv.location;
|
|
70
|
-
const timezoneRaw = kv.timezone;
|
|
71
|
-
const title = titleRaw?.trim();
|
|
72
|
-
const description = descriptionRaw?.trim();
|
|
73
|
-
const location = locationRaw?.trim();
|
|
74
|
-
const timezone = timezoneRaw?.trim();
|
|
75
|
-
const optionalTextFields = [
|
|
76
|
-
["title", titleRaw, title],
|
|
77
|
-
["description", descriptionRaw, description],
|
|
78
|
-
["location", locationRaw, location],
|
|
79
|
-
["timezone", timezoneRaw, timezone],
|
|
80
|
-
];
|
|
81
|
-
for (const [fieldLabel, rawValue, trimmedValue] of optionalTextFields) {
|
|
82
|
-
if (rawValue !== undefined && !trimmedValue) {
|
|
83
|
-
throw new PmCliError(`--event ${fieldLabel} must not be empty`, EXIT_CODE.USAGE);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
const allDayRaw = kv.all_day?.trim();
|
|
87
|
-
const recurrence = parseRecurrenceRule(kv, startAt, nowValue, options.recurrenceEmptyNumericGuard);
|
|
88
|
-
const allDay = isProvided(allDayRaw, options.allDayEmptyGuard)
|
|
89
|
-
? parseEventBoolean(allDayRaw, "--event all_day")
|
|
90
|
-
: undefined;
|
|
91
|
-
return {
|
|
92
|
-
start_at: startAt,
|
|
93
|
-
end_at: endAt,
|
|
94
|
-
title,
|
|
95
|
-
description,
|
|
96
|
-
location,
|
|
97
|
-
all_day: allDay,
|
|
98
|
-
timezone,
|
|
99
|
-
recurrence,
|
|
100
|
-
};
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
/** Implements parse type option entries for the public runtime surface of this module. */
|
|
104
|
-
export function parseTypeOptionEntries(raw) {
|
|
105
|
-
const values = {};
|
|
106
|
-
for (const entry of raw) {
|
|
107
|
-
const trimmedEntry = entry.trim();
|
|
108
|
-
if (trimmedEntry.length === 0) {
|
|
109
|
-
throw new PmCliError("--type-option values must not be empty", EXIT_CODE.USAGE);
|
|
110
|
-
}
|
|
111
|
-
let key;
|
|
112
|
-
let value;
|
|
113
|
-
const prefersStructuredKv = trimmedEntry.includes(",") ||
|
|
114
|
-
trimmedEntry.includes("\n") ||
|
|
115
|
-
trimmedEntry.startsWith("```") ||
|
|
116
|
-
/^(?:[-*+]\s+)?(?:key|value)\s*[:=]/i.test(trimmedEntry);
|
|
117
|
-
if (prefersStructuredKv) {
|
|
118
|
-
const kv = parseCsvKv(trimmedEntry, "--type-option");
|
|
119
|
-
assertNoUnknownCsvKeys(kv, "--type-option", TYPE_OPTION_KEYS);
|
|
120
|
-
key = kv.key?.trim();
|
|
121
|
-
value = kv.value?.trim();
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
const equalsIndex = trimmedEntry.indexOf("=");
|
|
125
|
-
const colonIndex = trimmedEntry.indexOf(":");
|
|
126
|
-
let separatorIndex = equalsIndex;
|
|
127
|
-
if (equalsIndex <= 0 && colonIndex > 0) {
|
|
128
|
-
separatorIndex = colonIndex;
|
|
129
|
-
}
|
|
130
|
-
if (separatorIndex <= 0 || separatorIndex === trimmedEntry.length - 1) {
|
|
131
|
-
throw new PmCliError("--type-option requires key=value or key=<name>,value=<value> entries", EXIT_CODE.USAGE);
|
|
132
|
-
}
|
|
133
|
-
key = trimmedEntry.slice(0, separatorIndex).trim();
|
|
134
|
-
value = trimmedEntry.slice(separatorIndex + 1).trim();
|
|
135
|
-
}
|
|
136
|
-
if (!key || !value) {
|
|
137
|
-
throw new PmCliError("--type-option requires key and value", EXIT_CODE.USAGE);
|
|
138
|
-
}
|
|
139
|
-
values[key] = value;
|
|
140
|
-
}
|
|
141
|
-
return Object.fromEntries(Object.entries(values).sort((left, right) => left[0].localeCompare(right[0])));
|
|
142
|
-
}
|
|
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]="dfce9924-8453-5ded-a5df-47477caa9fe7")}catch(e2){}})();import{assertNoUnknownCsvKeys,parseCsvKv,EXIT_CODE,PmCliError,resolveIsoOrRelative}from"../runtime-primitives.js";import{resolveEventEndAt}from"./event-validation-messages.js";import{parseEventBoolean,parseRecurrenceRule,RECURRENCE_CSV_KEYS}from"./recurrence-parsers.js";const REMINDER_KEYS=["at","date","text","title"];const EVENT_KEYS=["start","date","end","duration","title","description","location","timezone","all_day",...RECURRENCE_CSV_KEYS];const TYPE_OPTION_KEYS=["key","value"];function optionalString(value,mode){return mode==="trimmed"?value?.trim():value}function isProvided(value,guard){return guard==="defined"?value!==void 0:Boolean(value)}function parseReminderEntries(raw,nowValue,options){return raw.map(entry=>{const kv=parseCsvKv(entry,"--reminder");assertNoUnknownCsvKeys(kv,"--reminder",REMINDER_KEYS);const atRaw=optionalString(kv.at??kv.date,options.valueMode);const textRaw=optionalString(kv.text??kv.title,options.valueMode);if(!atRaw||!textRaw){throw new PmCliError("--reminder requires at=<iso|relative> or date=<iso|relative>, plus text=<value> or title=<value>",EXIT_CODE.USAGE)}const text=textRaw.trim();if(!text){throw new PmCliError("--reminder text must not be empty",EXIT_CODE.USAGE)}return{at:resolveIsoOrRelative(atRaw,nowValue,"reminder.at"),text}})}function parseEventEntries(raw,nowValue,options){return raw.map(entry=>{const kv=parseCsvKv(entry,"--event");assertNoUnknownCsvKeys(kv,"--event",EVENT_KEYS);const startRaw=(kv.start??kv.date)?.trim();if(!startRaw){throw new PmCliError("--event requires start=<iso|relative> or date=<iso|relative>",EXIT_CODE.USAGE)}const startAt=resolveIsoOrRelative(startRaw,nowValue,"event.start");const endRaw=kv.end?.trim();const durationRaw=kv.duration?.trim();const endAt=resolveEventEndAt(startAt,endRaw,durationRaw,nowValue);const titleRaw=kv.title;const descriptionRaw=kv.description;const locationRaw=kv.location;const timezoneRaw=kv.timezone;const title=titleRaw?.trim();const description=descriptionRaw?.trim();const location=locationRaw?.trim();const timezone=timezoneRaw?.trim();const optionalTextFields=[["title",titleRaw,title],["description",descriptionRaw,description],["location",locationRaw,location],["timezone",timezoneRaw,timezone]];for(const[fieldLabel,rawValue,trimmedValue]of optionalTextFields){if(rawValue!==void 0&&!trimmedValue){throw new PmCliError(`--event ${fieldLabel} must not be empty`,EXIT_CODE.USAGE)}}const allDayRaw=kv.all_day?.trim();const recurrence=parseRecurrenceRule(kv,startAt,nowValue,options.recurrenceEmptyNumericGuard);const allDay=isProvided(allDayRaw,options.allDayEmptyGuard)?parseEventBoolean(allDayRaw,"--event all_day"):void 0;return{start_at:startAt,end_at:endAt,title,description,location,all_day:allDay,timezone,recurrence}})}function parseTypeOptionEntries(raw){const values={};for(const entry of raw){const trimmedEntry=entry.trim();if(trimmedEntry.length===0){throw new PmCliError("--type-option values must not be empty",EXIT_CODE.USAGE)}let key;let value;const prefersStructuredKv=trimmedEntry.includes(",")||trimmedEntry.includes("\n")||trimmedEntry.startsWith("```")||/^(?:[-*+]\s+)?(?:key|value)\s*[:=]/i.test(trimmedEntry);if(prefersStructuredKv){const kv=parseCsvKv(trimmedEntry,"--type-option");assertNoUnknownCsvKeys(kv,"--type-option",TYPE_OPTION_KEYS);key=kv.key?.trim();value=kv.value?.trim()}else{const equalsIndex=trimmedEntry.indexOf("=");const colonIndex=trimmedEntry.indexOf(":");let separatorIndex=equalsIndex;if(equalsIndex<=0&&colonIndex>0){separatorIndex=colonIndex}if(separatorIndex<=0||separatorIndex===trimmedEntry.length-1){throw new PmCliError("--type-option requires key=value or key=<name>,value=<value> entries",EXIT_CODE.USAGE)}key=trimmedEntry.slice(0,separatorIndex).trim();value=trimmedEntry.slice(separatorIndex+1).trim()}if(!key||!value){throw new PmCliError("--type-option requires key and value",EXIT_CODE.USAGE)}values[key]=value}return Object.fromEntries(Object.entries(values).sort((left,right)=>left[0].localeCompare(right[0])))}export{parseEventEntries,parseReminderEntries,parseTypeOptionEntries};
|
|
143
2
|
//# sourceMappingURL=repeatable-metadata-parsers.js.map
|
|
144
|
-
//# debugId=fd41d2bf-7be0-55ee-9048-a9d5092a9a21
|
|
@@ -37,6 +37,7 @@ export interface RestoreResult {
|
|
|
37
37
|
/** Resolve restore targets with the command's established wording and at-or-before timestamp semantics. */
|
|
38
38
|
declare function ensureReplayTarget(target: string, history: readonly HistoryEntry[]): import("../../core/history/projection.js").ResolvedHistoryTarget;
|
|
39
39
|
declare function replayCurrentDocument(history: HistoryEntry[]): ItemDocument;
|
|
40
|
+
/** Resolve live or deleted history and enforce the current item's stream policy before restoring a historical version. */
|
|
40
41
|
declare function resolveRestoreSubject(pmRoot: string, id: string, settings: Awaited<ReturnType<typeof readSettings>>, typeToFolder: Record<string, string>): Promise<ResolvedRestoreSubject>;
|
|
41
42
|
declare function changedFields(beforeDocument: ItemDocument, afterDocument: ItemDocument): string[];
|
|
42
43
|
/** Implements run restore for the public runtime surface of this module. */
|