@itznexus/itznexus-cli 1.4.0 → 1.6.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 (99) hide show
  1. package/dist/commands/{claude.js → agents/claude.js} +5 -62
  2. package/dist/commands/agents/claude.js.map +1 -0
  3. package/dist/commands/api/audit-logs.d.ts +2 -0
  4. package/dist/commands/api/audit-logs.js +66 -0
  5. package/dist/commands/api/audit-logs.js.map +1 -0
  6. package/dist/commands/{auth.js → api/auth.js} +2 -10
  7. package/dist/commands/api/auth.js.map +1 -0
  8. package/dist/commands/api/claude-events.d.ts +2 -0
  9. package/dist/commands/api/claude-events.js +104 -0
  10. package/dist/commands/api/claude-events.js.map +1 -0
  11. package/dist/commands/api/files.d.ts +2 -0
  12. package/dist/commands/api/files.js +166 -0
  13. package/dist/commands/api/files.js.map +1 -0
  14. package/dist/commands/api/folders.d.ts +2 -0
  15. package/dist/commands/api/folders.js +153 -0
  16. package/dist/commands/api/folders.js.map +1 -0
  17. package/dist/commands/api/github-accounts.d.ts +2 -0
  18. package/dist/commands/api/github-accounts.js +99 -0
  19. package/dist/commands/api/github-accounts.js.map +1 -0
  20. package/dist/commands/api/gmail-accounts.d.ts +2 -0
  21. package/dist/commands/api/gmail-accounts.js +117 -0
  22. package/dist/commands/api/gmail-accounts.js.map +1 -0
  23. package/dist/commands/{health.js → api/health.js} +2 -2
  24. package/dist/commands/api/health.js.map +1 -0
  25. package/dist/commands/{interaction.js → api/interactions.js} +6 -13
  26. package/dist/commands/api/interactions.js.map +1 -0
  27. package/dist/commands/api/jobs.d.ts +2 -0
  28. package/dist/commands/api/jobs.js +90 -0
  29. package/dist/commands/api/jobs.js.map +1 -0
  30. package/dist/commands/{lead.js → api/leads.js} +119 -27
  31. package/dist/commands/api/leads.js.map +1 -0
  32. package/dist/commands/{organization.js → api/organizations.js} +31 -41
  33. package/dist/commands/api/organizations.js.map +1 -0
  34. package/dist/commands/{page.js → api/pages.js} +62 -19
  35. package/dist/commands/api/pages.js.map +1 -0
  36. package/dist/commands/{person.js → api/persons.js} +67 -47
  37. package/dist/commands/api/persons.js.map +1 -0
  38. package/dist/commands/{pipeline.js → api/pipelines.js} +3 -3
  39. package/dist/commands/api/pipelines.js.map +1 -0
  40. package/dist/commands/api/projects.js +333 -0
  41. package/dist/commands/api/projects.js.map +1 -0
  42. package/dist/commands/api/repositories.d.ts +2 -0
  43. package/dist/commands/api/repositories.js +118 -0
  44. package/dist/commands/api/repositories.js.map +1 -0
  45. package/dist/commands/api/settings.d.ts +2 -0
  46. package/dist/commands/api/settings.js +79 -0
  47. package/dist/commands/api/settings.js.map +1 -0
  48. package/dist/commands/api/short-links.d.ts +2 -0
  49. package/dist/commands/api/short-links.js +102 -0
  50. package/dist/commands/api/short-links.js.map +1 -0
  51. package/dist/commands/{sprint.js → api/sprints.js} +37 -22
  52. package/dist/commands/api/sprints.js.map +1 -0
  53. package/dist/commands/{task.js → api/tasks.js} +78 -19
  54. package/dist/commands/api/tasks.js.map +1 -0
  55. package/dist/commands/api/upwork-job-notifications.d.ts +2 -0
  56. package/dist/commands/api/upwork-job-notifications.js +85 -0
  57. package/dist/commands/api/upwork-job-notifications.js.map +1 -0
  58. package/dist/commands/api/users.js +224 -0
  59. package/dist/commands/api/users.js.map +1 -0
  60. package/dist/commands/api/website-scrapes.d.ts +2 -0
  61. package/dist/commands/api/website-scrapes.js +118 -0
  62. package/dist/commands/api/website-scrapes.js.map +1 -0
  63. package/dist/commands/api/youtube-productions.d.ts +2 -0
  64. package/dist/commands/api/youtube-productions.js +521 -0
  65. package/dist/commands/api/youtube-productions.js.map +1 -0
  66. package/dist/commands/api/youtube-videos.d.ts +2 -0
  67. package/dist/commands/api/youtube-videos.js +111 -0
  68. package/dist/commands/api/youtube-videos.js.map +1 -0
  69. package/dist/index.js +99 -41
  70. package/dist/index.js.map +1 -1
  71. package/package.json +1 -1
  72. package/dist/commands/auth.js.map +0 -1
  73. package/dist/commands/claude.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/{claude.d.ts → agents/claude.d.ts} +0 -0
  88. /package/dist/commands/{auth.d.ts → api/auth.d.ts} +0 -0
  89. /package/dist/commands/{health.d.ts → api/health.d.ts} +0 -0
  90. /package/dist/commands/{interaction.d.ts → api/interactions.d.ts} +0 -0
  91. /package/dist/commands/{lead.d.ts → api/leads.d.ts} +0 -0
  92. /package/dist/commands/{organization.d.ts → api/organizations.d.ts} +0 -0
  93. /package/dist/commands/{page.d.ts → api/pages.d.ts} +0 -0
  94. /package/dist/commands/{person.d.ts → api/persons.d.ts} +0 -0
  95. /package/dist/commands/{pipeline.d.ts → api/pipelines.d.ts} +0 -0
  96. /package/dist/commands/{project.d.ts → api/projects.d.ts} +0 -0
  97. /package/dist/commands/{sprint.d.ts → api/sprints.d.ts} +0 -0
  98. /package/dist/commands/{task.d.ts → api/tasks.d.ts} +0 -0
  99. /package/dist/commands/{user.d.ts → api/users.d.ts} +0 -0
@@ -0,0 +1,118 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { api } from "../../lib/api.js";
4
+ import { printList, printDetail, handleError } from "../../lib/format.js";
5
+ const listCommand = new Command("list")
6
+ .description("List repositories in the catalog")
7
+ .option("--search <query>", "Filter by name or description")
8
+ .option("--project <projectId>", "Only repos attached to a project")
9
+ .option("--view <view>", "active | ignored | archived | all (default: active)", "active")
10
+ .option("--json", "Output as JSON")
11
+ .action(async (opts) => {
12
+ try {
13
+ const params = new URLSearchParams();
14
+ if (opts.search)
15
+ params.set("search", opts.search);
16
+ if (opts.project)
17
+ params.set("projectId", opts.project);
18
+ if (opts.view)
19
+ params.set("view", opts.view);
20
+ const qs = params.toString();
21
+ const data = await api.get(`/repositories${qs ? `?${qs}` : ""}`);
22
+ printList(data, [
23
+ { key: "fullName", label: "Repo", width: 40 },
24
+ { key: "defaultBranch", label: "Branch", width: 16 },
25
+ { key: "private", label: "Private", width: 10 },
26
+ { key: "archived", label: "Archived", width: 10 },
27
+ { key: "ignored", label: "Ignored", width: 10 },
28
+ { key: "lastSyncedAt", label: "Synced", width: 24 },
29
+ ], opts);
30
+ }
31
+ catch (err) {
32
+ handleError(err);
33
+ }
34
+ });
35
+ const ignoreCommand = new Command("ignore")
36
+ .description("Hide a repository from project pickers")
37
+ .argument("<id>", "Repository ID")
38
+ .option("--json", "Output as JSON")
39
+ .action(async (id, opts) => {
40
+ try {
41
+ const data = await api.post(`/repositories/${id}/ignore`, {});
42
+ if (opts.json)
43
+ console.log(JSON.stringify(data, null, 2));
44
+ else
45
+ console.log(chalk.green("✓"), `Ignored ${chalk.bold(data.fullName)}`);
46
+ }
47
+ catch (err) {
48
+ handleError(err);
49
+ }
50
+ });
51
+ const unignoreCommand = new Command("unignore")
52
+ .description("Restore a repository to project pickers")
53
+ .argument("<id>", "Repository ID")
54
+ .option("--json", "Output as JSON")
55
+ .action(async (id, opts) => {
56
+ try {
57
+ const data = await api.post(`/repositories/${id}/unignore`, {});
58
+ if (opts.json)
59
+ console.log(JSON.stringify(data, null, 2));
60
+ else
61
+ console.log(chalk.green("✓"), `Restored ${chalk.bold(data.fullName)}`);
62
+ }
63
+ catch (err) {
64
+ handleError(err);
65
+ }
66
+ });
67
+ const getCommand = new Command("get")
68
+ .description("Get a repository")
69
+ .argument("<id>", "Repository ID")
70
+ .option("--json", "Output as JSON")
71
+ .action(async (id, opts) => {
72
+ try {
73
+ const data = await api.get(`/repositories/${id}`);
74
+ if (opts.json) {
75
+ console.log(JSON.stringify(data, null, 2));
76
+ return;
77
+ }
78
+ console.log(chalk.bold(data.fullName));
79
+ printDetail(data, [
80
+ { key: "id", label: "ID" },
81
+ { key: "url", label: "URL" },
82
+ { key: "defaultBranch", label: "Default branch" },
83
+ { key: "description", label: "Description" },
84
+ { key: "private", label: "Private" },
85
+ { key: "archived", label: "Archived" },
86
+ { key: "fork", label: "Fork" },
87
+ { key: "lastSyncedAt", label: "Last synced" },
88
+ ], opts);
89
+ }
90
+ catch (err) {
91
+ handleError(err);
92
+ }
93
+ });
94
+ const syncCommand = new Command("sync")
95
+ .description("Sync the workspace catalog from GitHub")
96
+ .option("--json", "Output as JSON")
97
+ .action(async (opts) => {
98
+ try {
99
+ const data = await api.post("/repositories/sync", {});
100
+ if (opts.json) {
101
+ console.log(JSON.stringify(data, null, 2));
102
+ }
103
+ else {
104
+ console.log(chalk.green("✓"), `Synced ${data.upserted} repo(s)`, data.stale > 0 ? chalk.dim(`(${data.stale} archived as stale)`) : "");
105
+ }
106
+ }
107
+ catch (err) {
108
+ handleError(err);
109
+ }
110
+ });
111
+ export const repositoryCommand = new Command("repository")
112
+ .description("Manage GitHub repository catalog")
113
+ .addCommand(listCommand)
114
+ .addCommand(getCommand)
115
+ .addCommand(syncCommand)
116
+ .addCommand(ignoreCommand)
117
+ .addCommand(unignoreCommand);
118
+ //# sourceMappingURL=repositories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositories.js","sourceRoot":"","sources":["../../../src/commands/api/repositories.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const settingCommand: Command;
@@ -0,0 +1,79 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { api } from "../../lib/api.js";
4
+ import { printList, handleError } from "../../lib/format.js";
5
+ const listCommand = new Command("list")
6
+ .description("List all workspace settings")
7
+ .option("--json", "Output as JSON")
8
+ .action(async (opts) => {
9
+ try {
10
+ const data = await api.get("/settings");
11
+ printList(data, [
12
+ { key: "key", label: "Key", width: 40 },
13
+ { key: "value", label: "Value", width: 50 },
14
+ { key: "updatedAt", label: "Updated", width: 24 },
15
+ ], opts);
16
+ }
17
+ catch (err) {
18
+ handleError(err);
19
+ }
20
+ });
21
+ const getCommand = new Command("get")
22
+ .description("Get a setting by key")
23
+ .argument("<key>", "Setting key")
24
+ .option("--json", "Output as JSON")
25
+ .action(async (key, opts) => {
26
+ try {
27
+ const data = await api.get(`/settings/${encodeURIComponent(key)}`);
28
+ console.log(JSON.stringify(data, null, 2));
29
+ void opts;
30
+ }
31
+ catch (err) {
32
+ handleError(err);
33
+ }
34
+ });
35
+ const setCommand = new Command("set")
36
+ .description("Set or update a setting value")
37
+ .argument("<key>", "Setting key")
38
+ .argument("<value>", "Value (JSON-encoded)")
39
+ .option("--json", "Output as JSON")
40
+ .action(async (key, value, opts) => {
41
+ try {
42
+ const parsed = JSON.parse(value);
43
+ const data = await api.post(`/settings/${encodeURIComponent(key)}`, { value: parsed });
44
+ if (opts.json) {
45
+ console.log(JSON.stringify(data, null, 2));
46
+ }
47
+ else {
48
+ console.log(chalk.green("✓"), `Setting ${chalk.bold(key)} updated`);
49
+ }
50
+ }
51
+ catch (err) {
52
+ handleError(err);
53
+ }
54
+ });
55
+ const deleteCommand = new Command("delete")
56
+ .description("Delete a setting")
57
+ .argument("<key>", "Setting key")
58
+ .option("--json", "Output as JSON")
59
+ .action(async (key, opts) => {
60
+ try {
61
+ await api.delete(`/settings/${encodeURIComponent(key)}`);
62
+ if (opts.json) {
63
+ console.log(JSON.stringify({ deleted: true, key }));
64
+ }
65
+ else {
66
+ console.log(chalk.green("✓"), `Setting ${chalk.bold(key)} deleted`);
67
+ }
68
+ }
69
+ catch (err) {
70
+ handleError(err);
71
+ }
72
+ });
73
+ export const settingCommand = new Command("setting")
74
+ .description("Manage workspace settings")
75
+ .addCommand(listCommand)
76
+ .addCommand(getCommand)
77
+ .addCommand(setCommand)
78
+ .addCommand(deleteCommand);
79
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/commands/api/settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const shortLinkCommand: Command;
@@ -0,0 +1,102 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { api } from "../../lib/api.js";
4
+ import { printList, handleError } from "../../lib/format.js";
5
+ const SHORT_LINK_DOMAIN = "iwl.ink";
6
+ function shortUrl(code) {
7
+ return `https://${SHORT_LINK_DOMAIN}/${code}`;
8
+ }
9
+ const listCommand = new Command("list")
10
+ .description("List short links")
11
+ .option("--archived", "Show archived links instead of active")
12
+ .option("--json", "Output as JSON")
13
+ .action(async (opts) => {
14
+ try {
15
+ const params = new URLSearchParams();
16
+ params.set("archived", opts.archived ? "true" : "false");
17
+ const data = await api.get(`/short-links?${params}`);
18
+ const rows = data.map((link) => ({
19
+ ...link,
20
+ url: shortUrl(link.code),
21
+ }));
22
+ printList(rows, [
23
+ { key: "url", label: "Short URL", width: 28 },
24
+ { key: "destinationUrl", label: "Destination", width: 50 },
25
+ { key: "clickCount", label: "Clicks", width: 7 },
26
+ { key: "id", label: "ID", width: 38 },
27
+ ], opts);
28
+ }
29
+ catch (err) {
30
+ handleError(err);
31
+ }
32
+ });
33
+ const createCommand = new Command("create")
34
+ .description("Create a short link")
35
+ .argument("<destinationUrl>", "Where the short link redirects to")
36
+ .option("--code <code>", "Custom code (letters, digits, _ and -). Omit for auto-generated.")
37
+ .option("--notes <notes>", "Internal notes")
38
+ .option("--json", "Output as JSON")
39
+ .action(async (destinationUrl, opts) => {
40
+ try {
41
+ const payload = { destinationUrl };
42
+ if (opts.code !== undefined)
43
+ payload.code = opts.code;
44
+ if (opts.notes !== undefined)
45
+ payload.notes = opts.notes;
46
+ const data = await api.post("/short-links", payload);
47
+ if (opts.json) {
48
+ console.log(JSON.stringify({ ...data, url: shortUrl(data.code) }, null, 2));
49
+ }
50
+ else {
51
+ console.log(chalk.green("✓"), `Short link created: ${chalk.bold(shortUrl(data.code))}`);
52
+ console.log(chalk.dim(` ID: ${data.id}`));
53
+ console.log(chalk.dim(` → ${data.destinationUrl}`));
54
+ }
55
+ }
56
+ catch (err) {
57
+ handleError(err);
58
+ }
59
+ });
60
+ const archiveCommand = new Command("archive")
61
+ .description("Archive a short link (stops resolving; reversible)")
62
+ .argument("<id>", "Short link ID")
63
+ .option("--json", "Output as JSON")
64
+ .action(async (id, opts) => {
65
+ try {
66
+ const data = await api.post(`/short-links/${id}/archive`, {});
67
+ if (opts.json) {
68
+ console.log(JSON.stringify(data, null, 2));
69
+ }
70
+ else {
71
+ console.log(chalk.green("✓"), `Archived ${chalk.bold(shortUrl(data.code))}`);
72
+ }
73
+ }
74
+ catch (err) {
75
+ handleError(err);
76
+ }
77
+ });
78
+ const unarchiveCommand = new Command("unarchive")
79
+ .description("Restore an archived short link")
80
+ .argument("<id>", "Short link ID")
81
+ .option("--json", "Output as JSON")
82
+ .action(async (id, opts) => {
83
+ try {
84
+ const data = await api.post(`/short-links/${id}/unarchive`, {});
85
+ if (opts.json) {
86
+ console.log(JSON.stringify(data, null, 2));
87
+ }
88
+ else {
89
+ console.log(chalk.green("✓"), `Restored ${chalk.bold(shortUrl(data.code))}`);
90
+ }
91
+ }
92
+ catch (err) {
93
+ handleError(err);
94
+ }
95
+ });
96
+ export const shortLinkCommand = new Command("short-link")
97
+ .description("Manage short links (iwl.ink)")
98
+ .addCommand(listCommand)
99
+ .addCommand(createCommand)
100
+ .addCommand(archiveCommand)
101
+ .addCommand(unarchiveCommand);
102
+ //# sourceMappingURL=short-links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"short-links.js","sourceRoot":"","sources":["../../../src/commands/api/short-links.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
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 sprints for a project")
8
7
  .requiredOption("--project <projectId>", "Project ID")
9
8
  .option("--status <status>", "Filter by status")
9
+ .option("--search <query>", "Search by name")
10
10
  .option("--json", "Output as JSON")
11
11
  .action(async (opts) => {
12
12
  try {
@@ -14,6 +14,8 @@ const listCommand = new Command("list")
14
14
  params.set("projectId", opts.project);
15
15
  if (opts.status)
16
16
  params.set("status", opts.status);
17
+ if (opts.search)
18
+ params.set("search", opts.search);
17
19
  const data = await api.get(`/sprints?${params}`);
18
20
  printList(data, [
19
21
  { key: "name", label: "Name", width: 25 },
@@ -26,7 +28,6 @@ const listCommand = new Command("list")
26
28
  handleError(err);
27
29
  }
28
30
  });
29
- // --- get ---
30
31
  const getCommand = new Command("get")
31
32
  .description("Get sprint details")
32
33
  .argument("<id>", "Sprint ID")
@@ -59,7 +60,6 @@ const getCommand = new Command("get")
59
60
  handleError(err);
60
61
  }
61
62
  });
62
- // --- create ---
63
63
  const createCommand = new Command("create")
64
64
  .description("Create a new sprint")
65
65
  .requiredOption("--project <projectId>", "Project ID")
@@ -77,14 +77,13 @@ const createCommand = new Command("create")
77
77
  console.log(JSON.stringify(data, null, 2));
78
78
  }
79
79
  else {
80
- console.log(chalk.green("\u2713"), `Sprint created: ${chalk.bold(data.name)} (${data.id})`);
80
+ console.log(chalk.green("✓"), `Sprint created: ${chalk.bold(data.name)} (${data.id})`);
81
81
  }
82
82
  }
83
83
  catch (err) {
84
84
  handleError(err);
85
85
  }
86
86
  });
87
- // --- update ---
88
87
  const updateCommand = new Command("update")
89
88
  .description("Update a sprint")
90
89
  .argument("<id>", "Sprint ID")
@@ -103,40 +102,38 @@ const updateCommand = new Command("update")
103
102
  console.log(JSON.stringify(data, null, 2));
104
103
  }
105
104
  else {
106
- console.log(chalk.green("\u2713"), `Sprint updated: ${chalk.bold(data.name)}`);
105
+ console.log(chalk.green("✓"), `Sprint updated: ${chalk.bold(data.name)}`);
107
106
  }
108
107
  }
109
108
  catch (err) {
110
109
  handleError(err);
111
110
  }
112
111
  });
113
- // --- dates ---
114
112
  const datesCommand = new Command("dates")
115
113
  .description("Update sprint dates")
116
114
  .argument("<id>", "Sprint ID")
117
- .option("--start <date>", "Start date (ISO)")
118
- .option("--end <date>", "End date (ISO)")
115
+ .option("--start <date>", "Start date (ISO, or 'null' to clear)")
116
+ .option("--end <date>", "End date (ISO, or 'null' to clear)")
119
117
  .option("--json", "Output as JSON")
120
118
  .action(async (id, opts) => {
121
119
  try {
122
120
  const payload = {};
123
121
  if (opts.start !== undefined)
124
- payload.startDate = opts.start;
122
+ payload.startDate = opts.start === "null" ? null : opts.start;
125
123
  if (opts.end !== undefined)
126
- payload.endDate = opts.end;
124
+ payload.endDate = opts.end === "null" ? null : opts.end;
127
125
  const data = await api.post(`/sprints/${id}/dates`, payload);
128
126
  if (opts.json) {
129
127
  console.log(JSON.stringify(data, null, 2));
130
128
  }
131
129
  else {
132
- console.log(chalk.green("\u2713"), "Sprint dates updated");
130
+ console.log(chalk.green("✓"), "Sprint dates updated");
133
131
  }
134
132
  }
135
133
  catch (err) {
136
134
  handleError(err);
137
135
  }
138
136
  });
139
- // --- status ---
140
137
  const statusCommand = new Command("status")
141
138
  .description("Update sprint status")
142
139
  .argument("<id>", "Sprint ID")
@@ -144,21 +141,39 @@ const statusCommand = new Command("status")
144
141
  .option("--json", "Output as JSON")
145
142
  .action(async (id, status, opts) => {
146
143
  try {
147
- const data = await api.post(`/sprints/${id}/status`, {
148
- status,
144
+ const data = await api.post(`/sprints/${id}/status`, { status });
145
+ if (opts.json) {
146
+ console.log(JSON.stringify(data, null, 2));
147
+ }
148
+ else {
149
+ console.log(chalk.green("✓"), `Sprint status updated to ${chalk.bold(status)}`);
150
+ }
151
+ }
152
+ catch (err) {
153
+ handleError(err);
154
+ }
155
+ });
156
+ const positionCommand = new Command("position")
157
+ .description("Reorder sprint within its project")
158
+ .argument("<id>", "Sprint ID")
159
+ .argument("<position>", "New 0-based position", parseInt)
160
+ .option("--json", "Output as JSON")
161
+ .action(async (id, position, opts) => {
162
+ try {
163
+ const data = await api.post(`/sprints/${id}/position`, {
164
+ position,
149
165
  });
150
166
  if (opts.json) {
151
167
  console.log(JSON.stringify(data, null, 2));
152
168
  }
153
169
  else {
154
- console.log(chalk.green("\u2713"), `Sprint status updated to ${chalk.bold(status)}`);
170
+ console.log(chalk.green("✓"), "Sprint reordered");
155
171
  }
156
172
  }
157
173
  catch (err) {
158
174
  handleError(err);
159
175
  }
160
176
  });
161
- // --- delete ---
162
177
  const deleteCommand = new Command("delete")
163
178
  .description("Delete a sprint")
164
179
  .argument("<id>", "Sprint ID")
@@ -170,14 +185,13 @@ const deleteCommand = new Command("delete")
170
185
  console.log(JSON.stringify({ deleted: true, id }));
171
186
  }
172
187
  else {
173
- console.log(chalk.green("\u2713"), "Sprint deleted");
188
+ console.log(chalk.green("✓"), "Sprint deleted");
174
189
  }
175
190
  }
176
191
  catch (err) {
177
192
  handleError(err);
178
193
  }
179
194
  });
180
- // --- parent ---
181
195
  export const sprintCommand = new Command("sprint")
182
196
  .description("Manage sprints")
183
197
  .addCommand(listCommand)
@@ -186,5 +200,6 @@ export const sprintCommand = new Command("sprint")
186
200
  .addCommand(updateCommand)
187
201
  .addCommand(datesCommand)
188
202
  .addCommand(statusCommand)
203
+ .addCommand(positionCommand)
189
204
  .addCommand(deleteCommand);
190
- //# sourceMappingURL=sprint.js.map
205
+ //# sourceMappingURL=sprints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprints.js","sourceRoot":"","sources":["../../../src/commands/api/sprints.ts"],"names":[],"mappings":"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"}