@respan/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 (100) hide show
  1. package/bin/dev.js +3 -0
  2. package/bin/run.js +10 -0
  3. package/dist/commands/auth/login.d.ts +14 -0
  4. package/dist/commands/auth/login.js +26 -0
  5. package/dist/commands/auth/logout.d.ts +12 -0
  6. package/dist/commands/auth/logout.js +18 -0
  7. package/dist/commands/auth/status.d.ts +12 -0
  8. package/dist/commands/auth/status.js +24 -0
  9. package/dist/commands/config/get.d.ts +15 -0
  10. package/dist/commands/config/get.js +15 -0
  11. package/dist/commands/config/list.d.ts +12 -0
  12. package/dist/commands/config/list.js +18 -0
  13. package/dist/commands/config/set.d.ts +16 -0
  14. package/dist/commands/config/set.js +18 -0
  15. package/dist/commands/datasets/add-spans.d.ts +16 -0
  16. package/dist/commands/datasets/add-spans.js +24 -0
  17. package/dist/commands/datasets/create-span.d.ts +16 -0
  18. package/dist/commands/datasets/create-span.js +36 -0
  19. package/dist/commands/datasets/create.d.ts +14 -0
  20. package/dist/commands/datasets/create.js +26 -0
  21. package/dist/commands/datasets/get-span.d.ts +16 -0
  22. package/dist/commands/datasets/get-span.js +23 -0
  23. package/dist/commands/datasets/get.d.ts +15 -0
  24. package/dist/commands/datasets/get.js +20 -0
  25. package/dist/commands/datasets/list.d.ts +14 -0
  26. package/dist/commands/datasets/list.js +23 -0
  27. package/dist/commands/datasets/spans.d.ts +15 -0
  28. package/dist/commands/datasets/spans.js +20 -0
  29. package/dist/commands/datasets/update.d.ts +17 -0
  30. package/dist/commands/datasets/update.js +32 -0
  31. package/dist/commands/evaluators/create.d.ts +16 -0
  32. package/dist/commands/evaluators/create.js +38 -0
  33. package/dist/commands/evaluators/get.d.ts +15 -0
  34. package/dist/commands/evaluators/get.js +20 -0
  35. package/dist/commands/evaluators/list.d.ts +14 -0
  36. package/dist/commands/evaluators/list.js +26 -0
  37. package/dist/commands/evaluators/run.d.ts +18 -0
  38. package/dist/commands/evaluators/run.js +41 -0
  39. package/dist/commands/evaluators/update.d.ts +18 -0
  40. package/dist/commands/evaluators/update.js +41 -0
  41. package/dist/commands/experiments/create.d.ts +16 -0
  42. package/dist/commands/experiments/create.js +39 -0
  43. package/dist/commands/experiments/get.d.ts +15 -0
  44. package/dist/commands/experiments/get.js +20 -0
  45. package/dist/commands/experiments/list.d.ts +14 -0
  46. package/dist/commands/experiments/list.js +23 -0
  47. package/dist/commands/logs/create.d.ts +16 -0
  48. package/dist/commands/logs/create.js +38 -0
  49. package/dist/commands/logs/get.d.ts +15 -0
  50. package/dist/commands/logs/get.js +20 -0
  51. package/dist/commands/logs/list.d.ts +18 -0
  52. package/dist/commands/logs/list.js +51 -0
  53. package/dist/commands/logs/summary.d.ts +14 -0
  54. package/dist/commands/logs/summary.js +23 -0
  55. package/dist/commands/prompts/create-version.d.ts +19 -0
  56. package/dist/commands/prompts/create-version.js +44 -0
  57. package/dist/commands/prompts/create.d.ts +14 -0
  58. package/dist/commands/prompts/create.js +26 -0
  59. package/dist/commands/prompts/get.d.ts +15 -0
  60. package/dist/commands/prompts/get.js +20 -0
  61. package/dist/commands/prompts/list.d.ts +13 -0
  62. package/dist/commands/prompts/list.js +22 -0
  63. package/dist/commands/prompts/update.d.ts +17 -0
  64. package/dist/commands/prompts/update.js +32 -0
  65. package/dist/commands/prompts/versions.d.ts +15 -0
  66. package/dist/commands/prompts/versions.js +20 -0
  67. package/dist/commands/traces/get.d.ts +15 -0
  68. package/dist/commands/traces/get.js +20 -0
  69. package/dist/commands/traces/list.d.ts +19 -0
  70. package/dist/commands/traces/list.js +47 -0
  71. package/dist/commands/traces/summary.d.ts +14 -0
  72. package/dist/commands/traces/summary.js +23 -0
  73. package/dist/commands/users/create.d.ts +16 -0
  74. package/dist/commands/users/create.js +38 -0
  75. package/dist/commands/users/get.d.ts +15 -0
  76. package/dist/commands/users/get.js +20 -0
  77. package/dist/commands/users/list.d.ts +16 -0
  78. package/dist/commands/users/list.js +38 -0
  79. package/dist/commands/users/update.d.ts +18 -0
  80. package/dist/commands/users/update.js +38 -0
  81. package/dist/commands/whoami.d.ts +12 -0
  82. package/dist/commands/whoami.js +21 -0
  83. package/dist/index.d.ts +1 -0
  84. package/dist/index.js +1 -0
  85. package/dist/lib/auth.d.ts +16 -0
  86. package/dist/lib/auth.js +40 -0
  87. package/dist/lib/banner.d.ts +2 -0
  88. package/dist/lib/banner.js +117 -0
  89. package/dist/lib/base-command.d.ts +20 -0
  90. package/dist/lib/base-command.js +74 -0
  91. package/dist/lib/config.d.ts +26 -0
  92. package/dist/lib/config.js +81 -0
  93. package/dist/lib/output.d.ts +6 -0
  94. package/dist/lib/output.js +95 -0
  95. package/dist/lib/pagination.d.ts +12 -0
  96. package/dist/lib/pagination.js +34 -0
  97. package/dist/lib/spinner.d.ts +11 -0
  98. package/dist/lib/spinner.js +56 -0
  99. package/oclif.manifest.json +2886 -0
  100. package/package.json +52 -0
@@ -0,0 +1,38 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../lib/base-command.js';
3
+ class EvaluatorsCreate extends BaseCommand {
4
+ async run() {
5
+ const { flags } = await this.parse(EvaluatorsCreate);
6
+ this.globalFlags = flags;
7
+ try {
8
+ const client = this.getClient();
9
+ const body = { name: flags.name };
10
+ if (flags.type)
11
+ body.type = flags.type;
12
+ if (flags.description)
13
+ body.description = flags.description;
14
+ if (flags.config) {
15
+ try {
16
+ body.config = JSON.parse(flags.config);
17
+ }
18
+ catch {
19
+ this.error('Invalid JSON for --config');
20
+ }
21
+ }
22
+ const data = await this.spin('Creating evaluator', () => client.evaluators.createEvaluator(body));
23
+ this.log(JSON.stringify(data, null, 2));
24
+ }
25
+ catch (error) {
26
+ this.handleError(error);
27
+ }
28
+ }
29
+ }
30
+ EvaluatorsCreate.description = 'Create a new evaluator';
31
+ EvaluatorsCreate.flags = {
32
+ ...BaseCommand.baseFlags,
33
+ name: Flags.string({ description: 'Evaluator name', required: true }),
34
+ type: Flags.string({ description: 'Evaluator type' }),
35
+ description: Flags.string({ description: 'Evaluator description' }),
36
+ config: Flags.string({ description: 'Evaluator config as JSON string' }),
37
+ };
38
+ export default EvaluatorsCreate;
@@ -0,0 +1,15 @@
1
+ import { BaseCommand } from '../../lib/base-command.js';
2
+ export default class EvaluatorsGet extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ csv: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
@@ -0,0 +1,20 @@
1
+ import { Args } from '@oclif/core';
2
+ import { BaseCommand } from '../../lib/base-command.js';
3
+ class EvaluatorsGet extends BaseCommand {
4
+ async run() {
5
+ const { args, flags } = await this.parse(EvaluatorsGet);
6
+ this.globalFlags = flags;
7
+ try {
8
+ const client = this.getClient();
9
+ const data = await this.spin('Fetching evaluator', () => client.evaluators.retrieveEvaluator({ evaluator_id: args.id }));
10
+ this.log(JSON.stringify(data, null, 2));
11
+ }
12
+ catch (error) {
13
+ this.handleError(error);
14
+ }
15
+ }
16
+ }
17
+ EvaluatorsGet.description = 'Get a specific evaluator';
18
+ EvaluatorsGet.args = { id: Args.string({ description: 'Evaluator ID', required: true }) };
19
+ EvaluatorsGet.flags = { ...BaseCommand.baseFlags };
20
+ export default EvaluatorsGet;
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../lib/base-command.js';
2
+ export default class EvaluatorsList extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
6
+ page: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
7
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ csv: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,26 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../lib/base-command.js';
3
+ import { extractPagination, formatPaginationInfo } from '../../lib/pagination.js';
4
+ class EvaluatorsList extends BaseCommand {
5
+ async run() {
6
+ const { flags } = await this.parse(EvaluatorsList);
7
+ this.globalFlags = flags;
8
+ try {
9
+ const client = this.getClient();
10
+ const data = await this.spin('Fetching evaluators', () => client.evaluators.listEvaluators());
11
+ this.outputResult(data, ['id', 'name', 'type', 'is_active', 'created_at']);
12
+ const pagination = extractPagination(data, flags.page);
13
+ this.log(formatPaginationInfo(pagination));
14
+ }
15
+ catch (error) {
16
+ this.handleError(error);
17
+ }
18
+ }
19
+ }
20
+ EvaluatorsList.description = 'List evaluators';
21
+ EvaluatorsList.flags = {
22
+ ...BaseCommand.baseFlags,
23
+ limit: Flags.integer({ description: 'Number of results per page', default: 20 }),
24
+ page: Flags.integer({ description: 'Page number', default: 1 }),
25
+ };
26
+ export default EvaluatorsList;
@@ -0,0 +1,18 @@
1
+ import { BaseCommand } from '../../lib/base-command.js';
2
+ export default class EvaluatorsRun extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ 'dataset-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ 'log-ids': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ params: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ csv: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<void>;
18
+ }
@@ -0,0 +1,41 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../lib/base-command.js';
3
+ class EvaluatorsRun extends BaseCommand {
4
+ async run() {
5
+ const { args, flags } = await this.parse(EvaluatorsRun);
6
+ this.globalFlags = flags;
7
+ try {
8
+ const client = this.getClient();
9
+ const runBody = {};
10
+ if (flags['dataset-id'])
11
+ runBody.dataset_id = flags['dataset-id'];
12
+ if (flags['log-ids'])
13
+ runBody.log_ids = flags['log-ids'].split(',').map((s) => s.trim());
14
+ if (flags.params) {
15
+ try {
16
+ Object.assign(runBody, JSON.parse(flags.params));
17
+ }
18
+ catch {
19
+ this.error('Invalid JSON for --params');
20
+ }
21
+ }
22
+ const data = await this.spin('Running evaluator', () => client.evaluators.runEvaluator({
23
+ evaluator_id: args.id,
24
+ body: runBody,
25
+ }));
26
+ this.log(JSON.stringify(data, null, 2));
27
+ }
28
+ catch (error) {
29
+ this.handleError(error);
30
+ }
31
+ }
32
+ }
33
+ EvaluatorsRun.description = 'Run an evaluator';
34
+ EvaluatorsRun.args = { id: Args.string({ description: 'Evaluator ID', required: true }) };
35
+ EvaluatorsRun.flags = {
36
+ ...BaseCommand.baseFlags,
37
+ 'dataset-id': Flags.string({ description: 'Dataset ID to evaluate against' }),
38
+ 'log-ids': Flags.string({ description: 'Comma-separated log/span IDs to evaluate' }),
39
+ params: Flags.string({ description: 'Additional parameters as JSON string' }),
40
+ };
41
+ export default EvaluatorsRun;
@@ -0,0 +1,18 @@
1
+ import { BaseCommand } from '../../lib/base-command.js';
2
+ export default class EvaluatorsUpdate extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ config: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ csv: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<void>;
18
+ }
@@ -0,0 +1,41 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../lib/base-command.js';
3
+ class EvaluatorsUpdate extends BaseCommand {
4
+ async run() {
5
+ const { args, flags } = await this.parse(EvaluatorsUpdate);
6
+ this.globalFlags = flags;
7
+ try {
8
+ const client = this.getClient();
9
+ const updateBody = {};
10
+ if (flags.name)
11
+ updateBody.name = flags.name;
12
+ if (flags.description)
13
+ updateBody.description = flags.description;
14
+ if (flags.config) {
15
+ try {
16
+ Object.assign(updateBody, JSON.parse(flags.config));
17
+ }
18
+ catch {
19
+ this.error('Invalid JSON for --config');
20
+ }
21
+ }
22
+ const data = await this.spin('Updating evaluator', () => client.evaluators.updateEvaluator({
23
+ evaluator_id: args.id,
24
+ body: updateBody,
25
+ }));
26
+ this.log(JSON.stringify(data, null, 2));
27
+ }
28
+ catch (error) {
29
+ this.handleError(error);
30
+ }
31
+ }
32
+ }
33
+ EvaluatorsUpdate.description = 'Update an evaluator';
34
+ EvaluatorsUpdate.args = { id: Args.string({ description: 'Evaluator ID', required: true }) };
35
+ EvaluatorsUpdate.flags = {
36
+ ...BaseCommand.baseFlags,
37
+ name: Flags.string({ description: 'Evaluator name' }),
38
+ description: Flags.string({ description: 'Evaluator description' }),
39
+ config: Flags.string({ description: 'Evaluator config as JSON string' }),
40
+ };
41
+ export default EvaluatorsUpdate;
@@ -0,0 +1,16 @@
1
+ import { BaseCommand } from '../../lib/base-command.js';
2
+ export default class ExperimentsCreate extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ name: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
6
+ 'dataset-id': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ description: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ workflows: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ csv: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,39 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../lib/base-command.js';
3
+ class ExperimentsCreate extends BaseCommand {
4
+ async run() {
5
+ const { flags } = await this.parse(ExperimentsCreate);
6
+ this.globalFlags = flags;
7
+ try {
8
+ const client = this.getClient();
9
+ const body = {
10
+ name: flags.name,
11
+ dataset_id: flags['dataset-id'],
12
+ };
13
+ if (flags.description)
14
+ body.description = flags.description;
15
+ if (flags.workflows) {
16
+ try {
17
+ body.workflows = JSON.parse(flags.workflows);
18
+ }
19
+ catch {
20
+ this.error('Invalid JSON for --workflows');
21
+ }
22
+ }
23
+ const data = await this.spin('Creating experiment', () => client.experiments.createExperiment(body));
24
+ this.log(JSON.stringify(data, null, 2));
25
+ }
26
+ catch (error) {
27
+ this.handleError(error);
28
+ }
29
+ }
30
+ }
31
+ ExperimentsCreate.description = 'Create a new experiment';
32
+ ExperimentsCreate.flags = {
33
+ ...BaseCommand.baseFlags,
34
+ name: Flags.string({ description: 'Experiment name', required: true }),
35
+ 'dataset-id': Flags.string({ description: 'Dataset ID', required: true }),
36
+ description: Flags.string({ description: 'Experiment description' }),
37
+ workflows: Flags.string({ description: 'Workflows configuration as JSON string' }),
38
+ };
39
+ export default ExperimentsCreate;
@@ -0,0 +1,15 @@
1
+ import { BaseCommand } from '../../lib/base-command.js';
2
+ export default class ExperimentsGet extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ csv: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
@@ -0,0 +1,20 @@
1
+ import { Args } from '@oclif/core';
2
+ import { BaseCommand } from '../../lib/base-command.js';
3
+ class ExperimentsGet extends BaseCommand {
4
+ async run() {
5
+ const { args, flags } = await this.parse(ExperimentsGet);
6
+ this.globalFlags = flags;
7
+ try {
8
+ const client = this.getClient();
9
+ const data = await this.spin('Fetching experiment', () => client.experiments.retrieveExperiment({ experiment_id: args.id }));
10
+ this.log(JSON.stringify(data, null, 2));
11
+ }
12
+ catch (error) {
13
+ this.handleError(error);
14
+ }
15
+ }
16
+ }
17
+ ExperimentsGet.description = 'Get a specific experiment';
18
+ ExperimentsGet.args = { id: Args.string({ description: 'Experiment ID', required: true }) };
19
+ ExperimentsGet.flags = { ...BaseCommand.baseFlags };
20
+ export default ExperimentsGet;
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../lib/base-command.js';
2
+ export default class ExperimentsList extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
6
+ page: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
7
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ csv: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,23 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../lib/base-command.js';
3
+ class ExperimentsList extends BaseCommand {
4
+ async run() {
5
+ const { flags } = await this.parse(ExperimentsList);
6
+ this.globalFlags = flags;
7
+ try {
8
+ const client = this.getClient();
9
+ const data = await this.spin('Fetching experiments', () => client.experiments.listExperiments());
10
+ this.outputResult(data, ['id', 'name', 'dataset_id', 'status', 'created_at']);
11
+ }
12
+ catch (error) {
13
+ this.handleError(error);
14
+ }
15
+ }
16
+ }
17
+ ExperimentsList.description = 'List experiments';
18
+ ExperimentsList.flags = {
19
+ ...BaseCommand.baseFlags,
20
+ limit: Flags.integer({ description: 'Number of results per page', default: 20 }),
21
+ page: Flags.integer({ description: 'Page number', default: 1 }),
22
+ };
23
+ export default ExperimentsList;
@@ -0,0 +1,16 @@
1
+ import { BaseCommand } from '../../lib/base-command.js';
2
+ export default class LogsCreate extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ input: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
6
+ output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ model: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ metadata: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ csv: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ };
15
+ run(): Promise<void>;
16
+ }
@@ -0,0 +1,38 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../lib/base-command.js';
3
+ class LogsCreate extends BaseCommand {
4
+ async run() {
5
+ const { flags } = await this.parse(LogsCreate);
6
+ this.globalFlags = flags;
7
+ try {
8
+ const client = this.getClient();
9
+ const body = { input: flags.input };
10
+ if (flags.output)
11
+ body.output = flags.output;
12
+ if (flags.model)
13
+ body.model = flags.model;
14
+ if (flags.metadata) {
15
+ try {
16
+ body.metadata = JSON.parse(flags.metadata);
17
+ }
18
+ catch {
19
+ this.error('Invalid JSON for --metadata');
20
+ }
21
+ }
22
+ const data = await this.spin('Creating span', () => client.logs.createSpan(body));
23
+ this.log(JSON.stringify(data, null, 2));
24
+ }
25
+ catch (error) {
26
+ this.handleError(error);
27
+ }
28
+ }
29
+ }
30
+ LogsCreate.description = 'Create a log span';
31
+ LogsCreate.flags = {
32
+ ...BaseCommand.baseFlags,
33
+ input: Flags.string({ description: 'Input text or JSON', required: true }),
34
+ output: Flags.string({ description: 'Output text or JSON' }),
35
+ model: Flags.string({ description: 'Model name' }),
36
+ metadata: Flags.string({ description: 'Metadata as JSON string' }),
37
+ };
38
+ export default LogsCreate;
@@ -0,0 +1,15 @@
1
+ import { BaseCommand } from '../../lib/base-command.js';
2
+ export default class LogsGet extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ csv: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ };
14
+ run(): Promise<void>;
15
+ }
@@ -0,0 +1,20 @@
1
+ import { Args } from '@oclif/core';
2
+ import { BaseCommand } from '../../lib/base-command.js';
3
+ class LogsGet extends BaseCommand {
4
+ async run() {
5
+ const { args, flags } = await this.parse(LogsGet);
6
+ this.globalFlags = flags;
7
+ try {
8
+ const client = this.getClient();
9
+ const data = await this.spin('Fetching span', () => client.logs.retrieveSpan({ unique_id: args.id }));
10
+ this.log(JSON.stringify(data, null, 2));
11
+ }
12
+ catch (error) {
13
+ this.handleError(error);
14
+ }
15
+ }
16
+ }
17
+ LogsGet.description = 'Get a specific log span';
18
+ LogsGet.args = { id: Args.string({ description: 'Span ID', required: true }) };
19
+ LogsGet.flags = { ...BaseCommand.baseFlags };
20
+ export default LogsGet;
@@ -0,0 +1,18 @@
1
+ import { BaseCommand } from '../../lib/base-command.js';
2
+ export default class LogsList extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ limit: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
6
+ page: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
7
+ 'sort-by': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ 'start-time': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ 'end-time': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ filter: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ csv: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<void>;
18
+ }
@@ -0,0 +1,51 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../lib/base-command.js';
3
+ import { extractPagination, formatPaginationInfo } from '../../lib/pagination.js';
4
+ class LogsList extends BaseCommand {
5
+ async run() {
6
+ const { flags } = await this.parse(LogsList);
7
+ this.globalFlags = flags;
8
+ try {
9
+ const client = this.getClient();
10
+ const params = {
11
+ page_size: flags.limit,
12
+ page: flags.page,
13
+ };
14
+ if (flags['sort-by'])
15
+ params.sort_by = flags['sort-by'];
16
+ if (flags['start-time'])
17
+ params.start_time = flags['start-time'];
18
+ if (flags['end-time'])
19
+ params.end_time = flags['end-time'];
20
+ if (flags.filter && flags.filter.length > 0)
21
+ params.filters = flags.filter;
22
+ // listSpans requires start_time, end_time, sort_by, operator
23
+ const oneHourAgo = new Date(Date.now() - 60 * 60 * 1000).toISOString();
24
+ const data = await this.spin('Fetching logs', () => client.logs.listSpans({
25
+ start_time: params.start_time || oneHourAgo,
26
+ end_time: params.end_time || new Date().toISOString(),
27
+ sort_by: params.sort_by || '-id',
28
+ operator: '',
29
+ page_size: params.page_size,
30
+ page: params.page,
31
+ }));
32
+ this.outputResult(data, ['id', 'model', 'prompt_tokens', 'completion_tokens', 'cost', 'latency', 'timestamp']);
33
+ const pagination = extractPagination(data, flags.page);
34
+ this.log(formatPaginationInfo(pagination));
35
+ }
36
+ catch (error) {
37
+ this.handleError(error);
38
+ }
39
+ }
40
+ }
41
+ LogsList.description = 'List log spans';
42
+ LogsList.flags = {
43
+ ...BaseCommand.baseFlags,
44
+ limit: Flags.integer({ description: 'Number of results per page', default: 50 }),
45
+ page: Flags.integer({ description: 'Page number', default: 1 }),
46
+ 'sort-by': Flags.string({ description: 'Sort field' }),
47
+ 'start-time': Flags.string({ description: 'Start time filter (ISO 8601)' }),
48
+ 'end-time': Flags.string({ description: 'End time filter (ISO 8601)' }),
49
+ filter: Flags.string({ description: 'Filter expression', multiple: true }),
50
+ };
51
+ export default LogsList;
@@ -0,0 +1,14 @@
1
+ import { BaseCommand } from '../../lib/base-command.js';
2
+ export default class LogsSummary extends BaseCommand {
3
+ static description: string;
4
+ static flags: {
5
+ 'start-time': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
6
+ 'end-time': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ csv: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
12
+ };
13
+ run(): Promise<void>;
14
+ }
@@ -0,0 +1,23 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../lib/base-command.js';
3
+ class LogsSummary extends BaseCommand {
4
+ async run() {
5
+ const { flags } = await this.parse(LogsSummary);
6
+ this.globalFlags = flags;
7
+ try {
8
+ const client = this.getClient();
9
+ const data = await this.spin('Fetching summary', () => client.logs.getSpansSummary({ start_time: flags['start-time'], end_time: flags['end-time'] }));
10
+ this.log(JSON.stringify(data, null, 2));
11
+ }
12
+ catch (error) {
13
+ this.handleError(error);
14
+ }
15
+ }
16
+ }
17
+ LogsSummary.description = 'Get a summary of log spans for a time range';
18
+ LogsSummary.flags = {
19
+ ...BaseCommand.baseFlags,
20
+ 'start-time': Flags.string({ description: 'Start time (ISO 8601)', required: true }),
21
+ 'end-time': Flags.string({ description: 'End time (ISO 8601)', required: true }),
22
+ };
23
+ export default LogsSummary;
@@ -0,0 +1,19 @@
1
+ import { BaseCommand } from '../../lib/base-command.js';
2
+ export default class PromptsCreateVersion extends BaseCommand {
3
+ static description: string;
4
+ static args: {
5
+ 'prompt-id': import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
7
+ static flags: {
8
+ messages: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
+ model: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ temperature: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'max-tokens': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ csv: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ verbose: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
+ };
18
+ run(): Promise<void>;
19
+ }