@itznexus/itznexus-cli 1.4.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 (96) 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 +357 -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/{sprint.js → api/sprints.js} +37 -22
  49. package/dist/commands/api/sprints.js.map +1 -0
  50. package/dist/commands/{task.js → api/tasks.js} +78 -19
  51. package/dist/commands/api/tasks.js.map +1 -0
  52. package/dist/commands/api/upwork-job-notifications.d.ts +2 -0
  53. package/dist/commands/api/upwork-job-notifications.js +85 -0
  54. package/dist/commands/api/upwork-job-notifications.js.map +1 -0
  55. package/dist/commands/api/users.js +224 -0
  56. package/dist/commands/api/users.js.map +1 -0
  57. package/dist/commands/api/website-scrapes.d.ts +2 -0
  58. package/dist/commands/api/website-scrapes.js +118 -0
  59. package/dist/commands/api/website-scrapes.js.map +1 -0
  60. package/dist/commands/api/youtube-productions.d.ts +2 -0
  61. package/dist/commands/api/youtube-productions.js +521 -0
  62. package/dist/commands/api/youtube-productions.js.map +1 -0
  63. package/dist/commands/api/youtube-videos.d.ts +2 -0
  64. package/dist/commands/api/youtube-videos.js +111 -0
  65. package/dist/commands/api/youtube-videos.js.map +1 -0
  66. package/dist/index.js +96 -41
  67. package/dist/index.js.map +1 -1
  68. package/package.json +1 -1
  69. package/dist/commands/auth.js.map +0 -1
  70. package/dist/commands/claude.js.map +0 -1
  71. package/dist/commands/health.js.map +0 -1
  72. package/dist/commands/interaction.js.map +0 -1
  73. package/dist/commands/lead.js.map +0 -1
  74. package/dist/commands/organization.js.map +0 -1
  75. package/dist/commands/page.js.map +0 -1
  76. package/dist/commands/person.js.map +0 -1
  77. package/dist/commands/pipeline.js.map +0 -1
  78. package/dist/commands/project.js +0 -151
  79. package/dist/commands/project.js.map +0 -1
  80. package/dist/commands/sprint.js.map +0 -1
  81. package/dist/commands/task.js.map +0 -1
  82. package/dist/commands/user.js +0 -58
  83. package/dist/commands/user.js.map +0 -1
  84. /package/dist/commands/{claude.d.ts → agents/claude.d.ts} +0 -0
  85. /package/dist/commands/{auth.d.ts → api/auth.d.ts} +0 -0
  86. /package/dist/commands/{health.d.ts → api/health.d.ts} +0 -0
  87. /package/dist/commands/{interaction.d.ts → api/interactions.d.ts} +0 -0
  88. /package/dist/commands/{lead.d.ts → api/leads.d.ts} +0 -0
  89. /package/dist/commands/{organization.d.ts → api/organizations.d.ts} +0 -0
  90. /package/dist/commands/{page.d.ts → api/pages.d.ts} +0 -0
  91. /package/dist/commands/{person.d.ts → api/persons.d.ts} +0 -0
  92. /package/dist/commands/{pipeline.d.ts → api/pipelines.d.ts} +0 -0
  93. /package/dist/commands/{project.d.ts → api/projects.d.ts} +0 -0
  94. /package/dist/commands/{sprint.d.ts → api/sprints.d.ts} +0 -0
  95. /package/dist/commands/{task.d.ts → api/tasks.d.ts} +0 -0
  96. /package/dist/commands/{user.d.ts → api/users.d.ts} +0 -0
@@ -1,10 +1,9 @@
1
1
  import { Command } from "commander";
2
2
  import chalk from "chalk";
3
- import { api } from "../lib/api.js";
4
- import { printList, handleError } from "../lib/format.js";
5
- import { normalizeClaudeEvents, } from "../lib/claude/normalize-events.js";
3
+ import { api } from "../../lib/api.js";
4
+ import { handleError } from "../../lib/format.js";
5
+ import { normalizeClaudeEvents, } from "../../lib/claude/normalize-events.js";
6
6
  const BATCH_SIZE = 500;
7
- // --- ingest ---
8
7
  const ingestCommand = new Command("ingest")
9
8
  .description("Ingest local Claude Code chat history into Nexus")
10
9
  .option("--since <when>", "ISO date, duration like '24h', '7d', or 'last' (default). 'last' queries Nexus for the most recent event.", "last")
@@ -62,67 +61,11 @@ const ingestCommand = new Command("ingest")
62
61
  handleError(err);
63
62
  }
64
63
  });
65
- // --- events list ---
66
- const eventsListCommand = new Command("list")
67
- .description("List ingested Claude events")
68
- .option("--session <claudeSessionId>", "Filter by Claude session ID")
69
- .option("--project <projectTag>", "Filter by project tag")
70
- .option("--since <iso>", "Filter to events occurred after this ISO date")
71
- .option("--until <iso>", "Filter to events occurred before this ISO date")
72
- .option("--limit <n>", "Max results (default 50, max 5000)", "50")
73
- .option("--json", "Output as JSON")
74
- .action(async (opts) => {
75
- try {
76
- const params = new URLSearchParams();
77
- if (opts.session)
78
- params.set("claudeSessionId", opts.session);
79
- if (opts.project)
80
- params.set("projectTag", opts.project);
81
- if (opts.since)
82
- params.set("since", opts.since);
83
- if (opts.until)
84
- params.set("until", opts.until);
85
- params.set("limit", opts.limit);
86
- const data = await api.get(`/claude-events?${params.toString()}`);
87
- printList(data, [
88
- { key: "occurredAt", label: "When", width: 24 },
89
- { key: "eventType", label: "Type", width: 24 },
90
- { key: "projectTag", label: "Project", width: 18 },
91
- { key: "gitBranch", label: "Branch", width: 16 },
92
- { key: "claudeSessionId", label: "Session", width: 36 },
93
- ], opts);
94
- }
95
- catch (err) {
96
- handleError(err);
97
- }
98
- });
99
- const eventsGetCommand = new Command("get")
100
- .description("Get a single Claude event")
101
- .argument("<id>", "Claude event ID")
102
- .option("--json", "Output as JSON")
103
- .action(async (id, opts) => {
104
- try {
105
- const data = await api.get(`/claude-events/${id}`);
106
- console.log(JSON.stringify(data, null, 2));
107
- void opts;
108
- }
109
- catch (err) {
110
- handleError(err);
111
- }
112
- });
113
- const eventsCommand = new Command("events")
114
- .description("Query ingested Claude events")
115
- .addCommand(eventsListCommand)
116
- .addCommand(eventsGetCommand);
117
- // --- parent ---
118
64
  export const claudeCommand = new Command("claude")
119
- .description("Ingest and query Claude Code chat history")
120
- .addCommand(ingestCommand)
121
- .addCommand(eventsCommand);
122
- // --- helpers ---
65
+ .description("Local agent: ingest Claude Code chat history")
66
+ .addCommand(ingestCommand);
123
67
  async function resolveSince(raw) {
124
68
  if (raw === "last") {
125
- // Ask Nexus for the most recent event we've already ingested.
126
69
  const rows = await api.get("/claude-events?limit=1");
127
70
  return rows.length > 0 ? new Date(rows[0].occurredAt) : undefined;
128
71
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/commands/agents/claude.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,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EACL,qBAAqB,GAEtB,MAAM,sCAAsC,CAAC;AAE9C,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KACxC,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CACL,gBAAgB,EAChB,2GAA2G,EAC3G,MAAM,CACP;KACA,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC;KAC9D,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,KAAK,EAAE,IAAyD,EAAE,EAAE;IAC1E,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,+BACE,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,iBAC5C,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CACrC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,GAAuB,EAAE,CAAC;QAEnC,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;YACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAC/B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC;gBACzB,KAAK,GAAG,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAI1B,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACxC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC;YAC5B,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC;YAC1B,KAAK,GAAG,EAAE,CAAC;QACb,CAAC,CAAC;QAEF,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,qBAAqB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,CAAC,MAAM,IAAI,UAAU,EAAE,CAAC;gBAC/B,MAAM,KAAK,EAAE,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,QAAQ,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,KAAK,EAAE,CAAC;QAEd,MAAM,MAAM,GAAG;YACb,KAAK;YACL,QAAQ;YACR,OAAO;YACP,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM;YACrB,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,IAAI;SACpC,CAAC;QAEF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAChB,GAAG,KAAK,uBAAuB,QAAQ,cAAc,OAAO,WAAW,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CACzG,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,8CAA8C,CAAC;KAC3D,UAAU,CAAC,aAAa,CAAC,CAAC;AAE7B,KAAK,UAAU,YAAY,CAAC,GAAW;IACrC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CACxB,wBAAwB,CACzB,CAAC;QACF,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,CAAC;IACD,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAClD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;QAC3E,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,0BAA0B,GAAG,yCAAyC,CACvE,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const auditLogCommand: Command;
@@ -0,0 +1,66 @@
1
+ import { Command } from "commander";
2
+ import { api } from "../../lib/api.js";
3
+ import { printList, handleError } from "../../lib/format.js";
4
+ const listCommand = new Command("list")
5
+ .description("List audit logs")
6
+ .option("--entity-type <type>", "Filter by entity type (e.g. lead, project)")
7
+ .option("--entity-id <id>", "Filter by entity ID")
8
+ .option("--parent-entity-type <type>", "Filter by parent entity type")
9
+ .option("--parent-entity-id <id>", "Filter by parent entity ID")
10
+ .option("--action <action>", "Filter by action (e.g. lead.created)")
11
+ .option("--actor <userId>", "Filter by actor user ID")
12
+ .option("--page <n>", "Page number (default 1)", parseInt)
13
+ .option("--limit <n>", "Page size (default 50, max 100)", parseInt)
14
+ .option("--json", "Output as JSON")
15
+ .action(async (opts) => {
16
+ try {
17
+ const params = new URLSearchParams();
18
+ if (opts.entityType)
19
+ params.set("entityType", opts.entityType);
20
+ if (opts.entityId)
21
+ params.set("entityId", opts.entityId);
22
+ if (opts.parentEntityType)
23
+ params.set("parentEntityType", opts.parentEntityType);
24
+ if (opts.parentEntityId)
25
+ params.set("parentEntityId", opts.parentEntityId);
26
+ if (opts.action)
27
+ params.set("action", opts.action);
28
+ if (opts.actor)
29
+ params.set("actorId", opts.actor);
30
+ if (opts.page != null)
31
+ params.set("page", String(opts.page));
32
+ if (opts.limit != null)
33
+ params.set("limit", String(opts.limit));
34
+ const qs = params.toString();
35
+ const data = await api.get(`/audit-logs${qs ? `?${qs}` : ""}`);
36
+ printList(data, [
37
+ { key: "createdAt", label: "When", width: 24 },
38
+ { key: "action", label: "Action", width: 24 },
39
+ { key: "entityType", label: "Entity", width: 16 },
40
+ { key: "entityId", label: "Entity ID", width: 38 },
41
+ { key: "actorName", label: "Actor", width: 20 },
42
+ ], opts);
43
+ }
44
+ catch (err) {
45
+ handleError(err);
46
+ }
47
+ });
48
+ const getCommand = new Command("get")
49
+ .description("Get an audit log entry")
50
+ .argument("<id>", "Audit log ID")
51
+ .option("--json", "Output as JSON")
52
+ .action(async (id, opts) => {
53
+ try {
54
+ const data = await api.get(`/audit-logs/${id}`);
55
+ console.log(JSON.stringify(data, null, 2));
56
+ void opts;
57
+ }
58
+ catch (err) {
59
+ handleError(err);
60
+ }
61
+ });
62
+ export const auditLogCommand = new Command("audit-log")
63
+ .description("Query audit logs")
64
+ .addCommand(listCommand)
65
+ .addCommand(getCommand);
66
+ //# sourceMappingURL=audit-logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-logs.js","sourceRoot":"","sources":["../../../src/commands/api/audit-logs.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { Command } from "commander";
2
2
  import readline from "node:readline/promises";
3
3
  import chalk from "chalk";
4
- import { loadConfig, saveConfig } from "../lib/config.js";
5
- import { api, ApiError } from "../lib/api.js";
4
+ import { loadConfig, saveConfig } from "../../lib/config.js";
5
+ import { api, ApiError } from "../../lib/api.js";
6
6
  async function prompt(question) {
7
7
  const rl = readline.createInterface({
8
8
  input: process.stdin,
@@ -12,24 +12,20 @@ async function prompt(question) {
12
12
  rl.close();
13
13
  return answer.trim();
14
14
  }
15
- // --- auth login ---
16
15
  const loginCommand = new Command("login")
17
16
  .description("Configure API key authentication")
18
17
  .option("--api-url <url>", "API base URL (for local testing)")
19
18
  .option("--api-key <key>", "API key (itznx_...)")
20
19
  .action(async (opts) => {
21
- // Save custom API URL if provided (for local testing)
22
20
  if (opts.apiUrl) {
23
21
  saveConfig({ apiUrl: opts.apiUrl });
24
22
  }
25
- // API Key — prompt only if not passed as flag
26
23
  const apiKey = opts.apiKey ?? (await prompt("API Key (itznx_...): "));
27
24
  if (!apiKey) {
28
25
  console.error(chalk.red("✗"), "API key is required");
29
26
  process.exit(1);
30
27
  }
31
28
  saveConfig({ apiKey });
32
- // Verify the key works
33
29
  try {
34
30
  const me = await api.get("/auth/me");
35
31
  console.log(chalk.green("✓"), `Authenticated as ${chalk.bold(me.name ?? me.email)}`, chalk.dim(`(${me.type})`));
@@ -37,7 +33,6 @@ const loginCommand = new Command("login")
37
33
  catch (err) {
38
34
  if (err instanceof ApiError) {
39
35
  console.error(chalk.red("✗"), `Authentication failed: ${err.message}`);
40
- // Remove the bad key
41
36
  saveConfig({ apiKey: undefined });
42
37
  process.exit(1);
43
38
  }
@@ -46,7 +41,6 @@ const loginCommand = new Command("login")
46
41
  process.exit(1);
47
42
  }
48
43
  });
49
- // --- auth status ---
50
44
  const statusCommand = new Command("status")
51
45
  .description("Show current authentication status")
52
46
  .option("--json", "Output as JSON")
@@ -100,14 +94,12 @@ const statusCommand = new Command("status")
100
94
  process.exit(1);
101
95
  }
102
96
  });
103
- // --- auth logout ---
104
97
  const logoutCommand = new Command("logout")
105
98
  .description("Remove stored API key")
106
99
  .action(() => {
107
100
  saveConfig({ apiKey: undefined });
108
101
  console.log(chalk.green("✓"), "Logged out");
109
102
  });
110
- // --- auth (parent) ---
111
103
  export const authCommand = new Command("auth")
112
104
  .description("Manage authentication")
113
105
  .addCommand(loginCommand)
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/commands/api/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const claudeEventCommand: Command;
@@ -0,0 +1,104 @@
1
+ import { Command } from "commander";
2
+ import { api } from "../../lib/api.js";
3
+ import { printList, handleError } from "../../lib/format.js";
4
+ const listCommand = new Command("list")
5
+ .description("List ingested Claude events")
6
+ .option("--actor <userId>", "Filter by actor user ID")
7
+ .option("--session <claudeSessionId>", "Filter by Claude session ID")
8
+ .option("--project <projectTag>", "Filter by project tag")
9
+ .option("--since <iso>", "Filter to events occurred after this ISO date")
10
+ .option("--until <iso>", "Filter to events occurred before this ISO date")
11
+ .option("--limit <n>", "Max results (default 50, max 5000)", "50")
12
+ .option("--json", "Output as JSON")
13
+ .action(async (opts) => {
14
+ try {
15
+ const params = new URLSearchParams();
16
+ if (opts.actor)
17
+ params.set("actorId", opts.actor);
18
+ if (opts.session)
19
+ params.set("claudeSessionId", opts.session);
20
+ if (opts.project)
21
+ params.set("projectTag", opts.project);
22
+ if (opts.since)
23
+ params.set("since", opts.since);
24
+ if (opts.until)
25
+ params.set("until", opts.until);
26
+ params.set("limit", opts.limit);
27
+ const data = await api.get(`/claude-events?${params.toString()}`);
28
+ printList(data, [
29
+ { key: "occurredAt", label: "When", width: 24 },
30
+ { key: "eventType", label: "Type", width: 24 },
31
+ { key: "projectTag", label: "Project", width: 18 },
32
+ { key: "gitBranch", label: "Branch", width: 16 },
33
+ { key: "claudeSessionId", label: "Session", width: 36 },
34
+ ], opts);
35
+ }
36
+ catch (err) {
37
+ handleError(err);
38
+ }
39
+ });
40
+ const getCommand = new Command("get")
41
+ .description("Get a single Claude event")
42
+ .argument("<id>", "Claude event ID")
43
+ .option("--json", "Output as JSON")
44
+ .action(async (id, opts) => {
45
+ try {
46
+ const data = await api.get(`/claude-events/${id}`);
47
+ console.log(JSON.stringify(data, null, 2));
48
+ void opts;
49
+ }
50
+ catch (err) {
51
+ handleError(err);
52
+ }
53
+ });
54
+ const usageStatsCommand = new Command("usage-stats")
55
+ .description("Aggregate usage stats for Claude events")
56
+ .option("--actor <userId>", "Filter by actor user ID")
57
+ .option("--project-tags <list>", "Comma-separated project tags")
58
+ .option("--since <iso>", "Window start (ISO)")
59
+ .option("--until <iso>", "Window end (ISO)")
60
+ .option("--json", "Output as JSON")
61
+ .action(async (opts) => {
62
+ try {
63
+ const params = new URLSearchParams();
64
+ if (opts.actor)
65
+ params.set("actorId", opts.actor);
66
+ if (opts.projectTags)
67
+ params.set("projectTags", opts.projectTags);
68
+ if (opts.since)
69
+ params.set("since", opts.since);
70
+ if (opts.until)
71
+ params.set("until", opts.until);
72
+ const qs = params.toString();
73
+ const data = await api.get(`/claude-events/usage-stats${qs ? `?${qs}` : ""}`);
74
+ console.log(JSON.stringify(data, null, 2));
75
+ }
76
+ catch (err) {
77
+ handleError(err);
78
+ }
79
+ });
80
+ const projectTagsCommand = new Command("project-tags")
81
+ .description("List known Claude project tags")
82
+ .option("--json", "Output as JSON")
83
+ .action(async (opts) => {
84
+ try {
85
+ const data = await api.get("/claude-events/project-tags");
86
+ if (opts.json) {
87
+ console.log(JSON.stringify(data, null, 2));
88
+ }
89
+ else {
90
+ for (const tag of data)
91
+ console.log(tag);
92
+ }
93
+ }
94
+ catch (err) {
95
+ handleError(err);
96
+ }
97
+ });
98
+ export const claudeEventCommand = new Command("claude-event")
99
+ .description("Query ingested Claude Code events")
100
+ .addCommand(listCommand)
101
+ .addCommand(getCommand)
102
+ .addCommand(usageStatsCommand)
103
+ .addCommand(projectTagsCommand);
104
+ //# sourceMappingURL=claude-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-events.js","sourceRoot":"","sources":["../../../src/commands/api/claude-events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const fileCommand: Command;
@@ -0,0 +1,166 @@
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 files")
7
+ .option("--entity-type <type>", "Filter by entity type")
8
+ .option("--entity-id <id>", "Filter by entity ID")
9
+ .option("--folder <id>", "Filter by folder")
10
+ .option("--json", "Output as JSON")
11
+ .action(async (opts) => {
12
+ try {
13
+ const params = new URLSearchParams();
14
+ if (opts.entityType)
15
+ params.set("entityType", opts.entityType);
16
+ if (opts.entityId)
17
+ params.set("entityId", opts.entityId);
18
+ if (opts.folder)
19
+ params.set("folderId", opts.folder);
20
+ const qs = params.toString();
21
+ const data = await api.get(`/files${qs ? `?${qs}` : ""}`);
22
+ printList(data, [
23
+ { key: "name", label: "Name", width: 35 },
24
+ { key: "mimeType", label: "Type", width: 24 },
25
+ { key: "size", label: "Size", width: 12 },
26
+ { key: "status", label: "Status", width: 12 },
27
+ { key: "createdAt", label: "Created", width: 24 },
28
+ ], opts);
29
+ }
30
+ catch (err) {
31
+ handleError(err);
32
+ }
33
+ });
34
+ const getCommand = new Command("get")
35
+ .description("Get a file record")
36
+ .argument("<id>", "File ID")
37
+ .option("--json", "Output as JSON")
38
+ .action(async (id, opts) => {
39
+ try {
40
+ const data = await api.get(`/files/${id}`);
41
+ if (opts.json) {
42
+ console.log(JSON.stringify(data, null, 2));
43
+ return;
44
+ }
45
+ console.log(chalk.bold(data.name));
46
+ printDetail(data, [
47
+ { key: "id", label: "ID" },
48
+ { key: "mimeType", label: "Type" },
49
+ { key: "size", label: "Size" },
50
+ { key: "status", label: "Status" },
51
+ { key: "folderId", label: "Folder" },
52
+ { key: "entityType", label: "Entity Type" },
53
+ { key: "entityId", label: "Entity ID" },
54
+ { key: "url", label: "URL" },
55
+ { key: "createdAt", label: "Created" },
56
+ ], opts);
57
+ }
58
+ catch (err) {
59
+ handleError(err);
60
+ }
61
+ });
62
+ const uploadUrlCommand = new Command("upload-url")
63
+ .description("Request a signed URL to upload a file (step 1 of 2)")
64
+ .requiredOption("--name <name>", "File name")
65
+ .requiredOption("--mime-type <type>", "MIME type")
66
+ .requiredOption("--size <bytes>", "Size in bytes", parseInt)
67
+ .option("--folder <id>", "Folder ID")
68
+ .option("--entity-type <type>", "Entity type")
69
+ .option("--entity-id <id>", "Entity ID")
70
+ .option("--json", "Output as JSON")
71
+ .action(async (opts) => {
72
+ try {
73
+ const payload = {
74
+ name: opts.name,
75
+ mimeType: opts.mimeType,
76
+ size: opts.size,
77
+ };
78
+ if (opts.folder !== undefined)
79
+ payload.folderId = opts.folder;
80
+ if (opts.entityType !== undefined)
81
+ payload.entityType = opts.entityType;
82
+ if (opts.entityId !== undefined)
83
+ payload.entityId = opts.entityId;
84
+ const data = await api.post("/files/upload-url", payload);
85
+ if (opts.json) {
86
+ console.log(JSON.stringify(data, null, 2));
87
+ }
88
+ else {
89
+ console.log(chalk.green("✓"), `Upload URL ready for ${chalk.bold(data.name)} (${data.id})`);
90
+ console.log();
91
+ console.log(chalk.dim("Next:"));
92
+ console.log(chalk.dim(` 1. PUT the file bytes to:\n ${data.uploadUrl}`));
93
+ console.log(chalk.dim(` 2. itznexus file confirm ${data.id}`));
94
+ }
95
+ }
96
+ catch (err) {
97
+ handleError(err);
98
+ }
99
+ });
100
+ const confirmCommand = new Command("confirm")
101
+ .description("Confirm a file upload has completed (step 2 of 2)")
102
+ .argument("<id>", "File ID")
103
+ .option("--json", "Output as JSON")
104
+ .action(async (id, opts) => {
105
+ try {
106
+ const data = await api.post(`/files/${id}/confirm`, {});
107
+ if (opts.json) {
108
+ console.log(JSON.stringify(data, null, 2));
109
+ }
110
+ else {
111
+ console.log(chalk.green("✓"), `File confirmed: ${chalk.bold(data.name)}`);
112
+ }
113
+ }
114
+ catch (err) {
115
+ handleError(err);
116
+ }
117
+ });
118
+ const folderCommand = new Command("folder")
119
+ .description("Move a file to a folder")
120
+ .argument("<id>", "File ID")
121
+ .argument("<folderId>", 'Folder ID ("null" to remove from folder)')
122
+ .option("--json", "Output as JSON")
123
+ .action(async (id, folderId, opts) => {
124
+ try {
125
+ const value = folderId === "null" ? null : folderId;
126
+ const data = await api.post(`/files/${id}/folder`, {
127
+ folderId: value,
128
+ });
129
+ if (opts.json) {
130
+ console.log(JSON.stringify(data, null, 2));
131
+ }
132
+ else {
133
+ console.log(chalk.green("✓"), "File moved");
134
+ }
135
+ }
136
+ catch (err) {
137
+ handleError(err);
138
+ }
139
+ });
140
+ const deleteCommand = new Command("delete")
141
+ .description("Delete a file")
142
+ .argument("<id>", "File ID")
143
+ .option("--json", "Output as JSON")
144
+ .action(async (id, opts) => {
145
+ try {
146
+ await api.delete(`/files/${id}`);
147
+ if (opts.json) {
148
+ console.log(JSON.stringify({ deleted: true, id }));
149
+ }
150
+ else {
151
+ console.log(chalk.green("✓"), "File deleted");
152
+ }
153
+ }
154
+ catch (err) {
155
+ handleError(err);
156
+ }
157
+ });
158
+ export const fileCommand = new Command("file")
159
+ .description("Manage files")
160
+ .addCommand(listCommand)
161
+ .addCommand(getCommand)
162
+ .addCommand(uploadUrlCommand)
163
+ .addCommand(confirmCommand)
164
+ .addCommand(folderCommand)
165
+ .addCommand(deleteCommand);
166
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/commands/api/files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const folderCommand: Command;