@zhizuqiu/cubectl 0.1.0 → 0.1.2
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.
- package/README.md +139 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/core/ai/tools.d.ts +19 -4
- package/dist/cubectl.js +1 -1
- package/dist/cubectl.js.map +1 -1
- package/package.json +27 -13
- package/dist/core/ai/openai.d.ts +0 -19
- package/dist/core/ai/openai.js +0 -60
- package/dist/core/ai/openai.js.map +0 -1
package/dist/core/ai/tools.d.ts
CHANGED
|
@@ -12,14 +12,29 @@ export declare function createK8sTools(k8sClient: KubernetesClient): (import("@l
|
|
|
12
12
|
namespace: z.ZodDefault<z.ZodString>;
|
|
13
13
|
allNamespaces: z.ZodDefault<z.ZodBoolean>;
|
|
14
14
|
names: z.ZodOptional<z.ZodString>;
|
|
15
|
-
}, z.core.$strip>,
|
|
15
|
+
}, z.core.$strip>, any, {
|
|
16
|
+
resourceType: string;
|
|
17
|
+
namespace?: string | undefined;
|
|
18
|
+
allNamespaces?: boolean | undefined;
|
|
19
|
+
names?: string | undefined;
|
|
20
|
+
}, string, "list_k8s_resources"> | import("@langchain/core/tools").DynamicStructuredTool<z.ZodObject<{
|
|
16
21
|
yaml: z.ZodString;
|
|
17
|
-
}, z.core.$strip>,
|
|
22
|
+
}, z.core.$strip>, any, {
|
|
23
|
+
yaml: string;
|
|
24
|
+
}, string, "create_resource"> | import("@langchain/core/tools").DynamicStructuredTool<z.ZodObject<{
|
|
18
25
|
kind: z.ZodString;
|
|
19
26
|
name: z.ZodString;
|
|
20
27
|
patch: z.ZodString;
|
|
21
28
|
namespace: z.ZodDefault<z.ZodString>;
|
|
22
|
-
}, z.core.$strip>,
|
|
29
|
+
}, z.core.$strip>, any, {
|
|
30
|
+
kind: string;
|
|
31
|
+
name: string;
|
|
32
|
+
patch: string;
|
|
33
|
+
namespace?: string | undefined;
|
|
34
|
+
}, string, "patch_resource"> | import("@langchain/core/tools").DynamicStructuredTool<z.ZodObject<{
|
|
23
35
|
namespace: z.ZodDefault<z.ZodString>;
|
|
24
36
|
resourceTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
25
|
-
}, z.core.$strip>,
|
|
37
|
+
}, z.core.$strip>, any, {
|
|
38
|
+
namespace?: string | undefined;
|
|
39
|
+
resourceTypes?: string[] | undefined;
|
|
40
|
+
}, string, "get_cluster_summary">)[];
|
package/dist/cubectl.js
CHANGED
|
@@ -9,7 +9,7 @@ import { dirname, join } from 'path';
|
|
|
9
9
|
const __filename = fileURLToPath(import.meta.url);
|
|
10
10
|
const __dirname = dirname(__filename);
|
|
11
11
|
// 加载项目根目录的 .env 文件
|
|
12
|
-
config({ path: join(__dirname, '..', '
|
|
12
|
+
config({ path: join(__dirname, '..', '.env'), override: true });
|
|
13
13
|
// 从ink库导入render函数,用于渲染终端UI
|
|
14
14
|
import { render } from 'ink';
|
|
15
15
|
// 导入yargs库,用于解析命令行参数
|
package/dist/cubectl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cubectl.js","sourceRoot":"","sources":["../src/cubectl.tsx"],"names":[],"mappings":";AAAA;;GAEG;AAEH,oBAAoB;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,mBAAmB;AACnB,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"cubectl.js","sourceRoot":"","sources":["../src/cubectl.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhizuqiu/cubectl",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Cubectl CLI - Kubernetes AI Operations Assistant",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
|
-
"main": "dist/index.js",
|
|
8
7
|
"bin": {
|
|
9
8
|
"cubectl": "dist/index.js"
|
|
10
9
|
},
|
|
@@ -12,10 +11,17 @@
|
|
|
12
11
|
"access": "public"
|
|
13
12
|
},
|
|
14
13
|
"preferGlobal": true,
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": ">=20.0.0"
|
|
16
|
+
},
|
|
15
17
|
"scripts": {
|
|
16
|
-
"build": "node ../../scripts/build_package.js",
|
|
17
18
|
"start": "node dist/index.js",
|
|
19
|
+
"build": "tsc",
|
|
18
20
|
"dev": "npm run build && npm run start",
|
|
21
|
+
"clean": "rm -rf dist *.tsbuildinfo",
|
|
22
|
+
"lint": "eslint .",
|
|
23
|
+
"lint:fix": "eslint . --fix",
|
|
24
|
+
"format": "prettier --write .",
|
|
19
25
|
"typecheck": "tsc --noEmit",
|
|
20
26
|
"test": "vitest run"
|
|
21
27
|
},
|
|
@@ -24,12 +30,28 @@
|
|
|
24
30
|
"package.json",
|
|
25
31
|
"README.md"
|
|
26
32
|
],
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/node": "^20.11.24",
|
|
35
|
+
"@types/react": "^19.2.0",
|
|
36
|
+
"@types/yargs": "^17.0.32",
|
|
37
|
+
"eslint": "^9.24.0",
|
|
38
|
+
"eslint-config-prettier": "^10.1.2",
|
|
39
|
+
"eslint-plugin-react": "^7.37.5",
|
|
40
|
+
"eslint-plugin-react-hooks": "^5.2.0",
|
|
41
|
+
"globals": "^16.0.0",
|
|
42
|
+
"ink-testing-library": "^4.0.0",
|
|
43
|
+
"prettier": "^3.5.3",
|
|
44
|
+
"typescript": "^5.3.3",
|
|
45
|
+
"typescript-eslint": "^8.30.1",
|
|
46
|
+
"vitest": "^3.2.4"
|
|
47
|
+
},
|
|
27
48
|
"dependencies": {
|
|
28
49
|
"@kubernetes/client-node": "1.4.0",
|
|
29
50
|
"@langchain/core": "^1.1.15",
|
|
30
51
|
"@langchain/langgraph": "1.1.1",
|
|
31
52
|
"@langchain/openai": "^1.2.2",
|
|
32
53
|
"dotenv": "^17.1.0",
|
|
54
|
+
"eventsource-parser": "^3.0.6",
|
|
33
55
|
"ink": "npm:@jrichman/ink@6.4.7",
|
|
34
56
|
"ink-spinner": "^5.0.0",
|
|
35
57
|
"langchain": "^1.2.10",
|
|
@@ -38,15 +60,7 @@
|
|
|
38
60
|
"yargs": "^17.7.2",
|
|
39
61
|
"zod": "4.3.5"
|
|
40
62
|
},
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"@types/react": "^19.2.0",
|
|
44
|
-
"@types/yargs": "^17.0.32",
|
|
45
|
-
"ink-testing-library": "^4.0.0",
|
|
46
|
-
"typescript": "^5.3.3",
|
|
47
|
-
"vitest": "^3.2.4"
|
|
48
|
-
},
|
|
49
|
-
"engines": {
|
|
50
|
-
"node": ">=20"
|
|
63
|
+
"overrides": {
|
|
64
|
+
"ink": "npm:@jrichman/ink@6.4.7"
|
|
51
65
|
}
|
|
52
66
|
}
|
package/dist/core/ai/openai.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenAI Client Configuration and Utilities
|
|
3
|
-
*/
|
|
4
|
-
export interface OpenAIConfig {
|
|
5
|
-
apiKey: string;
|
|
6
|
-
baseURL: string;
|
|
7
|
-
model: string;
|
|
8
|
-
}
|
|
9
|
-
export declare class OpenAIClient {
|
|
10
|
-
private client;
|
|
11
|
-
private model;
|
|
12
|
-
constructor(config: OpenAIConfig);
|
|
13
|
-
chat(messages: Array<{
|
|
14
|
-
role: string;
|
|
15
|
-
content: string;
|
|
16
|
-
}>): Promise<string>;
|
|
17
|
-
queryKubernetes(userQuery: string, kubernetesContext?: string): Promise<string>;
|
|
18
|
-
}
|
|
19
|
-
export declare function createOpenAIClient(apiKey?: string, baseURL?: string, model?: string): OpenAIClient | null;
|
package/dist/core/ai/openai.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenAI Client Configuration and Utilities
|
|
3
|
-
*/
|
|
4
|
-
import OpenAI from 'openai';
|
|
5
|
-
export class OpenAIClient {
|
|
6
|
-
client;
|
|
7
|
-
model;
|
|
8
|
-
constructor(config) {
|
|
9
|
-
this.client = new OpenAI({
|
|
10
|
-
apiKey: config.apiKey,
|
|
11
|
-
baseURL: config.baseURL,
|
|
12
|
-
});
|
|
13
|
-
this.model = config.model;
|
|
14
|
-
}
|
|
15
|
-
async chat(messages) {
|
|
16
|
-
try {
|
|
17
|
-
const response = await this.client.chat.completions.create({
|
|
18
|
-
model: this.model,
|
|
19
|
-
messages: messages,
|
|
20
|
-
temperature: 0.7,
|
|
21
|
-
max_tokens: 2000,
|
|
22
|
-
});
|
|
23
|
-
return response.choices[0]?.message?.content || 'No response from AI';
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
if (error instanceof Error) {
|
|
27
|
-
throw new Error(`OpenAI API error: ${error.message}`);
|
|
28
|
-
}
|
|
29
|
-
throw new Error('Unknown OpenAI API error');
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
async queryKubernetes(userQuery, kubernetesContext) {
|
|
33
|
-
const systemPrompt = `You are a Kubernetes expert assistant. Help users query and understand their Kubernetes cluster resources.
|
|
34
|
-
When users ask about Kubernetes resources, provide clear and concise information.
|
|
35
|
-
If the query requires specific kubectl commands, suggest them.
|
|
36
|
-
|
|
37
|
-
Current context: ${kubernetesContext || 'default'}
|
|
38
|
-
|
|
39
|
-
Respond in a helpful and informative way.`;
|
|
40
|
-
const messages = [
|
|
41
|
-
{ role: 'system', content: systemPrompt },
|
|
42
|
-
{ role: 'user', content: userQuery },
|
|
43
|
-
];
|
|
44
|
-
return this.chat(messages);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
export function createOpenAIClient(apiKey, baseURL, model) {
|
|
48
|
-
const key = apiKey || process.env['OPENAI_API_KEY'];
|
|
49
|
-
const url = baseURL || process.env['OPENAI_BASE_URL'];
|
|
50
|
-
const modelName = model || process.env['OPENAI_API_MODEL'] || 'gpt-3.5-turbo';
|
|
51
|
-
if (!key || !url) {
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
return new OpenAIClient({
|
|
55
|
-
apiKey: key,
|
|
56
|
-
baseURL: url,
|
|
57
|
-
model: modelName,
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=openai.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/core/ai/openai.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAQ5B,MAAM,OAAO,YAAY;IACb,MAAM,CAAS;IACf,KAAK,CAAS;IAEtB,YAAY,MAAoB;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAkD;QACzD,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACvD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,QAA6E;gBACvF,WAAW,EAAE,GAAG;gBAChB,UAAU,EAAE,IAAI;aACnB,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,qBAAqB,CAAC;QAC1E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CACjB,SAAiB,EACjB,iBAA0B;QAE1B,MAAM,YAAY,GAAG;;;;mBAIV,iBAAiB,IAAI,SAAS;;0CAEP,CAAC;QAEnC,MAAM,QAAQ,GAAG;YACb,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE;YACzC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;SACvC,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;CACJ;AAED,MAAM,UAAU,kBAAkB,CAC9B,MAAe,EACf,OAAgB,EAChB,KAAc;IAEd,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,eAAe,CAAC;IAE9E,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,IAAI,YAAY,CAAC;QACpB,MAAM,EAAE,GAAG;QACX,OAAO,EAAE,GAAG;QACZ,KAAK,EAAE,SAAS;KACnB,CAAC,CAAC;AACP,CAAC"}
|