monday-cli 0.3.0 → 0.4.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 +351 -0
- package/README.md +130 -36
- package/dist/api/assets.d.ts +326 -0
- package/dist/api/assets.d.ts.map +1 -0
- package/dist/api/assets.js +519 -0
- package/dist/api/assets.js.map +1 -0
- package/dist/api/column-types.d.ts +11 -7
- package/dist/api/column-types.d.ts.map +1 -1
- package/dist/api/column-types.js +5 -3
- package/dist/api/column-types.js.map +1 -1
- package/dist/api/column-values.d.ts +7 -1
- package/dist/api/column-values.d.ts.map +1 -1
- package/dist/api/column-values.js +15 -6
- package/dist/api/column-values.js.map +1 -1
- package/dist/api/documents.d.ts +519 -0
- package/dist/api/documents.d.ts.map +1 -0
- package/dist/api/documents.js +586 -0
- package/dist/api/documents.js.map +1 -0
- package/dist/api/item-watch.d.ts +263 -0
- package/dist/api/item-watch.d.ts.map +1 -0
- package/dist/api/item-watch.js +709 -0
- package/dist/api/item-watch.js.map +1 -0
- package/dist/api/multipart-transport.d.ts +223 -0
- package/dist/api/multipart-transport.d.ts.map +1 -0
- package/dist/api/multipart-transport.js +274 -0
- package/dist/api/multipart-transport.js.map +1 -0
- package/dist/api/parallel-dispatch.d.ts +155 -0
- package/dist/api/parallel-dispatch.d.ts.map +1 -0
- package/dist/api/parallel-dispatch.js +243 -0
- package/dist/api/parallel-dispatch.js.map +1 -0
- package/dist/api/partial-success-bulk.d.ts +118 -60
- package/dist/api/partial-success-bulk.d.ts.map +1 -1
- package/dist/api/partial-success-bulk.js +137 -79
- package/dist/api/partial-success-bulk.js.map +1 -1
- package/dist/api/partial-success-mutation.d.ts +13 -1
- package/dist/api/partial-success-mutation.d.ts.map +1 -1
- package/dist/api/partial-success-mutation.js +5 -1
- package/dist/api/partial-success-mutation.js.map +1 -1
- package/dist/api/raw-write.d.ts +12 -4
- package/dist/api/raw-write.d.ts.map +1 -1
- package/dist/api/raw-write.js +21 -11
- package/dist/api/raw-write.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 +9 -1
- package/dist/api/resolve-client.js.map +1 -1
- package/dist/cli/run.d.ts +20 -0
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +1 -0
- package/dist/cli/run.js.map +1 -1
- package/dist/commands/board/column-create.d.ts +6 -5
- package/dist/commands/board/column-create.d.ts.map +1 -1
- package/dist/commands/board/column-create.js +9 -6
- package/dist/commands/board/column-create.js.map +1 -1
- package/dist/commands/completion.d.ts +188 -0
- package/dist/commands/completion.d.ts.map +1 -0
- package/dist/commands/completion.js +418 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/doc/get.d.ts +46 -0
- package/dist/commands/doc/get.d.ts.map +1 -0
- package/dist/commands/doc/get.js +95 -0
- package/dist/commands/doc/get.js.map +1 -0
- package/dist/commands/doc/list.d.ts +83 -0
- package/dist/commands/doc/list.d.ts.map +1 -0
- package/dist/commands/doc/list.js +248 -0
- package/dist/commands/doc/list.js.map +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +46 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/item/create.js +2 -2
- 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 +61 -0
- package/dist/commands/item/update.js.map +1 -1
- package/dist/commands/item/upload.d.ts +108 -0
- package/dist/commands/item/upload.d.ts.map +1 -0
- package/dist/commands/item/upload.js +370 -0
- package/dist/commands/item/upload.js.map +1 -0
- package/dist/commands/item/watch.d.ts +90 -0
- package/dist/commands/item/watch.d.ts.map +1 -0
- package/dist/commands/item/watch.js +342 -0
- package/dist/commands/item/watch.js.map +1 -0
- package/dist/commands/update/upload.d.ts +69 -0
- package/dist/commands/update/upload.d.ts.map +1 -0
- package/dist/commands/update/upload.js +235 -0
- package/dist/commands/update/upload.js.map +1 -0
- package/dist/types/ids.d.ts +2 -0
- package/dist/types/ids.d.ts.map +1 -1
- package/dist/types/ids.js +9 -2
- package/dist/types/ids.js.map +1 -1
- package/dist/utils/mime.d.ts +24 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +64 -0
- package/dist/utils/mime.js.map +1 -0
- package/dist/utils/output/envelope.d.ts +30 -0
- package/dist/utils/output/envelope.d.ts.map +1 -1
- package/dist/utils/output/envelope.js +26 -0
- package/dist/utils/output/envelope.js.map +1 -1
- package/dist/utils/output/ndjson.d.ts +25 -0
- package/dist/utils/output/ndjson.d.ts.map +1 -1
- package/dist/utils/output/ndjson.js +12 -0
- package/dist/utils/output/ndjson.js.map +1 -1
- package/dist/utils/signal.d.ts +42 -0
- package/dist/utils/signal.d.ts.map +1 -0
- package/dist/utils/signal.js +45 -0
- package/dist/utils/signal.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asset upload surface for the v0.4-M31 `monday item upload` +
|
|
3
|
+
* `monday update upload` verbs (`cli-design.md` §2.2 + §4.3 + §6.4
|
|
4
|
+
* + §13 v0.4 entry; `v0.4-plan.md` §3 M31).
|
|
5
|
+
*
|
|
6
|
+
* **Wire surface (empirical probe 2026-05-13, API `2026-01`).** Two
|
|
7
|
+
* Monday GraphQL multipart mutations land here:
|
|
8
|
+
*
|
|
9
|
+
* - `Mutation.add_file_to_column(column_id: String!, file: File!,
|
|
10
|
+
* item_id: ID!) → Asset` — attaches a file to a `file`-typed
|
|
11
|
+
* column on a specific item. Note **`column_id` is `String!`
|
|
12
|
+
* not `ID!`** (the SDK's column-id surface is consistently
|
|
13
|
+
* `String!` because column IDs are user-defined-looking tokens
|
|
14
|
+
* like `'files'` / `'attachments_3'` rather than numeric).
|
|
15
|
+
* - `Mutation.add_file_to_update(file: File!, update_id: ID!) →
|
|
16
|
+
* Asset` — attaches a file to an Update (comment) record. Item
|
|
17
|
+
* ID is implicit (the update's parent item).
|
|
18
|
+
*
|
|
19
|
+
* Both mutations cross the wire via `multipart/form-data` per the
|
|
20
|
+
* standard GraphQL multipart-request specification (jaydenseric).
|
|
21
|
+
* The `File` scalar is Monday's own (NOT the spec-standard `Upload`);
|
|
22
|
+
* the multipart envelope is otherwise spec-compliant — `operations`
|
|
23
|
+
* + `map` JSON parts + the file part keyed by index `0`.
|
|
24
|
+
*
|
|
25
|
+
* **Asset object — 10 fields.** `id` (ID, non-null), `name` (String,
|
|
26
|
+
* non-null — the multipart `filename` parameter), `url` (String,
|
|
27
|
+
* non-null — direct download), `public_url` (String, non-null —
|
|
28
|
+
* sharable), `file_extension` (String, non-null), `file_size` (Int,
|
|
29
|
+
* non-null — bytes), `created_at` (Date, nullable), `uploaded_by`
|
|
30
|
+
* (User, non-null — the token's owner; projected to the slim
|
|
31
|
+
* `{id, name}` shape for envelope compactness), `original_geometry`
|
|
32
|
+
* (String, nullable — image dimensions like `'1920x1080'`),
|
|
33
|
+
* `url_thumbnail` (String, nullable — image thumbnails only).
|
|
34
|
+
*
|
|
35
|
+
* **R-NEW-41 3rd consumer fires here.** Asset upload is the third
|
|
36
|
+
* site (after M27 `Webhook.config` JSON/String asymmetry + M27
|
|
37
|
+
* `NotificationTargetType` collapse) where the wire-vs-CLI semantics
|
|
38
|
+
* carry a documented asymmetry. This module's transport choice
|
|
39
|
+
* (sibling multipart module, NOT extension of `transport.ts`) is
|
|
40
|
+
* itself the load-bearing asymmetry shape — the JSON envelope's
|
|
41
|
+
* `body: JSON.stringify(...)` invariant doesn't compose with
|
|
42
|
+
* multipart/form-data's `FormData`-driven boundary parameter, so
|
|
43
|
+
* the two transports live in sibling modules with parallel
|
|
44
|
+
* interfaces. See `docs/architecture.md` "Wire-vs-CLI semantics
|
|
45
|
+
* documentation conventions" for the canonical writeup.
|
|
46
|
+
*
|
|
47
|
+
* **No new ERROR_CODES (29 stays).** Asset-upload failures route
|
|
48
|
+
* through the existing codes:
|
|
49
|
+
*
|
|
50
|
+
* - `usage_error` — file path doesn't exist / not readable
|
|
51
|
+
* (`details.reason: 'file_not_readable'`); file is empty
|
|
52
|
+
* (`details.reason: 'file_empty'`); upload exceeded Monday's
|
|
53
|
+
* per-file size limit (Monday surfaces this server-side;
|
|
54
|
+
* `details.reason: 'file_too_large'` rewrap).
|
|
55
|
+
* - `unsupported_column_type` — `--column <col>` resolves to a
|
|
56
|
+
* non-`file` column type. Hint points back at the §5.3 writer
|
|
57
|
+
* surface (Monday writes files via `add_file_to_column` for
|
|
58
|
+
* `file` columns only; other column types route via
|
|
59
|
+
* `change_column_value`).
|
|
60
|
+
* - `not_found` — item / update / column doesn't exist or isn't
|
|
61
|
+
* visible to the token.
|
|
62
|
+
* - `validation_failed` — Monday-side rejection of the upload
|
|
63
|
+
* payload (malformed filename, server-side virus scan flag,
|
|
64
|
+
* etc.).
|
|
65
|
+
* - `forbidden` / `unauthorized` — token lacks asset-write scope.
|
|
66
|
+
*
|
|
67
|
+
* Monday's per-file size cap is plan-tier-dependent and NOT exposed
|
|
68
|
+
* via the schema (verified at M31 pre-flight probe — `Plan` +
|
|
69
|
+
* `Account` carry no file-quota fields). The CLI does NOT pre-check
|
|
70
|
+
* file size against a hardcoded ceiling; Monday's runtime rejection
|
|
71
|
+
* (typically `FILE_SIZE_LIMIT_EXCEEDED` or a generic 413) is rewrapped
|
|
72
|
+
* as `usage_error` with `details.reason: 'file_too_large'` +
|
|
73
|
+
* `details.file_size_bytes` (the local `fs.stat()` measurement
|
|
74
|
+
* captured at upload time — Monday's wire rejection may not surface
|
|
75
|
+
* a size field, but the CLI already has the local size from the
|
|
76
|
+
* read leg and threads it for a stable agent-keyed envelope).
|
|
77
|
+
*
|
|
78
|
+
* **Idempotency: NO.** Each successful upload mints a new Asset
|
|
79
|
+
* with a new ID — re-running `item upload` with the same args
|
|
80
|
+
* uploads the file a second time. Agents needing register-once
|
|
81
|
+
* semantics dedupe on the CLI side (e.g., read `Item.assets` first
|
|
82
|
+
* and skip the upload if a matching `Asset.name` exists).
|
|
83
|
+
*
|
|
84
|
+
* **Status: runtime body shipped at v0.4-M31 IMPL.** Both fetchers
|
|
85
|
+
* dispatch via `inputs.multipart.request(...)` wrapped in
|
|
86
|
+
* `withRetry(...)` per cli-design §2.5; the response-parse boundary
|
|
87
|
+
* uses `mapResponse` (mirroring `MondayClient.raw`'s discipline) +
|
|
88
|
+
* `assertResponseFieldPresent` for the schema-drift / null-payload
|
|
89
|
+
* distinction + `assetSchema.safeParse(...)` via `unwrapOrThrow`
|
|
90
|
+
* for the per-field shape. Server-side size-cap rewrap fires at
|
|
91
|
+
* the error-mapping layer below.
|
|
92
|
+
*/
|
|
93
|
+
import { z } from 'zod';
|
|
94
|
+
import type { MondayClient } from './client.js';
|
|
95
|
+
import type { MultipartTransport } from './multipart-transport.js';
|
|
96
|
+
import type { Complexity } from '../utils/output/envelope.js';
|
|
97
|
+
/**
|
|
98
|
+
* Slim projection of Monday's `User` for the `Asset.uploaded_by`
|
|
99
|
+
* slot. Monday's full User type is ~30 fields; the envelope echoes
|
|
100
|
+
* only `id` + `name` (matching the M19 `User`-projection cadence
|
|
101
|
+
* elsewhere in the CLI — `account_tags`, `board describe`'s
|
|
102
|
+
* subscribers, etc.). Future verbs that need wider User detail
|
|
103
|
+
* (`user get <uid>`) read against the full type.
|
|
104
|
+
*/
|
|
105
|
+
export declare const uploadedBySchema: z.ZodObject<{
|
|
106
|
+
id: z.ZodString;
|
|
107
|
+
name: z.ZodString;
|
|
108
|
+
}, z.core.$strict>;
|
|
109
|
+
export type UploadedBy = z.infer<typeof uploadedBySchema>;
|
|
110
|
+
/**
|
|
111
|
+
* Asset read-projection shape — surfaces Monday's full 10-field
|
|
112
|
+
* `Asset` object (per `scripts/probe/m31-asset-upload.ts` 2026-05-13,
|
|
113
|
+
* API `2026-01`). The output envelope echoes this verbatim so an
|
|
114
|
+
* agent reading the upload result has every field a follow-up
|
|
115
|
+
* `Query.assets(ids:)` read would surface, plus the inputs the CLI
|
|
116
|
+
* sent (echoed by the caller, not this module).
|
|
117
|
+
*
|
|
118
|
+
* `original_geometry` + `url_thumbnail` are image-only; nullable
|
|
119
|
+
* for non-image uploads. `created_at` is nullable in Monday's
|
|
120
|
+
* schema even though every successful upload sets it (the
|
|
121
|
+
* nullability is preserved for fidelity against the introspected
|
|
122
|
+
* type).
|
|
123
|
+
*/
|
|
124
|
+
export declare const assetSchema: z.ZodObject<{
|
|
125
|
+
id: z.ZodString;
|
|
126
|
+
name: z.ZodString;
|
|
127
|
+
url: z.ZodString;
|
|
128
|
+
public_url: z.ZodString;
|
|
129
|
+
file_extension: z.ZodString;
|
|
130
|
+
file_size: z.ZodNumber;
|
|
131
|
+
created_at: z.ZodNullable<z.ZodString>;
|
|
132
|
+
uploaded_by: z.ZodObject<{
|
|
133
|
+
id: z.ZodString;
|
|
134
|
+
name: z.ZodString;
|
|
135
|
+
}, z.core.$strict>;
|
|
136
|
+
original_geometry: z.ZodNullable<z.ZodString>;
|
|
137
|
+
url_thumbnail: z.ZodNullable<z.ZodString>;
|
|
138
|
+
}, z.core.$strict>;
|
|
139
|
+
export type Asset = z.infer<typeof assetSchema>;
|
|
140
|
+
/**
|
|
141
|
+
* Output shape for `monday item upload <iid> --column <col> <file>`.
|
|
142
|
+
* Echoes the wire `Asset` record plus the agent-supplied inputs
|
|
143
|
+
* (`item_id`, `column_id`, `filename`, `file_size_bytes`) so one
|
|
144
|
+
* envelope read carries the full upload context.
|
|
145
|
+
*
|
|
146
|
+
* `file_size_bytes` is the CLI-measured size at upload time (from
|
|
147
|
+
* the local file's `fs.stat()`); `asset.file_size` is Monday's
|
|
148
|
+
* server-stored size (usually identical to `file_size_bytes` but
|
|
149
|
+
* preserved separately for asymmetric-storage-encoding fidelity).
|
|
150
|
+
*
|
|
151
|
+
* `asset` is the canonical wire record; future field additions
|
|
152
|
+
* land additively per the §6.1 envelope evolution rules.
|
|
153
|
+
*/
|
|
154
|
+
export declare const itemUploadOutputSchema: z.ZodObject<{
|
|
155
|
+
operation: z.ZodLiteral<"add_file_to_column">;
|
|
156
|
+
item_id: z.ZodString;
|
|
157
|
+
column_id: z.ZodString;
|
|
158
|
+
filename: z.ZodString;
|
|
159
|
+
file_size_bytes: z.ZodNumber;
|
|
160
|
+
asset: z.ZodObject<{
|
|
161
|
+
id: z.ZodString;
|
|
162
|
+
name: z.ZodString;
|
|
163
|
+
url: z.ZodString;
|
|
164
|
+
public_url: z.ZodString;
|
|
165
|
+
file_extension: z.ZodString;
|
|
166
|
+
file_size: z.ZodNumber;
|
|
167
|
+
created_at: z.ZodNullable<z.ZodString>;
|
|
168
|
+
uploaded_by: z.ZodObject<{
|
|
169
|
+
id: z.ZodString;
|
|
170
|
+
name: z.ZodString;
|
|
171
|
+
}, z.core.$strict>;
|
|
172
|
+
original_geometry: z.ZodNullable<z.ZodString>;
|
|
173
|
+
url_thumbnail: z.ZodNullable<z.ZodString>;
|
|
174
|
+
}, z.core.$strict>;
|
|
175
|
+
}, z.core.$strict>;
|
|
176
|
+
export type ItemUploadOutput = z.infer<typeof itemUploadOutputSchema>;
|
|
177
|
+
/**
|
|
178
|
+
* Output shape for `monday update upload <uid> <file>`. Same general
|
|
179
|
+
* shape as `itemUploadOutputSchema` but carries `update_id` instead
|
|
180
|
+
* of `item_id` + `column_id` (an Update record is the target;
|
|
181
|
+
* Monday's `Update.assets` collection grows by one on success).
|
|
182
|
+
*/
|
|
183
|
+
export declare const updateUploadOutputSchema: z.ZodObject<{
|
|
184
|
+
operation: z.ZodLiteral<"add_file_to_update">;
|
|
185
|
+
update_id: z.ZodString;
|
|
186
|
+
filename: z.ZodString;
|
|
187
|
+
file_size_bytes: z.ZodNumber;
|
|
188
|
+
asset: z.ZodObject<{
|
|
189
|
+
id: z.ZodString;
|
|
190
|
+
name: z.ZodString;
|
|
191
|
+
url: z.ZodString;
|
|
192
|
+
public_url: z.ZodString;
|
|
193
|
+
file_extension: z.ZodString;
|
|
194
|
+
file_size: z.ZodNumber;
|
|
195
|
+
created_at: z.ZodNullable<z.ZodString>;
|
|
196
|
+
uploaded_by: z.ZodObject<{
|
|
197
|
+
id: z.ZodString;
|
|
198
|
+
name: z.ZodString;
|
|
199
|
+
}, z.core.$strict>;
|
|
200
|
+
original_geometry: z.ZodNullable<z.ZodString>;
|
|
201
|
+
url_thumbnail: z.ZodNullable<z.ZodString>;
|
|
202
|
+
}, z.core.$strict>;
|
|
203
|
+
}, z.core.$strict>;
|
|
204
|
+
export type UpdateUploadOutput = z.infer<typeof updateUploadOutputSchema>;
|
|
205
|
+
/**
|
|
206
|
+
* Mutation document for `add_file_to_column`. Operation name is
|
|
207
|
+
* pinned literally to `AddFileToColumn` and matches the wire
|
|
208
|
+
* `operationName` payload (R-NEW-37 W2 audit-point — caller-
|
|
209
|
+
* overridable operationName slots were closed at M27 IMPL round-1
|
|
210
|
+
* P2-1).
|
|
211
|
+
*
|
|
212
|
+
* `$file: File!` — Monday's own scalar (NOT the spec-standard
|
|
213
|
+
* `Upload!`); the multipart wire dispatcher (`assets.ts`'s caller
|
|
214
|
+
* via `MultipartTransport`) populates this slot via the spec-
|
|
215
|
+
* compliant `map` JSON pointing the file part at `variables.file`.
|
|
216
|
+
*
|
|
217
|
+
* Returns the full 10-field `Asset` selection so the output
|
|
218
|
+
* envelope captures Monday's complete view of the upload in one
|
|
219
|
+
* round-trip (no follow-up `Query.assets(ids:)` re-read needed).
|
|
220
|
+
*/
|
|
221
|
+
export declare const ADD_FILE_TO_COLUMN_MUTATION = "\n mutation AddFileToColumn(\n $itemId: ID!,\n $columnId: String!,\n $file: File!\n ) {\n add_file_to_column(\n item_id: $itemId,\n column_id: $columnId,\n file: $file\n ) {\n id\n name\n url\n public_url\n file_extension\n file_size\n created_at\n uploaded_by { id name }\n original_geometry\n url_thumbnail\n }\n }\n";
|
|
222
|
+
/**
|
|
223
|
+
* Mutation document for `add_file_to_update`. Operation name pinned
|
|
224
|
+
* to `AddFileToUpdate` (R-NEW-37 W2). No `column_id` — Updates
|
|
225
|
+
* carry attachments directly via `Update.assets`.
|
|
226
|
+
*/
|
|
227
|
+
export declare const ADD_FILE_TO_UPDATE_MUTATION = "\n mutation AddFileToUpdate(\n $updateId: ID!,\n $file: File!\n ) {\n add_file_to_update(\n update_id: $updateId,\n file: $file\n ) {\n id\n name\n url\n public_url\n file_extension\n file_size\n created_at\n uploaded_by { id name }\n original_geometry\n url_thumbnail\n }\n }\n";
|
|
228
|
+
export interface AddFileToColumnInputs {
|
|
229
|
+
readonly client: MondayClient;
|
|
230
|
+
readonly multipart: MultipartTransport;
|
|
231
|
+
readonly itemId: string;
|
|
232
|
+
readonly columnId: string;
|
|
233
|
+
readonly file: Blob;
|
|
234
|
+
readonly filename: string;
|
|
235
|
+
/**
|
|
236
|
+
* **Required** AbortSignal threaded into the multipart wire
|
|
237
|
+
* dispatch via `MultipartTransportRequest.signal` at IMPL.
|
|
238
|
+
* Callers MUST pass the runner's combined signal (`ctx.signal`)
|
|
239
|
+
* explicitly — `MondayClient.signal` is private + multipart
|
|
240
|
+
* dispatch bypasses `MondayClient.raw`, so no implicit fallback
|
|
241
|
+
* exists. Abort propagation follows the standard
|
|
242
|
+
* `--timeout` / SIGINT plumbing (`src/api/transport.ts`'s
|
|
243
|
+
* `combineSignals` mirrors the multipart-transport's own
|
|
244
|
+
* combined-signal logic at IMPL).
|
|
245
|
+
*
|
|
246
|
+
* **Retry semantics pinned (cli-design §2.5).** Asset upload
|
|
247
|
+
* honors the global `--retry <n>` contract: the IMPL session
|
|
248
|
+
* wraps `multipart.request(...)` in `withRetry(...)` using the
|
|
249
|
+
* `retries` value threaded from `client.config`'s retry slot.
|
|
250
|
+
* Re-readability is safe — Web `Blob.stream()` returns a fresh
|
|
251
|
+
* `ReadableStream` per call, so multipart payload assembly can
|
|
252
|
+
* re-execute on each retry attempt without buffering.
|
|
253
|
+
* Retryable conditions match the JSON transport's set
|
|
254
|
+
* (`rate_limited` / `complexity_exceeded` /
|
|
255
|
+
* `concurrency_exceeded` / `ip_rate_limited` /
|
|
256
|
+
* `resource_locked` / `network_error`); non-retryable
|
|
257
|
+
* conditions (`forbidden`, `not_found`, `validation_failed`,
|
|
258
|
+
* `usage_error` with `file_too_large`) surface immediately.
|
|
259
|
+
*/
|
|
260
|
+
readonly signal: AbortSignal;
|
|
261
|
+
/**
|
|
262
|
+
* Maximum retry count for transient failures (default
|
|
263
|
+
* `--retry 3`, range `[0, ...]`). Threaded through to
|
|
264
|
+
* `withRetry(...)` at IMPL — same retry layer the JSON
|
|
265
|
+
* transport uses (cli-design §2.5).
|
|
266
|
+
*/
|
|
267
|
+
readonly retries: number;
|
|
268
|
+
}
|
|
269
|
+
export interface AddFileToColumnResult {
|
|
270
|
+
readonly asset: Asset;
|
|
271
|
+
readonly source: 'live';
|
|
272
|
+
readonly cacheAgeSeconds: null;
|
|
273
|
+
readonly complexity: Complexity | null;
|
|
274
|
+
}
|
|
275
|
+
export interface AddFileToUpdateInputs {
|
|
276
|
+
readonly client: MondayClient;
|
|
277
|
+
readonly multipart: MultipartTransport;
|
|
278
|
+
readonly updateId: string;
|
|
279
|
+
readonly file: Blob;
|
|
280
|
+
readonly filename: string;
|
|
281
|
+
/**
|
|
282
|
+
* **Required** — same semantics as
|
|
283
|
+
* {@link AddFileToColumnInputs.signal}. Callers MUST pass
|
|
284
|
+
* `ctx.signal` explicitly (no implicit fallback from
|
|
285
|
+
* `client`).
|
|
286
|
+
*/
|
|
287
|
+
readonly signal: AbortSignal;
|
|
288
|
+
/**
|
|
289
|
+
* Same semantics as {@link AddFileToColumnInputs.retries} —
|
|
290
|
+
* threaded into `withRetry(...)` around the multipart
|
|
291
|
+
* dispatch at IMPL.
|
|
292
|
+
*/
|
|
293
|
+
readonly retries: number;
|
|
294
|
+
}
|
|
295
|
+
export interface AddFileToUpdateResult {
|
|
296
|
+
readonly asset: Asset;
|
|
297
|
+
readonly source: 'live';
|
|
298
|
+
readonly cacheAgeSeconds: null;
|
|
299
|
+
readonly complexity: Complexity | null;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Fires Monday's `add_file_to_column` mutation via the multipart
|
|
303
|
+
* transport (operationName `AddFileToColumn`, pinned literally per
|
|
304
|
+
* R-NEW-37 W2 — NOT caller-overridable). Builds the operations
|
|
305
|
+
* payload with the `file: null` placeholder per the GraphQL
|
|
306
|
+
* multipart-request spec, dispatches through `inputs.multipart` +
|
|
307
|
+
* `withRetry(...)`, parses the response — null `add_file_to_column`
|
|
308
|
+
* → `not_found` with `details.{item_id, column_id}`; non-Asset
|
|
309
|
+
* shape → `internal_error` via `assetSchema.safeParse + unwrapOr
|
|
310
|
+
* Throw`. Server-side size rejections rewrap as `usage_error` with
|
|
311
|
+
* `details.reason: 'file_too_large'` + `details.file_size_bytes`
|
|
312
|
+
* from the caller-supplied local `fs.stat()` measurement (D3).
|
|
313
|
+
*
|
|
314
|
+
* Not idempotent — re-running mints a new `Asset` ID.
|
|
315
|
+
*/
|
|
316
|
+
export declare const addFileToColumn: (inputs: AddFileToColumnInputs) => Promise<AddFileToColumnResult>;
|
|
317
|
+
/**
|
|
318
|
+
* Fires Monday's `add_file_to_update` mutation via the multipart
|
|
319
|
+
* transport (operationName `AddFileToUpdate`, pinned literally per
|
|
320
|
+
* R-NEW-37 W2). Mirrors {@link addFileToColumn}'s shape minus the
|
|
321
|
+
* `column_id` slot — Updates carry attachments via `Update.assets`
|
|
322
|
+
* directly. Same response-parse boundary, same `file_too_large`
|
|
323
|
+
* rewrap, same idempotency caveat (re-running mints a new Asset).
|
|
324
|
+
*/
|
|
325
|
+
export declare const addFileToUpdate: (inputs: AddFileToUpdateInputs) => Promise<AddFileToUpdateResult>;
|
|
326
|
+
//# sourceMappingURL=assets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/api/assets.ts"],"names":[],"mappings":"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"}
|