@unbrained/pm-cli 2026.5.14 → 2026.5.24
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/.claude-plugin/marketplace.json +4 -4
- package/AGENTS.md +78 -457
- package/CHANGELOG.md +71 -0
- package/CONTRIBUTING.md +1 -0
- package/README.md +8 -6
- package/dist/cli/argv-utils.js +4 -1
- package/dist/cli/argv-utils.js.map +1 -1
- package/dist/cli/bootstrap-args.js +4 -1
- package/dist/cli/bootstrap-args.js.map +1 -1
- package/dist/cli/commander-usage.js +19 -1
- package/dist/cli/commander-usage.js.map +1 -1
- package/dist/cli/commands/activity.js +4 -1
- package/dist/cli/commands/activity.js.map +1 -1
- package/dist/cli/commands/aggregate.js +5 -2
- package/dist/cli/commands/aggregate.js.map +1 -1
- package/dist/cli/commands/annotation-command.d.ts +49 -0
- package/dist/cli/commands/annotation-command.js +135 -0
- package/dist/cli/commands/annotation-command.js.map +1 -0
- package/dist/cli/commands/append.js +5 -6
- package/dist/cli/commands/append.js.map +1 -1
- package/dist/cli/commands/calendar.js +5 -5
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/claim.d.ts +3 -0
- package/dist/cli/commands/claim.js +29 -23
- package/dist/cli/commands/claim.js.map +1 -1
- package/dist/cli/commands/close.js +63 -8
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/comments-audit.js +4 -1
- package/dist/cli/commands/comments-audit.js.map +1 -1
- package/dist/cli/commands/comments.d.ts +5 -0
- package/dist/cli/commands/comments.js +29 -116
- package/dist/cli/commands/comments.js.map +1 -1
- package/dist/cli/commands/completion.js +198 -15
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/config.js +4 -1
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/context.js +21 -13
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/contracts.d.ts +9 -0
- package/dist/cli/commands/contracts.js +314 -64
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.js +77 -48
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/dedupe-audit.js +9 -3
- package/dist/cli/commands/dedupe-audit.js.map +1 -1
- package/dist/cli/commands/delete.d.ts +3 -0
- package/dist/cli/commands/delete.js +11 -7
- package/dist/cli/commands/delete.js.map +1 -1
- package/dist/cli/commands/deps.js +4 -1
- package/dist/cli/commands/deps.js.map +1 -1
- package/dist/cli/commands/docs.d.ts +1 -0
- package/dist/cli/commands/docs.js +6 -7
- package/dist/cli/commands/docs.js.map +1 -1
- package/dist/cli/commands/event-validation-messages.d.ts +3 -0
- package/dist/cli/commands/event-validation-messages.js +44 -0
- package/dist/cli/commands/event-validation-messages.js.map +1 -0
- package/dist/cli/commands/extension.d.ts +3 -1
- package/dist/cli/commands/extension.js +259 -52
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/files.js +8 -12
- package/dist/cli/commands/files.js.map +1 -1
- package/dist/cli/commands/gc.js +19 -3
- package/dist/cli/commands/gc.js.map +1 -1
- package/dist/cli/commands/get.d.ts +10 -5
- package/dist/cli/commands/get.js +135 -20
- package/dist/cli/commands/get.js.map +1 -1
- package/dist/cli/commands/guide.js +6 -8
- package/dist/cli/commands/guide.js.map +1 -1
- package/dist/cli/commands/health.d.ts +14 -0
- package/dist/cli/commands/health.js +269 -67
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/history-redact.d.ts +50 -0
- package/dist/cli/commands/history-redact.js +476 -0
- package/dist/cli/commands/history-redact.js.map +1 -0
- package/dist/cli/commands/history-repair.d.ts +33 -0
- package/dist/cli/commands/history-repair.js +166 -0
- package/dist/cli/commands/history-repair.js.map +1 -0
- package/dist/cli/commands/history.d.ts +4 -0
- package/dist/cli/commands/history.js +12 -79
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/index.d.ts +5 -1
- package/dist/cli/commands/index.js +9 -2
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init-agent-guidance.d.ts +31 -0
- package/dist/cli/commands/init-agent-guidance.js +336 -0
- package/dist/cli/commands/init-agent-guidance.js.map +1 -0
- package/dist/cli/commands/init.d.ts +42 -0
- package/dist/cli/commands/init.js +96 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/learnings.js +22 -118
- package/dist/cli/commands/learnings.js.map +1 -1
- package/dist/cli/commands/linked-test-entry.d.ts +3 -0
- package/dist/cli/commands/linked-test-entry.js +62 -0
- package/dist/cli/commands/linked-test-entry.js.map +1 -0
- package/dist/cli/commands/list.d.ts +1 -0
- package/dist/cli/commands/list.js +72 -38
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/metadata-normalizers.js +4 -1
- package/dist/cli/commands/metadata-normalizers.js.map +1 -1
- package/dist/cli/commands/normalize.js +4 -1
- package/dist/cli/commands/normalize.js.map +1 -1
- package/dist/cli/commands/notes.js +22 -118
- package/dist/cli/commands/notes.js.map +1 -1
- package/dist/cli/commands/plan.d.ts +121 -0
- package/dist/cli/commands/plan.js +1137 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/reindex.js +4 -1
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/restore.js +9 -49
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/cli/commands/schema.d.ts +31 -0
- package/dist/cli/commands/schema.js +98 -0
- package/dist/cli/commands/schema.js.map +1 -0
- package/dist/cli/commands/search.js +156 -40
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/stats.js +4 -1
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/templates.d.ts +4 -0
- package/dist/cli/commands/templates.js +91 -16
- package/dist/cli/commands/templates.js.map +1 -1
- package/dist/cli/commands/test-all.js +6 -7
- package/dist/cli/commands/test-all.js.map +1 -1
- package/dist/cli/commands/test-runs.js +4 -1
- package/dist/cli/commands/test-runs.js.map +1 -1
- package/dist/cli/commands/test.d.ts +1 -0
- package/dist/cli/commands/test.js +9 -9
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update-many.js +6 -7
- package/dist/cli/commands/update-many.js.map +1 -1
- package/dist/cli/commands/update.js +204 -103
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/upgrade.js +6 -3
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +3 -1
- package/dist/cli/commands/validate.js +44 -64
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/error-guidance.js +99 -6
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/extension-command-help.d.ts +0 -1
- package/dist/cli/extension-command-help.js +4 -12
- package/dist/cli/extension-command-help.js.map +1 -1
- package/dist/cli/extension-command-options.d.ts +1 -0
- package/dist/cli/extension-command-options.js +108 -6
- package/dist/cli/extension-command-options.js.map +1 -1
- package/dist/cli/guide-topics.js +4 -1
- package/dist/cli/guide-topics.js.map +1 -1
- package/dist/cli/help-content.d.ts +0 -1
- package/dist/cli/help-content.js +46 -22
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/help-json-payload.d.ts +1 -0
- package/dist/cli/help-json-payload.js +35 -2
- package/dist/cli/help-json-payload.js.map +1 -1
- package/dist/cli/main.js +214 -30
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/migration-gates.js +4 -1
- package/dist/cli/migration-gates.js.map +1 -1
- package/dist/cli/register-list-query.d.ts +1 -1
- package/dist/cli/register-list-query.js +75 -29
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.d.ts +1 -1
- package/dist/cli/register-mutation.js +430 -38
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +47 -10
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +47 -25
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.d.ts +0 -2
- package/dist/cli/registration-helpers.js +21 -40
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli/shared-parsers.js +4 -1
- package/dist/cli/shared-parsers.js.map +1 -1
- package/dist/cli/telemetry-flush.js +4 -1
- package/dist/cli/telemetry-flush.js.map +1 -1
- package/dist/cli.js +65 -3
- package/dist/cli.js.map +1 -1
- package/dist/core/extensions/extension-types.js +4 -1
- package/dist/core/extensions/extension-types.js.map +1 -1
- package/dist/core/extensions/index.d.ts +0 -1
- package/dist/core/extensions/index.js +4 -13
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/item-fields.js +4 -1
- package/dist/core/extensions/item-fields.js.map +1 -1
- package/dist/core/extensions/loader.js +78 -60
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runtime-registrations.js +4 -1
- package/dist/core/extensions/runtime-registrations.js.map +1 -1
- package/dist/core/fs/fs-utils.js +4 -1
- package/dist/core/fs/fs-utils.js.map +1 -1
- package/dist/core/fs/index.js +4 -1
- package/dist/core/fs/index.js.map +1 -1
- package/dist/core/fs/path-utils.d.ts +1 -0
- package/dist/core/fs/path-utils.js +12 -0
- package/dist/core/fs/path-utils.js.map +1 -0
- package/dist/core/history/drift-scan.d.ts +11 -0
- package/dist/core/history/drift-scan.js +67 -0
- package/dist/core/history/drift-scan.js.map +1 -0
- package/dist/core/history/history-stream-policy.js +4 -1
- package/dist/core/history/history-stream-policy.js.map +1 -1
- package/dist/core/history/history.js +4 -1
- package/dist/core/history/history.js.map +1 -1
- package/dist/core/history/index.js +4 -1
- package/dist/core/history/index.js.map +1 -1
- package/dist/core/history/replay.d.ts +82 -0
- package/dist/core/history/replay.js +249 -0
- package/dist/core/history/replay.js.map +1 -0
- package/dist/core/item/id.js +4 -1
- package/dist/core/item/id.js.map +1 -1
- package/dist/core/item/index.js +4 -1
- package/dist/core/item/index.js.map +1 -1
- package/dist/core/item/item-format.js +250 -8
- package/dist/core/item/item-format.js.map +1 -1
- package/dist/core/item/item-type-definition.d.ts +52 -0
- package/dist/core/item/item-type-definition.js +123 -0
- package/dist/core/item/item-type-definition.js.map +1 -0
- package/dist/core/item/parent-reference-policy.js +4 -1
- package/dist/core/item/parent-reference-policy.js.map +1 -1
- package/dist/core/item/parse.js +34 -3
- package/dist/core/item/parse.js.map +1 -1
- package/dist/core/item/priority.d.ts +23 -0
- package/dist/core/item/priority.js +55 -0
- package/dist/core/item/priority.js.map +1 -0
- package/dist/core/item/sprint-release-format.js +4 -1
- package/dist/core/item/sprint-release-format.js.map +1 -1
- package/dist/core/item/status.d.ts +14 -1
- package/dist/core/item/status.js +24 -1
- package/dist/core/item/status.js.map +1 -1
- package/dist/core/item/toon-decode.d.ts +19 -0
- package/dist/core/item/toon-decode.js +69 -0
- package/dist/core/item/toon-decode.js.map +1 -0
- package/dist/core/item/type-registry.js +15 -83
- package/dist/core/item/type-registry.js.map +1 -1
- package/dist/core/lock/index.js +4 -1
- package/dist/core/lock/index.js.map +1 -1
- package/dist/core/lock/lock.js +4 -1
- package/dist/core/lock/lock.js.map +1 -1
- package/dist/core/output/output.d.ts +4 -0
- package/dist/core/output/output.js +47 -6
- package/dist/core/output/output.js.map +1 -1
- package/dist/core/packages/manifest.d.ts +1 -0
- package/dist/core/packages/manifest.js +6 -8
- package/dist/core/packages/manifest.js.map +1 -1
- package/dist/core/packages/root.d.ts +3 -0
- package/dist/core/packages/root.js +51 -0
- package/dist/core/packages/root.js.map +1 -0
- package/dist/core/schema/item-types-file.d.ts +85 -0
- package/dist/core/schema/item-types-file.js +243 -0
- package/dist/core/schema/item-types-file.js.map +1 -0
- package/dist/core/schema/runtime-field-filters.js +4 -1
- package/dist/core/schema/runtime-field-filters.js.map +1 -1
- package/dist/core/schema/runtime-field-values.js +4 -1
- package/dist/core/schema/runtime-field-values.js.map +1 -1
- package/dist/core/schema/runtime-schema.d.ts +2 -1
- package/dist/core/schema/runtime-schema.js +13 -8
- package/dist/core/schema/runtime-schema.js.map +1 -1
- package/dist/core/search/cache.js +7 -2
- package/dist/core/search/cache.js.map +1 -1
- package/dist/core/search/corpus.d.ts +2 -0
- package/dist/core/search/corpus.js +77 -2
- package/dist/core/search/corpus.js.map +1 -1
- package/dist/core/search/embedding-batches.js +21 -7
- package/dist/core/search/embedding-batches.js.map +1 -1
- package/dist/core/search/http-client.js +4 -1
- package/dist/core/search/http-client.js.map +1 -1
- package/dist/core/search/providers.js +4 -1
- package/dist/core/search/providers.js.map +1 -1
- package/dist/core/search/semantic-defaults.js +12 -3
- package/dist/core/search/semantic-defaults.js.map +1 -1
- package/dist/core/search/vector-stores.js +4 -1
- package/dist/core/search/vector-stores.js.map +1 -1
- package/dist/core/sentry/helpers.js +4 -1
- package/dist/core/sentry/helpers.js.map +1 -1
- package/dist/core/sentry/instrument.js +10 -13
- package/dist/core/sentry/instrument.js.map +1 -1
- package/dist/core/shared/author.d.ts +1 -0
- package/dist/core/shared/author.js +9 -0
- package/dist/core/shared/author.js.map +1 -0
- package/dist/core/shared/command-types.js +4 -1
- package/dist/core/shared/command-types.js.map +1 -1
- package/dist/core/shared/conflict-markers.js +4 -1
- package/dist/core/shared/conflict-markers.js.map +1 -1
- package/dist/core/shared/constants.d.ts +2 -2
- package/dist/core/shared/constants.js +24 -1
- package/dist/core/shared/constants.js.map +1 -1
- package/dist/core/shared/errors.js +4 -1
- package/dist/core/shared/errors.js.map +1 -1
- package/dist/core/shared/index.js +4 -1
- package/dist/core/shared/index.js.map +1 -1
- package/dist/core/shared/lazy-module.d.ts +1 -0
- package/dist/core/shared/lazy-module.js +11 -0
- package/dist/core/shared/lazy-module.js.map +1 -0
- package/dist/core/shared/levenshtein.js +4 -1
- package/dist/core/shared/levenshtein.js.map +1 -1
- package/dist/core/shared/option-alias-visibility.d.ts +44 -0
- package/dist/core/shared/option-alias-visibility.js +76 -0
- package/dist/core/shared/option-alias-visibility.js.map +1 -0
- package/dist/core/shared/primitives.js +4 -1
- package/dist/core/shared/primitives.js.map +1 -1
- package/dist/core/shared/serialization.js +4 -1
- package/dist/core/shared/serialization.js.map +1 -1
- package/dist/core/shared/text-normalization.d.ts +0 -1
- package/dist/core/shared/text-normalization.js +4 -4
- package/dist/core/shared/text-normalization.js.map +1 -1
- package/dist/core/shared/time.js +4 -1
- package/dist/core/shared/time.js.map +1 -1
- package/dist/core/store/front-matter-cache.js +8 -3
- package/dist/core/store/front-matter-cache.js.map +1 -1
- package/dist/core/store/index.js +4 -1
- package/dist/core/store/index.js.map +1 -1
- package/dist/core/store/item-format-migration.js +4 -1
- package/dist/core/store/item-format-migration.js.map +1 -1
- package/dist/core/store/item-store.d.ts +4 -0
- package/dist/core/store/item-store.js +133 -39
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/paths.js +4 -1
- package/dist/core/store/paths.js.map +1 -1
- package/dist/core/store/settings-validator.d.ts +106 -0
- package/dist/core/store/settings-validator.js +279 -0
- package/dist/core/store/settings-validator.js.map +1 -0
- package/dist/core/store/settings.js +32 -331
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/telemetry/consent.js +4 -1
- package/dist/core/telemetry/consent.js.map +1 -1
- package/dist/core/telemetry/observability.d.ts +1 -1
- package/dist/core/telemetry/observability.js +11 -2
- package/dist/core/telemetry/observability.js.map +1 -1
- package/dist/core/telemetry/runtime.js +34 -6
- package/dist/core/telemetry/runtime.js.map +1 -1
- package/dist/core/test/background-runs.js +4 -1
- package/dist/core/test/background-runs.js.map +1 -1
- package/dist/core/test/item-test-run-tracking.js +4 -1
- package/dist/core/test/item-test-run-tracking.js.map +1 -1
- package/dist/mcp/server.js +182 -22
- package/dist/mcp/server.js.map +1 -1
- package/dist/sdk/cli-contracts/commander-mutation-options.js +10 -3
- package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
- package/dist/sdk/cli-contracts/commander-types.js +4 -1
- package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
- package/dist/sdk/cli-contracts.d.ts +13 -2
- package/dist/sdk/cli-contracts.js +410 -26
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/index.js +4 -1
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runtime.d.ts +25 -1
- package/dist/sdk/runtime.js +48 -2
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/types/index.js +4 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types.d.ts +92 -2
- package/dist/types.js +42 -1
- package/dist/types.js.map +1 -1
- package/docs/AGENT_GUIDE.md +23 -7
- package/docs/ARCHITECTURE.md +1 -1
- package/docs/CLAUDE_CODE_PLUGIN.md +10 -10
- package/docs/CODEX_PLUGIN.md +2 -2
- package/docs/COMMANDS.md +117 -12
- package/docs/CONFIGURATION.md +5 -2
- package/docs/EXTENSIONS.md +158 -814
- package/docs/QUICKSTART.md +11 -5
- package/docs/README.md +7 -6
- package/docs/RELEASING.md +13 -9
- package/docs/SDK.md +11 -2
- package/docs/TESTING.md +2 -2
- package/marketplace.json +3 -3
- package/package.json +15 -12
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/README.md +4 -2
- package/packages/pm-calendar/extensions/calendar/index.js +22 -3
- package/packages/pm-calendar/extensions/calendar/index.ts +22 -3
- package/packages/pm-calendar/extensions/calendar/runtime.js +26 -7
- package/packages/pm-calendar/extensions/calendar/runtime.ts +26 -7
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/extensions/guide-shell/index.js +1 -1
- package/packages/pm-guide-shell/extensions/guide-shell/index.ts +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/README.md +8 -0
- package/packages/pm-search-advanced/extensions/search-advanced/index.js +74 -0
- package/packages/pm-search-advanced/extensions/search-advanced/index.ts +75 -1
- package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +67 -9
- package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +67 -9
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/README.md +1 -1
- package/packages/pm-templates/extensions/templates/runtime.js +11 -202
- package/packages/pm-templates/extensions/templates/runtime.ts +38 -230
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/plugins/{pm-cli-claude → pm-claude}/.claude-plugin/plugin.json +2 -2
- package/plugins/{pm-cli-claude → pm-claude}/.mcp.json +1 -1
- package/plugins/{pm-cli-claude → pm-claude}/README.md +4 -4
- package/plugins/{pm-cli-claude → pm-claude}/agents/pm-coordinator.md +1 -1
- package/plugins/{pm-cli-claude → pm-claude}/commands/pm-init.md +10 -1
- package/plugins/{pm-cli-claude → pm-claude}/commands/pm-planner.md +18 -0
- package/plugins/{pm-cli-claude → pm-claude}/skills/pm-planner/SKILL.md +46 -1
- package/plugins/{pm-cli-codex → pm-codex}/.codex-plugin/plugin.json +3 -3
- package/plugins/{pm-cli-codex → pm-codex}/.mcp.json +1 -1
- package/plugins/{pm-cli-codex → pm-codex}/README.md +7 -4
- package/plugins/pm-codex/skills/pm-native/SKILL.md +81 -0
- package/scripts/finalize-build.mjs +28 -0
- package/scripts/prepare-build-cache.mjs +37 -0
- package/dist/core/output/command-aware.d.ts +0 -1
- package/dist/core/output/command-aware.js +0 -394
- package/dist/core/output/command-aware.js.map +0 -1
- package/plugins/pm-cli-codex/skills/pm-native/SKILL.md +0 -57
- /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-delivery-chain.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-triage-agent.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-verification-agent.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-audit.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-calendar.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-close-task.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-developer.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-list.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-new.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-release.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-search.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-start-task.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-status.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-triage.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-workflow.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/hooks/hooks.json +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/hooks/session-start.mjs +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/scripts/pm-mcp-server.mjs +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-audit/SKILL.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-developer/SKILL.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-release/SKILL.md +0 -0
- /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-workflow/SKILL.md +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/assets/pm-cli-small.svg +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-audit.md +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-close-task.md +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-start-task.md +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/scripts/pm-mcp-server.mjs +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-auditor/SKILL.md +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-auditor/agents/openai.yaml +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-native/agents/openai.yaml +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-release/SKILL.md +0 -0
- /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-release/agents/openai.yaml +0 -0
|
@@ -1,3 +1,7 @@
|
|
|
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]="d166f748-b8c5-5837-a22e-8a0e34b28c72")}catch(e){}}();
|
|
3
|
+
import { EXIT_CODE } from "../core/shared/constants.js";
|
|
4
|
+
import { PmCliError } from "../core/shared/errors.js";
|
|
1
5
|
const UNSAFE_LOOSE_OPTION_KEYS = new Set(["__proto__", "prototype", "constructor"]);
|
|
2
6
|
function toLooseOptionKey(rawKey) {
|
|
3
7
|
const key = rawKey.trim().toLowerCase();
|
|
@@ -18,9 +22,33 @@ function setLooseOptionValue(options, key, value) {
|
|
|
18
22
|
}
|
|
19
23
|
function parseLooseOptionToken(args, index) {
|
|
20
24
|
const token = args[index];
|
|
21
|
-
if (!token.startsWith("
|
|
25
|
+
if (!token.startsWith("-") || token === "-" || token === "--") {
|
|
22
26
|
return null;
|
|
23
27
|
}
|
|
28
|
+
if (!token.startsWith("--")) {
|
|
29
|
+
const equalsIndex = token.indexOf("=");
|
|
30
|
+
if (equalsIndex >= 0) {
|
|
31
|
+
return {
|
|
32
|
+
consumed: 1,
|
|
33
|
+
key: token.slice(1, equalsIndex).trim(),
|
|
34
|
+
value: token.slice(equalsIndex + 1),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const key = token.slice(1).trim();
|
|
38
|
+
const next = args[index + 1];
|
|
39
|
+
if (typeof next === "string" && !next.startsWith("-")) {
|
|
40
|
+
return {
|
|
41
|
+
consumed: 2,
|
|
42
|
+
key,
|
|
43
|
+
value: next,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
consumed: 1,
|
|
48
|
+
key,
|
|
49
|
+
value: true,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
24
52
|
const equalsIndex = token.indexOf("=");
|
|
25
53
|
if (equalsIndex >= 0) {
|
|
26
54
|
return {
|
|
@@ -87,6 +115,67 @@ function collectLooseOptionKeys(definition) {
|
|
|
87
115
|
}
|
|
88
116
|
return [...new Set(keys)];
|
|
89
117
|
}
|
|
118
|
+
function resolveCanonicalLooseOptionKey(definition) {
|
|
119
|
+
const long = typeof definition.long === "string" ? definition.long.trim() : "";
|
|
120
|
+
if (long.startsWith("--")) {
|
|
121
|
+
const normalized = toLooseOptionKey(long.slice(2));
|
|
122
|
+
if (normalized.length > 0 && !isUnsafeLooseOptionKey(normalized)) {
|
|
123
|
+
return normalized;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return collectLooseOptionKeys(definition)[0] ?? null;
|
|
127
|
+
}
|
|
128
|
+
function formatLooseOptionLabel(definition) {
|
|
129
|
+
const long = typeof definition.long === "string" ? definition.long.trim() : "";
|
|
130
|
+
if (long.startsWith("--") && long.length > 2) {
|
|
131
|
+
return long;
|
|
132
|
+
}
|
|
133
|
+
const short = typeof definition.short === "string" ? definition.short.trim() : "";
|
|
134
|
+
if (short.startsWith("-") && !short.startsWith("--") && short.length > 1) {
|
|
135
|
+
return short;
|
|
136
|
+
}
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
export function validateLooseCommandOptionsWithFlagDefinitions(options, definitions, commandPath) {
|
|
140
|
+
if (definitions.length === 0) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const allowed = new Set();
|
|
144
|
+
const disabled = new Map();
|
|
145
|
+
const required = [];
|
|
146
|
+
const labels = [];
|
|
147
|
+
for (const definition of definitions) {
|
|
148
|
+
const keys = collectLooseOptionKeys(definition);
|
|
149
|
+
const label = formatLooseOptionLabel(definition);
|
|
150
|
+
if (label) {
|
|
151
|
+
labels.push(label);
|
|
152
|
+
}
|
|
153
|
+
for (const key of keys) {
|
|
154
|
+
allowed.add(key);
|
|
155
|
+
if (definition.enabled === false) {
|
|
156
|
+
disabled.set(key, label ?? `--${key}`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (definition.required === true && definition.enabled !== false && keys.length > 0) {
|
|
160
|
+
required.push({ keys, label: label ?? `--${keys[0]}` });
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
for (const key of Object.keys(options)) {
|
|
164
|
+
if (!allowed.has(key)) {
|
|
165
|
+
const expected = labels.length > 0 ? ` Expected one of: ${[...new Set(labels)].join(", ")}.` : "";
|
|
166
|
+
throw new PmCliError(`Unknown option '--${key}' for extension command '${commandPath}'.${expected}`, EXIT_CODE.USAGE);
|
|
167
|
+
}
|
|
168
|
+
const disabledLabel = disabled.get(key);
|
|
169
|
+
if (disabledLabel) {
|
|
170
|
+
throw new PmCliError(`Option '${disabledLabel}' is disabled for extension command '${commandPath}'.`, EXIT_CODE.USAGE);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
for (const entry of required) {
|
|
174
|
+
if (!entry.keys.some((key) => Object.hasOwn(options, key))) {
|
|
175
|
+
throw new PmCliError(`Missing required option '${entry.label}' for extension command '${commandPath}'.`, EXIT_CODE.USAGE);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
90
179
|
function coerceLooseOptionValue(value, kind) {
|
|
91
180
|
if (Array.isArray(value)) {
|
|
92
181
|
return value.map((entry) => coerceLooseOptionValue(entry, kind));
|
|
@@ -133,16 +222,28 @@ export function coerceLooseCommandOptionsWithFlagDefinitions(options, definition
|
|
|
133
222
|
coerced[key] = value;
|
|
134
223
|
}
|
|
135
224
|
for (const definition of definitions) {
|
|
136
|
-
const
|
|
137
|
-
if (!
|
|
225
|
+
const canonical = resolveCanonicalLooseOptionKey(definition);
|
|
226
|
+
if (!canonical) {
|
|
138
227
|
continue;
|
|
139
228
|
}
|
|
140
229
|
for (const key of collectLooseOptionKeys(definition)) {
|
|
141
|
-
if (!Object.hasOwn(coerced, key)) {
|
|
230
|
+
if (key === canonical || !Object.hasOwn(coerced, key)) {
|
|
142
231
|
continue;
|
|
143
232
|
}
|
|
144
|
-
|
|
233
|
+
if (Object.hasOwn(coerced, canonical)) {
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
coerced[canonical] = coerced[key];
|
|
237
|
+
delete coerced[key];
|
|
238
|
+
}
|
|
239
|
+
const kind = resolveLooseOptionCoercionKind(definition);
|
|
240
|
+
if (!kind) {
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
if (!Object.hasOwn(coerced, canonical)) {
|
|
244
|
+
continue;
|
|
145
245
|
}
|
|
246
|
+
coerced[canonical] = coerceLooseOptionValue(coerced[canonical], kind);
|
|
146
247
|
}
|
|
147
248
|
return coerced;
|
|
148
249
|
}
|
|
@@ -165,4 +266,5 @@ export function parseLooseCommandOptions(args) {
|
|
|
165
266
|
}
|
|
166
267
|
return options;
|
|
167
268
|
}
|
|
168
|
-
//# sourceMappingURL=extension-command-options.js.map
|
|
269
|
+
//# sourceMappingURL=extension-command-options.js.map
|
|
270
|
+
//# debugId=d166f748-b8c5-5837-a22e-8a0e34b28c72
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-command-options.js","sourceRoot":"/","sources":["cli/extension-command-options.ts"],"names":[],"mappings":"AAAA,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;AAEpF,SAAS,gBAAgB,CAAC,MAAc;IACtC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxC,OAAO,GAAG,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACxF,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAgC,EAAE,GAAW,EAAE,KAAc;IACxF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;QACxB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAQD,SAAS,qBAAqB,CAAC,IAAc,EAAE,KAAa;IAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE;YACvC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;SACpC,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAC1B,KAAK,EAAE,KAAK;SACb,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtD,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,GAAG;YACH,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,CAAC;QACX,GAAG;QACH,KAAK,EAAE,IAAI;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAW;IACzC,OAAO,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC;AAID,SAAS,8BAA8B,CAAC,UAAmC;IACzE,MAAM,YAAY,GAAG,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5G,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACrH,MAAM,IAAI,GAAG,YAAY,IAAI,SAAS,CAAC;IACvC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAClF,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAmC;IACjE,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/E,MAAM,KAAK,GAAG,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc,EAAE,IAA6B;IAC3E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QAChD,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QAClD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC9C,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,4CAA4C,CAC1D,OAAgC,EAChC,WAA2C;IAE3C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAA4B,CAAC;IAC/D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,8BAA8B,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,sBAAsB,CAAC,UAAU,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;gBACjC,SAAS;YACX,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,IAAc;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAA4B,CAAC;IAC/D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QAED,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,sBAAsB,CAAC,aAAa,CAAC,EAAE,CAAC;YACxE,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC;YACzB,SAAS;QACX,CAAC;QACD,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1D,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["const UNSAFE_LOOSE_OPTION_KEYS = new Set([\"__proto__\", \"prototype\", \"constructor\"]);\n\nfunction toLooseOptionKey(rawKey: string): string {\n const key = rawKey.trim().toLowerCase();\n return key.replaceAll(/-([a-z0-9])/g, (_match, group: string) => group.toUpperCase());\n}\n\nfunction setLooseOptionValue(options: Record<string, unknown>, key: string, value: unknown): void {\n const existing = options[key];\n if (existing === undefined) {\n options[key] = value;\n return;\n }\n if (Array.isArray(existing)) {\n existing.push(value);\n options[key] = existing;\n return;\n }\n options[key] = [existing, value];\n}\n\ninterface ParsedLooseOptionToken {\n consumed: number;\n key: string;\n value: unknown;\n}\n\nfunction parseLooseOptionToken(args: string[], index: number): ParsedLooseOptionToken | null {\n const token = args[index];\n if (!token.startsWith(\"--\") || token === \"--\") {\n return null;\n }\n\n const equalsIndex = token.indexOf(\"=\");\n if (equalsIndex >= 0) {\n return {\n consumed: 1,\n key: token.slice(2, equalsIndex).trim(),\n value: token.slice(equalsIndex + 1),\n };\n }\n\n if (token.startsWith(\"--no-\")) {\n return {\n consumed: 1,\n key: token.slice(5).trim(),\n value: false,\n };\n }\n\n const key = token.slice(2).trim();\n const next = args[index + 1];\n if (typeof next === \"string\" && !next.startsWith(\"-\")) {\n return {\n consumed: 2,\n key,\n value: next,\n };\n }\n return {\n consumed: 1,\n key,\n value: true,\n };\n}\n\nfunction isUnsafeLooseOptionKey(key: string): boolean {\n return UNSAFE_LOOSE_OPTION_KEYS.has(key);\n}\n\ntype LooseOptionCoercionKind = \"string\" | \"number\" | \"boolean\";\n\nfunction resolveLooseOptionCoercionKind(definition: Record<string, unknown>): LooseOptionCoercionKind | null {\n const explicitType = typeof definition.type === \"string\" ? definition.type.trim().toLowerCase() : undefined;\n const valueType = typeof definition.value_type === \"string\" ? definition.value_type.trim().toLowerCase() : undefined;\n const kind = explicitType ?? valueType;\n if (kind === \"string\") {\n return \"string\";\n }\n if (kind === \"number\" || kind === \"int\" || kind === \"integer\" || kind === \"float\") {\n return \"number\";\n }\n if (kind === \"boolean\" || kind === \"bool\") {\n return \"boolean\";\n }\n return null;\n}\n\nfunction collectLooseOptionKeys(definition: Record<string, unknown>): string[] {\n const keys: string[] = [];\n const long = typeof definition.long === \"string\" ? definition.long.trim() : \"\";\n const short = typeof definition.short === \"string\" ? definition.short.trim() : \"\";\n if (long.startsWith(\"--\")) {\n const normalized = toLooseOptionKey(long.slice(2));\n if (normalized.length > 0 && !isUnsafeLooseOptionKey(normalized)) {\n keys.push(normalized);\n }\n }\n if (short.startsWith(\"-\") && !short.startsWith(\"--\")) {\n const normalized = toLooseOptionKey(short.slice(1));\n if (normalized.length > 0 && !isUnsafeLooseOptionKey(normalized)) {\n keys.push(normalized);\n }\n }\n return [...new Set(keys)];\n}\n\nfunction coerceLooseOptionValue(value: unknown, kind: LooseOptionCoercionKind): unknown {\n if (Array.isArray(value)) {\n return value.map((entry) => coerceLooseOptionValue(entry, kind));\n }\n if (kind === \"string\") {\n if (typeof value === \"string\") {\n return value;\n }\n if (value === null || value === undefined) {\n return value;\n }\n return String(value);\n }\n if (kind === \"number\") {\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? value : value;\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : value;\n }\n return value;\n }\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"string\") {\n const normalized = value.trim().toLowerCase();\n if (normalized === \"true\" || normalized === \"1\") {\n return true;\n }\n if (normalized === \"false\" || normalized === \"0\") {\n return false;\n }\n }\n return value;\n}\n\nexport function coerceLooseCommandOptionsWithFlagDefinitions(\n options: Record<string, unknown>,\n definitions: Array<Record<string, unknown>>,\n): Record<string, unknown> {\n if (definitions.length === 0) {\n return options;\n }\n const coerced = Object.create(null) as Record<string, unknown>;\n for (const [key, value] of Object.entries(options)) {\n coerced[key] = value;\n }\n for (const definition of definitions) {\n const kind = resolveLooseOptionCoercionKind(definition);\n if (!kind) {\n continue;\n }\n for (const key of collectLooseOptionKeys(definition)) {\n if (!Object.hasOwn(coerced, key)) {\n continue;\n }\n coerced[key] = coerceLooseOptionValue(coerced[key], kind);\n }\n }\n return coerced;\n}\n\nexport function parseLooseCommandOptions(args: string[]): Record<string, unknown> {\n const options = Object.create(null) as Record<string, unknown>;\n let index = 0;\n while (index < args.length) {\n const parsed = parseLooseOptionToken(args, index);\n if (!parsed) {\n index += 1;\n continue;\n }\n\n const normalizedKey = toLooseOptionKey(parsed.key);\n if (normalizedKey.length === 0 || isUnsafeLooseOptionKey(normalizedKey)) {\n index += parsed.consumed;\n continue;\n }\n setLooseOptionValue(options, normalizedKey, parsed.value);\n index += parsed.consumed;\n }\n return options;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"extension-command-options.js","sources":["cli/extension-command-options.ts"],"sourceRoot":"/","sourcesContent":["import { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { PmCliError } from \"../core/shared/errors.js\";\n\nconst UNSAFE_LOOSE_OPTION_KEYS = new Set([\"__proto__\", \"prototype\", \"constructor\"]);\n\nfunction toLooseOptionKey(rawKey: string): string {\n const key = rawKey.trim().toLowerCase();\n return key.replaceAll(/-([a-z0-9])/g, (_match, group: string) => group.toUpperCase());\n}\n\nfunction setLooseOptionValue(options: Record<string, unknown>, key: string, value: unknown): void {\n const existing = options[key];\n if (existing === undefined) {\n options[key] = value;\n return;\n }\n if (Array.isArray(existing)) {\n existing.push(value);\n options[key] = existing;\n return;\n }\n options[key] = [existing, value];\n}\n\ninterface ParsedLooseOptionToken {\n consumed: number;\n key: string;\n value: unknown;\n}\n\nfunction parseLooseOptionToken(args: string[], index: number): ParsedLooseOptionToken | null {\n const token = args[index];\n if (!token.startsWith(\"-\") || token === \"-\" || token === \"--\") {\n return null;\n }\n\n if (!token.startsWith(\"--\")) {\n const equalsIndex = token.indexOf(\"=\");\n if (equalsIndex >= 0) {\n return {\n consumed: 1,\n key: token.slice(1, equalsIndex).trim(),\n value: token.slice(equalsIndex + 1),\n };\n }\n const key = token.slice(1).trim();\n const next = args[index + 1];\n if (typeof next === \"string\" && !next.startsWith(\"-\")) {\n return {\n consumed: 2,\n key,\n value: next,\n };\n }\n return {\n consumed: 1,\n key,\n value: true,\n };\n }\n\n const equalsIndex = token.indexOf(\"=\");\n if (equalsIndex >= 0) {\n return {\n consumed: 1,\n key: token.slice(2, equalsIndex).trim(),\n value: token.slice(equalsIndex + 1),\n };\n }\n\n if (token.startsWith(\"--no-\")) {\n return {\n consumed: 1,\n key: token.slice(5).trim(),\n value: false,\n };\n }\n\n const key = token.slice(2).trim();\n const next = args[index + 1];\n if (typeof next === \"string\" && !next.startsWith(\"-\")) {\n return {\n consumed: 2,\n key,\n value: next,\n };\n }\n return {\n consumed: 1,\n key,\n value: true,\n };\n}\n\nfunction isUnsafeLooseOptionKey(key: string): boolean {\n return UNSAFE_LOOSE_OPTION_KEYS.has(key);\n}\n\ntype LooseOptionCoercionKind = \"string\" | \"number\" | \"boolean\";\n\nfunction resolveLooseOptionCoercionKind(definition: Record<string, unknown>): LooseOptionCoercionKind | null {\n const explicitType = typeof definition.type === \"string\" ? definition.type.trim().toLowerCase() : undefined;\n const valueType = typeof definition.value_type === \"string\" ? definition.value_type.trim().toLowerCase() : undefined;\n const kind = explicitType ?? valueType;\n if (kind === \"string\") {\n return \"string\";\n }\n if (kind === \"number\" || kind === \"int\" || kind === \"integer\" || kind === \"float\") {\n return \"number\";\n }\n if (kind === \"boolean\" || kind === \"bool\") {\n return \"boolean\";\n }\n return null;\n}\n\nfunction collectLooseOptionKeys(definition: Record<string, unknown>): string[] {\n const keys: string[] = [];\n const long = typeof definition.long === \"string\" ? definition.long.trim() : \"\";\n const short = typeof definition.short === \"string\" ? definition.short.trim() : \"\";\n if (long.startsWith(\"--\")) {\n const normalized = toLooseOptionKey(long.slice(2));\n if (normalized.length > 0 && !isUnsafeLooseOptionKey(normalized)) {\n keys.push(normalized);\n }\n }\n if (short.startsWith(\"-\") && !short.startsWith(\"--\")) {\n const normalized = toLooseOptionKey(short.slice(1));\n if (normalized.length > 0 && !isUnsafeLooseOptionKey(normalized)) {\n keys.push(normalized);\n }\n }\n return [...new Set(keys)];\n}\n\nfunction resolveCanonicalLooseOptionKey(definition: Record<string, unknown>): string | null {\n const long = typeof definition.long === \"string\" ? definition.long.trim() : \"\";\n if (long.startsWith(\"--\")) {\n const normalized = toLooseOptionKey(long.slice(2));\n if (normalized.length > 0 && !isUnsafeLooseOptionKey(normalized)) {\n return normalized;\n }\n }\n return collectLooseOptionKeys(definition)[0] ?? null;\n}\n\nfunction formatLooseOptionLabel(definition: Record<string, unknown>): string | null {\n const long = typeof definition.long === \"string\" ? definition.long.trim() : \"\";\n if (long.startsWith(\"--\") && long.length > 2) {\n return long;\n }\n const short = typeof definition.short === \"string\" ? definition.short.trim() : \"\";\n if (short.startsWith(\"-\") && !short.startsWith(\"--\") && short.length > 1) {\n return short;\n }\n return null;\n}\n\nexport function validateLooseCommandOptionsWithFlagDefinitions(\n options: Record<string, unknown>,\n definitions: Array<Record<string, unknown>>,\n commandPath: string,\n): void {\n if (definitions.length === 0) {\n return;\n }\n const allowed = new Set<string>();\n const disabled = new Map<string, string>();\n const required: Array<{ keys: string[]; label: string }> = [];\n const labels: string[] = [];\n for (const definition of definitions) {\n const keys = collectLooseOptionKeys(definition);\n const label = formatLooseOptionLabel(definition);\n if (label) {\n labels.push(label);\n }\n for (const key of keys) {\n allowed.add(key);\n if (definition.enabled === false) {\n disabled.set(key, label ?? `--${key}`);\n }\n }\n if (definition.required === true && definition.enabled !== false && keys.length > 0) {\n required.push({ keys, label: label ?? `--${keys[0]}` });\n }\n }\n for (const key of Object.keys(options)) {\n if (!allowed.has(key)) {\n const expected = labels.length > 0 ? ` Expected one of: ${[...new Set(labels)].join(\", \")}.` : \"\";\n throw new PmCliError(`Unknown option '--${key}' for extension command '${commandPath}'.${expected}`, EXIT_CODE.USAGE);\n }\n const disabledLabel = disabled.get(key);\n if (disabledLabel) {\n throw new PmCliError(`Option '${disabledLabel}' is disabled for extension command '${commandPath}'.`, EXIT_CODE.USAGE);\n }\n }\n for (const entry of required) {\n if (!entry.keys.some((key) => Object.hasOwn(options, key))) {\n throw new PmCliError(`Missing required option '${entry.label}' for extension command '${commandPath}'.`, EXIT_CODE.USAGE);\n }\n }\n}\n\nfunction coerceLooseOptionValue(value: unknown, kind: LooseOptionCoercionKind): unknown {\n if (Array.isArray(value)) {\n return value.map((entry) => coerceLooseOptionValue(entry, kind));\n }\n if (kind === \"string\") {\n if (typeof value === \"string\") {\n return value;\n }\n if (value === null || value === undefined) {\n return value;\n }\n return String(value);\n }\n if (kind === \"number\") {\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? value : value;\n }\n if (typeof value === \"string\" && value.trim().length > 0) {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : value;\n }\n return value;\n }\n if (typeof value === \"boolean\") {\n return value;\n }\n if (typeof value === \"string\") {\n const normalized = value.trim().toLowerCase();\n if (normalized === \"true\" || normalized === \"1\") {\n return true;\n }\n if (normalized === \"false\" || normalized === \"0\") {\n return false;\n }\n }\n return value;\n}\n\nexport function coerceLooseCommandOptionsWithFlagDefinitions(\n options: Record<string, unknown>,\n definitions: Array<Record<string, unknown>>,\n): Record<string, unknown> {\n if (definitions.length === 0) {\n return options;\n }\n const coerced = Object.create(null) as Record<string, unknown>;\n for (const [key, value] of Object.entries(options)) {\n coerced[key] = value;\n }\n for (const definition of definitions) {\n const canonical = resolveCanonicalLooseOptionKey(definition);\n if (!canonical) {\n continue;\n }\n for (const key of collectLooseOptionKeys(definition)) {\n if (key === canonical || !Object.hasOwn(coerced, key)) {\n continue;\n }\n if (Object.hasOwn(coerced, canonical)) {\n continue;\n }\n coerced[canonical] = coerced[key];\n delete coerced[key];\n }\n const kind = resolveLooseOptionCoercionKind(definition);\n if (!kind) {\n continue;\n }\n if (!Object.hasOwn(coerced, canonical)) {\n continue;\n }\n coerced[canonical] = coerceLooseOptionValue(coerced[canonical], kind);\n }\n return coerced;\n}\n\nexport function parseLooseCommandOptions(args: string[]): Record<string, unknown> {\n const options = Object.create(null) as Record<string, unknown>;\n let index = 0;\n while (index < args.length) {\n const parsed = parseLooseOptionToken(args, index);\n if (!parsed) {\n index += 1;\n continue;\n }\n\n const normalizedKey = toLooseOptionKey(parsed.key);\n if (normalizedKey.length === 0 || isUnsafeLooseOptionKey(normalizedKey)) {\n index += parsed.consumed;\n continue;\n }\n setLooseOptionValue(options, normalizedKey, parsed.value);\n index += parsed.consumed;\n }\n return options;\n}\n"],"names":[],"mappings":"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","debugId":"d166f748-b8c5-5837-a22e-8a0e34b28c72"}
|
package/dist/cli/guide-topics.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
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]="67af0348-fadf-555c-bcd1-6a76796a688d")}catch(e){}}();
|
|
1
3
|
function normalizeTopicToken(value) {
|
|
2
4
|
return value.trim().toLowerCase().replaceAll("_", "-");
|
|
3
5
|
}
|
|
@@ -282,4 +284,5 @@ export function resolveGuideTopic(rawTopic) {
|
|
|
282
284
|
}
|
|
283
285
|
return TOPIC_BY_TOKEN.get(normalized) ?? null;
|
|
284
286
|
}
|
|
285
|
-
//# sourceMappingURL=guide-topics.js.map
|
|
287
|
+
//# sourceMappingURL=guide-topics.js.map
|
|
288
|
+
//# debugId=67af0348-fadf-555c-bcd1-6a76796a688d
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guide-topics.js","sourceRoot":"/","sources":["cli/guide-topics.ts"],"names":[],"mappings":"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","sourcesContent":["export interface GuideDocReference {\n path: string;\n purpose: string;\n optional?: boolean;\n}\n\nexport interface GuideWorkflowTemplate {\n name: string;\n goal: string;\n prompt: string;\n commands: string[];\n}\n\nexport interface GuideTopicDefinition {\n id: string;\n aliases: string[];\n title: string;\n summary: string;\n intent: string;\n commands: string[];\n workflows: GuideWorkflowTemplate[];\n docs: GuideDocReference[];\n related: string[];\n}\n\nfunction normalizeTopicToken(value: string): string {\n return value.trim().toLowerCase().replaceAll(\"_\", \"-\");\n}\n\nconst GUIDE_TOPICS: GuideTopicDefinition[] = [\n {\n id: \"quickstart\",\n aliases: [\"start\", \"getting-started\", \"bootstrap\"],\n title: \"Quickstart\",\n summary: \"Initialize a tracker and run the shortest safe plan -> execute -> close loop.\",\n intent: \"Use this when a human or agent needs to start productive work quickly with minimal context load.\",\n commands: [\n \"pm init\",\n \"pm context --limit 10\",\n \"pm list-open --limit 20\",\n \"pm create --create-mode progressive --title \\\"...\\\" --description \\\"...\\\" --type Task\",\n \"pm claim <ID>\",\n \"pm update <ID> --status in_progress\",\n \"pm close <ID> \\\"<reason with evidence>\\\" --validate-close warn\",\n ],\n workflows: [\n {\n name: \"Start Session Safely\",\n goal: \"Bootstrap without mutating unrelated state.\",\n prompt:\n \"You are bootstrapping pm work. Use a token-efficient context snapshot first, then select one open item, claim it, and only then mutate.\",\n commands: [\"pm context --limit 10\", \"pm list-open --limit 20\", \"pm claim <ID>\"],\n },\n ],\n docs: [\n { path: \"README.md\", purpose: \"High-level project and install entrypoint.\" },\n { path: \"docs/QUICKSTART.md\", purpose: \"Short setup and first-command walkthrough.\" },\n { path: \"docs/COMMANDS.md\", purpose: \"Task-oriented command recipes.\" },\n ],\n related: [\"commands\", \"workflows\", \"release\"],\n },\n {\n id: \"commands\",\n aliases: [\"cli\", \"operations\", \"reference\"],\n title: \"CLI Command Routing\",\n summary: \"Find the right command family quickly and use command-scoped help/contracts output.\",\n intent: \"Use this when selecting command paths, flags, and output formats for implementation or automation.\",\n commands: [\n \"pm --help\",\n \"pm <command> --help\",\n \"pm <command> --help --explain\",\n \"pm contracts --command <command> --flags-only\",\n \"pm contracts --command <command> --availability-only --runtime-only\",\n \"pm completion <bash|zsh|fish>\",\n ],\n workflows: [\n {\n name: \"Flag Discovery\",\n goal: \"Resolve command flags deterministically before mutations.\",\n prompt:\n \"You are preparing to run a command. Use help and contracts surfaces to verify required/optional flags before execution.\",\n commands: [\"pm <command> --help --explain\", \"pm contracts --command <command> --flags-only\"],\n },\n ],\n docs: [\n { path: \"docs/COMMANDS.md\", purpose: \"Command grouping and examples.\" },\n { path: \"docs/CONFIGURATION.md\", purpose: \"Project/global settings and policy controls.\" },\n { path: \"docs/TESTING.md\", purpose: \"Linked-test orchestration and safety guidance.\" },\n ],\n related: [\"quickstart\", \"workflows\", \"sdk\", \"extensions\"],\n },\n {\n id: \"workflows\",\n aliases: [\"developer\", \"maintainer\", \"agent\"],\n title: \"Developer and Agent Workflows\",\n summary: \"Apply canonical claim -> execute -> verify -> close workflows with append-only evidence.\",\n intent: \"Use this for day-to-day coding-agent execution loops and handoff-safe updates.\",\n commands: [\n \"pm claim <ID>\",\n \"pm update <ID> --status in_progress\",\n \"pm files <ID> --add ...\",\n \"pm test <ID> --add ...\",\n \"pm comments <ID> \\\"...\\\"\",\n \"pm validate --check-resolution --check-history-drift\",\n \"pm release <ID>\",\n ],\n workflows: [\n {\n name: \"Execution Loop\",\n goal: \"Keep code, tests, and tracker evidence synchronized.\",\n prompt:\n \"You are implementing a scoped change. Claim first, link files/tests/docs as you go, append evidence comments, and close only after validation.\",\n commands: [\n \"pm claim <ID>\",\n \"pm update <ID> --status in_progress\",\n \"pm files <ID> --add path=<file>,scope=project\",\n \"pm test <ID> --run --progress\",\n \"pm close <ID> \\\"<evidence>\\\" --validate-close warn\",\n ],\n },\n ],\n docs: [\n { path: \"AGENTS.md\", purpose: \"Repository operating rules and required workflow.\" },\n { path: \"docs/AGENT_GUIDE.md\", purpose: \"Agent-oriented usage and context strategy.\" },\n { path: \"docs/TESTING.md\", purpose: \"Sandbox-safe test execution rules.\" },\n ],\n related: [\"quickstart\", \"commands\", \"skills\"],\n },\n {\n id: \"sdk\",\n aliases: [\"api\", \"typescript-sdk\"],\n title: \"SDK and Integrations\",\n summary: \"Use the published SDK surface for extension authoring and contract-safe integrations.\",\n intent: \"Use this when building or reviewing programmatic integrations against @unbrained/pm-cli/sdk.\",\n commands: [\n \"pm contracts --schema-only\",\n \"pm contracts --command extension --flags-only\",\n \"pm contracts --runtime-only --availability-only\",\n ],\n workflows: [\n {\n name: \"Integration Contract Check\",\n goal: \"Confirm action schemas and runtime availability before coding.\",\n prompt:\n \"You are wiring an integration. Capture schema + runtime availability first, then map your adapter payload fields to contract keys.\",\n commands: [\n \"pm contracts --schema-only\",\n \"pm contracts --availability-only --runtime-only\",\n \"pm contracts --command <command> --flags-only\",\n ],\n },\n ],\n docs: [\n { path: \"docs/SDK.md\", purpose: \"Public SDK exports and extension authoring references.\" },\n { path: \"docs/ARCHITECTURE.md\", purpose: \"Core runtime composition and extension load flow.\" },\n ],\n related: [\"extensions\", \"commands\"],\n },\n {\n id: \"extensions\",\n aliases: [\"plugins\", \"extension-authoring\", \"packages\", \"package-authoring\"],\n title: \"Packages and Extensions\",\n summary: \"Install, author, and diagnose packages/extensions with deterministic lifecycle controls.\",\n intent: \"Use this for package management, extension capability registration, and runtime diagnostics.\",\n commands: [\n \"pm install <target> --project\",\n \"pm upgrade --dry-run\",\n \"pm package explore --project\",\n \"pm package manage --detail summary\",\n \"pm package doctor --detail deep\",\n \"pm package activate <target> --project\",\n \"pm package deactivate <target> --project\",\n ],\n workflows: [\n {\n name: \"Lifecycle Triage\",\n goal: \"Diagnose extension state before forceful lifecycle actions.\",\n prompt:\n \"You are debugging package behavior. Inspect managed state first, then run doctor diagnostics, then apply install/adopt/activate actions.\",\n commands: [\n \"pm package explore --project\",\n \"pm package manage --detail summary\",\n \"pm package doctor --detail deep\",\n \"pm upgrade --packages-only --dry-run\",\n ],\n },\n ],\n docs: [\n { path: \"docs/EXTENSIONS.md\", purpose: \"Capability model and lifecycle command usage.\" },\n {\n path: \"docs/examples/starter-extension/README.md\",\n purpose: \"Starter extension scaffold and local development path.\",\n },\n { path: \"docs/SDK.md\", purpose: \"SDK contracts used by extension implementations.\" },\n ],\n related: [\"sdk\", \"commands\", \"skills\"],\n },\n {\n id: \"skills\",\n aliases: [\"agent-skills\", \"agentskills\"],\n title: \"Agent Skills\",\n summary: \"Skill bundles for developer, user, extensions, and sdk workflows aligned to the current CLI.\",\n intent: \"Use this when an agent needs reproducible prompts/workflows with strict compatibility metadata.\",\n commands: [\n \"pm guide skills --depth deep\",\n \"pm contracts --command guide --flags-only\",\n \"pm validate --check-command-references\",\n ],\n workflows: [\n {\n name: \"Skill Selection\",\n goal: \"Pick the narrowest compatible skill first to minimize context usage.\",\n prompt:\n \"Select a pm skill based on the task intent, then execute only the workflow section needed for the current change.\",\n commands: [\"pm guide skills\", \"pm guide skills --depth deep\"],\n },\n ],\n docs: [\n { path: \"docs/AGENT_GUIDE.md\", purpose: \"Agent-first usage and context model.\" },\n { path: \"docs/README.md\", purpose: \"Documentation routing with progressive disclosure.\" },\n { path: \".agents/skills/README.md\", purpose: \"Agent skills index and routing overview.\" },\n { path: \".agents/skills/pm-developer/SKILL.md\", purpose: \"Developer-oriented pm skill workflow.\" },\n { path: \".agents/skills/pm-user/SKILL.md\", purpose: \"User/operator pm skill workflow.\" },\n { path: \".agents/skills/pm-extensions/SKILL.md\", purpose: \"Extension-focused pm skill workflow.\" },\n { path: \".agents/skills/pm-sdk/SKILL.md\", purpose: \"SDK integration pm skill workflow.\" },\n ],\n related: [\"workflows\", \"harnesses\", \"commands\"],\n },\n {\n id: \"harnesses\",\n aliases: [\"compatibility\", \"agent-compatibility\"],\n title: \"Agent Harness Compatibility\",\n summary: \"Cross-harness compatibility guidance for docs routing.\",\n intent: \"Use this when adapting pm docs and SDK contracts for an external automation harness.\",\n commands: [\"pm guide skills\", \"pm guide commands\", \"pm contracts --runtime-only --availability-only\"],\n workflows: [\n {\n name: \"Harness Mapping\",\n goal: \"Route each harness to the same canonical skill/docs sources.\",\n prompt:\n \"Map harness-specific entrypoints to the same pm guide topics and .agents/skills workflows without adding runtime harness-specific code.\",\n commands: [\"pm guide harnesses --depth standard\", \"pm guide skills --depth deep\"],\n },\n ],\n docs: [\n { path: \"docs/AGENT_GUIDE.md\", purpose: \"Agent context and output-mode conventions.\" },\n { path: \"docs/README.md\", purpose: \"Single-source documentation routing entrypoint.\" },\n { path: \".agents/skills/HARNESS_COMPATIBILITY.md\", purpose: \"Harness compatibility matrix and usage notes.\" },\n ],\n related: [\"skills\", \"workflows\"],\n },\n {\n id: \"release\",\n aliases: [\"gates\", \"ship\", \"release-readiness\"],\n title: \"Release and Staleness Gates\",\n summary: \"Run release gates and docs/skills freshness checks before publishing.\",\n intent: \"Use this when validating release readiness and preventing docs/skills drift.\",\n commands: [\n \"pnpm build\",\n \"pnpm test:coverage\",\n \"pnpm quality:static\",\n \"node scripts/release/run-gates.mjs --telemetry-mode best-effort\",\n \"pnpm security:scan\",\n ],\n workflows: [\n {\n name: \"Pre-Release Gate Sweep\",\n goal: \"Ensure code, docs, and skills are all green before publish.\",\n prompt:\n \"Run release gates in deterministic order and treat docs/skills freshness failures as release blockers.\",\n commands: [\n \"pnpm build\",\n \"pnpm test:coverage\",\n \"node scripts/release/run-gates.mjs --telemetry-mode best-effort\",\n ],\n },\n ],\n docs: [\n { path: \"docs/RELEASING.md\", purpose: \"Release flow and safety checks.\" },\n { path: \"CHANGELOG.md\", purpose: \"Versioned release history and unreleased notes.\" },\n { path: \"scripts/release/run-gates.mjs\", purpose: \"Source of truth for release gate ordering.\" },\n ],\n related: [\"commands\", \"skills\", \"workflows\"],\n },\n];\n\nconst TOPIC_BY_TOKEN = new Map<string, GuideTopicDefinition>();\nfor (const topic of GUIDE_TOPICS) {\n TOPIC_BY_TOKEN.set(topic.id, topic);\n for (const alias of topic.aliases) {\n TOPIC_BY_TOKEN.set(alias, topic);\n }\n}\n\nexport function listGuideTopics(): GuideTopicDefinition[] {\n return GUIDE_TOPICS.map((topic) => ({\n ...topic,\n aliases: [...topic.aliases],\n commands: [...topic.commands],\n workflows: topic.workflows.map((workflow) => ({\n ...workflow,\n commands: [...workflow.commands],\n })),\n docs: topic.docs.map((doc) => ({ ...doc })),\n related: [...topic.related],\n }));\n}\n\nexport function listGuideTopicIds(): string[] {\n return GUIDE_TOPICS.map((topic) => topic.id);\n}\n\nexport function resolveGuideTopic(rawTopic: string | undefined): GuideTopicDefinition | null {\n if (!rawTopic) {\n return null;\n }\n const normalized = normalizeTopicToken(rawTopic);\n if (!normalized) {\n return null;\n }\n return TOPIC_BY_TOKEN.get(normalized) ?? null;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"guide-topics.js","sources":["cli/guide-topics.ts"],"sourceRoot":"/","sourcesContent":["export interface GuideDocReference {\n path: string;\n purpose: string;\n optional?: boolean;\n}\n\nexport interface GuideWorkflowTemplate {\n name: string;\n goal: string;\n prompt: string;\n commands: string[];\n}\n\nexport interface GuideTopicDefinition {\n id: string;\n aliases: string[];\n title: string;\n summary: string;\n intent: string;\n commands: string[];\n workflows: GuideWorkflowTemplate[];\n docs: GuideDocReference[];\n related: string[];\n}\n\nfunction normalizeTopicToken(value: string): string {\n return value.trim().toLowerCase().replaceAll(\"_\", \"-\");\n}\n\nconst GUIDE_TOPICS: GuideTopicDefinition[] = [\n {\n id: \"quickstart\",\n aliases: [\"start\", \"getting-started\", \"bootstrap\"],\n title: \"Quickstart\",\n summary: \"Initialize a tracker and run the shortest safe plan -> execute -> close loop.\",\n intent: \"Use this when a human or agent needs to start productive work quickly with minimal context load.\",\n commands: [\n \"pm init\",\n \"pm context --limit 10\",\n \"pm list-open --limit 20\",\n \"pm create --create-mode progressive --title \\\"...\\\" --description \\\"...\\\" --type Task\",\n \"pm claim <ID>\",\n \"pm update <ID> --status in_progress\",\n \"pm close <ID> \\\"<reason with evidence>\\\" --validate-close warn\",\n ],\n workflows: [\n {\n name: \"Start Session Safely\",\n goal: \"Bootstrap without mutating unrelated state.\",\n prompt:\n \"You are bootstrapping pm work. Use a token-efficient context snapshot first, then select one open item, claim it, and only then mutate.\",\n commands: [\"pm context --limit 10\", \"pm list-open --limit 20\", \"pm claim <ID>\"],\n },\n ],\n docs: [\n { path: \"README.md\", purpose: \"High-level project and install entrypoint.\" },\n { path: \"docs/QUICKSTART.md\", purpose: \"Short setup and first-command walkthrough.\" },\n { path: \"docs/COMMANDS.md\", purpose: \"Task-oriented command recipes.\" },\n ],\n related: [\"commands\", \"workflows\", \"release\"],\n },\n {\n id: \"commands\",\n aliases: [\"cli\", \"operations\", \"reference\"],\n title: \"CLI Command Routing\",\n summary: \"Find the right command family quickly and use command-scoped help/contracts output.\",\n intent: \"Use this when selecting command paths, flags, and output formats for implementation or automation.\",\n commands: [\n \"pm --help\",\n \"pm <command> --help\",\n \"pm <command> --help --explain\",\n \"pm contracts --command <command> --flags-only\",\n \"pm contracts --command <command> --availability-only --runtime-only\",\n \"pm completion <bash|zsh|fish>\",\n ],\n workflows: [\n {\n name: \"Flag Discovery\",\n goal: \"Resolve command flags deterministically before mutations.\",\n prompt:\n \"You are preparing to run a command. Use help and contracts surfaces to verify required/optional flags before execution.\",\n commands: [\"pm <command> --help --explain\", \"pm contracts --command <command> --flags-only\"],\n },\n ],\n docs: [\n { path: \"docs/COMMANDS.md\", purpose: \"Command grouping and examples.\" },\n { path: \"docs/CONFIGURATION.md\", purpose: \"Project/global settings and policy controls.\" },\n { path: \"docs/TESTING.md\", purpose: \"Linked-test orchestration and safety guidance.\" },\n ],\n related: [\"quickstart\", \"workflows\", \"sdk\", \"extensions\"],\n },\n {\n id: \"workflows\",\n aliases: [\"developer\", \"maintainer\", \"agent\"],\n title: \"Developer and Agent Workflows\",\n summary: \"Apply canonical claim -> execute -> verify -> close workflows with append-only evidence.\",\n intent: \"Use this for day-to-day coding-agent execution loops and handoff-safe updates.\",\n commands: [\n \"pm claim <ID>\",\n \"pm update <ID> --status in_progress\",\n \"pm files <ID> --add ...\",\n \"pm test <ID> --add ...\",\n \"pm comments <ID> \\\"...\\\"\",\n \"pm validate --check-resolution --check-history-drift\",\n \"pm release <ID>\",\n ],\n workflows: [\n {\n name: \"Execution Loop\",\n goal: \"Keep code, tests, and tracker evidence synchronized.\",\n prompt:\n \"You are implementing a scoped change. Claim first, link files/tests/docs as you go, append evidence comments, and close only after validation.\",\n commands: [\n \"pm claim <ID>\",\n \"pm update <ID> --status in_progress\",\n \"pm files <ID> --add path=<file>,scope=project\",\n \"pm test <ID> --run --progress\",\n \"pm close <ID> \\\"<evidence>\\\" --validate-close warn\",\n ],\n },\n ],\n docs: [\n { path: \"AGENTS.md\", purpose: \"Repository operating rules and required workflow.\" },\n { path: \"docs/AGENT_GUIDE.md\", purpose: \"Agent-oriented usage and context strategy.\" },\n { path: \"docs/TESTING.md\", purpose: \"Sandbox-safe test execution rules.\" },\n ],\n related: [\"quickstart\", \"commands\", \"skills\"],\n },\n {\n id: \"sdk\",\n aliases: [\"api\", \"typescript-sdk\"],\n title: \"SDK and Integrations\",\n summary: \"Use the published SDK surface for extension authoring and contract-safe integrations.\",\n intent: \"Use this when building or reviewing programmatic integrations against @unbrained/pm-cli/sdk.\",\n commands: [\n \"pm contracts --schema-only\",\n \"pm contracts --command extension --flags-only\",\n \"pm contracts --runtime-only --availability-only\",\n ],\n workflows: [\n {\n name: \"Integration Contract Check\",\n goal: \"Confirm action schemas and runtime availability before coding.\",\n prompt:\n \"You are wiring an integration. Capture schema + runtime availability first, then map your adapter payload fields to contract keys.\",\n commands: [\n \"pm contracts --schema-only\",\n \"pm contracts --availability-only --runtime-only\",\n \"pm contracts --command <command> --flags-only\",\n ],\n },\n ],\n docs: [\n { path: \"docs/SDK.md\", purpose: \"Public SDK exports and extension authoring references.\" },\n { path: \"docs/ARCHITECTURE.md\", purpose: \"Core runtime composition and extension load flow.\" },\n ],\n related: [\"extensions\", \"commands\"],\n },\n {\n id: \"extensions\",\n aliases: [\"plugins\", \"extension-authoring\", \"packages\", \"package-authoring\"],\n title: \"Packages and Extensions\",\n summary: \"Install, author, and diagnose packages/extensions with deterministic lifecycle controls.\",\n intent: \"Use this for package management, extension capability registration, and runtime diagnostics.\",\n commands: [\n \"pm install <target> --project\",\n \"pm upgrade --dry-run\",\n \"pm package explore --project\",\n \"pm package manage --detail summary\",\n \"pm package doctor --detail deep\",\n \"pm package activate <target> --project\",\n \"pm package deactivate <target> --project\",\n ],\n workflows: [\n {\n name: \"Lifecycle Triage\",\n goal: \"Diagnose extension state before forceful lifecycle actions.\",\n prompt:\n \"You are debugging package behavior. Inspect managed state first, then run doctor diagnostics, then apply install/adopt/activate actions.\",\n commands: [\n \"pm package explore --project\",\n \"pm package manage --detail summary\",\n \"pm package doctor --detail deep\",\n \"pm upgrade --packages-only --dry-run\",\n ],\n },\n ],\n docs: [\n { path: \"docs/EXTENSIONS.md\", purpose: \"Capability model and lifecycle command usage.\" },\n {\n path: \"docs/examples/starter-extension/README.md\",\n purpose: \"Starter extension scaffold and local development path.\",\n },\n { path: \"docs/SDK.md\", purpose: \"SDK contracts used by extension implementations.\" },\n ],\n related: [\"sdk\", \"commands\", \"skills\"],\n },\n {\n id: \"skills\",\n aliases: [\"agent-skills\", \"agentskills\"],\n title: \"Agent Skills\",\n summary: \"Skill bundles for developer, user, extensions, and sdk workflows aligned to the current CLI.\",\n intent: \"Use this when an agent needs reproducible prompts/workflows with strict compatibility metadata.\",\n commands: [\n \"pm guide skills --depth deep\",\n \"pm contracts --command guide --flags-only\",\n \"pm validate --check-command-references\",\n ],\n workflows: [\n {\n name: \"Skill Selection\",\n goal: \"Pick the narrowest compatible skill first to minimize context usage.\",\n prompt:\n \"Select a pm skill based on the task intent, then execute only the workflow section needed for the current change.\",\n commands: [\"pm guide skills\", \"pm guide skills --depth deep\"],\n },\n ],\n docs: [\n { path: \"docs/AGENT_GUIDE.md\", purpose: \"Agent-first usage and context model.\" },\n { path: \"docs/README.md\", purpose: \"Documentation routing with progressive disclosure.\" },\n { path: \".agents/skills/README.md\", purpose: \"Agent skills index and routing overview.\" },\n { path: \".agents/skills/pm-developer/SKILL.md\", purpose: \"Developer-oriented pm skill workflow.\" },\n { path: \".agents/skills/pm-user/SKILL.md\", purpose: \"User/operator pm skill workflow.\" },\n { path: \".agents/skills/pm-extensions/SKILL.md\", purpose: \"Extension-focused pm skill workflow.\" },\n { path: \".agents/skills/pm-sdk/SKILL.md\", purpose: \"SDK integration pm skill workflow.\" },\n ],\n related: [\"workflows\", \"harnesses\", \"commands\"],\n },\n {\n id: \"harnesses\",\n aliases: [\"compatibility\", \"agent-compatibility\"],\n title: \"Agent Harness Compatibility\",\n summary: \"Cross-harness compatibility guidance for docs routing.\",\n intent: \"Use this when adapting pm docs and SDK contracts for an external automation harness.\",\n commands: [\"pm guide skills\", \"pm guide commands\", \"pm contracts --runtime-only --availability-only\"],\n workflows: [\n {\n name: \"Harness Mapping\",\n goal: \"Route each harness to the same canonical skill/docs sources.\",\n prompt:\n \"Map harness-specific entrypoints to the same pm guide topics and .agents/skills workflows without adding runtime harness-specific code.\",\n commands: [\"pm guide harnesses --depth standard\", \"pm guide skills --depth deep\"],\n },\n ],\n docs: [\n { path: \"docs/AGENT_GUIDE.md\", purpose: \"Agent context and output-mode conventions.\" },\n { path: \"docs/README.md\", purpose: \"Single-source documentation routing entrypoint.\" },\n { path: \".agents/skills/HARNESS_COMPATIBILITY.md\", purpose: \"Harness compatibility matrix and usage notes.\" },\n ],\n related: [\"skills\", \"workflows\"],\n },\n {\n id: \"release\",\n aliases: [\"gates\", \"ship\", \"release-readiness\"],\n title: \"Release and Staleness Gates\",\n summary: \"Run release gates and docs/skills freshness checks before publishing.\",\n intent: \"Use this when validating release readiness and preventing docs/skills drift.\",\n commands: [\n \"pnpm build\",\n \"pnpm test:coverage\",\n \"pnpm quality:static\",\n \"node scripts/release/run-gates.mjs --telemetry-mode best-effort\",\n \"pnpm security:scan\",\n ],\n workflows: [\n {\n name: \"Pre-Release Gate Sweep\",\n goal: \"Ensure code, docs, and skills are all green before publish.\",\n prompt:\n \"Run release gates in deterministic order and treat docs/skills freshness failures as release blockers.\",\n commands: [\n \"pnpm build\",\n \"pnpm test:coverage\",\n \"node scripts/release/run-gates.mjs --telemetry-mode best-effort\",\n ],\n },\n ],\n docs: [\n { path: \"docs/RELEASING.md\", purpose: \"Release flow and safety checks.\" },\n { path: \"CHANGELOG.md\", purpose: \"Versioned release history and unreleased notes.\" },\n { path: \"scripts/release/run-gates.mjs\", purpose: \"Source of truth for release gate ordering.\" },\n ],\n related: [\"commands\", \"skills\", \"workflows\"],\n },\n];\n\nconst TOPIC_BY_TOKEN = new Map<string, GuideTopicDefinition>();\nfor (const topic of GUIDE_TOPICS) {\n TOPIC_BY_TOKEN.set(topic.id, topic);\n for (const alias of topic.aliases) {\n TOPIC_BY_TOKEN.set(alias, topic);\n }\n}\n\nexport function listGuideTopics(): GuideTopicDefinition[] {\n return GUIDE_TOPICS.map((topic) => ({\n ...topic,\n aliases: [...topic.aliases],\n commands: [...topic.commands],\n workflows: topic.workflows.map((workflow) => ({\n ...workflow,\n commands: [...workflow.commands],\n })),\n docs: topic.docs.map((doc) => ({ ...doc })),\n related: [...topic.related],\n }));\n}\n\nexport function listGuideTopicIds(): string[] {\n return GUIDE_TOPICS.map((topic) => topic.id);\n}\n\nexport function resolveGuideTopic(rawTopic: string | undefined): GuideTopicDefinition | null {\n if (!rawTopic) {\n return null;\n }\n const normalized = normalizeTopicToken(rawTopic);\n if (!normalized) {\n return null;\n }\n return TOPIC_BY_TOKEN.get(normalized) ?? null;\n}\n"],"names":[],"mappings":"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","debugId":"67af0348-fadf-555c-bcd1-6a76796a688d"}
|
|
@@ -16,5 +16,4 @@ export declare function resolveHelpDetailMode(argv: string[]): HelpDetailMode;
|
|
|
16
16
|
export declare const ROOT_HELP_BUNDLE: HelpBundle;
|
|
17
17
|
export declare function resolveHelpBundleForPath(commandPath: string | undefined): HelpBundle;
|
|
18
18
|
export declare function resolveHelpNarrative(commandPath: string | undefined, detailMode: HelpDetailMode): HelpNarrative;
|
|
19
|
-
export declare function listDocumentedHelpPaths(): string[];
|
|
20
19
|
export declare function attachRichHelpText(program: Command, argv?: string[]): void;
|
package/dist/cli/help-content.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
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]="87ab8982-4eaf-5b48-88af-96ff4450ab0f")}catch(e){}}();
|
|
1
3
|
function renderCompactHelpBundle(bundle) {
|
|
2
4
|
const lines = [
|
|
3
5
|
"",
|
|
@@ -75,10 +77,18 @@ export function resolveHelpDetailMode(argv) {
|
|
|
75
77
|
const HELP_BY_COMMAND_PATH = {
|
|
76
78
|
init: {
|
|
77
79
|
why: "Bootstraps tracker storage and settings so all other commands can run safely.",
|
|
78
|
-
examples: [
|
|
80
|
+
examples: [
|
|
81
|
+
"pm init",
|
|
82
|
+
"pm init acme",
|
|
83
|
+
"pm init --preset minimal",
|
|
84
|
+
"pm init --agent-guidance add",
|
|
85
|
+
"pm init --defaults --with-packages",
|
|
86
|
+
],
|
|
79
87
|
tips: [
|
|
80
88
|
"Run this once per repository before create/list/update commands.",
|
|
81
89
|
"Use --preset for non-interactive automation; omit it in a TTY to use the setup wizard.",
|
|
90
|
+
"Use --agent-guidance add to inject compact AGENTS/CLAUDE workflow guidance, or --agent-guidance status to inspect missing guidance without modifying files.",
|
|
91
|
+
"Use --with-packages when agents need bundled commands such as calendar and templates available immediately.",
|
|
82
92
|
],
|
|
83
93
|
},
|
|
84
94
|
config: {
|
|
@@ -165,7 +175,7 @@ const HELP_BY_COMMAND_PATH = {
|
|
|
165
175
|
examples: [
|
|
166
176
|
'pm create --title "Harden lock flow" --description "Improve stale lock handling" --type Task --status open --priority 1 --message "Create lock hardening task" --create-mode progressive',
|
|
167
177
|
'pm create --title "Weekly planning sync" --description "Recurring coordination meeting" --type Meeting --schedule-preset lightweight',
|
|
168
|
-
'pm create --title "Asset: Hero model" --description "Track playable model asset" --type Asset --status open --priority 1 --message "Create asset item" --type-option category=Character --dep "id=pm-epic01,kind=parent,author=codex-agent,created_at=now" --comment "author=codex-agent,created_at=now,text=Why this asset item exists." --note "author=codex-agent,created_at=now,text=Initial implementation note." --learning "author=codex-agent,created_at=now,text=Durable lesson placeholder." --file "path=src/assets/hero.glb,
|
|
178
|
+
'pm create --title "Asset: Hero model" --description "Track playable model asset" --type Asset --status open --priority 1 --message "Create asset item" --type-option category=Character --dep "id=pm-epic01,kind=parent,author=codex-agent,created_at=now" --comment "author=codex-agent,created_at=now,text=Why this asset item exists." --note "author=codex-agent,created_at=now,text=Initial implementation note." --learning "author=codex-agent,created_at=now,text=Durable lesson placeholder." --file "path=src/assets/hero.glb,note=tracked asset" --test "command=node scripts/run-tests.mjs test,timeout_seconds=240" --doc "path=README.md,note=asset docs"',
|
|
169
179
|
],
|
|
170
180
|
tips: [
|
|
171
181
|
"Use --schedule-preset lightweight for Reminder/Meeting/Event when you want minimal required create inputs.",
|
|
@@ -190,7 +200,7 @@ const HELP_BY_COMMAND_PATH = {
|
|
|
190
200
|
why: "Bulk-updates matched item sets with dry-run previews and rollback checkpoints for safe large-scale metadata changes.",
|
|
191
201
|
examples: [
|
|
192
202
|
"pm update-many --filter-status open --status in_progress --dry-run",
|
|
193
|
-
'pm update-many --filter-tag wave:7 --replace-tests --test "command=node scripts/run-tests.mjs test -- tests/core/history.spec.ts,
|
|
203
|
+
'pm update-many --filter-tag wave:7 --replace-tests --test "command=node scripts/run-tests.mjs test -- tests/core/history.spec.ts,timeout_seconds=240"',
|
|
194
204
|
'pm update-many --filter-tag governance --reviewer maintainer-review --message "Normalize reviewer metadata"',
|
|
195
205
|
"pm update-many --rollback ckpt-abc123",
|
|
196
206
|
],
|
|
@@ -291,6 +301,7 @@ const HELP_BY_COMMAND_PATH = {
|
|
|
291
301
|
guide: {
|
|
292
302
|
why: "Routes local progressive-disclosure documentation so agents can fetch only the context they need.",
|
|
293
303
|
examples: [
|
|
304
|
+
"pm install guide-shell --project",
|
|
294
305
|
"pm guide",
|
|
295
306
|
"pm guide quickstart",
|
|
296
307
|
"pm guide commands --depth standard",
|
|
@@ -326,7 +337,7 @@ const HELP_BY_COMMAND_PATH = {
|
|
|
326
337
|
"pm context --from +0d --to +7d --format markdown --depth deep",
|
|
327
338
|
],
|
|
328
339
|
tips: [
|
|
329
|
-
"High-level focus contains Epics/Features and low-level focus contains Tasks/Issues/Chores/Event/Reminder/Milestone/Meeting.",
|
|
340
|
+
"High-level focus contains Epics/Features and low-level focus contains Tasks/Issues/Chores/Decisions/Event/Reminder/Milestone/Meeting/Plan.",
|
|
330
341
|
"When no open or in-progress work exists, blocked items are shown as fallback context.",
|
|
331
342
|
"--depth brief (default) shows focus+agenda; standard adds hierarchy/activity/progress/workload; deep adds blockers/files/staleness/tests.",
|
|
332
343
|
"--section overrides --depth and selects specific sections: hierarchy, activity, progress, blockers, files, workload, staleness, tests.",
|
|
@@ -354,18 +365,27 @@ const HELP_BY_COMMAND_PATH = {
|
|
|
354
365
|
],
|
|
355
366
|
},
|
|
356
367
|
get: {
|
|
357
|
-
why: "Shows
|
|
358
|
-
examples: [
|
|
359
|
-
|
|
368
|
+
why: "Shows details for one item by ID, with optional lower-token projections for agent loops.",
|
|
369
|
+
examples: [
|
|
370
|
+
"pm get pm-a1b2",
|
|
371
|
+
"pm get pm-a1b2 --depth brief --json",
|
|
372
|
+
"pm get pm-a1b2 --fields id,title,status,parent,type --json",
|
|
373
|
+
],
|
|
374
|
+
tips: [
|
|
375
|
+
"Default depth is deep for backward compatibility; use brief for metadata-only checks and standard for body plus linked artifacts without append-only logs.",
|
|
376
|
+
"Use --fields for the smallest deterministic item metadata payload when an agent only needs specific fields.",
|
|
377
|
+
"JSON output shape is { item, body, linked, claim_state }; body is top-level (not item.body).",
|
|
378
|
+
],
|
|
360
379
|
},
|
|
361
380
|
history: {
|
|
362
381
|
why: "Inspects item mutation timeline and audit trail.",
|
|
363
|
-
examples: ["pm history pm-a1b2 --limit 20"],
|
|
382
|
+
examples: ["pm history pm-a1b2 --limit 20", "pm history pm-a1b2 --full --verify"],
|
|
364
383
|
},
|
|
365
384
|
activity: {
|
|
366
385
|
why: "Reviews recent tracker-wide activity across items.",
|
|
367
386
|
examples: [
|
|
368
387
|
"pm activity --limit 50",
|
|
388
|
+
"pm activity --full --id pm-a1b2 --limit 50",
|
|
369
389
|
"pm activity --id pm-a1b2 --op update --author codex-agent --from -7d --to now",
|
|
370
390
|
"pm activity --json --stream rows --limit 200",
|
|
371
391
|
],
|
|
@@ -450,21 +470,21 @@ const HELP_BY_COMMAND_PATH = {
|
|
|
450
470
|
files: {
|
|
451
471
|
why: "Associates changed source files with tracker items for reproducibility.",
|
|
452
472
|
examples: [
|
|
453
|
-
'pm files pm-a1b2 --add "path=src/cli/main.ts,
|
|
473
|
+
'pm files pm-a1b2 --add "path=src/cli/main.ts,note=help orchestration"',
|
|
454
474
|
"pm files discover pm-a1b2",
|
|
455
475
|
'pm files discover pm-a1b2 --apply --note "discovered from item text"',
|
|
456
476
|
],
|
|
457
477
|
},
|
|
458
478
|
docs: {
|
|
459
479
|
why: "Associates relevant documentation paths with tracker items.",
|
|
460
|
-
examples: ['pm docs pm-a1b2 --add "path=README.md,
|
|
480
|
+
examples: ['pm docs pm-a1b2 --add "path=README.md,note=user-facing command guidance"'],
|
|
461
481
|
},
|
|
462
482
|
test: {
|
|
463
483
|
why: "Links test commands/paths and optionally executes them for one item.",
|
|
464
484
|
examples: [
|
|
465
|
-
'pm test pm-a1b2 --add "command=node scripts/run-tests.mjs test -- tests/unit/output.spec.ts,
|
|
466
|
-
'pm test pm-a1b2 --add "command=pm list-all --type Task --limit 200,
|
|
467
|
-
'pm test pm-a1b2 --add "command=pm list-all --type Task --limit 200,
|
|
485
|
+
'pm test pm-a1b2 --add "command=node scripts/run-tests.mjs test -- tests/unit/output.spec.ts,timeout_seconds=2400"',
|
|
486
|
+
'pm test pm-a1b2 --add "command=pm list-all --type Task --limit 200,assert_stdout_contains=count:,assert_stdout_regex=count:\\s+\\d+"',
|
|
487
|
+
'pm test pm-a1b2 --add "command=pm list-all --type Task --limit 200,pm_context_mode=auto"',
|
|
468
488
|
"pm test pm-a1b2 --run --timeout 2400 --env-set PORT=0 --env-clear PLAYWRIGHT_BASE_URL --shared-host-safe --pm-context tracker --fail-on-context-mismatch --fail-on-skipped",
|
|
469
489
|
"pm test pm-a1b2 --run --timeout 2400 --pm-context auto",
|
|
470
490
|
"pm test pm-a1b2 --run --background --timeout 2400 --progress",
|
|
@@ -496,7 +516,13 @@ const HELP_BY_COMMAND_PATH = {
|
|
|
496
516
|
},
|
|
497
517
|
health: {
|
|
498
518
|
why: "Validates tracker/runtime health including extension triage, migration, and integrity diagnostics.",
|
|
499
|
-
examples: [
|
|
519
|
+
examples: [
|
|
520
|
+
"pm health",
|
|
521
|
+
"pm health --check-only --summary --json",
|
|
522
|
+
"pm health --brief --json",
|
|
523
|
+
"pm health --no-refresh",
|
|
524
|
+
"pm health --refresh-vectors",
|
|
525
|
+
],
|
|
500
526
|
},
|
|
501
527
|
validate: {
|
|
502
528
|
why: "Runs standalone metadata, resolution, lifecycle (including dependency-cycle diagnostics), linked-file, linked-command reference, and history drift checks with default remediation hints for resolution gaps.",
|
|
@@ -512,8 +538,8 @@ const HELP_BY_COMMAND_PATH = {
|
|
|
512
538
|
tips: ["Resolution-gap warnings include default `pm update <id> ...` remediation hint templates in check details."],
|
|
513
539
|
},
|
|
514
540
|
gc: {
|
|
515
|
-
why: "
|
|
516
|
-
examples: ["pm gc"],
|
|
541
|
+
why: "Deletes optional cache artifacts by default to keep local tracker state tidy; use --dry-run to preview targets without deleting files.",
|
|
542
|
+
examples: ["pm gc --dry-run", "pm gc"],
|
|
517
543
|
},
|
|
518
544
|
claim: {
|
|
519
545
|
why: "Claims an item to signal active ownership and reduce conflicts.",
|
|
@@ -565,13 +591,13 @@ export const ROOT_HELP_BUNDLE = {
|
|
|
565
591
|
why: "Provides deterministic project management workflows for humans and coding agents.",
|
|
566
592
|
examples: [
|
|
567
593
|
"pm init",
|
|
568
|
-
"pm guide",
|
|
594
|
+
"pm install guide-shell --project",
|
|
569
595
|
"pm list-open --limit 10",
|
|
570
596
|
'pm create --title "..." --description "..." --type Task --status open --priority 1 --message "..." --create-mode progressive',
|
|
571
597
|
],
|
|
572
598
|
tips: [
|
|
573
599
|
"Use <command> --help for command-specific guidance and examples.",
|
|
574
|
-
"
|
|
600
|
+
"Install guide-shell before using pm guide for local docs and skills routing.",
|
|
575
601
|
"Use --json for machine parsing and integration flows.",
|
|
576
602
|
"Use --no-pager to force direct help output in CI and other non-interactive shells.",
|
|
577
603
|
],
|
|
@@ -599,9 +625,6 @@ export function resolveHelpNarrative(commandPath, detailMode) {
|
|
|
599
625
|
detail_mode: detailMode,
|
|
600
626
|
};
|
|
601
627
|
}
|
|
602
|
-
export function listDocumentedHelpPaths() {
|
|
603
|
-
return Object.keys(HELP_BY_COMMAND_PATH).sort((left, right) => left.localeCompare(right));
|
|
604
|
-
}
|
|
605
628
|
export function attachRichHelpText(program, argv = process.argv.slice(2)) {
|
|
606
629
|
const detailMode = resolveHelpDetailMode(argv);
|
|
607
630
|
program.addHelpText("after", renderHelpBundle(ROOT_HELP_BUNDLE, detailMode));
|
|
@@ -609,4 +632,5 @@ export function attachRichHelpText(program, argv = process.argv.slice(2)) {
|
|
|
609
632
|
attachBundleByPath(program, commandPath, bundle, detailMode);
|
|
610
633
|
}
|
|
611
634
|
}
|
|
612
|
-
//# sourceMappingURL=help-content.js.map
|
|
635
|
+
//# sourceMappingURL=help-content.js.map
|
|
636
|
+
//# debugId=87ab8982-4eaf-5b48-88af-96ff4450ab0f
|