@openlibing/openlibing-cli 0.1.8

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 (53) hide show
  1. package/README.md +137 -0
  2. package/dist/auth/browser.d.ts +29 -0
  3. package/dist/auth/browser.js +123 -0
  4. package/dist/auth/browser.js.map +1 -0
  5. package/dist/auth/login.d.ts +30 -0
  6. package/dist/auth/login.js +180 -0
  7. package/dist/auth/login.js.map +1 -0
  8. package/dist/auth/refresh.d.ts +3 -0
  9. package/dist/auth/refresh.js +36 -0
  10. package/dist/auth/refresh.js.map +1 -0
  11. package/dist/auth/store.d.ts +19 -0
  12. package/dist/auth/store.js +71 -0
  13. package/dist/auth/store.js.map +1 -0
  14. package/dist/client/http.d.ts +15 -0
  15. package/dist/client/http.js +65 -0
  16. package/dist/client/http.js.map +1 -0
  17. package/dist/client/reportApi.d.ts +54 -0
  18. package/dist/client/reportApi.js +54 -0
  19. package/dist/client/reportApi.js.map +1 -0
  20. package/dist/commands/auth.d.ts +5 -0
  21. package/dist/commands/auth.js +56 -0
  22. package/dist/commands/auth.js.map +1 -0
  23. package/dist/commands/mcp.d.ts +5 -0
  24. package/dist/commands/mcp.js +33 -0
  25. package/dist/commands/mcp.js.map +1 -0
  26. package/dist/config/env.d.ts +19 -0
  27. package/dist/config/env.js +29 -0
  28. package/dist/config/env.js.map +1 -0
  29. package/dist/index.d.ts +2 -0
  30. package/dist/index.js +19 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/mcp/registry.d.ts +2 -0
  33. package/dist/mcp/registry.js +8 -0
  34. package/dist/mcp/registry.js.map +1 -0
  35. package/dist/mcp/server.d.ts +12 -0
  36. package/dist/mcp/server.js +25 -0
  37. package/dist/mcp/server.js.map +1 -0
  38. package/dist/tools/auth/login.d.ts +4 -0
  39. package/dist/tools/auth/login.js +28 -0
  40. package/dist/tools/auth/login.js.map +1 -0
  41. package/dist/tools/report/index.d.ts +6 -0
  42. package/dist/tools/report/index.js +4 -0
  43. package/dist/tools/report/index.js.map +1 -0
  44. package/dist/tools/report/listTemplates.d.ts +2 -0
  45. package/dist/tools/report/listTemplates.js +16 -0
  46. package/dist/tools/report/listTemplates.js.map +1 -0
  47. package/dist/tools/report/queryData.d.ts +37 -0
  48. package/dist/tools/report/queryData.js +72 -0
  49. package/dist/tools/report/queryData.js.map +1 -0
  50. package/dist/tools/types.d.ts +18 -0
  51. package/dist/tools/types.js +7 -0
  52. package/dist/tools/types.js.map +1 -0
  53. package/package.json +42 -0
@@ -0,0 +1,72 @@
1
+ /**
2
+ * report 功能组:按条件查询测试报告数据(分页)。
3
+ * 对齐 ops ReportMcpTools#queryReportData:支持仓库多选(repoUrls,空则全选)、
4
+ * 时间范围、字段过滤(filters)、分页。
5
+ */
6
+ import { z } from "zod";
7
+ import { queryReportData, } from "../../client/reportApi.js";
8
+ import { textResult } from "../types.js";
9
+ const FILTER_OPS = [
10
+ "eq",
11
+ "ne",
12
+ "gt",
13
+ "gte",
14
+ "lt",
15
+ "lte",
16
+ "like",
17
+ "in",
18
+ "isNull",
19
+ "isNotNull",
20
+ ];
21
+ export const queryDataSchema = {
22
+ modelCode: z
23
+ .string()
24
+ .describe("模板 code,如 triton_model_performance"),
25
+ repoUrls: z
26
+ .array(z.string())
27
+ .optional()
28
+ .describe("仓库地址列表,可选;不传或为空则查询全部仓库"),
29
+ startTime: z.string().optional().describe("开始时间 yyyy-MM-dd HH:mm:ss,可选"),
30
+ endTime: z.string().optional().describe("结束时间 yyyy-MM-dd HH:mm:ss,可选"),
31
+ timeField: z
32
+ .enum(["job_start_time", "job_end_time", "report_upload_time"])
33
+ .optional()
34
+ .describe("时间字段,默认 job_end_time"),
35
+ filters: z
36
+ .array(z.object({
37
+ field: z.string().describe("字段名"),
38
+ op: z.enum(FILTER_OPS).describe("操作符:eq/ne/gt/gte/lt/lte/like/in/isNull/isNotNull"),
39
+ value: z.unknown().optional().describe("值,isNull/isNotNull 无需传"),
40
+ }))
41
+ .optional()
42
+ .describe("过滤条件数组"),
43
+ page: z.number().int().min(1).optional().describe("页码,默认 1"),
44
+ pageSize: z
45
+ .number()
46
+ .int()
47
+ .min(1)
48
+ .max(500)
49
+ .optional()
50
+ .describe("每页大小,默认 20,最大 500"),
51
+ };
52
+ export const queryDataTool = {
53
+ name: "report_queryData",
54
+ description: "按模板与条件查询测试报告数据(分页返回):支持仓库多选(repoUrls,空则全选)、时间范围、字段过滤(filters)。" +
55
+ "返回每行包含全部字段,顺序:仓库地址(repo_url)在前,业务指标字段居中,最后为 workflow_id/workflow_run_id/job_id/报告文件名/记录序号/任务起止时间(job_start_time/job_end_time)。请完整携带各行全部字段,不要省略任何列。",
56
+ schema: queryDataSchema,
57
+ handler: async (args) => {
58
+ const params = {
59
+ modelCode: args.modelCode,
60
+ repoUrls: args.repoUrls,
61
+ startTime: args.startTime,
62
+ endTime: args.endTime,
63
+ timeField: args.timeField,
64
+ filters: args.filters,
65
+ page: args.page,
66
+ pageSize: args.pageSize,
67
+ };
68
+ const result = await queryReportData(params);
69
+ return textResult(result);
70
+ },
71
+ };
72
+ //# sourceMappingURL=queryData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryData.js","sourceRoot":"","sources":["../../../src/tools/report/queryData.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,eAAe,GAEhB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAuB,MAAM,aAAa,CAAC;AAE9D,MAAM,UAAU,GAAG;IACjB,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,MAAM;IACN,IAAI;IACJ,QAAQ;IACR,WAAW;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,QAAQ,CAAC,oCAAoC,CAAC;IACjD,QAAQ,EAAE,CAAC;SACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,wBAAwB,CAAC;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACxE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACtE,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,gBAAgB,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAC;SAC9D,QAAQ,EAAE;SACV,QAAQ,CAAC,sBAAsB,CAAC;IACnC,OAAO,EAAE,CAAC;SACP,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QACjC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,kDAAkD,CAAC;QACnF,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KACjE,CAAC,CACH;SACA,QAAQ,EAAE;SACV,QAAQ,CAAC,QAAQ,CAAC;IACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC5D,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,mBAAmB,CAAC;CACjC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,gEAAgE;QAChE,oJAAoJ;IACtJ,MAAM,EAAE,eAAe;IACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,MAAM,GAA0B;YACpC,SAAS,EAAE,IAAI,CAAC,SAAmB;YACnC,QAAQ,EAAE,IAAI,CAAC,QAAgC;YAC/C,SAAS,EAAE,IAAI,CAAC,SAA+B;YAC/C,OAAO,EAAE,IAAI,CAAC,OAA6B;YAC3C,SAAS,EAAE,IAAI,CAAC,SAEH;YACb,OAAO,EAAE,IAAI,CAAC,OAA2C;YACzD,IAAI,EAAE,IAAI,CAAC,IAA0B;YACrC,QAAQ,EAAE,IAAI,CAAC,QAA8B;SAC9C,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * MCP 工具定义类型。
3
+ * 协议层由 @modelcontextprotocol/sdk 内置,工具只需声明 name/schema/执行函数。
4
+ */
5
+ import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
6
+ import type { ZodRawShape } from "zod";
7
+ export interface ToolDefinition {
8
+ /** 工具名:<功能组>_<动作>,如 report_listTemplates */
9
+ name: string;
10
+ /** 工具描述(tools/list 展示给客户端) */
11
+ description: string;
12
+ /** 参数 schema(zod),自动生成 JSON Schema */
13
+ schema: ZodRawShape;
14
+ /** 执行函数:参数为按 schema 校验后的对象,返回 MCP CallToolResult */
15
+ handler: (args: Record<string, unknown>) => Promise<CallToolResult>;
16
+ }
17
+ /** 把任意 JSON 序列化为文本内容块 */
18
+ export declare function textResult(data: unknown): CallToolResult;
@@ -0,0 +1,7 @@
1
+ /** 把任意 JSON 序列化为文本内容块 */
2
+ export function textResult(data) {
3
+ return {
4
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
5
+ };
6
+ }
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAkBA,yBAAyB;AACzB,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@openlibing/openlibing-cli",
3
+ "version": "0.1.8",
4
+ "description": "OpenLibing MCP 本地 CLI:把 ops 报告等只读能力包装为 MCP 工具(stdio 传输)",
5
+ "type": "module",
6
+ "bin": {
7
+ "openlibing-cli": "dist/index.js"
8
+ },
9
+ "publishConfig": {
10
+ "access": "public"
11
+ },
12
+ "files": [
13
+ "dist"
14
+ ],
15
+ "engines": {
16
+ "node": "^20.19.0 || >=22.12.0"
17
+ },
18
+ "scripts": {
19
+ "dev": "tsx src/index.ts",
20
+ "build": "tsc -p tsconfig.json",
21
+ "test": "vitest run",
22
+ "prepublishOnly": "npm run build"
23
+ },
24
+ "keywords": [
25
+ "mcp",
26
+ "openlibing",
27
+ "cli"
28
+ ],
29
+ "license": "UNLICENSED",
30
+ "dependencies": {
31
+ "@modelcontextprotocol/sdk": "^1.30.0",
32
+ "commander": "^15.0.0",
33
+ "playwright-core": "^1.63.0",
34
+ "zod": "^4.6.5"
35
+ },
36
+ "devDependencies": {
37
+ "@types/node": "^22.20.3",
38
+ "tsx": "^4.23.13",
39
+ "typescript": "^7.0.2",
40
+ "vitest": "^5.0.1"
41
+ }
42
+ }