@unbrained/pm-cli 2026.5.14 → 2026.5.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/.claude-plugin/marketplace.json +4 -4
  2. package/AGENTS.md +78 -457
  3. package/CHANGELOG.md +11 -0
  4. package/CONTRIBUTING.md +1 -0
  5. package/README.md +6 -5
  6. package/dist/cli/argv-utils.js +4 -1
  7. package/dist/cli/argv-utils.js.map +1 -1
  8. package/dist/cli/bootstrap-args.js +4 -1
  9. package/dist/cli/bootstrap-args.js.map +1 -1
  10. package/dist/cli/commander-usage.js +5 -1
  11. package/dist/cli/commander-usage.js.map +1 -1
  12. package/dist/cli/commands/activity.js +4 -1
  13. package/dist/cli/commands/activity.js.map +1 -1
  14. package/dist/cli/commands/aggregate.js +5 -2
  15. package/dist/cli/commands/aggregate.js.map +1 -1
  16. package/dist/cli/commands/append.js +4 -1
  17. package/dist/cli/commands/append.js.map +1 -1
  18. package/dist/cli/commands/calendar.js +4 -1
  19. package/dist/cli/commands/calendar.js.map +1 -1
  20. package/dist/cli/commands/claim.d.ts +3 -0
  21. package/dist/cli/commands/claim.js +19 -3
  22. package/dist/cli/commands/claim.js.map +1 -1
  23. package/dist/cli/commands/close.js +4 -1
  24. package/dist/cli/commands/close.js.map +1 -1
  25. package/dist/cli/commands/comments-audit.js +4 -1
  26. package/dist/cli/commands/comments-audit.js.map +1 -1
  27. package/dist/cli/commands/comments.js +4 -1
  28. package/dist/cli/commands/comments.js.map +1 -1
  29. package/dist/cli/commands/completion.js +98 -2
  30. package/dist/cli/commands/completion.js.map +1 -1
  31. package/dist/cli/commands/config.js +4 -1
  32. package/dist/cli/commands/config.js.map +1 -1
  33. package/dist/cli/commands/context.js +19 -5
  34. package/dist/cli/commands/context.js.map +1 -1
  35. package/dist/cli/commands/contracts.d.ts +9 -0
  36. package/dist/cli/commands/contracts.js +152 -34
  37. package/dist/cli/commands/contracts.js.map +1 -1
  38. package/dist/cli/commands/create.js +30 -6
  39. package/dist/cli/commands/create.js.map +1 -1
  40. package/dist/cli/commands/dedupe-audit.js +4 -1
  41. package/dist/cli/commands/dedupe-audit.js.map +1 -1
  42. package/dist/cli/commands/delete.js +4 -1
  43. package/dist/cli/commands/delete.js.map +1 -1
  44. package/dist/cli/commands/deps.js +4 -1
  45. package/dist/cli/commands/deps.js.map +1 -1
  46. package/dist/cli/commands/docs.js +4 -1
  47. package/dist/cli/commands/docs.js.map +1 -1
  48. package/dist/cli/commands/extension.d.ts +2 -1
  49. package/dist/cli/commands/extension.js +123 -33
  50. package/dist/cli/commands/extension.js.map +1 -1
  51. package/dist/cli/commands/files.js +4 -1
  52. package/dist/cli/commands/files.js.map +1 -1
  53. package/dist/cli/commands/gc.js +4 -1
  54. package/dist/cli/commands/gc.js.map +1 -1
  55. package/dist/cli/commands/get.d.ts +7 -3
  56. package/dist/cli/commands/get.js +91 -18
  57. package/dist/cli/commands/get.js.map +1 -1
  58. package/dist/cli/commands/guide.js +6 -8
  59. package/dist/cli/commands/guide.js.map +1 -1
  60. package/dist/cli/commands/health.d.ts +4 -0
  61. package/dist/cli/commands/health.js +31 -8
  62. package/dist/cli/commands/health.js.map +1 -1
  63. package/dist/cli/commands/history-redact.d.ts +42 -0
  64. package/dist/cli/commands/history-redact.js +559 -0
  65. package/dist/cli/commands/history-redact.js.map +1 -0
  66. package/dist/cli/commands/history.d.ts +4 -0
  67. package/dist/cli/commands/history.js +14 -3
  68. package/dist/cli/commands/history.js.map +1 -1
  69. package/dist/cli/commands/index.d.ts +2 -0
  70. package/dist/cli/commands/index.js +6 -1
  71. package/dist/cli/commands/index.js.map +1 -1
  72. package/dist/cli/commands/init-agent-guidance.d.ts +31 -0
  73. package/dist/cli/commands/init-agent-guidance.js +336 -0
  74. package/dist/cli/commands/init-agent-guidance.js.map +1 -0
  75. package/dist/cli/commands/init.d.ts +14 -0
  76. package/dist/cli/commands/init.js +75 -1
  77. package/dist/cli/commands/init.js.map +1 -1
  78. package/dist/cli/commands/learnings.js +4 -1
  79. package/dist/cli/commands/learnings.js.map +1 -1
  80. package/dist/cli/commands/list.d.ts +1 -0
  81. package/dist/cli/commands/list.js +42 -18
  82. package/dist/cli/commands/list.js.map +1 -1
  83. package/dist/cli/commands/metadata-normalizers.js +4 -1
  84. package/dist/cli/commands/metadata-normalizers.js.map +1 -1
  85. package/dist/cli/commands/normalize.js +4 -1
  86. package/dist/cli/commands/normalize.js.map +1 -1
  87. package/dist/cli/commands/notes.js +4 -1
  88. package/dist/cli/commands/notes.js.map +1 -1
  89. package/dist/cli/commands/plan.d.ts +118 -0
  90. package/dist/cli/commands/plan.js +975 -0
  91. package/dist/cli/commands/plan.js.map +1 -0
  92. package/dist/cli/commands/reindex.js +4 -1
  93. package/dist/cli/commands/reindex.js.map +1 -1
  94. package/dist/cli/commands/restore.js +4 -1
  95. package/dist/cli/commands/restore.js.map +1 -1
  96. package/dist/cli/commands/search.js +7 -2
  97. package/dist/cli/commands/search.js.map +1 -1
  98. package/dist/cli/commands/stats.js +4 -1
  99. package/dist/cli/commands/stats.js.map +1 -1
  100. package/dist/cli/commands/templates.js +4 -1
  101. package/dist/cli/commands/templates.js.map +1 -1
  102. package/dist/cli/commands/test-all.js +4 -1
  103. package/dist/cli/commands/test-all.js.map +1 -1
  104. package/dist/cli/commands/test-runs.js +4 -1
  105. package/dist/cli/commands/test-runs.js.map +1 -1
  106. package/dist/cli/commands/test.js +4 -1
  107. package/dist/cli/commands/test.js.map +1 -1
  108. package/dist/cli/commands/update-many.js +4 -1
  109. package/dist/cli/commands/update-many.js.map +1 -1
  110. package/dist/cli/commands/update.js +114 -71
  111. package/dist/cli/commands/update.js.map +1 -1
  112. package/dist/cli/commands/upgrade.js +6 -3
  113. package/dist/cli/commands/upgrade.js.map +1 -1
  114. package/dist/cli/commands/validate.js +32 -4
  115. package/dist/cli/commands/validate.js.map +1 -1
  116. package/dist/cli/error-guidance.js +5 -2
  117. package/dist/cli/error-guidance.js.map +1 -1
  118. package/dist/cli/extension-command-help.js +4 -1
  119. package/dist/cli/extension-command-help.js.map +1 -1
  120. package/dist/cli/extension-command-options.js +4 -1
  121. package/dist/cli/extension-command-options.js.map +1 -1
  122. package/dist/cli/guide-topics.js +4 -1
  123. package/dist/cli/guide-topics.js.map +1 -1
  124. package/dist/cli/help-content.js +35 -15
  125. package/dist/cli/help-content.js.map +1 -1
  126. package/dist/cli/help-json-payload.js +4 -1
  127. package/dist/cli/help-json-payload.js.map +1 -1
  128. package/dist/cli/main.js +203 -25
  129. package/dist/cli/main.js.map +1 -1
  130. package/dist/cli/migration-gates.js +4 -1
  131. package/dist/cli/migration-gates.js.map +1 -1
  132. package/dist/cli/register-list-query.js +37 -14
  133. package/dist/cli/register-list-query.js.map +1 -1
  134. package/dist/cli/register-mutation.js +228 -4
  135. package/dist/cli/register-mutation.js.map +1 -1
  136. package/dist/cli/register-operations.js +33 -1
  137. package/dist/cli/register-operations.js.map +1 -1
  138. package/dist/cli/register-setup.js +23 -13
  139. package/dist/cli/register-setup.js.map +1 -1
  140. package/dist/cli/registration-helpers.js +10 -2
  141. package/dist/cli/registration-helpers.js.map +1 -1
  142. package/dist/cli/shared-parsers.js +4 -1
  143. package/dist/cli/shared-parsers.js.map +1 -1
  144. package/dist/cli/telemetry-flush.js +4 -1
  145. package/dist/cli/telemetry-flush.js.map +1 -1
  146. package/dist/cli.js +45 -3
  147. package/dist/cli.js.map +1 -1
  148. package/dist/core/extensions/extension-types.js +4 -1
  149. package/dist/core/extensions/extension-types.js.map +1 -1
  150. package/dist/core/extensions/index.js +4 -1
  151. package/dist/core/extensions/index.js.map +1 -1
  152. package/dist/core/extensions/item-fields.js +4 -1
  153. package/dist/core/extensions/item-fields.js.map +1 -1
  154. package/dist/core/extensions/loader.js +77 -53
  155. package/dist/core/extensions/loader.js.map +1 -1
  156. package/dist/core/extensions/runtime-registrations.js +4 -1
  157. package/dist/core/extensions/runtime-registrations.js.map +1 -1
  158. package/dist/core/fs/fs-utils.js +4 -1
  159. package/dist/core/fs/fs-utils.js.map +1 -1
  160. package/dist/core/fs/index.js +4 -1
  161. package/dist/core/fs/index.js.map +1 -1
  162. package/dist/core/history/history-stream-policy.js +4 -1
  163. package/dist/core/history/history-stream-policy.js.map +1 -1
  164. package/dist/core/history/history.js +4 -1
  165. package/dist/core/history/history.js.map +1 -1
  166. package/dist/core/history/index.js +4 -1
  167. package/dist/core/history/index.js.map +1 -1
  168. package/dist/core/item/id.js +4 -1
  169. package/dist/core/item/id.js.map +1 -1
  170. package/dist/core/item/index.js +4 -1
  171. package/dist/core/item/index.js.map +1 -1
  172. package/dist/core/item/item-format.js +241 -2
  173. package/dist/core/item/item-format.js.map +1 -1
  174. package/dist/core/item/parent-reference-policy.js +4 -1
  175. package/dist/core/item/parent-reference-policy.js.map +1 -1
  176. package/dist/core/item/parse.js +33 -3
  177. package/dist/core/item/parse.js.map +1 -1
  178. package/dist/core/item/sprint-release-format.js +4 -1
  179. package/dist/core/item/sprint-release-format.js.map +1 -1
  180. package/dist/core/item/status.js +4 -1
  181. package/dist/core/item/status.js.map +1 -1
  182. package/dist/core/item/type-registry.js +4 -1
  183. package/dist/core/item/type-registry.js.map +1 -1
  184. package/dist/core/lock/index.js +4 -1
  185. package/dist/core/lock/index.js.map +1 -1
  186. package/dist/core/lock/lock.js +4 -1
  187. package/dist/core/lock/lock.js.map +1 -1
  188. package/dist/core/output/command-aware.js +4 -1
  189. package/dist/core/output/command-aware.js.map +1 -1
  190. package/dist/core/output/output.d.ts +4 -0
  191. package/dist/core/output/output.js +47 -6
  192. package/dist/core/output/output.js.map +1 -1
  193. package/dist/core/packages/manifest.d.ts +1 -0
  194. package/dist/core/packages/manifest.js +5 -1
  195. package/dist/core/packages/manifest.js.map +1 -1
  196. package/dist/core/packages/root.d.ts +3 -0
  197. package/dist/core/packages/root.js +51 -0
  198. package/dist/core/packages/root.js.map +1 -0
  199. package/dist/core/schema/runtime-field-filters.js +4 -1
  200. package/dist/core/schema/runtime-field-filters.js.map +1 -1
  201. package/dist/core/schema/runtime-field-values.js +4 -1
  202. package/dist/core/schema/runtime-field-values.js.map +1 -1
  203. package/dist/core/schema/runtime-schema.js +4 -1
  204. package/dist/core/schema/runtime-schema.js.map +1 -1
  205. package/dist/core/search/cache.js +7 -2
  206. package/dist/core/search/cache.js.map +1 -1
  207. package/dist/core/search/corpus.d.ts +2 -0
  208. package/dist/core/search/corpus.js +77 -2
  209. package/dist/core/search/corpus.js.map +1 -1
  210. package/dist/core/search/embedding-batches.js +21 -7
  211. package/dist/core/search/embedding-batches.js.map +1 -1
  212. package/dist/core/search/http-client.js +4 -1
  213. package/dist/core/search/http-client.js.map +1 -1
  214. package/dist/core/search/providers.js +4 -1
  215. package/dist/core/search/providers.js.map +1 -1
  216. package/dist/core/search/semantic-defaults.js +11 -2
  217. package/dist/core/search/semantic-defaults.js.map +1 -1
  218. package/dist/core/search/vector-stores.js +4 -1
  219. package/dist/core/search/vector-stores.js.map +1 -1
  220. package/dist/core/sentry/helpers.js +4 -1
  221. package/dist/core/sentry/helpers.js.map +1 -1
  222. package/dist/core/sentry/instrument.js +10 -13
  223. package/dist/core/sentry/instrument.js.map +1 -1
  224. package/dist/core/shared/command-types.js +4 -1
  225. package/dist/core/shared/command-types.js.map +1 -1
  226. package/dist/core/shared/conflict-markers.js +4 -1
  227. package/dist/core/shared/conflict-markers.js.map +1 -1
  228. package/dist/core/shared/constants.d.ts +2 -2
  229. package/dist/core/shared/constants.js +24 -1
  230. package/dist/core/shared/constants.js.map +1 -1
  231. package/dist/core/shared/errors.js +4 -1
  232. package/dist/core/shared/errors.js.map +1 -1
  233. package/dist/core/shared/index.js +4 -1
  234. package/dist/core/shared/index.js.map +1 -1
  235. package/dist/core/shared/levenshtein.js +4 -1
  236. package/dist/core/shared/levenshtein.js.map +1 -1
  237. package/dist/core/shared/primitives.js +4 -1
  238. package/dist/core/shared/primitives.js.map +1 -1
  239. package/dist/core/shared/serialization.js +4 -1
  240. package/dist/core/shared/serialization.js.map +1 -1
  241. package/dist/core/shared/text-normalization.js +4 -1
  242. package/dist/core/shared/text-normalization.js.map +1 -1
  243. package/dist/core/shared/time.js +4 -1
  244. package/dist/core/shared/time.js.map +1 -1
  245. package/dist/core/store/front-matter-cache.js +8 -3
  246. package/dist/core/store/front-matter-cache.js.map +1 -1
  247. package/dist/core/store/index.js +4 -1
  248. package/dist/core/store/index.js.map +1 -1
  249. package/dist/core/store/item-format-migration.js +4 -1
  250. package/dist/core/store/item-format-migration.js.map +1 -1
  251. package/dist/core/store/item-store.d.ts +2 -0
  252. package/dist/core/store/item-store.js +66 -3
  253. package/dist/core/store/item-store.js.map +1 -1
  254. package/dist/core/store/paths.js +4 -1
  255. package/dist/core/store/paths.js.map +1 -1
  256. package/dist/core/store/settings.js +39 -1
  257. package/dist/core/store/settings.js.map +1 -1
  258. package/dist/core/telemetry/consent.js +4 -1
  259. package/dist/core/telemetry/consent.js.map +1 -1
  260. package/dist/core/telemetry/observability.d.ts +1 -1
  261. package/dist/core/telemetry/observability.js +11 -2
  262. package/dist/core/telemetry/observability.js.map +1 -1
  263. package/dist/core/telemetry/runtime.js +31 -5
  264. package/dist/core/telemetry/runtime.js.map +1 -1
  265. package/dist/core/test/background-runs.js +4 -1
  266. package/dist/core/test/background-runs.js.map +1 -1
  267. package/dist/core/test/item-test-run-tracking.js +4 -1
  268. package/dist/core/test/item-test-run-tracking.js.map +1 -1
  269. package/dist/mcp/server.js +123 -14
  270. package/dist/mcp/server.js.map +1 -1
  271. package/dist/sdk/cli-contracts/commander-mutation-options.js +10 -3
  272. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
  273. package/dist/sdk/cli-contracts/commander-types.js +4 -1
  274. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  275. package/dist/sdk/cli-contracts.d.ts +6 -2
  276. package/dist/sdk/cli-contracts.js +213 -20
  277. package/dist/sdk/cli-contracts.js.map +1 -1
  278. package/dist/sdk/index.js +4 -1
  279. package/dist/sdk/index.js.map +1 -1
  280. package/dist/sdk/runtime.js +4 -1
  281. package/dist/sdk/runtime.js.map +1 -1
  282. package/dist/types/index.js +4 -1
  283. package/dist/types/index.js.map +1 -1
  284. package/dist/types.d.ts +86 -2
  285. package/dist/types.js +34 -1
  286. package/dist/types.js.map +1 -1
  287. package/docs/AGENT_GUIDE.md +16 -6
  288. package/docs/CLAUDE_CODE_PLUGIN.md +10 -10
  289. package/docs/CODEX_PLUGIN.md +2 -2
  290. package/docs/COMMANDS.md +80 -8
  291. package/docs/CONFIGURATION.md +4 -1
  292. package/docs/EXTENSIONS.md +158 -814
  293. package/docs/QUICKSTART.md +11 -5
  294. package/docs/README.md +7 -6
  295. package/docs/RELEASING.md +2 -2
  296. package/docs/TESTING.md +2 -2
  297. package/marketplace.json +3 -3
  298. package/package.json +4 -2
  299. package/packages/pm-beads/package.json +1 -1
  300. package/packages/pm-calendar/README.md +1 -1
  301. package/packages/pm-calendar/extensions/calendar/index.js +1 -1
  302. package/packages/pm-calendar/extensions/calendar/index.ts +1 -1
  303. package/packages/pm-calendar/extensions/calendar/runtime.js +26 -7
  304. package/packages/pm-calendar/extensions/calendar/runtime.ts +26 -7
  305. package/packages/pm-calendar/package.json +1 -1
  306. package/packages/pm-governance-audit/package.json +1 -1
  307. package/packages/pm-guide-shell/extensions/guide-shell/index.js +1 -1
  308. package/packages/pm-guide-shell/extensions/guide-shell/index.ts +1 -1
  309. package/packages/pm-guide-shell/package.json +1 -1
  310. package/packages/pm-linked-test-adapters/package.json +1 -1
  311. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +1 -1
  312. package/packages/pm-search-advanced/package.json +1 -1
  313. package/packages/pm-templates/README.md +1 -1
  314. package/packages/pm-templates/package.json +1 -1
  315. package/packages/pm-todos/package.json +1 -1
  316. package/plugins/{pm-cli-claude → pm-claude}/.claude-plugin/plugin.json +2 -2
  317. package/plugins/{pm-cli-claude → pm-claude}/.mcp.json +1 -1
  318. package/plugins/{pm-cli-claude → pm-claude}/README.md +4 -4
  319. package/plugins/{pm-cli-claude → pm-claude}/agents/pm-coordinator.md +1 -1
  320. package/plugins/{pm-cli-claude → pm-claude}/commands/pm-init.md +10 -1
  321. package/plugins/{pm-cli-claude → pm-claude}/commands/pm-planner.md +18 -0
  322. package/plugins/{pm-cli-claude → pm-claude}/skills/pm-planner/SKILL.md +46 -1
  323. package/plugins/{pm-cli-codex → pm-codex}/.codex-plugin/plugin.json +3 -3
  324. package/plugins/{pm-cli-codex → pm-codex}/.mcp.json +1 -1
  325. package/plugins/{pm-cli-codex → pm-codex}/README.md +7 -4
  326. package/plugins/pm-codex/skills/pm-native/SKILL.md +81 -0
  327. package/scripts/finalize-build.mjs +28 -0
  328. package/scripts/prepare-build-cache.mjs +37 -0
  329. package/plugins/pm-cli-codex/skills/pm-native/SKILL.md +0 -57
  330. /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-delivery-chain.md +0 -0
  331. /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-triage-agent.md +0 -0
  332. /package/plugins/{pm-cli-claude → pm-claude}/agents/pm-verification-agent.md +0 -0
  333. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-audit.md +0 -0
  334. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-calendar.md +0 -0
  335. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-close-task.md +0 -0
  336. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-developer.md +0 -0
  337. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-list.md +0 -0
  338. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-new.md +0 -0
  339. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-release.md +0 -0
  340. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-search.md +0 -0
  341. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-start-task.md +0 -0
  342. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-status.md +0 -0
  343. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-triage.md +0 -0
  344. /package/plugins/{pm-cli-claude → pm-claude}/commands/pm-workflow.md +0 -0
  345. /package/plugins/{pm-cli-claude → pm-claude}/hooks/hooks.json +0 -0
  346. /package/plugins/{pm-cli-claude → pm-claude}/hooks/session-start.mjs +0 -0
  347. /package/plugins/{pm-cli-claude → pm-claude}/scripts/pm-mcp-server.mjs +0 -0
  348. /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-audit/SKILL.md +0 -0
  349. /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-developer/SKILL.md +0 -0
  350. /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-release/SKILL.md +0 -0
  351. /package/plugins/{pm-cli-claude → pm-claude}/skills/pm-workflow/SKILL.md +0 -0
  352. /package/plugins/{pm-cli-codex → pm-codex}/assets/pm-cli-small.svg +0 -0
  353. /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-audit.md +0 -0
  354. /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-close-task.md +0 -0
  355. /package/plugins/{pm-cli-codex → pm-codex}/commands/pm-start-task.md +0 -0
  356. /package/plugins/{pm-cli-codex → pm-codex}/scripts/pm-mcp-server.mjs +0 -0
  357. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-auditor/SKILL.md +0 -0
  358. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-auditor/agents/openai.yaml +0 -0
  359. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-native/agents/openai.yaml +0 -0
  360. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-release/SKILL.md +0 -0
  361. /package/plugins/{pm-cli-codex → pm-codex}/skills/pm-release/agents/openai.yaml +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"help-json-payload.js","sourceRoot":"/","sources":["cli/help-json-payload.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,+BAA+B,EAE/B,qBAAqB,GACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAGL,wCAAwC,EACxC,wBAAwB,EACxB,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EACL,wBAAwB,EACxB,sCAAsC,GACvC,MAAM,sBAAsB,CAAC;AAe9B,MAAM,UAAU,4BAA4B,CAAC,IAAa,EAAE,UAAoB;IAC9E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC/B,OAAO,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAe;IACrD,MAAM,YAAY,GAAG,MAEpB,CAAC;IACF,IAAI,OAAO,YAAY,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,YAAY,CAAC,aAAa,EAAE,CAAC;QAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,CAAC;IACD,IAAI,OAAO,YAAY,CAAC,aAAa,KAAK,QAAQ,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnG,OAAO,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAkB;IACpD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,MAEpB,CAAC;QACF,MAAM,aAAa,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,aAAa,IAAI,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrG,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACxC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACzD,QAAQ,CAAC,GAAG,CACV,aAAa,EACb,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACzG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAC1B,CACF,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAc;IAC5C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAgB;IACvD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAc,CAAC;IACrD,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACpD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5B,MAAM,YAAY,GAAG,MAQpB,CAAC;QACF,MAAM,KAAK,GAAG,OAAO,YAAY,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,MAAM,WAAW,GAAG,OAAO,YAAY,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxG,MAAM,aAAa,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,eAAe,GAAG,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,MAAM,OAAO,GAAG,eAAe;aAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,YAAY,CAAC,IAAI,CAAC;aAC9C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,aAAa,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACpF,MAAM,QAAQ,GACZ,YAAY,CAAC,SAAS,KAAK,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC3H,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,OAAO,GAAsB;YACjC,KAAK;YACL,IAAI,EAAE,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;YACtE,KAAK,EAAE,OAAO,YAAY,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YACzE,WAAW;YACX,WAAW,EAAE,UAAU;YACvB,cAAc,EAAE,aAAa;YAC7B,UAAU,EAAE,sBAAsB,CAAC,KAAK,CAAC;YACzC,QAAQ,EAAE,YAAY,CAAC,QAAQ,KAAK,IAAI;YACxC,QAAQ;YACR,OAAO;YACP,SAAS,EAAE,QAAQ;SACpB,CAAC;QACF,IAAI,YAAY,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,CAAC,aAAa,GAAG,YAAY,CAAC,YAAY,CAAC;QACpD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAgB;IACzD,MAAM,aAAa,GAAG,OAarB,CAAC;IACF,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,mBAAmB,CAAC;QACpE,CAAC,CAAC,aAAa,CAAC,mBAAmB;QACnC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;YAClC,CAAC,CAAC,aAAa,CAAC,KAAK;YACrB,CAAC,CAAC,EAAE,CAAC;IAET,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QACpC,MAAM,OAAO,GACX,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU;YACjC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE;YACjB,CAAC,CAAC,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ;gBACjC,CAAC,CAAC,QAAQ,CAAC,IAAI;gBACf,CAAC,CAAC,UAAU,CAAC;QACnB,MAAM,WAAW,GAAG,OAAO,QAAQ,CAAC,WAAW,KAAK,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC;YACpG,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE;YAC7B,CAAC,CAAC,IAAI,CAAC;QACT,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;YACpB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,KAAK,IAAI;YACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,KAAK,IAAI;YACpC,WAAW;SACZ,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAAgB;IAC3D,OAAO,OAAO,CAAC,QAAQ;SACpB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACf,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE;QACzB,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC;QAC9B,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;KACxC,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,WAAoB,EACpB,aAAsB,EACtB,IAAc,EACd,aAAuB,EACvB,oBAAyE;IAEzE,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,wBAAwB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC;IAC7E,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACxE,MAAM,mBAAmB,GAAG,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,MAAM,iBAAiB,GAAG,mBAAmB,EAAE,QAAQ,IAAI,EAAE,CAAC;IAC9D,MAAM,qBAAqB,GAAG,mBAAmB,EAAE,aAAa,IAAI,EAAE,CAAC;IACvE,MAAM,SAAS,GAAG,mBAAmB;QACnC,CAAC,CAAC;YACE,MAAM,EAAE,mBAAmB,CAAC,MAAM,IAAI,mBAAmB,CAAC,WAAW,IAAI,iBAAiB,CAAC,MAAM;YACjG,QAAQ,EACN,UAAU,KAAK,UAAU;gBACvB,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;oBAC5B,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC;oBACxB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,QAAQ,CAAC;gBACnC,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;oBAC5B,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;oBACxB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,QAAQ,CAAC;YACvC,IAAI,EACF,UAAU,KAAK,UAAU;gBACvB,CAAC,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC;oBAChC,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC;oBAC5B,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC;gBAC/B,CAAC,CAAC,EAAE;YACR,WAAW,EAAE,UAAU;SACxB;QACH,CAAC,CAAC,iBAAiB,CAAC;IACtB,MAAM,eAAe,GAAG,wBAAwB,CAC9C,wBAAwB,CAAC,aAAa,CAAC,EACvC,wCAAwC,CAAC,mBAAmB,CAAC,CAC9D,CAAC;IACF,MAAM,WAAW,GAAG,4BAA4B,CAAC,aAAa,CAAC,CAAC;IAChE,OAAO;QACL,MAAM,EAAE,YAAY;QACpB,WAAW,EAAE,UAAU;QACvB,YAAY,EAAE,WAAW,CAAC,IAAI,EAAE;QAChC,cAAc,EAAE,aAAa;QAC7B,aAAa,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE;QAC1E,WAAW,EAAE,aAAa,CAAC,WAAW,EAAE;QACxC,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE;QAC5B,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,SAAS,EAAE,0BAA0B,CAAC,aAAa,CAAC;QACpD,OAAO,EAAE,eAAe;QACxB,WAAW;QACX,eAAe,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,WAAoB,EACpB,IAAc,EACd,oBAAyE;IAEzE,MAAM,eAAe,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,WAAW,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,aAAa,GAAG,4BAA4B,CAAC,WAAW,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC/F,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC3B,MAAM,cAAc,GAAG,oBAAoB,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YACtF,MAAM,cAAc,GAAG,sCAAsC,CAAC,cAAc,EAAE,WAAW,EAAE,oBAAoB,CAAC,CAAC;YACjH,MAAM,QAAQ,GAAG,2BAA2B,CAC1C,cAAc,EACd,MAAM,EACN,wBAAwB,EACxB,SAAS,CAAC,KAAK,EACf;gBACE,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;gBACzB,gBAAgB,EAAE,sBAAsB,CAAC,IAAI,CAAC;gBAC9C,wBAAwB,EAAE,CAAC,GAAG,IAAI,CAAC;gBACnC,mBAAmB,EAAE,0BAA0B,CAAC,IAAI,CAAC;aACtD,CACF,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,oBAAoB,CAAC,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;QAC5H,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC;IACrC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,WAAgC,EAChC,YAAwD,EACxD,IAAc;IAEd,MAAM,eAAe,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG;YACZ,EAAE;YACF,6BAA6B;YAC7B,2GAA2G;YAC3G,yBAAyB,OAAO,EAAE;SACnC,CAAC;QACF,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CACR,2GAA2G,CAC5G,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,cAAc,GAAG,qBAAqB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC5E,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO;YACL,EAAE;YACF,qCAAqC,eAAe,kCAAkC;YACtF,yBAAyB,OAAO,EAAE;SACnC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAChB,WAAW,KAAK,QAAQ;QACtB,CAAC,CAAC,IAAI,GAAG,CAAS,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,sBAAsB,EAAE,GAAG,cAAc,CAAC,2BAA2B,CAAC,CAAC;QAC5I,CAAC,CAAC,IAAI,GAAG,EAAU,CAAC;IACxB,MAAM,WAAW,GAAG,+BAA+B,CAAC,cAAc,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,CAAC,OAAiB,EAAU,EAAE,CAC5C,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,sBAAsB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAEhH,MAAM,KAAK,GAAG;QACZ,EAAE;QACF,kCAAkC,cAAc,CAAC,IAAI,GAAG;QACxD,eAAe,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;QAC9C,eAAe,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;QAC9C,aAAa,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;KAC3C,CAAC;IACF,IAAI,WAAW,KAAK,QAAQ,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/F,KAAK,CAAC,IAAI,CACR,qHAAqH,CACtH,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,MAAM,MAAM,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC5C,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG,GAAG,aAAa,EAAE,CAAC,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC;YAC3G,KAAK,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAChF,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/D,KAAK,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,oBAAoB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,WAAoB,EACpB,YAAwD,EACxD,IAAc;IAEd,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QACnE,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,sBAAsB,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IACtE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IACD,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,+BAA+B,CAAC,gBAAgB,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;AACtG,CAAC","sourcesContent":["import { Command } from \"commander\";\nimport {\n commandOptionFlagLabel,\n resolveCommandOptionPolicyState,\n resolveItemTypeRegistry,\n resolveTypeDefinition,\n} from \"../core/item/type-registry.js\";\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { printError, writeStdout } from \"../core/output/output.js\";\nimport {\n type HelpOptionSummary,\n type ExtensionCommandHelpDescriptor,\n buildDynamicExtensionHelpOptionSummaries,\n mergeHelpOptionSummaries,\n findCommandByPath,\n findDirectChildCommand,\n commandAliases,\n} from \"./extension-command-help.js\";\nimport {\n normalizeHelpCommandPath,\n resolveHelpDetailMode,\n resolveHelpNarrative,\n} from \"./help-content.js\";\nimport { getCommandPath } from \"./registration-helpers.js\";\nimport {\n parseBootstrapGlobalOptions,\n parseBootstrapHelpRequest,\n parseBootstrapCommandName,\n parseBootstrapTypeValue,\n} from \"./bootstrap-args.js\";\nimport { extractProvidedOptionFlags, renderPmCommand } from \"./argv-utils.js\";\nimport { formatCommanderErrorForJson } from \"./error-guidance.js\";\nimport {\n BUILTIN_TYPE_HELP_VALUES,\n buildUnknownCommandGuidanceFromRuntime,\n} from \"./commander-usage.js\";\n\nexport interface HelpArgumentSummary {\n name: string;\n required: boolean;\n variadic: boolean;\n description: string | null;\n}\n\nexport interface HelpSubcommandSummary {\n name: string;\n aliases: string[];\n description: string;\n}\n\nexport function resolveCommandFromPathTokens(root: Command, pathTokens: string[]): Command | null {\n if (pathTokens.length === 0) {\n return root;\n }\n return findCommandByPath(root, pathTokens);\n}\n\nexport function extractOptionValueName(flags: string): string | null {\n const match = flags.match(/[<[]([^>\\]]+)[>\\]]/);\n if (!match) {\n return null;\n }\n const value = match[1]?.trim();\n return value && value.length > 0 ? value : null;\n}\n\nexport function readOptionAttributeName(option: unknown): string | null {\n const optionRecord = option as {\n attributeName?: (() => string) | string;\n };\n if (typeof optionRecord.attributeName === \"function\") {\n const value = optionRecord.attributeName();\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : null;\n }\n if (typeof optionRecord.attributeName === \"string\" && optionRecord.attributeName.trim().length > 0) {\n return optionRecord.attributeName.trim();\n }\n return null;\n}\n\nexport function buildOptionAliasMap(options: unknown[]): Map<string, string[]> {\n const aliasMap = new Map<string, string[]>();\n for (const option of options) {\n const optionRecord = option as {\n long?: string;\n };\n const attributeName = readOptionAttributeName(option);\n if (!attributeName || typeof optionRecord.long !== \"string\" || optionRecord.long.trim().length === 0) {\n continue;\n }\n const existing = aliasMap.get(attributeName) ?? [];\n existing.push(optionRecord.long.trim());\n aliasMap.set(attributeName, existing);\n }\n for (const [attributeName, values] of aliasMap.entries()) {\n aliasMap.set(\n attributeName,\n [...new Set(values.map((value) => value.trim()).filter((value) => value.length > 0))].sort((left, right) =>\n left.localeCompare(right),\n ),\n );\n }\n return aliasMap;\n}\n\nfunction renderAttemptedCommand(argv: string[]): string {\n return renderPmCommand(argv);\n}\n\nexport function buildHelpOptionSummaries(command: Command): HelpOptionSummary[] {\n const options = (command.options ?? []) as unknown[];\n const optionAliasMap = buildOptionAliasMap(options);\n return options.map((option) => {\n const optionRecord = option as {\n flags?: string;\n long?: string;\n short?: string;\n description?: string;\n mandatory?: boolean;\n variadic?: boolean;\n defaultValue?: unknown;\n };\n const flags = typeof optionRecord.flags === \"string\" ? optionRecord.flags.trim() : \"\";\n const description = typeof optionRecord.description === \"string\" ? optionRecord.description.trim() : \"\";\n const attributeName = readOptionAttributeName(option);\n const aliasCandidates = attributeName ? optionAliasMap.get(attributeName) ?? [] : [];\n const aliases = aliasCandidates\n .filter((entry) => entry !== optionRecord.long)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n const aliasForMatch = description.match(/^Alias for ([^ ]+)/i);\n const aliasFor = aliasForMatch && aliasForMatch[1] ? aliasForMatch[1].trim() : null;\n const required =\n optionRecord.mandatory === true || description.includes(\"[required]\") || description.toLowerCase().includes(\"required;\");\n const valueRequired = flags.includes(\"<\");\n const takesValue = valueRequired || flags.includes(\"[\");\n const summary: HelpOptionSummary = {\n flags,\n long: typeof optionRecord.long === \"string\" ? optionRecord.long : null,\n short: typeof optionRecord.short === \"string\" ? optionRecord.short : null,\n description,\n takes_value: takesValue,\n value_required: valueRequired,\n value_name: extractOptionValueName(flags),\n variadic: optionRecord.variadic === true,\n required,\n aliases,\n alias_for: aliasFor,\n };\n if (optionRecord.defaultValue !== undefined) {\n summary.default_value = optionRecord.defaultValue;\n }\n return summary;\n });\n}\n\nexport function buildHelpArgumentSummaries(command: Command): HelpArgumentSummary[] {\n const commandRecord = command as unknown as {\n registeredArguments?: Array<{\n name?: (() => string) | string;\n required?: boolean;\n variadic?: boolean;\n description?: string;\n }>;\n _args?: Array<{\n name?: (() => string) | string;\n required?: boolean;\n variadic?: boolean;\n description?: string;\n }>;\n };\n const argumentsList = Array.isArray(commandRecord.registeredArguments)\n ? commandRecord.registeredArguments\n : Array.isArray(commandRecord._args)\n ? commandRecord._args\n : [];\n\n return argumentsList.map((argument) => {\n const rawName =\n typeof argument.name === \"function\"\n ? argument.name()\n : typeof argument.name === \"string\"\n ? argument.name\n : \"argument\";\n const description = typeof argument.description === \"string\" && argument.description.trim().length > 0\n ? argument.description.trim()\n : null;\n return {\n name: rawName.trim(),\n required: argument.required === true,\n variadic: argument.variadic === true,\n description,\n };\n });\n}\n\nexport function buildHelpSubcommandSummaries(command: Command): HelpSubcommandSummary[] {\n return command.commands\n .map((entry) => ({\n name: entry.name().trim(),\n aliases: commandAliases(entry),\n description: entry.description().trim(),\n }))\n .sort((left, right) => left.name.localeCompare(right.name));\n}\n\nexport function buildJsonHelpPayload(\n rootProgram: Command,\n targetCommand: Command,\n argv: string[],\n requestedPath: string[],\n extensionDescriptors: ReadonlyMap<string, ExtensionCommandHelpDescriptor>,\n): Record<string, unknown> {\n const detailMode = resolveHelpDetailMode(argv);\n const resolvedPath = normalizeHelpCommandPath(getCommandPath(targetCommand));\n const commandPath = resolvedPath.length > 0 ? resolvedPath : undefined;\n const fallbackNarrative = resolveHelpNarrative(commandPath, detailMode);\n const extensionDescriptor = commandPath ? extensionDescriptors.get(commandPath) : undefined;\n const extensionExamples = extensionDescriptor?.examples ?? [];\n const extensionFailureHints = extensionDescriptor?.failure_hints ?? [];\n const narrative = extensionDescriptor\n ? {\n intent: extensionDescriptor.intent ?? extensionDescriptor.description ?? fallbackNarrative.intent,\n examples:\n detailMode === \"detailed\"\n ? extensionExamples.length > 0\n ? [...extensionExamples]\n : [...fallbackNarrative.examples]\n : extensionExamples.length > 0\n ? [extensionExamples[0]]\n : [...fallbackNarrative.examples],\n tips:\n detailMode === \"detailed\"\n ? extensionFailureHints.length > 0\n ? [...extensionFailureHints]\n : [...fallbackNarrative.tips]\n : [],\n detail_mode: detailMode,\n }\n : fallbackNarrative;\n const optionSummaries = mergeHelpOptionSummaries(\n buildHelpOptionSummaries(targetCommand),\n buildDynamicExtensionHelpOptionSummaries(extensionDescriptor),\n );\n const subcommands = buildHelpSubcommandSummaries(targetCommand);\n return {\n format: \"pm_help_v1\",\n detail_mode: detailMode,\n root_command: rootProgram.name(),\n requested_path: requestedPath,\n resolved_path: resolvedPath.length > 0 ? resolvedPath : rootProgram.name(),\n description: targetCommand.description(),\n usage: targetCommand.usage(),\n intent: narrative.intent,\n examples: narrative.examples,\n tips: narrative.tips,\n arguments: buildHelpArgumentSummaries(targetCommand),\n options: optionSummaries,\n subcommands,\n has_subcommands: subcommands.length > 0,\n };\n}\n\nexport async function maybeRenderBootstrapJsonHelp(\n rootProgram: Command,\n argv: string[],\n extensionDescriptors: ReadonlyMap<string, ExtensionCommandHelpDescriptor>,\n): Promise<boolean> {\n const bootstrapGlobal = parseBootstrapGlobalOptions(argv);\n if (!bootstrapGlobal.json) {\n return false;\n }\n const helpRequest = parseBootstrapHelpRequest(argv);\n if (!helpRequest.requested) {\n return false;\n }\n const targetCommand = resolveCommandFromPathTokens(rootProgram, helpRequest.commandPathTokens);\n if (!targetCommand) {\n if (!bootstrapGlobal.quiet) {\n const unknownMessage = `unknown command '${helpRequest.commandPathTokens.join(\" \")}'`;\n const runtimeContext = buildUnknownCommandGuidanceFromRuntime(unknownMessage, rootProgram, extensionDescriptors);\n const envelope = formatCommanderErrorForJson(\n unknownMessage,\n \"help\",\n BUILTIN_TYPE_HELP_VALUES,\n EXIT_CODE.USAGE,\n {\n ...(runtimeContext ?? {}),\n attemptedCommand: renderAttemptedCommand(argv),\n normalizedInvocationArgs: [...argv],\n providedOptionFlags: extractProvidedOptionFlags(argv),\n },\n );\n printError(JSON.stringify(envelope, null, 2));\n }\n process.exitCode = EXIT_CODE.USAGE;\n return true;\n }\n if (!bootstrapGlobal.quiet) {\n const payload = buildJsonHelpPayload(rootProgram, targetCommand, argv, helpRequest.commandPathTokens, extensionDescriptors);\n writeStdout(`${JSON.stringify(payload, null, 2)}\\n`);\n }\n process.exitCode = EXIT_CODE.SUCCESS;\n return true;\n}\n\nexport function buildCreateUpdatePolicyHelpText(\n commandName: \"create\" | \"update\",\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>,\n argv: string[],\n): string {\n const selectedTypeRaw = parseBootstrapTypeValue(argv);\n if (!selectedTypeRaw) {\n const allowed = typeRegistry.types.join(\"|\");\n const lines = [\n \"\",\n \"Type-aware option policies:\",\n \" pass --type <value> with --help to render required/disabled/hidden option policy details for that type.\",\n ` active type values: ${allowed}`,\n ];\n if (commandName === \"create\") {\n lines.push(\n \" scheduling shortcut: use --schedule-preset lightweight for Reminder/Meeting/Event minimal create flows.\",\n );\n }\n return lines.join(\"\\n\");\n }\n\n const typeDefinition = resolveTypeDefinition(selectedTypeRaw, typeRegistry);\n if (!typeDefinition) {\n const allowed = typeRegistry.types.join(\"|\");\n return [\n \"\",\n `Type-aware option policies: type \"${selectedTypeRaw}\" is not in the active registry.`,\n ` active type values: ${allowed}`,\n ].join(\"\\n\");\n }\n\n const baseRequired =\n commandName === \"create\"\n ? new Set<string>([\"title\", \"description\", \"type\", ...typeDefinition.required_create_fields, ...typeDefinition.required_create_repeatables])\n : new Set<string>();\n const policyState = resolveCommandOptionPolicyState(typeDefinition, commandName, baseRequired);\n const toFlags = (options: string[]): string =>\n options.length > 0 ? options.map((option) => commandOptionFlagLabel(commandName, option)).join(\", \") : \"none\";\n\n const lines = [\n \"\",\n `Type-aware option policies for ${typeDefinition.name}:`,\n ` required: ${toFlags(policyState.required)}`,\n ` disabled: ${toFlags(policyState.disabled)}`,\n ` hidden: ${toFlags(policyState.hidden)}`,\n ];\n if (commandName === \"create\" && [\"Reminder\", \"Meeting\", \"Event\"].includes(typeDefinition.name)) {\n lines.push(\n \" schedule preset: --schedule-preset lightweight switches schedule artifacts to progressive required-option policy.\",\n );\n lines.push(\" strict parity remains available via --create-mode strict.\");\n }\n if (typeDefinition.options.length === 0) {\n lines.push(\" type options: none\");\n } else {\n lines.push(\" type options:\");\n for (const option of typeDefinition.options) {\n const requiredLabel = option.required ? \" (required)\" : \"\";\n const aliases = option.aliases ?? [];\n lines.push(` - ${option.key}${requiredLabel}`);\n lines.push(` values: ${option.values.length > 0 ? option.values.join(\"|\") : \"any non-empty string\"}`);\n lines.push(` aliases: ${aliases.length > 0 ? aliases.join(\"|\") : \"none\"}`);\n if (option.description && option.description.trim().length > 0) {\n lines.push(` description: ${option.description.trim()}`);\n }\n }\n }\n if (policyState.errors.length > 0) {\n lines.push(` config errors: ${policyState.errors.join(\"; \")}`);\n }\n return lines.join(\"\\n\");\n}\n\nexport function attachCreateUpdatePolicyHelpText(\n rootProgram: Command,\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>,\n argv: string[],\n): void {\n const bootstrapCommand = parseBootstrapCommandName(argv);\n if (bootstrapCommand !== \"create\" && bootstrapCommand !== \"update\") {\n return;\n }\n const command = findDirectChildCommand(rootProgram, bootstrapCommand);\n if (!command) {\n return;\n }\n command.addHelpText(\"after\", buildCreateUpdatePolicyHelpText(bootstrapCommand, typeRegistry, argv));\n}\n"]}
1
+ {"version":3,"file":"help-json-payload.js","sources":["cli/help-json-payload.ts"],"sourceRoot":"/","sourcesContent":["import { Command } from \"commander\";\nimport {\n commandOptionFlagLabel,\n resolveCommandOptionPolicyState,\n resolveItemTypeRegistry,\n resolveTypeDefinition,\n} from \"../core/item/type-registry.js\";\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { printError, writeStdout } from \"../core/output/output.js\";\nimport {\n type HelpOptionSummary,\n type ExtensionCommandHelpDescriptor,\n buildDynamicExtensionHelpOptionSummaries,\n mergeHelpOptionSummaries,\n findCommandByPath,\n findDirectChildCommand,\n commandAliases,\n} from \"./extension-command-help.js\";\nimport {\n normalizeHelpCommandPath,\n resolveHelpDetailMode,\n resolveHelpNarrative,\n} from \"./help-content.js\";\nimport { getCommandPath } from \"./registration-helpers.js\";\nimport {\n parseBootstrapGlobalOptions,\n parseBootstrapHelpRequest,\n parseBootstrapCommandName,\n parseBootstrapTypeValue,\n} from \"./bootstrap-args.js\";\nimport { extractProvidedOptionFlags, renderPmCommand } from \"./argv-utils.js\";\nimport { formatCommanderErrorForJson } from \"./error-guidance.js\";\nimport {\n BUILTIN_TYPE_HELP_VALUES,\n buildUnknownCommandGuidanceFromRuntime,\n} from \"./commander-usage.js\";\n\nexport interface HelpArgumentSummary {\n name: string;\n required: boolean;\n variadic: boolean;\n description: string | null;\n}\n\nexport interface HelpSubcommandSummary {\n name: string;\n aliases: string[];\n description: string;\n}\n\nexport function resolveCommandFromPathTokens(root: Command, pathTokens: string[]): Command | null {\n if (pathTokens.length === 0) {\n return root;\n }\n return findCommandByPath(root, pathTokens);\n}\n\nexport function extractOptionValueName(flags: string): string | null {\n const match = flags.match(/[<[]([^>\\]]+)[>\\]]/);\n if (!match) {\n return null;\n }\n const value = match[1]?.trim();\n return value && value.length > 0 ? value : null;\n}\n\nexport function readOptionAttributeName(option: unknown): string | null {\n const optionRecord = option as {\n attributeName?: (() => string) | string;\n };\n if (typeof optionRecord.attributeName === \"function\") {\n const value = optionRecord.attributeName();\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : null;\n }\n if (typeof optionRecord.attributeName === \"string\" && optionRecord.attributeName.trim().length > 0) {\n return optionRecord.attributeName.trim();\n }\n return null;\n}\n\nexport function buildOptionAliasMap(options: unknown[]): Map<string, string[]> {\n const aliasMap = new Map<string, string[]>();\n for (const option of options) {\n const optionRecord = option as {\n long?: string;\n };\n const attributeName = readOptionAttributeName(option);\n if (!attributeName || typeof optionRecord.long !== \"string\" || optionRecord.long.trim().length === 0) {\n continue;\n }\n const existing = aliasMap.get(attributeName) ?? [];\n existing.push(optionRecord.long.trim());\n aliasMap.set(attributeName, existing);\n }\n for (const [attributeName, values] of aliasMap.entries()) {\n aliasMap.set(\n attributeName,\n [...new Set(values.map((value) => value.trim()).filter((value) => value.length > 0))].sort((left, right) =>\n left.localeCompare(right),\n ),\n );\n }\n return aliasMap;\n}\n\nfunction renderAttemptedCommand(argv: string[]): string {\n return renderPmCommand(argv);\n}\n\nexport function buildHelpOptionSummaries(command: Command): HelpOptionSummary[] {\n const options = (command.options ?? []) as unknown[];\n const optionAliasMap = buildOptionAliasMap(options);\n return options.map((option) => {\n const optionRecord = option as {\n flags?: string;\n long?: string;\n short?: string;\n description?: string;\n mandatory?: boolean;\n variadic?: boolean;\n defaultValue?: unknown;\n };\n const flags = typeof optionRecord.flags === \"string\" ? optionRecord.flags.trim() : \"\";\n const description = typeof optionRecord.description === \"string\" ? optionRecord.description.trim() : \"\";\n const attributeName = readOptionAttributeName(option);\n const aliasCandidates = attributeName ? optionAliasMap.get(attributeName) ?? [] : [];\n const aliases = aliasCandidates\n .filter((entry) => entry !== optionRecord.long)\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0);\n const aliasForMatch = description.match(/^Alias for ([^ ]+)/i);\n const aliasFor = aliasForMatch && aliasForMatch[1] ? aliasForMatch[1].trim() : null;\n const required =\n optionRecord.mandatory === true || description.includes(\"[required]\") || description.toLowerCase().includes(\"required;\");\n const valueRequired = flags.includes(\"<\");\n const takesValue = valueRequired || flags.includes(\"[\");\n const summary: HelpOptionSummary = {\n flags,\n long: typeof optionRecord.long === \"string\" ? optionRecord.long : null,\n short: typeof optionRecord.short === \"string\" ? optionRecord.short : null,\n description,\n takes_value: takesValue,\n value_required: valueRequired,\n value_name: extractOptionValueName(flags),\n variadic: optionRecord.variadic === true,\n required,\n aliases,\n alias_for: aliasFor,\n };\n if (optionRecord.defaultValue !== undefined) {\n summary.default_value = optionRecord.defaultValue;\n }\n return summary;\n });\n}\n\nexport function buildHelpArgumentSummaries(command: Command): HelpArgumentSummary[] {\n const commandRecord = command as unknown as {\n registeredArguments?: Array<{\n name?: (() => string) | string;\n required?: boolean;\n variadic?: boolean;\n description?: string;\n }>;\n _args?: Array<{\n name?: (() => string) | string;\n required?: boolean;\n variadic?: boolean;\n description?: string;\n }>;\n };\n const argumentsList = Array.isArray(commandRecord.registeredArguments)\n ? commandRecord.registeredArguments\n : Array.isArray(commandRecord._args)\n ? commandRecord._args\n : [];\n\n return argumentsList.map((argument) => {\n const rawName =\n typeof argument.name === \"function\"\n ? argument.name()\n : typeof argument.name === \"string\"\n ? argument.name\n : \"argument\";\n const description = typeof argument.description === \"string\" && argument.description.trim().length > 0\n ? argument.description.trim()\n : null;\n return {\n name: rawName.trim(),\n required: argument.required === true,\n variadic: argument.variadic === true,\n description,\n };\n });\n}\n\nexport function buildHelpSubcommandSummaries(command: Command): HelpSubcommandSummary[] {\n return command.commands\n .map((entry) => ({\n name: entry.name().trim(),\n aliases: commandAliases(entry),\n description: entry.description().trim(),\n }))\n .sort((left, right) => left.name.localeCompare(right.name));\n}\n\nexport function buildJsonHelpPayload(\n rootProgram: Command,\n targetCommand: Command,\n argv: string[],\n requestedPath: string[],\n extensionDescriptors: ReadonlyMap<string, ExtensionCommandHelpDescriptor>,\n): Record<string, unknown> {\n const detailMode = resolveHelpDetailMode(argv);\n const resolvedPath = normalizeHelpCommandPath(getCommandPath(targetCommand));\n const commandPath = resolvedPath.length > 0 ? resolvedPath : undefined;\n const fallbackNarrative = resolveHelpNarrative(commandPath, detailMode);\n const extensionDescriptor = commandPath ? extensionDescriptors.get(commandPath) : undefined;\n const extensionExamples = extensionDescriptor?.examples ?? [];\n const extensionFailureHints = extensionDescriptor?.failure_hints ?? [];\n const narrative = extensionDescriptor\n ? {\n intent: extensionDescriptor.intent ?? extensionDescriptor.description ?? fallbackNarrative.intent,\n examples:\n detailMode === \"detailed\"\n ? extensionExamples.length > 0\n ? [...extensionExamples]\n : [...fallbackNarrative.examples]\n : extensionExamples.length > 0\n ? [extensionExamples[0]]\n : [...fallbackNarrative.examples],\n tips:\n detailMode === \"detailed\"\n ? extensionFailureHints.length > 0\n ? [...extensionFailureHints]\n : [...fallbackNarrative.tips]\n : [],\n detail_mode: detailMode,\n }\n : fallbackNarrative;\n const optionSummaries = mergeHelpOptionSummaries(\n buildHelpOptionSummaries(targetCommand),\n buildDynamicExtensionHelpOptionSummaries(extensionDescriptor),\n );\n const subcommands = buildHelpSubcommandSummaries(targetCommand);\n return {\n format: \"pm_help_v1\",\n detail_mode: detailMode,\n root_command: rootProgram.name(),\n requested_path: requestedPath,\n resolved_path: resolvedPath.length > 0 ? resolvedPath : rootProgram.name(),\n description: targetCommand.description(),\n usage: targetCommand.usage(),\n intent: narrative.intent,\n examples: narrative.examples,\n tips: narrative.tips,\n arguments: buildHelpArgumentSummaries(targetCommand),\n options: optionSummaries,\n subcommands,\n has_subcommands: subcommands.length > 0,\n };\n}\n\nexport async function maybeRenderBootstrapJsonHelp(\n rootProgram: Command,\n argv: string[],\n extensionDescriptors: ReadonlyMap<string, ExtensionCommandHelpDescriptor>,\n): Promise<boolean> {\n const bootstrapGlobal = parseBootstrapGlobalOptions(argv);\n if (!bootstrapGlobal.json) {\n return false;\n }\n const helpRequest = parseBootstrapHelpRequest(argv);\n if (!helpRequest.requested) {\n return false;\n }\n const targetCommand = resolveCommandFromPathTokens(rootProgram, helpRequest.commandPathTokens);\n if (!targetCommand) {\n if (!bootstrapGlobal.quiet) {\n const unknownMessage = `unknown command '${helpRequest.commandPathTokens.join(\" \")}'`;\n const runtimeContext = buildUnknownCommandGuidanceFromRuntime(unknownMessage, rootProgram, extensionDescriptors);\n const envelope = formatCommanderErrorForJson(\n unknownMessage,\n \"help\",\n BUILTIN_TYPE_HELP_VALUES,\n EXIT_CODE.USAGE,\n {\n ...(runtimeContext ?? {}),\n attemptedCommand: renderAttemptedCommand(argv),\n normalizedInvocationArgs: [...argv],\n providedOptionFlags: extractProvidedOptionFlags(argv),\n },\n );\n printError(JSON.stringify(envelope, null, 2));\n }\n process.exitCode = EXIT_CODE.USAGE;\n return true;\n }\n if (!bootstrapGlobal.quiet) {\n const payload = buildJsonHelpPayload(rootProgram, targetCommand, argv, helpRequest.commandPathTokens, extensionDescriptors);\n writeStdout(`${JSON.stringify(payload, null, 2)}\\n`);\n }\n process.exitCode = EXIT_CODE.SUCCESS;\n return true;\n}\n\nexport function buildCreateUpdatePolicyHelpText(\n commandName: \"create\" | \"update\",\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>,\n argv: string[],\n): string {\n const selectedTypeRaw = parseBootstrapTypeValue(argv);\n if (!selectedTypeRaw) {\n const allowed = typeRegistry.types.join(\"|\");\n const lines = [\n \"\",\n \"Type-aware option policies:\",\n \" pass --type <value> with --help to render required/disabled/hidden option policy details for that type.\",\n ` active type values: ${allowed}`,\n ];\n if (commandName === \"create\") {\n lines.push(\n \" scheduling shortcut: use --schedule-preset lightweight for Reminder/Meeting/Event minimal create flows.\",\n );\n }\n return lines.join(\"\\n\");\n }\n\n const typeDefinition = resolveTypeDefinition(selectedTypeRaw, typeRegistry);\n if (!typeDefinition) {\n const allowed = typeRegistry.types.join(\"|\");\n return [\n \"\",\n `Type-aware option policies: type \"${selectedTypeRaw}\" is not in the active registry.`,\n ` active type values: ${allowed}`,\n ].join(\"\\n\");\n }\n\n const baseRequired =\n commandName === \"create\"\n ? new Set<string>([\"title\", \"description\", \"type\", ...typeDefinition.required_create_fields, ...typeDefinition.required_create_repeatables])\n : new Set<string>();\n const policyState = resolveCommandOptionPolicyState(typeDefinition, commandName, baseRequired);\n const toFlags = (options: string[]): string =>\n options.length > 0 ? options.map((option) => commandOptionFlagLabel(commandName, option)).join(\", \") : \"none\";\n\n const lines = [\n \"\",\n `Type-aware option policies for ${typeDefinition.name}:`,\n ` required: ${toFlags(policyState.required)}`,\n ` disabled: ${toFlags(policyState.disabled)}`,\n ` hidden: ${toFlags(policyState.hidden)}`,\n ];\n if (commandName === \"create\" && [\"Reminder\", \"Meeting\", \"Event\"].includes(typeDefinition.name)) {\n lines.push(\n \" schedule preset: --schedule-preset lightweight switches schedule artifacts to progressive required-option policy.\",\n );\n lines.push(\" strict parity remains available via --create-mode strict.\");\n }\n if (typeDefinition.options.length === 0) {\n lines.push(\" type options: none\");\n } else {\n lines.push(\" type options:\");\n for (const option of typeDefinition.options) {\n const requiredLabel = option.required ? \" (required)\" : \"\";\n const aliases = option.aliases ?? [];\n lines.push(` - ${option.key}${requiredLabel}`);\n lines.push(` values: ${option.values.length > 0 ? option.values.join(\"|\") : \"any non-empty string\"}`);\n lines.push(` aliases: ${aliases.length > 0 ? aliases.join(\"|\") : \"none\"}`);\n if (option.description && option.description.trim().length > 0) {\n lines.push(` description: ${option.description.trim()}`);\n }\n }\n }\n if (policyState.errors.length > 0) {\n lines.push(` config errors: ${policyState.errors.join(\"; \")}`);\n }\n return lines.join(\"\\n\");\n}\n\nexport function attachCreateUpdatePolicyHelpText(\n rootProgram: Command,\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>,\n argv: string[],\n): void {\n const bootstrapCommand = parseBootstrapCommandName(argv);\n if (bootstrapCommand !== \"create\" && bootstrapCommand !== \"update\") {\n return;\n }\n const command = findDirectChildCommand(rootProgram, bootstrapCommand);\n if (!command) {\n return;\n }\n command.addHelpText(\"after\", buildCreateUpdatePolicyHelpText(bootstrapCommand, typeRegistry, argv));\n}\n"],"names":[],"mappings":"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","debugId":"49c2174d-1221-5026-b8ae-5dfab9778c90"}
package/dist/cli/main.js CHANGED
@@ -1,10 +1,12 @@
1
1
  #!/usr/bin/env node
2
+
3
+ !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]="fa3533db-abe8-515b-9879-5faf8c891e25")}catch(e){}}();
2
4
  import fs from "node:fs";
3
5
  import path from "node:path";
4
- import { fileURLToPath } from "node:url";
5
6
  import { Command } from "commander";
6
7
  import { activateExtensions, clearActiveExtensionHooks, getActiveCommandResult, getActiveExtensionRegistrations, loadExtensions, runActiveCommandHandler, runActiveParserOverride, runActivePreflightOverride, runAfterCommandHooks, runBeforeCommandHooks, setActiveCommandResult, setActiveCommandContext, setActiveExtensionCommands, setActiveExtensionHooks, setActiveExtensionParsers, setActiveExtensionPreflight, setActiveExtensionRegistrations, setActiveExtensionRenderers, setActiveExtensionServices, } from "../core/extensions/index.js";
7
8
  import { pathExists } from "../core/fs/fs-utils.js";
9
+ import { resolvePmPackageRootFromModule } from "../core/packages/root.js";
8
10
  import { resolveItemTypeRegistry, } from "../core/item/type-registry.js";
9
11
  import { resolveRuntimeFieldRegistry, } from "../core/schema/runtime-schema.js";
10
12
  import { EXIT_CODE, resolveTelemetryErrorCategory } from "../core/shared/constants.js";
@@ -22,10 +24,6 @@ import { attachRichHelpText } from "./help-content.js";
22
24
  import { extractProvidedOptionFlags, normalizeLongOptionFlag, renderPmCommand, } from "./argv-utils.js";
23
25
  import { classifyCommanderError, classifyPmCliError, classifyUnknownError, formatPmCliErrorForDisplay, formatPmCliErrorForJson, formatUnknownErrorForJson, } from "./error-guidance.js";
24
26
  import { applyDefaultOutputFormat, clearResolvedGlobalOptions, collect, formatHookWarnings, getCommandPath, getGlobalOptions, invalidateSearchCachesForMutation, setResolvedGlobalOptions, } from "./registration-helpers.js";
25
- import { registerSetupCommands } from "./register-setup.js";
26
- import { registerListQueryCommands } from "./register-list-query.js";
27
- import { registerMutationCommands } from "./register-mutation.js";
28
- import { registerOperationCommands } from "./register-operations.js";
29
27
  import { normalizeExtensionCommandPath, collectDynamicExtensionFlagHelpByCommand, collectExtensionCommandHelpDescriptors, applyDynamicExtensionArguments, buildDynamicExtensionCommandMetadataHelp, findCommandByPath, ensureCommandPath, } from "./extension-command-help.js";
30
28
  import { parseBootstrapGlobalOptions, applyBootstrapPagerPolicy, parseBootstrapHelpRequest, parseBootstrapCommandName, normalizeBootstrapInvocation, } from "./bootstrap-args.js";
31
29
  import { collectMandatoryMigrationBlockers, enforceMandatoryMigrationWriteGate, enforceItemFormatWriteGateAndPreflightMigration, resolveMigrationId, resolveNormalizedMigrationStatus, } from "./migration-gates.js";
@@ -33,8 +31,7 @@ import { isKnownHelpCommandPath, formatCommanderUsageMessage, formatCommanderUsa
33
31
  import { maybeRenderBootstrapJsonHelp, attachCreateUpdatePolicyHelpText, } from "./help-json-payload.js";
34
32
  const PM_PACKAGE_ROOT_ENV = "PM_CLI_PACKAGE_ROOT";
35
33
  function resolvePmPackageRoot() {
36
- const mainPath = fileURLToPath(import.meta.url);
37
- return path.resolve(path.dirname(mainPath), "../..");
34
+ return resolvePmPackageRootFromModule(import.meta.url, ["../.."]);
38
35
  }
39
36
  if (typeof process.env[PM_PACKAGE_ROOT_ENV] !== "string" || process.env[PM_PACKAGE_ROOT_ENV]?.trim().length === 0) {
40
37
  process.env[PM_PACKAGE_ROOT_ENV] = resolvePmPackageRoot();
@@ -49,6 +46,8 @@ const TELEMETRY_COMMAND_RESOLUTION_SET = new Set([
49
46
  "missing_required_argument",
50
47
  "invalid_usage",
51
48
  "validation_failed",
49
+ "health_findings",
50
+ "validation_findings",
52
51
  "conflict",
53
52
  "runtime_failed",
54
53
  "unknown_failed",
@@ -57,6 +56,26 @@ const TELEMETRY_RESOLUTION_STAGE_SET = new Set(["parse", "preflight", "execute",
57
56
  const TELEMETRY_ERROR_CATEGORY_SET = new Set(["usage", "validation", "conflict", "runtime", "unknown"]);
58
57
  let runtimeExtensionSnapshotCache = null;
59
58
  let activeRuntimeExtensionCommandDescriptors = new Map();
59
+ let setupRegistrationModulePromise = null;
60
+ let listQueryRegistrationModulePromise = null;
61
+ let mutationRegistrationModulePromise = null;
62
+ let operationRegistrationModulePromise = null;
63
+ async function loadSetupRegistrationModule() {
64
+ setupRegistrationModulePromise ??= import("./register-setup.js");
65
+ return setupRegistrationModulePromise;
66
+ }
67
+ async function loadListQueryRegistrationModule() {
68
+ listQueryRegistrationModulePromise ??= import("./register-list-query.js");
69
+ return listQueryRegistrationModulePromise;
70
+ }
71
+ async function loadMutationRegistrationModule() {
72
+ mutationRegistrationModulePromise ??= import("./register-mutation.js");
73
+ return mutationRegistrationModulePromise;
74
+ }
75
+ async function loadOperationRegistrationModule() {
76
+ operationRegistrationModulePromise ??= import("./register-operations.js");
77
+ return operationRegistrationModulePromise;
78
+ }
60
79
  function describeUnknownError(error) {
61
80
  if (error instanceof PmCliError) {
62
81
  return error.message;
@@ -80,28 +99,31 @@ function inferMissingFieldsFromErrorMessage(message) {
80
99
  function buildPmCliRecoveryContext(context, invocationArgv, rawMessage) {
81
100
  const attemptedCommand = renderAttemptedCommand(invocationArgv);
82
101
  const providedFields = extractProvidedOptionFlags(invocationArgv);
83
- const inferredMissing = inferMissingFieldsFromErrorMessage(rawMessage);
102
+ const providedSet = new Set(providedFields.map((flag) => normalizeLongOptionFlag(flag) ?? flag));
103
+ const rawInferred = inferMissingFieldsFromErrorMessage(rawMessage);
104
+ const trulyMissing = rawInferred?.filter((flag) => !providedSet.has(normalizeLongOptionFlag(flag) ?? flag));
105
+ const inferredMissing = trulyMissing && trulyMissing.length > 0 ? trulyMissing : undefined;
84
106
  const existingRecovery = context?.recovery;
85
107
  let suggestedRetry = existingRecovery?.suggested_retry;
86
108
  if (!suggestedRetry && inferredMissing && inferredMissing.length > 0) {
87
109
  const missingFlag = inferredMissing[0];
88
110
  const normalizedMissing = normalizeLongOptionFlag(missingFlag);
89
111
  if (normalizedMissing) {
90
- const alreadyProvided = invocationArgv.some((token) => normalizeLongOptionFlag(token) === normalizedMissing);
91
- if (!alreadyProvided) {
92
- suggestedRetry = renderAttemptedCommand([...invocationArgv, normalizedMissing, "<value>"]);
93
- }
112
+ suggestedRetry = renderAttemptedCommand([...invocationArgv, normalizedMissing, "<value>"]);
94
113
  }
95
114
  }
96
115
  if (!suggestedRetry) {
97
116
  suggestedRetry = attemptedCommand;
98
117
  }
118
+ if (suggestedRetry === attemptedCommand) {
119
+ suggestedRetry = undefined;
120
+ }
99
121
  const recovery = {
100
122
  attempted_command: existingRecovery?.attempted_command ?? attemptedCommand,
101
123
  normalized_args: existingRecovery?.normalized_args ?? [...invocationArgv],
102
124
  provided_fields: existingRecovery?.provided_fields ?? (providedFields.length > 0 ? providedFields : undefined),
103
125
  missing: existingRecovery?.missing ?? inferredMissing,
104
- suggested_retry: suggestedRetry,
126
+ ...(suggestedRetry ? { suggested_retry: suggestedRetry } : {}),
105
127
  };
106
128
  return {
107
129
  ...(context ?? {}),
@@ -240,8 +262,7 @@ function buildPostActionTelemetryOutcome() {
240
262
  : undefined;
241
263
  const resultExitCode = readRecordNumber(result, "exit_code", "exitCode");
242
264
  const exitCode = processExitCode ?? resultExitCode ?? EXIT_CODE.SUCCESS;
243
- const resultOk = readRecordBoolean(result, "ok");
244
- const ok = resultOk ?? exitCode === EXIT_CODE.SUCCESS;
265
+ const ok = exitCode === EXIT_CODE.SUCCESS;
245
266
  const errorCode = readRecordString(result, "error_code", "errorCode") ?? inferPostActionErrorCode(ok, exitCode);
246
267
  const errorCategory = normalizeTelemetryErrorCategory(readRecordString(result, "error_category", "errorCategory")) ??
247
268
  (!ok ? resolveTelemetryErrorCategory(errorCode) : undefined);
@@ -715,7 +736,13 @@ function wrapProgramActionsForExtensionHandlers(rootProgram) {
715
736
  }
716
737
  if (extensionCommandResult.handled) {
717
738
  setActiveCommandResult(extensionCommandResult.result);
718
- printResult(extensionCommandResult.result, globalOptions);
739
+ printResult(extensionCommandResult.result, {
740
+ ...globalOptions,
741
+ command: commandPath,
742
+ commandArgs,
743
+ commandOptions,
744
+ pmRoot,
745
+ });
719
746
  if (globalOptions.profile) {
720
747
  printError(`profile:command=${commandPath} took_ms=${Date.now() - startedAt}`);
721
748
  }
@@ -796,7 +823,13 @@ async function registerDynamicExtensionCommandPaths(rootProgram, invocationArgv)
796
823
  const scopedOptions = extractCommandScopedOptions(command, command.args.map(String), extensionFlagDefinitions);
797
824
  const result = await runRequiredExtensionCommand(command, scopedOptions, globalOptions);
798
825
  await invalidateSearchCachesForMutation(globalOptions, result);
799
- printResult(result, globalOptions);
826
+ printResult(result, {
827
+ ...globalOptions,
828
+ command: commandPath,
829
+ commandArgs: command.args.map(String),
830
+ commandOptions: scopedOptions,
831
+ pmRoot,
832
+ });
800
833
  if (globalOptions.profile) {
801
834
  printError(`profile:command=${commandPath} took_ms=${Date.now() - startedAt}`);
802
835
  }
@@ -805,8 +838,7 @@ async function registerDynamicExtensionCommandPaths(rootProgram, invocationArgv)
805
838
  }
806
839
  function resolveCliVersion() {
807
840
  try {
808
- const currentFilePath = fileURLToPath(import.meta.url);
809
- const packageJsonPath = path.resolve(path.dirname(currentFilePath), "../../package.json");
841
+ const packageJsonPath = path.join(resolvePmPackageRoot(), "package.json");
810
842
  const raw = fs.readFileSync(packageJsonPath, "utf8");
811
843
  const parsed = JSON.parse(raw);
812
844
  return typeof parsed.version === "string" ? parsed.version : "0.0.0";
@@ -970,11 +1002,73 @@ program.hook("postAction", async () => {
970
1002
  });
971
1003
  await runAndClearAfterCommandHooks(outcome);
972
1004
  });
973
- registerSetupCommands(program);
974
- registerListQueryCommands(program);
975
- registerMutationCommands(program);
976
- registerOperationCommands(program);
977
1005
  const VERSION_FLAG_TOKENS = new Set(["--version", "-V"]);
1006
+ const SETUP_COMMAND_NAMES = new Set([
1007
+ "config",
1008
+ "extension",
1009
+ "init",
1010
+ "install",
1011
+ "package",
1012
+ "packages",
1013
+ "templates",
1014
+ "upgrade",
1015
+ ]);
1016
+ const LIST_QUERY_COMMAND_NAMES = new Set([
1017
+ "activity",
1018
+ "aggregate",
1019
+ "context",
1020
+ "ctx",
1021
+ "get",
1022
+ "history",
1023
+ "list",
1024
+ "list-all",
1025
+ "list-blocked",
1026
+ "list-canceled",
1027
+ "list-closed",
1028
+ "list-draft",
1029
+ "list-in-progress",
1030
+ "list-open",
1031
+ "search",
1032
+ ]);
1033
+ const MUTATION_COMMAND_NAMES = new Set([
1034
+ "append",
1035
+ "close",
1036
+ "comments",
1037
+ "delete",
1038
+ "deps",
1039
+ "discover",
1040
+ "docs",
1041
+ "files",
1042
+ "learnings",
1043
+ "notes",
1044
+ "plan",
1045
+ "restore",
1046
+ "update",
1047
+ "update-many",
1048
+ "create",
1049
+ ]);
1050
+ const OPERATION_COMMAND_NAMES = new Set([
1051
+ "claim",
1052
+ "close-task",
1053
+ "contracts",
1054
+ "gc",
1055
+ "health",
1056
+ "pause-task",
1057
+ "release",
1058
+ "start-task",
1059
+ "stats",
1060
+ "test",
1061
+ "test-all",
1062
+ "test-runs",
1063
+ "test-runs-worker",
1064
+ "validate",
1065
+ ]);
1066
+ const REGISTER_ALL_CORE_COMMAND_FAMILIES = {
1067
+ setup: true,
1068
+ listQuery: true,
1069
+ mutation: true,
1070
+ operation: true,
1071
+ };
978
1072
  const RUNTIME_SCHEMA_FLAG_BOOTSTRAP_COMMANDS = new Set([
979
1073
  "create",
980
1074
  "update",
@@ -995,6 +1089,80 @@ const RUNTIME_SCHEMA_FLAG_BOOTSTRAP_COMMANDS = new Set([
995
1089
  function invocationRequestsVersion(invocationArgv) {
996
1090
  return invocationArgv.some((token) => VERSION_FLAG_TOKENS.has(token));
997
1091
  }
1092
+ function resolveCoreCommandRegistrationSelection(invocationArgv) {
1093
+ if (invocationRequestsVersion(invocationArgv)) {
1094
+ return {
1095
+ setup: false,
1096
+ listQuery: false,
1097
+ mutation: false,
1098
+ operation: false,
1099
+ };
1100
+ }
1101
+ if (invocationArgv.length === 0 ||
1102
+ parseBootstrapHelpRequest(invocationArgv).requested) {
1103
+ return REGISTER_ALL_CORE_COMMAND_FAMILIES;
1104
+ }
1105
+ const commandName = parseBootstrapCommandName(invocationArgv);
1106
+ if (!commandName) {
1107
+ return REGISTER_ALL_CORE_COMMAND_FAMILIES;
1108
+ }
1109
+ const normalizedCommand = commandName.trim().toLowerCase();
1110
+ if (SETUP_COMMAND_NAMES.has(normalizedCommand)) {
1111
+ return {
1112
+ setup: true,
1113
+ listQuery: false,
1114
+ mutation: false,
1115
+ operation: false,
1116
+ };
1117
+ }
1118
+ if (LIST_QUERY_COMMAND_NAMES.has(normalizedCommand)) {
1119
+ return {
1120
+ setup: false,
1121
+ listQuery: true,
1122
+ mutation: false,
1123
+ operation: false,
1124
+ };
1125
+ }
1126
+ if (MUTATION_COMMAND_NAMES.has(normalizedCommand)) {
1127
+ return {
1128
+ setup: false,
1129
+ listQuery: false,
1130
+ mutation: true,
1131
+ operation: false,
1132
+ };
1133
+ }
1134
+ if (OPERATION_COMMAND_NAMES.has(normalizedCommand)) {
1135
+ return {
1136
+ setup: false,
1137
+ listQuery: false,
1138
+ mutation: false,
1139
+ operation: true,
1140
+ };
1141
+ }
1142
+ return REGISTER_ALL_CORE_COMMAND_FAMILIES;
1143
+ }
1144
+ function shouldAttachRichHelpTextForInvocation(invocationArgv) {
1145
+ return (invocationArgv.length === 0 ||
1146
+ parseBootstrapHelpRequest(invocationArgv).requested);
1147
+ }
1148
+ async function registerCoreCommandFamilies(rootProgram, selection) {
1149
+ if (selection.setup) {
1150
+ const { registerSetupCommands } = await loadSetupRegistrationModule();
1151
+ registerSetupCommands(rootProgram);
1152
+ }
1153
+ if (selection.listQuery) {
1154
+ const { registerListQueryCommands } = await loadListQueryRegistrationModule();
1155
+ registerListQueryCommands(rootProgram);
1156
+ }
1157
+ if (selection.mutation) {
1158
+ const { registerMutationCommands } = await loadMutationRegistrationModule();
1159
+ registerMutationCommands(rootProgram);
1160
+ }
1161
+ if (selection.operation) {
1162
+ const { registerOperationCommands } = await loadOperationRegistrationModule();
1163
+ registerOperationCommands(rootProgram);
1164
+ }
1165
+ }
998
1166
  function isKnownTopLevelCommandOrAlias(rootProgram, commandName) {
999
1167
  const normalized = commandName.trim().toLowerCase();
1000
1168
  for (const command of rootProgram.commands) {
@@ -1032,12 +1200,17 @@ function shouldRegisterRuntimeSchemaFlags(invocationArgv) {
1032
1200
  return RUNTIME_SCHEMA_FLAG_BOOTSTRAP_COMMANDS.has(commandName);
1033
1201
  }
1034
1202
  const bootstrapInvocation = normalizeBootstrapInvocation(process.argv.slice(2));
1035
- attachRichHelpText(program, bootstrapInvocation.argv);
1036
1203
  async function main() {
1037
1204
  const invocationArgv = bootstrapInvocation.argv;
1038
1205
  const invocationProcessArgv = [process.argv[0], process.argv[1], ...invocationArgv];
1206
+ const isBareInvocation = invocationArgv.length === 0;
1039
1207
  try {
1040
1208
  applyBootstrapPagerPolicy(invocationArgv);
1209
+ const registrationSelection = resolveCoreCommandRegistrationSelection(invocationArgv);
1210
+ await registerCoreCommandFamilies(program, registrationSelection);
1211
+ if (shouldAttachRichHelpTextForInvocation(invocationArgv)) {
1212
+ attachRichHelpText(program, invocationArgv);
1213
+ }
1041
1214
  const registerDynamicCommands = shouldRegisterDynamicExtensionPaths(program, invocationArgv);
1042
1215
  if (registerDynamicCommands) {
1043
1216
  await registerDynamicExtensionCommandPaths(program, invocationArgv);
@@ -1054,6 +1227,10 @@ async function main() {
1054
1227
  if (renderedBootstrapJsonHelp) {
1055
1228
  return;
1056
1229
  }
1230
+ if (isBareInvocation) {
1231
+ program.outputHelp();
1232
+ return;
1233
+ }
1057
1234
  await program.parseAsync(invocationProcessArgv);
1058
1235
  }
1059
1236
  catch (error) {
@@ -1345,4 +1522,5 @@ async function main() {
1345
1522
  }
1346
1523
  }
1347
1524
  void main();
1348
- //# sourceMappingURL=main.js.map
1525
+ //# sourceMappingURL=main.js.map
1526
+ //# debugId=fa3533db-abe8-515b-9879-5faf8c891e25