monday-cli 0.2.0 → 0.3.0
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/CHANGELOG.md +324 -2
- package/README.md +128 -30
- package/dist/api/board-favorites.d.ts +329 -0
- package/dist/api/board-favorites.d.ts.map +1 -0
- package/dist/api/board-favorites.js +353 -0
- package/dist/api/board-favorites.js.map +1 -0
- package/dist/api/board-mutation-result.d.ts +9 -5
- package/dist/api/board-mutation-result.d.ts.map +1 -1
- package/dist/api/board-mutation-result.js +9 -5
- package/dist/api/board-mutation-result.js.map +1 -1
- package/dist/api/board-relation-validation.d.ts +161 -0
- package/dist/api/board-relation-validation.d.ts.map +1 -0
- package/dist/api/board-relation-validation.js +317 -0
- package/dist/api/board-relation-validation.js.map +1 -0
- package/dist/api/cache.d.ts +14 -5
- package/dist/api/cache.d.ts.map +1 -1
- package/dist/api/cache.js +8 -10
- package/dist/api/cache.js.map +1 -1
- package/dist/api/column-mapping.js +2 -2
- package/dist/api/column-mapping.js.map +1 -1
- package/dist/api/column-mutation-result.d.ts +9 -5
- package/dist/api/column-mutation-result.d.ts.map +1 -1
- package/dist/api/column-mutation-result.js +9 -5
- package/dist/api/column-mutation-result.js.map +1 -1
- package/dist/api/column-types.d.ts +26 -7
- package/dist/api/column-types.d.ts.map +1 -1
- package/dist/api/column-types.js +42 -3
- package/dist/api/column-types.js.map +1 -1
- package/dist/api/column-values.d.ts +228 -31
- package/dist/api/column-values.d.ts.map +1 -1
- package/dist/api/column-values.js +551 -124
- package/dist/api/column-values.js.map +1 -1
- package/dist/api/cross-board-search.d.ts +501 -0
- package/dist/api/cross-board-search.d.ts.map +1 -0
- package/dist/api/cross-board-search.js +547 -0
- package/dist/api/cross-board-search.js.map +1 -0
- package/dist/api/dev-conventions.d.ts +1038 -0
- package/dist/api/dev-conventions.d.ts.map +1 -0
- package/dist/api/dev-conventions.js +1556 -0
- package/dist/api/dev-conventions.js.map +1 -0
- package/dist/api/dry-run.d.ts +32 -5
- package/dist/api/dry-run.d.ts.map +1 -1
- package/dist/api/dry-run.js +149 -32
- package/dist/api/dry-run.js.map +1 -1
- package/dist/api/errors.d.ts.map +1 -1
- package/dist/api/errors.js +28 -7
- package/dist/api/errors.js.map +1 -1
- package/dist/api/group-mutation-result.d.ts +9 -5
- package/dist/api/group-mutation-result.d.ts.map +1 -1
- package/dist/api/group-mutation-result.js +9 -5
- package/dist/api/group-mutation-result.js.map +1 -1
- package/dist/api/item-history-projection.d.ts +919 -0
- package/dist/api/item-history-projection.d.ts.map +1 -0
- package/dist/api/item-history-projection.js +1104 -0
- package/dist/api/item-history-projection.js.map +1 -0
- package/dist/api/item-mutation-execute.d.ts +82 -0
- package/dist/api/item-mutation-execute.d.ts.map +1 -0
- package/dist/api/item-mutation-execute.js +199 -0
- package/dist/api/item-mutation-execute.js.map +1 -0
- package/dist/api/notifications.d.ts +156 -0
- package/dist/api/notifications.d.ts.map +1 -0
- package/dist/api/notifications.js +215 -0
- package/dist/api/notifications.js.map +1 -0
- package/dist/api/oauth-test-helper.d.ts +64 -0
- package/dist/api/oauth-test-helper.d.ts.map +1 -0
- package/dist/api/oauth-test-helper.js +179 -0
- package/dist/api/oauth-test-helper.js.map +1 -0
- package/dist/api/oauth.d.ts +198 -0
- package/dist/api/oauth.d.ts.map +1 -0
- package/dist/api/oauth.js +471 -0
- package/dist/api/oauth.js.map +1 -0
- package/dist/api/partial-success-bulk.d.ts +422 -0
- package/dist/api/partial-success-bulk.d.ts.map +1 -0
- package/dist/api/partial-success-bulk.js +378 -0
- package/dist/api/partial-success-bulk.js.map +1 -0
- package/dist/api/people.d.ts +54 -1
- package/dist/api/people.d.ts.map +1 -1
- package/dist/api/people.js +27 -3
- package/dist/api/people.js.map +1 -1
- package/dist/api/probes.d.ts +487 -0
- package/dist/api/probes.d.ts.map +1 -0
- package/dist/api/probes.js +881 -0
- package/dist/api/probes.js.map +1 -0
- package/dist/api/raw-document.d.ts.map +1 -1
- package/dist/api/raw-document.js +2 -2
- package/dist/api/raw-document.js.map +1 -1
- package/dist/api/raw-write.d.ts.map +1 -1
- package/dist/api/raw-write.js +11 -3
- package/dist/api/raw-write.js.map +1 -1
- package/dist/api/resolution-context.d.ts +23 -11
- package/dist/api/resolution-context.d.ts.map +1 -1
- package/dist/api/resolution-context.js +53 -12
- package/dist/api/resolution-context.js.map +1 -1
- package/dist/api/resolution-pass.d.ts +30 -1
- package/dist/api/resolution-pass.d.ts.map +1 -1
- package/dist/api/resolution-pass.js +36 -1
- package/dist/api/resolution-pass.js.map +1 -1
- package/dist/api/resolve-client.d.ts +11 -0
- package/dist/api/resolve-client.d.ts.map +1 -1
- package/dist/api/resolve-client.js +1 -1
- package/dist/api/resolve-client.js.map +1 -1
- package/dist/api/response-root.d.ts +92 -46
- package/dist/api/response-root.d.ts.map +1 -1
- package/dist/api/response-root.js +93 -41
- package/dist/api/response-root.js.map +1 -1
- package/dist/api/tag-directory.d.ts +154 -0
- package/dist/api/tag-directory.d.ts.map +1 -0
- package/dist/api/tag-directory.js +325 -0
- package/dist/api/tag-directory.js.map +1 -0
- package/dist/api/time-tracking.d.ts +165 -0
- package/dist/api/time-tracking.d.ts.map +1 -0
- package/dist/api/time-tracking.js +135 -0
- package/dist/api/time-tracking.js.map +1 -0
- package/dist/api/transport.js +3 -3
- package/dist/api/transport.js.map +1 -1
- package/dist/api/usage.d.ts +190 -0
- package/dist/api/usage.d.ts.map +1 -0
- package/dist/api/usage.js +194 -0
- package/dist/api/usage.js.map +1 -0
- package/dist/api/users-fan-out-mutation.d.ts.map +1 -1
- package/dist/api/users-fan-out-mutation.js +10 -5
- package/dist/api/users-fan-out-mutation.js.map +1 -1
- package/dist/api/webhooks.d.ts +357 -0
- package/dist/api/webhooks.d.ts.map +1 -0
- package/dist/api/webhooks.js +333 -0
- package/dist/api/webhooks.js.map +1 -0
- package/dist/cli/envelope-out.d.ts +18 -1
- package/dist/cli/envelope-out.d.ts.map +1 -1
- package/dist/cli/envelope-out.js +16 -2
- package/dist/cli/envelope-out.js.map +1 -1
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +120 -1
- package/dist/cli/program.js.map +1 -1
- package/dist/cli/run.d.ts +12 -0
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +2 -0
- package/dist/cli/run.js.map +1 -1
- package/dist/commands/account/tags.d.ts +37 -0
- package/dist/commands/account/tags.d.ts.map +1 -0
- package/dist/commands/account/tags.js +84 -0
- package/dist/commands/account/tags.js.map +1 -0
- package/dist/commands/auth/login.d.ts +14 -0
- package/dist/commands/auth/login.d.ts.map +1 -0
- package/dist/commands/auth/login.js +314 -0
- package/dist/commands/auth/login.js.map +1 -0
- package/dist/commands/auth/logout.d.ts +28 -0
- package/dist/commands/auth/logout.d.ts.map +1 -0
- package/dist/commands/auth/logout.js +94 -0
- package/dist/commands/auth/logout.js.map +1 -0
- package/dist/commands/board/archive.d.ts.map +1 -1
- package/dist/commands/board/archive.js +14 -14
- package/dist/commands/board/archive.js.map +1 -1
- package/dist/commands/board/column-create.d.ts +3 -3
- package/dist/commands/board/column-create.d.ts.map +1 -1
- package/dist/commands/board/column-create.js +52 -45
- package/dist/commands/board/column-create.js.map +1 -1
- package/dist/commands/board/column-delete.d.ts.map +1 -1
- package/dist/commands/board/column-delete.js +15 -16
- package/dist/commands/board/column-delete.js.map +1 -1
- package/dist/commands/board/column-update.d.ts.map +1 -1
- package/dist/commands/board/column-update.js +23 -22
- package/dist/commands/board/column-update.js.map +1 -1
- package/dist/commands/board/create.d.ts.map +1 -1
- package/dist/commands/board/create.js +14 -17
- package/dist/commands/board/create.js.map +1 -1
- package/dist/commands/board/delete.d.ts.map +1 -1
- package/dist/commands/board/delete.js +12 -15
- package/dist/commands/board/delete.js.map +1 -1
- package/dist/commands/board/describe.d.ts.map +1 -1
- package/dist/commands/board/describe.js +30 -0
- package/dist/commands/board/describe.js.map +1 -1
- package/dist/commands/board/duplicate.d.ts.map +1 -1
- package/dist/commands/board/duplicate.js +12 -13
- package/dist/commands/board/duplicate.js.map +1 -1
- package/dist/commands/board/favorites.d.ts +33 -0
- package/dist/commands/board/favorites.d.ts.map +1 -0
- package/dist/commands/board/favorites.js +74 -0
- package/dist/commands/board/favorites.js.map +1 -0
- package/dist/commands/board/find.d.ts +1 -1
- package/dist/commands/board/group-archive.d.ts.map +1 -1
- package/dist/commands/board/group-archive.js +12 -16
- package/dist/commands/board/group-archive.js.map +1 -1
- package/dist/commands/board/group-create.d.ts.map +1 -1
- package/dist/commands/board/group-create.js +9 -19
- package/dist/commands/board/group-create.js.map +1 -1
- package/dist/commands/board/group-delete.d.ts.map +1 -1
- package/dist/commands/board/group-delete.js +12 -16
- package/dist/commands/board/group-delete.js.map +1 -1
- package/dist/commands/board/group-duplicate.d.ts.map +1 -1
- package/dist/commands/board/group-duplicate.js +12 -16
- package/dist/commands/board/group-duplicate.js.map +1 -1
- package/dist/commands/board/group-update.d.ts.map +1 -1
- package/dist/commands/board/group-update.js +12 -11
- package/dist/commands/board/group-update.js.map +1 -1
- package/dist/commands/board/list.d.ts +1 -1
- package/dist/commands/board/update.d.ts.map +1 -1
- package/dist/commands/board/update.js +16 -11
- package/dist/commands/board/update.js.map +1 -1
- package/dist/commands/cache/list.d.ts +2 -0
- package/dist/commands/cache/list.d.ts.map +1 -1
- package/dist/commands/cache/list.js +2 -2
- package/dist/commands/cache/list.js.map +1 -1
- package/dist/commands/dev/_shared.d.ts +40 -0
- package/dist/commands/dev/_shared.d.ts.map +1 -0
- package/dist/commands/dev/_shared.js +104 -0
- package/dist/commands/dev/_shared.js.map +1 -0
- package/dist/commands/dev/configure.d.ts +36 -0
- package/dist/commands/dev/configure.d.ts.map +1 -0
- package/dist/commands/dev/configure.js +145 -0
- package/dist/commands/dev/configure.js.map +1 -0
- package/dist/commands/dev/discover.d.ts +34 -0
- package/dist/commands/dev/discover.d.ts.map +1 -0
- package/dist/commands/dev/discover.js +117 -0
- package/dist/commands/dev/discover.js.map +1 -0
- package/dist/commands/dev/doctor.d.ts +39 -0
- package/dist/commands/dev/doctor.d.ts.map +1 -0
- package/dist/commands/dev/doctor.js +91 -0
- package/dist/commands/dev/doctor.js.map +1 -0
- package/dist/commands/dev/epic/items.d.ts +24 -0
- package/dist/commands/dev/epic/items.d.ts.map +1 -0
- package/dist/commands/dev/epic/items.js +103 -0
- package/dist/commands/dev/epic/items.js.map +1 -0
- package/dist/commands/dev/epic/list.d.ts +36 -0
- package/dist/commands/dev/epic/list.d.ts.map +1 -0
- package/dist/commands/dev/epic/list.js +120 -0
- package/dist/commands/dev/epic/list.js.map +1 -0
- package/dist/commands/dev/release/list.d.ts +21 -0
- package/dist/commands/dev/release/list.d.ts.map +1 -0
- package/dist/commands/dev/release/list.js +73 -0
- package/dist/commands/dev/release/list.js.map +1 -0
- package/dist/commands/dev/sprint/current.d.ts +24 -0
- package/dist/commands/dev/sprint/current.d.ts.map +1 -0
- package/dist/commands/dev/sprint/current.js +90 -0
- package/dist/commands/dev/sprint/current.js.map +1 -0
- package/dist/commands/dev/sprint/items.d.ts +34 -0
- package/dist/commands/dev/sprint/items.d.ts.map +1 -0
- package/dist/commands/dev/sprint/items.js +118 -0
- package/dist/commands/dev/sprint/items.js.map +1 -0
- package/dist/commands/dev/sprint/list.d.ts +41 -0
- package/dist/commands/dev/sprint/list.d.ts.map +1 -0
- package/dist/commands/dev/sprint/list.js +104 -0
- package/dist/commands/dev/sprint/list.js.map +1 -0
- package/dist/commands/dev/task/block.d.ts +29 -0
- package/dist/commands/dev/task/block.d.ts.map +1 -0
- package/dist/commands/dev/task/block.js +106 -0
- package/dist/commands/dev/task/block.js.map +1 -0
- package/dist/commands/dev/task/done.d.ts +30 -0
- package/dist/commands/dev/task/done.d.ts.map +1 -0
- package/dist/commands/dev/task/done.js +113 -0
- package/dist/commands/dev/task/done.js.map +1 -0
- package/dist/commands/dev/task/list.d.ts +42 -0
- package/dist/commands/dev/task/list.d.ts.map +1 -0
- package/dist/commands/dev/task/list.js +227 -0
- package/dist/commands/dev/task/list.js.map +1 -0
- package/dist/commands/dev/task/start.d.ts +29 -0
- package/dist/commands/dev/task/start.d.ts.map +1 -0
- package/dist/commands/dev/task/start.js +90 -0
- package/dist/commands/dev/task/start.js.map +1 -0
- package/dist/commands/emit.d.ts.map +1 -1
- package/dist/commands/emit.js +5 -3
- package/dist/commands/emit.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +95 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/item/archive.d.ts.map +1 -1
- package/dist/commands/item/archive.js +11 -0
- package/dist/commands/item/archive.js.map +1 -1
- package/dist/commands/item/clear.d.ts.map +1 -1
- package/dist/commands/item/clear.js +15 -0
- package/dist/commands/item/clear.js.map +1 -1
- package/dist/commands/item/create.d.ts.map +1 -1
- package/dist/commands/item/create.js +41 -8
- package/dist/commands/item/create.js.map +1 -1
- package/dist/commands/item/delete.d.ts.map +1 -1
- package/dist/commands/item/delete.js +11 -0
- package/dist/commands/item/delete.js.map +1 -1
- package/dist/commands/item/duplicate.d.ts.map +1 -1
- package/dist/commands/item/duplicate.js +12 -0
- package/dist/commands/item/duplicate.js.map +1 -1
- package/dist/commands/item/history.d.ts +60 -0
- package/dist/commands/item/history.d.ts.map +1 -0
- package/dist/commands/item/history.js +309 -0
- package/dist/commands/item/history.js.map +1 -0
- package/dist/commands/item/list.d.ts.map +1 -1
- package/dist/commands/item/list.js +16 -13
- package/dist/commands/item/list.js.map +1 -1
- package/dist/commands/item/move.d.ts.map +1 -1
- package/dist/commands/item/move.js +41 -7
- package/dist/commands/item/move.js.map +1 -1
- package/dist/commands/item/search.d.ts +99 -15
- package/dist/commands/item/search.d.ts.map +1 -1
- package/dist/commands/item/search.js +480 -36
- package/dist/commands/item/search.js.map +1 -1
- package/dist/commands/item/set.d.ts.map +1 -1
- package/dist/commands/item/set.js +52 -8
- package/dist/commands/item/set.js.map +1 -1
- package/dist/commands/item/time-track/start.d.ts +61 -0
- package/dist/commands/item/time-track/start.d.ts.map +1 -0
- package/dist/commands/item/time-track/start.js +138 -0
- package/dist/commands/item/time-track/start.js.map +1 -0
- package/dist/commands/item/time-track/stop.d.ts +32 -0
- package/dist/commands/item/time-track/stop.d.ts.map +1 -0
- package/dist/commands/item/time-track/stop.js +97 -0
- package/dist/commands/item/time-track/stop.js.map +1 -0
- package/dist/commands/item/update.d.ts +1 -0
- package/dist/commands/item/update.d.ts.map +1 -1
- package/dist/commands/item/update.js +103 -113
- package/dist/commands/item/update.js.map +1 -1
- package/dist/commands/item/upsert.d.ts.map +1 -1
- package/dist/commands/item/upsert.js +48 -1
- package/dist/commands/item/upsert.js.map +1 -1
- package/dist/commands/notification/send.d.ts +60 -0
- package/dist/commands/notification/send.d.ts.map +1 -0
- package/dist/commands/notification/send.js +147 -0
- package/dist/commands/notification/send.js.map +1 -0
- package/dist/commands/parse-argv.d.ts.map +1 -1
- package/dist/commands/parse-argv.js +14 -4
- package/dist/commands/parse-argv.js.map +1 -1
- package/dist/commands/raw/index.d.ts.map +1 -1
- package/dist/commands/raw/index.js +13 -15
- package/dist/commands/raw/index.js.map +1 -1
- package/dist/commands/run-by-id-lookup.d.ts.map +1 -1
- package/dist/commands/run-by-id-lookup.js +2 -2
- package/dist/commands/run-by-id-lookup.js.map +1 -1
- package/dist/commands/schema/index.d.ts +2 -0
- package/dist/commands/schema/index.d.ts.map +1 -1
- package/dist/commands/status.d.ts +120 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +365 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update/body-source.d.ts.map +1 -1
- package/dist/commands/update/body-source.js +2 -2
- package/dist/commands/update/body-source.js.map +1 -1
- package/dist/commands/update/create.d.ts +2 -3
- package/dist/commands/update/create.d.ts.map +1 -1
- package/dist/commands/update/create.js +15 -3
- package/dist/commands/update/create.js.map +1 -1
- package/dist/commands/update/delete.d.ts.map +1 -1
- package/dist/commands/update/delete.js +11 -0
- package/dist/commands/update/delete.js.map +1 -1
- package/dist/commands/update/edit.d.ts.map +1 -1
- package/dist/commands/update/edit.js +11 -0
- package/dist/commands/update/edit.js.map +1 -1
- package/dist/commands/update/list.d.ts.map +1 -1
- package/dist/commands/update/list.js +15 -12
- package/dist/commands/update/list.js.map +1 -1
- package/dist/commands/update/reply.d.ts.map +1 -1
- package/dist/commands/update/reply.js +11 -0
- package/dist/commands/update/reply.js.map +1 -1
- package/dist/commands/update/toggle.d.ts.map +1 -1
- package/dist/commands/update/toggle.js +13 -0
- package/dist/commands/update/toggle.js.map +1 -1
- package/dist/commands/usage.d.ts +58 -0
- package/dist/commands/usage.d.ts.map +1 -0
- package/dist/commands/usage.js +94 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands/webhook/create.d.ts +74 -0
- package/dist/commands/webhook/create.d.ts.map +1 -0
- package/dist/commands/webhook/create.js +150 -0
- package/dist/commands/webhook/create.js.map +1 -0
- package/dist/commands/webhook/delete.d.ts +46 -0
- package/dist/commands/webhook/delete.d.ts.map +1 -0
- package/dist/commands/webhook/delete.js +141 -0
- package/dist/commands/webhook/delete.js.map +1 -0
- package/dist/commands/webhook/list.d.ts +23 -0
- package/dist/commands/webhook/list.d.ts.map +1 -0
- package/dist/commands/webhook/list.js +68 -0
- package/dist/commands/webhook/list.js.map +1 -0
- package/dist/commands/workspace/create.d.ts.map +1 -1
- package/dist/commands/workspace/create.js +16 -0
- package/dist/commands/workspace/create.js.map +1 -1
- package/dist/commands/workspace/delete.d.ts.map +1 -1
- package/dist/commands/workspace/delete.js +13 -13
- package/dist/commands/workspace/delete.js.map +1 -1
- package/dist/commands/workspace/list.d.ts +1 -1
- package/dist/commands/workspace/update.d.ts.map +1 -1
- package/dist/commands/workspace/update.js +15 -15
- package/dist/commands/workspace/update.js.map +1 -1
- package/dist/config/credentials.d.ts +189 -0
- package/dist/config/credentials.d.ts.map +1 -0
- package/dist/config/credentials.js +300 -0
- package/dist/config/credentials.js.map +1 -0
- package/dist/config/profiles.d.ts +125 -0
- package/dist/config/profiles.d.ts.map +1 -0
- package/dist/config/profiles.js +227 -0
- package/dist/config/profiles.js.map +1 -0
- package/dist/types/global-flags.d.ts +1 -1
- package/dist/types/global-flags.d.ts.map +1 -1
- package/dist/types/global-flags.js +28 -16
- package/dist/types/global-flags.js.map +1 -1
- package/dist/types/ids.d.ts +2 -0
- package/dist/types/ids.d.ts.map +1 -1
- package/dist/types/ids.js +5 -3
- package/dist/types/ids.js.map +1 -1
- package/dist/utils/errors.d.ts +57 -3
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +69 -2
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/fs.d.ts +35 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +36 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/json.d.ts +60 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +86 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/output/ndjson.d.ts +65 -3
- package/dist/utils/output/ndjson.d.ts.map +1 -1
- package/dist/utils/output/ndjson.js +21 -0
- package/dist/utils/output/ndjson.js.map +1 -1
- package/dist/utils/redact.d.ts.map +1 -1
- package/dist/utils/redact.js +31 -0
- package/dist/utils/redact.js.map +1 -1
- package/package.json +2 -1
- package/dist/commands/account/client-helper.d.ts +0 -37
- package/dist/commands/account/client-helper.d.ts.map +0 -1
- package/dist/commands/account/client-helper.js +0 -55
- package/dist/commands/account/client-helper.js.map +0 -1
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `monday dev configure [--tasks-board <bid>] [--sprints-board
|
|
3
|
+
* <bid>] [--epics-board <bid>] [--bugs-board <bid>]
|
|
4
|
+
* [--releases-board <bid>]` — explicit per-board override of the
|
|
5
|
+
* Monday Dev mapping for the active profile (cli-design §4.3 +
|
|
6
|
+
* §5.9 + §11.3 + §13 v0.3 entry; v0.3-plan §3 M26).
|
|
7
|
+
*
|
|
8
|
+
* **Runtime body landed at M26a IMPL.** Reads the active profile's
|
|
9
|
+
* existing `[profiles.<name>.dev]` block (or starts empty if absent),
|
|
10
|
+
* additively merges the supplied `--<noun>-board` flags, writes back
|
|
11
|
+
* via `saveDevMapping`, and emits the canonical mapping via
|
|
12
|
+
* `emitMutation`.
|
|
13
|
+
*
|
|
14
|
+
* **Argv → TOML key mapping.** Commander's option-name camelCase
|
|
15
|
+
* → the TOML config's snake_case slots:
|
|
16
|
+
* --tasks-board → `tasks_board`
|
|
17
|
+
* --sprints-board → `sprints_board`
|
|
18
|
+
* --epics-board → `epics_board`
|
|
19
|
+
* --bugs-board → `bugs_board`
|
|
20
|
+
* --releases-board → `releases_board`
|
|
21
|
+
*
|
|
22
|
+
* Idempotent: yes (writing the same mapping is a no-op).
|
|
23
|
+
*/
|
|
24
|
+
import { z } from 'zod';
|
|
25
|
+
import { ApiError } from '../../utils/errors.js';
|
|
26
|
+
import { ensureSubcommand } from '../types.js';
|
|
27
|
+
import { parseArgv } from '../parse-argv.js';
|
|
28
|
+
import { emitMutation } from '../emit.js';
|
|
29
|
+
import { BoardIdSchema } from '../../types/ids.js';
|
|
30
|
+
import { devConfigureOutputSchema, loadDevMapping, saveDevMapping, } from '../../api/dev-conventions.js';
|
|
31
|
+
import { resolveActiveDevProfile } from './_shared.js';
|
|
32
|
+
const inputSchema = z
|
|
33
|
+
.object({
|
|
34
|
+
tasksBoard: BoardIdSchema.optional(),
|
|
35
|
+
sprintsBoard: BoardIdSchema.optional(),
|
|
36
|
+
epicsBoard: BoardIdSchema.optional(),
|
|
37
|
+
bugsBoard: BoardIdSchema.optional(),
|
|
38
|
+
releasesBoard: BoardIdSchema.optional(),
|
|
39
|
+
})
|
|
40
|
+
.strict()
|
|
41
|
+
.superRefine((value, ctx) => {
|
|
42
|
+
const anySet = value.tasksBoard !== undefined ||
|
|
43
|
+
value.sprintsBoard !== undefined ||
|
|
44
|
+
value.epicsBoard !== undefined ||
|
|
45
|
+
value.bugsBoard !== undefined ||
|
|
46
|
+
value.releasesBoard !== undefined;
|
|
47
|
+
if (!anySet) {
|
|
48
|
+
ctx.addIssue({
|
|
49
|
+
code: 'custom',
|
|
50
|
+
message: 'monday dev configure requires at least one of --tasks-board / --sprints-board / --epics-board / --bugs-board / --releases-board (run `monday dev discover` to auto-detect)',
|
|
51
|
+
path: [],
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const DEV_NOT_CONFIGURED = 'dev_not_configured';
|
|
56
|
+
export const devConfigureCommand = {
|
|
57
|
+
name: 'dev.configure',
|
|
58
|
+
summary: "Explicitly set Monday Dev board mappings on the active profile (alternative to `monday dev discover`)",
|
|
59
|
+
examples: [
|
|
60
|
+
'monday dev configure --tasks-board 987654 --sprints-board 987655',
|
|
61
|
+
'monday dev configure --epics-board 987656 --releases-board 987657',
|
|
62
|
+
'monday dev configure --tasks-board 987654 --json',
|
|
63
|
+
],
|
|
64
|
+
idempotent: true,
|
|
65
|
+
inputSchema,
|
|
66
|
+
outputSchema: devConfigureOutputSchema,
|
|
67
|
+
attach: (program, ctx) => {
|
|
68
|
+
const noun = ensureSubcommand(program, 'dev', 'Monday Dev workflow shortcuts (cli-design §2.7 — convention, not API)');
|
|
69
|
+
noun
|
|
70
|
+
.command('configure')
|
|
71
|
+
.description(devConfigureCommand.summary)
|
|
72
|
+
.option('--tasks-board <bid>', 'Board ID for the Tasks board')
|
|
73
|
+
.option('--sprints-board <bid>', 'Board ID for the Sprints board')
|
|
74
|
+
.option('--epics-board <bid>', 'Board ID for the Epics board')
|
|
75
|
+
.option('--bugs-board <bid>', 'Board ID for the Bugs board')
|
|
76
|
+
.option('--releases-board <bid>', 'Board ID for the Releases board')
|
|
77
|
+
.addHelpText('after', [
|
|
78
|
+
'',
|
|
79
|
+
'Examples:',
|
|
80
|
+
...devConfigureCommand.examples.map((e) => ` ${e}`),
|
|
81
|
+
'',
|
|
82
|
+
].join('\n'))
|
|
83
|
+
.action(async (rawOpts) => {
|
|
84
|
+
const opts = parseArgv(devConfigureCommand.inputSchema, rawOpts);
|
|
85
|
+
const profile = await resolveActiveDevProfile(ctx, program.opts());
|
|
86
|
+
// Load existing dev block (additive merge — preserves any
|
|
87
|
+
// slot the user supplied previously that this invocation
|
|
88
|
+
// doesn't touch). Missing dev block is a normal first-write
|
|
89
|
+
// case per round-1 P2-4 closure — `dev_not_configured`
|
|
90
|
+
// surfaces from doctor + workflow verbs, NOT from configure.
|
|
91
|
+
let existing;
|
|
92
|
+
try {
|
|
93
|
+
existing = await loadDevMapping(profile.name, profile.homeOptions);
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
if (err instanceof ApiError &&
|
|
97
|
+
err.code === DEV_NOT_CONFIGURED) {
|
|
98
|
+
existing = {};
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// Non-dev_not_configured errors bubble up; in production
|
|
102
|
+
// `cli/program.ts`'s preAction hook surfaces `config_error`
|
|
103
|
+
// on malformed TOML FIRST (it calls `loadProfilesConfig`
|
|
104
|
+
// before the action runs), so this branch is defensive.
|
|
105
|
+
/* c8 ignore next */
|
|
106
|
+
throw err;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const next = { ...existing };
|
|
110
|
+
if (opts.tasksBoard !== undefined) {
|
|
111
|
+
next.tasks_board = opts.tasksBoard;
|
|
112
|
+
}
|
|
113
|
+
if (opts.sprintsBoard !== undefined) {
|
|
114
|
+
next.sprints_board = opts.sprintsBoard;
|
|
115
|
+
}
|
|
116
|
+
if (opts.epicsBoard !== undefined) {
|
|
117
|
+
next.epics_board = opts.epicsBoard;
|
|
118
|
+
}
|
|
119
|
+
if (opts.bugsBoard !== undefined) {
|
|
120
|
+
next.bugs_board = opts.bugsBoard;
|
|
121
|
+
}
|
|
122
|
+
if (opts.releasesBoard !== undefined) {
|
|
123
|
+
next.releases_board = opts.releasesBoard;
|
|
124
|
+
}
|
|
125
|
+
await saveDevMapping(profile.name, next, profile.homeOptions);
|
|
126
|
+
// Read back via loadDevMapping so the emitted envelope
|
|
127
|
+
// reflects what landed on disk (Codex M21 / M25 pattern —
|
|
128
|
+
// verify the write rather than echoing the input).
|
|
129
|
+
const stored = await loadDevMapping(profile.name, profile.homeOptions);
|
|
130
|
+
const output = {
|
|
131
|
+
profile: profile.name,
|
|
132
|
+
mapping: stored,
|
|
133
|
+
};
|
|
134
|
+
emitMutation({
|
|
135
|
+
ctx,
|
|
136
|
+
data: output,
|
|
137
|
+
schema: devConfigureCommand.outputSchema,
|
|
138
|
+
programOpts: program.opts(),
|
|
139
|
+
source: 'none',
|
|
140
|
+
cacheAgeSeconds: null,
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
//# sourceMappingURL=configure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../../src/commands/dev/configure.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `monday dev discover [--apply]` — auto-detect Monday Dev board
|
|
3
|
+
* mappings + optionally apply them to the active profile
|
|
4
|
+
* (cli-design §4.3 + §11.3 + §13 v0.3 entry; v0.3-plan §3 M26).
|
|
5
|
+
*
|
|
6
|
+
* **Runtime body landed at M26a IMPL.** Walks the user's accessible
|
|
7
|
+
* boards via `discoverDevBoards`, applies the
|
|
8
|
+
* `buildDiscoverMappingFromMatches` collapse on the per-noun match
|
|
9
|
+
* results, and — when `--apply` is set — additively merges the
|
|
10
|
+
* heuristic findings into the active profile's
|
|
11
|
+
* `[profiles.<name>.dev]` block via `saveDevMapping`. Mirrors the
|
|
12
|
+
* M21 oauth-stub / M24 history-stub precedent — argv shape pinned
|
|
13
|
+
* at pre-flight, runtime body filled at IMPL.
|
|
14
|
+
*
|
|
15
|
+
* **Additive-merge semantics on `--apply`.** Heuristic findings are
|
|
16
|
+
* merged on top of any existing dev block (heuristic wins on slot
|
|
17
|
+
* conflict; unset slots in the heuristic result preserve existing
|
|
18
|
+
* values). This preserves user-configured slots the heuristic can't
|
|
19
|
+
* fill (e.g. a workspace with no `Sprints` board where the user set
|
|
20
|
+
* `sprints_board` manually).
|
|
21
|
+
*
|
|
22
|
+
* Idempotent: yes when `--apply` is not set (pure read). When
|
|
23
|
+
* `--apply` is set: idempotent on equal mappings (re-discovery
|
|
24
|
+
* against the same workspace shape rewrites the same block).
|
|
25
|
+
*/
|
|
26
|
+
import { z } from 'zod';
|
|
27
|
+
import { type CommandModule } from '../types.js';
|
|
28
|
+
import { type DevDiscoverOutput } from '../../api/dev-conventions.js';
|
|
29
|
+
declare const inputSchema: z.ZodObject<{
|
|
30
|
+
apply: z.ZodOptional<z.ZodBoolean>;
|
|
31
|
+
}, z.core.$strict>;
|
|
32
|
+
export declare const devDiscoverCommand: CommandModule<z.infer<typeof inputSchema>, DevDiscoverOutput>;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=discover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../src/commands/dev/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAInE,OAAO,EAML,KAAK,iBAAiB,EAEvB,MAAM,8BAA8B,CAAC;AAGtC,QAAA,MAAM,WAAW;;kBAIN,CAAC;AAIZ,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAC5C,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAC3B,iBAAiB,CAmGlB,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `monday dev discover [--apply]` — auto-detect Monday Dev board
|
|
3
|
+
* mappings + optionally apply them to the active profile
|
|
4
|
+
* (cli-design §4.3 + §11.3 + §13 v0.3 entry; v0.3-plan §3 M26).
|
|
5
|
+
*
|
|
6
|
+
* **Runtime body landed at M26a IMPL.** Walks the user's accessible
|
|
7
|
+
* boards via `discoverDevBoards`, applies the
|
|
8
|
+
* `buildDiscoverMappingFromMatches` collapse on the per-noun match
|
|
9
|
+
* results, and — when `--apply` is set — additively merges the
|
|
10
|
+
* heuristic findings into the active profile's
|
|
11
|
+
* `[profiles.<name>.dev]` block via `saveDevMapping`. Mirrors the
|
|
12
|
+
* M21 oauth-stub / M24 history-stub precedent — argv shape pinned
|
|
13
|
+
* at pre-flight, runtime body filled at IMPL.
|
|
14
|
+
*
|
|
15
|
+
* **Additive-merge semantics on `--apply`.** Heuristic findings are
|
|
16
|
+
* merged on top of any existing dev block (heuristic wins on slot
|
|
17
|
+
* conflict; unset slots in the heuristic result preserve existing
|
|
18
|
+
* values). This preserves user-configured slots the heuristic can't
|
|
19
|
+
* fill (e.g. a workspace with no `Sprints` board where the user set
|
|
20
|
+
* `sprints_board` manually).
|
|
21
|
+
*
|
|
22
|
+
* Idempotent: yes when `--apply` is not set (pure read). When
|
|
23
|
+
* `--apply` is set: idempotent on equal mappings (re-discovery
|
|
24
|
+
* against the same workspace shape rewrites the same block).
|
|
25
|
+
*/
|
|
26
|
+
import { z } from 'zod';
|
|
27
|
+
import { ApiError } from '../../utils/errors.js';
|
|
28
|
+
import { ensureSubcommand } from '../types.js';
|
|
29
|
+
import { parseArgv } from '../parse-argv.js';
|
|
30
|
+
import { emitSuccess } from '../emit.js';
|
|
31
|
+
import { resolveClient } from '../../api/resolve-client.js';
|
|
32
|
+
import { buildDiscoverMappingFromMatches, devDiscoverOutputSchema, discoverDevBoards, loadDevMapping, saveDevMapping, } from '../../api/dev-conventions.js';
|
|
33
|
+
import { resolveActiveDevProfile } from './_shared.js';
|
|
34
|
+
const inputSchema = z
|
|
35
|
+
.object({
|
|
36
|
+
apply: z.boolean().optional(),
|
|
37
|
+
})
|
|
38
|
+
.strict();
|
|
39
|
+
const DEV_NOT_CONFIGURED = 'dev_not_configured';
|
|
40
|
+
export const devDiscoverCommand = {
|
|
41
|
+
name: 'dev.discover',
|
|
42
|
+
summary: 'Auto-detect Monday Dev board mappings (tasks/sprints/epics/releases/bugs) and optionally write them to the active profile',
|
|
43
|
+
examples: [
|
|
44
|
+
'monday dev discover',
|
|
45
|
+
'monday dev discover --apply',
|
|
46
|
+
'monday dev discover --json',
|
|
47
|
+
],
|
|
48
|
+
idempotent: true,
|
|
49
|
+
inputSchema,
|
|
50
|
+
outputSchema: devDiscoverOutputSchema,
|
|
51
|
+
attach: (program, ctx) => {
|
|
52
|
+
const noun = ensureSubcommand(program, 'dev', 'Monday Dev workflow shortcuts (cli-design §2.7 — convention, not API)');
|
|
53
|
+
noun
|
|
54
|
+
.command('discover')
|
|
55
|
+
.description(devDiscoverCommand.summary)
|
|
56
|
+
.option('--apply', "Write the detected mapping into the active profile's `[profiles.<name>.dev]` block. Without --apply, the command is a pure read and only prints the mapping.")
|
|
57
|
+
.addHelpText('after', [
|
|
58
|
+
'',
|
|
59
|
+
'Examples:',
|
|
60
|
+
...devDiscoverCommand.examples.map((e) => ` ${e}`),
|
|
61
|
+
'',
|
|
62
|
+
].join('\n'))
|
|
63
|
+
.action(async (rawOpts) => {
|
|
64
|
+
const opts = parseArgv(devDiscoverCommand.inputSchema, rawOpts);
|
|
65
|
+
const apply = opts.apply ?? false;
|
|
66
|
+
const profile = await resolveActiveDevProfile(ctx, program.opts());
|
|
67
|
+
const { client, apiVersion } = resolveClient(ctx, program.opts());
|
|
68
|
+
const result = await discoverDevBoards({ client });
|
|
69
|
+
const heuristicMapping = buildDiscoverMappingFromMatches(result.matches);
|
|
70
|
+
let finalMapping = heuristicMapping;
|
|
71
|
+
if (apply) {
|
|
72
|
+
let existing;
|
|
73
|
+
try {
|
|
74
|
+
existing = await loadDevMapping(profile.name, profile.homeOptions);
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
if (err instanceof ApiError &&
|
|
78
|
+
err.code === DEV_NOT_CONFIGURED) {
|
|
79
|
+
// First-write case — no existing dev block. Round-1
|
|
80
|
+
// P2-4 closure: dev discover doesn't surface
|
|
81
|
+
// `dev_not_configured` for itself; absence is normal.
|
|
82
|
+
existing = {};
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// Non-dev_not_configured errors from `loadDevMapping`
|
|
86
|
+
// bubble up to the runner's catch-all. In production,
|
|
87
|
+
// the only realistic source is `config_error` on
|
|
88
|
+
// malformed TOML, which `cli/program.ts`'s preAction
|
|
89
|
+
// hook surfaces FIRST (it calls `loadProfilesConfig`
|
|
90
|
+
// before the action runs); this branch is defensive.
|
|
91
|
+
/* c8 ignore next */
|
|
92
|
+
throw err;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
finalMapping = { ...existing, ...heuristicMapping };
|
|
96
|
+
await saveDevMapping(profile.name, finalMapping, profile.homeOptions);
|
|
97
|
+
}
|
|
98
|
+
const output = {
|
|
99
|
+
profile: profile.name,
|
|
100
|
+
mapping: finalMapping,
|
|
101
|
+
matches: result.matches,
|
|
102
|
+
applied: apply,
|
|
103
|
+
};
|
|
104
|
+
emitSuccess({
|
|
105
|
+
ctx,
|
|
106
|
+
data: output,
|
|
107
|
+
schema: devDiscoverCommand.outputSchema,
|
|
108
|
+
programOpts: program.opts(),
|
|
109
|
+
apiVersion,
|
|
110
|
+
source: result.source,
|
|
111
|
+
cacheAgeSeconds: result.cacheAgeSeconds,
|
|
112
|
+
complexity: result.complexity,
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=discover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../src/commands/dev/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAkB,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAsB,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,+BAA+B,EAC/B,uBAAuB,EACvB,iBAAiB,EACjB,cAAc,EACd,cAAc,GAGf,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,WAAW,GAAG,CAAC;KAClB,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,kBAAkB,GAAc,oBAAoB,CAAC;AAE3D,MAAM,CAAC,MAAM,kBAAkB,GAG3B;IACF,IAAI,EAAE,cAAc;IACpB,OAAO,EACL,2HAA2H;IAC7H,QAAQ,EAAE;QACR,qBAAqB;QACrB,6BAA6B;QAC7B,4BAA4B;KAC7B;IACD,UAAU,EAAE,IAAI;IAChB,WAAW;IACX,YAAY,EAAE,uBAAuB;IACrC,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,gBAAgB,CAC3B,OAAO,EACP,KAAK,EACL,uEAAuE,CACxE,CAAC;QACF,IAAI;aACD,OAAO,CAAC,UAAU,CAAC;aACnB,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC;aACvC,MAAM,CACL,SAAS,EACT,8JAA8J,CAC/J;aACA,WAAW,CACV,OAAO,EACP;YACE,EAAE;YACF,WAAW;YACX,GAAG,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACnD,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb;aACA,MAAM,CAAC,KAAK,EAAE,OAAgB,EAAE,EAAE;YACjC,MAAM,IAAI,GAAG,SAAS,CAAC,kBAAkB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;YAElC,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YAEnD,MAAM,gBAAgB,GAAG,+BAA+B,CACtD,MAAM,CAAC,OAAO,CACf,CAAC;YAEF,IAAI,YAAY,GAAe,gBAAgB,CAAC;YAChD,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,QAAoB,CAAC;gBACzB,IAAI,CAAC;oBACH,QAAQ,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;gBACrE,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IACE,GAAG,YAAY,QAAQ;wBACvB,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAC/B,CAAC;wBACD,oDAAoD;wBACpD,6CAA6C;wBAC7C,sDAAsD;wBACtD,QAAQ,GAAG,EAAE,CAAC;oBAChB,CAAC;yBAAM,CAAC;wBACN,sDAAsD;wBACtD,sDAAsD;wBACtD,iDAAiD;wBACjD,qDAAqD;wBACrD,qDAAqD;wBACrD,qDAAqD;wBACrD,oBAAoB;wBACpB,MAAM,GAAG,CAAC;oBACZ,CAAC;gBACH,CAAC;gBACD,YAAY,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAAC;gBACpD,MAAM,cAAc,CAClB,OAAO,CAAC,IAAI,EACZ,YAAY,EACZ,OAAO,CAAC,WAAW,CACpB,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAsB;gBAChC,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,OAAO,EAAE,YAAY;gBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO,EAAE,KAAK;aACf,CAAC;YAEF,WAAW,CAAC;gBACV,GAAG;gBACH,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,kBAAkB,CAAC,YAAY;gBACvC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE;gBAC3B,UAAU;gBACV,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `monday dev doctor` — diagnostics for the active profile's
|
|
3
|
+
* Monday Dev mapping (cli-design §4.3 + §5.9 + §11.3; v0.3-plan
|
|
4
|
+
* §3 M26).
|
|
5
|
+
*
|
|
6
|
+
* **Runtime body landed at M26a IMPL.** Loads the active profile's
|
|
7
|
+
* `[profiles.<name>.dev]` block (surfaces `dev_not_configured` if
|
|
8
|
+
* absent — per round-1 P2-4, this is the verb that DOES fire the
|
|
9
|
+
* code), hydrates every configured board via a single
|
|
10
|
+
* `boards(ids:)` call, then runs each of the 10
|
|
11
|
+
* `DEV_DOCTOR_CHECK_NAMES` checks in order. Surfaces per-check
|
|
12
|
+
* status as `ok` / `warn` / `fail` in `data.checks[]`; `summary`
|
|
13
|
+
* carries the roll-up counts.
|
|
14
|
+
*
|
|
15
|
+
* **Decision 2 closure (M26 pre-flight — doctor diagnostics).**
|
|
16
|
+
* The check-name vocabulary (10 entries post-round-1 Codex
|
|
17
|
+
* fix-ups; see `DEV_DOCTOR_CHECK_NAMES` in
|
|
18
|
+
* `src/api/dev-conventions.ts`) is pinned at the pre-flight +
|
|
19
|
+
* carries an additive-only contract (adding a check is
|
|
20
|
+
* non-breaking; removing or renaming is major). Per-check
|
|
21
|
+
* `details` shape is per-check additive — pinned at this IMPL
|
|
22
|
+
* commit alongside the runtime body of each check.
|
|
23
|
+
*
|
|
24
|
+
* **Exit-code policy.** The verb's exit code stays 0 regardless of
|
|
25
|
+
* per-check `fail_count` — `dev doctor`'s success is "diagnostics
|
|
26
|
+
* completed"; agents inspect `data.summary.fail_count` for drift.
|
|
27
|
+
* `dev_board_misconfigured` is reserved for the case where the
|
|
28
|
+
* doctor itself can't complete; the per-check-level `fail` entries
|
|
29
|
+
* surface in `data.checks[]` rather than as a top-level error.
|
|
30
|
+
*
|
|
31
|
+
* Idempotent: yes (pure read).
|
|
32
|
+
*/
|
|
33
|
+
import { z } from 'zod';
|
|
34
|
+
import { type CommandModule } from '../types.js';
|
|
35
|
+
import { type DevDoctorOutput } from '../../api/dev-conventions.js';
|
|
36
|
+
declare const inputSchema: z.ZodObject<{}, z.core.$strict>;
|
|
37
|
+
export declare const devDoctorCommand: CommandModule<z.infer<typeof inputSchema>, DevDoctorOutput>;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/commands/dev/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAInE,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,8BAA8B,CAAC;AAGtC,QAAA,MAAM,WAAW,iCAAwB,CAAC;AAE1C,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAC1C,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAC3B,eAAe,CAiEhB,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `monday dev doctor` — diagnostics for the active profile's
|
|
3
|
+
* Monday Dev mapping (cli-design §4.3 + §5.9 + §11.3; v0.3-plan
|
|
4
|
+
* §3 M26).
|
|
5
|
+
*
|
|
6
|
+
* **Runtime body landed at M26a IMPL.** Loads the active profile's
|
|
7
|
+
* `[profiles.<name>.dev]` block (surfaces `dev_not_configured` if
|
|
8
|
+
* absent — per round-1 P2-4, this is the verb that DOES fire the
|
|
9
|
+
* code), hydrates every configured board via a single
|
|
10
|
+
* `boards(ids:)` call, then runs each of the 10
|
|
11
|
+
* `DEV_DOCTOR_CHECK_NAMES` checks in order. Surfaces per-check
|
|
12
|
+
* status as `ok` / `warn` / `fail` in `data.checks[]`; `summary`
|
|
13
|
+
* carries the roll-up counts.
|
|
14
|
+
*
|
|
15
|
+
* **Decision 2 closure (M26 pre-flight — doctor diagnostics).**
|
|
16
|
+
* The check-name vocabulary (10 entries post-round-1 Codex
|
|
17
|
+
* fix-ups; see `DEV_DOCTOR_CHECK_NAMES` in
|
|
18
|
+
* `src/api/dev-conventions.ts`) is pinned at the pre-flight +
|
|
19
|
+
* carries an additive-only contract (adding a check is
|
|
20
|
+
* non-breaking; removing or renaming is major). Per-check
|
|
21
|
+
* `details` shape is per-check additive — pinned at this IMPL
|
|
22
|
+
* commit alongside the runtime body of each check.
|
|
23
|
+
*
|
|
24
|
+
* **Exit-code policy.** The verb's exit code stays 0 regardless of
|
|
25
|
+
* per-check `fail_count` — `dev doctor`'s success is "diagnostics
|
|
26
|
+
* completed"; agents inspect `data.summary.fail_count` for drift.
|
|
27
|
+
* `dev_board_misconfigured` is reserved for the case where the
|
|
28
|
+
* doctor itself can't complete; the per-check-level `fail` entries
|
|
29
|
+
* surface in `data.checks[]` rather than as a top-level error.
|
|
30
|
+
*
|
|
31
|
+
* Idempotent: yes (pure read).
|
|
32
|
+
*/
|
|
33
|
+
import { z } from 'zod';
|
|
34
|
+
import { ensureSubcommand } from '../types.js';
|
|
35
|
+
import { parseArgv } from '../parse-argv.js';
|
|
36
|
+
import { emitSuccess } from '../emit.js';
|
|
37
|
+
import { resolveClient } from '../../api/resolve-client.js';
|
|
38
|
+
import { devDoctorOutputSchema, loadDevMapping, runDevDoctor, } from '../../api/dev-conventions.js';
|
|
39
|
+
import { resolveActiveDevProfile } from './_shared.js';
|
|
40
|
+
const inputSchema = z.object({}).strict();
|
|
41
|
+
export const devDoctorCommand = {
|
|
42
|
+
name: 'dev.doctor',
|
|
43
|
+
summary: "Validate the active profile's Monday Dev mapping against current board shape (status columns, board_relation wiring, canonical labels)",
|
|
44
|
+
examples: ['monday dev doctor', 'monday dev doctor --json'],
|
|
45
|
+
idempotent: true,
|
|
46
|
+
inputSchema,
|
|
47
|
+
outputSchema: devDoctorOutputSchema,
|
|
48
|
+
attach: (program, ctx) => {
|
|
49
|
+
const noun = ensureSubcommand(program, 'dev', 'Monday Dev workflow shortcuts (cli-design §2.7 — convention, not API)');
|
|
50
|
+
noun
|
|
51
|
+
.command('doctor')
|
|
52
|
+
.description(devDoctorCommand.summary)
|
|
53
|
+
.addHelpText('after', [
|
|
54
|
+
'',
|
|
55
|
+
'Examples:',
|
|
56
|
+
...devDoctorCommand.examples.map((e) => ` ${e}`),
|
|
57
|
+
'',
|
|
58
|
+
].join('\n'))
|
|
59
|
+
.action(async (rawOpts) => {
|
|
60
|
+
parseArgv(devDoctorCommand.inputSchema, rawOpts);
|
|
61
|
+
const profile = await resolveActiveDevProfile(ctx, program.opts());
|
|
62
|
+
// loadDevMapping throws `dev_not_configured` when no
|
|
63
|
+
// `[profiles.<name>.dev]` block exists — doctor's contract
|
|
64
|
+
// requires a configured mapping to diagnose against.
|
|
65
|
+
const mapping = await loadDevMapping(profile.name, profile.homeOptions);
|
|
66
|
+
const { client, apiVersion } = resolveClient(ctx, program.opts());
|
|
67
|
+
const result = await runDevDoctor({
|
|
68
|
+
client,
|
|
69
|
+
profile: profile.name,
|
|
70
|
+
mapping,
|
|
71
|
+
});
|
|
72
|
+
const output = {
|
|
73
|
+
profile: profile.name,
|
|
74
|
+
mapping,
|
|
75
|
+
checks: result.checks,
|
|
76
|
+
summary: result.summary,
|
|
77
|
+
};
|
|
78
|
+
emitSuccess({
|
|
79
|
+
ctx,
|
|
80
|
+
data: output,
|
|
81
|
+
schema: devDoctorCommand.outputSchema,
|
|
82
|
+
programOpts: program.opts(),
|
|
83
|
+
apiVersion,
|
|
84
|
+
source: result.source,
|
|
85
|
+
cacheAgeSeconds: result.cacheAgeSeconds,
|
|
86
|
+
complexity: result.complexity,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/commands/dev/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAsB,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,YAAY,GAEb,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;AAE1C,MAAM,CAAC,MAAM,gBAAgB,GAGzB;IACF,IAAI,EAAE,YAAY;IAClB,OAAO,EACL,wIAAwI;IAC1I,QAAQ,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;IAC3D,UAAU,EAAE,IAAI;IAChB,WAAW;IACX,YAAY,EAAE,qBAAqB;IACnC,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,gBAAgB,CAC3B,OAAO,EACP,KAAK,EACL,uEAAuE,CACxE,CAAC;QACF,IAAI;aACD,OAAO,CAAC,QAAQ,CAAC;aACjB,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC;aACrC,WAAW,CACV,OAAO,EACP;YACE,EAAE;YACF,WAAW;YACX,GAAG,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb;aACA,MAAM,CAAC,KAAK,EAAE,OAAgB,EAAE,EAAE;YACjC,SAAS,CAAC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAEjD,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACnE,qDAAqD;YACrD,2DAA2D;YAC3D,qDAAqD;YACrD,MAAM,OAAO,GAAG,MAAM,cAAc,CAClC,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,WAAW,CACpB,CAAC;YAEF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;gBAChC,MAAM;gBACN,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,OAAO;aACR,CAAC,CAAC;YAEH,MAAM,MAAM,GAAoB;gBAC9B,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,OAAO;gBACP,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;YAEF,WAAW,CAAC;gBACV,GAAG;gBACH,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,gBAAgB,CAAC,YAAY;gBACrC,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE;gBAC3B,UAAU;gBACV,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,eAAe,EAAE,MAAM,CAAC,eAAe;gBACvC,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `monday dev epic items <eid>` — list the task items linked to
|
|
3
|
+
* a named epic (cli-design §4.3 + §5.9; v0.3-plan §3 M26b).
|
|
4
|
+
*
|
|
5
|
+
* **Runtime body landed at M26b IMPL.** Same shape as
|
|
6
|
+
* `dev sprint items` but operates against the `tasks_to_epics_relation`
|
|
7
|
+
* board_relation column (the M26a round-2 P2-3 fix replaced the
|
|
8
|
+
* epics↔releases relation with this one; epics ↔ tasks is the
|
|
9
|
+
* actually-consumed wiring at v0.3).
|
|
10
|
+
*
|
|
11
|
+
* **<eid> resolution.** Positional epic ID is an item ID on the
|
|
12
|
+
* epics board. `ItemIdSchema` validates the shape at the argv layer.
|
|
13
|
+
*
|
|
14
|
+
* Idempotent: yes (pure read).
|
|
15
|
+
*/
|
|
16
|
+
import { z } from 'zod';
|
|
17
|
+
import { type CommandModule } from '../../types.js';
|
|
18
|
+
import { type ProjectedItem } from '../../../api/item-projection.js';
|
|
19
|
+
declare const inputSchema: z.ZodObject<{
|
|
20
|
+
epicId: z.core.$ZodBranded<z.ZodString, "ItemId", "out">;
|
|
21
|
+
}, z.core.$strict>;
|
|
22
|
+
export declare const devEpicItemsCommand: CommandModule<z.infer<typeof inputSchema>, readonly ProjectedItem[]>;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=items.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../../src/commands/dev/epic/items.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAatE,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAEzC,QAAA,MAAM,WAAW;;kBAIN,CAAC;AAIZ,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAC7C,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAC3B,SAAS,aAAa,EAAE,CAmGzB,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `monday dev epic items <eid>` — list the task items linked to
|
|
3
|
+
* a named epic (cli-design §4.3 + §5.9; v0.3-plan §3 M26b).
|
|
4
|
+
*
|
|
5
|
+
* **Runtime body landed at M26b IMPL.** Same shape as
|
|
6
|
+
* `dev sprint items` but operates against the `tasks_to_epics_relation`
|
|
7
|
+
* board_relation column (the M26a round-2 P2-3 fix replaced the
|
|
8
|
+
* epics↔releases relation with this one; epics ↔ tasks is the
|
|
9
|
+
* actually-consumed wiring at v0.3).
|
|
10
|
+
*
|
|
11
|
+
* **<eid> resolution.** Positional epic ID is an item ID on the
|
|
12
|
+
* epics board. `ItemIdSchema` validates the shape at the argv layer.
|
|
13
|
+
*
|
|
14
|
+
* Idempotent: yes (pure read).
|
|
15
|
+
*/
|
|
16
|
+
import { z } from 'zod';
|
|
17
|
+
import { ApiError } from '../../../utils/errors.js';
|
|
18
|
+
import { ensureSubcommand } from '../../types.js';
|
|
19
|
+
import { parseArgv } from '../../parse-argv.js';
|
|
20
|
+
import { emitSuccess } from '../../emit.js';
|
|
21
|
+
import { resolveClient } from '../../../api/resolve-client.js';
|
|
22
|
+
import { ItemIdSchema } from '../../../types/ids.js';
|
|
23
|
+
import { extractLinkedItemIds, findRelationColumnIdToBoard, hydrateDevBoardColumns, loadDevMapping, walkDevBoardItems, } from '../../../api/dev-conventions.js';
|
|
24
|
+
import { resolveActiveDevProfile, requireDevBoard } from '../_shared.js';
|
|
25
|
+
import { projectedItemSchema, } from '../../../api/item-projection.js';
|
|
26
|
+
const inputSchema = z
|
|
27
|
+
.object({
|
|
28
|
+
epicId: ItemIdSchema,
|
|
29
|
+
})
|
|
30
|
+
.strict();
|
|
31
|
+
const outputSchema = z.array(projectedItemSchema);
|
|
32
|
+
export const devEpicItemsCommand = {
|
|
33
|
+
name: 'dev.epic.items',
|
|
34
|
+
summary: 'List task items linked to a named epic via the board_relation column',
|
|
35
|
+
examples: [
|
|
36
|
+
'monday dev epic items 12345678',
|
|
37
|
+
'monday dev epic items 12345678 --json',
|
|
38
|
+
],
|
|
39
|
+
idempotent: true,
|
|
40
|
+
inputSchema,
|
|
41
|
+
outputSchema,
|
|
42
|
+
attach: (program, ctx) => {
|
|
43
|
+
const dev = ensureSubcommand(program, 'dev', 'Monday Dev workflow shortcuts (cli-design §2.7 — convention, not API)');
|
|
44
|
+
const epic = ensureSubcommand(dev, 'epic', 'Epic workflow verbs (three-level depth per cli-design §5.2 carve-out 1)');
|
|
45
|
+
epic
|
|
46
|
+
.command('items <epicId>')
|
|
47
|
+
.description(devEpicItemsCommand.summary)
|
|
48
|
+
.addHelpText('after', [
|
|
49
|
+
'',
|
|
50
|
+
'Examples:',
|
|
51
|
+
...devEpicItemsCommand.examples.map((e) => ` ${e}`),
|
|
52
|
+
'',
|
|
53
|
+
].join('\n'))
|
|
54
|
+
.action(async (epicIdArg) => {
|
|
55
|
+
const parsed = parseArgv(devEpicItemsCommand.inputSchema, {
|
|
56
|
+
epicId: epicIdArg,
|
|
57
|
+
});
|
|
58
|
+
const profile = await resolveActiveDevProfile(ctx, program.opts());
|
|
59
|
+
const mapping = await loadDevMapping(profile.name, profile.homeOptions);
|
|
60
|
+
const tasksBoard = requireDevBoard(mapping, 'tasks_board', profile.name);
|
|
61
|
+
const epicsBoard = requireDevBoard(mapping, 'epics_board', profile.name);
|
|
62
|
+
const { client, apiVersion } = resolveClient(ctx, program.opts());
|
|
63
|
+
const { columns, complexity: hydrateComplexity } = await hydrateDevBoardColumns(client, tasksBoard, 'DevEpicItemsHydrate');
|
|
64
|
+
const relationColumnId = findRelationColumnIdToBoard(columns, epicsBoard);
|
|
65
|
+
if (relationColumnId === undefined) {
|
|
66
|
+
throw new ApiError('dev_board_misconfigured', `tasks board ${tasksBoard} has no board_relation column linking to epics board ${epicsBoard}`, {
|
|
67
|
+
details: {
|
|
68
|
+
board_id: tasksBoard,
|
|
69
|
+
target_slot: 'epics_board',
|
|
70
|
+
target_board_id: epicsBoard,
|
|
71
|
+
reason: 'no_matching_relation',
|
|
72
|
+
hint: 'run `monday dev doctor` for the `tasks_to_epics_relation` check, then add or fix the Connect Boards column on the tasks board',
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
const { items, complexity: walkComplexity } = await walkDevBoardItems({
|
|
77
|
+
client,
|
|
78
|
+
boardId: tasksBoard,
|
|
79
|
+
operationName: 'DevEpicItemsWalk',
|
|
80
|
+
now: ctx.clock,
|
|
81
|
+
});
|
|
82
|
+
const filtered = items.filter((task) => {
|
|
83
|
+
const relCol = task.columns[relationColumnId];
|
|
84
|
+
if (relCol === undefined)
|
|
85
|
+
return false;
|
|
86
|
+
const linked = extractLinkedItemIds(relCol.value);
|
|
87
|
+
return linked.includes(parsed.epicId);
|
|
88
|
+
});
|
|
89
|
+
emitSuccess({
|
|
90
|
+
ctx,
|
|
91
|
+
data: filtered,
|
|
92
|
+
schema: devEpicItemsCommand.outputSchema,
|
|
93
|
+
programOpts: program.opts(),
|
|
94
|
+
kind: 'collection',
|
|
95
|
+
apiVersion,
|
|
96
|
+
source: 'live',
|
|
97
|
+
cacheAgeSeconds: null,
|
|
98
|
+
complexity: walkComplexity ?? hydrateComplexity,
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=items.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items.js","sourceRoot":"","sources":["../../../../src/commands/dev/epic/items.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `monday dev epic list [--state active|done]` — list epics filtered
|
|
3
|
+
* by completion state (cli-design §4.3 + §5.9; v0.3-plan §3 M26b).
|
|
4
|
+
*
|
|
5
|
+
* **Runtime body landed at M26b IMPL.** Loads the active profile's
|
|
6
|
+
* dev mapping, walks `items_page` on the configured `epics_board`,
|
|
7
|
+
* and filters client-side by the per-row status column — `active` =
|
|
8
|
+
* NOT `Done`/`Cancelled`; `done` = `Done`/`Cancelled`. Epics without
|
|
9
|
+
* a resolvable status column fall through to the `active` bucket;
|
|
10
|
+
* the structural misconfiguration is diagnosed via `dev doctor`'s
|
|
11
|
+
* board-existence check (no warning code registered at M26 pre-flight
|
|
12
|
+
* — see the M26 round-1 Codex P2-3 clarification).
|
|
13
|
+
*
|
|
14
|
+
* **Status-column heuristic.** Walks every column on a row looking for
|
|
15
|
+
* the first `status` or `color` column whose projected `text` /
|
|
16
|
+
* `label` field carries a non-empty string. The first such field
|
|
17
|
+
* decides the row's state. Reading from `column_values` (already
|
|
18
|
+
* carried on the items_page projection's columns map) means no extra
|
|
19
|
+
* round-trip; the epic board's column ID isn't needed up front.
|
|
20
|
+
*
|
|
21
|
+
* Idempotent: yes (pure read).
|
|
22
|
+
*/
|
|
23
|
+
import { z } from 'zod';
|
|
24
|
+
import { type CommandModule } from '../../types.js';
|
|
25
|
+
import { type ProjectedItem } from '../../../api/item-projection.js';
|
|
26
|
+
declare const EPIC_STATE_LITERALS: readonly ["active", "done"];
|
|
27
|
+
export type EpicState = (typeof EPIC_STATE_LITERALS)[number];
|
|
28
|
+
declare const inputSchema: z.ZodObject<{
|
|
29
|
+
state: z.ZodOptional<z.ZodEnum<{
|
|
30
|
+
done: "done";
|
|
31
|
+
active: "active";
|
|
32
|
+
}>>;
|
|
33
|
+
}, z.core.$strict>;
|
|
34
|
+
export declare const devEpicListCommand: CommandModule<z.infer<typeof inputSchema>, readonly ProjectedItem[]>;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/commands/dev/epic/list.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAStE,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAEzC,QAAA,MAAM,mBAAmB,6BAA8B,CAAC;AACxD,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,QAAA,MAAM,WAAW;;;;;kBAIN,CAAC;AAkCZ,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAC5C,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAC3B,SAAS,aAAa,EAAE,CAyEzB,CAAC"}
|