@vigilbase/cli 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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +138 -0
  3. package/dist/auth/device-auth.d.ts +58 -0
  4. package/dist/auth/device-auth.d.ts.map +1 -0
  5. package/dist/auth/device-auth.js +229 -0
  6. package/dist/auth/device-auth.js.map +1 -0
  7. package/dist/auth/index.d.ts +4 -0
  8. package/dist/auth/index.d.ts.map +1 -0
  9. package/dist/auth/index.js +3 -0
  10. package/dist/auth/index.js.map +1 -0
  11. package/dist/auth/store.d.ts +12 -0
  12. package/dist/auth/store.d.ts.map +1 -0
  13. package/dist/auth/store.js +85 -0
  14. package/dist/auth/store.js.map +1 -0
  15. package/dist/auth/types.d.ts +46 -0
  16. package/dist/auth/types.d.ts.map +1 -0
  17. package/dist/auth/types.js +8 -0
  18. package/dist/auth/types.js.map +1 -0
  19. package/dist/bin.d.ts +3 -0
  20. package/dist/bin.d.ts.map +1 -0
  21. package/dist/bin.js +5 -0
  22. package/dist/bin.js.map +1 -0
  23. package/dist/cli.d.ts +13 -0
  24. package/dist/cli.d.ts.map +1 -0
  25. package/dist/cli.js +510 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/index.d.ts +9 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +7 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/lib/banner.d.ts +29 -0
  32. package/dist/lib/banner.d.ts.map +1 -0
  33. package/dist/lib/banner.js +68 -0
  34. package/dist/lib/banner.js.map +1 -0
  35. package/dist/lib/client.d.ts +27 -0
  36. package/dist/lib/client.d.ts.map +1 -0
  37. package/dist/lib/client.js +146 -0
  38. package/dist/lib/client.js.map +1 -0
  39. package/dist/lib/config.d.ts +31 -0
  40. package/dist/lib/config.d.ts.map +1 -0
  41. package/dist/lib/config.js +57 -0
  42. package/dist/lib/config.js.map +1 -0
  43. package/dist/lib/format.d.ts +14 -0
  44. package/dist/lib/format.d.ts.map +1 -0
  45. package/dist/lib/format.js +289 -0
  46. package/dist/lib/format.js.map +1 -0
  47. package/dist/lib/help.d.ts +4 -0
  48. package/dist/lib/help.d.ts.map +1 -0
  49. package/dist/lib/help.js +58 -0
  50. package/dist/lib/help.js.map +1 -0
  51. package/dist/lib/one-client.d.ts +43 -0
  52. package/dist/lib/one-client.d.ts.map +1 -0
  53. package/dist/lib/one-client.js +147 -0
  54. package/dist/lib/one-client.js.map +1 -0
  55. package/dist/lib/open-url.d.ts +25 -0
  56. package/dist/lib/open-url.d.ts.map +1 -0
  57. package/dist/lib/open-url.js +112 -0
  58. package/dist/lib/open-url.js.map +1 -0
  59. package/dist/lib/progress.d.ts +20 -0
  60. package/dist/lib/progress.d.ts.map +1 -0
  61. package/dist/lib/progress.js +78 -0
  62. package/dist/lib/progress.js.map +1 -0
  63. package/dist/types.d.ts +45 -0
  64. package/dist/types.d.ts.map +1 -0
  65. package/dist/types.js +7 -0
  66. package/dist/types.js.map +1 -0
  67. package/package.json +70 -0
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Compact Vigilbase flare mark + wordmark for human CLI surfaces.
3
+ * Static strings only — no I/O, no deps, skipped entirely in --json mode.
4
+ */
5
+ /**
6
+ * Compact square Vigilbase flare (inverted V).
7
+ * Left wing (full block) = terminal default fg; right wing (medium shade) = brand yellow.
8
+ */
9
+ /** Compact flare used on help/version (keeps the first viewport short). */
10
+ export const VIGILBASE_ASCII_MARK = [
11
+ '\u2588\u2588\u2588\u2588\u2588 \u2592\u2592\u2592',
12
+ ' \u2588\u2588\u2588\u2588 \u2592\u2592\u2592\u2592',
13
+ ' \u2588\u2588\u2588 \u2592\u2592\u2592\u2592 ',
14
+ ' \u2588\u2592\u2592\u2592\u2592 ',
15
+ ' \u2592\u2592\u2592 ',
16
+ ].join('\n');
17
+ const ANSI = {
18
+ reset: '\u001b[0m',
19
+ dim: '\u001b[2m',
20
+ bold: '\u001b[1m',
21
+ /** Brand yellow (#f9e75e / #FFE74D family) — 256-color approximation. */
22
+ brand: '\u001b[38;5;221m',
23
+ };
24
+ export function shouldUseColor(stream, env = process.env) {
25
+ if (env.NO_COLOR != null && env.NO_COLOR !== '')
26
+ return false;
27
+ if (env.FORCE_COLOR === '0')
28
+ return false;
29
+ if (env.FORCE_COLOR && env.FORCE_COLOR !== '0')
30
+ return true;
31
+ if (env.CI === '1' || env.CI === 'true')
32
+ return false;
33
+ return Boolean(stream?.isTTY);
34
+ }
35
+ export function shouldShowBanner(mode = 'text', env = process.env) {
36
+ if (mode === 'json')
37
+ return false;
38
+ if (env.VIGILBASE_CLI_NO_BANNER === '1')
39
+ return false;
40
+ return true;
41
+ }
42
+ function paintMarkLine(line, useColor) {
43
+ if (!useColor)
44
+ return line;
45
+ // Left wing stays terminal default fg; right wing is brand yellow.
46
+ return line.replace(/\u2592+/g, (run) => `${ANSI.brand}${run}${ANSI.reset}`);
47
+ }
48
+ /**
49
+ * Banner composition (flare + wordmark + tagline).
50
+ */
51
+ export function renderBanner(options = {}, stream = process.stdout, env = process.env) {
52
+ const useColor = options.useColor ?? shouldUseColor(stream, env);
53
+ const tagline = options.tagline ?? 'one \u00b7 tools';
54
+ const version = options.version ? ` \u00b7 v${options.version}` : '';
55
+ const mark = VIGILBASE_ASCII_MARK.split('\n');
56
+ const brand = (text) => useColor ? `${ANSI.brand}${ANSI.bold}${text}${ANSI.reset}` : text;
57
+ const dim = (text) => useColor ? `${ANSI.dim}${text}${ANSI.reset}` : text;
58
+ const painted = mark.map((line) => paintMarkLine(line, useColor));
59
+ const lines = painted.map((line, index) => {
60
+ if (index === 0)
61
+ return `${line} ${brand('vigilbase')}`;
62
+ if (index === 1)
63
+ return `${line} ${dim(`${tagline}${version}`)}`;
64
+ return line;
65
+ });
66
+ return lines.join('\n');
67
+ }
68
+ //# sourceMappingURL=banner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/lib/banner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { AgentToolExecuteResponse, AgentToolsCatalogResponse } from '../types.js';
2
+ import type { CliConfig } from './config.js';
3
+ export declare class VigilbaseApiError extends Error {
4
+ readonly status: number;
5
+ readonly body: unknown;
6
+ readonly retryAfterSec?: number;
7
+ constructor(message: string, options: {
8
+ status: number;
9
+ body?: unknown;
10
+ retryAfterSec?: number;
11
+ });
12
+ }
13
+ /**
14
+ * Public (unauthenticated) vigilbase.com tools client.
15
+ * Vigilbase One authenticated calls will use a separate client + device-auth tokens.
16
+ */
17
+ export declare class VigilbaseClient {
18
+ private readonly config;
19
+ constructor(config: CliConfig);
20
+ private get origin();
21
+ private request;
22
+ listTools(): Promise<AgentToolsCatalogResponse>;
23
+ executeTool(toolName: string, target: string): Promise<AgentToolExecuteResponse>;
24
+ fetchSkillMarkdown(skillUrl: string): Promise<string>;
25
+ badgeUrl(domain: string, style?: 'default' | 'compact' | 'mini'): string;
26
+ }
27
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;gBAG7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE;CAQtE;AA6BD;;;GAGG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,SAAS;IAE9C,OAAO,KAAK,MAAM,GAEjB;YAEa,OAAO;IAiCf,SAAS,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAmB/C,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,wBAAwB,CAAC;IAoC9B,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB3D,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,SAAS,GAAG,SAAS,GAAG,MAAkB,GAAG,MAAM;CAMpF"}
@@ -0,0 +1,146 @@
1
+ export class VigilbaseApiError extends Error {
2
+ status;
3
+ body;
4
+ retryAfterSec;
5
+ constructor(message, options) {
6
+ super(message);
7
+ this.name = 'VigilbaseApiError';
8
+ this.status = options.status;
9
+ this.body = options.body;
10
+ this.retryAfterSec = options.retryAfterSec;
11
+ }
12
+ }
13
+ async function readJson(response) {
14
+ const text = await response.text();
15
+ if (!text)
16
+ return null;
17
+ try {
18
+ return JSON.parse(text);
19
+ }
20
+ catch {
21
+ return { raw: text };
22
+ }
23
+ }
24
+ function retryAfterSeconds(response, body) {
25
+ const header = response.headers.get('retry-after');
26
+ if (header) {
27
+ const parsed = Number.parseInt(header, 10);
28
+ if (Number.isFinite(parsed) && parsed >= 0)
29
+ return parsed;
30
+ }
31
+ if (body &&
32
+ typeof body === 'object' &&
33
+ 'retryAfterSec' in body &&
34
+ typeof body.retryAfterSec === 'number') {
35
+ return body.retryAfterSec;
36
+ }
37
+ return undefined;
38
+ }
39
+ /**
40
+ * Public (unauthenticated) vigilbase.com tools client.
41
+ * Vigilbase One authenticated calls will use a separate client + device-auth tokens.
42
+ */
43
+ export class VigilbaseClient {
44
+ config;
45
+ constructor(config) {
46
+ this.config = config;
47
+ }
48
+ get origin() {
49
+ return this.config.publicBaseUrl;
50
+ }
51
+ async request(path, init) {
52
+ const url = `${this.origin}${path.startsWith('/') ? path : `/${path}`}`;
53
+ const controller = new AbortController();
54
+ const timer = setTimeout(() => controller.abort(), this.config.timeoutMs);
55
+ try {
56
+ const response = await fetch(url, {
57
+ ...init,
58
+ signal: controller.signal,
59
+ headers: {
60
+ Accept: 'application/json',
61
+ 'User-Agent': this.config.userAgent,
62
+ ...(init?.headers ?? {}),
63
+ },
64
+ });
65
+ const body = await readJson(response);
66
+ return { response, body };
67
+ }
68
+ catch (error) {
69
+ if (error instanceof Error && error.name === 'AbortError') {
70
+ throw new VigilbaseApiError(`Request timed out after ${this.config.timeoutMs}ms: ${url}`, { status: 0 });
71
+ }
72
+ throw error;
73
+ }
74
+ finally {
75
+ clearTimeout(timer);
76
+ }
77
+ }
78
+ async listTools() {
79
+ const { response, body } = await this.request('/api/agent/tools');
80
+ if (!response.ok) {
81
+ const message = body &&
82
+ typeof body === 'object' &&
83
+ 'error' in body &&
84
+ typeof body.error === 'string'
85
+ ? body.error
86
+ : `Failed to list tools (HTTP ${response.status})`;
87
+ throw new VigilbaseApiError(message, {
88
+ status: response.status,
89
+ body,
90
+ retryAfterSec: retryAfterSeconds(response, body),
91
+ });
92
+ }
93
+ return body;
94
+ }
95
+ async executeTool(toolName, target) {
96
+ const { response, body } = await this.request(`/api/agent/tools/${encodeURIComponent(toolName)}/execute`, {
97
+ method: 'POST',
98
+ headers: { 'Content-Type': 'application/json' },
99
+ body: JSON.stringify({ target }),
100
+ });
101
+ const parsed = (body ?? {});
102
+ if (response.status === 429) {
103
+ throw new VigilbaseApiError(parsed.error || 'Rate limit exceeded. Retry after the indicated delay.', {
104
+ status: 429,
105
+ body: parsed,
106
+ retryAfterSec: retryAfterSeconds(response, body),
107
+ });
108
+ }
109
+ if (!response.ok && response.status !== 422) {
110
+ throw new VigilbaseApiError(parsed.error || `Tool execution failed (HTTP ${response.status})`, {
111
+ status: response.status,
112
+ body: parsed,
113
+ retryAfterSec: retryAfterSeconds(response, body),
114
+ });
115
+ }
116
+ return parsed;
117
+ }
118
+ async fetchSkillMarkdown(skillUrl) {
119
+ const controller = new AbortController();
120
+ const timer = setTimeout(() => controller.abort(), this.config.timeoutMs);
121
+ try {
122
+ const response = await fetch(skillUrl, {
123
+ signal: controller.signal,
124
+ headers: {
125
+ Accept: 'text/markdown, text/plain, */*',
126
+ 'User-Agent': this.config.userAgent,
127
+ },
128
+ });
129
+ if (!response.ok) {
130
+ throw new VigilbaseApiError(`Failed to fetch skill (HTTP ${response.status})`, { status: response.status });
131
+ }
132
+ return await response.text();
133
+ }
134
+ finally {
135
+ clearTimeout(timer);
136
+ }
137
+ }
138
+ badgeUrl(domain, style = 'default') {
139
+ const params = new URLSearchParams();
140
+ if (style !== 'default')
141
+ params.set('style', style);
142
+ const query = params.toString();
143
+ return `${this.origin}/api/badge/${encodeURIComponent(domain)}${query ? `?${query}` : ''}`;
144
+ }
145
+ }
146
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export type CliConfig = {
2
+ /** Public tools API origin (vigilbase.com / apps/com). */
3
+ publicBaseUrl: string;
4
+ /** Authenticated Vigilbase One origin (one.vigilbase.com / apps/one). */
5
+ oneBaseUrl: string;
6
+ /** OAuth client_id for Better Auth device authorization. */
7
+ clientId: string;
8
+ /** Directory for credentials and local config (~/.config/vigilbase). */
9
+ configDir: string;
10
+ userAgent: string;
11
+ timeoutMs: number;
12
+ };
13
+ /** @deprecated Prefer `publicBaseUrl`. Kept for library callers. */
14
+ export type CliConfigLegacy = CliConfig & {
15
+ baseUrl: string;
16
+ };
17
+ export declare function resolvePublicBaseUrl(explicit?: string | null): string;
18
+ export declare function resolveOneBaseUrl(explicit?: string | null): string;
19
+ export declare function resolveClientId(explicit?: string | null): string;
20
+ export declare function resolveConfigDir(explicit?: string | null): string;
21
+ export declare function createConfig(options?: {
22
+ baseUrl?: string | null;
23
+ publicBaseUrl?: string | null;
24
+ oneBaseUrl?: string | null;
25
+ clientId?: string | null;
26
+ configDir?: string | null;
27
+ timeoutMs?: number;
28
+ }): CliConfigLegacy;
29
+ /** Back-compat helper used by older call sites / tests. */
30
+ export declare function resolveBaseUrl(explicit?: string | null): string;
31
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,SAAS,GAAG;IACtB,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAA;IAChB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,oEAAoE;AACpE,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAM7D,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAQrE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMlE;AAED,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMhE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAQjE;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,eAAe,CAclB;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAE/D"}
@@ -0,0 +1,57 @@
1
+ import { homedir } from 'node:os';
2
+ import { join } from 'node:path';
3
+ const DEFAULT_PUBLIC_BASE_URL = 'https://vigilbase.com';
4
+ const DEFAULT_ONE_BASE_URL = 'https://one.vigilbase.com';
5
+ /** Placeholder client id until Vigilbase One registers the CLI OAuth client. */
6
+ const DEFAULT_CLIENT_ID = 'vigilbase-cli';
7
+ function stripTrailingSlash(url) {
8
+ return url.replace(/\/+$/, '');
9
+ }
10
+ export function resolvePublicBaseUrl(explicit) {
11
+ const raw = explicit?.trim() ||
12
+ process.env.VIGILBASE_BASE_URL?.trim() ||
13
+ process.env.VIGILBASE_API_URL?.trim() ||
14
+ process.env.VIGILBASE_PUBLIC_URL?.trim() ||
15
+ DEFAULT_PUBLIC_BASE_URL;
16
+ return stripTrailingSlash(raw);
17
+ }
18
+ export function resolveOneBaseUrl(explicit) {
19
+ const raw = explicit?.trim() ||
20
+ process.env.VIGILBASE_ONE_URL?.trim() ||
21
+ DEFAULT_ONE_BASE_URL;
22
+ return stripTrailingSlash(raw);
23
+ }
24
+ export function resolveClientId(explicit) {
25
+ return (explicit?.trim() ||
26
+ process.env.VIGILBASE_CLIENT_ID?.trim() ||
27
+ DEFAULT_CLIENT_ID);
28
+ }
29
+ export function resolveConfigDir(explicit) {
30
+ if (explicit?.trim())
31
+ return explicit.trim();
32
+ if (process.env.VIGILBASE_CONFIG_DIR?.trim()) {
33
+ return process.env.VIGILBASE_CONFIG_DIR.trim();
34
+ }
35
+ const xdg = process.env.XDG_CONFIG_HOME?.trim();
36
+ if (xdg)
37
+ return join(xdg, 'vigilbase');
38
+ return join(homedir(), '.config', 'vigilbase');
39
+ }
40
+ export function createConfig(options) {
41
+ const publicBaseUrl = resolvePublicBaseUrl(options?.publicBaseUrl ?? options?.baseUrl);
42
+ return {
43
+ publicBaseUrl,
44
+ /** Alias used by the current public tools client. */
45
+ baseUrl: publicBaseUrl,
46
+ oneBaseUrl: resolveOneBaseUrl(options?.oneBaseUrl),
47
+ clientId: resolveClientId(options?.clientId),
48
+ configDir: resolveConfigDir(options?.configDir),
49
+ userAgent: `@vigilbase/cli/0.1.0 (+https://vigilbase.com; node/${process.version})`,
50
+ timeoutMs: options?.timeoutMs ?? 60_000,
51
+ };
52
+ }
53
+ /** Back-compat helper used by older call sites / tests. */
54
+ export function resolveBaseUrl(explicit) {
55
+ return resolvePublicBaseUrl(explicit);
56
+ }
57
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,uBAAuB,GAAG,uBAAuB,CAAA;AACvD,MAAM,oBAAoB,GAAG,2BAA2B,CAAA;AACxD,gFAAgF;AAChF,MAAM,iBAAiB,GAAG,eAAe,CAAA;AAkBzC,SAAS,kBAAkB,CAAC,GAAW;IACrC,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAwB;IAC3D,MAAM,GAAG,GACP,QAAQ,EAAE,IAAI,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE;QACtC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE;QACxC,uBAAuB,CAAA;IACzB,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAwB;IACxD,MAAM,GAAG,GACP,QAAQ,EAAE,IAAI,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE;QACrC,oBAAoB,CAAA;IACtB,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAwB;IACtD,OAAO,CACL,QAAQ,EAAE,IAAI,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,EAAE;QACvC,iBAAiB,CAClB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAwB;IACvD,IAAI,QAAQ,EAAE,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;IAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,EAAE,EAAE,CAAC;QAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAA;IAChD,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,CAAA;IAC/C,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IACtC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAO5B;IACC,MAAM,aAAa,GAAG,oBAAoB,CACxC,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,OAAO,CAC3C,CAAA;IACD,OAAO;QACL,aAAa;QACb,qDAAqD;QACrD,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC;QAClD,QAAQ,EAAE,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;QAC5C,SAAS,EAAE,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC;QAC/C,SAAS,EAAE,sDAAsD,OAAO,CAAC,OAAO,GAAG;QACnF,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,MAAM;KACxC,CAAA;AACH,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,cAAc,CAAC,QAAwB;IACrD,OAAO,oBAAoB,CAAC,QAAQ,CAAC,CAAA;AACvC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { AgentToolDefinition, AgentToolExecuteResponse, AgentToolsCatalogResponse, CliOutputMode } from '../types.js';
2
+ export type Writer = {
3
+ stdout: (line?: string) => void;
4
+ stderr: (line?: string) => void;
5
+ };
6
+ export declare function createWriter(stdout?: NodeJS.WritableStream, stderr?: NodeJS.WritableStream): Writer;
7
+ export declare function formatToolsList(catalog: AgentToolsCatalogResponse, mode: CliOutputMode, writer: Writer, options?: {
8
+ sensitiveTools?: readonly string[];
9
+ isAuthenticated?: boolean;
10
+ }): void;
11
+ export declare function formatToolDescription(tool: AgentToolDefinition, mode: CliOutputMode, writer: Writer, skillMarkdown?: string): void;
12
+ export declare function formatExecuteResult(result: AgentToolExecuteResponse, mode: CliOutputMode, writer: Writer): void;
13
+ export declare function formatError(error: unknown, mode: CliOutputMode, writer: Writer): void;
14
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,aAAa,EACd,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC,CAAA;AAED,wBAAgB,YAAY,CAC1B,MAAM,GAAE,MAAM,CAAC,cAA+B,EAC9C,MAAM,GAAE,MAAM,CAAC,cAA+B,GAC7C,MAAM,CASR;AA+ND,wBAAgB,eAAe,CAC7B,OAAO,EAAE,yBAAyB,EAClC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IACR,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,GACA,IAAI,CAcN;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,mBAAmB,EACzB,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI,CAkBN;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,GACb,IAAI,CA2BN;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,GACb,IAAI,CAqCN"}