alwaysai
Version:
The alwaysAI command-line interface (CLI)
49 lines (45 loc) • 1.38 kB
text/typescript
import {
createLeaf,
createJsonInput,
createBranch,
createStringInput,
} from '@alwaysai/alwayscli';
import { rpcMethodSpecs } from '@alwaysai/cloud-api';
import { RpcClient } from '../rpc-client';
import { SendRpcData } from '../rpc-client/send-rpc-data';
import { getBearerToken } from '../util/cognito-auth';
import { cloudApiUrl } from '../util/cli-config';
const methods = Object.entries(rpcMethodSpecs).map(([methodName, { description }]) => {
return createLeaf({
name: methodName,
description,
args: createJsonInput({
placeholder: '<args>',
description: 'Method arguments array as a JSON string',
}),
async action(args) {
const rpcClient = await RpcClient();
const method = (rpcClient as any)[methodName];
const result = await method(...(args || []));
return result;
},
});
});
const raw = createLeaf({
name: 'raw',
args: createStringInput({
placeholder: '<data>',
required: true,
}),
description: 'Send a custom data payload to the RPC endpoint',
async action(data) {
const bearerToken = await getBearerToken();
const sendRpcData = SendRpcData({ bearerToken, cloudApiUrl });
return await sendRpcData(data);
},
});
export const rpc = createBranch({
name: 'rpc',
description: 'Call the alwaysAI cloud API RPC interface',
subcommands: [...methods, raw],
});