monday-cli 0.4.0 → 0.5.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 +368 -0
- package/README.md +112 -34
- package/dist/api/column-types.d.ts +3 -1
- package/dist/api/column-types.d.ts.map +1 -1
- package/dist/api/column-types.js +3 -1
- package/dist/api/column-types.js.map +1 -1
- package/dist/api/column-values.d.ts +5 -4
- package/dist/api/column-values.d.ts.map +1 -1
- package/dist/api/column-values.js +6 -5
- package/dist/api/column-values.js.map +1 -1
- package/dist/api/documents.d.ts +1136 -3
- package/dist/api/documents.d.ts.map +1 -1
- package/dist/api/documents.js +1828 -3
- package/dist/api/documents.js.map +1 -1
- package/dist/api/raw-write.d.ts +6 -5
- package/dist/api/raw-write.d.ts.map +1 -1
- package/dist/api/raw-write.js +7 -6
- package/dist/api/raw-write.js.map +1 -1
- package/dist/api/teams.d.ts +657 -0
- package/dist/api/teams.d.ts.map +1 -0
- package/dist/api/teams.js +880 -0
- package/dist/api/teams.js.map +1 -0
- package/dist/commands/doc/append-markdown.d.ts +117 -0
- package/dist/commands/doc/append-markdown.d.ts.map +1 -0
- package/dist/commands/doc/append-markdown.js +253 -0
- package/dist/commands/doc/append-markdown.js.map +1 -0
- package/dist/commands/doc/block-create.d.ts +114 -0
- package/dist/commands/doc/block-create.d.ts.map +1 -0
- package/dist/commands/doc/block-create.js +206 -0
- package/dist/commands/doc/block-create.js.map +1 -0
- package/dist/commands/doc/block-delete.d.ts +72 -0
- package/dist/commands/doc/block-delete.d.ts.map +1 -0
- package/dist/commands/doc/block-delete.js +161 -0
- package/dist/commands/doc/block-delete.js.map +1 -0
- package/dist/commands/doc/block-update.d.ts +75 -0
- package/dist/commands/doc/block-update.d.ts.map +1 -0
- package/dist/commands/doc/block-update.js +162 -0
- package/dist/commands/doc/block-update.js.map +1 -0
- package/dist/commands/doc/create-in-workspace.d.ts +76 -0
- package/dist/commands/doc/create-in-workspace.d.ts.map +1 -0
- package/dist/commands/doc/create-in-workspace.js +164 -0
- package/dist/commands/doc/create-in-workspace.js.map +1 -0
- package/dist/commands/doc/create-on-column.d.ts +71 -0
- package/dist/commands/doc/create-on-column.d.ts.map +1 -0
- package/dist/commands/doc/create-on-column.js +146 -0
- package/dist/commands/doc/create-on-column.js.map +1 -0
- package/dist/commands/doc/delete.d.ts +68 -0
- package/dist/commands/doc/delete.d.ts.map +1 -0
- package/dist/commands/doc/delete.js +146 -0
- package/dist/commands/doc/delete.js.map +1 -0
- package/dist/commands/doc/duplicate.d.ts +101 -0
- package/dist/commands/doc/duplicate.d.ts.map +1 -0
- package/dist/commands/doc/duplicate.js +191 -0
- package/dist/commands/doc/duplicate.js.map +1 -0
- package/dist/commands/doc/import-html.d.ts +125 -0
- package/dist/commands/doc/import-html.d.ts.map +1 -0
- package/dist/commands/doc/import-html.js +273 -0
- package/dist/commands/doc/import-html.js.map +1 -0
- package/dist/commands/doc/list.d.ts +6 -3
- package/dist/commands/doc/list.d.ts.map +1 -1
- package/dist/commands/doc/list.js +17 -48
- package/dist/commands/doc/list.js.map +1 -1
- package/dist/commands/doc/rename.d.ts +60 -0
- package/dist/commands/doc/rename.d.ts.map +1 -0
- package/dist/commands/doc/rename.js +135 -0
- package/dist/commands/doc/rename.js.map +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +116 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/item/create.js +2 -2
- package/dist/commands/update/create.d.ts.map +1 -1
- package/dist/commands/update/create.js +6 -4
- package/dist/commands/update/create.js.map +1 -1
- package/dist/commands/update/edit.d.ts +4 -2
- package/dist/commands/update/edit.d.ts.map +1 -1
- package/dist/commands/update/edit.js +10 -6
- package/dist/commands/update/edit.js.map +1 -1
- package/dist/commands/update/reply.d.ts +4 -2
- package/dist/commands/update/reply.d.ts.map +1 -1
- package/dist/commands/update/reply.js +10 -6
- package/dist/commands/update/reply.js.map +1 -1
- package/dist/commands/user/_team-membership.d.ts +10 -0
- package/dist/commands/user/_team-membership.d.ts.map +1 -0
- package/dist/commands/user/_team-membership.js +88 -0
- package/dist/commands/user/_team-membership.js.map +1 -0
- package/dist/commands/user/team-add-members.d.ts +81 -0
- package/dist/commands/user/team-add-members.d.ts.map +1 -0
- package/dist/commands/user/team-add-members.js +186 -0
- package/dist/commands/user/team-add-members.js.map +1 -0
- package/dist/commands/user/team-create.d.ts +82 -0
- package/dist/commands/user/team-create.d.ts.map +1 -0
- package/dist/commands/user/team-create.js +206 -0
- package/dist/commands/user/team-create.js.map +1 -0
- package/dist/commands/user/team-delete.d.ts +56 -0
- package/dist/commands/user/team-delete.d.ts.map +1 -0
- package/dist/commands/user/team-delete.js +137 -0
- package/dist/commands/user/team-delete.js.map +1 -0
- package/dist/commands/user/team-get.d.ts +41 -0
- package/dist/commands/user/team-get.d.ts.map +1 -0
- package/dist/commands/user/team-get.js +87 -0
- package/dist/commands/user/team-get.js.map +1 -0
- package/dist/commands/user/team-list.d.ts +39 -0
- package/dist/commands/user/team-list.d.ts.map +1 -0
- package/dist/commands/user/team-list.js +90 -0
- package/dist/commands/user/team-list.js.map +1 -0
- package/dist/commands/user/team-remove-members.d.ts +71 -0
- package/dist/commands/user/team-remove-members.d.ts.map +1 -0
- package/dist/commands/user/team-remove-members.js +176 -0
- package/dist/commands/user/team-remove-members.js.map +1 -0
- package/dist/types/ids.d.ts +6 -0
- package/dist/types/ids.d.ts.map +1 -1
- package/dist/types/ids.js +46 -5
- package/dist/types/ids.js.map +1 -1
- package/dist/utils/parse-brand-list.d.ts +95 -0
- package/dist/utils/parse-brand-list.d.ts.map +1 -0
- package/dist/utils/parse-brand-list.js +96 -0
- package/dist/utils/parse-brand-list.js.map +1 -0
- package/dist/utils/source-content.d.ts +93 -0
- package/dist/utils/source-content.d.ts.map +1 -0
- package/dist/utils/source-content.js +120 -0
- package/dist/utils/source-content.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic file-or-stdin-or-inline-string source-content reader
|
|
3
|
+
* (R-v0.5-NEW-18 lift, v0.5-M37 IMPL kickoff — ahead-of-feat per
|
|
4
|
+
* R-NEW-29 M25 + R-NEW-70 M34 cadence; `v0.5-plan.md` §22 R-v0.5-NEW-18
|
|
5
|
+
* entry).
|
|
6
|
+
*
|
|
7
|
+
* Five sites consume the same shape post-lift:
|
|
8
|
+
*
|
|
9
|
+
* - `src/commands/update/create.ts` (M13; `--body <md>` /
|
|
10
|
+
* `--body-file <path|->`).
|
|
11
|
+
* - `src/commands/update/reply.ts` (M13).
|
|
12
|
+
* - `src/commands/update/edit.ts` (M13).
|
|
13
|
+
* - `src/commands/doc/import-html.ts` (M37; `--html-string <s>` /
|
|
14
|
+
* `--html <file|->`).
|
|
15
|
+
* - `src/commands/doc/append-markdown.ts` (M37; `--markdown-string
|
|
16
|
+
* <s>` / `--markdown <file|->`).
|
|
17
|
+
*
|
|
18
|
+
* All five materialise a content payload from one of three mutually-
|
|
19
|
+
* exclusive sources:
|
|
20
|
+
*
|
|
21
|
+
* 1. `inline` — literal content via an inline-string flag (e.g.
|
|
22
|
+
* `--body <md>`, `--html-string <s>`, `--markdown-string <s>`).
|
|
23
|
+
* 2. `file` — file path via a file-source flag (e.g.
|
|
24
|
+
* `--body-file <path>`, `--html <file>`, `--markdown <file>`).
|
|
25
|
+
* 3. `file === '-'` — stdin (requires the `stdin` slot wired by
|
|
26
|
+
* the runner).
|
|
27
|
+
*
|
|
28
|
+
* Mutex of (1) vs (2) is typically enforced at the parse boundary via
|
|
29
|
+
* a cross-field `.refine()` on the argv schema (see R-v0.5-NEW-20);
|
|
30
|
+
* the helper rejects the both-set case defensively. Inline byte-length
|
|
31
|
+
* cap is enforced at the parse boundary via `.refine()` (see
|
|
32
|
+
* R-v0.5-NEW-21); when {@link ReadSourceContentInputs.maxBytes} is
|
|
33
|
+
* supplied here, the same cap is applied at the runtime read boundary
|
|
34
|
+
* for the file / stdin path (file content size isn't known at argv-
|
|
35
|
+
* parse time).
|
|
36
|
+
*
|
|
37
|
+
* Throws `UsageError` for:
|
|
38
|
+
* - Both `inline` and `file` set (pre-parse-boundary drift).
|
|
39
|
+
* - Neither set (no source).
|
|
40
|
+
* - `file === '-'` with no `stdin` (programmer wiring bug).
|
|
41
|
+
* - Empty (or whitespace-only) result after read.
|
|
42
|
+
* - File-read failure (ENOENT / EACCES / etc.) wrapped with the
|
|
43
|
+
* underlying error message.
|
|
44
|
+
* - Oversized payload (when `maxBytes` is set) with
|
|
45
|
+
* `details.size_bytes` + `details.limit_bytes` + `details.source`
|
|
46
|
+
* ('inline' / 'file' / 'stdin') for agent introspection.
|
|
47
|
+
*/
|
|
48
|
+
import { readFile } from 'node:fs/promises';
|
|
49
|
+
import { UsageError, errorMessage } from './errors.js';
|
|
50
|
+
const enforceMaxBytes = (content, source, maxBytes, inputs) => {
|
|
51
|
+
const size = Buffer.byteLength(content, 'utf8');
|
|
52
|
+
if (size <= maxBytes)
|
|
53
|
+
return;
|
|
54
|
+
const flagName = source === 'inline' ? inputs.inlineFlagName : inputs.fileFlagName;
|
|
55
|
+
const details = {
|
|
56
|
+
source,
|
|
57
|
+
size_bytes: size,
|
|
58
|
+
limit_bytes: maxBytes,
|
|
59
|
+
};
|
|
60
|
+
if (source === 'file' && inputs.file !== undefined) {
|
|
61
|
+
details.file_path = inputs.file;
|
|
62
|
+
}
|
|
63
|
+
throw new UsageError(`${flagName}: payload (${String(size)} bytes) exceeds the ${String(maxBytes)}-byte wire-side limit. Pass a smaller payload, or split the call.`, { details });
|
|
64
|
+
};
|
|
65
|
+
export const readSourceContent = async (inputs) => {
|
|
66
|
+
const { inline, file, stdin, inlineFlagName, fileFlagName, maxBytes, } = inputs;
|
|
67
|
+
const trimTrailing = inputs.trimTrailingWhitespace ?? true;
|
|
68
|
+
if (inline !== undefined && file !== undefined) {
|
|
69
|
+
throw new UsageError(`${inlineFlagName} and ${fileFlagName} are mutually exclusive; pick one.`, { details: { [`has_inline_value`]: true, file_path: file } });
|
|
70
|
+
}
|
|
71
|
+
if (inline !== undefined) {
|
|
72
|
+
if (inline.trim().length === 0) {
|
|
73
|
+
throw new UsageError(`${inlineFlagName} cannot be empty (or whitespace-only). Pass content or use ${fileFlagName} <path> to read from disk / stdin.`);
|
|
74
|
+
}
|
|
75
|
+
if (maxBytes !== undefined) {
|
|
76
|
+
enforceMaxBytes(inline, 'inline', maxBytes, inputs);
|
|
77
|
+
}
|
|
78
|
+
return inline;
|
|
79
|
+
}
|
|
80
|
+
if (file === undefined) {
|
|
81
|
+
const verbHint = inputs.verbHint ??
|
|
82
|
+
`requires either ${inlineFlagName} <s> or ${fileFlagName} <file>. Use ${fileFlagName} - to read from stdin.`;
|
|
83
|
+
throw new UsageError(verbHint);
|
|
84
|
+
}
|
|
85
|
+
if (file === '-') {
|
|
86
|
+
if (stdin === undefined) {
|
|
87
|
+
throw new UsageError(`${fileFlagName} - requested stdin, but no stdin is wired into the runner. This is a programmer wiring bug.`);
|
|
88
|
+
}
|
|
89
|
+
const chunks = [];
|
|
90
|
+
for await (const chunk of stdin) {
|
|
91
|
+
chunks.push(Buffer.from(chunk));
|
|
92
|
+
}
|
|
93
|
+
const raw = Buffer.concat(chunks).toString('utf8');
|
|
94
|
+
const body = trimTrailing ? raw.trimEnd() : raw;
|
|
95
|
+
if (body.length === 0) {
|
|
96
|
+
throw new UsageError(`stdin produced an empty payload. Pipe non-empty content into ${fileFlagName} - or pass ${inlineFlagName} <s> inline.`, { details: { source: 'stdin' } });
|
|
97
|
+
}
|
|
98
|
+
if (maxBytes !== undefined) {
|
|
99
|
+
enforceMaxBytes(body, 'stdin', maxBytes, inputs);
|
|
100
|
+
}
|
|
101
|
+
return body;
|
|
102
|
+
}
|
|
103
|
+
// File on disk. UTF-8 always; binary content would corrupt the
|
|
104
|
+
// markdown / HTML payload anyway.
|
|
105
|
+
const raw = await readFile(file, 'utf8').catch((err) => {
|
|
106
|
+
throw new UsageError(`${fileFlagName}: failed to read ${JSON.stringify(file)} (${errorMessage(err)}).`, {
|
|
107
|
+
cause: err,
|
|
108
|
+
details: { file_path: file },
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
const body = trimTrailing ? raw.trimEnd() : raw;
|
|
112
|
+
if (body.length === 0) {
|
|
113
|
+
throw new UsageError(`${fileFlagName}: ${JSON.stringify(file)} is empty (after trim). Pass non-empty content.`, { details: { file_path: file } });
|
|
114
|
+
}
|
|
115
|
+
if (maxBytes !== undefined) {
|
|
116
|
+
enforceMaxBytes(body, 'file', maxBytes, inputs);
|
|
117
|
+
}
|
|
118
|
+
return body;
|
|
119
|
+
};
|
|
120
|
+
//# sourceMappingURL=source-content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-content.js","sourceRoot":"","sources":["../../src/utils/source-content.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "monday-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Agent-first CLI for Monday.com — read boards, file backlog items, transition statuses, and post comments from the terminal. Built for AI coding agents (Claude Code, Codex) with humans as a welcome second audience.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|