This commit is contained in:
2025-12-16 10:38:12 +08:00
parent a050a8ec17
commit 7c963c3457
6 changed files with 76 additions and 2 deletions

23
src/ai/index.ts Normal file
View File

@@ -0,0 +1,23 @@
import { CNBCore, CNBCoreOptions, RequestOptions, Result } from "../cnb-core.ts";
type AiOptions = CNBCoreOptions<{
group?: string;
}>
class AiBase extends CNBCore {
group: string;
constructor(options: AiOptions) {
super({ token: options.token, cookie: options.cookie });
this.group = options.group || '';
}
autoPr(repo: string, data: { body: string, branch?: string, title: string }): Promise<Result<any>> {
const group = this.group || '';
const url = `/${group}/${repo}/-/build/ai/auto-pr`;
const postData = {
...data,
branch: data.branch || 'refs/heads/main',
title: data.title || ''
};
return this.post({ url, data: postData });
}
}
export { AiBase };

View File

@@ -16,4 +16,40 @@ export class User extends CNBCore {
useCookie: true,
});
}
createAccessToken(data?: { description?: string, scope?: string }): Promise<AccessTokenResponse> {
const scope = data?.scope || 'mission-manage:rw,mission-delete:rw,group-delete:rw,group-manage:rw,group-resource:rw,account-engage:rw,account-email:r,account-profile:rw,registry-delete:rw,registry-manage:rw,registry-package-delete:rw,registry-package:rw,repo-security:r,repo-delete:rw,repo-manage:rw,repo-basic-info:r,repo-cnb-detail:rw,repo-cnb-history:r,repo-cnb-trigger:rw,repo-commit-status:rw,repo-contents:rw,repo-notes:rw,repo-issue:rw,repo-pr:rw,repo-code:rw'
const url = 'https://cnb.cool/user/personal_access_tokens'
return this.post({
url,
useCookie: true,
data: {
description: data?.description || 'Created at ' + new Date().toISOString(),
scope: scope,
}
})
}
getAccessTokens(params?: { page?: number, page_size?: number }): Promise<AccessTokenResponse[]> {
const url = 'https://cnb.cool/user/personal_access_tokens'
return this.get({
url,
useCookie: true,
params: {
...params,
page: params?.page || 1,
page_size: params?.page_size || 20,
}
})
}
deleteAccessToken(tokenId: string): Promise<any> {
const url = `https://cnb.cool/user/personal_access_tokens/${tokenId}`
return this.delete({
url,
useCookie: true,
})
}
}
type AccessTokenResponse = {
token: string;
description: string;
}