@itznexus/itznexus-cli 1.100.0 → 1.102.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 (37) hide show
  1. package/dist/commands/agents/claude.js +3 -3
  2. package/dist/commands/agents/claude.js.map +1 -1
  3. package/dist/commands/agents/grok.d.ts +2 -0
  4. package/dist/commands/agents/grok.js +86 -0
  5. package/dist/commands/agents/grok.js.map +1 -0
  6. package/dist/commands/api/agent-events.d.ts +2 -0
  7. package/dist/commands/api/{claude-events.js → agent-events.js} +22 -15
  8. package/dist/commands/api/agent-events.js.map +1 -0
  9. package/dist/commands/api/project-state.d.ts +2 -0
  10. package/dist/commands/api/project-state.js +87 -0
  11. package/dist/commands/api/project-state.js.map +1 -0
  12. package/dist/commands/api/projects.js +6 -4
  13. package/dist/commands/api/projects.js.map +1 -1
  14. package/dist/commands/api/tasks.js +38 -0
  15. package/dist/commands/api/tasks.js.map +1 -1
  16. package/dist/index.js +7 -6
  17. package/dist/index.js.map +1 -1
  18. package/dist/lib/agent-event.d.ts +12 -0
  19. package/dist/lib/agent-event.js +2 -0
  20. package/dist/lib/agent-event.js.map +1 -0
  21. package/dist/lib/api.d.ts +2 -1
  22. package/dist/lib/api.js +4 -2
  23. package/dist/lib/api.js.map +1 -1
  24. package/dist/lib/claude/normalize-events.d.ts +2 -12
  25. package/dist/lib/claude/normalize-events.js +2 -1
  26. package/dist/lib/claude/normalize-events.js.map +1 -1
  27. package/dist/lib/format.js +5 -0
  28. package/dist/lib/format.js.map +1 -1
  29. package/dist/lib/grok/normalize-events.d.ts +9 -0
  30. package/dist/lib/grok/normalize-events.js +334 -0
  31. package/dist/lib/grok/normalize-events.js.map +1 -0
  32. package/package.json +1 -1
  33. package/dist/commands/api/bridge.d.ts +0 -2
  34. package/dist/commands/api/bridge.js +0 -268
  35. package/dist/commands/api/bridge.js.map +0 -1
  36. package/dist/commands/api/claude-events.d.ts +0 -2
  37. package/dist/commands/api/claude-events.js.map +0 -1
@@ -2,7 +2,7 @@ import { Command } from "commander";
2
2
  import chalk from "chalk";
3
3
  import { api } from "../../lib/api.js";
4
4
  import { handleError } from "../../lib/format.js";
5
- import { normalizeClaudeEvents, } from "../../lib/claude/normalize-events.js";
5
+ import { normalizeClaudeEvents } from "../../lib/claude/normalize-events.js";
6
6
  const BATCH_SIZE = 500;
7
7
  const ingestCommand = new Command("ingest")
8
8
  .description("Ingest local Claude Code chat history into Nexus")
@@ -27,7 +27,7 @@ const ingestCommand = new Command("ingest")
27
27
  batch = [];
28
28
  return;
29
29
  }
30
- const result = await api.post("/claude-events", { events: batch });
30
+ const result = await api.post("/agent-events", { events: batch });
31
31
  inserted += result.inserted;
32
32
  skipped += result.skipped;
33
33
  batch = [];
@@ -69,7 +69,7 @@ async function resolveSince(raw) {
69
69
  // Scope to the current identity: another machine or worker profile may
70
70
  // have ingested more recent events, and a global "last" would skip ours.
71
71
  const me = await api.get("/auth/me");
72
- const rows = await api.get(`/claude-events?limit=1&actorId=${me.id}`);
72
+ const rows = await api.get(`/agent-events?limit=1&actorId=${me.id}&provider=claude`);
73
73
  return rows.length > 0 ? new Date(rows[0].occurredAt) : undefined;
74
74
  }
75
75
  const durationMatch = raw.match(/^(\d+)([hdw])$/);
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/commands/agents/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/commands/agents/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const grokCommand: Command;
@@ -0,0 +1,86 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { api } from "../../lib/api.js";
4
+ import { handleError } from "../../lib/format.js";
5
+ import { normalizeGrokEvents } from "../../lib/grok/normalize-events.js";
6
+ const BATCH_SIZE = 500;
7
+ const ingestCommand = new Command("ingest")
8
+ .description("Ingest local Grok chat history into Nexus")
9
+ .option("--since <when>", "ISO date, duration like '24h', '7d', or 'last' (default). 'last' queries Nexus for the most recent Grok event of the current identity.", "last")
10
+ .option("--dry-run", "Normalize and count, do not push to API")
11
+ .option("--json", "Output as JSON")
12
+ .action(async (opts) => {
13
+ try {
14
+ const since = await resolveSince(opts.since);
15
+ if (!opts.json) {
16
+ console.log(chalk.dim(`Ingesting Grok events${since ? ` since ${since.toISOString()}` : " (full history)"}${opts.dryRun ? " [dry-run]" : ""}`));
17
+ }
18
+ let inserted = 0;
19
+ let skipped = 0;
20
+ let total = 0;
21
+ let batch = [];
22
+ const flush = async () => {
23
+ if (batch.length === 0)
24
+ return;
25
+ if (opts.dryRun) {
26
+ inserted += batch.length;
27
+ batch = [];
28
+ return;
29
+ }
30
+ const result = await api.post("/agent-events", { events: batch });
31
+ inserted += result.inserted;
32
+ skipped += result.skipped;
33
+ batch = [];
34
+ };
35
+ for await (const event of normalizeGrokEvents({ since })) {
36
+ batch.push(event);
37
+ total++;
38
+ if (batch.length >= BATCH_SIZE) {
39
+ await flush();
40
+ if (!opts.json) {
41
+ process.stdout.write(chalk.dim(` pushed ${inserted}/${total}\r`));
42
+ }
43
+ }
44
+ }
45
+ await flush();
46
+ const result = {
47
+ total,
48
+ inserted,
49
+ skipped,
50
+ dryRun: !!opts.dryRun,
51
+ since: since?.toISOString() ?? null,
52
+ };
53
+ if (opts.json) {
54
+ console.log(JSON.stringify(result, null, 2));
55
+ }
56
+ else {
57
+ console.log(chalk.green("✓"), `${total} events normalized, ${inserted} inserted, ${skipped} skipped${opts.dryRun ? " (dry-run)" : ""}`);
58
+ }
59
+ }
60
+ catch (err) {
61
+ handleError(err);
62
+ }
63
+ });
64
+ export const grokCommand = new Command("grok")
65
+ .description("Local agent: ingest Grok chat history")
66
+ .addCommand(ingestCommand);
67
+ async function resolveSince(raw) {
68
+ if (raw === "last") {
69
+ const me = await api.get("/auth/me");
70
+ const rows = await api.get(`/agent-events?limit=1&actorId=${me.id}&provider=grok`);
71
+ return rows.length > 0 ? new Date(rows[0].occurredAt) : undefined;
72
+ }
73
+ const durationMatch = raw.match(/^(\d+)([hdw])$/);
74
+ if (durationMatch) {
75
+ const n = Number(durationMatch[1]);
76
+ const unit = durationMatch[2];
77
+ const ms = unit === "h" ? 3600_000 : unit === "d" ? 86400_000 : 604800_000;
78
+ return new Date(Date.now() - n * ms);
79
+ }
80
+ const d = new Date(raw);
81
+ if (Number.isNaN(d.getTime())) {
82
+ throw new Error(`Invalid --since value: ${raw}. Use ISO date, '24h', '7d', or 'last'.`);
83
+ }
84
+ return d;
85
+ }
86
+ //# sourceMappingURL=grok.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grok.js","sourceRoot":"","sources":["../../../src/commands/agents/grok.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const agentEventCommand: Command;
@@ -2,10 +2,11 @@ import { Command } from "commander";
2
2
  import { api } from "../../lib/api.js";
3
3
  import { printList, handleError } from "../../lib/format.js";
4
4
  const listCommand = new Command("list")
5
- .description("List ingested Claude events")
5
+ .description("List ingested agent events")
6
6
  .option("--actor <userId>", "Filter by actor user ID")
7
- .option("--session <claudeSessionId>", "Filter by Claude session ID")
7
+ .option("--session <sessionId>", "Filter by session ID")
8
8
  .option("--project <projectTag>", "Filter by project tag")
9
+ .option("--provider <name>", "Filter by provider (claude or grok)")
9
10
  .option("--since <iso>", "Filter to events occurred after this ISO date")
10
11
  .option("--until <iso>", "Filter to events occurred before this ISO date")
11
12
  .option("--limit <n>", "Max results (default 50, max 5000)", "50")
@@ -16,21 +17,24 @@ const listCommand = new Command("list")
16
17
  if (opts.actor)
17
18
  params.set("actorId", opts.actor);
18
19
  if (opts.session)
19
- params.set("claudeSessionId", opts.session);
20
+ params.set("sessionId", opts.session);
20
21
  if (opts.project)
21
22
  params.set("projectTag", opts.project);
23
+ if (opts.provider)
24
+ params.set("provider", opts.provider);
22
25
  if (opts.since)
23
26
  params.set("since", opts.since);
24
27
  if (opts.until)
25
28
  params.set("until", opts.until);
26
29
  params.set("limit", opts.limit);
27
- const data = await api.get(`/claude-events?${params.toString()}`);
30
+ const data = await api.get(`/agent-events?${params.toString()}`);
28
31
  printList(data, [
29
32
  { key: "occurredAt", label: "When", width: 24 },
30
33
  { key: "eventType", label: "Type", width: 24 },
34
+ { key: "provider", label: "Provider", width: 8 },
31
35
  { key: "projectTag", label: "Project", width: 18 },
32
36
  { key: "gitBranch", label: "Branch", width: 16 },
33
- { key: "claudeSessionId", label: "Session", width: 36 },
37
+ { key: "sessionId", label: "Session", width: 36 },
34
38
  ], opts);
35
39
  }
36
40
  catch (err) {
@@ -38,12 +42,12 @@ const listCommand = new Command("list")
38
42
  }
39
43
  });
40
44
  const getCommand = new Command("get")
41
- .description("Get a single Claude event")
42
- .argument("<id>", "Claude event ID")
45
+ .description("Get a single agent event")
46
+ .argument("<id>", "Agent event ID")
43
47
  .option("--json", "Output as JSON")
44
48
  .action(async (id, opts) => {
45
49
  try {
46
- const data = await api.get(`/claude-events/${id}`);
50
+ const data = await api.get(`/agent-events/${id}`);
47
51
  console.log(JSON.stringify(data, null, 2));
48
52
  void opts;
49
53
  }
@@ -52,8 +56,9 @@ const getCommand = new Command("get")
52
56
  }
53
57
  });
54
58
  const usageStatsCommand = new Command("usage-stats")
55
- .description("Aggregate usage stats for Claude events")
59
+ .description("Aggregate usage stats for agent events")
56
60
  .option("--actor <userId>", "Filter by actor user ID")
61
+ .option("--provider <name>", "Filter by provider (claude or grok)")
57
62
  .option("--project-tags <list>", "Comma-separated project tags")
58
63
  .option("--since <iso>", "Window start (ISO)")
59
64
  .option("--until <iso>", "Window end (ISO)")
@@ -63,6 +68,8 @@ const usageStatsCommand = new Command("usage-stats")
63
68
  const params = new URLSearchParams();
64
69
  if (opts.actor)
65
70
  params.set("actorId", opts.actor);
71
+ if (opts.provider)
72
+ params.set("provider", opts.provider);
66
73
  if (opts.projectTags)
67
74
  params.set("projectTags", opts.projectTags);
68
75
  if (opts.since)
@@ -70,7 +77,7 @@ const usageStatsCommand = new Command("usage-stats")
70
77
  if (opts.until)
71
78
  params.set("until", opts.until);
72
79
  const qs = params.toString();
73
- const data = await api.get(`/claude-events/usage-stats${qs ? `?${qs}` : ""}`);
80
+ const data = await api.get(`/agent-events/usage-stats${qs ? `?${qs}` : ""}`);
74
81
  console.log(JSON.stringify(data, null, 2));
75
82
  }
76
83
  catch (err) {
@@ -78,11 +85,11 @@ const usageStatsCommand = new Command("usage-stats")
78
85
  }
79
86
  });
80
87
  const projectTagsCommand = new Command("project-tags")
81
- .description("List known Claude project tags")
88
+ .description("List known agent-event project tags")
82
89
  .option("--json", "Output as JSON")
83
90
  .action(async (opts) => {
84
91
  try {
85
- const data = await api.get("/claude-events/project-tags");
92
+ const data = await api.get("/agent-events/project-tags");
86
93
  if (opts.json) {
87
94
  console.log(JSON.stringify(data, null, 2));
88
95
  }
@@ -95,10 +102,10 @@ const projectTagsCommand = new Command("project-tags")
95
102
  handleError(err);
96
103
  }
97
104
  });
98
- export const claudeEventCommand = new Command("claude-event")
99
- .description("Query ingested Claude Code events")
105
+ export const agentEventCommand = new Command("agent-event")
106
+ .description("Query ingested agent events")
100
107
  .addCommand(listCommand)
101
108
  .addCommand(getCommand)
102
109
  .addCommand(usageStatsCommand)
103
110
  .addCommand(projectTagsCommand);
104
- //# sourceMappingURL=claude-events.js.map
111
+ //# sourceMappingURL=agent-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-events.js","sourceRoot":"","sources":["../../../src/commands/api/agent-events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const stateCommand: Command;
@@ -0,0 +1,87 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { api } from "../../lib/api.js";
4
+ import { handleError } from "../../lib/format.js";
5
+ const KEYS_SHOWN = 8;
6
+ // Synthesis states whose remedy is an agent run rather than a human act.
7
+ const AGENT_CODES = new Set(["ingest-needed", "pm-ready", "dev-ready"]);
8
+ function keys(refs) {
9
+ if (!refs.length)
10
+ return chalk.dim("none");
11
+ const shown = refs.slice(0, KEYS_SHOWN).map((r) => r.key);
12
+ const more = refs.length - shown.length;
13
+ return shown.join(", ") + (more > 0 ? ` +${more} more` : "");
14
+ }
15
+ function countAndKeys(refs) {
16
+ return refs.length ? `${refs.length} (${keys(refs)})` : "0";
17
+ }
18
+ function printState(state) {
19
+ const title = [state.key, state.name].filter(Boolean).join(" · ");
20
+ console.log(chalk.bold(title), chalk.dim(`state ${state.generatedAt}`));
21
+ console.log("");
22
+ console.log(chalk.bold("State"));
23
+ const active = state.synthesis.filter((s) => s.active);
24
+ if (!active.length) {
25
+ console.log(chalk.dim(" pipeline is idle: no state is active"));
26
+ }
27
+ for (const s of active) {
28
+ const dot = AGENT_CODES.has(s.code) ? chalk.cyan("●") : chalk.yellow("●");
29
+ const detail = s.keys.length
30
+ ? `: ${keys(s.keys.map((k) => ({ key: k })))}`
31
+ : "";
32
+ console.log(` ${dot} ${s.label} (${s.count})${detail}`);
33
+ }
34
+ console.log("");
35
+ console.log(chalk.bold("Ingest"));
36
+ console.log(` last: ${state.ingest.lastIngestedAt ?? chalk.dim("never")} · new since: ${state.ingest.newInteractions} interactions, ${state.ingest.newSlackMessages} Slack messages`);
37
+ console.log(` running: ${keys(state.ingest.running)} · awaiting review: ${keys(state.ingest.awaitingReview)}`);
38
+ console.log("");
39
+ console.log(chalk.bold("Requests"));
40
+ console.log(` to triage: ${countAndKeys(state.requests.pendingTriage)} · ready: ${countAndKeys(state.requests.ready)}`);
41
+ console.log(` in progress: ${countAndKeys(state.requests.inProgress)} · in review: ${countAndKeys(state.requests.inReview)}`);
42
+ for (const b of state.requests.blocked) {
43
+ console.log(` ${chalk.red("blocked")}: ${b.key} by ${b.blockedBy.join(", ")}`);
44
+ }
45
+ console.log("");
46
+ console.log(chalk.bold("Decisions"));
47
+ if (!state.decisions.open.length)
48
+ console.log(chalk.dim(" none open"));
49
+ for (const d of state.decisions.open) {
50
+ const who = d.assigneeEmail
51
+ ? `${d.assigneeEmail}${d.assigneeRole ? ` (${d.assigneeRole})` : ""}`
52
+ : chalk.dim("unassigned");
53
+ const blocks = d.blocks.length ? `, blocks ${d.blocks.join(", ")}` : "";
54
+ console.log(` ${d.key} ${d.title} → ${who}${blocks}`);
55
+ }
56
+ console.log("");
57
+ console.log(chalk.bold("Sprints"));
58
+ if (!state.sprints.open.length)
59
+ console.log(chalk.dim(" no open sprint"));
60
+ for (const s of state.sprints.open) {
61
+ console.log(` ${s.name} (${s.status}): ${s.tasks.todo} todo · ${s.tasks.inProgress} in progress · ${s.tasks.review} review · ${s.tasks.done}/${s.tasks.total} done`);
62
+ }
63
+ console.log(` pool (backlog, unblocked): ${countAndKeys(state.sprints.pool)}`);
64
+ console.log("");
65
+ console.log(chalk.bold("Dev"));
66
+ console.log(` ready: ${countAndKeys(state.dev.ready)} · in progress: ${countAndKeys(state.dev.inProgress)} · awaiting acceptance: ${countAndKeys(state.dev.awaitingAcceptance)}`);
67
+ for (const b of state.dev.blocked) {
68
+ console.log(` ${chalk.red("blocked")}: ${b.key} on decision ${b.blockedBy.join(", ")}`);
69
+ }
70
+ }
71
+ export const stateCommand = new Command("state")
72
+ .description("Derived pipeline state of a project: a synthesis of named states (ingest needs to run, PM blocked, sprint needs setup, dev can run, ...) over per-stage detail and an attention rollup, so agents and humans know who is up next")
73
+ .argument("<id>", "Project ID, key (e.g. NEX), or slug (e.g. itznexus)")
74
+ .option("--json", "Output as JSON")
75
+ .action(async (id, opts) => {
76
+ try {
77
+ const state = await api.get(`/projects/${id}/state`);
78
+ if (opts.json)
79
+ console.log(JSON.stringify(state, null, 2));
80
+ else
81
+ printState(state);
82
+ }
83
+ catch (err) {
84
+ handleError(err);
85
+ }
86
+ });
87
+ //# sourceMappingURL=project-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-state.js","sourceRoot":"","sources":["../../../src/commands/api/project-state.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ import { instructionsCommand } from "./project-instructions.js";
10
10
  import { projectCapabilityCommand } from "./project-capabilities.js";
11
11
  import { projectArtifactCommand } from "./project-artifacts.js";
12
12
  import { roleCommand } from "./project-roles.js";
13
+ import { stateCommand } from "./project-state.js";
13
14
  const listCommand = new Command("list")
14
15
  .description("List projects (non-terminated by default)")
15
16
  .option("--status <status>", "Filter by exact status; overrides the default non-terminated scope")
@@ -823,8 +824,8 @@ const commitsCommand = new Command("commits")
823
824
  handleError(err);
824
825
  }
825
826
  });
826
- const claudeCostCommand = new Command("claude-cost")
827
- .description("Show Claude Code cost for a project")
827
+ const agentSpendCommand = new Command("agent-spend")
828
+ .description("Show agent spend for a project")
828
829
  .argument("<id>", "Project ID, key (e.g. NEX), or slug (e.g. itznexus)")
829
830
  .option("--days <n>", "Window in days (1-365, default 30)", (v) => parseInt(v, 10))
830
831
  .option("--json", "Output as JSON")
@@ -834,7 +835,7 @@ const claudeCostCommand = new Command("claude-cost")
834
835
  if (opts.days != null)
835
836
  params.set("days", String(opts.days));
836
837
  const qs = params.toString();
837
- const data = await api.get(`/projects/${id}/claude-cost${qs ? `?${qs}` : ""}`);
838
+ const data = await api.get(`/projects/${id}/agent-spend${qs ? `?${qs}` : ""}`);
838
839
  if (opts.json) {
839
840
  console.log(JSON.stringify(data, null, 2));
840
841
  return;
@@ -1039,6 +1040,7 @@ export const projectCommand = new Command("project")
1039
1040
  .addCommand(detachRepoCommand)
1040
1041
  .addCommand(awsAccountCommand)
1041
1042
  .addCommand(dossierCommand)
1043
+ .addCommand(stateCommand)
1042
1044
  .addCommand(lastIngestedCommand)
1043
1045
  .addCommand(syncCommand)
1044
1046
  .addCommand(environmentCommand)
@@ -1052,7 +1054,7 @@ export const projectCommand = new Command("project")
1052
1054
  .addCommand(activeCommand)
1053
1055
  .addCommand(commitStatsCommand)
1054
1056
  .addCommand(commitsCommand)
1055
- .addCommand(claudeCostCommand)
1057
+ .addCommand(agentSpendCommand)
1056
1058
  .addCommand(uptimeCommand)
1057
1059
  .addCommand(uptimeGroupCommand)
1058
1060
  .addCommand(documentsFolderCommand)