@uluops/cli 0.2.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/LICENSE +21 -0
  2. package/README.md +825 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +93 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/analytics.d.ts +6 -0
  8. package/dist/commands/analytics.d.ts.map +1 -0
  9. package/dist/commands/analytics.js +445 -0
  10. package/dist/commands/analytics.js.map +1 -0
  11. package/dist/commands/auth.d.ts +6 -0
  12. package/dist/commands/auth.d.ts.map +1 -0
  13. package/dist/commands/auth.js +496 -0
  14. package/dist/commands/auth.js.map +1 -0
  15. package/dist/commands/completion.d.ts +7 -0
  16. package/dist/commands/completion.d.ts.map +1 -0
  17. package/dist/commands/completion.js +188 -0
  18. package/dist/commands/completion.js.map +1 -0
  19. package/dist/commands/config.d.ts +6 -0
  20. package/dist/commands/config.d.ts.map +1 -0
  21. package/dist/commands/config.js +279 -0
  22. package/dist/commands/config.js.map +1 -0
  23. package/dist/commands/definitions.d.ts +6 -0
  24. package/dist/commands/definitions.d.ts.map +1 -0
  25. package/dist/commands/definitions.js +229 -0
  26. package/dist/commands/definitions.js.map +1 -0
  27. package/dist/commands/deps.d.ts +6 -0
  28. package/dist/commands/deps.d.ts.map +1 -0
  29. package/dist/commands/deps.js +87 -0
  30. package/dist/commands/deps.js.map +1 -0
  31. package/dist/commands/exec.d.ts +6 -0
  32. package/dist/commands/exec.d.ts.map +1 -0
  33. package/dist/commands/exec.js +334 -0
  34. package/dist/commands/exec.js.map +1 -0
  35. package/dist/commands/executions.d.ts +6 -0
  36. package/dist/commands/executions.d.ts.map +1 -0
  37. package/dist/commands/executions.js +63 -0
  38. package/dist/commands/executions.js.map +1 -0
  39. package/dist/commands/forks.d.ts +6 -0
  40. package/dist/commands/forks.d.ts.map +1 -0
  41. package/dist/commands/forks.js +145 -0
  42. package/dist/commands/forks.js.map +1 -0
  43. package/dist/commands/issues.d.ts +6 -0
  44. package/dist/commands/issues.d.ts.map +1 -0
  45. package/dist/commands/issues.js +458 -0
  46. package/dist/commands/issues.js.map +1 -0
  47. package/dist/commands/models.d.ts +6 -0
  48. package/dist/commands/models.d.ts.map +1 -0
  49. package/dist/commands/models.js +156 -0
  50. package/dist/commands/models.js.map +1 -0
  51. package/dist/commands/projects.d.ts +6 -0
  52. package/dist/commands/projects.d.ts.map +1 -0
  53. package/dist/commands/projects.js +262 -0
  54. package/dist/commands/projects.js.map +1 -0
  55. package/dist/commands/render.d.ts +6 -0
  56. package/dist/commands/render.d.ts.map +1 -0
  57. package/dist/commands/render.js +59 -0
  58. package/dist/commands/render.js.map +1 -0
  59. package/dist/commands/runs.d.ts +6 -0
  60. package/dist/commands/runs.d.ts.map +1 -0
  61. package/dist/commands/runs.js +442 -0
  62. package/dist/commands/runs.js.map +1 -0
  63. package/dist/commands/taxonomy.d.ts +6 -0
  64. package/dist/commands/taxonomy.d.ts.map +1 -0
  65. package/dist/commands/taxonomy.js +45 -0
  66. package/dist/commands/taxonomy.js.map +1 -0
  67. package/dist/commands/translation.d.ts +6 -0
  68. package/dist/commands/translation.d.ts.map +1 -0
  69. package/dist/commands/translation.js +85 -0
  70. package/dist/commands/translation.js.map +1 -0
  71. package/dist/commands/versions.d.ts +6 -0
  72. package/dist/commands/versions.d.ts.map +1 -0
  73. package/dist/commands/versions.js +61 -0
  74. package/dist/commands/versions.js.map +1 -0
  75. package/dist/context.d.ts +85 -0
  76. package/dist/context.d.ts.map +1 -0
  77. package/dist/context.js +386 -0
  78. package/dist/context.js.map +1 -0
  79. package/dist/formatters/core.d.ts +31 -0
  80. package/dist/formatters/core.d.ts.map +1 -0
  81. package/dist/formatters/core.js +176 -0
  82. package/dist/formatters/core.js.map +1 -0
  83. package/dist/formatters/ops.d.ts +43 -0
  84. package/dist/formatters/ops.d.ts.map +1 -0
  85. package/dist/formatters/ops.js +112 -0
  86. package/dist/formatters/ops.js.map +1 -0
  87. package/dist/formatters/registry.d.ts +41 -0
  88. package/dist/formatters/registry.d.ts.map +1 -0
  89. package/dist/formatters/registry.js +167 -0
  90. package/dist/formatters/registry.js.map +1 -0
  91. package/dist/formatters/table.d.ts +18 -0
  92. package/dist/formatters/table.d.ts.map +1 -0
  93. package/dist/formatters/table.js +76 -0
  94. package/dist/formatters/table.js.map +1 -0
  95. package/dist/utils.d.ts +99 -0
  96. package/dist/utils.d.ts.map +1 -0
  97. package/dist/utils.js +201 -0
  98. package/dist/utils.js.map +1 -0
  99. package/package.json +57 -0
@@ -0,0 +1,334 @@
1
+ import { writeFile, mkdir } from 'node:fs/promises';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { createCoreContext, handleCoreError } from '../context.js';
4
+ import { withSpinner, parseIntOption, parseFloatOption } from '../utils.js';
5
+ import { formatAgentResult, formatExecutionResult, formatDefinitionList, formatDefinitionDetails, } from '../formatters/core.js';
6
+ /**
7
+ * Get merged options from the exec parent command and the subcommand
8
+ */
9
+ function getMergedOptions(cmd) {
10
+ // Commander nests parent options — walk up to get them
11
+ const parentOpts = cmd.parent?.opts() ?? {};
12
+ const grandParentOpts = cmd.parent?.parent?.opts() ?? {};
13
+ return { ...grandParentOpts, ...parentOpts, ...cmd.opts() };
14
+ }
15
+ /**
16
+ * Build ExecutionOptions from CLI flags
17
+ */
18
+ function buildExecOptions(opts) {
19
+ const execOpts = {};
20
+ let hasOptions = false;
21
+ if (opts.model) {
22
+ execOpts.model = opts.model;
23
+ hasOptions = true;
24
+ }
25
+ if (opts.maxTokens) {
26
+ execOpts.maxTokens = parseIntOption(opts.maxTokens, '--max-tokens');
27
+ hasOptions = true;
28
+ }
29
+ if (opts.thresholdPass !== undefined) {
30
+ execOpts.thresholds = { ...execOpts.thresholds, pass: Number(opts.thresholdPass) };
31
+ hasOptions = true;
32
+ }
33
+ if (opts.thresholdWarn !== undefined) {
34
+ execOpts.thresholds = { ...execOpts.thresholds, warn: Number(opts.thresholdWarn) };
35
+ hasOptions = true;
36
+ }
37
+ if (opts.project) {
38
+ execOpts.project = opts.project;
39
+ hasOptions = true;
40
+ }
41
+ if (opts.tracking === false) {
42
+ execOpts.trackResults = false;
43
+ hasOptions = true;
44
+ }
45
+ if (opts.temperature !== undefined) {
46
+ execOpts.temperature = parseFloatOption(opts.temperature, '--temperature');
47
+ hasOptions = true;
48
+ }
49
+ if (opts.maxSteps) {
50
+ execOpts.maxSteps = parseIntOption(opts.maxSteps, '--max-steps');
51
+ hasOptions = true;
52
+ }
53
+ if (opts.timeout) {
54
+ execOpts.timeoutMs = parseIntOption(opts.timeout, '--timeout');
55
+ hasOptions = true;
56
+ }
57
+ return hasOptions ? execOpts : undefined;
58
+ }
59
+ /**
60
+ * Write agent report and/or features list files if CLI flags are set.
61
+ */
62
+ async function writeReportFiles(result, opts) {
63
+ if (opts.report && typeof opts.report === 'string') {
64
+ const reportPath = resolve(opts.report);
65
+ if (result.rawOutput) {
66
+ await mkdir(dirname(reportPath), { recursive: true });
67
+ await writeFile(reportPath, result.rawOutput, 'utf-8');
68
+ console.log(`Report written to ${reportPath}`);
69
+ }
70
+ else {
71
+ console.log('No raw output available to write (agent may have hit step limit)');
72
+ }
73
+ }
74
+ if (opts.featuresList && typeof opts.featuresList === 'string') {
75
+ const featuresPath = resolve(opts.featuresList);
76
+ const features = {
77
+ agent: result.name,
78
+ version: result.version,
79
+ decision: result.decision,
80
+ score: result.agentType === 'validator' ? result.score : undefined,
81
+ maxScore: result.agentType === 'validator' ? result.maxScore : undefined,
82
+ recommendations: result.recommendations,
83
+ metrics: {
84
+ durationMs: result.durationMs,
85
+ model: result.metrics.model,
86
+ inputTokens: result.metrics.inputTokens,
87
+ outputTokens: result.metrics.outputTokens,
88
+ totalEffectiveTokens: result.metrics.totalEffectiveTokens,
89
+ },
90
+ };
91
+ await mkdir(dirname(featuresPath), { recursive: true });
92
+ await writeFile(featuresPath, JSON.stringify(features, null, 2), 'utf-8');
93
+ console.log(`Features list written to ${featuresPath}`);
94
+ }
95
+ }
96
+ /**
97
+ * Register exec commands for core SDK execution
98
+ */
99
+ export function registerExecCommands(program) {
100
+ const exec = program
101
+ .command('exec')
102
+ .description('Execute agents, commands, and workflows via @uluops/core SDK')
103
+ .option('--local-definitions <dir>', 'Local YAML definitions directory')
104
+ .option('--registry-url <url>', 'Override registry URL')
105
+ .option('--project <name>', 'Project name for result tracking')
106
+ .option('--no-tracking', 'Disable validation service submission');
107
+ // ── exec run ────────────────────────────────────────────────────────────
108
+ exec
109
+ .command('run <name> <target>')
110
+ .description('Execute a definition (auto-detects type)')
111
+ .option('-m, --model <model>', 'Model override for all agents (alias, tier, or provider:modelId)')
112
+ .option('-p, --prompt <text>', 'Operator directive or context for the agent')
113
+ .action(async (name, target, cmdOpts, cmd) => {
114
+ const options = getMergedOptions(cmd);
115
+ const modelOverride = cmdOpts['model'];
116
+ const prompt = cmdOpts['prompt'];
117
+ const ctx = createCoreContext(options, modelOverride);
118
+ try {
119
+ const result = await withSpinner(ctx, {
120
+ start: `Executing ${name} against ${target}...`,
121
+ success: `Execution complete`,
122
+ failure: `Execution failed`,
123
+ }, () => ctx.client.run(name, { target, prompt }));
124
+ if (ctx.json) {
125
+ console.log(JSON.stringify(result, null, 2));
126
+ }
127
+ else if (result.type === 'agent') {
128
+ console.log(formatAgentResult(result));
129
+ }
130
+ else {
131
+ console.log(formatExecutionResult(result));
132
+ }
133
+ }
134
+ catch (error) {
135
+ handleCoreError(error, ctx);
136
+ }
137
+ });
138
+ // ── exec agent ──────────────────────────────────────────────────────────
139
+ exec
140
+ .command('agent <names...>')
141
+ .description('Execute one or more agent definitions (runs in parallel when multiple)')
142
+ .requiredOption('-t, --target <path>', 'Target directory to analyze')
143
+ .option('-m, --model <model>', 'Model override (alias, tier, or provider:modelId)')
144
+ .option('--max-tokens <n>', 'Maximum response tokens')
145
+ .option('--max-steps <n>', 'Maximum tool loop iterations (default: 50)')
146
+ .option('--temperature <n>', 'Generation temperature 0-1 (default: 0)')
147
+ .option('--timeout <ms>', 'Execution timeout in milliseconds')
148
+ .option('--threshold-pass <n>', 'Pass threshold score (agents)')
149
+ .option('--threshold-warn <n>', 'Warning threshold score (agents)')
150
+ .option('--report <path>', 'Write raw agent output report to file (single agent only)')
151
+ .option('--features-list <path>', 'Write structured features/recommendations to file (single agent only)')
152
+ .option('-p, --prompt <text>', 'Operator directive or context for the agent')
153
+ .action(async (names, cmdOpts, cmd) => {
154
+ const options = getMergedOptions(cmd);
155
+ const ctx = createCoreContext(options);
156
+ const execOpts = buildExecOptions({ ...cmdOpts, ...options });
157
+ const target = cmd.opts()['target'];
158
+ const prompt = cmdOpts['prompt'];
159
+ const agentNames = names.filter(Boolean);
160
+ // Single agent — original behavior
161
+ if (agentNames.length === 1) {
162
+ const agentName = agentNames[0];
163
+ try {
164
+ const result = await withSpinner(ctx, {
165
+ start: `Running agent ${agentName} against ${target}...`,
166
+ success: `Agent execution complete`,
167
+ failure: `Agent execution failed`,
168
+ }, () => ctx.client.runAgent(agentName, { target, prompt }, execOpts));
169
+ if (ctx.json) {
170
+ console.log(JSON.stringify(result, null, 2));
171
+ }
172
+ else {
173
+ console.log(formatAgentResult(result));
174
+ }
175
+ await writeReportFiles(result, cmdOpts);
176
+ }
177
+ catch (error) {
178
+ handleCoreError(error, ctx);
179
+ }
180
+ return;
181
+ }
182
+ // Multiple agents — run in parallel
183
+ console.log(`Running ${agentNames.length} agents in parallel against ${target}...\n`);
184
+ const results = await Promise.allSettled(agentNames.map(name => ctx.client.runAgent(name, { target, prompt }, execOpts)
185
+ .then(result => ({ name, result }))));
186
+ const succeeded = [];
187
+ const failed = [];
188
+ for (let i = 0; i < results.length; i++) {
189
+ const outcome = results[i];
190
+ if (outcome.status === 'fulfilled') {
191
+ succeeded.push(outcome.value.result);
192
+ }
193
+ else if (outcome.status === 'rejected') {
194
+ const reason = outcome.reason;
195
+ failed.push({ name: agentNames[i] ?? 'unknown', error: reason instanceof Error ? reason.message : String(reason) });
196
+ }
197
+ }
198
+ if (ctx.json) {
199
+ console.log(JSON.stringify({ succeeded, failed }, null, 2));
200
+ }
201
+ else {
202
+ for (const result of succeeded) {
203
+ console.log('─'.repeat(60));
204
+ console.log(formatAgentResult(result));
205
+ console.log('');
206
+ }
207
+ if (failed.length > 0) {
208
+ console.log('─'.repeat(60));
209
+ console.log('Failed:');
210
+ for (const f of failed) {
211
+ console.log(` ${f.name}: ${f.error}`);
212
+ }
213
+ }
214
+ // Summary
215
+ console.log('─'.repeat(60));
216
+ const avgScore = succeeded.length > 0
217
+ ? (succeeded.reduce((sum, r) => sum + (r.score ?? 0), 0) / succeeded.length).toFixed(1)
218
+ : '-';
219
+ console.log(`\n${succeeded.length}/${agentNames.length} agents completed | Average score: ${avgScore}`);
220
+ }
221
+ });
222
+ // ── exec command ────────────────────────────────────────────────────────
223
+ exec
224
+ .command('command <name> <target>')
225
+ .description('Execute a saved command configuration')
226
+ .option('-m, --model <model>', 'Model override (overrides command definition default)')
227
+ .option('-p, --prompt <text>', 'Operator directive or context for the agent')
228
+ .action(async (name, target, cmdOpts, cmd) => {
229
+ const options = getMergedOptions(cmd);
230
+ const ctx = createCoreContext(options);
231
+ const modelOverride = cmdOpts['model'];
232
+ const prompt = cmdOpts['prompt'];
233
+ try {
234
+ const result = await withSpinner(ctx, {
235
+ start: `Running command ${name} against ${target}...`,
236
+ success: `Command execution complete`,
237
+ failure: `Command execution failed`,
238
+ }, () => ctx.client.runCommand(name, { target, prompt }, modelOverride ? { model: modelOverride } : undefined));
239
+ if (ctx.json) {
240
+ console.log(JSON.stringify(result, null, 2));
241
+ }
242
+ else {
243
+ console.log(formatExecutionResult(result));
244
+ }
245
+ }
246
+ catch (error) {
247
+ handleCoreError(error, ctx);
248
+ }
249
+ });
250
+ // ── exec workflow ───────────────────────────────────────────────────────
251
+ exec
252
+ .command('workflow <name> <target>')
253
+ .description('Execute a multi-phase workflow')
254
+ .option('-m, --model <model>', 'Model override for all phases (alias, tier, or provider:modelId)')
255
+ .option('-p, --prompt <text>', 'Operator directive or context for the agent')
256
+ .action(async (name, target, cmdOpts, cmd) => {
257
+ const options = getMergedOptions(cmd);
258
+ const modelOverride = cmdOpts['model'];
259
+ const prompt = cmdOpts['prompt'];
260
+ const ctx = createCoreContext(options, modelOverride);
261
+ try {
262
+ const result = await withSpinner(ctx, {
263
+ start: `Running workflow ${name} against ${target}...`,
264
+ success: `Workflow execution complete`,
265
+ failure: `Workflow execution failed`,
266
+ }, () => ctx.client.runWorkflow(name, { target, prompt }));
267
+ if (ctx.json) {
268
+ console.log(JSON.stringify(result, null, 2));
269
+ }
270
+ else {
271
+ console.log(formatExecutionResult(result));
272
+ }
273
+ }
274
+ catch (error) {
275
+ handleCoreError(error, ctx);
276
+ }
277
+ });
278
+ // ── exec list ───────────────────────────────────────────────────────────
279
+ exec
280
+ .command('list')
281
+ .description('List available definitions')
282
+ .option('-t, --type <type>', 'Filter by type (agent, command, workflow, pipeline)')
283
+ .option('-d, --domain <domain>', 'Filter by domain')
284
+ .action(async (cmdOpts, cmd) => {
285
+ const options = getMergedOptions(cmd);
286
+ const ctx = createCoreContext(options);
287
+ const filter = {};
288
+ if (cmdOpts.type)
289
+ filter.type = cmdOpts.type;
290
+ if (cmdOpts.domain)
291
+ filter.domain = cmdOpts.domain;
292
+ try {
293
+ const items = await withSpinner(ctx, {
294
+ start: 'Fetching definitions...',
295
+ success: 'Definitions loaded',
296
+ failure: 'Failed to fetch definitions',
297
+ }, () => ctx.client.list(Object.keys(filter).length > 0 ? filter : undefined));
298
+ if (ctx.json) {
299
+ console.log(JSON.stringify(items, null, 2));
300
+ }
301
+ else {
302
+ console.log(formatDefinitionList(items));
303
+ }
304
+ }
305
+ catch (error) {
306
+ handleCoreError(error, ctx);
307
+ }
308
+ });
309
+ // ── exec describe ───────────────────────────────────────────────────────
310
+ exec
311
+ .command('describe <name>')
312
+ .description('Inspect a definition\'s metadata and interface')
313
+ .action(async (name, _cmdOpts, cmd) => {
314
+ const options = getMergedOptions(cmd);
315
+ const ctx = createCoreContext(options);
316
+ try {
317
+ const details = await withSpinner(ctx, {
318
+ start: `Resolving ${name}...`,
319
+ success: `Definition resolved`,
320
+ failure: `Failed to resolve definition`,
321
+ }, () => ctx.client.describe(name));
322
+ if (ctx.json) {
323
+ console.log(JSON.stringify(details, null, 2));
324
+ }
325
+ else {
326
+ console.log(formatDefinitionDetails(details));
327
+ }
328
+ }
329
+ catch (error) {
330
+ handleCoreError(error, ctx);
331
+ }
332
+ });
333
+ }
334
+ //# sourceMappingURL=exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/commands/exec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Register execution commands
4
+ */
5
+ export declare function registerExecutionCommands(program: Command): void;
6
+ //# sourceMappingURL=executions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executions.d.ts","sourceRoot":"","sources":["../../src/commands/executions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiEhE"}
@@ -0,0 +1,63 @@
1
+ import { createRegistryContext, handleRegistryError } from '../context.js';
2
+ import { withSpinner, parseIntOption } from '../utils.js';
3
+ /**
4
+ * Register execution commands
5
+ */
6
+ export function registerExecutionCommands(program) {
7
+ const executions = program
8
+ .command('executions')
9
+ .description('Track definition execution metrics');
10
+ // ulu executions record <type> <name> <version>
11
+ executions
12
+ .command('record <type> <name> <version>')
13
+ .description('Record an execution of a definition')
14
+ .requiredOption('-s, --source <source>', 'Execution source identifier')
15
+ .option('--run-id <id>', 'Run ID for idempotency')
16
+ .action(async (type, name, version, options, cmd) => {
17
+ const globalOpts = cmd.optsWithGlobals();
18
+ const ctx = createRegistryContext(globalOpts);
19
+ try {
20
+ const result = await withSpinner(ctx, { start: 'Recording execution...', success: 'Execution recorded', failure: 'Failed to record execution' }, () => ctx.client.executions.record(type, name, version, {
21
+ source: options.source,
22
+ runId: options.runId,
23
+ }));
24
+ if (ctx.json) {
25
+ console.log(JSON.stringify(result, null, 2));
26
+ }
27
+ else {
28
+ console.log(`Execution recorded for ${type}/${name}@${version}`);
29
+ console.log(`Count: ${result.executionCount}`);
30
+ if (result.duplicate)
31
+ console.log('(duplicate execution)');
32
+ }
33
+ }
34
+ catch (error) {
35
+ handleRegistryError(error, ctx);
36
+ }
37
+ });
38
+ // ulu executions stats <type> <name> <version>
39
+ executions
40
+ .command('stats <type> <name> <version>')
41
+ .description('Get execution statistics')
42
+ .option('-w, --window <minutes>', 'Time window in minutes (1-10080)', '60')
43
+ .action(async (type, name, version, options, cmd) => {
44
+ const globalOpts = cmd.optsWithGlobals();
45
+ const ctx = createRegistryContext(globalOpts);
46
+ try {
47
+ const stats = await withSpinner(ctx, { start: 'Fetching execution stats...', failure: 'Failed to fetch stats' }, () => ctx.client.executions.getStats(type, name, version, parseIntOption(options.window, '--window')));
48
+ if (ctx.json) {
49
+ console.log(JSON.stringify(stats, null, 2));
50
+ }
51
+ else {
52
+ console.log(`Execution stats for ${type}/${name}@${version}:\n`);
53
+ console.log(` Total: ${stats.totalCount}`);
54
+ console.log(` Recent: ${stats.recentCount}`);
55
+ console.log(` Window: ${stats.windowMinutes} minutes`);
56
+ }
57
+ }
58
+ catch (error) {
59
+ handleRegistryError(error, ctx);
60
+ }
61
+ });
62
+ }
63
+ //# sourceMappingURL=executions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executions.js","sourceRoot":"","sources":["../../src/commands/executions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Register fork commands
4
+ */
5
+ export declare function registerForkCommands(program: Command): void;
6
+ //# sourceMappingURL=forks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forks.d.ts","sourceRoot":"","sources":["../../src/commands/forks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2J3D"}
@@ -0,0 +1,145 @@
1
+ import { createRegistryContext, handleRegistryError } from '../context.js';
2
+ import { withSpinner, asFlexibleResponse } from '../utils.js';
3
+ /**
4
+ * Register fork commands
5
+ */
6
+ export function registerForkCommands(program) {
7
+ const forks = program
8
+ .command('forks')
9
+ .description('Manage definition forks');
10
+ // ulu forks list <type> <name> <version>
11
+ forks
12
+ .command('list <type> <name> <version>')
13
+ .description('List forks of a definition')
14
+ .action(async (type, name, version, _, cmd) => {
15
+ const globalOpts = cmd.optsWithGlobals();
16
+ const ctx = createRegistryContext(globalOpts);
17
+ try {
18
+ const result = await withSpinner(ctx, { start: 'Fetching forks...', failure: 'Failed to fetch forks' }, () => ctx.client.forks.list(type, name, version));
19
+ if (ctx.json) {
20
+ console.log(JSON.stringify(result, null, 2));
21
+ }
22
+ else {
23
+ if (result.forks.length === 0) {
24
+ console.log('No forks found');
25
+ }
26
+ else {
27
+ for (const entry of result.forks) {
28
+ const d = entry.definition;
29
+ if (d) {
30
+ console.log(` ${d.type}/${d.name}@${d.version} (${d.authorId.slice(0, 8)})`);
31
+ }
32
+ }
33
+ console.log(`\n${result.totalForks} fork(s)`);
34
+ }
35
+ }
36
+ }
37
+ catch (error) {
38
+ handleRegistryError(error, ctx);
39
+ }
40
+ });
41
+ // ulu forks create <type> <name> <version>
42
+ forks
43
+ .command('create <type> <name> <version>')
44
+ .description('Fork a definition')
45
+ .requiredOption('-n, --fork-name <name>', 'Name for the forked definition')
46
+ .option('--visibility <visibility>', 'Visibility (public|private)', 'private')
47
+ .option('--display-name <name>', 'Display name for the fork')
48
+ .option('--description <text>', 'Description for the fork')
49
+ .action(async (type, name, version, options, cmd) => {
50
+ const globalOpts = cmd.optsWithGlobals();
51
+ const ctx = createRegistryContext(globalOpts);
52
+ try {
53
+ const result = await withSpinner(ctx, { start: 'Forking definition...', success: 'Definition forked', failure: 'Failed to fork definition' }, () => ctx.client.forks.create(type, name, version, {
54
+ name: options.forkName,
55
+ visibility: options.visibility,
56
+ displayName: options.displayName,
57
+ description: options.description,
58
+ }));
59
+ if (ctx.json) {
60
+ console.log(JSON.stringify(result, null, 2));
61
+ }
62
+ else {
63
+ console.log(`Forked as: ${result.definition.type}/${result.definition.name}@${result.definition.version}`);
64
+ }
65
+ }
66
+ catch (error) {
67
+ handleRegistryError(error, ctx);
68
+ }
69
+ });
70
+ // ulu forks check <type> <name> <version>
71
+ forks
72
+ .command('check <type> <name> <version>')
73
+ .description('Check if a definition can be forked')
74
+ .action(async (type, name, version, _, cmd) => {
75
+ const globalOpts = cmd.optsWithGlobals();
76
+ const ctx = createRegistryContext(globalOpts);
77
+ try {
78
+ const result = await withSpinner(ctx, { start: 'Checking...', failure: 'Failed to check forkability' }, () => ctx.client.forks.isForkable(type, name, version));
79
+ if (ctx.json) {
80
+ console.log(JSON.stringify(result, null, 2));
81
+ }
82
+ else {
83
+ console.log(`Forkable: ${result.canFork ? 'Yes' : 'No'}`);
84
+ if (result.reason) {
85
+ console.log(`Reason: ${result.reason}`);
86
+ }
87
+ if (result.requiresSubscription) {
88
+ console.log('Note: Requires a subscription upgrade');
89
+ }
90
+ }
91
+ }
92
+ catch (error) {
93
+ handleRegistryError(error, ctx);
94
+ }
95
+ });
96
+ // ulu forks lineage <type> <name> <version>
97
+ forks
98
+ .command('lineage <type> <name> <version>')
99
+ .description('Show fork lineage chain')
100
+ .action(async (type, name, version, _, cmd) => {
101
+ const globalOpts = cmd.optsWithGlobals();
102
+ const ctx = createRegistryContext(globalOpts);
103
+ try {
104
+ const result = await withSpinner(ctx, { start: 'Fetching lineage...', failure: 'Failed to fetch lineage' }, () => ctx.client.forks.getAncestry(type, name, version));
105
+ if (ctx.json) {
106
+ console.log(JSON.stringify(result, null, 2));
107
+ }
108
+ else {
109
+ // API may return { isFork, fork, source } or { chain, current, source }
110
+ const lineage = asFlexibleResponse(result);
111
+ if (result.chain) {
112
+ console.log('Fork Lineage:');
113
+ for (const item of result.chain) {
114
+ console.log(` ${item.type}/${item.name}@${item.version} (${item.status})`);
115
+ }
116
+ if (result.current) {
117
+ console.log(` -> ${result.current.type}/${result.current.name}@${result.current.version} (current)`);
118
+ }
119
+ }
120
+ else if (lineage.isFork) {
121
+ console.log('Fork Lineage:');
122
+ const src = lineage.source;
123
+ if (src) {
124
+ console.log(` Source: ${src.type}/${src.name}@${src.version}`);
125
+ }
126
+ console.log(` -> ${type}/${name}@${version} (current fork)`);
127
+ const fork = lineage.fork;
128
+ if (fork?.forkedAt) {
129
+ console.log(`\n Forked at: ${new Date(fork.forkedAt).toLocaleString()}`);
130
+ }
131
+ }
132
+ else {
133
+ console.log('This definition is not a fork');
134
+ }
135
+ if (result.source && !result.chain) {
136
+ console.log(`\nOriginal source: ${result.source.type}/${result.source.name}@${result.source.version}`);
137
+ }
138
+ }
139
+ }
140
+ catch (error) {
141
+ handleRegistryError(error, ctx);
142
+ }
143
+ });
144
+ }
145
+ //# sourceMappingURL=forks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forks.js","sourceRoot":"","sources":["../../src/commands/forks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Register issue commands
4
+ */
5
+ export declare function registerIssueCommands(program: Command): void;
6
+ //# sourceMappingURL=issues.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/commands/issues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsgB5D"}