@itznexus/itznexus-cli 1.44.0 → 1.45.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.
@@ -0,0 +1,2 @@
1
+ import { Command } from "commander";
2
+ export declare const agentRunCommand: Command;
@@ -0,0 +1,161 @@
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 agent runs (newest first)")
7
+ .option("--status <status>", "running | completed | failed")
8
+ .option("--skill <skill>", "Only runs of this skill (e.g. demo-build)")
9
+ .option("--project <projectId>", "Only runs linked to this project (UUID)")
10
+ .option("--page <n>", "Page number (default 1)")
11
+ .option("--page-size <n>", "Rows per page (default 100)")
12
+ .option("--json", "Output as JSON")
13
+ .action(async (opts) => {
14
+ try {
15
+ const params = new URLSearchParams();
16
+ if (opts.status)
17
+ params.set("status", opts.status);
18
+ if (opts.skill)
19
+ params.set("skill", opts.skill);
20
+ if (opts.project)
21
+ params.set("projectId", opts.project);
22
+ if (opts.page)
23
+ params.set("page", opts.page);
24
+ if (opts.pageSize)
25
+ params.set("pageSize", opts.pageSize);
26
+ const qs = params.toString();
27
+ const data = await api.get(`/agent-runs${qs ? `?${qs}` : ""}`);
28
+ printList(data, [
29
+ { key: "skill", label: "Skill", width: 16 },
30
+ { key: "status", label: "Status", width: 12 },
31
+ { key: "startedAt", label: "Started", width: 24 },
32
+ { key: "endedAt", label: "Ended", width: 24 },
33
+ { key: "id", label: "ID", width: 38 },
34
+ ], opts);
35
+ }
36
+ catch (err) {
37
+ handleError(err);
38
+ }
39
+ });
40
+ function printRun(run, opts) {
41
+ if (opts.json) {
42
+ console.log(JSON.stringify(run, null, 2));
43
+ return;
44
+ }
45
+ console.log(chalk.bold(run.skill));
46
+ printDetail(run, [
47
+ { key: "id", label: "ID" },
48
+ { key: "status", label: "Status" },
49
+ { key: "skill", label: "Skill" },
50
+ { key: "args", label: "Args" },
51
+ { key: "projectId", label: "Project" },
52
+ { key: "workspaceCommit", label: "Workspace commit" },
53
+ { key: "error", label: "Error" },
54
+ { key: "agentUserId", label: "Agent" },
55
+ { key: "startedAt", label: "Started" },
56
+ { key: "endedAt", label: "Ended" },
57
+ ], opts);
58
+ }
59
+ const getCommand = new Command("get")
60
+ .description("Get an agent run")
61
+ .argument("<id>", "Agent run ID")
62
+ .option("--json", "Output as JSON")
63
+ .action(async (id, opts) => {
64
+ try {
65
+ const data = await api.get(`/agent-runs/${id}`);
66
+ printRun(data, opts);
67
+ }
68
+ catch (err) {
69
+ handleError(err);
70
+ }
71
+ });
72
+ const startCommand = new Command("start")
73
+ .description("Record a run the caller is performing (born running, audit only)")
74
+ .requiredOption("--skill <skill>", "The skill being run (e.g. demo-build)")
75
+ .option("--args <json>", "Skill args as a JSON object")
76
+ .option("--project <projectId>", "Link to a project (UUID)")
77
+ .option("--workspace-commit <sha>", "itzworkspace HEAD at session start")
78
+ .option("--json", "Output as JSON")
79
+ .action(async (opts) => {
80
+ try {
81
+ const payload = { skill: opts.skill };
82
+ if (opts.args !== undefined) {
83
+ try {
84
+ payload.args = JSON.parse(opts.args);
85
+ }
86
+ catch {
87
+ console.error(chalk.red("✗"), "--args must be valid JSON");
88
+ process.exit(1);
89
+ }
90
+ }
91
+ if (opts.project !== undefined)
92
+ payload.projectId = opts.project;
93
+ if (opts.workspaceCommit !== undefined) {
94
+ payload.workspaceCommit = opts.workspaceCommit;
95
+ }
96
+ const data = await api.post("/agent-runs", payload);
97
+ if (opts.json) {
98
+ console.log(JSON.stringify(data, null, 2));
99
+ }
100
+ else {
101
+ console.log(chalk.green("✓"), `Agent run started: ${chalk.bold(data.id)}`);
102
+ }
103
+ }
104
+ catch (err) {
105
+ handleError(err);
106
+ }
107
+ });
108
+ const completeCommand = new Command("complete")
109
+ .description("Close a running agent run with a JSON result")
110
+ .argument("<id>", "Agent run ID")
111
+ .requiredOption("--result <json>", "Result as a JSON object")
112
+ .option("--json", "Output as JSON")
113
+ .action(async (id, opts) => {
114
+ try {
115
+ let result;
116
+ try {
117
+ result = JSON.parse(opts.result);
118
+ }
119
+ catch {
120
+ console.error(chalk.red("✗"), "--result must be valid JSON");
121
+ process.exit(1);
122
+ }
123
+ const data = await api.post(`/agent-runs/${id}/complete`, {
124
+ result,
125
+ });
126
+ if (opts.json)
127
+ console.log(JSON.stringify(data, null, 2));
128
+ else
129
+ console.log(chalk.green("✓"), "Agent run completed");
130
+ }
131
+ catch (err) {
132
+ handleError(err);
133
+ }
134
+ });
135
+ const failCommand = new Command("fail")
136
+ .description("Close a running agent run as failed")
137
+ .argument("<id>", "Agent run ID")
138
+ .requiredOption("--error <message>", "Failure reason")
139
+ .option("--json", "Output as JSON")
140
+ .action(async (id, opts) => {
141
+ try {
142
+ const data = await api.post(`/agent-runs/${id}/fail`, {
143
+ error: opts.error,
144
+ });
145
+ if (opts.json)
146
+ console.log(JSON.stringify(data, null, 2));
147
+ else
148
+ console.log(chalk.green("✓"), "Agent run failed");
149
+ }
150
+ catch (err) {
151
+ handleError(err);
152
+ }
153
+ });
154
+ export const agentRunCommand = new Command("agent-run")
155
+ .description("Audit log of worker skill runs")
156
+ .addCommand(listCommand)
157
+ .addCommand(getCommand)
158
+ .addCommand(startCommand)
159
+ .addCommand(completeCommand)
160
+ .addCommand(failCommand);
161
+ //# sourceMappingURL=agent-runs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-runs.js","sourceRoot":"","sources":["../../../src/commands/api/agent-runs.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -49,7 +49,7 @@ import { deploymentCommand } from "./commands/api/deployments.js";
49
49
  import { telemetryCommand } from "./commands/api/telemetry.js";
50
50
  import { gmailMessageCommand } from "./commands/api/gmail-messages.js";
51
51
  import { emailCaptureCommand, emailCaptureFormCommand, } from "./commands/api/email-captures.js";
52
- import { agentJobCommand } from "./commands/api/agent-jobs.js";
52
+ import { agentRunCommand } from "./commands/api/agent-runs.js";
53
53
  import { capabilityCommand } from "./commands/api/capabilities.js";
54
54
  import { awsAccountCommand } from "./commands/api/aws-accounts.js";
55
55
  // Agent commands (local logic on top of the API)
@@ -111,7 +111,7 @@ OPS
111
111
  audit-log Query audit logs
112
112
  pipeline View pipeline definitions
113
113
  notification Manage your notifications
114
- agent-job External agent work queue
114
+ agent-run Audit log of worker skill runs
115
115
  capability Browse the capability catalog
116
116
 
117
117
  AGENTS (local logic)
@@ -186,7 +186,7 @@ program.addCommand(jobCommand);
186
186
  program.addCommand(auditLogCommand);
187
187
  program.addCommand(pipelineCommand);
188
188
  program.addCommand(notificationCommand);
189
- program.addCommand(agentJobCommand);
189
+ program.addCommand(agentRunCommand);
190
190
  program.addCommand(capabilityCommand);
191
191
  // Agents
192
192
  program.addCommand(claudeCommand);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itznexus/itznexus-cli",
3
- "version": "1.44.0",
3
+ "version": "1.45.0",
4
4
  "description": "ITzNexus CLI: operational commands for ITzWorking",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -1,2 +0,0 @@
1
- import { Command } from "commander";
2
- export declare const agentJobCommand: Command;
@@ -1,213 +0,0 @@
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 agent jobs")
7
- .option("--status <status>", "pending | running | completed | failed")
8
- .option("--category <category>", "dev | pm | upwork")
9
- .option("--driver <driver>", "claude | codex")
10
- .option("--project <projectId>", "Only jobs linked to this project (UUID)")
11
- .option("--json", "Output as JSON")
12
- .action(async (opts) => {
13
- try {
14
- const params = new URLSearchParams();
15
- if (opts.status)
16
- params.set("status", opts.status);
17
- if (opts.category)
18
- params.set("category", opts.category);
19
- if (opts.driver)
20
- params.set("driver", opts.driver);
21
- if (opts.project)
22
- params.set("projectId", opts.project);
23
- const qs = params.toString();
24
- const data = await api.get(`/agent-jobs${qs ? `?${qs}` : ""}`);
25
- printList(data, [
26
- { key: "category", label: "Cat", width: 6 },
27
- { key: "driver", label: "Driver", width: 8 },
28
- { key: "status", label: "Status", width: 12 },
29
- { key: "title", label: "Title", width: 14 },
30
- { key: "mission", label: "Mission", width: 30 },
31
- { key: "createdAt", label: "Created", width: 24 },
32
- { key: "id", label: "ID", width: 38 },
33
- ], opts);
34
- }
35
- catch (err) {
36
- handleError(err);
37
- }
38
- });
39
- function printJob(job, opts) {
40
- if (opts.json) {
41
- console.log(JSON.stringify(job, null, 2));
42
- return;
43
- }
44
- console.log(chalk.bold(job.mission));
45
- printDetail(job, [
46
- { key: "id", label: "ID" },
47
- { key: "category", label: "Category" },
48
- { key: "driver", label: "Driver" },
49
- { key: "status", label: "Status" },
50
- { key: "title", label: "Title" },
51
- { key: "formatSpec", label: "Format spec" },
52
- { key: "projectId", label: "Project" },
53
- { key: "attempts", label: "Attempts" },
54
- { key: "error", label: "Error" },
55
- { key: "claimedBy", label: "Claimed by" },
56
- { key: "startedAt", label: "Started" },
57
- { key: "completedAt", label: "Completed" },
58
- { key: "createdAt", label: "Created" },
59
- ], opts);
60
- }
61
- const getCommand = new Command("get")
62
- .description("Get an agent job")
63
- .argument("<id>", "Agent job ID")
64
- .option("--json", "Output as JSON")
65
- .action(async (id, opts) => {
66
- try {
67
- const data = await api.get(`/agent-jobs/${id}`);
68
- printJob(data, opts);
69
- }
70
- catch (err) {
71
- handleError(err);
72
- }
73
- });
74
- function jobPayload(opts) {
75
- const payload = {
76
- category: opts.category,
77
- driver: opts.driver,
78
- mission: opts.mission,
79
- };
80
- if (opts.title !== undefined)
81
- payload.title = opts.title;
82
- if (opts.formatSpec !== undefined)
83
- payload.formatSpec = opts.formatSpec;
84
- if (opts.project !== undefined)
85
- payload.projectId = opts.project;
86
- return payload;
87
- }
88
- const createCommand = new Command("create")
89
- .description("Create an agent job (queued until a worker claims it)")
90
- .requiredOption("--category <category>", "dev | pm")
91
- .requiredOption("--driver <driver>", "claude | codex")
92
- .requiredOption("--mission <text>", "What the agent should do")
93
- .option("--title <text>", "Short human label for the job")
94
- .option("--format-spec <text>", "Expected output format")
95
- .option("--project <projectId>", "Link to a project (UUID, must have a slug)")
96
- .option("--json", "Output as JSON")
97
- .action(async (opts) => {
98
- try {
99
- const data = await api.post("/agent-jobs", jobPayload(opts));
100
- if (opts.json) {
101
- console.log(JSON.stringify(data, null, 2));
102
- }
103
- else {
104
- console.log(chalk.green("✓"), `Agent job created: ${chalk.bold(data.id)}`);
105
- }
106
- }
107
- catch (err) {
108
- handleError(err);
109
- }
110
- });
111
- const startCommand = new Command("start")
112
- .description("Record a run the caller is already performing (born running, claimed by the caller)")
113
- .requiredOption("--category <category>", "dev | pm | upwork")
114
- .requiredOption("--driver <driver>", "claude | codex")
115
- .requiredOption("--mission <text>", "What the run is doing")
116
- .option("--title <text>", "Short human label for the run")
117
- .option("--format-spec <text>", "Expected output format")
118
- .option("--project <projectId>", "Link to a project (UUID)")
119
- .option("--json", "Output as JSON")
120
- .action(async (opts) => {
121
- try {
122
- const data = await api.post("/agent-jobs/start", jobPayload(opts));
123
- if (opts.json) {
124
- console.log(JSON.stringify(data, null, 2));
125
- }
126
- else {
127
- console.log(chalk.green("✓"), `Agent run started: ${chalk.bold(data.id)}`);
128
- }
129
- }
130
- catch (err) {
131
- handleError(err);
132
- }
133
- });
134
- const claimCommand = new Command("claim")
135
- .description("Claim the oldest pending job of a category")
136
- .requiredOption("--category <category>", "dev | pm")
137
- .option("--json", "Output as JSON")
138
- .action(async (opts) => {
139
- try {
140
- const data = await api.post("/agent-jobs/claim", {
141
- category: opts.category,
142
- });
143
- if (opts.json) {
144
- console.log(JSON.stringify(data, null, 2));
145
- return;
146
- }
147
- if (!data) {
148
- console.log(chalk.dim("No pending jobs to claim."));
149
- return;
150
- }
151
- console.log(chalk.green("✓"), `Claimed ${chalk.bold(data.id)}`);
152
- printJob(data, opts);
153
- }
154
- catch (err) {
155
- handleError(err);
156
- }
157
- });
158
- const completeCommand = new Command("complete")
159
- .description("Mark a claimed job complete with a JSON result")
160
- .argument("<id>", "Agent job ID")
161
- .requiredOption("--result <json>", "Result as a JSON object")
162
- .option("--json", "Output as JSON")
163
- .action(async (id, opts) => {
164
- try {
165
- let result;
166
- try {
167
- result = JSON.parse(opts.result);
168
- }
169
- catch {
170
- console.error(chalk.red("✗"), "--result must be valid JSON");
171
- process.exit(1);
172
- }
173
- const data = await api.post(`/agent-jobs/${id}/complete`, {
174
- result,
175
- });
176
- if (opts.json)
177
- console.log(JSON.stringify(data, null, 2));
178
- else
179
- console.log(chalk.green("✓"), "Agent job completed");
180
- }
181
- catch (err) {
182
- handleError(err);
183
- }
184
- });
185
- const failCommand = new Command("fail")
186
- .description("Mark a claimed job failed (requeues until max attempts)")
187
- .argument("<id>", "Agent job ID")
188
- .requiredOption("--error <message>", "Failure reason")
189
- .option("--json", "Output as JSON")
190
- .action(async (id, opts) => {
191
- try {
192
- const data = await api.post(`/agent-jobs/${id}/fail`, {
193
- error: opts.error,
194
- });
195
- if (opts.json)
196
- console.log(JSON.stringify(data, null, 2));
197
- else
198
- console.log(chalk.green("✓"), data.status === "failed" ? "Agent job failed" : "Agent job requeued");
199
- }
200
- catch (err) {
201
- handleError(err);
202
- }
203
- });
204
- export const agentJobCommand = new Command("agent-job")
205
- .description("Manage the external agent work queue")
206
- .addCommand(listCommand)
207
- .addCommand(getCommand)
208
- .addCommand(createCommand)
209
- .addCommand(startCommand)
210
- .addCommand(claimCommand)
211
- .addCommand(completeCommand)
212
- .addCommand(failCommand);
213
- //# sourceMappingURL=agent-jobs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-jobs.js","sourceRoot":"","sources":["../../../src/commands/api/agent-jobs.ts"],"names":[],"mappings":"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"}