monday-cli 0.2.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 +439 -0
- package/LICENSE +21 -0
- package/README.md +431 -0
- package/dist/api/board-child-finder.d.ts +95 -0
- package/dist/api/board-child-finder.d.ts.map +1 -0
- package/dist/api/board-child-finder.js +89 -0
- package/dist/api/board-child-finder.js.map +1 -0
- package/dist/api/board-metadata.d.ts +162 -0
- package/dist/api/board-metadata.d.ts.map +1 -0
- package/dist/api/board-metadata.js +238 -0
- package/dist/api/board-metadata.js.map +1 -0
- package/dist/api/board-mutation-invalidation.d.ts +153 -0
- package/dist/api/board-mutation-invalidation.d.ts.map +1 -0
- package/dist/api/board-mutation-invalidation.js +136 -0
- package/dist/api/board-mutation-invalidation.js.map +1 -0
- package/dist/api/board-mutation-result.d.ts +97 -0
- package/dist/api/board-mutation-result.d.ts.map +1 -0
- package/dist/api/board-mutation-result.js +99 -0
- package/dist/api/board-mutation-result.js.map +1 -0
- package/dist/api/board-projection.d.ts +68 -0
- package/dist/api/board-projection.d.ts.map +1 -0
- package/dist/api/board-projection.js +79 -0
- package/dist/api/board-projection.js.map +1 -0
- package/dist/api/cache.d.ts +150 -0
- package/dist/api/cache.d.ts.map +1 -0
- package/dist/api/cache.js +418 -0
- package/dist/api/cache.js.map +1 -0
- package/dist/api/client.d.ts +162 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +205 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/column-mapping.d.ts +68 -0
- package/dist/api/column-mapping.d.ts.map +1 -0
- package/dist/api/column-mapping.js +117 -0
- package/dist/api/column-mapping.js.map +1 -0
- package/dist/api/column-mutation-result.d.ts +136 -0
- package/dist/api/column-mutation-result.d.ts.map +1 -0
- package/dist/api/column-mutation-result.js +130 -0
- package/dist/api/column-mutation-result.js.map +1 -0
- package/dist/api/column-types.d.ts +215 -0
- package/dist/api/column-types.d.ts.map +1 -0
- package/dist/api/column-types.js +195 -0
- package/dist/api/column-types.js.map +1 -0
- package/dist/api/column-values.d.ts +446 -0
- package/dist/api/column-values.d.ts.map +1 -0
- package/dist/api/column-values.js +795 -0
- package/dist/api/column-values.js.map +1 -0
- package/dist/api/columns.d.ts +205 -0
- package/dist/api/columns.d.ts.map +1 -0
- package/dist/api/columns.js +343 -0
- package/dist/api/columns.js.map +1 -0
- package/dist/api/complexity.d.ts +90 -0
- package/dist/api/complexity.d.ts.map +1 -0
- package/dist/api/complexity.js +194 -0
- package/dist/api/complexity.js.map +1 -0
- package/dist/api/dates.d.ts +150 -0
- package/dist/api/dates.d.ts.map +1 -0
- package/dist/api/dates.js +490 -0
- package/dist/api/dates.js.map +1 -0
- package/dist/api/destructive-gate.d.ts +107 -0
- package/dist/api/destructive-gate.d.ts.map +1 -0
- package/dist/api/destructive-gate.js +19 -0
- package/dist/api/destructive-gate.js.map +1 -0
- package/dist/api/dry-run.d.ts +338 -0
- package/dist/api/dry-run.d.ts.map +1 -0
- package/dist/api/dry-run.js +607 -0
- package/dist/api/dry-run.js.map +1 -0
- package/dist/api/emails.d.ts +60 -0
- package/dist/api/emails.d.ts.map +1 -0
- package/dist/api/emails.js +113 -0
- package/dist/api/emails.js.map +1 -0
- package/dist/api/errors.d.ts +82 -0
- package/dist/api/errors.d.ts.map +1 -0
- package/dist/api/errors.js +434 -0
- package/dist/api/errors.js.map +1 -0
- package/dist/api/filters.d.ts +198 -0
- package/dist/api/filters.d.ts.map +1 -0
- package/dist/api/filters.js +328 -0
- package/dist/api/filters.js.map +1 -0
- package/dist/api/group-color.d.ts +33 -0
- package/dist/api/group-color.d.ts.map +1 -0
- package/dist/api/group-color.js +80 -0
- package/dist/api/group-color.js.map +1 -0
- package/dist/api/group-mutation-result.d.ts +150 -0
- package/dist/api/group-mutation-result.d.ts.map +1 -0
- package/dist/api/group-mutation-result.js +141 -0
- package/dist/api/group-mutation-result.js.map +1 -0
- package/dist/api/iso-country-codes.d.ts +45 -0
- package/dist/api/iso-country-codes.d.ts.map +1 -0
- package/dist/api/iso-country-codes.js +71 -0
- package/dist/api/iso-country-codes.js.map +1 -0
- package/dist/api/item-board-lookup.d.ts +86 -0
- package/dist/api/item-board-lookup.d.ts.map +1 -0
- package/dist/api/item-board-lookup.js +140 -0
- package/dist/api/item-board-lookup.js.map +1 -0
- package/dist/api/item-helpers.d.ts +133 -0
- package/dist/api/item-helpers.d.ts.map +1 -0
- package/dist/api/item-helpers.js +139 -0
- package/dist/api/item-helpers.js.map +1 -0
- package/dist/api/item-mutation-result.d.ts +60 -0
- package/dist/api/item-mutation-result.d.ts.map +1 -0
- package/dist/api/item-mutation-result.js +63 -0
- package/dist/api/item-mutation-result.js.map +1 -0
- package/dist/api/item-projection.d.ts +165 -0
- package/dist/api/item-projection.d.ts.map +1 -0
- package/dist/api/item-projection.js +235 -0
- package/dist/api/item-projection.js.map +1 -0
- package/dist/api/item-source-read.d.ts +45 -0
- package/dist/api/item-source-read.d.ts.map +1 -0
- package/dist/api/item-source-read.js +57 -0
- package/dist/api/item-source-read.js.map +1 -0
- package/dist/api/items-page-walker.d.ts +126 -0
- package/dist/api/items-page-walker.d.ts.map +1 -0
- package/dist/api/items-page-walker.js +256 -0
- package/dist/api/items-page-walker.js.map +1 -0
- package/dist/api/links.d.ts +70 -0
- package/dist/api/links.d.ts.map +1 -0
- package/dist/api/links.js +128 -0
- package/dist/api/links.js.map +1 -0
- package/dist/api/me-token.d.ts +52 -0
- package/dist/api/me-token.d.ts.map +1 -0
- package/dist/api/me-token.js +55 -0
- package/dist/api/me-token.js.map +1 -0
- package/dist/api/pagination.d.ts +201 -0
- package/dist/api/pagination.d.ts.map +1 -0
- package/dist/api/pagination.js +223 -0
- package/dist/api/pagination.js.map +1 -0
- package/dist/api/partial-success-mutation.d.ts +28 -0
- package/dist/api/partial-success-mutation.d.ts.map +1 -0
- package/dist/api/partial-success-mutation.js +68 -0
- package/dist/api/partial-success-mutation.js.map +1 -0
- package/dist/api/people.d.ts +182 -0
- package/dist/api/people.d.ts.map +1 -0
- package/dist/api/people.js +260 -0
- package/dist/api/people.js.map +1 -0
- package/dist/api/phones.d.ts +74 -0
- package/dist/api/phones.d.ts.map +1 -0
- package/dist/api/phones.js +167 -0
- package/dist/api/phones.js.map +1 -0
- package/dist/api/raw-document.d.ts +53 -0
- package/dist/api/raw-document.d.ts.map +1 -0
- package/dist/api/raw-document.js +177 -0
- package/dist/api/raw-document.js.map +1 -0
- package/dist/api/raw-write.d.ts +127 -0
- package/dist/api/raw-write.d.ts.map +1 -0
- package/dist/api/raw-write.js +233 -0
- package/dist/api/raw-write.js.map +1 -0
- package/dist/api/resolution-context.d.ts +32 -0
- package/dist/api/resolution-context.d.ts.map +1 -0
- package/dist/api/resolution-context.js +42 -0
- package/dist/api/resolution-context.js.map +1 -0
- package/dist/api/resolution-pass.d.ts +163 -0
- package/dist/api/resolution-pass.d.ts.map +1 -0
- package/dist/api/resolution-pass.js +254 -0
- package/dist/api/resolution-pass.js.map +1 -0
- package/dist/api/resolve-client.d.ts +69 -0
- package/dist/api/resolve-client.d.ts.map +1 -0
- package/dist/api/resolve-client.js +70 -0
- package/dist/api/resolve-client.js.map +1 -0
- package/dist/api/resolver-error-fold.d.ts +176 -0
- package/dist/api/resolver-error-fold.d.ts.map +1 -0
- package/dist/api/resolver-error-fold.js +230 -0
- package/dist/api/resolver-error-fold.js.map +1 -0
- package/dist/api/resolvers.d.ts +131 -0
- package/dist/api/resolvers.d.ts.map +1 -0
- package/dist/api/resolvers.js +262 -0
- package/dist/api/resolvers.js.map +1 -0
- package/dist/api/response-root.d.ts +65 -0
- package/dist/api/response-root.d.ts.map +1 -0
- package/dist/api/response-root.js +61 -0
- package/dist/api/response-root.js.map +1 -0
- package/dist/api/retry.d.ts +112 -0
- package/dist/api/retry.d.ts.map +1 -0
- package/dist/api/retry.js +181 -0
- package/dist/api/retry.js.map +1 -0
- package/dist/api/set-expression.d.ts +23 -0
- package/dist/api/set-expression.d.ts.map +1 -0
- package/dist/api/set-expression.js +31 -0
- package/dist/api/set-expression.js.map +1 -0
- package/dist/api/sort.d.ts +59 -0
- package/dist/api/sort.d.ts.map +1 -0
- package/dist/api/sort.js +73 -0
- package/dist/api/sort.js.map +1 -0
- package/dist/api/source-aggregator.d.ts +94 -0
- package/dist/api/source-aggregator.d.ts.map +1 -0
- package/dist/api/source-aggregator.js +111 -0
- package/dist/api/source-aggregator.js.map +1 -0
- package/dist/api/transport.d.ts +58 -0
- package/dist/api/transport.d.ts.map +1 -0
- package/dist/api/transport.js +190 -0
- package/dist/api/transport.js.map +1 -0
- package/dist/api/update-mutation-result.d.ts +133 -0
- package/dist/api/update-mutation-result.d.ts.map +1 -0
- package/dist/api/update-mutation-result.js +145 -0
- package/dist/api/update-mutation-result.js.map +1 -0
- package/dist/api/users-fan-out-mutation.d.ts +124 -0
- package/dist/api/users-fan-out-mutation.d.ts.map +1 -0
- package/dist/api/users-fan-out-mutation.js +331 -0
- package/dist/api/users-fan-out-mutation.js.map +1 -0
- package/dist/api/walk-pages.d.ts +91 -0
- package/dist/api/walk-pages.d.ts.map +1 -0
- package/dist/api/walk-pages.js +84 -0
- package/dist/api/walk-pages.js.map +1 -0
- package/dist/api/workspace-projection.d.ts +64 -0
- package/dist/api/workspace-projection.d.ts.map +1 -0
- package/dist/api/workspace-projection.js +83 -0
- package/dist/api/workspace-projection.js.map +1 -0
- package/dist/cli/envelope-out.d.ts +128 -0
- package/dist/cli/envelope-out.d.ts.map +1 -0
- package/dist/cli/envelope-out.js +146 -0
- package/dist/cli/envelope-out.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +27 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/program.d.ts +29 -0
- package/dist/cli/program.d.ts.map +1 -0
- package/dist/cli/program.js +109 -0
- package/dist/cli/program.js.map +1 -0
- package/dist/cli/run.d.ts +108 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +105 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/commands/account/client-helper.d.ts +37 -0
- package/dist/commands/account/client-helper.d.ts.map +1 -0
- package/dist/commands/account/client-helper.js +55 -0
- package/dist/commands/account/client-helper.js.map +1 -0
- package/dist/commands/account/complexity.d.ts +29 -0
- package/dist/commands/account/complexity.d.ts.map +1 -0
- package/dist/commands/account/complexity.js +70 -0
- package/dist/commands/account/complexity.js.map +1 -0
- package/dist/commands/account/info.d.ts +36 -0
- package/dist/commands/account/info.d.ts.map +1 -0
- package/dist/commands/account/info.js +74 -0
- package/dist/commands/account/info.js.map +1 -0
- package/dist/commands/account/version.d.ts +44 -0
- package/dist/commands/account/version.d.ts.map +1 -0
- package/dist/commands/account/version.js +98 -0
- package/dist/commands/account/version.js.map +1 -0
- package/dist/commands/account/whoami.d.ts +34 -0
- package/dist/commands/account/whoami.d.ts.map +1 -0
- package/dist/commands/account/whoami.js +77 -0
- package/dist/commands/account/whoami.js.map +1 -0
- package/dist/commands/board/add-users.d.ts +60 -0
- package/dist/commands/board/add-users.d.ts.map +1 -0
- package/dist/commands/board/add-users.js +133 -0
- package/dist/commands/board/add-users.js.map +1 -0
- package/dist/commands/board/archive.d.ts +64 -0
- package/dist/commands/board/archive.d.ts.map +1 -0
- package/dist/commands/board/archive.js +226 -0
- package/dist/commands/board/archive.js.map +1 -0
- package/dist/commands/board/column-create.d.ts +146 -0
- package/dist/commands/board/column-create.d.ts.map +1 -0
- package/dist/commands/board/column-create.js +564 -0
- package/dist/commands/board/column-create.js.map +1 -0
- package/dist/commands/board/column-delete.d.ts +76 -0
- package/dist/commands/board/column-delete.d.ts.map +1 -0
- package/dist/commands/board/column-delete.js +224 -0
- package/dist/commands/board/column-delete.js.map +1 -0
- package/dist/commands/board/column-update.d.ts +92 -0
- package/dist/commands/board/column-update.d.ts.map +1 -0
- package/dist/commands/board/column-update.js +364 -0
- package/dist/commands/board/column-update.js.map +1 -0
- package/dist/commands/board/columns.d.ts +30 -0
- package/dist/commands/board/columns.d.ts.map +1 -0
- package/dist/commands/board/columns.js +102 -0
- package/dist/commands/board/columns.js.map +1 -0
- package/dist/commands/board/create.d.ts +67 -0
- package/dist/commands/board/create.d.ts.map +1 -0
- package/dist/commands/board/create.js +226 -0
- package/dist/commands/board/create.js.map +1 -0
- package/dist/commands/board/delete.d.ts +60 -0
- package/dist/commands/board/delete.d.ts.map +1 -0
- package/dist/commands/board/delete.js +192 -0
- package/dist/commands/board/delete.js.map +1 -0
- package/dist/commands/board/describe.d.ts +68 -0
- package/dist/commands/board/describe.d.ts.map +1 -0
- package/dist/commands/board/describe.js +241 -0
- package/dist/commands/board/describe.js.map +1 -0
- package/dist/commands/board/doctor.d.ts +108 -0
- package/dist/commands/board/doctor.d.ts.map +1 -0
- package/dist/commands/board/doctor.js +417 -0
- package/dist/commands/board/doctor.js.map +1 -0
- package/dist/commands/board/duplicate.d.ts +85 -0
- package/dist/commands/board/duplicate.d.ts.map +1 -0
- package/dist/commands/board/duplicate.js +281 -0
- package/dist/commands/board/duplicate.js.map +1 -0
- package/dist/commands/board/find.d.ts +47 -0
- package/dist/commands/board/find.d.ts.map +1 -0
- package/dist/commands/board/find.js +153 -0
- package/dist/commands/board/find.js.map +1 -0
- package/dist/commands/board/get.d.ts +41 -0
- package/dist/commands/board/get.d.ts.map +1 -0
- package/dist/commands/board/get.js +66 -0
- package/dist/commands/board/get.js.map +1 -0
- package/dist/commands/board/group-archive.d.ts +83 -0
- package/dist/commands/board/group-archive.d.ts.map +1 -0
- package/dist/commands/board/group-archive.js +264 -0
- package/dist/commands/board/group-archive.js.map +1 -0
- package/dist/commands/board/group-create.d.ts +118 -0
- package/dist/commands/board/group-create.d.ts.map +1 -0
- package/dist/commands/board/group-create.js +239 -0
- package/dist/commands/board/group-create.js.map +1 -0
- package/dist/commands/board/group-delete.d.ts +79 -0
- package/dist/commands/board/group-delete.d.ts.map +1 -0
- package/dist/commands/board/group-delete.js +222 -0
- package/dist/commands/board/group-delete.js.map +1 -0
- package/dist/commands/board/group-duplicate.d.ts +70 -0
- package/dist/commands/board/group-duplicate.d.ts.map +1 -0
- package/dist/commands/board/group-duplicate.js +219 -0
- package/dist/commands/board/group-duplicate.js.map +1 -0
- package/dist/commands/board/group-update.d.ts +145 -0
- package/dist/commands/board/group-update.d.ts.map +1 -0
- package/dist/commands/board/group-update.js +341 -0
- package/dist/commands/board/group-update.js.map +1 -0
- package/dist/commands/board/groups.d.ts +28 -0
- package/dist/commands/board/groups.d.ts.map +1 -0
- package/dist/commands/board/groups.js +85 -0
- package/dist/commands/board/groups.js.map +1 -0
- package/dist/commands/board/list.d.ts +39 -0
- package/dist/commands/board/list.d.ts.map +1 -0
- package/dist/commands/board/list.js +135 -0
- package/dist/commands/board/list.js.map +1 -0
- package/dist/commands/board/subscribers.d.ts +24 -0
- package/dist/commands/board/subscribers.d.ts.map +1 -0
- package/dist/commands/board/subscribers.js +89 -0
- package/dist/commands/board/subscribers.js.map +1 -0
- package/dist/commands/board/update.d.ts +82 -0
- package/dist/commands/board/update.d.ts.map +1 -0
- package/dist/commands/board/update.js +328 -0
- package/dist/commands/board/update.js.map +1 -0
- package/dist/commands/cache/clear.d.ts +34 -0
- package/dist/commands/cache/clear.d.ts.map +1 -0
- package/dist/commands/cache/clear.js +113 -0
- package/dist/commands/cache/clear.js.map +1 -0
- package/dist/commands/cache/list.d.ts +50 -0
- package/dist/commands/cache/list.d.ts.map +1 -0
- package/dist/commands/cache/list.js +77 -0
- package/dist/commands/cache/list.js.map +1 -0
- package/dist/commands/cache/stats.d.ts +22 -0
- package/dist/commands/cache/stats.d.ts.map +1 -0
- package/dist/commands/cache/stats.js +56 -0
- package/dist/commands/cache/stats.js.map +1 -0
- package/dist/commands/config/path.d.ts +22 -0
- package/dist/commands/config/path.d.ts.map +1 -0
- package/dist/commands/config/path.js +74 -0
- package/dist/commands/config/path.js.map +1 -0
- package/dist/commands/config/show.d.ts +61 -0
- package/dist/commands/config/show.d.ts.map +1 -0
- package/dist/commands/config/show.js +137 -0
- package/dist/commands/config/show.js.map +1 -0
- package/dist/commands/emit.d.ts +156 -0
- package/dist/commands/emit.d.ts.map +1 -0
- package/dist/commands/emit.js +212 -0
- package/dist/commands/emit.js.map +1 -0
- package/dist/commands/index.d.ts +5 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +195 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/item/archive.d.ts +81 -0
- package/dist/commands/item/archive.d.ts.map +1 -0
- package/dist/commands/item/archive.js +187 -0
- package/dist/commands/item/archive.js.map +1 -0
- package/dist/commands/item/clear.d.ts +140 -0
- package/dist/commands/item/clear.d.ts.map +1 -0
- package/dist/commands/item/clear.js +748 -0
- package/dist/commands/item/clear.js.map +1 -0
- package/dist/commands/item/create.d.ts +77 -0
- package/dist/commands/item/create.d.ts.map +1 -0
- package/dist/commands/item/create.js +802 -0
- package/dist/commands/item/create.js.map +1 -0
- package/dist/commands/item/delete.d.ts +82 -0
- package/dist/commands/item/delete.d.ts.map +1 -0
- package/dist/commands/item/delete.js +179 -0
- package/dist/commands/item/delete.js.map +1 -0
- package/dist/commands/item/duplicate.d.ts +117 -0
- package/dist/commands/item/duplicate.d.ts.map +1 -0
- package/dist/commands/item/duplicate.js +238 -0
- package/dist/commands/item/duplicate.js.map +1 -0
- package/dist/commands/item/find.d.ts +55 -0
- package/dist/commands/item/find.d.ts.map +1 -0
- package/dist/commands/item/find.js +231 -0
- package/dist/commands/item/find.js.map +1 -0
- package/dist/commands/item/get.d.ts +47 -0
- package/dist/commands/item/get.d.ts.map +1 -0
- package/dist/commands/item/get.js +66 -0
- package/dist/commands/item/get.js.map +1 -0
- package/dist/commands/item/list.d.ts +73 -0
- package/dist/commands/item/list.d.ts.map +1 -0
- package/dist/commands/item/list.js +284 -0
- package/dist/commands/item/list.js.map +1 -0
- package/dist/commands/item/move.d.ts +181 -0
- package/dist/commands/item/move.d.ts.map +1 -0
- package/dist/commands/item/move.js +560 -0
- package/dist/commands/item/move.js.map +1 -0
- package/dist/commands/item/search.d.ts +67 -0
- package/dist/commands/item/search.d.ts.map +1 -0
- package/dist/commands/item/search.js +322 -0
- package/dist/commands/item/search.js.map +1 -0
- package/dist/commands/item/set.d.ts +88 -0
- package/dist/commands/item/set.d.ts.map +1 -0
- package/dist/commands/item/set.js +387 -0
- package/dist/commands/item/set.js.map +1 -0
- package/dist/commands/item/subitems.d.ts +50 -0
- package/dist/commands/item/subitems.d.ts.map +1 -0
- package/dist/commands/item/subitems.js +86 -0
- package/dist/commands/item/subitems.js.map +1 -0
- package/dist/commands/item/update.d.ts +99 -0
- package/dist/commands/item/update.d.ts.map +1 -0
- package/dist/commands/item/update.js +884 -0
- package/dist/commands/item/update.js.map +1 -0
- package/dist/commands/item/upsert.d.ts +105 -0
- package/dist/commands/item/upsert.d.ts.map +1 -0
- package/dist/commands/item/upsert.js +998 -0
- package/dist/commands/item/upsert.js.map +1 -0
- package/dist/commands/parse-argv.d.ts +20 -0
- package/dist/commands/parse-argv.d.ts.map +1 -0
- package/dist/commands/parse-argv.js +40 -0
- package/dist/commands/parse-argv.js.map +1 -0
- package/dist/commands/raw/index.d.ts +23 -0
- package/dist/commands/raw/index.d.ts.map +1 -0
- package/dist/commands/raw/index.js +416 -0
- package/dist/commands/raw/index.js.map +1 -0
- package/dist/commands/run-by-id-lookup.d.ts +72 -0
- package/dist/commands/run-by-id-lookup.d.ts.map +1 -0
- package/dist/commands/run-by-id-lookup.js +58 -0
- package/dist/commands/run-by-id-lookup.js.map +1 -0
- package/dist/commands/schema/index.d.ts +104 -0
- package/dist/commands/schema/index.d.ts.map +1 -0
- package/dist/commands/schema/index.js +183 -0
- package/dist/commands/schema/index.js.map +1 -0
- package/dist/commands/types.d.ts +66 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +15 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/commands/update/body-source.d.ts +38 -0
- package/dist/commands/update/body-source.d.ts.map +1 -0
- package/dist/commands/update/body-source.js +80 -0
- package/dist/commands/update/body-source.js.map +1 -0
- package/dist/commands/update/clear-all.d.ts +67 -0
- package/dist/commands/update/clear-all.d.ts.map +1 -0
- package/dist/commands/update/clear-all.js +281 -0
- package/dist/commands/update/clear-all.js.map +1 -0
- package/dist/commands/update/create.d.ts +51 -0
- package/dist/commands/update/create.d.ts.map +1 -0
- package/dist/commands/update/create.js +167 -0
- package/dist/commands/update/create.js.map +1 -0
- package/dist/commands/update/delete.d.ts +53 -0
- package/dist/commands/update/delete.d.ts.map +1 -0
- package/dist/commands/update/delete.js +148 -0
- package/dist/commands/update/delete.js.map +1 -0
- package/dist/commands/update/edit.d.ts +37 -0
- package/dist/commands/update/edit.d.ts.map +1 -0
- package/dist/commands/update/edit.js +129 -0
- package/dist/commands/update/edit.js.map +1 -0
- package/dist/commands/update/get.d.ts +37 -0
- package/dist/commands/update/get.d.ts.map +1 -0
- package/dist/commands/update/get.js +92 -0
- package/dist/commands/update/get.js.map +1 -0
- package/dist/commands/update/like.d.ts +17 -0
- package/dist/commands/update/like.d.ts.map +1 -0
- package/dist/commands/update/like.js +23 -0
- package/dist/commands/update/like.js.map +1 -0
- package/dist/commands/update/list.d.ts +58 -0
- package/dist/commands/update/list.d.ts.map +1 -0
- package/dist/commands/update/list.js +322 -0
- package/dist/commands/update/list.js.map +1 -0
- package/dist/commands/update/pin.d.ts +17 -0
- package/dist/commands/update/pin.d.ts.map +1 -0
- package/dist/commands/update/pin.js +23 -0
- package/dist/commands/update/pin.js.map +1 -0
- package/dist/commands/update/reply.d.ts +47 -0
- package/dist/commands/update/reply.d.ts.map +1 -0
- package/dist/commands/update/reply.js +149 -0
- package/dist/commands/update/reply.js.map +1 -0
- package/dist/commands/update/toggle.d.ts +70 -0
- package/dist/commands/update/toggle.d.ts.map +1 -0
- package/dist/commands/update/toggle.js +118 -0
- package/dist/commands/update/toggle.js.map +1 -0
- package/dist/commands/update/unlike.d.ts +17 -0
- package/dist/commands/update/unlike.d.ts.map +1 -0
- package/dist/commands/update/unlike.js +22 -0
- package/dist/commands/update/unlike.js.map +1 -0
- package/dist/commands/update/unpin.d.ts +17 -0
- package/dist/commands/update/unpin.d.ts.map +1 -0
- package/dist/commands/update/unpin.js +21 -0
- package/dist/commands/update/unpin.js.map +1 -0
- package/dist/commands/user/get.d.ts +31 -0
- package/dist/commands/user/get.d.ts.map +1 -0
- package/dist/commands/user/get.js +81 -0
- package/dist/commands/user/get.js.map +1 -0
- package/dist/commands/user/list.d.ts +61 -0
- package/dist/commands/user/list.d.ts.map +1 -0
- package/dist/commands/user/list.js +148 -0
- package/dist/commands/user/list.js.map +1 -0
- package/dist/commands/user/me.d.ts +17 -0
- package/dist/commands/user/me.d.ts.map +1 -0
- package/dist/commands/user/me.js +49 -0
- package/dist/commands/user/me.js.map +1 -0
- package/dist/commands/workspace/add-users.d.ts +76 -0
- package/dist/commands/workspace/add-users.d.ts.map +1 -0
- package/dist/commands/workspace/add-users.js +154 -0
- package/dist/commands/workspace/add-users.js.map +1 -0
- package/dist/commands/workspace/create.d.ts +59 -0
- package/dist/commands/workspace/create.d.ts.map +1 -0
- package/dist/commands/workspace/create.js +163 -0
- package/dist/commands/workspace/create.js.map +1 -0
- package/dist/commands/workspace/delete.d.ts +67 -0
- package/dist/commands/workspace/delete.d.ts.map +1 -0
- package/dist/commands/workspace/delete.js +182 -0
- package/dist/commands/workspace/delete.js.map +1 -0
- package/dist/commands/workspace/folders.d.ts +40 -0
- package/dist/commands/workspace/folders.d.ts.map +1 -0
- package/dist/commands/workspace/folders.js +124 -0
- package/dist/commands/workspace/folders.js.map +1 -0
- package/dist/commands/workspace/get.d.ts +35 -0
- package/dist/commands/workspace/get.d.ts.map +1 -0
- package/dist/commands/workspace/get.js +62 -0
- package/dist/commands/workspace/get.js.map +1 -0
- package/dist/commands/workspace/list.d.ts +57 -0
- package/dist/commands/workspace/list.d.ts.map +1 -0
- package/dist/commands/workspace/list.js +125 -0
- package/dist/commands/workspace/list.js.map +1 -0
- package/dist/commands/workspace/remove-users.d.ts +47 -0
- package/dist/commands/workspace/remove-users.d.ts.map +1 -0
- package/dist/commands/workspace/remove-users.js +122 -0
- package/dist/commands/workspace/remove-users.js.map +1 -0
- package/dist/commands/workspace/update.d.ts +68 -0
- package/dist/commands/workspace/update.d.ts.map +1 -0
- package/dist/commands/workspace/update.js +237 -0
- package/dist/commands/workspace/update.js.map +1 -0
- package/dist/config/load.d.ts +33 -0
- package/dist/config/load.d.ts.map +1 -0
- package/dist/config/load.js +81 -0
- package/dist/config/load.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/types/global-flags.d.ts +69 -0
- package/dist/types/global-flags.d.ts.map +1 -0
- package/dist/types/global-flags.js +170 -0
- package/dist/types/global-flags.js.map +1 -0
- package/dist/types/ids.d.ts +38 -0
- package/dist/types/ids.d.ts.map +1 -0
- package/dist/types/ids.js +51 -0
- package/dist/types/ids.js.map +1 -0
- package/dist/types/json.d.ts +60 -0
- package/dist/types/json.d.ts.map +1 -0
- package/dist/types/json.js +33 -0
- package/dist/types/json.js.map +1 -0
- package/dist/utils/errors.d.ts +121 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +264 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +39 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +49 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/output/envelope.d.ts +140 -0
- package/dist/utils/output/envelope.d.ts.map +1 -0
- package/dist/utils/output/envelope.js +120 -0
- package/dist/utils/output/envelope.js.map +1 -0
- package/dist/utils/output/json.d.ts +10 -0
- package/dist/utils/output/json.d.ts.map +1 -0
- package/dist/utils/output/json.js +12 -0
- package/dist/utils/output/json.js.map +1 -0
- package/dist/utils/output/ndjson.d.ts +92 -0
- package/dist/utils/output/ndjson.d.ts.map +1 -0
- package/dist/utils/output/ndjson.js +33 -0
- package/dist/utils/output/ndjson.js.map +1 -0
- package/dist/utils/output/select.d.ts +22 -0
- package/dist/utils/output/select.d.ts.map +1 -0
- package/dist/utils/output/select.js +47 -0
- package/dist/utils/output/select.js.map +1 -0
- package/dist/utils/output/table.d.ts +32 -0
- package/dist/utils/output/table.d.ts.map +1 -0
- package/dist/utils/output/table.js +133 -0
- package/dist/utils/output/table.js.map +1 -0
- package/dist/utils/output/text.d.ts +5 -0
- package/dist/utils/output/text.d.ts.map +1 -0
- package/dist/utils/output/text.js +32 -0
- package/dist/utils/output/text.js.map +1 -0
- package/dist/utils/parse-boundary.d.ts +53 -0
- package/dist/utils/parse-boundary.d.ts.map +1 -0
- package/dist/utils/parse-boundary.js +62 -0
- package/dist/utils/parse-boundary.js.map +1 -0
- package/dist/utils/redact.d.ts +54 -0
- package/dist/utils/redact.d.ts.map +1 -0
- package/dist/utils/redact.js +154 -0
- package/dist/utils/redact.js.map +1 -0
- package/dist/utils/request-id.d.ts +17 -0
- package/dist/utils/request-id.d.ts.map +1 -0
- package/dist/utils/request-id.js +26 -0
- package/dist/utils/request-id.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `monday board doctor <bid>` — diagnostics on a board's shape so an
|
|
3
|
+
* agent can fix problems BEFORE they surface as runtime errors
|
|
4
|
+
* (`cli-design.md` §11.2; `v0.1-plan.md` §3 M6).
|
|
5
|
+
*
|
|
6
|
+
* Three diagnostic kinds shipped in v0.1:
|
|
7
|
+
*
|
|
8
|
+
* 1. **`duplicate_column_title`** — groups columns by NFC + case-
|
|
9
|
+
* folded + whitespace-collapsed title. Any group with ≥2 columns
|
|
10
|
+
* emits one diagnostic. Same normalisation rule as the §5.3
|
|
11
|
+
* column resolver — when this fires, agents writing `--set
|
|
12
|
+
* "<title>"=<value>` get `ambiguous_column` at runtime; this
|
|
13
|
+
* surfaces the gotcha up front.
|
|
14
|
+
*
|
|
15
|
+
* 2. **`unsupported_column_type`** — for each non-allowlisted
|
|
16
|
+
* column type, emits one diagnostic keyed by roadmap category
|
|
17
|
+
* (matches `column-values.ts unsupportedColumnTypeError`'s
|
|
18
|
+
* three-category split): `v0.2_writer_expansion`, `read_only_
|
|
19
|
+
* forever`, or `future`. Agents reading `board doctor`'s output
|
|
20
|
+
* know exactly which columns will fail `item set` / `item
|
|
21
|
+
* update`, what category each falls into, and whether to expect
|
|
22
|
+
* a write path in v0.2 vs. never.
|
|
23
|
+
*
|
|
24
|
+
* 3. **`broken_board_relation`** — for each `board_relation`
|
|
25
|
+
* column, parses `settings_str.boardIds` and queries each
|
|
26
|
+
* linked board via Monday's `boards(ids:)`. If a linked board
|
|
27
|
+
* is archived, deleted, or unreachable (the response omits it
|
|
28
|
+
* because the token has no read permission), emits one
|
|
29
|
+
* diagnostic per missing target. This catches the
|
|
30
|
+
* "board_relation column → archived board → silent breakage"
|
|
31
|
+
* class agents would otherwise discover only when an item
|
|
32
|
+
* mutation fails.
|
|
33
|
+
*
|
|
34
|
+
* **No `stale_cache` diagnostic in v0.1.** cli-design §11.2 lists
|
|
35
|
+
* "stale cache vs live" as a doctor diagnostic; the `meta.source`
|
|
36
|
+
* + `meta.cache_age_seconds` envelope slots already surface cache
|
|
37
|
+
* provenance (and `board doctor` always force-refreshes so it
|
|
38
|
+
* sees the live state). A genuine cache-drift diagnostic
|
|
39
|
+
* (cache says X, live says Y) is logged for v0.2 backfill.
|
|
40
|
+
*
|
|
41
|
+
* **No bulk diagnostic flag**. `board doctor` runs every
|
|
42
|
+
* diagnostic on every call. Future `--diagnostic <kind>` filters
|
|
43
|
+
* are an additive surface.
|
|
44
|
+
*
|
|
45
|
+
* Idempotent: yes — pure read.
|
|
46
|
+
*/
|
|
47
|
+
import { z } from 'zod';
|
|
48
|
+
import { ensureSubcommand } from '../types.js';
|
|
49
|
+
import { emitSuccess } from '../emit.js';
|
|
50
|
+
import { resolveClient } from '../../api/resolve-client.js';
|
|
51
|
+
import { BoardIdSchema } from '../../types/ids.js';
|
|
52
|
+
import { parseArgv } from '../parse-argv.js';
|
|
53
|
+
import { loadBoardMetadata, } from '../../api/board-metadata.js';
|
|
54
|
+
import { isWritableColumnType, getColumnRoadmapCategory, parseColumnSettings, } from '../../api/column-types.js';
|
|
55
|
+
import { unwrapOrThrow } from '../../utils/parse-boundary.js';
|
|
56
|
+
/**
|
|
57
|
+
* Per-diagnostic shape. Discriminated by `kind` so consumers can
|
|
58
|
+
* branch on a stable string. `severity` is informational — every
|
|
59
|
+
* doctor diagnostic is non-fatal (a board CAN ship with duplicate
|
|
60
|
+
* column titles; the diagnostic is "this WILL bite when an agent
|
|
61
|
+
* tries to title-resolve"). Agents that key off severity for an
|
|
62
|
+
* exit gate can use the `error` band.
|
|
63
|
+
*/
|
|
64
|
+
const diagnosticSeverity = z.enum(['info', 'warning', 'error']);
|
|
65
|
+
const duplicateColumnTitleDiagnostic = z
|
|
66
|
+
.object({
|
|
67
|
+
kind: z.literal('duplicate_column_title'),
|
|
68
|
+
severity: diagnosticSeverity,
|
|
69
|
+
/** The normalised title that's shared by ≥2 columns. */
|
|
70
|
+
normalised_title: z.string(),
|
|
71
|
+
/** Each column that shares the normalised title. */
|
|
72
|
+
columns: z
|
|
73
|
+
.array(z
|
|
74
|
+
.object({
|
|
75
|
+
id: z.string().min(1),
|
|
76
|
+
title: z.string(),
|
|
77
|
+
type: z.string().min(1),
|
|
78
|
+
})
|
|
79
|
+
.strict())
|
|
80
|
+
.min(2),
|
|
81
|
+
message: z.string(),
|
|
82
|
+
})
|
|
83
|
+
.strict();
|
|
84
|
+
const unsupportedColumnTypeDiagnostic = z
|
|
85
|
+
.object({
|
|
86
|
+
kind: z.literal('unsupported_column_type'),
|
|
87
|
+
severity: diagnosticSeverity,
|
|
88
|
+
/** The column ID. */
|
|
89
|
+
column_id: z.string().min(1),
|
|
90
|
+
/** The column title (verbatim from board metadata). */
|
|
91
|
+
column_title: z.string(),
|
|
92
|
+
/** The column type Monday reports. */
|
|
93
|
+
column_type: z.string().min(1),
|
|
94
|
+
/** Roadmap category — one of three known values. */
|
|
95
|
+
category: z.enum(['v0.2_writer_expansion', 'read_only_forever', 'future']),
|
|
96
|
+
message: z.string(),
|
|
97
|
+
})
|
|
98
|
+
.strict();
|
|
99
|
+
const brokenBoardRelationDiagnostic = z
|
|
100
|
+
.object({
|
|
101
|
+
kind: z.literal('broken_board_relation'),
|
|
102
|
+
severity: diagnosticSeverity,
|
|
103
|
+
/** The board_relation column ID. */
|
|
104
|
+
column_id: z.string().min(1),
|
|
105
|
+
column_title: z.string(),
|
|
106
|
+
/** The linked board IDs that are archived / missing / inaccessible. */
|
|
107
|
+
missing_board_ids: z.array(z.string().min(1)).min(1),
|
|
108
|
+
/** Reason — `archived` (linked board.state === 'archived') or
|
|
109
|
+
* `unreachable` (Monday's response omitted the board, meaning
|
|
110
|
+
* the token has no read permission OR the board doesn't exist). */
|
|
111
|
+
reason: z.enum(['archived', 'deleted', 'unreachable', 'mixed']),
|
|
112
|
+
message: z.string(),
|
|
113
|
+
})
|
|
114
|
+
.strict();
|
|
115
|
+
const diagnosticSchema = z.discriminatedUnion('kind', [
|
|
116
|
+
duplicateColumnTitleDiagnostic,
|
|
117
|
+
unsupportedColumnTypeDiagnostic,
|
|
118
|
+
brokenBoardRelationDiagnostic,
|
|
119
|
+
]);
|
|
120
|
+
export const boardDoctorOutputSchema = z
|
|
121
|
+
.object({
|
|
122
|
+
board_id: z.string().min(1),
|
|
123
|
+
board_name: z.string(),
|
|
124
|
+
/**
|
|
125
|
+
* Total diagnostics fired. Zero means the board is healthy
|
|
126
|
+
* (per the v0.1 diagnostic set). Convenience sum so an agent
|
|
127
|
+
* can short-circuit on `data.total === 0` without iterating.
|
|
128
|
+
*/
|
|
129
|
+
total: z.number().int().min(0),
|
|
130
|
+
diagnostics: z.array(diagnosticSchema),
|
|
131
|
+
})
|
|
132
|
+
.strict();
|
|
133
|
+
const inputSchema = z
|
|
134
|
+
.object({
|
|
135
|
+
boardId: BoardIdSchema,
|
|
136
|
+
})
|
|
137
|
+
.strict();
|
|
138
|
+
/**
|
|
139
|
+
* Same normalisation as the §5.3 column resolver: NFC + trim +
|
|
140
|
+
* case-fold (Unicode-aware) + collapse internal whitespace. Tested
|
|
141
|
+
* across the resolver / filter / writer surfaces; using one
|
|
142
|
+
* function keeps doctor's "duplicate" definition aligned with the
|
|
143
|
+
* runtime's "ambiguous" definition.
|
|
144
|
+
*/
|
|
145
|
+
const normaliseTitle = (raw) => raw
|
|
146
|
+
.normalize('NFC')
|
|
147
|
+
.trim()
|
|
148
|
+
.toLocaleLowerCase('und')
|
|
149
|
+
.replace(/\s+/gu, ' ');
|
|
150
|
+
/**
|
|
151
|
+
* Builds the per-category message for `unsupported_column_type`.
|
|
152
|
+
* Mirrors the runtime error builder's voice so doctor output and
|
|
153
|
+
* `item set` errors agree. Pre-fix the writer-expansion split (Codex
|
|
154
|
+
* M5b cleanup re-review #1), this diagnostic would have called every
|
|
155
|
+
* non-allowlisted type "deferred to v0.2", which doctor faithfully
|
|
156
|
+
* preserved via the category-keyed switch. M18 close (Codex round-2
|
|
157
|
+
* P2): the tentative writer-expansion row slipped from v0.2 to v0.3,
|
|
158
|
+
* so the `v0_2_writer_expansion` category's message now references
|
|
159
|
+
* v0.3. The category constant name retains its M8-era spelling for
|
|
160
|
+
* stability — renaming would churn every consumer with no wire-shape
|
|
161
|
+
* change.
|
|
162
|
+
*/
|
|
163
|
+
const messageForCategory = (type, category) => {
|
|
164
|
+
if (category === 'read_only_forever') {
|
|
165
|
+
return (`Column type "${type}" is computed by Monday and is not ` +
|
|
166
|
+
`writable via the API regardless of CLI version. Set the ` +
|
|
167
|
+
`underlying source column instead.`);
|
|
168
|
+
}
|
|
169
|
+
if (category === 'v0_2_writer_expansion') {
|
|
170
|
+
return (`Column type "${type}" is not yet in the friendly --set ` +
|
|
171
|
+
`translator allowlist. The tentative writer-expansion row ` +
|
|
172
|
+
`slipped from v0.2 to v0.3 at v0.2.0 release; use --set-raw ` +
|
|
173
|
+
`<col>=<json> in the meantime.`);
|
|
174
|
+
}
|
|
175
|
+
return (`Column type "${type}" is not in the friendly --set allowlist or ` +
|
|
176
|
+
`the writer-expansion roadmap. Track cli-design.md §5.3 for ` +
|
|
177
|
+
`future coverage; --set-raw works for any type Monday writes via ` +
|
|
178
|
+
`change_column_value.`);
|
|
179
|
+
};
|
|
180
|
+
const collectDuplicateTitles = (columns) => {
|
|
181
|
+
const groups = new Map();
|
|
182
|
+
for (const c of columns) {
|
|
183
|
+
if (c.archived === true)
|
|
184
|
+
continue;
|
|
185
|
+
const key = normaliseTitle(c.title);
|
|
186
|
+
let arr = groups.get(key);
|
|
187
|
+
if (arr === undefined) {
|
|
188
|
+
arr = [];
|
|
189
|
+
groups.set(key, arr);
|
|
190
|
+
}
|
|
191
|
+
arr.push(c);
|
|
192
|
+
}
|
|
193
|
+
const result = [];
|
|
194
|
+
for (const [normalised, group] of groups) {
|
|
195
|
+
if (group.length < 2)
|
|
196
|
+
continue;
|
|
197
|
+
result.push({
|
|
198
|
+
kind: 'duplicate_column_title',
|
|
199
|
+
severity: 'warning',
|
|
200
|
+
normalised_title: normalised,
|
|
201
|
+
columns: group.map((c) => ({ id: c.id, title: c.title, type: c.type })),
|
|
202
|
+
message: `Found ${String(group.length)} columns sharing the normalised ` +
|
|
203
|
+
`title "${normalised}". Title-based --set / --where / --filter ` +
|
|
204
|
+
`against this title will surface ambiguous_column; use the ` +
|
|
205
|
+
`explicit id:<column_id> prefix or write to the column ID directly.`,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
return result;
|
|
209
|
+
};
|
|
210
|
+
const collectUnsupportedTypes = (columns) => {
|
|
211
|
+
const result = [];
|
|
212
|
+
for (const c of columns) {
|
|
213
|
+
if (c.archived === true)
|
|
214
|
+
continue;
|
|
215
|
+
if (isWritableColumnType(c.type))
|
|
216
|
+
continue;
|
|
217
|
+
const category = getColumnRoadmapCategory(c.type);
|
|
218
|
+
// Map the internal category enum to the wire-stable label so the
|
|
219
|
+
// doctor output is more readable than `v0_2_writer_expansion`.
|
|
220
|
+
// The underscore form lives in the runtime helper only;
|
|
221
|
+
// diagnostic shape uses the dotted form.
|
|
222
|
+
const wireCategory = category === 'v0_2_writer_expansion'
|
|
223
|
+
? 'v0.2_writer_expansion'
|
|
224
|
+
: category === 'read_only_forever'
|
|
225
|
+
? 'read_only_forever'
|
|
226
|
+
: 'future';
|
|
227
|
+
result.push({
|
|
228
|
+
kind: 'unsupported_column_type',
|
|
229
|
+
// Severity differs by category. Read-only-forever is "info"
|
|
230
|
+
// because nothing the agent can do will change it; future / v0.2
|
|
231
|
+
// are "warning" because they're temporarily blocked.
|
|
232
|
+
severity: category === 'read_only_forever' ? 'info' : 'warning',
|
|
233
|
+
column_id: c.id,
|
|
234
|
+
column_title: c.title,
|
|
235
|
+
column_type: c.type,
|
|
236
|
+
category: wireCategory,
|
|
237
|
+
message: messageForCategory(c.type, category),
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
return result;
|
|
241
|
+
};
|
|
242
|
+
const BOARD_RELATION_LOOKUP_QUERY = `
|
|
243
|
+
query BoardDoctorRelationLookup($ids: [ID!]!) {
|
|
244
|
+
boards(ids: $ids) {
|
|
245
|
+
id
|
|
246
|
+
name
|
|
247
|
+
state
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
`;
|
|
251
|
+
const boardRelationLookupResponseSchema = z.looseObject({
|
|
252
|
+
boards: z
|
|
253
|
+
.array(z
|
|
254
|
+
.object({
|
|
255
|
+
id: BoardIdSchema,
|
|
256
|
+
name: z.string(),
|
|
257
|
+
state: z.string().nullable(),
|
|
258
|
+
})
|
|
259
|
+
.strict())
|
|
260
|
+
.nullable(),
|
|
261
|
+
});
|
|
262
|
+
/**
|
|
263
|
+
* Defensive parse of `board_relation` settings_str. Monday's shape
|
|
264
|
+
* is `{ "boardIds": [<numeric-string>, ...] }`; older boards may
|
|
265
|
+
* omit the slot entirely. We tolerate both — the doctor only runs
|
|
266
|
+
* the relation lookup when at least one boardId is present.
|
|
267
|
+
*/
|
|
268
|
+
const extractLinkedBoardIds = (settings) => {
|
|
269
|
+
if (settings === null ||
|
|
270
|
+
typeof settings !== 'object' ||
|
|
271
|
+
Array.isArray(settings)) {
|
|
272
|
+
return [];
|
|
273
|
+
}
|
|
274
|
+
const boardIds = settings.boardIds;
|
|
275
|
+
if (!Array.isArray(boardIds))
|
|
276
|
+
return [];
|
|
277
|
+
return boardIds.filter((id) => typeof id === 'string');
|
|
278
|
+
};
|
|
279
|
+
const collectBrokenBoardRelations = async (client, metadata) => {
|
|
280
|
+
// Build a per-column map of linked-board IDs. Skip archived
|
|
281
|
+
// columns — they're not actionable. Aggregate ALL linked boards
|
|
282
|
+
// into one `boards(ids:)` call so we don't fan out per column.
|
|
283
|
+
const perColumn = new Map();
|
|
284
|
+
const allIds = new Set();
|
|
285
|
+
for (const c of metadata.columns) {
|
|
286
|
+
if (c.archived === true)
|
|
287
|
+
continue;
|
|
288
|
+
if (c.type !== 'board_relation')
|
|
289
|
+
continue;
|
|
290
|
+
const settings = parseColumnSettings(c.settings_str);
|
|
291
|
+
const ids = extractLinkedBoardIds(settings);
|
|
292
|
+
if (ids.length === 0)
|
|
293
|
+
continue;
|
|
294
|
+
perColumn.set(c.id, ids);
|
|
295
|
+
for (const id of ids) {
|
|
296
|
+
allIds.add(id);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
if (allIds.size === 0)
|
|
300
|
+
return [];
|
|
301
|
+
const response = await client.raw(BOARD_RELATION_LOOKUP_QUERY, { ids: [...allIds] }, { operationName: 'BoardDoctorRelationLookup' });
|
|
302
|
+
const data = unwrapOrThrow(boardRelationLookupResponseSchema.safeParse(response.data), {
|
|
303
|
+
context: 'Monday returned a malformed BoardDoctorRelationLookup response',
|
|
304
|
+
details: { board_id: metadata.id },
|
|
305
|
+
hint: 'this is a data-integrity error in Monday\'s response; verify ' +
|
|
306
|
+
'the response shape and update boardRelationLookupResponseSchema ' +
|
|
307
|
+
'if Monday\'s contract has changed.',
|
|
308
|
+
});
|
|
309
|
+
const reachable = new Map();
|
|
310
|
+
for (const b of data.boards ?? []) {
|
|
311
|
+
reachable.set(b.id, { state: b.state });
|
|
312
|
+
}
|
|
313
|
+
const result = [];
|
|
314
|
+
for (const [columnId, linkedIds] of perColumn) {
|
|
315
|
+
const archived = [];
|
|
316
|
+
const unreachable = [];
|
|
317
|
+
for (const id of linkedIds) {
|
|
318
|
+
const live = reachable.get(id);
|
|
319
|
+
if (live === undefined) {
|
|
320
|
+
unreachable.push(id);
|
|
321
|
+
continue;
|
|
322
|
+
}
|
|
323
|
+
if (live.state === 'archived' || live.state === 'deleted') {
|
|
324
|
+
archived.push(id);
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
if (archived.length === 0 && unreachable.length === 0)
|
|
328
|
+
continue;
|
|
329
|
+
const column = metadata.columns.find((c) => c.id === columnId);
|
|
330
|
+
/* c8 ignore next 5 — defensive: columnId came from the same
|
|
331
|
+
metadata.columns walk that built `perColumn`, so this lookup
|
|
332
|
+
always finds the column. The branch exists to satisfy
|
|
333
|
+
`noUncheckedIndexedAccess` without forcing a non-null
|
|
334
|
+
assertion at every read. */
|
|
335
|
+
if (column === undefined)
|
|
336
|
+
continue;
|
|
337
|
+
const reason = archived.length > 0 && unreachable.length > 0
|
|
338
|
+
? 'mixed'
|
|
339
|
+
: archived.length > 0
|
|
340
|
+
? 'archived'
|
|
341
|
+
: 'unreachable';
|
|
342
|
+
result.push({
|
|
343
|
+
kind: 'broken_board_relation',
|
|
344
|
+
severity: 'warning',
|
|
345
|
+
column_id: columnId,
|
|
346
|
+
column_title: column.title,
|
|
347
|
+
missing_board_ids: [...archived, ...unreachable],
|
|
348
|
+
reason,
|
|
349
|
+
message: `board_relation column "${column.title}" (${columnId}) links to ` +
|
|
350
|
+
`${String(archived.length + unreachable.length)} board(s) that ` +
|
|
351
|
+
`are not active: ${archived.length > 0 ? `${String(archived.length)} archived/deleted` : ''}${archived.length > 0 && unreachable.length > 0 ? ', ' : ''}${unreachable.length > 0 ? `${String(unreachable.length)} unreachable (token may lack permission, or the board doesn't exist)` : ''}.`,
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
return result;
|
|
355
|
+
};
|
|
356
|
+
export const boardDoctorCommand = {
|
|
357
|
+
name: 'board.doctor',
|
|
358
|
+
summary: 'Diagnose a board for column / relation issues that bite at runtime',
|
|
359
|
+
examples: [
|
|
360
|
+
'monday board doctor 12345',
|
|
361
|
+
'monday board doctor 12345 --json',
|
|
362
|
+
],
|
|
363
|
+
idempotent: true,
|
|
364
|
+
inputSchema,
|
|
365
|
+
outputSchema: boardDoctorOutputSchema,
|
|
366
|
+
attach: (program, ctx) => {
|
|
367
|
+
const noun = ensureSubcommand(program, 'board', 'Board commands');
|
|
368
|
+
noun
|
|
369
|
+
.command('doctor <boardId>')
|
|
370
|
+
.description(boardDoctorCommand.summary)
|
|
371
|
+
.addHelpText('after', ['', 'Examples:', ...boardDoctorCommand.examples.map((e) => ` ${e}`), ''].join('\n'))
|
|
372
|
+
.action(async (boardId, opts) => {
|
|
373
|
+
const parsed = parseArgv(boardDoctorCommand.inputSchema, {
|
|
374
|
+
boardId,
|
|
375
|
+
...opts,
|
|
376
|
+
});
|
|
377
|
+
const { client, globalFlags, apiVersion } = resolveClient(ctx, program.opts());
|
|
378
|
+
// Force-refresh so doctor sees the live state (cache hits
|
|
379
|
+
// would mean diagnostics describe stale data; the whole
|
|
380
|
+
// value of doctor is current correctness).
|
|
381
|
+
const result = await loadBoardMetadata({
|
|
382
|
+
client,
|
|
383
|
+
boardId: parsed.boardId,
|
|
384
|
+
env: ctx.env,
|
|
385
|
+
noCache: globalFlags.noCache,
|
|
386
|
+
refresh: true,
|
|
387
|
+
});
|
|
388
|
+
const dups = collectDuplicateTitles(result.metadata.columns);
|
|
389
|
+
const unsupported = collectUnsupportedTypes(result.metadata.columns);
|
|
390
|
+
const broken = await collectBrokenBoardRelations(client, result.metadata);
|
|
391
|
+
const diagnostics = [
|
|
392
|
+
...dups,
|
|
393
|
+
...unsupported,
|
|
394
|
+
...broken,
|
|
395
|
+
];
|
|
396
|
+
const data = {
|
|
397
|
+
board_id: result.metadata.id,
|
|
398
|
+
board_name: result.metadata.name,
|
|
399
|
+
total: diagnostics.length,
|
|
400
|
+
diagnostics: [...diagnostics],
|
|
401
|
+
};
|
|
402
|
+
// Doctor always force-refreshes; meta.source is always 'live'.
|
|
403
|
+
ctx.meta.setSource('live');
|
|
404
|
+
emitSuccess({
|
|
405
|
+
ctx,
|
|
406
|
+
data,
|
|
407
|
+
schema: boardDoctorCommand.outputSchema,
|
|
408
|
+
programOpts: program.opts(),
|
|
409
|
+
source: 'live',
|
|
410
|
+
apiVersion,
|
|
411
|
+
complexity: result.complexity,
|
|
412
|
+
cacheAgeSeconds: null,
|
|
413
|
+
});
|
|
414
|
+
});
|
|
415
|
+
},
|
|
416
|
+
};
|
|
417
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/commands/board/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `monday board duplicate <bid> [--name <n>] [--workspace <wid>]
|
|
3
|
+
* [--with-updates] [--dry-run]` — duplicate a board
|
|
4
|
+
* (`cli-design.md` §4.3 line 727, `v0.2-plan.md` §3 M15).
|
|
5
|
+
*
|
|
6
|
+
* **Wire shape.** Single round-trip via `duplicate_board(board_id,
|
|
7
|
+
* duplicate_type: DuplicateBoardType!, board_name?, workspace_id?,
|
|
8
|
+
* folder_id?, keep_subscribers?)`. Returns the M15-unique
|
|
9
|
+
* `BoardDuplication { board, is_async }` SDK type — the only M15
|
|
10
|
+
* verb whose live envelope's `data` wraps because Monday's wire
|
|
11
|
+
* shape carries `is_async`. Per cli-design §6.1 (round-2 F3
|
|
12
|
+
* widening) + §6.4 board-duplicate variant.
|
|
13
|
+
*
|
|
14
|
+
* **`--with-updates` flag mapping.** Selects between Monday's
|
|
15
|
+
* three-armed `DuplicateBoardType` enum: without --with-updates
|
|
16
|
+
* the wire call uses `duplicate_board_with_pulses` (items WITHOUT
|
|
17
|
+
* updates); with --with-updates the wire call uses
|
|
18
|
+
* `duplicate_board_with_pulses_and_updates` (items WITH updates).
|
|
19
|
+
* The third arm (`duplicate_board_with_structure` — skeleton
|
|
20
|
+
* without items) is deferred to a later v0.x; agents needing it
|
|
21
|
+
* use M9's `dev mutate` escape hatch.
|
|
22
|
+
*
|
|
23
|
+
* **`is_async` semantics.** When true, Monday has queued the
|
|
24
|
+
* duplication server-side and the new board may not be fully
|
|
25
|
+
* populated by envelope time. Agents needing to operate on the
|
|
26
|
+
* duplicated items / updates poll `boards(ids: [<new_id>]) {
|
|
27
|
+
* state }` until terminal state. When false, the duplication has
|
|
28
|
+
* fully landed by envelope time and immediate follow-up reads
|
|
29
|
+
* are safe. (cli-design §6.4 board-duplicate live envelope.)
|
|
30
|
+
*
|
|
31
|
+
* **`--workspace` is optional.** Defaults to the source board's
|
|
32
|
+
* workspace; only forwards when the agent provides a value.
|
|
33
|
+
*
|
|
34
|
+
* **`--name` is optional.** Defaults to Monday's server-side
|
|
35
|
+
* "<source name> (Copy)" when omitted.
|
|
36
|
+
*
|
|
37
|
+
* **Dry-run shape** per cli-design §6.4 board-duplicate variant:
|
|
38
|
+
* `{operation: "duplicate_board", board_id, with_updates,
|
|
39
|
+
* target_workspace_id?, target_name?, board: <projected source
|
|
40
|
+
* snapshot>}`. Preflight `board get` read via `loadBoardMetadata`
|
|
41
|
+
* — cache hits observable; `meta.source: 'live' | 'cache'`.
|
|
42
|
+
* Cache-staleness caveat: pass `--no-cache` for force-live
|
|
43
|
+
* preview when freshness matters.
|
|
44
|
+
*
|
|
45
|
+
* **Idempotent: false.** Re-running creates a second copy. NOT
|
|
46
|
+
* destructive (no --yes gate — cli-design §3.1 #7 reserves the
|
|
47
|
+
* gate for destructive verbs). Same shape `monday board create`
|
|
48
|
+
* uses for non-destructive idempotency.
|
|
49
|
+
*/
|
|
50
|
+
import { z } from 'zod';
|
|
51
|
+
import { type CommandModule } from '../types.js';
|
|
52
|
+
/**
|
|
53
|
+
* The mutation envelope's `data` wraps `BoardDuplication { board,
|
|
54
|
+
* is_async }`. Per cli-design §6.4 board-duplicate variant + §6.1
|
|
55
|
+
* universal envelope widening (round-2 F3) — single-target verbs
|
|
56
|
+
* usually surface the projection directly, but `board duplicate`
|
|
57
|
+
* is the M15 wrapper case because `is_async` is load-bearing for
|
|
58
|
+
* agents that duplicate-then-immediately-read.
|
|
59
|
+
*/
|
|
60
|
+
export declare const boardDuplicateOutputSchema: z.ZodObject<{
|
|
61
|
+
board: z.ZodObject<{
|
|
62
|
+
id: z.ZodString;
|
|
63
|
+
name: z.ZodString;
|
|
64
|
+
description: z.ZodNullable<z.ZodString>;
|
|
65
|
+
state: z.ZodNullable<z.ZodString>;
|
|
66
|
+
board_kind: z.ZodNullable<z.ZodString>;
|
|
67
|
+
board_folder_id: z.ZodNullable<z.ZodString>;
|
|
68
|
+
workspace_id: z.ZodNullable<z.ZodString>;
|
|
69
|
+
url: z.ZodNullable<z.ZodString>;
|
|
70
|
+
items_count: z.ZodNullable<z.ZodNumber>;
|
|
71
|
+
updated_at: z.ZodNullable<z.ZodString>;
|
|
72
|
+
permissions: z.ZodNullable<z.ZodString>;
|
|
73
|
+
}, z.core.$strict>;
|
|
74
|
+
is_async: z.ZodBoolean;
|
|
75
|
+
}, z.core.$strict>;
|
|
76
|
+
export type BoardDuplicateOutput = z.infer<typeof boardDuplicateOutputSchema>;
|
|
77
|
+
declare const inputSchema: z.ZodObject<{
|
|
78
|
+
boardId: z.core.$ZodBranded<z.ZodString, "BoardId", "out">;
|
|
79
|
+
name: z.ZodOptional<z.ZodString>;
|
|
80
|
+
workspace: z.ZodOptional<z.core.$ZodBranded<z.ZodString, "WorkspaceId", "out">>;
|
|
81
|
+
withUpdates: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
82
|
+
}, z.core.$strict>;
|
|
83
|
+
export declare const boardDuplicateCommand: CommandModule<z.infer<typeof inputSchema>, BoardDuplicateOutput>;
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=duplicate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplicate.d.ts","sourceRoot":"","sources":["../../../src/commands/board/duplicate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAoCnE;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;kBAK5B,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,QAAA,MAAM,WAAW;;;;;kBAYN,CAAC;AAeZ,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAC/C,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,EAC3B,oBAAoB,CAyMrB,CAAC"}
|