@itznexus/itznexus-cli 1.3.0 → 1.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.
Files changed (98) hide show
  1. package/dist/commands/agents/claude.d.ts +2 -0
  2. package/dist/commands/agents/claude.js +85 -0
  3. package/dist/commands/agents/claude.js.map +1 -0
  4. package/dist/commands/api/audit-logs.d.ts +2 -0
  5. package/dist/commands/api/audit-logs.js +66 -0
  6. package/dist/commands/api/audit-logs.js.map +1 -0
  7. package/dist/commands/{auth.js → api/auth.js} +2 -10
  8. package/dist/commands/api/auth.js.map +1 -0
  9. package/dist/commands/api/claude-events.d.ts +2 -0
  10. package/dist/commands/api/claude-events.js +104 -0
  11. package/dist/commands/api/claude-events.js.map +1 -0
  12. package/dist/commands/api/files.d.ts +2 -0
  13. package/dist/commands/api/files.js +166 -0
  14. package/dist/commands/api/files.js.map +1 -0
  15. package/dist/commands/api/folders.d.ts +2 -0
  16. package/dist/commands/api/folders.js +153 -0
  17. package/dist/commands/api/folders.js.map +1 -0
  18. package/dist/commands/api/github-accounts.d.ts +2 -0
  19. package/dist/commands/api/github-accounts.js +99 -0
  20. package/dist/commands/api/github-accounts.js.map +1 -0
  21. package/dist/commands/api/gmail-accounts.d.ts +2 -0
  22. package/dist/commands/api/gmail-accounts.js +117 -0
  23. package/dist/commands/api/gmail-accounts.js.map +1 -0
  24. package/dist/commands/{health.js → api/health.js} +2 -2
  25. package/dist/commands/api/health.js.map +1 -0
  26. package/dist/commands/{interaction.js → api/interactions.js} +6 -13
  27. package/dist/commands/api/interactions.js.map +1 -0
  28. package/dist/commands/api/jobs.d.ts +2 -0
  29. package/dist/commands/api/jobs.js +90 -0
  30. package/dist/commands/api/jobs.js.map +1 -0
  31. package/dist/commands/{lead.js → api/leads.js} +119 -27
  32. package/dist/commands/api/leads.js.map +1 -0
  33. package/dist/commands/{organization.js → api/organizations.js} +31 -41
  34. package/dist/commands/api/organizations.js.map +1 -0
  35. package/dist/commands/{page.js → api/pages.js} +62 -19
  36. package/dist/commands/api/pages.js.map +1 -0
  37. package/dist/commands/{person.js → api/persons.js} +67 -47
  38. package/dist/commands/api/persons.js.map +1 -0
  39. package/dist/commands/{pipeline.js → api/pipelines.js} +3 -3
  40. package/dist/commands/api/pipelines.js.map +1 -0
  41. package/dist/commands/api/projects.js +357 -0
  42. package/dist/commands/api/projects.js.map +1 -0
  43. package/dist/commands/api/repositories.d.ts +2 -0
  44. package/dist/commands/api/repositories.js +118 -0
  45. package/dist/commands/api/repositories.js.map +1 -0
  46. package/dist/commands/api/settings.d.ts +2 -0
  47. package/dist/commands/api/settings.js +79 -0
  48. package/dist/commands/api/settings.js.map +1 -0
  49. package/dist/commands/{sprint.js → api/sprints.js} +37 -22
  50. package/dist/commands/api/sprints.js.map +1 -0
  51. package/dist/commands/{task.js → api/tasks.js} +78 -19
  52. package/dist/commands/api/tasks.js.map +1 -0
  53. package/dist/commands/api/upwork-job-notifications.d.ts +2 -0
  54. package/dist/commands/api/upwork-job-notifications.js +85 -0
  55. package/dist/commands/api/upwork-job-notifications.js.map +1 -0
  56. package/dist/commands/api/users.js +224 -0
  57. package/dist/commands/api/users.js.map +1 -0
  58. package/dist/commands/api/website-scrapes.d.ts +2 -0
  59. package/dist/commands/api/website-scrapes.js +118 -0
  60. package/dist/commands/api/website-scrapes.js.map +1 -0
  61. package/dist/commands/api/youtube-productions.d.ts +2 -0
  62. package/dist/commands/api/youtube-productions.js +521 -0
  63. package/dist/commands/api/youtube-productions.js.map +1 -0
  64. package/dist/commands/api/youtube-videos.d.ts +2 -0
  65. package/dist/commands/api/youtube-videos.js +111 -0
  66. package/dist/commands/api/youtube-videos.js.map +1 -0
  67. package/dist/index.js +97 -39
  68. package/dist/index.js.map +1 -1
  69. package/dist/lib/claude/normalize-events.d.ts +19 -0
  70. package/dist/lib/claude/normalize-events.js +158 -0
  71. package/dist/lib/claude/normalize-events.js.map +1 -0
  72. package/package.json +1 -1
  73. package/dist/commands/auth.js.map +0 -1
  74. package/dist/commands/health.js.map +0 -1
  75. package/dist/commands/interaction.js.map +0 -1
  76. package/dist/commands/lead.js.map +0 -1
  77. package/dist/commands/organization.js.map +0 -1
  78. package/dist/commands/page.js.map +0 -1
  79. package/dist/commands/person.js.map +0 -1
  80. package/dist/commands/pipeline.js.map +0 -1
  81. package/dist/commands/project.js +0 -151
  82. package/dist/commands/project.js.map +0 -1
  83. package/dist/commands/sprint.js.map +0 -1
  84. package/dist/commands/task.js.map +0 -1
  85. package/dist/commands/user.js +0 -58
  86. package/dist/commands/user.js.map +0 -1
  87. /package/dist/commands/{auth.d.ts → api/auth.d.ts} +0 -0
  88. /package/dist/commands/{health.d.ts → api/health.d.ts} +0 -0
  89. /package/dist/commands/{interaction.d.ts → api/interactions.d.ts} +0 -0
  90. /package/dist/commands/{lead.d.ts → api/leads.d.ts} +0 -0
  91. /package/dist/commands/{organization.d.ts → api/organizations.d.ts} +0 -0
  92. /package/dist/commands/{page.d.ts → api/pages.d.ts} +0 -0
  93. /package/dist/commands/{person.d.ts → api/persons.d.ts} +0 -0
  94. /package/dist/commands/{pipeline.d.ts → api/pipelines.d.ts} +0 -0
  95. /package/dist/commands/{project.d.ts → api/projects.d.ts} +0 -0
  96. /package/dist/commands/{sprint.d.ts → api/sprints.d.ts} +0 -0
  97. /package/dist/commands/{task.d.ts → api/tasks.d.ts} +0 -0
  98. /package/dist/commands/{user.d.ts → api/users.d.ts} +0 -0
@@ -1,8 +1,7 @@
1
1
  import { Command } from "commander";
2
2
  import chalk from "chalk";
3
- import { api } from "../lib/api.js";
4
- import { printList, printDetail, handleError } from "../lib/format.js";
5
- // --- list ---
3
+ import { api } from "../../lib/api.js";
4
+ import { printList, printDetail, handleError } from "../../lib/format.js";
6
5
  const listCommand = new Command("list")
7
6
  .description("List all leads")
8
7
  .option("--pipeline <pipeline>", "Filter by pipeline (default, upwork)")
@@ -38,7 +37,26 @@ const listCommand = new Command("list")
38
37
  handleError(err);
39
38
  }
40
39
  });
41
- // --- get ---
40
+ const statsCommand = new Command("stats")
41
+ .description("Get lead funnel statistics")
42
+ .option("--pipeline <pipeline>", "Filter by pipeline")
43
+ .option("--days <n>", "Window in days", parseInt)
44
+ .option("--json", "Output as JSON")
45
+ .action(async (opts) => {
46
+ try {
47
+ const params = new URLSearchParams();
48
+ if (opts.pipeline)
49
+ params.set("pipeline", opts.pipeline);
50
+ if (opts.days != null)
51
+ params.set("days", String(opts.days));
52
+ const qs = params.toString();
53
+ const data = await api.get(`/leads/stats${qs ? `?${qs}` : ""}`);
54
+ console.log(JSON.stringify(data, null, 2));
55
+ }
56
+ catch (err) {
57
+ handleError(err);
58
+ }
59
+ });
42
60
  const getCommand = new Command("get")
43
61
  .description("Get lead details")
44
62
  .argument("<id>", "Lead ID")
@@ -79,7 +97,6 @@ const getCommand = new Command("get")
79
97
  handleError(err);
80
98
  }
81
99
  });
82
- // --- create ---
83
100
  const createCommand = new Command("create")
84
101
  .description("Create a new lead")
85
102
  .requiredOption("--title <title>", "Lead title")
@@ -92,9 +109,7 @@ const createCommand = new Command("create")
92
109
  .option("--json", "Output as JSON")
93
110
  .action(async (opts) => {
94
111
  try {
95
- const payload = {
96
- title: opts.title,
97
- };
112
+ const payload = { title: opts.title };
98
113
  if (opts.sourceChannel !== undefined)
99
114
  payload.sourceChannel = opts.sourceChannel;
100
115
  if (opts.sourceChannelId !== undefined)
@@ -112,14 +127,13 @@ const createCommand = new Command("create")
112
127
  console.log(JSON.stringify(data, null, 2));
113
128
  }
114
129
  else {
115
- console.log(chalk.green("\u2713"), `Lead created: ${chalk.bold(data.title)} (${data.id})`);
130
+ console.log(chalk.green("✓"), `Lead created: ${chalk.bold(data.title)} (${data.id})`);
116
131
  }
117
132
  }
118
133
  catch (err) {
119
134
  handleError(err);
120
135
  }
121
136
  });
122
- // --- update ---
123
137
  const updateCommand = new Command("update")
124
138
  .description("Update a lead")
125
139
  .argument("<id>", "Lead ID")
@@ -150,34 +164,77 @@ const updateCommand = new Command("update")
150
164
  console.log(JSON.stringify(data, null, 2));
151
165
  }
152
166
  else {
153
- console.log(chalk.green("\u2713"), `Lead updated: ${chalk.bold(data.title)}`);
167
+ console.log(chalk.green("✓"), `Lead updated: ${chalk.bold(data.title)}`);
168
+ }
169
+ }
170
+ catch (err) {
171
+ handleError(err);
172
+ }
173
+ });
174
+ const titleCommand = new Command("title")
175
+ .description("Update lead title")
176
+ .argument("<id>", "Lead ID")
177
+ .argument("<title>", "New title")
178
+ .option("--json", "Output as JSON")
179
+ .action(async (id, title, opts) => {
180
+ try {
181
+ const data = await api.post(`/leads/${id}/title`, { title });
182
+ if (opts.json) {
183
+ console.log(JSON.stringify(data, null, 2));
184
+ }
185
+ else {
186
+ console.log(chalk.green("✓"), "Lead title updated");
187
+ }
188
+ }
189
+ catch (err) {
190
+ handleError(err);
191
+ }
192
+ });
193
+ const descriptionCommand = new Command("description")
194
+ .description("Update lead description")
195
+ .argument("<id>", "Lead ID")
196
+ .argument("<description>", 'New description ("null" to clear)')
197
+ .option("--json", "Output as JSON")
198
+ .action(async (id, description, opts) => {
199
+ try {
200
+ const value = description === "null" ? null : description;
201
+ const data = await api.post(`/leads/${id}/description`, {
202
+ description: value,
203
+ });
204
+ if (opts.json) {
205
+ console.log(JSON.stringify(data, null, 2));
206
+ }
207
+ else {
208
+ console.log(chalk.green("✓"), "Lead description updated");
154
209
  }
155
210
  }
156
211
  catch (err) {
157
212
  handleError(err);
158
213
  }
159
214
  });
160
- // --- status ---
161
215
  const statusCommand = new Command("status")
162
216
  .description("Update lead status")
163
217
  .argument("<id>", "Lead ID")
164
218
  .argument("<status>", "New status")
219
+ .option("--reason <text>", "Reason for status change")
165
220
  .option("--json", "Output as JSON")
166
221
  .action(async (id, status, opts) => {
167
222
  try {
168
- const data = await api.post(`/leads/${id}/status`, { status });
223
+ const payload = { status };
224
+ if (opts.reason !== undefined)
225
+ payload.reason = opts.reason;
226
+ const data = await api.post(`/leads/${id}/status`, payload);
169
227
  if (opts.json) {
170
228
  console.log(JSON.stringify(data, null, 2));
171
229
  }
172
230
  else {
173
- console.log(chalk.green("\u2713"), `Lead status updated to ${chalk.bold(status)}`);
231
+ console.log(chalk.green("✓"), `Lead status updated to ${chalk.bold(status)}`);
174
232
  }
175
233
  }
176
234
  catch (err) {
177
235
  handleError(err);
178
236
  }
179
237
  });
180
- // --- archive ---
181
238
  const archiveCommand = new Command("archive")
182
239
  .description("Archive a lead")
183
240
  .argument("<id>", "Lead ID")
@@ -191,14 +248,13 @@ const archiveCommand = new Command("archive")
191
248
  console.log(JSON.stringify(data, null, 2));
192
249
  }
193
250
  else {
194
- console.log(chalk.green("\u2713"), "Lead archived");
251
+ console.log(chalk.green("✓"), "Lead archived");
195
252
  }
196
253
  }
197
254
  catch (err) {
198
255
  handleError(err);
199
256
  }
200
257
  });
201
- // --- unarchive ---
202
258
  const unarchiveCommand = new Command("unarchive")
203
259
  .description("Unarchive a lead")
204
260
  .argument("<id>", "Lead ID")
@@ -212,14 +268,13 @@ const unarchiveCommand = new Command("unarchive")
212
268
  console.log(JSON.stringify(data, null, 2));
213
269
  }
214
270
  else {
215
- console.log(chalk.green("\u2713"), "Lead unarchived");
271
+ console.log(chalk.green("✓"), "Lead unarchived");
216
272
  }
217
273
  }
218
274
  catch (err) {
219
275
  handleError(err);
220
276
  }
221
277
  });
222
- // --- metadata ---
223
278
  const metadataCommand = new Command("metadata")
224
279
  .description("Update lead metadata")
225
280
  .argument("<id>", "Lead ID")
@@ -228,21 +283,54 @@ const metadataCommand = new Command("metadata")
228
283
  .action(async (id, jsonStr, opts) => {
229
284
  try {
230
285
  const metadata = jsonStr === "null" ? null : JSON.parse(jsonStr);
231
- const data = await api.post(`/leads/${id}/metadata`, {
232
- metadata,
233
- });
286
+ const data = await api.post(`/leads/${id}/metadata`, { metadata });
234
287
  if (opts.json) {
235
288
  console.log(JSON.stringify(data, null, 2));
236
289
  }
237
290
  else {
238
- console.log(chalk.green("\u2713"), "Lead metadata updated");
291
+ console.log(chalk.green("✓"), "Lead metadata updated");
292
+ }
293
+ }
294
+ catch (err) {
295
+ handleError(err);
296
+ }
297
+ });
298
+ const rateCommand = new Command("rate")
299
+ .description("Queue a job to rate this lead")
300
+ .argument("<id>", "Lead ID")
301
+ .option("--json", "Output as JSON")
302
+ .action(async (id, opts) => {
303
+ try {
304
+ const job = await api.post(`/leads/${id}/rate`, {});
305
+ if (opts.json) {
306
+ console.log(JSON.stringify(job, null, 2));
307
+ }
308
+ else {
309
+ console.log(chalk.green("✓"), `Rate job queued: ${chalk.bold(job.id)} [${job.status}]`);
310
+ }
311
+ }
312
+ catch (err) {
313
+ handleError(err);
314
+ }
315
+ });
316
+ const proposalCommand = new Command("proposal")
317
+ .description("Queue a job to draft a proposal for this lead")
318
+ .argument("<id>", "Lead ID")
319
+ .option("--json", "Output as JSON")
320
+ .action(async (id, opts) => {
321
+ try {
322
+ const job = await api.post(`/leads/${id}/proposal`, {});
323
+ if (opts.json) {
324
+ console.log(JSON.stringify(job, null, 2));
325
+ }
326
+ else {
327
+ console.log(chalk.green("✓"), `Proposal job queued: ${chalk.bold(job.id)} [${job.status}]`);
239
328
  }
240
329
  }
241
330
  catch (err) {
242
331
  handleError(err);
243
332
  }
244
333
  });
245
- // --- delete ---
246
334
  const deleteCommand = new Command("delete")
247
335
  .description("Delete a lead")
248
336
  .argument("<id>", "Lead ID")
@@ -254,23 +342,27 @@ const deleteCommand = new Command("delete")
254
342
  console.log(JSON.stringify({ deleted: true, id }));
255
343
  }
256
344
  else {
257
- console.log(chalk.green("\u2713"), "Lead deleted");
345
+ console.log(chalk.green("✓"), "Lead deleted");
258
346
  }
259
347
  }
260
348
  catch (err) {
261
349
  handleError(err);
262
350
  }
263
351
  });
264
- // --- parent ---
265
352
  export const leadCommand = new Command("lead")
266
353
  .description("Manage leads")
267
354
  .addCommand(listCommand)
355
+ .addCommand(statsCommand)
268
356
  .addCommand(getCommand)
269
357
  .addCommand(createCommand)
270
358
  .addCommand(updateCommand)
359
+ .addCommand(titleCommand)
360
+ .addCommand(descriptionCommand)
271
361
  .addCommand(statusCommand)
272
362
  .addCommand(archiveCommand)
273
363
  .addCommand(unarchiveCommand)
274
364
  .addCommand(metadataCommand)
365
+ .addCommand(rateCommand)
366
+ .addCommand(proposalCommand)
275
367
  .addCommand(deleteCommand);
276
- //# sourceMappingURL=lead.js.map
368
+ //# sourceMappingURL=leads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leads.js","sourceRoot":"","sources":["../../../src/commands/api/leads.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import { Command } from "commander";
2
2
  import chalk from "chalk";
3
- import { api } from "../lib/api.js";
4
- import { printList, printDetail, handleError } from "../lib/format.js";
5
- // --- list ---
3
+ import { api } from "../../lib/api.js";
4
+ import { printList, printDetail, handleError } from "../../lib/format.js";
6
5
  const listCommand = new Command("list")
7
6
  .description("List all organizations")
8
7
  .option("--search <query>", "Search by name")
@@ -26,7 +25,6 @@ const listCommand = new Command("list")
26
25
  handleError(err);
27
26
  }
28
27
  });
29
- // --- get ---
30
28
  const getCommand = new Command("get")
31
29
  .description("Get organization details")
32
30
  .argument("<id>", "Organization ID")
@@ -43,7 +41,6 @@ const getCommand = new Command("get")
43
41
  { key: "id", label: "ID" },
44
42
  { key: "address", label: "Address" },
45
43
  { key: "website", label: "Website" },
46
- { key: "notes", label: "Notes" },
47
44
  { key: "createdAt", label: "Created" },
48
45
  { key: "updatedAt", label: "Updated" },
49
46
  ], opts);
@@ -59,13 +56,11 @@ const getCommand = new Command("get")
59
56
  handleError(err);
60
57
  }
61
58
  });
62
- // --- create ---
63
59
  const createCommand = new Command("create")
64
60
  .description("Create a new organization")
65
61
  .requiredOption("--name <name>", "Organization name")
66
62
  .option("--address <address>", "Address")
67
63
  .option("--website <url>", "Website URL")
68
- .option("--notes <notes>", "Notes (markdown)")
69
64
  .option("--json", "Output as JSON")
70
65
  .action(async (opts) => {
71
66
  try {
@@ -73,7 +68,6 @@ const createCommand = new Command("create")
73
68
  name: opts.name,
74
69
  address: opts.address,
75
70
  website: opts.website,
76
- notes: opts.notes,
77
71
  });
78
72
  if (opts.json) {
79
73
  console.log(JSON.stringify(data, null, 2));
@@ -86,20 +80,22 @@ const createCommand = new Command("create")
86
80
  handleError(err);
87
81
  }
88
82
  });
89
- // --- update ---
90
83
  const updateCommand = new Command("update")
91
84
  .description("Update an organization")
92
85
  .argument("<id>", "Organization ID")
93
86
  .option("--name <name>", "Organization name")
94
87
  .option("--address <address>", "Address")
95
88
  .option("--website <url>", "Website URL")
96
- .option("--notes <notes>", "Notes (markdown)")
97
89
  .option("--json", "Output as JSON")
98
90
  .action(async (id, opts) => {
99
91
  try {
100
- const { json: _, ...fields } = opts;
101
- void _;
102
- const payload = Object.fromEntries(Object.entries(fields).filter(([, v]) => v !== undefined));
92
+ const payload = {};
93
+ if (opts.name !== undefined)
94
+ payload.name = opts.name;
95
+ if (opts.address !== undefined)
96
+ payload.address = opts.address;
97
+ if (opts.website !== undefined)
98
+ payload.website = opts.website;
103
99
  const data = await api.post(`/organizations/${id}`, payload);
104
100
  if (opts.json) {
105
101
  console.log(JSON.stringify(data, null, 2));
@@ -112,29 +108,6 @@ const updateCommand = new Command("update")
112
108
  handleError(err);
113
109
  }
114
110
  });
115
- // --- notes ---
116
- const notesCommand = new Command("notes")
117
- .description("Update organization notes")
118
- .argument("<id>", "Organization ID")
119
- .option("--notes <notes>", "Notes (markdown), omit to clear")
120
- .option("--json", "Output as JSON")
121
- .action(async (id, opts) => {
122
- try {
123
- const data = await api.post(`/organizations/${id}/notes`, {
124
- notes: opts.notes ?? null,
125
- });
126
- if (opts.json) {
127
- console.log(JSON.stringify(data, null, 2));
128
- }
129
- else {
130
- console.log(chalk.green("✓"), opts.notes ? "Notes updated" : "Notes cleared");
131
- }
132
- }
133
- catch (err) {
134
- handleError(err);
135
- }
136
- });
137
- // --- delete ---
138
111
  const deleteCommand = new Command("delete")
139
112
  .description("Delete an organization")
140
113
  .argument("<id>", "Organization ID")
@@ -153,7 +126,6 @@ const deleteCommand = new Command("delete")
153
126
  handleError(err);
154
127
  }
155
128
  });
156
- // --- link-person ---
157
129
  const linkPersonCommand = new Command("link-person")
158
130
  .description("Link a person to this organization")
159
131
  .argument("<id>", "Organization ID")
@@ -177,7 +149,26 @@ const linkPersonCommand = new Command("link-person")
177
149
  handleError(err);
178
150
  }
179
151
  });
180
- // --- unlink-person ---
152
+ const updatePersonRoleCommand = new Command("update-person-role")
153
+ .description("Update a linked person's role")
154
+ .argument("<id>", "Organization ID")
155
+ .requiredOption("--person <personId>", "Person ID")
156
+ .option("--role <role>", "New role (omit to clear)")
157
+ .option("--json", "Output as JSON")
158
+ .action(async (id, opts) => {
159
+ try {
160
+ const data = await api.post(`/organizations/${id}/persons/${opts.person}`, { role: opts.role ?? null });
161
+ if (opts.json) {
162
+ console.log(JSON.stringify(data, null, 2));
163
+ }
164
+ else {
165
+ console.log(chalk.green("✓"), "Role updated");
166
+ }
167
+ }
168
+ catch (err) {
169
+ handleError(err);
170
+ }
171
+ });
181
172
  const unlinkPersonCommand = new Command("unlink-person")
182
173
  .description("Unlink a person from this organization")
183
174
  .argument("<id>", "Organization ID")
@@ -197,15 +188,14 @@ const unlinkPersonCommand = new Command("unlink-person")
197
188
  handleError(err);
198
189
  }
199
190
  });
200
- // --- parent ---
201
191
  export const organizationCommand = new Command("organization")
202
192
  .description("Manage organizations")
203
193
  .addCommand(listCommand)
204
194
  .addCommand(getCommand)
205
195
  .addCommand(createCommand)
206
196
  .addCommand(updateCommand)
207
- .addCommand(notesCommand)
208
197
  .addCommand(deleteCommand)
209
198
  .addCommand(linkPersonCommand)
199
+ .addCommand(updatePersonRoleCommand)
210
200
  .addCommand(unlinkPersonCommand);
211
- //# sourceMappingURL=organization.js.map
201
+ //# sourceMappingURL=organizations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"organizations.js","sourceRoot":"","sources":["../../../src/commands/api/organizations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAiB1E,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KACpC,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;KAC5C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,IAAyC,EAAE,EAAE;IAC1D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CACxB,iBAAiB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACtC,CAAC;QAEF,SAAS,CACP,IAA4C,EAC5C;YACE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YACzC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;YAC/C,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;YAC/C,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;YACnD,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;SAClD,EACD,IAAI,CACL,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,UAAU,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KAClC,WAAW,CAAC,0BAA0B,CAAC;KACvC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;KACnC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAAwB,EAAE,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAqB,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAEvE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACnC,WAAW,CACT,IAA0C,EAC1C;YACE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;YAC1B,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;YACpC,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;YACpC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;YACtC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;SACvC,EACD,IAAI,CACL,CAAC;QAEF,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;YAChE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KACxC,WAAW,CAAC,2BAA2B,CAAC;KACxC,cAAc,CAAC,eAAe,EAAE,mBAAmB,CAAC;KACpD,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC;KACxC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;KACxC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CACL,KAAK,EAAE,IAKN,EAAE,EAAE;IACH,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAe,gBAAgB,EAAE;YAC1D,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAChB,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,GAAG,CAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KACxC,WAAW,CAAC,wBAAwB,CAAC;KACrC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;KACnC,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC;KAC5C,MAAM,CAAC,qBAAqB,EAAE,SAAS,CAAC;KACxC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;KACxC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CACL,KAAK,EACH,EAAU,EACV,IAKC,EACD,EAAE;IACF,IAAI,CAAC;QACH,MAAM,OAAO,GAA4B,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC/D,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE/D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CACzB,kBAAkB,EAAE,EAAE,EACtB,OAAO,CACR,CAAC;QAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAChB,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjD,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KACxC,WAAW,CAAC,wBAAwB,CAAC;KACrC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;KACnC,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAAwB,EAAE,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,MAAM,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QAEzC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,sBAAsB,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC;KACjD,WAAW,CAAC,oCAAoC,CAAC;KACjD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;KACnC,cAAc,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;KAC1D,MAAM,CAAC,eAAe,EAAE,sCAAsC,CAAC;KAC/D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CACL,KAAK,EACH,EAAU,EACV,IAAuD,EACvD,EAAE;IACF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,EAAE;YAC1D,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,+BAA+B,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,MAAM,uBAAuB,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC;KAC9D,WAAW,CAAC,+BAA+B,CAAC;KAC5C,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;KACnC,cAAc,CAAC,qBAAqB,EAAE,WAAW,CAAC;KAClD,MAAM,CAAC,eAAe,EAAE,0BAA0B,CAAC;KACnD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CACL,KAAK,EACH,EAAU,EACV,IAAuD,EACvD,EAAE;IACF,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CACzB,kBAAkB,EAAE,YAAY,IAAI,CAAC,MAAM,EAAE,EAC7C,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAC5B,CAAC;QAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CACF,CAAC;AAEJ,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC;KACrD,WAAW,CAAC,wCAAwC,CAAC;KACrD,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;KACnC,cAAc,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;KAC5D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAAwC,EAAE,EAAE;IACrE,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,MAAM,CAAC,kBAAkB,EAAE,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAEhE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,mCAAmC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC;KAC3D,WAAW,CAAC,sBAAsB,CAAC;KACnC,UAAU,CAAC,WAAW,CAAC;KACvB,UAAU,CAAC,UAAU,CAAC;KACtB,UAAU,CAAC,aAAa,CAAC;KACzB,UAAU,CAAC,aAAa,CAAC;KACzB,UAAU,CAAC,aAAa,CAAC;KACzB,UAAU,CAAC,iBAAiB,CAAC;KAC7B,UAAU,CAAC,uBAAuB,CAAC;KACnC,UAAU,CAAC,mBAAmB,CAAC,CAAC"}
@@ -1,13 +1,13 @@
1
1
  import { Command } from "commander";
2
2
  import chalk from "chalk";
3
- import { api } from "../lib/api.js";
4
- import { printList, printDetail, handleError } from "../lib/format.js";
5
- // --- list ---
3
+ import { api } from "../../lib/api.js";
4
+ import { printList, printDetail, handleError } from "../../lib/format.js";
6
5
  const listCommand = new Command("list")
7
6
  .description("List pages")
8
7
  .option("--project <projectId>", "Filter by project")
9
8
  .option("--lead <leadId>", "Filter by lead")
10
9
  .option("--organization <organizationId>", "Filter by organization")
10
+ .option("--folder <folderId>", "Filter by folder")
11
11
  .option("--json", "Output as JSON")
12
12
  .action(async (opts) => {
13
13
  try {
@@ -18,6 +18,8 @@ const listCommand = new Command("list")
18
18
  params.set("leadId", opts.lead);
19
19
  if (opts.organization)
20
20
  params.set("organizationId", opts.organization);
21
+ if (opts.folder)
22
+ params.set("folderId", opts.folder);
21
23
  const qs = params.toString();
22
24
  const data = await api.get(`/pages${qs ? `?${qs}` : ""}`);
23
25
  printList(data, [
@@ -30,7 +32,6 @@ const listCommand = new Command("list")
30
32
  handleError(err);
31
33
  }
32
34
  });
33
- // --- get ---
34
35
  const getCommand = new Command("get")
35
36
  .description("Get a page")
36
37
  .argument("<id>", "Page ID")
@@ -45,6 +46,7 @@ const getCommand = new Command("get")
45
46
  printDetail(data, [
46
47
  { key: "id", label: "ID" },
47
48
  { key: "title", label: "Title" },
49
+ { key: "folderId", label: "Folder" },
48
50
  { key: "createdAt", label: "Created" },
49
51
  { key: "updatedAt", label: "Updated" },
50
52
  ], opts);
@@ -57,7 +59,6 @@ const getCommand = new Command("get")
57
59
  handleError(err);
58
60
  }
59
61
  });
60
- // --- create ---
61
62
  const createCommand = new Command("create")
62
63
  .description("Create a page")
63
64
  .requiredOption("--title <title>", "Page title")
@@ -65,12 +66,11 @@ const createCommand = new Command("create")
65
66
  .option("--project <projectId>", "Link to project")
66
67
  .option("--lead <leadId>", "Link to lead")
67
68
  .option("--organization <organizationId>", "Link to organization")
69
+ .option("--folder <folderId>", "Place inside this folder")
68
70
  .option("--json", "Output as JSON")
69
71
  .action(async (opts) => {
70
72
  try {
71
- const payload = {
72
- title: opts.title,
73
- };
73
+ const payload = { title: opts.title };
74
74
  if (opts.body)
75
75
  payload.body = opts.body;
76
76
  if (opts.project)
@@ -79,6 +79,8 @@ const createCommand = new Command("create")
79
79
  payload.leadId = opts.lead;
80
80
  if (opts.organization)
81
81
  payload.organizationId = opts.organization;
82
+ if (opts.folder)
83
+ payload.folderId = opts.folder;
82
84
  const data = await api.post("/pages", payload);
83
85
  if (opts.json) {
84
86
  console.log(JSON.stringify(data, null, 2));
@@ -91,8 +93,7 @@ const createCommand = new Command("create")
91
93
  handleError(err);
92
94
  }
93
95
  });
94
- // --- update-title ---
95
- const updateTitleCommand = new Command("update-title")
96
+ const titleCommand = new Command("title")
96
97
  .description("Update page title")
97
98
  .argument("<id>", "Page ID")
98
99
  .argument("<title>", "New title")
@@ -111,8 +112,7 @@ const updateTitleCommand = new Command("update-title")
111
112
  handleError(err);
112
113
  }
113
114
  });
114
- // --- update-body ---
115
- const updateBodyCommand = new Command("update-body")
115
+ const bodyCommand = new Command("body")
116
116
  .description("Update page body")
117
117
  .argument("<id>", "Page ID")
118
118
  .argument("<body>", "New body (markdown)")
@@ -124,14 +124,56 @@ const updateBodyCommand = new Command("update-body")
124
124
  console.log(JSON.stringify(data, null, 2));
125
125
  }
126
126
  else {
127
- console.log(chalk.green("✓"), `Page body updated`);
127
+ console.log(chalk.green("✓"), "Page body updated");
128
+ }
129
+ }
130
+ catch (err) {
131
+ handleError(err);
132
+ }
133
+ });
134
+ const folderCommand = new Command("folder")
135
+ .description("Move page to a different folder")
136
+ .argument("<id>", "Page ID")
137
+ .argument("<folderId>", 'Target folder ID ("null" to remove from folder)')
138
+ .option("--json", "Output as JSON")
139
+ .action(async (id, folderId, opts) => {
140
+ try {
141
+ const value = folderId === "null" ? null : folderId;
142
+ const data = await api.post(`/pages/${id}/folder`, {
143
+ folderId: value,
144
+ });
145
+ if (opts.json) {
146
+ console.log(JSON.stringify(data, null, 2));
147
+ }
148
+ else {
149
+ console.log(chalk.green("✓"), "Page moved");
150
+ }
151
+ }
152
+ catch (err) {
153
+ handleError(err);
154
+ }
155
+ });
156
+ const reviseProposalCommand = new Command("revise-proposal")
157
+ .description("Queue a job to revise a proposal page")
158
+ .argument("<id>", "Page ID")
159
+ .argument("<instructions>", "Revision instructions")
160
+ .option("--json", "Output as JSON")
161
+ .action(async (id, instructions, opts) => {
162
+ try {
163
+ const job = await api.post(`/pages/${id}/revise-proposal`, {
164
+ instructions,
165
+ });
166
+ if (opts.json) {
167
+ console.log(JSON.stringify(job, null, 2));
168
+ }
169
+ else {
170
+ console.log(chalk.green("✓"), `Revision job queued: ${chalk.bold(job.id)} [${job.status}]`);
128
171
  }
129
172
  }
130
173
  catch (err) {
131
174
  handleError(err);
132
175
  }
133
176
  });
134
- // --- delete ---
135
177
  const deleteCommand = new Command("delete")
136
178
  .description("Delete a page")
137
179
  .argument("<id>", "Page ID")
@@ -143,20 +185,21 @@ const deleteCommand = new Command("delete")
143
185
  console.log(JSON.stringify({ id }, null, 2));
144
186
  }
145
187
  else {
146
- console.log(chalk.green("✓"), `Page deleted`);
188
+ console.log(chalk.green("✓"), "Page deleted");
147
189
  }
148
190
  }
149
191
  catch (err) {
150
192
  handleError(err);
151
193
  }
152
194
  });
153
- // --- page (parent) ---
154
195
  export const pageCommand = new Command("page")
155
196
  .description("Manage pages")
156
197
  .addCommand(listCommand)
157
198
  .addCommand(getCommand)
158
199
  .addCommand(createCommand)
159
- .addCommand(updateTitleCommand)
160
- .addCommand(updateBodyCommand)
200
+ .addCommand(titleCommand)
201
+ .addCommand(bodyCommand)
202
+ .addCommand(folderCommand)
203
+ .addCommand(reviseProposalCommand)
161
204
  .addCommand(deleteCommand);
162
- //# sourceMappingURL=page.js.map
205
+ //# sourceMappingURL=pages.js.map