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,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Page-based pagination walker shared by every M3 list command
|
|
3
|
+
* (workspace / board / user / update). Codex M3 pass-1 §1 caught
|
|
4
|
+
* the original per-command walkers all looped without an upper
|
|
5
|
+
* bound — `--all` against a misbehaving fixture or proxy that kept
|
|
6
|
+
* returning a full page would burn quota until timeout.
|
|
7
|
+
*
|
|
8
|
+
* The walker:
|
|
9
|
+
* - always issues at least one request (the bare `monday X list`
|
|
10
|
+
* case calls this with `all: false` and `page: 1`);
|
|
11
|
+
* - on a short page (`< limit`) terminates with `hasMore: false`;
|
|
12
|
+
* - on a full page with `all: true`, increments and continues;
|
|
13
|
+
* - on hitting `maxPages`, stops and reports `hasMore: true` —
|
|
14
|
+
* the caller raises a `pagination_cap_reached` warning so the
|
|
15
|
+
* agent knows the result is truncated.
|
|
16
|
+
*
|
|
17
|
+
* Cursor-based pagination (M4 `item list`) gets its own walker —
|
|
18
|
+
* §5.6 calls out the stale-cursor contract and the silent-retry
|
|
19
|
+
* forbid that doesn't apply to page-based reads.
|
|
20
|
+
*/
|
|
21
|
+
import type { MondayResponse } from './client.js';
|
|
22
|
+
export interface WalkPagesInputs<T, R> {
|
|
23
|
+
/**
|
|
24
|
+
* Per-page request executor. Receives the 1-indexed page number,
|
|
25
|
+
* returns the typed `MondayResponse<R>` of one page. The walker
|
|
26
|
+
* accumulates the projection.
|
|
27
|
+
*/
|
|
28
|
+
readonly fetchPage: (page: number) => Promise<MondayResponse<R>>;
|
|
29
|
+
/**
|
|
30
|
+
* Extracts the array of items from one page's response. Returning
|
|
31
|
+
* an empty array signals exhaustion (no further pages).
|
|
32
|
+
*/
|
|
33
|
+
readonly extractItems: (response: MondayResponse<R>) => readonly T[];
|
|
34
|
+
/** Page size the caller passed to the GraphQL query. Used to
|
|
35
|
+
* tell whether a returned page is "full" (= maybe more) vs
|
|
36
|
+
* "short" (= terminal). */
|
|
37
|
+
readonly pageSize: number;
|
|
38
|
+
/** Honour the `--all` flag. */
|
|
39
|
+
readonly all: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* 1-indexed starting page. When `all: false` and `startPage`
|
|
42
|
+
* is set, the walker fetches exactly that page. Default 1.
|
|
43
|
+
*/
|
|
44
|
+
readonly startPage?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Hard cap on pages to walk under `--all`. Per Codex M3 pass-1 §1,
|
|
47
|
+
* every list command must cap; the caller propagates this through
|
|
48
|
+
* `--limit-pages`. Default in caller, surfaced as a usage option.
|
|
49
|
+
*/
|
|
50
|
+
readonly maxPages: number;
|
|
51
|
+
/**
|
|
52
|
+
* Streaming hook for the NDJSON output mode (§6.3). Called once
|
|
53
|
+
* per emitted item, in the per-page arrival order returned by
|
|
54
|
+
* `extractItems` (page-walked queries don't sort — Monday's
|
|
55
|
+
* server-side ordering wins). `await`ed so a slow downstream
|
|
56
|
+
* consumer (a piped `jq`) backpressures the walker — same shape
|
|
57
|
+
* as `paginate.onItem`. Mirrors `pagination.ts:369` push-then-
|
|
58
|
+
* await ordering exactly: the item lands in `collected` before
|
|
59
|
+
* the hook awaits, so a hook throwing mid-page leaves a
|
|
60
|
+
* deterministic prefix in `result.items` (Codex M18 pre-flight
|
|
61
|
+
* P3-1).
|
|
62
|
+
*/
|
|
63
|
+
readonly onItem?: (item: T) => void | Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
export interface WalkPagesResult<T, R> {
|
|
66
|
+
/** All items collected across walked pages, in arrival order. */
|
|
67
|
+
readonly items: readonly T[];
|
|
68
|
+
/** The final response — used for `meta.complexity` etc. */
|
|
69
|
+
readonly lastResponse: MondayResponse<R>;
|
|
70
|
+
/**
|
|
71
|
+
* `true` when the walker stopped early (cap hit on a still-full
|
|
72
|
+
* page). Drives a `pagination_cap_reached` warning at the caller;
|
|
73
|
+
* also lands on `meta.has_more`.
|
|
74
|
+
*/
|
|
75
|
+
readonly hasMore: boolean;
|
|
76
|
+
/** How many pages the walker actually fetched. */
|
|
77
|
+
readonly pagesFetched: number;
|
|
78
|
+
}
|
|
79
|
+
export declare const walkPages: <T, R>(inputs: WalkPagesInputs<T, R>) => Promise<WalkPagesResult<T, R>>;
|
|
80
|
+
export interface PaginationCapWarning {
|
|
81
|
+
readonly code: 'pagination_cap_reached';
|
|
82
|
+
readonly message: string;
|
|
83
|
+
readonly details: {
|
|
84
|
+
readonly pages_walked: number;
|
|
85
|
+
readonly hint: string;
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
export declare const buildCapWarning: (pagesWalked: number, flagName?: string) => PaginationCapWarning;
|
|
89
|
+
/** Default cap shared by every M3 list command's `--all` walk. */
|
|
90
|
+
export declare const DEFAULT_MAX_PAGES = 50;
|
|
91
|
+
//# sourceMappingURL=walk-pages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walk-pages.d.ts","sourceRoot":"","sources":["../../src/api/walk-pages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,eAAe,CAAC,CAAC,EAAE,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,EAAE,CAAC;IACrE;;gCAE4B;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,EAAE,CAAC;IACnC,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;IAC7B,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACzC;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,kDAAkD;IAClD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAmBD,eAAO,MAAM,SAAS,GAAU,CAAC,EAAE,CAAC,EAClC,QAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,KAC5B,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CA4C/B,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,eAAO,MAAM,eAAe,GAC1B,aAAa,MAAM,EACnB,iBAA0B,KACzB,oBAOD,CAAC;AAEH,kEAAkE;AAClE,eAAO,MAAM,iBAAiB,KAAK,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Page-based pagination walker shared by every M3 list command
|
|
3
|
+
* (workspace / board / user / update). Codex M3 pass-1 §1 caught
|
|
4
|
+
* the original per-command walkers all looped without an upper
|
|
5
|
+
* bound — `--all` against a misbehaving fixture or proxy that kept
|
|
6
|
+
* returning a full page would burn quota until timeout.
|
|
7
|
+
*
|
|
8
|
+
* The walker:
|
|
9
|
+
* - always issues at least one request (the bare `monday X list`
|
|
10
|
+
* case calls this with `all: false` and `page: 1`);
|
|
11
|
+
* - on a short page (`< limit`) terminates with `hasMore: false`;
|
|
12
|
+
* - on a full page with `all: true`, increments and continues;
|
|
13
|
+
* - on hitting `maxPages`, stops and reports `hasMore: true` —
|
|
14
|
+
* the caller raises a `pagination_cap_reached` warning so the
|
|
15
|
+
* agent knows the result is truncated.
|
|
16
|
+
*
|
|
17
|
+
* Cursor-based pagination (M4 `item list`) gets its own walker —
|
|
18
|
+
* §5.6 calls out the stale-cursor contract and the silent-retry
|
|
19
|
+
* forbid that doesn't apply to page-based reads.
|
|
20
|
+
*/
|
|
21
|
+
const emitPageItems = async (items, collected, onItem) => {
|
|
22
|
+
// Push-then-await ordering — same as `paginate.emitItems` at
|
|
23
|
+
// pagination.ts:369. The item lands in `collected` before the
|
|
24
|
+
// hook awaits, so a hook throwing mid-page leaves a deterministic
|
|
25
|
+
// prefix in `result.items` (Codex M18 pre-flight P3-1).
|
|
26
|
+
for (const item of items) {
|
|
27
|
+
collected.push(item);
|
|
28
|
+
if (onItem !== undefined) {
|
|
29
|
+
await onItem(item);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
export const walkPages = async (inputs) => {
|
|
34
|
+
const { fetchPage, extractItems, pageSize, all, maxPages, onItem } = inputs;
|
|
35
|
+
const startPage = inputs.startPage ?? 1;
|
|
36
|
+
// First request always runs. Page count includes this attempt.
|
|
37
|
+
let lastResponse = await fetchPage(startPage);
|
|
38
|
+
const collected = [];
|
|
39
|
+
let pagesFetched = 1;
|
|
40
|
+
const firstPage = extractItems(lastResponse);
|
|
41
|
+
await emitPageItems(firstPage, collected, onItem);
|
|
42
|
+
// No-walk case: caller asked for one page only.
|
|
43
|
+
if (!all) {
|
|
44
|
+
return {
|
|
45
|
+
items: collected,
|
|
46
|
+
lastResponse,
|
|
47
|
+
hasMore: firstPage.length === pageSize,
|
|
48
|
+
pagesFetched,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
// Walk while pages are full and we're under the cap. Empty page or
|
|
52
|
+
// short page terminates the walk; cap hit on a full page surfaces
|
|
53
|
+
// hasMore=true so the caller can warn.
|
|
54
|
+
if (firstPage.length === 0 || firstPage.length < pageSize) {
|
|
55
|
+
return { items: collected, lastResponse, hasMore: false, pagesFetched };
|
|
56
|
+
}
|
|
57
|
+
let page = startPage + 1;
|
|
58
|
+
while (pagesFetched < maxPages) {
|
|
59
|
+
lastResponse = await fetchPage(page);
|
|
60
|
+
pagesFetched++;
|
|
61
|
+
const pageData = extractItems(lastResponse);
|
|
62
|
+
if (pageData.length === 0) {
|
|
63
|
+
return { items: collected, lastResponse, hasMore: false, pagesFetched };
|
|
64
|
+
}
|
|
65
|
+
await emitPageItems(pageData, collected, onItem);
|
|
66
|
+
if (pageData.length < pageSize) {
|
|
67
|
+
return { items: collected, lastResponse, hasMore: false, pagesFetched };
|
|
68
|
+
}
|
|
69
|
+
page++;
|
|
70
|
+
}
|
|
71
|
+
// Cap hit on a full page — more might exist.
|
|
72
|
+
return { items: collected, lastResponse, hasMore: true, pagesFetched };
|
|
73
|
+
};
|
|
74
|
+
export const buildCapWarning = (pagesWalked, flagName = '--limit-pages') => ({
|
|
75
|
+
code: 'pagination_cap_reached',
|
|
76
|
+
message: `--all stopped after ${String(pagesWalked)} pages; more results may exist`,
|
|
77
|
+
details: {
|
|
78
|
+
pages_walked: pagesWalked,
|
|
79
|
+
hint: `Increase ${flagName} or narrow the query (e.g. --workspace, --state).`,
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
/** Default cap shared by every M3 list command's `--all` walk. */
|
|
83
|
+
export const DEFAULT_MAX_PAGES = 50;
|
|
84
|
+
//# sourceMappingURL=walk-pages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walk-pages.js","sourceRoot":"","sources":["../../src/api/walk-pages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace projection schema + GraphQL field-fragment, lifted from
|
|
3
|
+
* the four M14 mutation verbs and `workspace get` (v0.2-plan §22
|
|
4
|
+
* R39).
|
|
5
|
+
*
|
|
6
|
+
* **R39 — `WORKSPACE_FIELDS_FRAGMENT`.** The shared GraphQL selection
|
|
7
|
+
* set every with-settings workspace verb uses appeared in five query
|
|
8
|
+
* strings: `workspace get` (M14), `workspace create` (M14), `workspace
|
|
9
|
+
* update`'s preflight read + mutation (M14), `workspace delete` (M14).
|
|
10
|
+
* Five consumers; well above the §17 R-timing trigger. Mirrors
|
|
11
|
+
* `ITEM_FIELDS_FRAGMENT` (M5b lift in `item-helpers.ts`) and
|
|
12
|
+
* `UPDATE_FIELDS_FRAGMENT` (R38 lift in `update-mutation-result.ts`).
|
|
13
|
+
* 6-space continuation indent matches the column every consumer
|
|
14
|
+
* interpolates `${WORKSPACE_FIELDS_FRAGMENT}` at, so rendered query
|
|
15
|
+
* bytes are unchanged post-lift.
|
|
16
|
+
*
|
|
17
|
+
* **R39 — `workspaceProjectionSchema`.** The matching strict zod
|
|
18
|
+
* projection schema. Pre-lift it lived at
|
|
19
|
+
* `src/commands/workspace/get.ts:50` as `workspaceGetOutputSchema`,
|
|
20
|
+
* and the four mutation verbs each imported it from there — the
|
|
21
|
+
* file colocation was incidental rather than intentional. Lifting
|
|
22
|
+
* the schema next to the fragment keeps the projection's two halves
|
|
23
|
+
* (wire-shape selector + parser) in one place.
|
|
24
|
+
*
|
|
25
|
+
* **`workspace list` stays distinct.** Its narrower output (no
|
|
26
|
+
* `settings.icon`) and parallel narrower GraphQL string serve a
|
|
27
|
+
* different surface; extending it to share this fragment would
|
|
28
|
+
* surface `settings.icon` on `workspace list`'s output as a
|
|
29
|
+
* SemVer-minor additive change. R39's minimal scope keeps list
|
|
30
|
+
* untouched.
|
|
31
|
+
*/
|
|
32
|
+
import { z } from 'zod';
|
|
33
|
+
/**
|
|
34
|
+
* Shared GraphQL selection set for the workspace shape — every M14
|
|
35
|
+
* mutation verb plus M14's `workspace get` (the with-settings path)
|
|
36
|
+
* select these fields. 6-space continuation indent matches the
|
|
37
|
+
* column every consumer interpolates `${WORKSPACE_FIELDS_FRAGMENT}`
|
|
38
|
+
* at, so rendered query bytes are unchanged post-lift.
|
|
39
|
+
*/
|
|
40
|
+
export declare const WORKSPACE_FIELDS_FRAGMENT = "id\n name\n description\n kind\n state\n is_default_workspace\n created_at\n settings {\n icon {\n color\n image\n }\n }";
|
|
41
|
+
/**
|
|
42
|
+
* Strict zod schema for the workspace projection — the exact shape
|
|
43
|
+
* `WORKSPACE_FIELDS_FRAGMENT` selects from the wire. Shared by
|
|
44
|
+
* `workspace get` / `create` / `update` / `delete`; each verb's
|
|
45
|
+
* `CommandModule.outputSchema` aliases this so the schema-export
|
|
46
|
+
* pipeline emits one canonical shape.
|
|
47
|
+
*/
|
|
48
|
+
export declare const workspaceProjectionSchema: z.ZodObject<{
|
|
49
|
+
id: z.ZodString;
|
|
50
|
+
name: z.ZodString;
|
|
51
|
+
description: z.ZodNullable<z.ZodString>;
|
|
52
|
+
kind: z.ZodNullable<z.ZodString>;
|
|
53
|
+
state: z.ZodNullable<z.ZodString>;
|
|
54
|
+
is_default_workspace: z.ZodNullable<z.ZodBoolean>;
|
|
55
|
+
created_at: z.ZodNullable<z.ZodString>;
|
|
56
|
+
settings: z.ZodNullable<z.ZodObject<{
|
|
57
|
+
icon: z.ZodNullable<z.ZodObject<{
|
|
58
|
+
color: z.ZodNullable<z.ZodString>;
|
|
59
|
+
image: z.ZodNullable<z.ZodString>;
|
|
60
|
+
}, z.core.$strict>>;
|
|
61
|
+
}, z.core.$strict>>;
|
|
62
|
+
}, z.core.$strict>;
|
|
63
|
+
export type WorkspaceProjection = z.infer<typeof workspaceProjectionSchema>;
|
|
64
|
+
//# sourceMappingURL=workspace-projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-projection.d.ts","sourceRoot":"","sources":["../../src/api/workspace-projection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,qMAY9B,CAAC;AAeT;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;kBAW3B,CAAC;AAEZ,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace projection schema + GraphQL field-fragment, lifted from
|
|
3
|
+
* the four M14 mutation verbs and `workspace get` (v0.2-plan §22
|
|
4
|
+
* R39).
|
|
5
|
+
*
|
|
6
|
+
* **R39 — `WORKSPACE_FIELDS_FRAGMENT`.** The shared GraphQL selection
|
|
7
|
+
* set every with-settings workspace verb uses appeared in five query
|
|
8
|
+
* strings: `workspace get` (M14), `workspace create` (M14), `workspace
|
|
9
|
+
* update`'s preflight read + mutation (M14), `workspace delete` (M14).
|
|
10
|
+
* Five consumers; well above the §17 R-timing trigger. Mirrors
|
|
11
|
+
* `ITEM_FIELDS_FRAGMENT` (M5b lift in `item-helpers.ts`) and
|
|
12
|
+
* `UPDATE_FIELDS_FRAGMENT` (R38 lift in `update-mutation-result.ts`).
|
|
13
|
+
* 6-space continuation indent matches the column every consumer
|
|
14
|
+
* interpolates `${WORKSPACE_FIELDS_FRAGMENT}` at, so rendered query
|
|
15
|
+
* bytes are unchanged post-lift.
|
|
16
|
+
*
|
|
17
|
+
* **R39 — `workspaceProjectionSchema`.** The matching strict zod
|
|
18
|
+
* projection schema. Pre-lift it lived at
|
|
19
|
+
* `src/commands/workspace/get.ts:50` as `workspaceGetOutputSchema`,
|
|
20
|
+
* and the four mutation verbs each imported it from there — the
|
|
21
|
+
* file colocation was incidental rather than intentional. Lifting
|
|
22
|
+
* the schema next to the fragment keeps the projection's two halves
|
|
23
|
+
* (wire-shape selector + parser) in one place.
|
|
24
|
+
*
|
|
25
|
+
* **`workspace list` stays distinct.** Its narrower output (no
|
|
26
|
+
* `settings.icon`) and parallel narrower GraphQL string serve a
|
|
27
|
+
* different surface; extending it to share this fragment would
|
|
28
|
+
* surface `settings.icon` on `workspace list`'s output as a
|
|
29
|
+
* SemVer-minor additive change. R39's minimal scope keeps list
|
|
30
|
+
* untouched.
|
|
31
|
+
*/
|
|
32
|
+
import { z } from 'zod';
|
|
33
|
+
/**
|
|
34
|
+
* Shared GraphQL selection set for the workspace shape — every M14
|
|
35
|
+
* mutation verb plus M14's `workspace get` (the with-settings path)
|
|
36
|
+
* select these fields. 6-space continuation indent matches the
|
|
37
|
+
* column every consumer interpolates `${WORKSPACE_FIELDS_FRAGMENT}`
|
|
38
|
+
* at, so rendered query bytes are unchanged post-lift.
|
|
39
|
+
*/
|
|
40
|
+
export const WORKSPACE_FIELDS_FRAGMENT = `id
|
|
41
|
+
name
|
|
42
|
+
description
|
|
43
|
+
kind
|
|
44
|
+
state
|
|
45
|
+
is_default_workspace
|
|
46
|
+
created_at
|
|
47
|
+
settings {
|
|
48
|
+
icon {
|
|
49
|
+
color
|
|
50
|
+
image
|
|
51
|
+
}
|
|
52
|
+
}`;
|
|
53
|
+
const iconSchema = z
|
|
54
|
+
.object({
|
|
55
|
+
color: z.string().nullable(),
|
|
56
|
+
image: z.string().nullable(),
|
|
57
|
+
})
|
|
58
|
+
.strict();
|
|
59
|
+
const settingsSchema = z
|
|
60
|
+
.object({
|
|
61
|
+
icon: iconSchema.nullable(),
|
|
62
|
+
})
|
|
63
|
+
.strict();
|
|
64
|
+
/**
|
|
65
|
+
* Strict zod schema for the workspace projection — the exact shape
|
|
66
|
+
* `WORKSPACE_FIELDS_FRAGMENT` selects from the wire. Shared by
|
|
67
|
+
* `workspace get` / `create` / `update` / `delete`; each verb's
|
|
68
|
+
* `CommandModule.outputSchema` aliases this so the schema-export
|
|
69
|
+
* pipeline emits one canonical shape.
|
|
70
|
+
*/
|
|
71
|
+
export const workspaceProjectionSchema = z
|
|
72
|
+
.object({
|
|
73
|
+
id: z.string().min(1),
|
|
74
|
+
name: z.string(),
|
|
75
|
+
description: z.string().nullable(),
|
|
76
|
+
kind: z.string().nullable(),
|
|
77
|
+
state: z.string().nullable(),
|
|
78
|
+
is_default_workspace: z.boolean().nullable(),
|
|
79
|
+
created_at: z.string().nullable(),
|
|
80
|
+
settings: settingsSchema.nullable(),
|
|
81
|
+
})
|
|
82
|
+
.strict();
|
|
83
|
+
//# sourceMappingURL=workspace-projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-projection.js","sourceRoot":"","sources":["../../src/api/workspace-projection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;QAYjC,CAAC;AAET,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,cAAc,GAAG,CAAC;KACrB,MAAM,CAAC;IACN,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE;CAC5B,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,oBAAoB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;CACpC,CAAC;KACD,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Envelope emission helpers (M2.5 R2).
|
|
3
|
+
*
|
|
4
|
+
* Pulled out of `cli/run.ts` so the runner stays focused on argv
|
|
5
|
+
* parsing, signal handling, and command registration.
|
|
6
|
+
*
|
|
7
|
+
* **Two paths, two channels, one source of truth.** The success and
|
|
8
|
+
* error envelopes report the same `api_version` and `source`, but
|
|
9
|
+
* they get there through different channels:
|
|
10
|
+
*
|
|
11
|
+
* - **Success path.** `emit.ts` builds the success envelope from
|
|
12
|
+
* options the action passed through `emitSuccess({apiVersion,
|
|
13
|
+
* source, complexity, cacheAgeSeconds, ...})` — usually via the
|
|
14
|
+
* `...toEmit(result)` splat returned by `resolveClient` (M2.5 R3).
|
|
15
|
+
* - **Error path.** `writeErrorEnvelope` (this file) builds the
|
|
16
|
+
* error envelope from `MetaBuilder.snapshot()` after the action
|
|
17
|
+
* has thrown. The action commits values via
|
|
18
|
+
* `ctx.meta.setApiVersion(v)` / `ctx.meta.setSource('live')`
|
|
19
|
+
* before the network call goes out, so a thrown `ApiError` on
|
|
20
|
+
* HTTP 401 still produces an envelope with the right meta.
|
|
21
|
+
*
|
|
22
|
+
* The two paths agree because `resolveClient` writes the *same*
|
|
23
|
+
* `apiVersion` / `source` into both: the `MetaBuilder` (for error
|
|
24
|
+
* fallback) and the `toEmit` closure (for success). An M3 command
|
|
25
|
+
* that calls `resolveClient` gets both for free; an M3 command that
|
|
26
|
+
* builds its own client must commit to both channels manually if it
|
|
27
|
+
* wants the same guarantee.
|
|
28
|
+
*
|
|
29
|
+
* **Why a builder, not a setter callback.** The M2-era `setMetaHint`
|
|
30
|
+
* pattern (commit `5e211bc`) worked but coupled the action body to a
|
|
31
|
+
* mutable `MetaHint` record on `ctx`; tracing "what `meta` will the
|
|
32
|
+
* error envelope carry" required grepping every `setMetaHint` call
|
|
33
|
+
* site for shape drift. The builder closes that loop:
|
|
34
|
+
*
|
|
35
|
+
* - typed setters (`setApiVersion`, `setSource`) enumerate exactly
|
|
36
|
+
* what the error path can carry — adding a new field means adding
|
|
37
|
+
* a new typed method + extending `MetaSnapshot`, not stuffing
|
|
38
|
+
* another optional key into a shared record;
|
|
39
|
+
* - the public surface is closed (no `set(key, value)` escape
|
|
40
|
+
* hatch), so the only way to widen what the error envelope can
|
|
41
|
+
* report is to extend this module deliberately;
|
|
42
|
+
* - the M2 Codex review §2 incident — `--api-version 2026-04
|
|
43
|
+
* account whoami` claiming `api_version: "2026-01"` on HTTP 401 —
|
|
44
|
+
* was structurally caused by the two paths reading different
|
|
45
|
+
* state. The builder is the error-side half of the fix; the
|
|
46
|
+
* `toEmit` closure (R3) is the success-side half.
|
|
47
|
+
*
|
|
48
|
+
* Action sites stay terse: `ctx.meta.setApiVersion(v)` /
|
|
49
|
+
* `ctx.meta.setSource('live')` is the same shape the M2 callback
|
|
50
|
+
* had, just typed per-field rather than via a record literal.
|
|
51
|
+
*/
|
|
52
|
+
import { type DataSource, type Meta } from '../utils/output/envelope.js';
|
|
53
|
+
import { MondayCliError } from '../utils/errors.js';
|
|
54
|
+
export interface MetaSnapshot {
|
|
55
|
+
readonly apiVersion: string | undefined;
|
|
56
|
+
readonly source: DataSource | undefined;
|
|
57
|
+
}
|
|
58
|
+
export interface MetaBuilder {
|
|
59
|
+
/**
|
|
60
|
+
* Commit the resolved `API-Version` value the request will carry
|
|
61
|
+
* (or did carry, if the call already went out). The same value
|
|
62
|
+
* lands on `meta.api_version` in both the success envelope (via
|
|
63
|
+
* emit.ts) and the error envelope (via `writeErrorEnvelope`) —
|
|
64
|
+
* an HTTP 401 for `monday --api-version 2026-04 account whoami`
|
|
65
|
+
* reports `meta.api_version: "2026-04"`, not the SDK pin.
|
|
66
|
+
*/
|
|
67
|
+
setApiVersion: (version: string) => void;
|
|
68
|
+
/**
|
|
69
|
+
* Commit the data-source the response came from — `live` for a
|
|
70
|
+
* fresh API call, `cache` for a hit, `mixed` for a partially-
|
|
71
|
+
* served response, `none` for local-only commands. Network
|
|
72
|
+
* commands set `live` before the wire goes out so an error
|
|
73
|
+
* envelope on the sad path still reports `source: live`.
|
|
74
|
+
*/
|
|
75
|
+
setSource: (source: DataSource) => void;
|
|
76
|
+
/** Frozen view of every value committed so far. */
|
|
77
|
+
snapshot: () => MetaSnapshot;
|
|
78
|
+
}
|
|
79
|
+
export declare const createMetaBuilder: () => MetaBuilder;
|
|
80
|
+
/**
|
|
81
|
+
* Collects literal secret values to scrub from emitted bytes. Read
|
|
82
|
+
* lazily — `loadConfig()` populates `MONDAY_API_TOKEN` from `.env`
|
|
83
|
+
* *after* the runner builds its context, so a snapshot at runner
|
|
84
|
+
* construction time would miss tokens that exist only in the `.env`
|
|
85
|
+
* file (Codex review §1 follow-up). `env` is shared by reference
|
|
86
|
+
* with the runner; re-reading at emit time observes any side-
|
|
87
|
+
* effecting load.
|
|
88
|
+
*/
|
|
89
|
+
export declare const collectSecrets: (env: NodeJS.ProcessEnv) => readonly string[];
|
|
90
|
+
export interface BuildBaseMetaInputs {
|
|
91
|
+
readonly snapshot: MetaSnapshot;
|
|
92
|
+
readonly env: NodeJS.ProcessEnv;
|
|
93
|
+
readonly cliVersion: string;
|
|
94
|
+
readonly requestId: string;
|
|
95
|
+
readonly retrievedAt: string;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Constructs `meta` for an envelope where no action-resolved
|
|
99
|
+
* complexity / cache-age is in scope (the error path; commands that
|
|
100
|
+
* never reached emit.ts). `api_version` falls back to
|
|
101
|
+
* `MONDAY_API_VERSION` env / SDK pin when the action didn't commit
|
|
102
|
+
* one through the builder.
|
|
103
|
+
*/
|
|
104
|
+
export declare const buildBaseMeta: (inputs: BuildBaseMetaInputs) => Meta;
|
|
105
|
+
export interface WriteErrorEnvelopeOptions {
|
|
106
|
+
readonly stderr: NodeJS.WritableStream;
|
|
107
|
+
readonly env: NodeJS.ProcessEnv;
|
|
108
|
+
readonly meta: Meta;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Renders the error envelope to `stderr` with two-layer redaction
|
|
112
|
+
* (key-based + value-scan over the live token). Re-reads `env` for
|
|
113
|
+
* the value-scan layer so a token loaded from `.env` mid-run is
|
|
114
|
+
* still scrubbed (security.md "Redaction in output").
|
|
115
|
+
*/
|
|
116
|
+
export declare const writeErrorEnvelope: (err: MondayCliError, options: WriteErrorEnvelopeOptions) => void;
|
|
117
|
+
/**
|
|
118
|
+
* Maps an arbitrary thrown value into the `MondayCliError` family the
|
|
119
|
+
* envelope path expects. `MondayCliError` instances pass through;
|
|
120
|
+
* commander parsing failures become `UsageError`; unknown thrown
|
|
121
|
+
* values become `InternalError` with the original cause attached.
|
|
122
|
+
*
|
|
123
|
+
* Lives here (not in `errors.ts`) because the conversion is part of
|
|
124
|
+
* the runner-→-envelope path: it's the precondition for
|
|
125
|
+
* `writeErrorEnvelope`.
|
|
126
|
+
*/
|
|
127
|
+
export declare const toMondayError: (err: unknown) => MondayCliError;
|
|
128
|
+
//# sourceMappingURL=envelope-out.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelope-out.d.ts","sourceRoot":"","sources":["../../src/cli/envelope-out.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AAGH,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,IAAI,EACV,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAEL,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;CACzC;AAED,MAAM,WAAW,WAAW;IAC1B;;;;;;;OAOG;IACH,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC;;;;;;OAMG;IACH,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,mDAAmD;IACnD,QAAQ,EAAE,MAAM,YAAY,CAAC;CAC9B;AAED,eAAO,MAAM,iBAAiB,QAAO,WAYpC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,MAAM,CAAC,UAAU,KACrB,SAAS,MAAM,EAOjB,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,mBAAmB,KAAG,IAWxD,CAAC;AAEL,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IACvC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,KAAK,cAAc,EACnB,SAAS,yBAAyB,KACjC,IAMF,CAAC;AAKF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,OAAO,KAAG,cAoB5C,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Envelope emission helpers (M2.5 R2).
|
|
3
|
+
*
|
|
4
|
+
* Pulled out of `cli/run.ts` so the runner stays focused on argv
|
|
5
|
+
* parsing, signal handling, and command registration.
|
|
6
|
+
*
|
|
7
|
+
* **Two paths, two channels, one source of truth.** The success and
|
|
8
|
+
* error envelopes report the same `api_version` and `source`, but
|
|
9
|
+
* they get there through different channels:
|
|
10
|
+
*
|
|
11
|
+
* - **Success path.** `emit.ts` builds the success envelope from
|
|
12
|
+
* options the action passed through `emitSuccess({apiVersion,
|
|
13
|
+
* source, complexity, cacheAgeSeconds, ...})` — usually via the
|
|
14
|
+
* `...toEmit(result)` splat returned by `resolveClient` (M2.5 R3).
|
|
15
|
+
* - **Error path.** `writeErrorEnvelope` (this file) builds the
|
|
16
|
+
* error envelope from `MetaBuilder.snapshot()` after the action
|
|
17
|
+
* has thrown. The action commits values via
|
|
18
|
+
* `ctx.meta.setApiVersion(v)` / `ctx.meta.setSource('live')`
|
|
19
|
+
* before the network call goes out, so a thrown `ApiError` on
|
|
20
|
+
* HTTP 401 still produces an envelope with the right meta.
|
|
21
|
+
*
|
|
22
|
+
* The two paths agree because `resolveClient` writes the *same*
|
|
23
|
+
* `apiVersion` / `source` into both: the `MetaBuilder` (for error
|
|
24
|
+
* fallback) and the `toEmit` closure (for success). An M3 command
|
|
25
|
+
* that calls `resolveClient` gets both for free; an M3 command that
|
|
26
|
+
* builds its own client must commit to both channels manually if it
|
|
27
|
+
* wants the same guarantee.
|
|
28
|
+
*
|
|
29
|
+
* **Why a builder, not a setter callback.** The M2-era `setMetaHint`
|
|
30
|
+
* pattern (commit `5e211bc`) worked but coupled the action body to a
|
|
31
|
+
* mutable `MetaHint` record on `ctx`; tracing "what `meta` will the
|
|
32
|
+
* error envelope carry" required grepping every `setMetaHint` call
|
|
33
|
+
* site for shape drift. The builder closes that loop:
|
|
34
|
+
*
|
|
35
|
+
* - typed setters (`setApiVersion`, `setSource`) enumerate exactly
|
|
36
|
+
* what the error path can carry — adding a new field means adding
|
|
37
|
+
* a new typed method + extending `MetaSnapshot`, not stuffing
|
|
38
|
+
* another optional key into a shared record;
|
|
39
|
+
* - the public surface is closed (no `set(key, value)` escape
|
|
40
|
+
* hatch), so the only way to widen what the error envelope can
|
|
41
|
+
* report is to extend this module deliberately;
|
|
42
|
+
* - the M2 Codex review §2 incident — `--api-version 2026-04
|
|
43
|
+
* account whoami` claiming `api_version: "2026-01"` on HTTP 401 —
|
|
44
|
+
* was structurally caused by the two paths reading different
|
|
45
|
+
* state. The builder is the error-side half of the fix; the
|
|
46
|
+
* `toEmit` closure (R3) is the success-side half.
|
|
47
|
+
*
|
|
48
|
+
* Action sites stay terse: `ctx.meta.setApiVersion(v)` /
|
|
49
|
+
* `ctx.meta.setSource('live')` is the same shape the M2 callback
|
|
50
|
+
* had, just typed per-field rather than via a record literal.
|
|
51
|
+
*/
|
|
52
|
+
import { CommanderError } from 'commander';
|
|
53
|
+
import { buildError, buildMeta, } from '../utils/output/envelope.js';
|
|
54
|
+
import { redact } from '../utils/redact.js';
|
|
55
|
+
import { InternalError, MondayCliError, UsageError, } from '../utils/errors.js';
|
|
56
|
+
export const createMetaBuilder = () => {
|
|
57
|
+
let apiVersion;
|
|
58
|
+
let source;
|
|
59
|
+
return {
|
|
60
|
+
setApiVersion: (v) => {
|
|
61
|
+
apiVersion = v;
|
|
62
|
+
},
|
|
63
|
+
setSource: (s) => {
|
|
64
|
+
source = s;
|
|
65
|
+
},
|
|
66
|
+
snapshot: () => ({ apiVersion, source }),
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Collects literal secret values to scrub from emitted bytes. Read
|
|
71
|
+
* lazily — `loadConfig()` populates `MONDAY_API_TOKEN` from `.env`
|
|
72
|
+
* *after* the runner builds its context, so a snapshot at runner
|
|
73
|
+
* construction time would miss tokens that exist only in the `.env`
|
|
74
|
+
* file (Codex review §1 follow-up). `env` is shared by reference
|
|
75
|
+
* with the runner; re-reading at emit time observes any side-
|
|
76
|
+
* effecting load.
|
|
77
|
+
*/
|
|
78
|
+
export const collectSecrets = (env) => {
|
|
79
|
+
const out = [];
|
|
80
|
+
const token = env.MONDAY_API_TOKEN;
|
|
81
|
+
if (token !== undefined && token.length > 0) {
|
|
82
|
+
out.push(token);
|
|
83
|
+
}
|
|
84
|
+
return out;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Constructs `meta` for an envelope where no action-resolved
|
|
88
|
+
* complexity / cache-age is in scope (the error path; commands that
|
|
89
|
+
* never reached emit.ts). `api_version` falls back to
|
|
90
|
+
* `MONDAY_API_VERSION` env / SDK pin when the action didn't commit
|
|
91
|
+
* one through the builder.
|
|
92
|
+
*/
|
|
93
|
+
export const buildBaseMeta = (inputs) => buildMeta({
|
|
94
|
+
api_version: inputs.snapshot.apiVersion ??
|
|
95
|
+
inputs.env.MONDAY_API_VERSION ??
|
|
96
|
+
'2026-01',
|
|
97
|
+
cli_version: inputs.cliVersion,
|
|
98
|
+
request_id: inputs.requestId,
|
|
99
|
+
source: inputs.snapshot.source ?? 'none',
|
|
100
|
+
retrieved_at: inputs.retrievedAt,
|
|
101
|
+
cache_age_seconds: null,
|
|
102
|
+
});
|
|
103
|
+
/**
|
|
104
|
+
* Renders the error envelope to `stderr` with two-layer redaction
|
|
105
|
+
* (key-based + value-scan over the live token). Re-reads `env` for
|
|
106
|
+
* the value-scan layer so a token loaded from `.env` mid-run is
|
|
107
|
+
* still scrubbed (security.md "Redaction in output").
|
|
108
|
+
*/
|
|
109
|
+
export const writeErrorEnvelope = (err, options) => {
|
|
110
|
+
const envelope = buildError(err, options.meta);
|
|
111
|
+
const redacted = redact(envelope, {
|
|
112
|
+
secrets: collectSecrets(options.env),
|
|
113
|
+
});
|
|
114
|
+
options.stderr.write(`${JSON.stringify(redacted, null, 2)}\n`);
|
|
115
|
+
};
|
|
116
|
+
const isCommanderError = (err) => err instanceof CommanderError;
|
|
117
|
+
/**
|
|
118
|
+
* Maps an arbitrary thrown value into the `MondayCliError` family the
|
|
119
|
+
* envelope path expects. `MondayCliError` instances pass through;
|
|
120
|
+
* commander parsing failures become `UsageError`; unknown thrown
|
|
121
|
+
* values become `InternalError` with the original cause attached.
|
|
122
|
+
*
|
|
123
|
+
* Lives here (not in `errors.ts`) because the conversion is part of
|
|
124
|
+
* the runner-→-envelope path: it's the precondition for
|
|
125
|
+
* `writeErrorEnvelope`.
|
|
126
|
+
*/
|
|
127
|
+
export const toMondayError = (err) => {
|
|
128
|
+
if (err instanceof MondayCliError) {
|
|
129
|
+
return err;
|
|
130
|
+
}
|
|
131
|
+
if (isCommanderError(err)) {
|
|
132
|
+
// Commander surfaces both --help/--version and parsing failures
|
|
133
|
+
// as CommanderError. The success-style ones carry exitCode 0;
|
|
134
|
+
// those aren't errors and we never reach this function with one.
|
|
135
|
+
if (err.code === 'commander.helpDisplayed' ||
|
|
136
|
+
err.code === 'commander.version') {
|
|
137
|
+
return new InternalError(`unexpected commander success: ${err.code}`);
|
|
138
|
+
}
|
|
139
|
+
return new UsageError(err.message);
|
|
140
|
+
}
|
|
141
|
+
if (err instanceof Error) {
|
|
142
|
+
return new InternalError(err.message, { cause: err });
|
|
143
|
+
}
|
|
144
|
+
return new InternalError('unknown error', { cause: err });
|
|
145
|
+
};
|
|
146
|
+
//# sourceMappingURL=envelope-out.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envelope-out.js","sourceRoot":"","sources":["../../src/cli/envelope-out.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|