scoutline 0.1.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/LICENSE +21 -0
  2. package/README.md +146 -0
  3. package/bin/scoutline.js +17 -0
  4. package/dist/commands/code.d.ts +13 -0
  5. package/dist/commands/code.d.ts.map +1 -0
  6. package/dist/commands/code.js +94 -0
  7. package/dist/commands/code.js.map +1 -0
  8. package/dist/commands/doctor.d.ts +10 -0
  9. package/dist/commands/doctor.d.ts.map +1 -0
  10. package/dist/commands/doctor.js +70 -0
  11. package/dist/commands/doctor.js.map +1 -0
  12. package/dist/commands/quota.d.ts +9 -0
  13. package/dist/commands/quota.d.ts.map +1 -0
  14. package/dist/commands/quota.js +77 -0
  15. package/dist/commands/quota.js.map +1 -0
  16. package/dist/commands/read.d.ts +20 -0
  17. package/dist/commands/read.d.ts.map +1 -0
  18. package/dist/commands/read.js +166 -0
  19. package/dist/commands/read.js.map +1 -0
  20. package/dist/commands/repo.d.ts +22 -0
  21. package/dist/commands/repo.d.ts.map +1 -0
  22. package/dist/commands/repo.js +219 -0
  23. package/dist/commands/repo.js.map +1 -0
  24. package/dist/commands/search.d.ts +19 -0
  25. package/dist/commands/search.d.ts.map +1 -0
  26. package/dist/commands/search.js +235 -0
  27. package/dist/commands/search.js.map +1 -0
  28. package/dist/commands/tools.d.ts +22 -0
  29. package/dist/commands/tools.d.ts.map +1 -0
  30. package/dist/commands/tools.js +173 -0
  31. package/dist/commands/tools.js.map +1 -0
  32. package/dist/commands/vision.d.ts +15 -0
  33. package/dist/commands/vision.d.ts.map +1 -0
  34. package/dist/commands/vision.js +168 -0
  35. package/dist/commands/vision.js.map +1 -0
  36. package/dist/index.d.ts +5 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +443 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/lib/api-client.d.ts +133 -0
  41. package/dist/lib/api-client.d.ts.map +1 -0
  42. package/dist/lib/api-client.js +150 -0
  43. package/dist/lib/api-client.js.map +1 -0
  44. package/dist/lib/cache.d.ts +34 -0
  45. package/dist/lib/cache.d.ts.map +1 -0
  46. package/dist/lib/cache.js +168 -0
  47. package/dist/lib/cache.js.map +1 -0
  48. package/dist/lib/code-mode.d.ts +19 -0
  49. package/dist/lib/code-mode.d.ts.map +1 -0
  50. package/dist/lib/code-mode.js +83 -0
  51. package/dist/lib/code-mode.js.map +1 -0
  52. package/dist/lib/config.d.ts +21 -0
  53. package/dist/lib/config.d.ts.map +1 -0
  54. package/dist/lib/config.js +59 -0
  55. package/dist/lib/config.js.map +1 -0
  56. package/dist/lib/errors.d.ts +29 -0
  57. package/dist/lib/errors.d.ts.map +1 -0
  58. package/dist/lib/errors.js +69 -0
  59. package/dist/lib/errors.js.map +1 -0
  60. package/dist/lib/extract.d.ts +37 -0
  61. package/dist/lib/extract.d.ts.map +1 -0
  62. package/dist/lib/extract.js +106 -0
  63. package/dist/lib/extract.js.map +1 -0
  64. package/dist/lib/image.d.ts +13 -0
  65. package/dist/lib/image.d.ts.map +1 -0
  66. package/dist/lib/image.js +102 -0
  67. package/dist/lib/image.js.map +1 -0
  68. package/dist/lib/index.d.ts +10 -0
  69. package/dist/lib/index.d.ts.map +1 -0
  70. package/dist/lib/index.js +10 -0
  71. package/dist/lib/index.js.map +1 -0
  72. package/dist/lib/mcp-client.d.ts +161 -0
  73. package/dist/lib/mcp-client.d.ts.map +1 -0
  74. package/dist/lib/mcp-client.js +494 -0
  75. package/dist/lib/mcp-client.js.map +1 -0
  76. package/dist/lib/mcp-config.d.ts +24 -0
  77. package/dist/lib/mcp-config.d.ts.map +1 -0
  78. package/dist/lib/mcp-config.js +129 -0
  79. package/dist/lib/mcp-config.js.map +1 -0
  80. package/dist/lib/monitor-client.d.ts +51 -0
  81. package/dist/lib/monitor-client.d.ts.map +1 -0
  82. package/dist/lib/monitor-client.js +115 -0
  83. package/dist/lib/monitor-client.js.map +1 -0
  84. package/dist/lib/output.d.ts +24 -0
  85. package/dist/lib/output.d.ts.map +1 -0
  86. package/dist/lib/output.js +59 -0
  87. package/dist/lib/output.js.map +1 -0
  88. package/dist/lib/redact.d.ts +7 -0
  89. package/dist/lib/redact.d.ts.map +1 -0
  90. package/dist/lib/redact.js +50 -0
  91. package/dist/lib/redact.js.map +1 -0
  92. package/dist/lib/silence.d.ts +16 -0
  93. package/dist/lib/silence.d.ts.map +1 -0
  94. package/dist/lib/silence.js +56 -0
  95. package/dist/lib/silence.js.map +1 -0
  96. package/dist/lib/tty.d.ts +60 -0
  97. package/dist/lib/tty.d.ts.map +1 -0
  98. package/dist/lib/tty.js +103 -0
  99. package/dist/lib/tty.js.map +1 -0
  100. package/package.json +60 -0
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Error types and handling for Scoutline
3
+ */
4
+ export class ZaiError extends Error {
5
+ code;
6
+ statusCode;
7
+ help;
8
+ constructor(message, code, statusCode, help) {
9
+ super(message);
10
+ this.code = code;
11
+ this.statusCode = statusCode;
12
+ this.help = help;
13
+ this.name = "ZaiError";
14
+ }
15
+ }
16
+ export class AuthError extends ZaiError {
17
+ constructor(message) {
18
+ super(message, "AUTH_ERROR", 401, "Check your Z_AI_API_KEY is valid and has sufficient quota");
19
+ }
20
+ }
21
+ export class ValidationError extends ZaiError {
22
+ constructor(message) {
23
+ super(message, "VALIDATION_ERROR", 400);
24
+ }
25
+ }
26
+ export class ApiError extends ZaiError {
27
+ constructor(message, statusCode) {
28
+ super(message, "API_ERROR", statusCode);
29
+ }
30
+ }
31
+ export class NetworkError extends ZaiError {
32
+ constructor(message) {
33
+ super(message, "NETWORK_ERROR", undefined, "Check your internet connection");
34
+ }
35
+ }
36
+ export class TimeoutError extends ZaiError {
37
+ constructor(timeoutMs) {
38
+ super(`Request timed out after ${timeoutMs}ms`, "TIMEOUT_ERROR", undefined, "Try again or increase timeout with Z_AI_TIMEOUT env var");
39
+ }
40
+ }
41
+ export class FileError extends ZaiError {
42
+ constructor(message, help) {
43
+ super(message, "FILE_ERROR", undefined, help);
44
+ }
45
+ }
46
+ export function formatErrorOutput(error) {
47
+ const pretty = (process.env.ZAI_OUTPUT_MODE || "") === "pretty";
48
+ if (error instanceof ZaiError) {
49
+ return JSON.stringify({
50
+ success: false,
51
+ error: error.message,
52
+ code: error.code,
53
+ ...(error.help && { help: error.help }),
54
+ }, null, pretty ? 2 : 0);
55
+ }
56
+ if (error instanceof Error) {
57
+ return JSON.stringify({
58
+ success: false,
59
+ error: error.message,
60
+ code: "UNKNOWN_ERROR",
61
+ }, null, pretty ? 2 : 0);
62
+ }
63
+ return JSON.stringify({
64
+ success: false,
65
+ error: String(error),
66
+ code: "UNKNOWN_ERROR",
67
+ }, null, pretty ? 2 : 0);
68
+ }
69
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/lib/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGxB,IAAI;IACJ,UAAU;IACV,IAAI;IAJb,YACE,OAAe,EACR,IAAY,EACZ,UAAmB,EACnB,IAAa;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAC;oBAJR,IAAI;0BACJ,UAAU;oBACV,IAAI;QAGX,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,QAAQ;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,2DAA2D,CAAC,CAAC;IACjG,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,QAAQ;IACpC,YAAY,OAAe,EAAE,UAAkB;QAC7C,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,gCAAgC,CAAC,CAAC;IAC/E,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,SAAiB;QAC3B,KAAK,CACH,2BAA2B,SAAS,IAAI,EACxC,eAAe,EACf,SAAS,EACT,yDAAyD,CAC1D,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,QAAQ;IACrC,YAAY,OAAe,EAAE,IAAa;QACxC,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,KAAK,QAAQ,CAAC;IAChE,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;SACxC,EACD,IAAI,EACJ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACf,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,IAAI,EAAE,eAAe;SACtB,EACD,IAAI,EACJ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACf,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;QACpB,IAAI,EAAE,eAAe;KACtB,EACD,IAAI,EACJ,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Content extractors for the read command.
3
+ *
4
+ * Pull specific slices out of a markdown/text page so agents don't have to
5
+ * parse the full body themselves. All extractors return arrays.
6
+ *
7
+ * --extract code fenced code blocks (with language tag if present)
8
+ * --extract links markdown links + bare URLs (deduped)
9
+ * --extract tables markdown table blocks (rendered as their raw markdown)
10
+ * --extract headings H1/H2/H3 outline with anchor slugs
11
+ */
12
+ export type ExtractMode = "code" | "links" | "tables" | "headings";
13
+ export declare const EXTRACT_MODES: ExtractMode[];
14
+ export declare function isExtractMode(v: string): v is ExtractMode;
15
+ export interface CodeBlock {
16
+ language: string | null;
17
+ code: string;
18
+ }
19
+ export interface Link {
20
+ text: string | null;
21
+ url: string;
22
+ }
23
+ export interface Heading {
24
+ level: 1 | 2 | 3 | 4 | 5 | 6;
25
+ text: string;
26
+ slug: string;
27
+ }
28
+ export interface Table {
29
+ rows: number;
30
+ markdown: string;
31
+ }
32
+ export declare function extractCode(content: string): CodeBlock[];
33
+ export declare function extractLinks(content: string): Link[];
34
+ export declare function extractTables(content: string): Table[];
35
+ export declare function extractHeadings(content: string): Heading[];
36
+ export declare function extract(content: string, mode: ExtractMode): unknown[];
37
+ //# sourceMappingURL=extract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.d.ts","sourceRoot":"","sources":["../../src/lib/extract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEnE,eAAO,MAAM,aAAa,EAAE,WAAW,EAA4C,CAAC;AAEpF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,WAAW,CAEzD;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAUxD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,CA0BpD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,CAqBtD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAiB1D;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,EAAE,CAWrE"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Content extractors for the read command.
3
+ *
4
+ * Pull specific slices out of a markdown/text page so agents don't have to
5
+ * parse the full body themselves. All extractors return arrays.
6
+ *
7
+ * --extract code fenced code blocks (with language tag if present)
8
+ * --extract links markdown links + bare URLs (deduped)
9
+ * --extract tables markdown table blocks (rendered as their raw markdown)
10
+ * --extract headings H1/H2/H3 outline with anchor slugs
11
+ */
12
+ export const EXTRACT_MODES = ["code", "links", "tables", "headings"];
13
+ export function isExtractMode(v) {
14
+ return EXTRACT_MODES.includes(v);
15
+ }
16
+ export function extractCode(content) {
17
+ const blocks = [];
18
+ // Match fenced blocks: ```lang\n...\n``` or ~~~\n...\n~~~
19
+ const re = /(?:^|\n)(`{3,}|~{3,})\s*([\w+-]*)\s*\n([\s\S]*?)\n\1/g;
20
+ let m;
21
+ while ((m = re.exec(content)) !== null) {
22
+ const lang = m[2]?.trim() || null;
23
+ blocks.push({ language: lang, code: m[3] });
24
+ }
25
+ return blocks;
26
+ }
27
+ export function extractLinks(content) {
28
+ const links = [];
29
+ const seen = new Set();
30
+ // Markdown links: [text](url)
31
+ const mdRe = /\[([^\]]*)\]\(([^)\s]+)(?:\s+"[^"]*")?\)/g;
32
+ let m;
33
+ while ((m = mdRe.exec(content)) !== null) {
34
+ const url = m[2];
35
+ if (seen.has(url))
36
+ continue;
37
+ seen.add(url);
38
+ links.push({ text: m[1] || null, url });
39
+ }
40
+ // Bare URLs (http/https) not already captured as markdown links
41
+ const bareRe = /\bhttps?:\/\/[^\s)\]]+/g;
42
+ while ((m = bareRe.exec(content)) !== null) {
43
+ let url = m[0];
44
+ // strip trailing punctuation
45
+ url = url.replace(/[.,;:!?)]+$/, "");
46
+ if (seen.has(url))
47
+ continue;
48
+ seen.add(url);
49
+ links.push({ text: null, url });
50
+ }
51
+ return links;
52
+ }
53
+ export function extractTables(content) {
54
+ const tables = [];
55
+ const lines = content.split("\n");
56
+ let i = 0;
57
+ while (i < lines.length) {
58
+ const line = lines[i];
59
+ // A table starts with a row of | cells followed by a separator row.
60
+ if (line.includes("|") && i + 1 < lines.length && /^\s*\|?[\s:|-]+\|?\s*$/.test(lines[i + 1])) {
61
+ const block = [line];
62
+ let j = i + 1;
63
+ while (j < lines.length && lines[j].includes("|")) {
64
+ block.push(lines[j]);
65
+ j++;
66
+ }
67
+ tables.push({ rows: block.length, markdown: block.join("\n") });
68
+ i = j;
69
+ }
70
+ else {
71
+ i++;
72
+ }
73
+ }
74
+ return tables;
75
+ }
76
+ export function extractHeadings(content) {
77
+ const headings = [];
78
+ const lines = content.split("\n");
79
+ for (const line of lines) {
80
+ const m = line.match(/^(#{1,6})\s+(.+?)\s*#*\s*$/);
81
+ if (m) {
82
+ const level = m[1].length;
83
+ const text = m[2];
84
+ // GitHub-style slug: lowercase, strip punctuation, spaces → hyphens
85
+ const slug = text
86
+ .toLowerCase()
87
+ .replace(/[^\w\s-]/g, "")
88
+ .replace(/\s+/g, "-");
89
+ headings.push({ level, text, slug });
90
+ }
91
+ }
92
+ return headings;
93
+ }
94
+ export function extract(content, mode) {
95
+ switch (mode) {
96
+ case "code":
97
+ return extractCode(content);
98
+ case "links":
99
+ return extractLinks(content);
100
+ case "tables":
101
+ return extractTables(content);
102
+ case "headings":
103
+ return extractHeadings(content);
104
+ }
105
+ }
106
+ //# sourceMappingURL=extract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/lib/extract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Image and video processing utilities for Scoutline
3
+ */
4
+ export declare function isUrl(source: string): boolean;
5
+ export declare function validateImageSource(source: string): void;
6
+ export declare function validateVideoSource(source: string): void;
7
+ export declare function encodeImageToBase64(filePath: string): string;
8
+ export declare function encodeVideoToBase64(filePath: string): string;
9
+ export declare function processImageSource(source: string): string;
10
+ export declare function processVideoSource(source: string): string;
11
+ export declare function resolveImageSource(source: string): string;
12
+ export declare function resolveVideoSource(source: string): string;
13
+ //# sourceMappingURL=image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/lib/image.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsBH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE7C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAwBxD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAwBxD;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO5D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO5D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMzD"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Image and video processing utilities for Scoutline
3
+ */
4
+ import * as fs from "node:fs";
5
+ import * as path from "node:path";
6
+ import { FileError, ValidationError } from "./errors.js";
7
+ const IMAGE_EXTENSIONS = [".jpg", ".jpeg", ".png"];
8
+ const VIDEO_EXTENSIONS = [".mp4", ".mov", ".m4v", ".avi", ".webm", ".wmv"];
9
+ const MAX_IMAGE_SIZE = 5 * 1024 * 1024; // 5MB
10
+ const MAX_VIDEO_SIZE = 8 * 1024 * 1024; // 8MB
11
+ const MIME_TYPES = {
12
+ ".jpg": "image/jpeg",
13
+ ".jpeg": "image/jpeg",
14
+ ".png": "image/png",
15
+ ".mp4": "video/mp4",
16
+ ".mov": "video/quicktime",
17
+ ".m4v": "video/x-m4v",
18
+ ".avi": "video/x-msvideo",
19
+ ".webm": "video/webm",
20
+ };
21
+ export function isUrl(source) {
22
+ return source.startsWith("http://") || source.startsWith("https://");
23
+ }
24
+ export function validateImageSource(source) {
25
+ if (isUrl(source)) {
26
+ return; // URLs are validated by the API
27
+ }
28
+ const resolvedPath = path.resolve(source);
29
+ if (!fs.existsSync(resolvedPath)) {
30
+ throw new FileError(`File not found: ${source}`, "Check the file path is correct");
31
+ }
32
+ const stats = fs.statSync(resolvedPath);
33
+ if (stats.size > MAX_IMAGE_SIZE) {
34
+ throw new ValidationError(`Image exceeds 5MB limit (${(stats.size / 1024 / 1024).toFixed(2)}MB)`);
35
+ }
36
+ const ext = path.extname(resolvedPath).toLowerCase();
37
+ if (!IMAGE_EXTENSIONS.includes(ext)) {
38
+ throw new ValidationError(`Unsupported image format: ${ext}. Supported: ${IMAGE_EXTENSIONS.join(", ")}`);
39
+ }
40
+ }
41
+ export function validateVideoSource(source) {
42
+ if (isUrl(source)) {
43
+ return; // URLs are validated by the API
44
+ }
45
+ const resolvedPath = path.resolve(source);
46
+ if (!fs.existsSync(resolvedPath)) {
47
+ throw new FileError(`File not found: ${source}`, "Check the file path is correct");
48
+ }
49
+ const stats = fs.statSync(resolvedPath);
50
+ if (stats.size > MAX_VIDEO_SIZE) {
51
+ throw new ValidationError(`Video exceeds 8MB limit (${(stats.size / 1024 / 1024).toFixed(2)}MB)`);
52
+ }
53
+ const ext = path.extname(resolvedPath).toLowerCase();
54
+ if (!VIDEO_EXTENSIONS.includes(ext)) {
55
+ throw new ValidationError(`Unsupported video format: ${ext}. Supported: ${VIDEO_EXTENSIONS.join(", ")}`);
56
+ }
57
+ }
58
+ export function encodeImageToBase64(filePath) {
59
+ const resolvedPath = path.resolve(filePath);
60
+ const ext = path.extname(resolvedPath).toLowerCase();
61
+ const mimeType = MIME_TYPES[ext] || "image/png";
62
+ const buffer = fs.readFileSync(resolvedPath);
63
+ const base64 = buffer.toString("base64");
64
+ return `data:${mimeType};base64,${base64}`;
65
+ }
66
+ export function encodeVideoToBase64(filePath) {
67
+ const resolvedPath = path.resolve(filePath);
68
+ const ext = path.extname(resolvedPath).toLowerCase();
69
+ const mimeType = MIME_TYPES[ext] || "video/mp4";
70
+ const buffer = fs.readFileSync(resolvedPath);
71
+ const base64 = buffer.toString("base64");
72
+ return `data:${mimeType};base64,${base64}`;
73
+ }
74
+ export function processImageSource(source) {
75
+ if (isUrl(source)) {
76
+ return source;
77
+ }
78
+ validateImageSource(source);
79
+ return encodeImageToBase64(source);
80
+ }
81
+ export function processVideoSource(source) {
82
+ if (isUrl(source)) {
83
+ return source;
84
+ }
85
+ validateVideoSource(source);
86
+ return encodeVideoToBase64(source);
87
+ }
88
+ export function resolveImageSource(source) {
89
+ if (isUrl(source)) {
90
+ return source;
91
+ }
92
+ validateImageSource(source);
93
+ return path.resolve(source);
94
+ }
95
+ export function resolveVideoSource(source) {
96
+ if (isUrl(source)) {
97
+ return source;
98
+ }
99
+ validateVideoSource(source);
100
+ return path.resolve(source);
101
+ }
102
+ //# sourceMappingURL=image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/lib/image.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Library exports for programmatic usage
3
+ */
4
+ export * from "./config.js";
5
+ export * from "./errors.js";
6
+ export * from "./output.js";
7
+ export * from "./image.js";
8
+ export * from "./api-client.js";
9
+ export * from "./mcp-client.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Library exports for programmatic usage
3
+ */
4
+ export * from "./config.js";
5
+ export * from "./errors.js";
6
+ export * from "./output.js";
7
+ export * from "./image.js";
8
+ export * from "./api-client.js";
9
+ export * from "./mcp-client.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * MCP (Model Context Protocol) client for Z.AI services using UTCP
3
+ *
4
+ * Supports four MCP servers:
5
+ * - Vision: Image and video analysis (stdio)
6
+ * - ZRead: GitHub repository exploration
7
+ * - Web Search: Real-time web search
8
+ * - Web Reader: Web page content extraction
9
+ */
10
+ import { type Tool } from "@utcp/sdk";
11
+ import "@utcp/mcp";
12
+ export interface ZReadSearchResult {
13
+ title: string;
14
+ content: string;
15
+ url?: string;
16
+ type?: string;
17
+ }
18
+ export interface WebSearchResult {
19
+ refer: string;
20
+ title: string;
21
+ link: string;
22
+ media: string;
23
+ content: string;
24
+ icon: string;
25
+ publish_date?: string;
26
+ }
27
+ /**
28
+ * Unified MCP client for all Z.AI MCP services
29
+ */
30
+ export declare class ZaiMcpClient {
31
+ private client;
32
+ private initPromise;
33
+ private isInitialized;
34
+ private options;
35
+ constructor(options?: {
36
+ enableVision?: boolean;
37
+ noCache?: boolean;
38
+ });
39
+ /**
40
+ * Initialize the UTCP client and register all MCP servers
41
+ */
42
+ private init;
43
+ private _doInit;
44
+ /**
45
+ * Call an MCP tool
46
+ */
47
+ private callTool;
48
+ private callToolUncached;
49
+ private getRetryCount;
50
+ private isRetriableError;
51
+ private resolveEnableVision;
52
+ private getToolCacheKey;
53
+ private getToolCachePath;
54
+ private readToolsCache;
55
+ private writeToolsCache;
56
+ /**
57
+ * List all discovered tools from registered MCP servers
58
+ */
59
+ listTools(refresh?: boolean): Promise<Tool[]>;
60
+ /**
61
+ * Find a tool by exact name or by suffix match
62
+ */
63
+ getTool(toolName: string): Promise<Tool | undefined>;
64
+ /**
65
+ * Resolve a tool name, accepting full names or suffixes
66
+ */
67
+ resolveToolName(toolName: string): Promise<string>;
68
+ /**
69
+ * Call a tool by full name or suffix
70
+ */
71
+ callToolRaw<T>(toolName: string, args: Record<string, unknown>): Promise<T>;
72
+ /**
73
+ * Search documentation and code in a GitHub repository
74
+ */
75
+ zreadSearch(repo: string, query: string, language?: "zh" | "en"): Promise<string>;
76
+ /**
77
+ * Get the directory structure of a GitHub repository
78
+ */
79
+ zreadTree(repo: string, dirPath?: string): Promise<string>;
80
+ /**
81
+ * Read a file from a GitHub repository
82
+ */
83
+ zreadFile(repo: string, path: string): Promise<string>;
84
+ /**
85
+ * Search the web using WebSearchPrime
86
+ */
87
+ webSearch(params: {
88
+ query: string;
89
+ count?: number;
90
+ domainFilter?: string;
91
+ recencyFilter?: "oneDay" | "oneWeek" | "oneMonth" | "oneYear" | "noLimit";
92
+ contentSize?: "medium" | "high";
93
+ location?: "cn" | "us";
94
+ }): Promise<WebSearchResult[]>;
95
+ /**
96
+ * Read and parse web page content
97
+ */
98
+ webRead(params: {
99
+ url: string;
100
+ timeout?: number;
101
+ noCache?: boolean;
102
+ format?: "markdown" | "text";
103
+ retainImages?: boolean;
104
+ withLinksSummary?: boolean;
105
+ noGfm?: boolean;
106
+ keepImgDataUrl?: boolean;
107
+ withImagesSummary?: boolean;
108
+ }): Promise<string>;
109
+ visionAnalyze(params: {
110
+ imageSource: string;
111
+ prompt: string;
112
+ }): Promise<string>;
113
+ visionUiToArtifact(params: {
114
+ imageSource: string;
115
+ outputType: "code" | "prompt" | "spec" | "description";
116
+ prompt: string;
117
+ }): Promise<string>;
118
+ visionExtractText(params: {
119
+ imageSource: string;
120
+ prompt: string;
121
+ programmingLanguage?: string;
122
+ }): Promise<string>;
123
+ visionDiagnoseError(params: {
124
+ imageSource: string;
125
+ prompt: string;
126
+ context?: string;
127
+ }): Promise<string>;
128
+ visionDiagram(params: {
129
+ imageSource: string;
130
+ prompt: string;
131
+ diagramType?: string;
132
+ }): Promise<string>;
133
+ visionChart(params: {
134
+ imageSource: string;
135
+ prompt: string;
136
+ focus?: string;
137
+ }): Promise<string>;
138
+ visionDiff(params: {
139
+ expectedImageSource: string;
140
+ actualImageSource: string;
141
+ prompt: string;
142
+ }): Promise<string>;
143
+ visionVideo(params: {
144
+ videoSource: string;
145
+ prompt: string;
146
+ }): Promise<string>;
147
+ /**
148
+ * Close the MCP client and cleanup resources
149
+ */
150
+ close(timeoutMs?: number): Promise<void>;
151
+ }
152
+ export declare class ZReadMcpClient extends ZaiMcpClient {
153
+ constructor(options?: {
154
+ enableVision?: boolean;
155
+ noCache?: boolean;
156
+ });
157
+ searchDoc(repo: string, query: string, language?: "zh" | "en"): Promise<string>;
158
+ getRepoStructure(repo: string, dirPath?: string): Promise<string>;
159
+ readFile(repo: string, path: string): Promise<string>;
160
+ }
161
+ //# sourceMappingURL=mcp-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../src/lib/mcp-client.ts"],"names":[],"mappings":"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"}