@itsalexr/mcli 1.0.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.
Files changed (50) hide show
  1. package/README.md +151 -0
  2. package/dist/client.d.ts +4 -0
  3. package/dist/client.js +25 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/commands/auth.d.ts +7 -0
  6. package/dist/commands/auth.js +144 -0
  7. package/dist/commands/auth.js.map +1 -0
  8. package/dist/commands/boards.d.ts +44 -0
  9. package/dist/commands/boards.js +88 -0
  10. package/dist/commands/boards.js.map +1 -0
  11. package/dist/commands/graphql.d.ts +4 -0
  12. package/dist/commands/graphql.js +60 -0
  13. package/dist/commands/graphql.js.map +1 -0
  14. package/dist/commands/items.d.ts +48 -0
  15. package/dist/commands/items.js +172 -0
  16. package/dist/commands/items.js.map +1 -0
  17. package/dist/commands/me.d.ts +16 -0
  18. package/dist/commands/me.js +35 -0
  19. package/dist/commands/me.js.map +1 -0
  20. package/dist/commands/updates.d.ts +14 -0
  21. package/dist/commands/updates.js +42 -0
  22. package/dist/commands/updates.js.map +1 -0
  23. package/dist/commands/workspaces.d.ts +14 -0
  24. package/dist/commands/workspaces.js +50 -0
  25. package/dist/commands/workspaces.js.map +1 -0
  26. package/dist/config.d.ts +6 -0
  27. package/dist/config.js +50 -0
  28. package/dist/config.js.map +1 -0
  29. package/dist/index.d.ts +2 -0
  30. package/dist/index.js +36 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/output.d.ts +7 -0
  33. package/dist/output.js +29 -0
  34. package/dist/output.js.map +1 -0
  35. package/dist/queries/boards.d.ts +2 -0
  36. package/dist/queries/boards.js +44 -0
  37. package/dist/queries/boards.js.map +1 -0
  38. package/dist/queries/items.d.ts +3 -0
  39. package/dist/queries/items.js +64 -0
  40. package/dist/queries/items.js.map +1 -0
  41. package/dist/queries/me.d.ts +1 -0
  42. package/dist/queries/me.js +19 -0
  43. package/dist/queries/me.js.map +1 -0
  44. package/dist/queries/updates.d.ts +1 -0
  45. package/dist/queries/updates.js +17 -0
  46. package/dist/queries/updates.js.map +1 -0
  47. package/dist/queries/workspaces.d.ts +1 -0
  48. package/dist/queries/workspaces.js +14 -0
  49. package/dist/queries/workspaces.js.map +1 -0
  50. package/package.json +39 -0
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fetchItems = fetchItems;
7
+ exports.createItem = createItem;
8
+ exports.updateItemColumns = updateItemColumns;
9
+ exports.registerItems = registerItems;
10
+ const zod_1 = require("zod");
11
+ const chalk_1 = __importDefault(require("chalk"));
12
+ const client_1 = require("../client");
13
+ const output_1 = require("../output");
14
+ const items_1 = require("../queries/items");
15
+ async function fetchItems(client, boardId, opts) {
16
+ return (0, client_1.gqlRequest)(client, items_1.GET_BOARD_ITEMS_PAGE_QUERY, {
17
+ boardId,
18
+ limit: opts.limit,
19
+ cursor: opts.cursor,
20
+ includeColumns: opts.includeColumns,
21
+ });
22
+ }
23
+ async function createItem(client, boardId, opts) {
24
+ return (0, client_1.gqlRequest)(client, items_1.CREATE_ITEM_MUTATION, {
25
+ boardId,
26
+ itemName: opts.name,
27
+ groupId: opts.groupId,
28
+ columnValues: opts.columnValues,
29
+ });
30
+ }
31
+ async function updateItemColumns(client, boardId, itemId, columnValuesJson) {
32
+ return (0, client_1.gqlRequest)(client, items_1.CHANGE_ITEM_COLUMN_VALUES_MUTATION, {
33
+ boardId,
34
+ itemId,
35
+ columnValues: columnValuesJson,
36
+ });
37
+ }
38
+ const isValidJson = (v) => {
39
+ if (!v)
40
+ return true;
41
+ try {
42
+ JSON.parse(v);
43
+ return true;
44
+ }
45
+ catch {
46
+ return false;
47
+ }
48
+ };
49
+ const ItemsListOptionsSchema = zod_1.z.object({
50
+ limit: zod_1.z.coerce.number().int().positive().default(25),
51
+ cursor: zod_1.z.string().optional(),
52
+ columns: zod_1.z.boolean().optional(),
53
+ });
54
+ const ItemCreateOptionsSchema = zod_1.z.object({
55
+ name: zod_1.z.string().min(1, 'Item name is required'),
56
+ groupId: zod_1.z.string().optional(),
57
+ columnValues: zod_1.z
58
+ .string()
59
+ .optional()
60
+ .refine(isValidJson, { message: '--column-values must be valid JSON' }),
61
+ });
62
+ const UpdateColumnsSchema = zod_1.z.object({
63
+ columnValuesJson: zod_1.z
64
+ .string()
65
+ .refine(isValidJson, { message: 'columnValuesJson must be valid JSON' }),
66
+ });
67
+ function formatColumnValues(cvs) {
68
+ return cvs
69
+ .filter((cv) => cv.text)
70
+ .map((cv) => `${cv.id}=${cv.text}`)
71
+ .join(', ');
72
+ }
73
+ function registerItems(program, clientFactory) {
74
+ const items = program.command('items').description('Manage monday.com items');
75
+ items
76
+ .command('list <boardId>')
77
+ .description('List items on a board')
78
+ .option('--limit <n>', 'Number of items to return', '25')
79
+ .option('--cursor <cursor>', 'Pagination cursor')
80
+ .option('--columns', 'Include column values')
81
+ .action(async (boardId, opts) => {
82
+ const format = program.opts().table ? 'table' : 'json';
83
+ try {
84
+ const { limit, cursor, columns } = ItemsListOptionsSchema.parse(opts);
85
+ const client = clientFactory();
86
+ const data = await fetchItems(client, boardId, {
87
+ limit,
88
+ cursor,
89
+ includeColumns: columns ?? false,
90
+ });
91
+ const itemList = data.boards[0]?.items_page.items ?? [];
92
+ const nextCursor = data.boards[0]?.items_page.cursor;
93
+ if (format === 'table') {
94
+ const headers = ['ID', 'Name', 'Created', 'Updated', 'URL'];
95
+ if (columns)
96
+ headers.push('Column Values');
97
+ (0, output_1.printTable)(headers, itemList.map((item) => {
98
+ const row = [
99
+ item.id,
100
+ item.name,
101
+ item.created_at,
102
+ item.updated_at,
103
+ item.url,
104
+ ];
105
+ if (columns)
106
+ row.push(formatColumnValues(item.column_values));
107
+ return row;
108
+ }));
109
+ if (nextCursor) {
110
+ console.log(chalk_1.default.gray(`Next cursor: ${nextCursor}`));
111
+ }
112
+ }
113
+ else {
114
+ (0, output_1.printJson)({ items: itemList, cursor: nextCursor });
115
+ }
116
+ }
117
+ catch (err) {
118
+ if (err instanceof zod_1.z.ZodError) {
119
+ console.error(chalk_1.default.red('Validation error: ' + err.issues.map((i) => i.message).join(', ')));
120
+ process.exit(1);
121
+ }
122
+ console.error(chalk_1.default.red(err.message));
123
+ process.exit(1);
124
+ }
125
+ });
126
+ items
127
+ .command('create <boardId>')
128
+ .description('Create a new item on a board')
129
+ .requiredOption('--name <name>', 'Item name')
130
+ .option('--group-id <id>', 'Group ID')
131
+ .option('--column-values <json>', 'Column values as JSON string')
132
+ .action(async (boardId, opts) => {
133
+ try {
134
+ const validated = ItemCreateOptionsSchema.parse({
135
+ name: opts.name,
136
+ groupId: opts.groupId,
137
+ columnValues: opts.columnValues,
138
+ });
139
+ const client = clientFactory();
140
+ const result = await createItem(client, boardId, validated);
141
+ (0, output_1.printJson)(result.create_item);
142
+ }
143
+ catch (err) {
144
+ if (err instanceof zod_1.z.ZodError) {
145
+ console.error(chalk_1.default.red('Validation error: ' + err.issues.map((i) => i.message).join(', ')));
146
+ process.exit(1);
147
+ }
148
+ console.error(chalk_1.default.red(err.message));
149
+ process.exit(1);
150
+ }
151
+ });
152
+ items
153
+ .command('update-columns <boardId> <itemId> <columnValuesJson>')
154
+ .description('Update column values for an item')
155
+ .action(async (boardId, itemId, columnValuesJson) => {
156
+ try {
157
+ UpdateColumnsSchema.parse({ columnValuesJson });
158
+ const client = clientFactory();
159
+ const result = await updateItemColumns(client, boardId, itemId, columnValuesJson);
160
+ (0, output_1.printJson)(result.change_multiple_column_values);
161
+ }
162
+ catch (err) {
163
+ if (err instanceof zod_1.z.ZodError) {
164
+ console.error(chalk_1.default.red('Validation error: ' + err.issues.map((i) => i.message).join(', ')));
165
+ process.exit(1);
166
+ }
167
+ console.error(chalk_1.default.red(err.message));
168
+ process.exit(1);
169
+ }
170
+ });
171
+ }
172
+ //# sourceMappingURL=items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"items.js","sourceRoot":"","sources":["../../src/commands/items.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Command } from 'commander';
2
+ import { GraphQLClient } from 'graphql-request';
3
+ export interface MeResult {
4
+ me: {
5
+ id: string;
6
+ name: string;
7
+ email: string;
8
+ title: string | null;
9
+ account: {
10
+ id: string;
11
+ name: string;
12
+ };
13
+ };
14
+ }
15
+ export declare function fetchMe(client: GraphQLClient): Promise<MeResult>;
16
+ export declare function registerMe(program: Command, clientFactory: () => GraphQLClient): void;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fetchMe = fetchMe;
7
+ exports.registerMe = registerMe;
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const client_1 = require("../client");
10
+ const output_1 = require("../output");
11
+ const me_1 = require("../queries/me");
12
+ async function fetchMe(client) {
13
+ return (0, client_1.gqlRequest)(client, me_1.ME_QUERY);
14
+ }
15
+ function registerMe(program, clientFactory) {
16
+ program
17
+ .command('me')
18
+ .description('Show current authenticated user')
19
+ .action(async () => {
20
+ const format = program.opts().table ? 'table' : 'json';
21
+ try {
22
+ const client = clientFactory();
23
+ const data = await fetchMe(client);
24
+ (0, output_1.printOutput)(data.me, format, (me) => ({
25
+ headers: ['ID', 'Name', 'Email', 'Title', 'Account ID', 'Account Name'],
26
+ rows: [[me.id, me.name, me.email, me.title ?? '', me.account.id, me.account.name]],
27
+ }));
28
+ }
29
+ catch (err) {
30
+ console.error(chalk_1.default.red(err.message));
31
+ process.exit(1);
32
+ }
33
+ });
34
+ }
35
+ //# sourceMappingURL=me.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"me.js","sourceRoot":"","sources":["../../src/commands/me.ts"],"names":[],"mappings":";;;;;AAiBA,0BAEC;AAED,gCAkBC;AArCD,kDAA0B;AAC1B,sCAAuC;AACvC,sCAAsD;AACtD,sCAAyC;AAYlC,KAAK,UAAU,OAAO,CAAC,MAAqB;IACjD,OAAO,IAAA,mBAAU,EAAW,MAAM,EAAE,aAAQ,CAAC,CAAC;AAChD,CAAC;AAED,SAAgB,UAAU,CAAC,OAAgB,EAAE,aAAkC;IAC7E,OAAO;SACJ,OAAO,CAAC,IAAI,CAAC;SACb,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAkB,OAAO,CAAC,IAAI,EAAE,CAAC,KAA6B,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9F,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;YACnC,IAAA,oBAAW,EAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACpC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,CAAC;gBACvE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aACnF,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Command } from 'commander';
2
+ import { GraphQLClient } from 'graphql-request';
3
+ export interface CreateUpdateResult {
4
+ create_update: {
5
+ id: string;
6
+ item_id: string;
7
+ item: {
8
+ name: string;
9
+ url: string;
10
+ };
11
+ };
12
+ }
13
+ export declare function createUpdate(client: GraphQLClient, itemId: string, body: string): Promise<CreateUpdateResult>;
14
+ export declare function registerUpdates(program: Command, clientFactory: () => GraphQLClient): void;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createUpdate = createUpdate;
7
+ exports.registerUpdates = registerUpdates;
8
+ const zod_1 = require("zod");
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const client_1 = require("../client");
11
+ const output_1 = require("../output");
12
+ const updates_1 = require("../queries/updates");
13
+ async function createUpdate(client, itemId, body) {
14
+ return (0, client_1.gqlRequest)(client, updates_1.CREATE_UPDATE_MUTATION, { itemId, body });
15
+ }
16
+ const UpdateCreateSchema = zod_1.z.object({
17
+ itemId: zod_1.z.string().min(1),
18
+ body: zod_1.z.string().min(1, 'Update body cannot be empty'),
19
+ });
20
+ function registerUpdates(program, clientFactory) {
21
+ const updates = program.command('updates').description('Manage monday.com item updates');
22
+ updates
23
+ .command('create <itemId> <body>')
24
+ .description('Add a comment/update to an item')
25
+ .action(async (itemId, body) => {
26
+ try {
27
+ UpdateCreateSchema.parse({ itemId, body });
28
+ const client = clientFactory();
29
+ const result = await createUpdate(client, itemId, body);
30
+ (0, output_1.printJson)(result.create_update);
31
+ }
32
+ catch (err) {
33
+ if (err instanceof zod_1.z.ZodError) {
34
+ console.error(chalk_1.default.red('Validation error: ' + err.issues.map((i) => i.message).join(', ')));
35
+ process.exit(1);
36
+ }
37
+ console.error(chalk_1.default.red(err.message));
38
+ process.exit(1);
39
+ }
40
+ });
41
+ }
42
+ //# sourceMappingURL=updates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updates.js","sourceRoot":"","sources":["../../src/commands/updates.ts"],"names":[],"mappings":";;;;;AAgBA,oCAMC;AAOD,0CAqBC;AAhDD,6BAAwB;AACxB,kDAA0B;AAC1B,sCAAuC;AACvC,sCAAsC;AACtC,gDAA4D;AAUrD,KAAK,UAAU,YAAY,CAChC,MAAqB,EACrB,MAAc,EACd,IAAY;IAEZ,OAAO,IAAA,mBAAU,EAAqB,MAAM,EAAE,gCAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,MAAM,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IAClC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,6BAA6B,CAAC;CACvD,CAAC,CAAC;AAEH,SAAgB,eAAe,CAAC,OAAgB,EAAE,aAAkC;IAClF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;IAEzF,OAAO;SACJ,OAAO,CAAC,wBAAwB,CAAC;SACjC,WAAW,CAAC,iCAAiC,CAAC;SAC9C,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAY,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACxD,IAAA,kBAAS,EAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,OAAC,CAAC,QAAQ,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Command } from 'commander';
2
+ import { GraphQLClient } from 'graphql-request';
3
+ export interface WorkspacesResult {
4
+ workspaces: Array<{
5
+ id: string;
6
+ name: string;
7
+ description: string | null;
8
+ }>;
9
+ }
10
+ export declare function fetchWorkspaces(client: GraphQLClient, opts: {
11
+ limit: number;
12
+ page: number;
13
+ }): Promise<WorkspacesResult>;
14
+ export declare function registerWorkspaces(program: Command, clientFactory: () => GraphQLClient): void;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fetchWorkspaces = fetchWorkspaces;
7
+ exports.registerWorkspaces = registerWorkspaces;
8
+ const zod_1 = require("zod");
9
+ const chalk_1 = __importDefault(require("chalk"));
10
+ const client_1 = require("../client");
11
+ const output_1 = require("../output");
12
+ const workspaces_1 = require("../queries/workspaces");
13
+ async function fetchWorkspaces(client, opts) {
14
+ return (0, client_1.gqlRequest)(client, workspaces_1.LIST_WORKSPACES_QUERY, {
15
+ limit: opts.limit,
16
+ page: opts.page,
17
+ });
18
+ }
19
+ const WorkspacesOptionsSchema = zod_1.z.object({
20
+ limit: zod_1.z.coerce.number().int().positive().default(50),
21
+ page: zod_1.z.coerce.number().int().positive().default(1),
22
+ });
23
+ function registerWorkspaces(program, clientFactory) {
24
+ program
25
+ .command('workspaces')
26
+ .description('List monday.com workspaces')
27
+ .option('--limit <n>', 'Number of workspaces to return', '50')
28
+ .option('--page <n>', 'Page number', '1')
29
+ .action(async (opts) => {
30
+ const format = program.opts().table ? 'table' : 'json';
31
+ try {
32
+ const { limit, page } = WorkspacesOptionsSchema.parse(opts);
33
+ const client = clientFactory();
34
+ const data = await fetchWorkspaces(client, { limit, page });
35
+ (0, output_1.printOutput)(data.workspaces, format, (ws) => ({
36
+ headers: ['ID', 'Name', 'Description'],
37
+ rows: ws.map((w) => [w.id, w.name, w.description ?? '']),
38
+ }));
39
+ }
40
+ catch (err) {
41
+ if (err instanceof zod_1.z.ZodError) {
42
+ console.error(chalk_1.default.red('Validation error: ' + err.issues.map((i) => i.message).join(', ')));
43
+ process.exit(1);
44
+ }
45
+ console.error(chalk_1.default.red(err.message));
46
+ process.exit(1);
47
+ }
48
+ });
49
+ }
50
+ //# sourceMappingURL=workspaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../src/commands/workspaces.ts"],"names":[],"mappings":";;;;;AAgBA,0CAQC;AAOD,gDAyBC;AAtDD,6BAAwB;AACxB,kDAA0B;AAC1B,sCAAuC;AACvC,sCAAsD;AACtD,sDAA8D;AAUvD,KAAK,UAAU,eAAe,CACnC,MAAqB,EACrB,IAAqC;IAErC,OAAO,IAAA,mBAAU,EAAmB,MAAM,EAAE,kCAAqB,EAAE;QACjE,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACrD,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CACpD,CAAC,CAAC;AAEH,SAAgB,kBAAkB,CAAC,OAAgB,EAAE,aAAkC;IACrF,OAAO;SACJ,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,aAAa,EAAE,gCAAgC,EAAE,IAAI,CAAC;SAC7D,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,GAAG,CAAC;SACxC,MAAM,CAAC,KAAK,EAAE,IAAqC,EAAE,EAAE;QACtD,MAAM,MAAM,GAAkB,OAAO,CAAC,IAAI,EAAE,CAAC,KAA6B,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9F,IAAI,CAAC;YACH,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,IAAA,oBAAW,EAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5C,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC;gBACtC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;aACzD,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,OAAC,CAAC,QAAQ,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,oBAAoB,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,6 @@
1
+ export interface Config {
2
+ token: string;
3
+ apiVersion: string;
4
+ endpoint: string;
5
+ }
6
+ export declare function loadConfig(): Config;
package/dist/config.js ADDED
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadConfig = loadConfig;
37
+ const dotenv = __importStar(require("dotenv"));
38
+ dotenv.config();
39
+ function loadConfig() {
40
+ const token = process.env.MONDAY_TOKEN;
41
+ if (!token) {
42
+ throw new Error('MONDAY_TOKEN is required. Run `mcli auth login --token <TOKEN>` or set MONDAY_TOKEN in your .env file');
43
+ }
44
+ return {
45
+ token,
46
+ apiVersion: process.env.API_VERSION ?? '2026-07',
47
+ endpoint: 'https://api.monday.com/v2',
48
+ };
49
+ }
50
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,gCAYC;AAtBD,+CAAiC;AAEjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAQhB,SAAgB,UAAU;IACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IACvC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,uGAAuG,CACxG,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK;QACL,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,SAAS;QAChD,QAAQ,EAAE,2BAA2B;KACtC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const config_1 = require("./config");
10
+ const client_1 = require("./client");
11
+ const auth_1 = require("./commands/auth");
12
+ const me_1 = require("./commands/me");
13
+ const workspaces_1 = require("./commands/workspaces");
14
+ const boards_1 = require("./commands/boards");
15
+ const items_1 = require("./commands/items");
16
+ const updates_1 = require("./commands/updates");
17
+ const graphql_1 = require("./commands/graphql");
18
+ const program = new commander_1.Command();
19
+ program
20
+ .name('mcli')
21
+ .description('monday.com CLI')
22
+ .version('1.0.0')
23
+ .option('--table', 'Output as human-readable table instead of JSON');
24
+ const clientFactory = () => (0, client_1.createClient)((0, config_1.loadConfig)());
25
+ (0, auth_1.registerAuth)(program, clientFactory);
26
+ (0, me_1.registerMe)(program, clientFactory);
27
+ (0, workspaces_1.registerWorkspaces)(program, clientFactory);
28
+ (0, boards_1.registerBoards)(program, clientFactory);
29
+ (0, items_1.registerItems)(program, clientFactory);
30
+ (0, updates_1.registerUpdates)(program, clientFactory);
31
+ (0, graphql_1.registerGraphql)(program, clientFactory);
32
+ program.parseAsync(process.argv).catch((err) => {
33
+ console.error(chalk_1.default.red('Error:'), err.message);
34
+ process.exit(1);
35
+ });
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,yCAAoC;AACpC,kDAA0B;AAC1B,qCAAsC;AACtC,qCAAwC;AACxC,0CAA+C;AAC/C,sCAA2C;AAC3C,sDAA2D;AAC3D,8CAAmD;AACnD,4CAAiD;AACjD,gDAAqD;AACrD,gDAAqD;AAErD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,gBAAgB,CAAC;KAC7B,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,SAAS,EAAE,gDAAgD,CAAC,CAAC;AAEvE,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,IAAA,qBAAY,EAAC,IAAA,mBAAU,GAAE,CAAC,CAAC;AAEvD,IAAA,mBAAY,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACrC,IAAA,eAAU,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACnC,IAAA,+BAAkB,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC3C,IAAA,uBAAc,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACvC,IAAA,qBAAa,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACtC,IAAA,yBAAe,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AACxC,IAAA,yBAAe,EAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAExC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;IACpD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type OutputFormat = 'json' | 'table';
2
+ export declare function printJson(data: unknown): void;
3
+ export declare function printTable(headers: string[], rows: (string | number | null | undefined)[][]): void;
4
+ export declare function printOutput<T>(data: T, format: OutputFormat, toTableArgs: (data: T) => {
5
+ headers: string[];
6
+ rows: string[][];
7
+ }): void;
package/dist/output.js ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.printJson = printJson;
7
+ exports.printTable = printTable;
8
+ exports.printOutput = printOutput;
9
+ const cli_table3_1 = __importDefault(require("cli-table3"));
10
+ function printJson(data) {
11
+ console.log(JSON.stringify(data, null, 2));
12
+ }
13
+ function printTable(headers, rows) {
14
+ const table = new cli_table3_1.default({ head: headers });
15
+ for (const row of rows) {
16
+ table.push(row.map((cell) => (cell == null ? '' : String(cell))));
17
+ }
18
+ console.log(table.toString());
19
+ }
20
+ function printOutput(data, format, toTableArgs) {
21
+ if (format === 'table') {
22
+ const { headers, rows } = toTableArgs(data);
23
+ printTable(headers, rows);
24
+ }
25
+ else {
26
+ printJson(data);
27
+ }
28
+ }
29
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":";;;;;AAIA,8BAEC;AAED,gCASC;AAED,kCAWC;AA9BD,4DAA+B;AAI/B,SAAgB,SAAS,CAAC,IAAa;IACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,UAAU,CACxB,OAAiB,EACjB,IAA8C;IAE9C,MAAM,KAAK,GAAG,IAAI,oBAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,WAAW,CACzB,IAAO,EACP,MAAoB,EACpB,WAAiE;IAEjE,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5C,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,SAAS,CAAC,IAAI,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const LIST_BOARDS_QUERY: string;
2
+ export declare const GET_BOARD_INFO_QUERY: string;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET_BOARD_INFO_QUERY = exports.LIST_BOARDS_QUERY = void 0;
4
+ const graphql_request_1 = require("graphql-request");
5
+ exports.LIST_BOARDS_QUERY = (0, graphql_request_1.gql) `
6
+ query listBoards($limit: Int, $page: Int, $workspaceIds: [ID]) {
7
+ boards(limit: $limit, page: $page, workspace_ids: $workspaceIds) {
8
+ id
9
+ name
10
+ description
11
+ state
12
+ board_kind
13
+ workspace {
14
+ id
15
+ name
16
+ }
17
+ }
18
+ }
19
+ `;
20
+ exports.GET_BOARD_INFO_QUERY = (0, graphql_request_1.gql) `
21
+ query getBoardInfo($boardId: ID!) {
22
+ boards(ids: [$boardId]) {
23
+ id
24
+ name
25
+ description
26
+ state
27
+ board_kind
28
+ columns {
29
+ id
30
+ title
31
+ type
32
+ }
33
+ groups {
34
+ id
35
+ title
36
+ }
37
+ workspace {
38
+ id
39
+ name
40
+ }
41
+ }
42
+ }
43
+ `;
44
+ //# sourceMappingURL=boards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boards.js","sourceRoot":"","sources":["../../src/queries/boards.ts"],"names":[],"mappings":";;;AAAA,qDAAsC;AAEzB,QAAA,iBAAiB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;CAcnC,CAAC;AAEW,QAAA,oBAAoB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;CAuBtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const GET_BOARD_ITEMS_PAGE_QUERY: string;
2
+ export declare const CREATE_ITEM_MUTATION: string;
3
+ export declare const CHANGE_ITEM_COLUMN_VALUES_MUTATION: string;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CHANGE_ITEM_COLUMN_VALUES_MUTATION = exports.CREATE_ITEM_MUTATION = exports.GET_BOARD_ITEMS_PAGE_QUERY = void 0;
4
+ const graphql_request_1 = require("graphql-request");
5
+ exports.GET_BOARD_ITEMS_PAGE_QUERY = (0, graphql_request_1.gql) `
6
+ query getBoardItemsPage(
7
+ $boardId: ID!
8
+ $limit: Int
9
+ $cursor: String
10
+ $includeColumns: Boolean!
11
+ ) {
12
+ boards(ids: [$boardId]) {
13
+ items_page(limit: $limit, cursor: $cursor) {
14
+ items {
15
+ id
16
+ name
17
+ url
18
+ created_at
19
+ updated_at
20
+ column_values @include(if: $includeColumns) {
21
+ id
22
+ type
23
+ text
24
+ value
25
+ }
26
+ }
27
+ cursor
28
+ }
29
+ }
30
+ }
31
+ `;
32
+ exports.CREATE_ITEM_MUTATION = (0, graphql_request_1.gql) `
33
+ mutation createItem(
34
+ $boardId: ID!
35
+ $itemName: String!
36
+ $groupId: String
37
+ $columnValues: JSON
38
+ ) {
39
+ create_item(
40
+ board_id: $boardId
41
+ item_name: $itemName
42
+ group_id: $groupId
43
+ column_values: $columnValues
44
+ ) {
45
+ id
46
+ name
47
+ url
48
+ }
49
+ }
50
+ `;
51
+ exports.CHANGE_ITEM_COLUMN_VALUES_MUTATION = (0, graphql_request_1.gql) `
52
+ mutation changeItemColumnValues($boardId: ID!, $itemId: ID!, $columnValues: JSON!) {
53
+ change_multiple_column_values(
54
+ board_id: $boardId
55
+ item_id: $itemId
56
+ column_values: $columnValues
57
+ ) {
58
+ id
59
+ name
60
+ url
61
+ }
62
+ }
63
+ `;
64
+ //# sourceMappingURL=items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"items.js","sourceRoot":"","sources":["../../src/queries/items.ts"],"names":[],"mappings":";;;AAAA,qDAAsC;AAEzB,QAAA,0BAA0B,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B5C,CAAC;AAEW,QAAA,oBAAoB,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;;;;;;;CAkBtC,CAAC;AAEW,QAAA,kCAAkC,GAAG,IAAA,qBAAG,EAAA;;;;;;;;;;;;CAYpD,CAAC"}