@trazze/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.
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +100 -0
- package/dist/bin.js.map +1 -0
- package/dist/client.d.ts +59 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +118 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/search.d.ts +12 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +74 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +39 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/tail.d.ts +7 -0
- package/dist/commands/tail.d.ts.map +1 -0
- package/dist/commands/tail.js +72 -0
- package/dist/commands/tail.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/package.json +40 -0
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { style } from '@trazze/sdk';
|
|
3
|
+
import { TrazeClient } from './client.js';
|
|
4
|
+
import { statusCommand } from './commands/status.js';
|
|
5
|
+
import { tailCommand } from './commands/tail.js';
|
|
6
|
+
import { searchCommand, errorsCommand } from './commands/search.js';
|
|
7
|
+
const args = process.argv.slice(2);
|
|
8
|
+
const command = args[0];
|
|
9
|
+
const serverUrl = process.env['TRAZE_URL'] ?? 'http://localhost:4400';
|
|
10
|
+
const client = new TrazeClient({ baseUrl: serverUrl });
|
|
11
|
+
function parseFlags(flags) {
|
|
12
|
+
const result = {};
|
|
13
|
+
for (let i = 0; i < flags.length; i++) {
|
|
14
|
+
const flag = flags[i];
|
|
15
|
+
if (flag.startsWith('--')) {
|
|
16
|
+
const key = flag.slice(2);
|
|
17
|
+
const value = flags[i + 1];
|
|
18
|
+
if (value && !value.startsWith('--')) {
|
|
19
|
+
result[key] = value;
|
|
20
|
+
i++;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
result[key] = 'true';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
async function main() {
|
|
30
|
+
const flags = parseFlags(args.slice(1));
|
|
31
|
+
switch (command) {
|
|
32
|
+
case 'status':
|
|
33
|
+
await statusCommand(client);
|
|
34
|
+
break;
|
|
35
|
+
case 'tail':
|
|
36
|
+
await tailCommand(client, {
|
|
37
|
+
...(flags['project'] !== undefined && { project: flags['project'] }),
|
|
38
|
+
...(flags['level'] !== undefined && { level: flags['level'] }),
|
|
39
|
+
...(flags['poll'] !== undefined && { poll: Number(flags['poll']) }),
|
|
40
|
+
});
|
|
41
|
+
break;
|
|
42
|
+
case 'search': {
|
|
43
|
+
const query = flags['query'] ?? args[1];
|
|
44
|
+
if (!query || query.startsWith('--')) {
|
|
45
|
+
console.error(`${style.errorMark()} Usage: traze search <query> [--project <name>] [--level <level>]`);
|
|
46
|
+
process.exitCode = 1;
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
await searchCommand(client, {
|
|
50
|
+
query,
|
|
51
|
+
...(flags['project'] !== undefined && { project: flags['project'] }),
|
|
52
|
+
...(flags['level'] !== undefined && { level: flags['level'] }),
|
|
53
|
+
...(flags['limit'] !== undefined && { limit: flags['limit'] }),
|
|
54
|
+
});
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
case 'errors':
|
|
58
|
+
await errorsCommand(client, {
|
|
59
|
+
...(flags['project'] !== undefined && { project: flags['project'] }),
|
|
60
|
+
...(flags['limit'] !== undefined && { limit: flags['limit'] }),
|
|
61
|
+
});
|
|
62
|
+
break;
|
|
63
|
+
case 'help':
|
|
64
|
+
case '--help':
|
|
65
|
+
case '-h':
|
|
66
|
+
case undefined:
|
|
67
|
+
printHelp();
|
|
68
|
+
break;
|
|
69
|
+
default:
|
|
70
|
+
console.error(`${style.errorMark()} Unknown command: ${command}`);
|
|
71
|
+
printHelp();
|
|
72
|
+
process.exitCode = 1;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function printHelp() {
|
|
76
|
+
console.log(`
|
|
77
|
+
${style.boldCyan('traze')} ${style.dim('— Traze CLI')}
|
|
78
|
+
|
|
79
|
+
${style.bold('Usage:')} traze <command> [options]
|
|
80
|
+
|
|
81
|
+
${style.bold('Commands:')}
|
|
82
|
+
${style.cyan('status')} Show server health and statistics
|
|
83
|
+
${style.cyan('tail')} Stream live logs
|
|
84
|
+
${style.cyan('search')} ${style.dim('<query>')} Search logs by message
|
|
85
|
+
${style.cyan('errors')} List grouped errors
|
|
86
|
+
|
|
87
|
+
${style.bold('Global Options:')}
|
|
88
|
+
${style.dim('--project <name>')} Filter by project
|
|
89
|
+
${style.dim('--level <level>')} Filter by log level (debug, info, warn, error)
|
|
90
|
+
${style.dim('--limit <n>')} Max results to return
|
|
91
|
+
|
|
92
|
+
${style.bold('Environment:')}
|
|
93
|
+
${style.dim('TRAZE_URL')} Server URL (default: http://localhost:4400)
|
|
94
|
+
`);
|
|
95
|
+
}
|
|
96
|
+
main().catch((err) => {
|
|
97
|
+
console.error(err);
|
|
98
|
+
process.exitCode = 1;
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export interface TrazeClientOptions {
|
|
2
|
+
baseUrl: string;
|
|
3
|
+
headers?: Record<string, string>;
|
|
4
|
+
}
|
|
5
|
+
export interface StreamLogEntry {
|
|
6
|
+
level: string;
|
|
7
|
+
message: string;
|
|
8
|
+
timestamp: string;
|
|
9
|
+
context?: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export declare class TrazeClient {
|
|
12
|
+
private readonly baseUrl;
|
|
13
|
+
private readonly headers;
|
|
14
|
+
constructor(options: TrazeClientOptions);
|
|
15
|
+
health(): Promise<{
|
|
16
|
+
status: string;
|
|
17
|
+
version: string;
|
|
18
|
+
uptime: number;
|
|
19
|
+
timestamp: string;
|
|
20
|
+
}>;
|
|
21
|
+
stats(): Promise<{
|
|
22
|
+
logs: number;
|
|
23
|
+
traces: number;
|
|
24
|
+
errors: number;
|
|
25
|
+
metrics: number;
|
|
26
|
+
dbSizeBytes: number;
|
|
27
|
+
}>;
|
|
28
|
+
logs(params?: Record<string, string>): Promise<{
|
|
29
|
+
data: unknown[];
|
|
30
|
+
total: number;
|
|
31
|
+
hasMore: boolean;
|
|
32
|
+
}>;
|
|
33
|
+
traces(params?: Record<string, string>): Promise<{
|
|
34
|
+
data: unknown[];
|
|
35
|
+
total: number;
|
|
36
|
+
hasMore: boolean;
|
|
37
|
+
}>;
|
|
38
|
+
traceDetail(traceId: string): Promise<{
|
|
39
|
+
traceId: string;
|
|
40
|
+
spans: unknown[];
|
|
41
|
+
}>;
|
|
42
|
+
errors(params?: Record<string, string>): Promise<{
|
|
43
|
+
data: unknown[];
|
|
44
|
+
total: number;
|
|
45
|
+
hasMore: boolean;
|
|
46
|
+
}>;
|
|
47
|
+
errorGroups(params?: Record<string, string>): Promise<{
|
|
48
|
+
data: unknown[];
|
|
49
|
+
}>;
|
|
50
|
+
metrics(params?: Record<string, string>): Promise<{
|
|
51
|
+
data: unknown[];
|
|
52
|
+
total: number;
|
|
53
|
+
hasMore: boolean;
|
|
54
|
+
}>;
|
|
55
|
+
streamLogs(params?: Record<string, string>, signal?: AbortSignal): AsyncGenerator<StreamLogEntry>;
|
|
56
|
+
private get;
|
|
57
|
+
private parseSseMessage;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAOD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,OAAO,EAAE,kBAAkB;IAKjC,MAAM;gBACgB,MAAM;iBAAW,MAAM;gBAAU,MAAM;mBAAa,MAAM;;IAKhF,KAAK;cAED,MAAM;gBACJ,MAAM;gBACN,MAAM;iBACL,MAAM;qBACF,MAAM;;IAIjB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;cAChB,OAAO,EAAE;eAAS,MAAM;iBAAW,OAAO;;IAM9D,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;cAClB,OAAO,EAAE;eAAS,MAAM;iBAAW,OAAO;;IAM9D,WAAW,CAAC,OAAO,EAAE,MAAM;iBACJ,MAAM;eAAS,OAAO,EAAE;;IAG/C,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;cAClB,OAAO,EAAE;eAAS,MAAM;iBAAW,OAAO;;IAM9D,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;cACvB,OAAO,EAAE;;IAG7B,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;cACnB,OAAO,EAAE;eAAS,MAAM;iBAAW,OAAO;;IAM7D,UAAU,CACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,cAAc,CAAC;YA0DnB,GAAG;IAejB,OAAO,CAAC,eAAe;CAqBxB"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
export class TrazeClient {
|
|
2
|
+
baseUrl;
|
|
3
|
+
headers;
|
|
4
|
+
constructor(options) {
|
|
5
|
+
this.baseUrl = options.baseUrl.replace(/\/$/, '');
|
|
6
|
+
this.headers = { 'content-type': 'application/json', ...(options.headers ?? {}) };
|
|
7
|
+
}
|
|
8
|
+
async health() {
|
|
9
|
+
return this.get('/v1/health');
|
|
10
|
+
}
|
|
11
|
+
async stats() {
|
|
12
|
+
return this.get('/v1/stats');
|
|
13
|
+
}
|
|
14
|
+
async logs(params) {
|
|
15
|
+
return this.get('/v1/logs', params);
|
|
16
|
+
}
|
|
17
|
+
async traces(params) {
|
|
18
|
+
return this.get('/v1/traces', params);
|
|
19
|
+
}
|
|
20
|
+
async traceDetail(traceId) {
|
|
21
|
+
return this.get(`/v1/traces/${traceId}`);
|
|
22
|
+
}
|
|
23
|
+
async errors(params) {
|
|
24
|
+
return this.get('/v1/errors', params);
|
|
25
|
+
}
|
|
26
|
+
async errorGroups(params) {
|
|
27
|
+
return this.get('/v1/errors/groups', params);
|
|
28
|
+
}
|
|
29
|
+
async metrics(params) {
|
|
30
|
+
return this.get('/v1/metrics', params);
|
|
31
|
+
}
|
|
32
|
+
async *streamLogs(params, signal) {
|
|
33
|
+
const url = new URL('/v1/logs/stream', this.baseUrl);
|
|
34
|
+
if (params) {
|
|
35
|
+
for (const [key, value] of Object.entries(params)) {
|
|
36
|
+
if (value)
|
|
37
|
+
url.searchParams.set(key, value);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const response = await fetch(url.toString(), {
|
|
41
|
+
headers: {
|
|
42
|
+
...this.headers,
|
|
43
|
+
accept: 'text/event-stream',
|
|
44
|
+
},
|
|
45
|
+
...(signal ? { signal } : {}),
|
|
46
|
+
});
|
|
47
|
+
if (!response.ok) {
|
|
48
|
+
throw new Error(`Traze server returned ${response.status}: ${await response.text()}`);
|
|
49
|
+
}
|
|
50
|
+
if (!response.body) {
|
|
51
|
+
throw new Error('SSE stream is not available from server response');
|
|
52
|
+
}
|
|
53
|
+
const reader = response.body.getReader();
|
|
54
|
+
const decoder = new TextDecoder();
|
|
55
|
+
let buffer = '';
|
|
56
|
+
try {
|
|
57
|
+
while (true) {
|
|
58
|
+
const { value, done } = await reader.read();
|
|
59
|
+
if (done)
|
|
60
|
+
break;
|
|
61
|
+
buffer += decoder.decode(value, { stream: true });
|
|
62
|
+
let separatorIndex = buffer.indexOf('\n\n');
|
|
63
|
+
while (separatorIndex !== -1) {
|
|
64
|
+
const rawMessage = buffer.slice(0, separatorIndex);
|
|
65
|
+
buffer = buffer.slice(separatorIndex + 2);
|
|
66
|
+
const message = this.parseSseMessage(rawMessage);
|
|
67
|
+
if (message?.event === 'log' && message.data) {
|
|
68
|
+
yield JSON.parse(message.data);
|
|
69
|
+
}
|
|
70
|
+
if (message?.event === 'error' && message.data) {
|
|
71
|
+
const payload = JSON.parse(message.data);
|
|
72
|
+
throw new Error(payload.message ?? 'Unknown stream error');
|
|
73
|
+
}
|
|
74
|
+
separatorIndex = buffer.indexOf('\n\n');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
reader.releaseLock();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async get(path, params) {
|
|
83
|
+
const url = new URL(path, this.baseUrl);
|
|
84
|
+
if (params) {
|
|
85
|
+
for (const [key, value] of Object.entries(params)) {
|
|
86
|
+
if (value)
|
|
87
|
+
url.searchParams.set(key, value);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const response = await fetch(url.toString(), { headers: this.headers });
|
|
91
|
+
if (!response.ok) {
|
|
92
|
+
throw new Error(`Traze server returned ${response.status}: ${await response.text()}`);
|
|
93
|
+
}
|
|
94
|
+
return response.json();
|
|
95
|
+
}
|
|
96
|
+
parseSseMessage(rawMessage) {
|
|
97
|
+
const lines = rawMessage.split('\n');
|
|
98
|
+
let event;
|
|
99
|
+
const dataLines = [];
|
|
100
|
+
for (const line of lines) {
|
|
101
|
+
if (!line || line.startsWith(':'))
|
|
102
|
+
continue;
|
|
103
|
+
if (line.startsWith('event:')) {
|
|
104
|
+
event = line.slice(6).trim();
|
|
105
|
+
}
|
|
106
|
+
if (line.startsWith('data:')) {
|
|
107
|
+
dataLines.push(line.slice(5).trim());
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (!event && dataLines.length === 0)
|
|
111
|
+
return null;
|
|
112
|
+
return {
|
|
113
|
+
...(event ? { event } : {}),
|
|
114
|
+
data: dataLines.join('\n'),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TrazeClient } from '../client.js';
|
|
2
|
+
export declare function searchCommand(client: TrazeClient, options: {
|
|
3
|
+
query: string;
|
|
4
|
+
project?: string;
|
|
5
|
+
level?: string;
|
|
6
|
+
limit?: string;
|
|
7
|
+
}): Promise<void>;
|
|
8
|
+
export declare function errorsCommand(client: TrazeClient, options: {
|
|
9
|
+
project?: string;
|
|
10
|
+
limit?: string;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3E,OAAO,CAAC,IAAI,CAAC,CAwCf;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { style } from '@trazze/sdk';
|
|
2
|
+
export async function searchCommand(client, options) {
|
|
3
|
+
try {
|
|
4
|
+
const params = {
|
|
5
|
+
search: options.query,
|
|
6
|
+
limit: options.limit ?? '20',
|
|
7
|
+
};
|
|
8
|
+
if (options.project)
|
|
9
|
+
params['project'] = options.project;
|
|
10
|
+
if (options.level)
|
|
11
|
+
params['level'] = options.level;
|
|
12
|
+
const result = await client.logs(params);
|
|
13
|
+
const entries = result.data;
|
|
14
|
+
console.log(`\n${style.boldCyan('Search Results')} ${style.dim(`— "${options.query}" (${result.total} total)`)}\n`);
|
|
15
|
+
if (entries.length === 0) {
|
|
16
|
+
console.log(` ${style.dim('No matching logs found.')}\n`);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
for (const entry of entries) {
|
|
20
|
+
const ts = style.dim(entry.timestamp);
|
|
21
|
+
const level = colorLevel(entry.level);
|
|
22
|
+
const msg = highlightSearch(entry.message, options.query);
|
|
23
|
+
console.log(` ${ts} ${level} ${msg}`);
|
|
24
|
+
}
|
|
25
|
+
if (result.hasMore) {
|
|
26
|
+
console.log(`\n ${style.dim(`Showing ${entries.length} of ${result.total}. Use --limit to see more.`)}`);
|
|
27
|
+
}
|
|
28
|
+
console.log();
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
console.error(`${style.errorMark()} ${style.red(err instanceof Error ? err.message : String(err))}\n`);
|
|
32
|
+
process.exitCode = 1;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export async function errorsCommand(client, options) {
|
|
36
|
+
try {
|
|
37
|
+
const params = {};
|
|
38
|
+
if (options.project)
|
|
39
|
+
params['project'] = options.project;
|
|
40
|
+
const result = await client.errorGroups(params);
|
|
41
|
+
const groups = result.data;
|
|
42
|
+
console.log(`\n${style.boldCyan('Error Groups')}\n`);
|
|
43
|
+
if (groups.length === 0) {
|
|
44
|
+
console.log(` ${style.dim('No errors found.')}\n`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
for (const group of groups) {
|
|
48
|
+
console.log(` ${style.red(group.type)}: ${group.message}`);
|
|
49
|
+
console.log(` Count: ${style.yellow(String(group.count))} Last: ${style.dim(group.lastSeen)} Hash: ${style.dim(group.groupHash)}`);
|
|
50
|
+
}
|
|
51
|
+
console.log();
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
console.error(`${style.errorMark()} ${style.red(err instanceof Error ? err.message : String(err))}\n`);
|
|
55
|
+
process.exitCode = 1;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function colorLevel(level) {
|
|
59
|
+
switch (level) {
|
|
60
|
+
case 'debug': return style.dim('DBG');
|
|
61
|
+
case 'info': return style.cyan('INF');
|
|
62
|
+
case 'warn': return style.yellow('WRN');
|
|
63
|
+
case 'error': return style.red('ERR');
|
|
64
|
+
default: return level.slice(0, 3).toUpperCase();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function highlightSearch(text, query) {
|
|
68
|
+
const regex = new RegExp(`(${escapeRegex(query)})`, 'gi');
|
|
69
|
+
return text.replace(regex, (match) => style.boldYellow(match));
|
|
70
|
+
}
|
|
71
|
+
function escapeRegex(str) {
|
|
72
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,wBAAsB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBtE"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { style } from '@trazze/sdk';
|
|
2
|
+
export async function statusCommand(client) {
|
|
3
|
+
try {
|
|
4
|
+
const [health, stats] = await Promise.all([client.health(), client.stats()]);
|
|
5
|
+
const statusColor = health.status === 'ok' ? style.green : style.red;
|
|
6
|
+
console.log(`\n${style.boldCyan('Traze Server Status')}\n`);
|
|
7
|
+
console.log(` Status: ${statusColor(health.status)}`);
|
|
8
|
+
console.log(` Version: ${style.dim(health.version)}`);
|
|
9
|
+
console.log(` Uptime: ${style.dim(formatUptime(health.uptime))}`);
|
|
10
|
+
console.log(` Timestamp: ${style.dim(health.timestamp)}`);
|
|
11
|
+
console.log();
|
|
12
|
+
console.log(`${style.boldCyan('Database Statistics')}\n`);
|
|
13
|
+
console.log(` Logs: ${style.yellow(String(stats.logs))}`);
|
|
14
|
+
console.log(` Traces: ${style.yellow(String(stats.traces))}`);
|
|
15
|
+
console.log(` Errors: ${style.yellow(String(stats.errors))}`);
|
|
16
|
+
console.log(` Metrics: ${style.yellow(String(stats.metrics))}`);
|
|
17
|
+
console.log(` DB Size: ${style.dim(formatBytes(stats.dbSizeBytes))}`);
|
|
18
|
+
console.log();
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
console.error(`${style.errorMark()} ${style.red('Cannot reach Traze server')}`);
|
|
22
|
+
console.error(` ${style.dim(err instanceof Error ? err.message : String(err))}\n`);
|
|
23
|
+
process.exitCode = 1;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function formatUptime(seconds) {
|
|
27
|
+
const h = Math.floor(seconds / 3600);
|
|
28
|
+
const m = Math.floor((seconds % 3600) / 60);
|
|
29
|
+
const s = seconds % 60;
|
|
30
|
+
return `${h}h ${m}m ${s}s`;
|
|
31
|
+
}
|
|
32
|
+
function formatBytes(bytes) {
|
|
33
|
+
if (bytes < 1024)
|
|
34
|
+
return `${bytes} B`;
|
|
35
|
+
if (bytes < 1024 * 1024)
|
|
36
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
37
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tail.d.ts","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,wBAAsB,WAAW,CAC/B,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3D,OAAO,CAAC,IAAI,CAAC,CA0Df"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { style } from '@trazze/sdk';
|
|
2
|
+
export async function tailCommand(client, options) {
|
|
3
|
+
const reconnectMs = options.poll ?? 2000;
|
|
4
|
+
let lastTimestamp;
|
|
5
|
+
let stopped = false;
|
|
6
|
+
console.log(`${style.boldCyan('Traze Tail')} ${style.dim('— streaming logs')}\n`);
|
|
7
|
+
console.log(` ${style.dim('Connected with Server-Sent Events. Press Ctrl+C to stop.')}\n`);
|
|
8
|
+
process.on('SIGINT', () => {
|
|
9
|
+
stopped = true;
|
|
10
|
+
});
|
|
11
|
+
while (!stopped) {
|
|
12
|
+
const controller = new AbortController();
|
|
13
|
+
if (stopped) {
|
|
14
|
+
controller.abort();
|
|
15
|
+
break;
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
const params = { limit: '50' };
|
|
19
|
+
if (options.project)
|
|
20
|
+
params['project'] = options.project;
|
|
21
|
+
if (options.level)
|
|
22
|
+
params['level'] = options.level;
|
|
23
|
+
if (lastTimestamp)
|
|
24
|
+
params['from'] = lastTimestamp;
|
|
25
|
+
const stream = client.streamLogs(params, controller.signal);
|
|
26
|
+
for await (const entry of stream) {
|
|
27
|
+
if (stopped) {
|
|
28
|
+
controller.abort();
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
if (lastTimestamp && entry.timestamp <= lastTimestamp)
|
|
32
|
+
continue;
|
|
33
|
+
const ts = style.dim(entry.timestamp);
|
|
34
|
+
const level = colorLevel(entry.level);
|
|
35
|
+
const msg = entry.message;
|
|
36
|
+
console.log(`${ts} ${level} ${msg}`);
|
|
37
|
+
if (entry.context && Object.keys(entry.context).length > 0) {
|
|
38
|
+
console.log(` ${style.dim(JSON.stringify(entry.context))}`);
|
|
39
|
+
}
|
|
40
|
+
lastTimestamp = entry.timestamp;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
if (stopped || (err instanceof Error && err.name === 'AbortError'))
|
|
45
|
+
break;
|
|
46
|
+
console.error(`${style.errorMark()} ${style.dim(err instanceof Error ? err.message : String(err))}`);
|
|
47
|
+
}
|
|
48
|
+
if (!stopped) {
|
|
49
|
+
console.log(`\n${style.dim(`Disconnected. Reconnecting in ${reconnectMs}ms...`)}`);
|
|
50
|
+
await sleep(reconnectMs);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
console.log(`\n${style.dim('Stopped.')}`);
|
|
54
|
+
}
|
|
55
|
+
function colorLevel(level) {
|
|
56
|
+
switch (level) {
|
|
57
|
+
case 'debug':
|
|
58
|
+
return style.dim('DEBUG');
|
|
59
|
+
case 'info':
|
|
60
|
+
return style.cyan('INFO ');
|
|
61
|
+
case 'warn':
|
|
62
|
+
return style.yellow('WARN ');
|
|
63
|
+
case 'error':
|
|
64
|
+
return style.red('ERROR');
|
|
65
|
+
default:
|
|
66
|
+
return level.toUpperCase().padEnd(5);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function sleep(ms) {
|
|
70
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=tail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tail.js","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { TrazeClient } from './client.js';
|
|
2
|
+
export type { TrazeClientOptions } from './client.js';
|
|
3
|
+
export { statusCommand } from './commands/status.js';
|
|
4
|
+
export { tailCommand } from './commands/tail.js';
|
|
5
|
+
export { searchCommand, errorsCommand } from './commands/search.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@trazze/cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"description": "Traze CLI — inspect and tail observability data",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"bin": {
|
|
10
|
+
"traze": "./dist/bin.js"
|
|
11
|
+
},
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"import": "./dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist"
|
|
20
|
+
],
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"chalk": "^5.4.1",
|
|
23
|
+
"@trazze/contracts": "0.1.0",
|
|
24
|
+
"@trazze/sdk": "0.1.0"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@types/node": "^22.10.2",
|
|
28
|
+
"typescript": "^5.7.2",
|
|
29
|
+
"vitest": "^2.1.9"
|
|
30
|
+
},
|
|
31
|
+
"publishConfig": {
|
|
32
|
+
"access": "public"
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "tsc -p tsconfig.build.json",
|
|
36
|
+
"typecheck": "tsc --noEmit",
|
|
37
|
+
"test": "vitest run",
|
|
38
|
+
"clean": "rm -rf dist"
|
|
39
|
+
}
|
|
40
|
+
}
|