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 @@
|
|
|
1
|
+
{"version":3,"file":"board-favorites.js","sourceRoot":"","sources":["../../src/api/board-favorites.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,11 +60,15 @@
|
|
|
60
60
|
* stays inline because each verb's response root key
|
|
61
61
|
* (`create_board` / `archive_board` / etc.) is per-verb. The
|
|
62
62
|
* missing-root-key check (schema-drift → `internal_error` with
|
|
63
|
-
* a `hint`)
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
63
|
+
* a `hint`) was Codex M15 implementation round-2 F1's distinction
|
|
64
|
+
* between schema-drift and null-payload, deliberately preserved at
|
|
65
|
+
* each site at M15 ship time. **R42 (post-v0.2 → v0.3 cleanup
|
|
66
|
+
* window — `c529445`) consolidated the inline check across every
|
|
67
|
+
* board-mutation verb onto `assertResponseFieldPresent`** with
|
|
68
|
+
* `nullHandling: 'caller_handles'`; the helper runs immediately
|
|
69
|
+
* after each verb's `unwrapOrThrow(responseSchema.safeParse(...))`,
|
|
70
|
+
* with `projectMutationBoard` continuing to handle null-value per-
|
|
71
|
+
* noun (some verbs throw `internal_error`, some `not_found`).
|
|
68
72
|
*/
|
|
69
73
|
import { type ErrorCode } from '../utils/errors.js';
|
|
70
74
|
import { type BoardProjection } from './board-projection.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-mutation-result.d.ts","sourceRoot":"","sources":["../../src/api/board-mutation-result.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"board-mutation-result.d.ts","sourceRoot":"","sources":["../../src/api/board-mutation-result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AAEH,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEpF,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,YAAY,CAAC;AAE/D,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B;;;wDAGoD;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,GAAI,2DAMlC,0BAA0B,KAAG,eAc/B,CAAC"}
|
|
@@ -60,11 +60,15 @@
|
|
|
60
60
|
* stays inline because each verb's response root key
|
|
61
61
|
* (`create_board` / `archive_board` / etc.) is per-verb. The
|
|
62
62
|
* missing-root-key check (schema-drift → `internal_error` with
|
|
63
|
-
* a `hint`)
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
63
|
+
* a `hint`) was Codex M15 implementation round-2 F1's distinction
|
|
64
|
+
* between schema-drift and null-payload, deliberately preserved at
|
|
65
|
+
* each site at M15 ship time. **R42 (post-v0.2 → v0.3 cleanup
|
|
66
|
+
* window — `c529445`) consolidated the inline check across every
|
|
67
|
+
* board-mutation verb onto `assertResponseFieldPresent`** with
|
|
68
|
+
* `nullHandling: 'caller_handles'`; the helper runs immediately
|
|
69
|
+
* after each verb's `unwrapOrThrow(responseSchema.safeParse(...))`,
|
|
70
|
+
* with `projectMutationBoard` continuing to handle null-value per-
|
|
71
|
+
* noun (some verbs throw `internal_error`, some `not_found`).
|
|
68
72
|
*/
|
|
69
73
|
import { ApiError } from '../utils/errors.js';
|
|
70
74
|
import { unwrapOrThrow } from '../utils/parse-boundary.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-mutation-result.js","sourceRoot":"","sources":["../../src/api/board-mutation-result.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"board-mutation-result.js","sourceRoot":"","sources":["../../src/api/board-mutation-result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEG;AAEH,OAAO,EAAE,QAAQ,EAAkB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAwB,MAAM,uBAAuB,CAAC;AAgBpF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,GAAG,EACH,SAAS,EACT,YAAY,EACZ,SAAS,EACT,WAAW,GACgB,EAAmB,EAAE;IAChD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE;YAC1C,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE;SACtC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,aAAa,GACjB,SAAS,KAAK,YAAY;QACxB,CAAC,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;QACvC,CAAC,CAAC,MAAM,WAAW,EAAE,CAAC;IAC1B,OAAO,aAAa,CAAC,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;QACzD,OAAO,EAAE,iDAAiD,aAAa,EAAE;QACzE,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE;KACtC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validator + parser for v0.3-M19's `board_relation` and `dependency`
|
|
3
|
+
* friendly translators. Each translator's input is a comma-split
|
|
4
|
+
* item-ID list (`<iid1>,<iid2>`); both target columns scope the
|
|
5
|
+
* relation to a specific allowed-board set (Monday's
|
|
6
|
+
* `column.settings.boardIds` for `board_relation` /
|
|
7
|
+
* `column.settings.dependencyBoards` for `dependency`).
|
|
8
|
+
*
|
|
9
|
+
* **Two surfaces.**
|
|
10
|
+
*
|
|
11
|
+
* - `parseRelationItemIds(raw, columnId, context)` — pure parser.
|
|
12
|
+
* Comma-splits + trims + filters the raw `--set` value, rejects
|
|
13
|
+
* empty / over-cap / non-decimal / unsafe-integer / duplicate
|
|
14
|
+
* inputs as `usage_error` BEFORE any network call. Returns
|
|
15
|
+
* `readonly number[]` (parallel to the input order, post-dedup).
|
|
16
|
+
*
|
|
17
|
+
* - `validateBoardRelationItems({ client, itemIds, allowedBoards,
|
|
18
|
+
* context, env?, noCache? })` — async validator. Batches a single
|
|
19
|
+
* `items(ids: [...])` query (one trip per `--set` call rather than
|
|
20
|
+
* one trip per item) and confirms each input item belongs to one
|
|
21
|
+
* of the column's allowed boards. Mismatches surface as
|
|
22
|
+
* `usage_error` (built by the caller from the returned
|
|
23
|
+
* `mismatches: BoardRelationMismatch[]`) so agents can correct
|
|
24
|
+
* without reading the column's settings separately.
|
|
25
|
+
*
|
|
26
|
+
* **Why a separate module from `column-values.ts`.** Both
|
|
27
|
+
* `board_relation` and `dependency` translators consume the same
|
|
28
|
+
* helpers (different settings field, identical wire shape +
|
|
29
|
+
* resolution path). Keeping the parser + validator in their own
|
|
30
|
+
* module mirrors the precedent set by `dates.ts` / `links.ts` /
|
|
31
|
+
* `emails.ts` / `phones.ts` / `people.ts` — translator-specific
|
|
32
|
+
* machinery isolated from `column-values.ts`'s dispatcher logic
|
|
33
|
+
* for unit-test ergonomics. The `--set` cap (Monday's documented
|
|
34
|
+
* 25-item-per-call ceiling per cli-design §5.3) lives here too;
|
|
35
|
+
* over-cap inputs surface `usage_error` pre-network without
|
|
36
|
+
* burning a complexity-budget call against `items(ids: ...)`.
|
|
37
|
+
*
|
|
38
|
+
* **Always live.** No cache leg — board membership of an item can
|
|
39
|
+
* change cross-call (item moved cross-board), so the validator
|
|
40
|
+
* always hits live. The translator threads
|
|
41
|
+
* `{ source: 'live', cacheAgeSeconds: null }` into
|
|
42
|
+
* `translatorResolution` for symmetry with the tags translator's
|
|
43
|
+
* cache-aware path.
|
|
44
|
+
*/
|
|
45
|
+
import type { MondayClient } from './client.js';
|
|
46
|
+
/** Monday's documented per-call cap for relation-column item lists. */
|
|
47
|
+
export declare const BOARD_RELATION_MAX_ITEMS = 25;
|
|
48
|
+
export type RelationContext = 'board_relation' | 'dependency';
|
|
49
|
+
export interface BoardRelationValidationInputs {
|
|
50
|
+
/**
|
|
51
|
+
* The Monday GraphQL client. Required because the validator
|
|
52
|
+
* batches a single live `items(ids: [...])` query to read each
|
|
53
|
+
* input item's `board.id` and confirm membership in the column's
|
|
54
|
+
* allowed-board set. No cache fallback — board membership of an
|
|
55
|
+
* item can change between calls (item moved cross-board), so the
|
|
56
|
+
* validator always hits live.
|
|
57
|
+
*/
|
|
58
|
+
readonly client: MondayClient;
|
|
59
|
+
readonly itemIds: readonly number[];
|
|
60
|
+
readonly allowedBoards: readonly number[];
|
|
61
|
+
/** The translator's column ID — surfaced into mismatch details. */
|
|
62
|
+
readonly columnId: string;
|
|
63
|
+
/**
|
|
64
|
+
* Diagnostic context — surfaced in the throw's `details` so a
|
|
65
|
+
* mismatch between `board_relation` and `dependency` consumers
|
|
66
|
+
* is visible in the error envelope (per cli-design §6.5
|
|
67
|
+
* single-target shape).
|
|
68
|
+
*/
|
|
69
|
+
readonly context: RelationContext;
|
|
70
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
71
|
+
readonly noCache?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface BoardRelationMismatch {
|
|
74
|
+
readonly itemId: number;
|
|
75
|
+
/**
|
|
76
|
+
* `null` when the item ID didn't appear in the `items(ids:)`
|
|
77
|
+
* response at all (item deleted, item not visible to the caller's
|
|
78
|
+
* token, or item never existed). A real board ID otherwise.
|
|
79
|
+
*/
|
|
80
|
+
readonly actualBoard: number | null;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Per-item echo for the dry-run + envelope surface — pairs the input
|
|
84
|
+
* item ID with the resolved home-board ID. `boardId` may be `null`
|
|
85
|
+
* if the validator chose to treat a missing-from-response item as a
|
|
86
|
+
* silent zero-row (today every code path that lands here surfaces a
|
|
87
|
+
* mismatch instead, so this is reserved for future relaxations).
|
|
88
|
+
*/
|
|
89
|
+
export interface ValidatedRelationItem {
|
|
90
|
+
readonly itemId: number;
|
|
91
|
+
readonly boardId: number | null;
|
|
92
|
+
}
|
|
93
|
+
export type BoardRelationValidationResult = {
|
|
94
|
+
readonly ok: true;
|
|
95
|
+
/**
|
|
96
|
+
* Per-item validation results in input order. Each entry pairs
|
|
97
|
+
* the input item ID with its resolved home-board ID. The
|
|
98
|
+
* translator's relationResolution echo reads from this so dry-run
|
|
99
|
+
* surfaces show the validator's per-item resolution alongside
|
|
100
|
+
* the wire payload. Codex round-2 P1-3 widened the success
|
|
101
|
+
* branch to carry these (the original `{ ok: true }` shape
|
|
102
|
+
* dropped per-item data the dry-run echo needs).
|
|
103
|
+
*/
|
|
104
|
+
readonly items: readonly ValidatedRelationItem[];
|
|
105
|
+
} | {
|
|
106
|
+
readonly ok: false;
|
|
107
|
+
readonly mismatches: readonly BoardRelationMismatch[];
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Parses a comma-split item-ID list per cli-design §5.3 step 3 (the
|
|
111
|
+
* `board_relation` / `dependency` translator grammar). Five rejection
|
|
112
|
+
* branches, all surfacing `usage_error` BEFORE any network call so
|
|
113
|
+
* malformed input never burns a complexity-budget call against
|
|
114
|
+
* `items(ids: ...)`:
|
|
115
|
+
*
|
|
116
|
+
* 1. **Empty input** — `--set <col>=""` or `--set <col>=" , , "` —
|
|
117
|
+
* rejected with a hint pointing at `monday item clear` (mirrors
|
|
118
|
+
* the dropdown / people / tags empty-input contract).
|
|
119
|
+
* 2. **Over-cap input** — more than `BOARD_RELATION_MAX_ITEMS = 25`
|
|
120
|
+
* tokens — rejected pre-network so we don't burn a call
|
|
121
|
+
* against Monday's documented per-call ceiling.
|
|
122
|
+
* 3. **Non-decimal token** — anything that isn't a decimal
|
|
123
|
+
* non-negative integer string. Hex (`"0x2a"`), scientific
|
|
124
|
+
* (`"1e3"`), signed (`"-1"`), and decimal (`"1.5"`) forms all
|
|
125
|
+
* reject here.
|
|
126
|
+
* 4. **Unsafe-integer token** — decimal but exceeds
|
|
127
|
+
* `Number.MAX_SAFE_INTEGER` (2^53 - 1). `Number(token)` would
|
|
128
|
+
* lose precision; surfacing as `usage_error` rather than
|
|
129
|
+
* silently corrupting the wire payload.
|
|
130
|
+
* 5. **Duplicate token** — two tokens reference the same item ID.
|
|
131
|
+
* Monday's `items_page` does NOT deduplicate `item_ids`, so
|
|
132
|
+
* a duplicate would either error server-side or silently
|
|
133
|
+
* double-link. Rejecting client-side keeps the contract
|
|
134
|
+
* explicit.
|
|
135
|
+
*
|
|
136
|
+
* Returns the parsed item IDs in input-token order (post-dedup is
|
|
137
|
+
* unreachable since we reject duplicates).
|
|
138
|
+
*/
|
|
139
|
+
export declare const parseRelationItemIds: (raw: string, columnId: string, context: RelationContext) => readonly number[];
|
|
140
|
+
/**
|
|
141
|
+
* Validates that every input item ID belongs to one of the
|
|
142
|
+
* column's allowed boards. Batches a single `items(ids: [...])`
|
|
143
|
+
* query (Monday charges complexity per-call, not per-id, so
|
|
144
|
+
* batching is a hard requirement, not an optimisation).
|
|
145
|
+
*
|
|
146
|
+
* Returns `{ ok: true, items: [...] }` when every item resolves
|
|
147
|
+
* cleanly (the per-item array surfaces verbatim into the
|
|
148
|
+
* translator's relationResolution echo) OR
|
|
149
|
+
* `{ ok: false, mismatches: [...] }` listing every input item
|
|
150
|
+
* whose `board.id` falls outside the allowed set OR whose entry
|
|
151
|
+
* is missing from Monday's response (item deleted, no visibility,
|
|
152
|
+
* etc.).
|
|
153
|
+
*
|
|
154
|
+
* **Stub-body removal note.** The pre-flight contract diff at
|
|
155
|
+
* `d822982` shipped a `Promise.reject(internal_error)` stub; this
|
|
156
|
+
* runtime body lands at M19 Commit 3 alongside the friendly
|
|
157
|
+
* translator. The success-branch widening (`items: [...]`) is a
|
|
158
|
+
* Codex round-2 P1-3 amendment to the original pre-flight contract.
|
|
159
|
+
*/
|
|
160
|
+
export declare const validateBoardRelationItems: (inputs: BoardRelationValidationInputs) => Promise<BoardRelationValidationResult>;
|
|
161
|
+
//# sourceMappingURL=board-relation-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-relation-validation.d.ts","sourceRoot":"","sources":["../../src/api/board-relation-validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,uEAAuE;AACvE,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAK3C,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,YAAY,CAAC;AAE9D,MAAM,WAAW,6BAA6B;IAC5C;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,MAAM,6BAA6B,GACrC;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAClD,GACD;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,UAAU,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACvD,CAAC;AAqDN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,oBAAoB,GAC/B,KAAK,MAAM,EACX,UAAU,MAAM,EAChB,SAAS,eAAe,KACvB,SAAS,MAAM,EAqIjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,0BAA0B,GACrC,QAAQ,6BAA6B,KACpC,OAAO,CAAC,6BAA6B,CAwFvC,CAAC"}
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validator + parser for v0.3-M19's `board_relation` and `dependency`
|
|
3
|
+
* friendly translators. Each translator's input is a comma-split
|
|
4
|
+
* item-ID list (`<iid1>,<iid2>`); both target columns scope the
|
|
5
|
+
* relation to a specific allowed-board set (Monday's
|
|
6
|
+
* `column.settings.boardIds` for `board_relation` /
|
|
7
|
+
* `column.settings.dependencyBoards` for `dependency`).
|
|
8
|
+
*
|
|
9
|
+
* **Two surfaces.**
|
|
10
|
+
*
|
|
11
|
+
* - `parseRelationItemIds(raw, columnId, context)` — pure parser.
|
|
12
|
+
* Comma-splits + trims + filters the raw `--set` value, rejects
|
|
13
|
+
* empty / over-cap / non-decimal / unsafe-integer / duplicate
|
|
14
|
+
* inputs as `usage_error` BEFORE any network call. Returns
|
|
15
|
+
* `readonly number[]` (parallel to the input order, post-dedup).
|
|
16
|
+
*
|
|
17
|
+
* - `validateBoardRelationItems({ client, itemIds, allowedBoards,
|
|
18
|
+
* context, env?, noCache? })` — async validator. Batches a single
|
|
19
|
+
* `items(ids: [...])` query (one trip per `--set` call rather than
|
|
20
|
+
* one trip per item) and confirms each input item belongs to one
|
|
21
|
+
* of the column's allowed boards. Mismatches surface as
|
|
22
|
+
* `usage_error` (built by the caller from the returned
|
|
23
|
+
* `mismatches: BoardRelationMismatch[]`) so agents can correct
|
|
24
|
+
* without reading the column's settings separately.
|
|
25
|
+
*
|
|
26
|
+
* **Why a separate module from `column-values.ts`.** Both
|
|
27
|
+
* `board_relation` and `dependency` translators consume the same
|
|
28
|
+
* helpers (different settings field, identical wire shape +
|
|
29
|
+
* resolution path). Keeping the parser + validator in their own
|
|
30
|
+
* module mirrors the precedent set by `dates.ts` / `links.ts` /
|
|
31
|
+
* `emails.ts` / `phones.ts` / `people.ts` — translator-specific
|
|
32
|
+
* machinery isolated from `column-values.ts`'s dispatcher logic
|
|
33
|
+
* for unit-test ergonomics. The `--set` cap (Monday's documented
|
|
34
|
+
* 25-item-per-call ceiling per cli-design §5.3) lives here too;
|
|
35
|
+
* over-cap inputs surface `usage_error` pre-network without
|
|
36
|
+
* burning a complexity-budget call against `items(ids: ...)`.
|
|
37
|
+
*
|
|
38
|
+
* **Always live.** No cache leg — board membership of an item can
|
|
39
|
+
* change cross-call (item moved cross-board), so the validator
|
|
40
|
+
* always hits live. The translator threads
|
|
41
|
+
* `{ source: 'live', cacheAgeSeconds: null }` into
|
|
42
|
+
* `translatorResolution` for symmetry with the tags translator's
|
|
43
|
+
* cache-aware path.
|
|
44
|
+
*/
|
|
45
|
+
import { z } from 'zod';
|
|
46
|
+
import { ApiError, UsageError } from '../utils/errors.js';
|
|
47
|
+
/** Monday's documented per-call cap for relation-column item lists. */
|
|
48
|
+
export const BOARD_RELATION_MAX_ITEMS = 25;
|
|
49
|
+
/** Decimal non-negative integer, no leading zeros allowed except for `0` itself. */
|
|
50
|
+
const DECIMAL_ITEM_ID_PATTERN = /^(?:0|[1-9]\d*)$/u;
|
|
51
|
+
const ITEMS_BY_ID_QUERY = `
|
|
52
|
+
query ItemsByIdsForRelation($ids: [ID!]!) {
|
|
53
|
+
items(ids: $ids) {
|
|
54
|
+
id
|
|
55
|
+
board {
|
|
56
|
+
id
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
`;
|
|
61
|
+
const itemEntrySchema = z
|
|
62
|
+
.object({
|
|
63
|
+
id: z.string().regex(DECIMAL_ITEM_ID_PATTERN, {
|
|
64
|
+
message: 'item id must be a decimal non-negative integer string',
|
|
65
|
+
}),
|
|
66
|
+
board: z
|
|
67
|
+
.object({
|
|
68
|
+
id: z.string().regex(DECIMAL_ITEM_ID_PATTERN, {
|
|
69
|
+
message: 'board id must be a decimal non-negative integer string',
|
|
70
|
+
}),
|
|
71
|
+
})
|
|
72
|
+
.nullable(),
|
|
73
|
+
})
|
|
74
|
+
.strict();
|
|
75
|
+
const itemsResponseSchema = z
|
|
76
|
+
.object({
|
|
77
|
+
items: z.array(itemEntrySchema).nullable(),
|
|
78
|
+
})
|
|
79
|
+
.strict();
|
|
80
|
+
/**
|
|
81
|
+
* Builds the per-context human noun used in `usage_error` messages
|
|
82
|
+
* + error details. `board_relation` columns are described as
|
|
83
|
+
* "board-relation columns"; `dependency` columns are "dependency
|
|
84
|
+
* columns". Pinned via test so the agent-facing wording stays
|
|
85
|
+
* stable.
|
|
86
|
+
*/
|
|
87
|
+
const contextNoun = (context) => context === 'board_relation' ? 'board-relation' : 'dependency';
|
|
88
|
+
/**
|
|
89
|
+
* Parses a comma-split item-ID list per cli-design §5.3 step 3 (the
|
|
90
|
+
* `board_relation` / `dependency` translator grammar). Five rejection
|
|
91
|
+
* branches, all surfacing `usage_error` BEFORE any network call so
|
|
92
|
+
* malformed input never burns a complexity-budget call against
|
|
93
|
+
* `items(ids: ...)`:
|
|
94
|
+
*
|
|
95
|
+
* 1. **Empty input** — `--set <col>=""` or `--set <col>=" , , "` —
|
|
96
|
+
* rejected with a hint pointing at `monday item clear` (mirrors
|
|
97
|
+
* the dropdown / people / tags empty-input contract).
|
|
98
|
+
* 2. **Over-cap input** — more than `BOARD_RELATION_MAX_ITEMS = 25`
|
|
99
|
+
* tokens — rejected pre-network so we don't burn a call
|
|
100
|
+
* against Monday's documented per-call ceiling.
|
|
101
|
+
* 3. **Non-decimal token** — anything that isn't a decimal
|
|
102
|
+
* non-negative integer string. Hex (`"0x2a"`), scientific
|
|
103
|
+
* (`"1e3"`), signed (`"-1"`), and decimal (`"1.5"`) forms all
|
|
104
|
+
* reject here.
|
|
105
|
+
* 4. **Unsafe-integer token** — decimal but exceeds
|
|
106
|
+
* `Number.MAX_SAFE_INTEGER` (2^53 - 1). `Number(token)` would
|
|
107
|
+
* lose precision; surfacing as `usage_error` rather than
|
|
108
|
+
* silently corrupting the wire payload.
|
|
109
|
+
* 5. **Duplicate token** — two tokens reference the same item ID.
|
|
110
|
+
* Monday's `items_page` does NOT deduplicate `item_ids`, so
|
|
111
|
+
* a duplicate would either error server-side or silently
|
|
112
|
+
* double-link. Rejecting client-side keeps the contract
|
|
113
|
+
* explicit.
|
|
114
|
+
*
|
|
115
|
+
* Returns the parsed item IDs in input-token order (post-dedup is
|
|
116
|
+
* unreachable since we reject duplicates).
|
|
117
|
+
*/
|
|
118
|
+
export const parseRelationItemIds = (raw, columnId, context) => {
|
|
119
|
+
const noun = contextNoun(context);
|
|
120
|
+
const tokens = raw
|
|
121
|
+
.split(',')
|
|
122
|
+
.map((segment) => segment.trim())
|
|
123
|
+
.filter((segment) => segment.length > 0);
|
|
124
|
+
if (tokens.length === 0) {
|
|
125
|
+
throw new UsageError(`${context === 'board_relation' ? 'Board-relation' : 'Dependency'} column "${columnId}" needs at least one item ID. ` +
|
|
126
|
+
`Got "${raw}". To clear a ${noun} column, use ` +
|
|
127
|
+
`\`monday item clear <iid> ${columnId} [--board <bid>]\` instead.`, {
|
|
128
|
+
details: {
|
|
129
|
+
column_id: columnId,
|
|
130
|
+
column_type: context,
|
|
131
|
+
raw_input: raw,
|
|
132
|
+
hint: 'pass a comma-separated list of numeric item IDs (e.g. ' +
|
|
133
|
+
`--set ${columnId}=12345,67890). To clear, use ` +
|
|
134
|
+
'`monday item clear` — `--set <col>=""` is value-shaping, ' +
|
|
135
|
+
'not clear-intent (cli-design §5.3 lines 2375–2386).',
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
if (tokens.length > BOARD_RELATION_MAX_ITEMS) {
|
|
140
|
+
throw new UsageError(`${context === 'board_relation' ? 'Board-relation' : 'Dependency'} column "${columnId}" got ${tokens.length.toString()} item IDs, ` +
|
|
141
|
+
`which exceeds Monday's documented per-call cap of ` +
|
|
142
|
+
`${BOARD_RELATION_MAX_ITEMS.toString()}. Split the write into ` +
|
|
143
|
+
`multiple calls (each ≤${BOARD_RELATION_MAX_ITEMS.toString()} ` +
|
|
144
|
+
`items) or use --set-raw with a smaller subset.`, {
|
|
145
|
+
details: {
|
|
146
|
+
column_id: columnId,
|
|
147
|
+
column_type: context,
|
|
148
|
+
raw_input: raw,
|
|
149
|
+
item_count: tokens.length,
|
|
150
|
+
max_items: BOARD_RELATION_MAX_ITEMS,
|
|
151
|
+
hint: `Monday's relation-column item cap is ` +
|
|
152
|
+
`${BOARD_RELATION_MAX_ITEMS.toString()} per --set call. ` +
|
|
153
|
+
`Batch the input across multiple invocations.`,
|
|
154
|
+
},
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
const ids = [];
|
|
158
|
+
const seen = new Set();
|
|
159
|
+
for (const token of tokens) {
|
|
160
|
+
if (!DECIMAL_ITEM_ID_PATTERN.test(token)) {
|
|
161
|
+
throw new UsageError(`${context === 'board_relation' ? 'Board-relation' : 'Dependency'} column "${columnId}" got non-numeric token "${token}" in ` +
|
|
162
|
+
`input "${raw}". Each token must be a decimal non-negative ` +
|
|
163
|
+
`item ID (Monday item IDs are auto-incremented integers).`, {
|
|
164
|
+
details: {
|
|
165
|
+
column_id: columnId,
|
|
166
|
+
column_type: context,
|
|
167
|
+
raw_input: raw,
|
|
168
|
+
token,
|
|
169
|
+
hint: `pass numeric item IDs only (e.g. --set ${columnId}=` +
|
|
170
|
+
`12345,67890). The --set-raw escape hatch accepts the ` +
|
|
171
|
+
`literal Monday wire shape if neither form fits.`,
|
|
172
|
+
},
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
const parsed = Number(token);
|
|
176
|
+
if (!Number.isSafeInteger(parsed)) {
|
|
177
|
+
throw new UsageError(`${context === 'board_relation' ? 'Board-relation' : 'Dependency'} column "${columnId}" got numeric token "${token}" that ` +
|
|
178
|
+
`exceeds JavaScript's safe-integer range (2^53 - 1, i.e. ` +
|
|
179
|
+
`9007199254740991). Number(token) would lose precision, ` +
|
|
180
|
+
`corrupting the item_ids wire payload.`, {
|
|
181
|
+
details: {
|
|
182
|
+
column_id: columnId,
|
|
183
|
+
column_type: context,
|
|
184
|
+
raw_input: raw,
|
|
185
|
+
token,
|
|
186
|
+
// Codex post-Commit-5 P2-2 fix: don't suggest --set-raw
|
|
187
|
+
// here — that path still goes through JSON.parse, which
|
|
188
|
+
// suffers the same precision corruption for IDs beyond
|
|
189
|
+
// the safe-integer range. Monday's documented item IDs
|
|
190
|
+
// fit within 2^53-1; if the token is correct, this is a
|
|
191
|
+
// data-shape problem we can't safely round-trip.
|
|
192
|
+
hint: `Monday's documented item IDs fit within JS safe-` +
|
|
193
|
+
`integer range (2^53 - 1). The friendly translator ` +
|
|
194
|
+
`cannot safely round-trip this token; --set-raw can't ` +
|
|
195
|
+
`either (its JSON parse path suffers the same precision ` +
|
|
196
|
+
`corruption for >2^53 numeric literals). Verify the ` +
|
|
197
|
+
`item ID is correct before retrying.`,
|
|
198
|
+
},
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
if (seen.has(token)) {
|
|
202
|
+
throw new UsageError(`${context === 'board_relation' ? 'Board-relation' : 'Dependency'} column "${columnId}" got duplicate item ID "${token}" in ` +
|
|
203
|
+
`input "${raw}". Each --set call links a unique set of ` +
|
|
204
|
+
`items; bundling two references to the same item ID would ` +
|
|
205
|
+
`silently collapse to one link.`, {
|
|
206
|
+
details: {
|
|
207
|
+
column_id: columnId,
|
|
208
|
+
column_type: context,
|
|
209
|
+
raw_input: raw,
|
|
210
|
+
token,
|
|
211
|
+
hint: `pass each item ID at most once (e.g. --set ${columnId}=` +
|
|
212
|
+
`12345,67890, not 12345,12345).`,
|
|
213
|
+
},
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
seen.add(token);
|
|
217
|
+
ids.push(parsed);
|
|
218
|
+
}
|
|
219
|
+
return ids;
|
|
220
|
+
};
|
|
221
|
+
/**
|
|
222
|
+
* Validates that every input item ID belongs to one of the
|
|
223
|
+
* column's allowed boards. Batches a single `items(ids: [...])`
|
|
224
|
+
* query (Monday charges complexity per-call, not per-id, so
|
|
225
|
+
* batching is a hard requirement, not an optimisation).
|
|
226
|
+
*
|
|
227
|
+
* Returns `{ ok: true, items: [...] }` when every item resolves
|
|
228
|
+
* cleanly (the per-item array surfaces verbatim into the
|
|
229
|
+
* translator's relationResolution echo) OR
|
|
230
|
+
* `{ ok: false, mismatches: [...] }` listing every input item
|
|
231
|
+
* whose `board.id` falls outside the allowed set OR whose entry
|
|
232
|
+
* is missing from Monday's response (item deleted, no visibility,
|
|
233
|
+
* etc.).
|
|
234
|
+
*
|
|
235
|
+
* **Stub-body removal note.** The pre-flight contract diff at
|
|
236
|
+
* `d822982` shipped a `Promise.reject(internal_error)` stub; this
|
|
237
|
+
* runtime body lands at M19 Commit 3 alongside the friendly
|
|
238
|
+
* translator. The success-branch widening (`items: [...]`) is a
|
|
239
|
+
* Codex round-2 P1-3 amendment to the original pre-flight contract.
|
|
240
|
+
*/
|
|
241
|
+
export const validateBoardRelationItems = async (inputs) => {
|
|
242
|
+
const { client, itemIds, allowedBoards, columnId, context } = inputs;
|
|
243
|
+
// Defensive: an empty input list shouldn't reach the validator
|
|
244
|
+
// (parseRelationItemIds rejects pre-call), but the helper might
|
|
245
|
+
// be called from a future site that has its own input path. Treat
|
|
246
|
+
// empty as a vacuous success — no items to check, none broken.
|
|
247
|
+
/* c8 ignore next 3 — defensive: parseRelationItemIds rejects empty
|
|
248
|
+
pre-call; reaching this branch requires bypassing the parser. */
|
|
249
|
+
if (itemIds.length === 0) {
|
|
250
|
+
return { ok: true, items: [] };
|
|
251
|
+
}
|
|
252
|
+
const allowedSet = new Set(allowedBoards);
|
|
253
|
+
const variables = {
|
|
254
|
+
ids: itemIds.map((id) => id.toString()),
|
|
255
|
+
};
|
|
256
|
+
const response = await client.raw(ITEMS_BY_ID_QUERY, variables, { operationName: 'ItemsByIdsForRelation' });
|
|
257
|
+
const parsed = itemsResponseSchema.safeParse(response.data);
|
|
258
|
+
if (!parsed.success) {
|
|
259
|
+
const issues = parsed.error.issues.map((i) => ({
|
|
260
|
+
path: i.path.join('.'),
|
|
261
|
+
message: i.message,
|
|
262
|
+
code: i.code,
|
|
263
|
+
}));
|
|
264
|
+
throw new ApiError('internal_error', `Monday returned a malformed items(ids:) response while validating ` +
|
|
265
|
+
`${contextNoun(context)} column "${columnId}".`, {
|
|
266
|
+
cause: parsed.error,
|
|
267
|
+
details: {
|
|
268
|
+
column_id: columnId,
|
|
269
|
+
column_type: context,
|
|
270
|
+
issues,
|
|
271
|
+
hint: "this is a data-integrity error in Monday's response (or a " +
|
|
272
|
+
'response-shape drift); verify the response and update the ' +
|
|
273
|
+
'itemsResponseSchema if Monday\'s contract has changed.',
|
|
274
|
+
},
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
// Build a map from id (number) → boardId (number | null). Monday
|
|
278
|
+
// returns items in unspecified order; iterate the input order to
|
|
279
|
+
// preserve the per-item echo's argv-order pin.
|
|
280
|
+
const byId = new Map();
|
|
281
|
+
for (const entry of parsed.data.items ?? []) {
|
|
282
|
+
const itemNum = Number(entry.id);
|
|
283
|
+
/* c8 ignore next 3 — defensive: itemEntrySchema's regex gates the
|
|
284
|
+
id field at parse boundary, so Number() always returns a finite
|
|
285
|
+
number here. */
|
|
286
|
+
if (!Number.isSafeInteger(itemNum))
|
|
287
|
+
continue;
|
|
288
|
+
const boardNum = entry.board === null ? null : Number(entry.board.id);
|
|
289
|
+
/* c8 ignore next 3 — defensive: same regex gates board.id. */
|
|
290
|
+
if (boardNum !== null && !Number.isSafeInteger(boardNum))
|
|
291
|
+
continue;
|
|
292
|
+
byId.set(itemNum, boardNum);
|
|
293
|
+
}
|
|
294
|
+
const items = [];
|
|
295
|
+
const mismatches = [];
|
|
296
|
+
for (const itemId of itemIds) {
|
|
297
|
+
const actualBoard = byId.get(itemId);
|
|
298
|
+
if (actualBoard === undefined) {
|
|
299
|
+
// Item missing from response entirely — deleted, not visible
|
|
300
|
+
// to the caller's token, or never existed. Surface as mismatch
|
|
301
|
+
// with `actualBoard: null` so the caller can build a single
|
|
302
|
+
// typed error envelope.
|
|
303
|
+
mismatches.push({ itemId, actualBoard: null });
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
if (actualBoard === null || !allowedSet.has(actualBoard)) {
|
|
307
|
+
mismatches.push({ itemId, actualBoard });
|
|
308
|
+
continue;
|
|
309
|
+
}
|
|
310
|
+
items.push({ itemId, boardId: actualBoard });
|
|
311
|
+
}
|
|
312
|
+
if (mismatches.length > 0) {
|
|
313
|
+
return { ok: false, mismatches };
|
|
314
|
+
}
|
|
315
|
+
return { ok: true, items };
|
|
316
|
+
};
|
|
317
|
+
//# sourceMappingURL=board-relation-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-relation-validation.js","sourceRoot":"","sources":["../../src/api/board-relation-validation.ts"],"names":[],"mappings":"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"}
|
package/dist/api/cache.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export type CacheKey = {
|
|
|
7
7
|
readonly kind: 'users';
|
|
8
8
|
} | {
|
|
9
9
|
readonly kind: 'schemaVersion';
|
|
10
|
+
} | {
|
|
11
|
+
readonly kind: 'accountTags';
|
|
10
12
|
};
|
|
11
13
|
export interface CacheRootOptions {
|
|
12
14
|
readonly env?: NodeJS.ProcessEnv;
|
|
@@ -71,12 +73,19 @@ export interface CacheEntryInfo {
|
|
|
71
73
|
readonly modifiedAt: string;
|
|
72
74
|
readonly ageSeconds: number;
|
|
73
75
|
/**
|
|
74
|
-
* Best-effort kind classification. `boards`/`users`/`schema
|
|
75
|
-
* the layout in §8; an entry that doesn't
|
|
76
|
-
* surfaced as `other` rather than dropped
|
|
77
|
-
* `cache clear` would remove.
|
|
76
|
+
* Best-effort kind classification. `boards`/`users`/`schema`/
|
|
77
|
+
* `account_tags` reflect the layout in §8; an entry that doesn't
|
|
78
|
+
* match any known prefix is surfaced as `other` rather than dropped
|
|
79
|
+
* — agents see exactly what `cache clear` would remove.
|
|
80
|
+
*
|
|
81
|
+
* **M19** added `account_tags` for the per-account tag directory
|
|
82
|
+
* (single-account-scope cache file under `account_tags/index.json`,
|
|
83
|
+
* mirroring `users/index.json`'s layout). Kind label uses snake-
|
|
84
|
+
* case to match the on-disk directory name; the `users` /
|
|
85
|
+
* `boards` / `schema` labels predate the convention but stay as-is
|
|
86
|
+
* for stability.
|
|
78
87
|
*/
|
|
79
|
-
readonly kind: 'boards' | 'users' | 'schema' | 'other';
|
|
88
|
+
readonly kind: 'boards' | 'users' | 'schema' | 'account_tags' | 'other';
|
|
80
89
|
readonly id: string | undefined;
|
|
81
90
|
}
|
|
82
91
|
interface ListOptions {
|
package/dist/api/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/api/cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/api/cache.ts"],"names":[],"mappings":"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"}
|