@agentdeck/shared 0.1.0 → 0.2.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/LICENSE +21 -0
- package/dist/adapter.d.ts +16 -3
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +38 -0
- package/dist/adapter.js.map +1 -1
- package/dist/command-builders.d.ts +30 -0
- package/dist/command-builders.d.ts.map +1 -0
- package/dist/command-builders.js +60 -0
- package/dist/command-builders.js.map +1 -0
- package/dist/eval-schema.d.ts +211 -0
- package/dist/eval-schema.d.ts.map +1 -0
- package/dist/eval-schema.js +23 -0
- package/dist/eval-schema.js.map +1 -0
- package/dist/format-utils.d.ts +27 -0
- package/dist/format-utils.d.ts.map +1 -0
- package/dist/format-utils.js +120 -0
- package/dist/format-utils.js.map +1 -0
- package/dist/gateway-protocol.d.ts +391 -0
- package/dist/gateway-protocol.d.ts.map +1 -0
- package/dist/gateway-protocol.js +19 -0
- package/dist/gateway-protocol.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/llm-settings.d.ts +52 -0
- package/dist/llm-settings.d.ts.map +1 -0
- package/dist/llm-settings.js +118 -0
- package/dist/llm-settings.js.map +1 -0
- package/dist/protocol.d.ts +326 -2
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +19 -0
- package/dist/protocol.js.map +1 -1
- package/dist/session-utils.d.ts +62 -0
- package/dist/session-utils.d.ts.map +1 -0
- package/dist/session-utils.js +109 -0
- package/dist/session-utils.js.map +1 -0
- package/dist/state-colors.d.ts +16 -0
- package/dist/state-colors.d.ts.map +1 -0
- package/dist/state-colors.js +46 -0
- package/dist/state-colors.js.map +1 -0
- package/dist/states.d.ts +1 -0
- package/dist/states.d.ts.map +1 -1
- package/dist/svg-renderers/agent-logos.d.ts +33 -0
- package/dist/svg-renderers/agent-logos.d.ts.map +1 -0
- package/dist/svg-renderers/agent-logos.js +100 -0
- package/dist/svg-renderers/agent-logos.js.map +1 -0
- package/dist/svg-renderers/index.d.ts +4 -0
- package/dist/svg-renderers/index.d.ts.map +1 -0
- package/dist/svg-renderers/index.js +4 -0
- package/dist/svg-renderers/index.js.map +1 -0
- package/dist/svg-renderers/session-slot-renderer.d.ts +25 -0
- package/dist/svg-renderers/session-slot-renderer.d.ts.map +1 -0
- package/dist/svg-renderers/session-slot-renderer.js +317 -0
- package/dist/svg-renderers/session-slot-renderer.js.map +1 -0
- package/dist/svg-renderers/text-utils.d.ts +15 -0
- package/dist/svg-renderers/text-utils.d.ts.map +1 -0
- package/dist/svg-renderers/text-utils.js +88 -0
- package/dist/svg-renderers/text-utils.js.map +1 -0
- package/dist/telemetry-envelope.d.ts +108 -0
- package/dist/telemetry-envelope.d.ts.map +1 -0
- package/dist/telemetry-envelope.js +34 -0
- package/dist/telemetry-envelope.js.map +1 -0
- package/dist/timeline-summarizer.d.ts +13 -0
- package/dist/timeline-summarizer.d.ts.map +1 -0
- package/dist/timeline-summarizer.js +83 -0
- package/dist/timeline-summarizer.js.map +1 -0
- package/dist/timeline.d.ts +65 -0
- package/dist/timeline.d.ts.map +1 -0
- package/dist/timeline.js +456 -0
- package/dist/timeline.js.map +1 -0
- package/dist/voice-paths.d.ts +4 -0
- package/dist/voice-paths.d.ts.map +1 -1
- package/dist/voice-paths.js +5 -0
- package/dist/voice-paths.js.map +1 -1
- package/package.json +9 -3
package/dist/timeline.js
ADDED
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared timeline types and log parser for OpenClaw mode.
|
|
3
|
+
* Used by both bridge (BridgeLogStream) and plugin (LogStream).
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Extract a human-readable summary from a raw OpenClaw log message.
|
|
7
|
+
* Strips JSON prefixes, key=value noise, and extracts error descriptions.
|
|
8
|
+
*/
|
|
9
|
+
function extractReadableMessage(message) {
|
|
10
|
+
let cleaned = message;
|
|
11
|
+
// If entire message is a JSON object, extract error field
|
|
12
|
+
if (cleaned.startsWith('{') && cleaned.endsWith('}')) {
|
|
13
|
+
try {
|
|
14
|
+
const parsed = JSON.parse(cleaned);
|
|
15
|
+
if (parsed.error)
|
|
16
|
+
cleaned = String(parsed.error);
|
|
17
|
+
else
|
|
18
|
+
cleaned = JSON.stringify(parsed).slice(0, 200);
|
|
19
|
+
}
|
|
20
|
+
catch { /* not valid JSON, continue with regex strip */ }
|
|
21
|
+
}
|
|
22
|
+
// Strip leading JSON object fragments: {"subsystem":"diagnostic"} ...
|
|
23
|
+
cleaned = cleaned.replace(/^\{[^}]*\}\s*/, '');
|
|
24
|
+
// Strip [subsystem] prefix: "[tools] read failed..." → "read failed..."
|
|
25
|
+
const bracketMatch = cleaned.match(/^\[(\w+)\]\s*(.*)/);
|
|
26
|
+
const contextTag = bracketMatch ? bracketMatch[1] : null;
|
|
27
|
+
if (bracketMatch)
|
|
28
|
+
cleaned = bracketMatch[2];
|
|
29
|
+
// Extract error= quoted value if present: error="FailoverError: LLM request timed out."
|
|
30
|
+
const errorMatch = cleaned.match(/error="([^"]+)"/);
|
|
31
|
+
if (errorMatch) {
|
|
32
|
+
// Also extract lane/context if available
|
|
33
|
+
const laneMatch = cleaned.match(/lane=(\S+)/);
|
|
34
|
+
const lane = laneMatch ? `[${laneMatch[1]}] ` : (contextTag ? `[${contextTag}] ` : '');
|
|
35
|
+
cleaned = `${lane}${errorMatch[1]}`;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// For ENOENT/file errors: extract the file path and simplify
|
|
39
|
+
const enoentMatch = cleaned.match(/ENOENT:.*?['"]([^'"]+)['"]/);
|
|
40
|
+
if (enoentMatch) {
|
|
41
|
+
const filePath = enoentMatch[1];
|
|
42
|
+
// Show just filename or last 2 path components
|
|
43
|
+
const shortPath = filePath.split('/').slice(-2).join('/');
|
|
44
|
+
cleaned = `파일 없음: ${shortPath}`;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// Strip key=value pairs that are noise (conn=..., durationMs=...)
|
|
48
|
+
cleaned = cleaned
|
|
49
|
+
.replace(/\b(conn|durationMs|stateVersion|seq)=\S+/g, '')
|
|
50
|
+
.replace(/\s{2,}/g, ' ')
|
|
51
|
+
.trim();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Truncate
|
|
55
|
+
if (cleaned.length > 500)
|
|
56
|
+
cleaned = cleaned.slice(0, 497) + '...';
|
|
57
|
+
return cleaned || message.slice(0, 500);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Clean detail text — strip markdown artifacts, JSON blobs, and system noise.
|
|
61
|
+
* Applied to timeline entry `detail` fields before storage.
|
|
62
|
+
*/
|
|
63
|
+
export function cleanDetailText(text) {
|
|
64
|
+
if (!text)
|
|
65
|
+
return text;
|
|
66
|
+
if (typeof text !== 'string')
|
|
67
|
+
return '';
|
|
68
|
+
// If entire text is a JSON object, extract readable message
|
|
69
|
+
const trimmed = text.trim();
|
|
70
|
+
if (trimmed.startsWith('{') && trimmed.endsWith('}')) {
|
|
71
|
+
try {
|
|
72
|
+
const parsed = JSON.parse(trimmed);
|
|
73
|
+
// System JSON blobs (connectionId, status codes, etc.) → filter
|
|
74
|
+
if (parsed.connectionId || parsed.stateVersion || parsed.seq)
|
|
75
|
+
return '';
|
|
76
|
+
if (parsed.error)
|
|
77
|
+
return String(parsed.error);
|
|
78
|
+
// Other JSON → compact readable form
|
|
79
|
+
return JSON.stringify(parsed).slice(0, 200);
|
|
80
|
+
}
|
|
81
|
+
catch { /* not valid JSON, continue */ }
|
|
82
|
+
}
|
|
83
|
+
let cleaned = text;
|
|
84
|
+
// Strip code fences: ```lang\n...\n``` → contents
|
|
85
|
+
cleaned = cleaned.replace(/```[\w]*\n?([\s\S]*?)```/g, '$1');
|
|
86
|
+
// Strip bold: **text** → text
|
|
87
|
+
cleaned = cleaned.replace(/\*\*([^*]+)\*\*/g, '$1');
|
|
88
|
+
// Strip italic: *text* or _text_ (but not __dunder__)
|
|
89
|
+
cleaned = cleaned.replace(/(?<!\*)\*([^*\n]+)\*(?!\*)/g, '$1');
|
|
90
|
+
// Strip headings: ## heading → heading
|
|
91
|
+
cleaned = cleaned.replace(/^#{1,6}\s+/gm, '');
|
|
92
|
+
// Strip blockquotes: > text → text
|
|
93
|
+
cleaned = cleaned.replace(/^>\s+/gm, '');
|
|
94
|
+
// Strip markdown links: [text](url) → text
|
|
95
|
+
cleaned = cleaned.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1');
|
|
96
|
+
// Strip list markers: - item or * item → item (only at line start)
|
|
97
|
+
cleaned = cleaned.replace(/^[-*]\s+/gm, '');
|
|
98
|
+
// Strip inline code backticks: `code` → code
|
|
99
|
+
cleaned = cleaned.replace(/`([^`]+)`/g, '$1');
|
|
100
|
+
// Collapse multiple blank lines
|
|
101
|
+
cleaned = cleaned.replace(/\n{3,}/g, '\n\n');
|
|
102
|
+
return cleaned.trim();
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Strip inline markdown from raw text (lightweight version of cleanDetailText).
|
|
106
|
+
* Handles: **bold**, # heading, `code`, [text](url).
|
|
107
|
+
*/
|
|
108
|
+
export function cleanRawText(text) {
|
|
109
|
+
if (!text)
|
|
110
|
+
return text;
|
|
111
|
+
if (typeof text !== 'string')
|
|
112
|
+
return '';
|
|
113
|
+
return text
|
|
114
|
+
.replace(/\*\*([^*]+)\*\*/g, '$1')
|
|
115
|
+
.replace(/^#{1,6}\s+/gm, '')
|
|
116
|
+
.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1')
|
|
117
|
+
.replace(/`([^`]+)`/g, '$1')
|
|
118
|
+
.trim();
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Remove NOP/NOOP markers from text.
|
|
122
|
+
* Applied to both raw and detail fields.
|
|
123
|
+
*/
|
|
124
|
+
export function cleanNopMarkers(text) {
|
|
125
|
+
if (!text)
|
|
126
|
+
return text;
|
|
127
|
+
return text
|
|
128
|
+
.replace(/\bN[Oo][Oo]?[Pp]\b\s*/g, '')
|
|
129
|
+
.replace(/\n{3,}/g, '\n\n')
|
|
130
|
+
.trim();
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Extract the semantic core of a timeline entry for dedup comparison.
|
|
134
|
+
* For chat_end: strip duration/tool suffix (everything after first ' · ').
|
|
135
|
+
* For chat_start: use full raw text.
|
|
136
|
+
*/
|
|
137
|
+
export function extractSemanticCore(raw, type) {
|
|
138
|
+
if (type === 'chat_end') {
|
|
139
|
+
const sepIdx = raw.indexOf(' \u00b7 ');
|
|
140
|
+
return sepIdx >= 0 ? raw.slice(0, sepIdx).trim() : raw.trim();
|
|
141
|
+
}
|
|
142
|
+
return raw.trim();
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Normalize a semantic core for fuzzy comparison.
|
|
146
|
+
* Extracts sorted unique keywords, stripping punctuation and common suffixes.
|
|
147
|
+
* "WhatsApp 연결 상태 확인 완료, 정상 작동" → "whatsapp 연결 상태 완료 작동 정상 확인"
|
|
148
|
+
*/
|
|
149
|
+
function normalizeCore(core) {
|
|
150
|
+
return core
|
|
151
|
+
.toLowerCase()
|
|
152
|
+
.replace(/[.,!?·✓✅:…""''`\n]+/g, ' ')
|
|
153
|
+
.replace(/\s+/g, ' ')
|
|
154
|
+
.trim();
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Extract a keyword bag from text for similarity comparison.
|
|
158
|
+
* Strips Korean verb/adjective endings and common fillers.
|
|
159
|
+
*/
|
|
160
|
+
function extractKeywords(text) {
|
|
161
|
+
const normalized = normalizeCore(text);
|
|
162
|
+
const words = normalized.split(' ').filter(w => w.length >= 2);
|
|
163
|
+
// Strip common Korean verbal endings for stemming
|
|
164
|
+
const stemmed = words.map(w => w.replace(/(하겠습니다|합니다|합니다|한다|시작|완료|중|확인됨|됨|했습니다)$/, '')
|
|
165
|
+
.replace(/(을|를|이|가|의|에|에서|으로|로|는|은|도|만|까지)$/, '')).filter(w => w.length >= 2);
|
|
166
|
+
// Remove common filler words
|
|
167
|
+
const fillers = new Set(['시작', '완료', '중', '및', '조치', '불필요', '정상', 'completed', 'prompt', 'sent', 'noop', 'nop']);
|
|
168
|
+
return new Set(stemmed.filter(w => !fillers.has(w)));
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Check if two semantic cores are similar enough to be considered duplicates.
|
|
172
|
+
* Uses keyword overlap — if 60%+ of smaller keyword set overlaps, it's a dupe.
|
|
173
|
+
*/
|
|
174
|
+
function isSimilarCore(a, b) {
|
|
175
|
+
const na = normalizeCore(a);
|
|
176
|
+
const nb = normalizeCore(b);
|
|
177
|
+
if (na === nb)
|
|
178
|
+
return true;
|
|
179
|
+
// Keyword-based similarity
|
|
180
|
+
const ka = extractKeywords(a);
|
|
181
|
+
const kb = extractKeywords(b);
|
|
182
|
+
if (ka.size === 0 || kb.size === 0)
|
|
183
|
+
return false;
|
|
184
|
+
const smaller = ka.size <= kb.size ? ka : kb;
|
|
185
|
+
const larger = ka.size > kb.size ? ka : kb;
|
|
186
|
+
let overlap = 0;
|
|
187
|
+
for (const w of smaller) {
|
|
188
|
+
if (larger.has(w))
|
|
189
|
+
overlap++;
|
|
190
|
+
}
|
|
191
|
+
// 60% overlap of the smaller set → similar
|
|
192
|
+
return overlap >= smaller.size * 0.6 && overlap >= 2;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Check if an entry is repetitive compared to recent entries.
|
|
196
|
+
* Returns the index of the matching entry in recentEntries, or -1 if not repetitive.
|
|
197
|
+
*/
|
|
198
|
+
export function isRepetitiveEntry(entry, recentEntries, windowMs = 3_600_000) {
|
|
199
|
+
if (entry.type !== 'chat_end' &&
|
|
200
|
+
entry.type !== 'chat_start' &&
|
|
201
|
+
entry.type !== 'error' &&
|
|
202
|
+
entry.type !== 'chat_response') {
|
|
203
|
+
return -1;
|
|
204
|
+
}
|
|
205
|
+
// Automated entries (cron/channel-initiated): 8h window, any automated pair is a dupe
|
|
206
|
+
const effectiveWindowMs = entry.automated ? 8 * 3_600_000 : windowMs;
|
|
207
|
+
const core = extractSemanticCore(entry.raw, entry.type);
|
|
208
|
+
if (!core)
|
|
209
|
+
return -1;
|
|
210
|
+
for (let i = recentEntries.length - 1; i >= 0; i--) {
|
|
211
|
+
const e = recentEntries[i];
|
|
212
|
+
if (entry.ts - e.ts > effectiveWindowMs)
|
|
213
|
+
break;
|
|
214
|
+
if (e.type !== entry.type)
|
|
215
|
+
continue;
|
|
216
|
+
// Automated entries: content-agnostic dedup (any two automated chats collapse)
|
|
217
|
+
if (entry.automated && e.automated)
|
|
218
|
+
return i;
|
|
219
|
+
const eCore = extractSemanticCore(e.raw, e.type);
|
|
220
|
+
if (isSimilarCore(core, eCore))
|
|
221
|
+
return i;
|
|
222
|
+
}
|
|
223
|
+
return -1;
|
|
224
|
+
}
|
|
225
|
+
export function deduplicateEntry(entry, entries) {
|
|
226
|
+
// 1. Clean text artifacts
|
|
227
|
+
if (entry.raw)
|
|
228
|
+
entry = { ...entry, raw: cleanNopMarkers(cleanRawText(entry.raw)) };
|
|
229
|
+
if (entry.detail)
|
|
230
|
+
entry = { ...entry, detail: cleanNopMarkers(entry.detail) };
|
|
231
|
+
// 2. Exact dedup: skip if same type + raw within 8 seconds
|
|
232
|
+
for (let i = entries.length - 1; i >= 0; i--) {
|
|
233
|
+
const e = entries[i];
|
|
234
|
+
if (entry.ts - e.ts > 8_000)
|
|
235
|
+
break;
|
|
236
|
+
if (e.type === entry.type && e.raw === entry.raw)
|
|
237
|
+
return { action: 'skip' };
|
|
238
|
+
}
|
|
239
|
+
// 3. Repetitive entry dedup (1h window)
|
|
240
|
+
const repIdx = isRepetitiveEntry(entry, entries);
|
|
241
|
+
if (repIdx >= 0) {
|
|
242
|
+
let removeChatStartIndex;
|
|
243
|
+
// For chat_end dedup, find paired chat_start that's also repetitive
|
|
244
|
+
if (entry.type === 'chat_end') {
|
|
245
|
+
for (let j = entries.length - 1; j >= 0; j--) {
|
|
246
|
+
const cs = entries[j];
|
|
247
|
+
if (cs.type !== 'chat_start')
|
|
248
|
+
continue;
|
|
249
|
+
if (entry.ts - cs.ts > 3_600_000)
|
|
250
|
+
break;
|
|
251
|
+
if (isRepetitiveEntry(cs, entries.slice(0, j)) >= 0) {
|
|
252
|
+
removeChatStartIndex = j;
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return { action: 'merge', index: repIdx, removeChatStartIndex };
|
|
258
|
+
}
|
|
259
|
+
return { action: 'add', entry };
|
|
260
|
+
}
|
|
261
|
+
/** Parse a single JSON log line into a TimelineEntry, or null if unrecognized. */
|
|
262
|
+
export function parseLogLine(json) {
|
|
263
|
+
if (!json || typeof json !== 'object')
|
|
264
|
+
return null;
|
|
265
|
+
const obj = json;
|
|
266
|
+
// ===== OpenClaw logs --json format =====
|
|
267
|
+
// { type: "log", time: "ISO", level: "info|debug", message: "...", subsystem?: "...", module?: "...", raw: "..." }
|
|
268
|
+
const message = obj.message || obj.msg || '';
|
|
269
|
+
const subsystem = obj.subsystem;
|
|
270
|
+
const module_ = obj.module;
|
|
271
|
+
// Parse timestamp: ISO string (OpenClaw) or numeric
|
|
272
|
+
let ts;
|
|
273
|
+
const timeStr = obj.time;
|
|
274
|
+
if (timeStr && typeof timeStr === 'string') {
|
|
275
|
+
const parsed = new Date(timeStr).getTime();
|
|
276
|
+
ts = isNaN(parsed) ? Date.now() : parsed;
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
ts = obj.ts || obj.timestamp || Date.now();
|
|
280
|
+
}
|
|
281
|
+
// ===== Legacy structured format (backward compat) =====
|
|
282
|
+
const action = obj.action;
|
|
283
|
+
const model = obj.model;
|
|
284
|
+
const tool = obj.tool;
|
|
285
|
+
const component = obj.component;
|
|
286
|
+
const tokens = obj.tokens;
|
|
287
|
+
// Model inference start/complete (legacy structured) — suppressed
|
|
288
|
+
// Adapter generates richer chat_start/chat_end with prompt, duration, tool summary
|
|
289
|
+
if (model && (action === 'start' || action === 'request' || action === 'complete' || action === 'done' || action === 'response')) {
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
// Memory / recall (legacy structured)
|
|
293
|
+
if (component === 'memory' || action === 'recall' || action === 'search') {
|
|
294
|
+
const query = obj.query || message || 'memory search';
|
|
295
|
+
return {
|
|
296
|
+
ts, type: 'memory_recall',
|
|
297
|
+
raw: `Memory: ${query}`,
|
|
298
|
+
detail: query.length > 50 ? query : undefined,
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
// Tool execution (legacy structured)
|
|
302
|
+
if (tool || (component === 'tool' && action)) {
|
|
303
|
+
const toolName = tool || action || 'tool';
|
|
304
|
+
const toolDetail = obj.detail || obj.command || '';
|
|
305
|
+
const toolRaw = toolDetail ? `${toolName}: ${toolDetail}` : toolName;
|
|
306
|
+
return {
|
|
307
|
+
ts, type: 'tool_exec',
|
|
308
|
+
raw: toolRaw.length > 500 ? toolRaw.slice(0, 497) + '...' : toolRaw,
|
|
309
|
+
detail: toolDetail.length > 100 ? (toolDetail.length > 1000 ? toolDetail.slice(0, 997) + '...' : toolDetail) : undefined,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
// ===== OpenClaw message-text based matching =====
|
|
313
|
+
if (!message)
|
|
314
|
+
return null;
|
|
315
|
+
// Skip very short messages (JSON fragments, truncated output)
|
|
316
|
+
if (message.length < 5)
|
|
317
|
+
return null;
|
|
318
|
+
// Gateway WS subsystem: all RPC events are redundant with adapter-generated timeline
|
|
319
|
+
// (chat.send → chat_start, chat.abort → chat_end, exec.approval.resolve → tool_resolved)
|
|
320
|
+
if (subsystem === 'gateway/ws')
|
|
321
|
+
return null;
|
|
322
|
+
// Cron list table rows: UUID-prefixed lines from `openclaw cron list` output
|
|
323
|
+
// Keep error rows as summarized entries; skip ok/skipped rows
|
|
324
|
+
const cronRowMatch = message.match(/^[0-9a-f]{8}-[0-9a-f]{4}-\S+\s+(\S+(?:\.\.\.)?\S*)\s+.*?\b(error|ok|skipped)\b/i);
|
|
325
|
+
if (cronRowMatch) {
|
|
326
|
+
const [, jobName, status] = cronRowMatch;
|
|
327
|
+
if (status.toLowerCase() !== 'error')
|
|
328
|
+
return null; // ok/skipped → skip
|
|
329
|
+
// Extract human-readable job name (strip trailing ...)
|
|
330
|
+
const name = jobName.replace(/\.{3}$/, '').replace(/-/g, ' ');
|
|
331
|
+
return { ts, type: 'error', raw: `Cron error: ${name}` };
|
|
332
|
+
}
|
|
333
|
+
// Skip cron module noise and JSON blobs (internal state, not user-facing)
|
|
334
|
+
if (module_ === 'cron' || subsystem === 'cron')
|
|
335
|
+
return null;
|
|
336
|
+
if (/^"jobs"\s*:\s*\[|^\{"jobs":/i.test(message))
|
|
337
|
+
return null;
|
|
338
|
+
// Skip noisy infrastructure messages
|
|
339
|
+
if (message.startsWith('- agent:main:') && message.includes(' ago)'))
|
|
340
|
+
return null;
|
|
341
|
+
if (message.startsWith('Agents:') || message.startsWith('Session store'))
|
|
342
|
+
return null;
|
|
343
|
+
if (message.startsWith('Heartbeat interval:') || message.startsWith('WhatsApp:') || message.startsWith('LINE:'))
|
|
344
|
+
return null;
|
|
345
|
+
if (message.startsWith('Web Channel:') || message.startsWith('Run "openclaw'))
|
|
346
|
+
return null;
|
|
347
|
+
if (message.includes('web gateway heartbeat') || module_ === 'web-heartbeat')
|
|
348
|
+
return null;
|
|
349
|
+
// Skip hook registration and session setup noise
|
|
350
|
+
if (/\bRegistered hook\b/i.test(message))
|
|
351
|
+
return null;
|
|
352
|
+
if (/\bSession (store|restored|loaded)\b/i.test(message))
|
|
353
|
+
return null;
|
|
354
|
+
// Skip diagnostic noise, but keep errors
|
|
355
|
+
if (subsystem === 'diagnostic' && !/\b(error|fail|timed?\s*out)\b/i.test(message))
|
|
356
|
+
return null;
|
|
357
|
+
// Skip transient/retriable errors that agents handle internally
|
|
358
|
+
if (/\b(web_fetch|http_request|fetch)\b/i.test(message) &&
|
|
359
|
+
/\b(timed?\s*out|ECONNREFUSED|ECONNRESET|ETIMEDOUT|retry|retrying)\b/i.test(message)) {
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
// Skip web_fetch/browser tool failures (404, generic fetch, tab errors) — agents handle internally
|
|
363
|
+
if (/\bweb_fetch failed\b/i.test(message) && /\b(404|403)\b/.test(message)) {
|
|
364
|
+
return null;
|
|
365
|
+
}
|
|
366
|
+
if (/\bweb_fetch failed:\s*fetch failed\b/i.test(message)) {
|
|
367
|
+
return null;
|
|
368
|
+
}
|
|
369
|
+
if (/\bbrowser failed:\s*tab not found\b/i.test(message)) {
|
|
370
|
+
return null;
|
|
371
|
+
}
|
|
372
|
+
// Skip browser sandbox configuration messages (setting issue, not runtime error)
|
|
373
|
+
if (/\bSandbox browser is unavailable\b/i.test(message)) {
|
|
374
|
+
return null;
|
|
375
|
+
}
|
|
376
|
+
// Skip tool errors that agents retry internally (edit mismatch, EISDIR, ENOENT on memory)
|
|
377
|
+
if (/\bedit failed:\s*Could not find the exact text\b/i.test(message)) {
|
|
378
|
+
return null;
|
|
379
|
+
}
|
|
380
|
+
if (/\bread failed\b/i.test(message) && /\bEISDIR\b/.test(message)) {
|
|
381
|
+
return null;
|
|
382
|
+
}
|
|
383
|
+
if (/\bread failed\b/i.test(message) && /\bENOENT\b/.test(message) &&
|
|
384
|
+
/workspace\/memory\//i.test(message)) {
|
|
385
|
+
return null;
|
|
386
|
+
}
|
|
387
|
+
// Skip failover cascade noise — the initial timeout/error is already shown
|
|
388
|
+
if (/\bProfile\s+\S+\s+timed out\b/i.test(message) ||
|
|
389
|
+
/\bFailoverError:\s+LLM request timed out\b/i.test(message)) {
|
|
390
|
+
return null;
|
|
391
|
+
}
|
|
392
|
+
// Messaging channel infrastructure detection — only filter when from known infra subsystems/modules
|
|
393
|
+
// (avoid filtering user-facing messages that mention "whatsapp" etc.)
|
|
394
|
+
const isChannelInfra = subsystem === 'channel' || module_ === 'whatsapp' || module_ === 'line'
|
|
395
|
+
|| module_ === 'web-channel' || subsystem === 'messaging';
|
|
396
|
+
// Skip transient network_error — only from known infra subsystems (not user-facing tool errors)
|
|
397
|
+
if (/\bnetwork_error\b/i.test(message) &&
|
|
398
|
+
(subsystem === 'gateway/ws' || subsystem === 'diagnostic' || module_ === 'web-heartbeat' || isChannelInfra)) {
|
|
399
|
+
return null;
|
|
400
|
+
}
|
|
401
|
+
if (/\bembedded run agent end\b/i.test(message) && /\berror=500\b/.test(message)) {
|
|
402
|
+
return null;
|
|
403
|
+
}
|
|
404
|
+
if (isChannelInfra) {
|
|
405
|
+
// Auto-reconnect, retry, connection status — all infra noise
|
|
406
|
+
if (/\b(Web connection closed|Retry \d+\/\d+|reconnect|heartbeat)\b/i.test(message)) {
|
|
407
|
+
return null;
|
|
408
|
+
}
|
|
409
|
+
if (/\bWebSocket error\b/i.test(message)) {
|
|
410
|
+
return null;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
// Skip raw JSON blobs — connection status, event payloads, cron state
|
|
414
|
+
if (/^\{"connectionId":/i.test(message)) {
|
|
415
|
+
return null;
|
|
416
|
+
}
|
|
417
|
+
if (/^\{"event":/i.test(message)) {
|
|
418
|
+
return null;
|
|
419
|
+
}
|
|
420
|
+
// Skip delivery retry noise (infrastructure auto-recovery)
|
|
421
|
+
if (/\bDelivery\b.*\bexceeded max retries\b/i.test(message)) {
|
|
422
|
+
return null;
|
|
423
|
+
}
|
|
424
|
+
if (/\bDelivery recovery complete\b/i.test(message)) {
|
|
425
|
+
return null;
|
|
426
|
+
}
|
|
427
|
+
if (/\bRetry failed for delivery\b/i.test(message)) {
|
|
428
|
+
return null;
|
|
429
|
+
}
|
|
430
|
+
// Skip model_fallback_decision JSON blobs (internal routing noise)
|
|
431
|
+
if (/model_fallback_decision/i.test(message)) {
|
|
432
|
+
return null;
|
|
433
|
+
}
|
|
434
|
+
// --- Error patterns FIRST (before model/tool matching to avoid misclassification) ---
|
|
435
|
+
if (obj.level === 'error' || /\b(error|fail(?:ed|ure)?|exception|timed?\s*out|ENOENT|EACCES)\b/i.test(message)) {
|
|
436
|
+
// Extract meaningful error description from structured messages
|
|
437
|
+
const errorRaw = extractReadableMessage(message);
|
|
438
|
+
return { ts, type: 'error', raw: errorRaw };
|
|
439
|
+
}
|
|
440
|
+
// Model/inference patterns: suppressed — adapter generates richer chat_start/chat_end
|
|
441
|
+
// (these broad patterns match too many internal logs: "inference completed", "thinking process", etc.)
|
|
442
|
+
if (/\b(inference|model|llm)\b.*\b(start|request|call|complet|done|response|finish)\b/i.test(message)) {
|
|
443
|
+
return null;
|
|
444
|
+
}
|
|
445
|
+
// Memory patterns in message text
|
|
446
|
+
if (/\b(memory|recall|search)\b/i.test(message)) {
|
|
447
|
+
return { ts, type: 'memory_recall', raw: extractReadableMessage(message) };
|
|
448
|
+
}
|
|
449
|
+
// Tool/exec patterns in message text
|
|
450
|
+
if (/\b(tool|exec|execute|command)\b/i.test(message)) {
|
|
451
|
+
return { ts, type: 'tool_exec', raw: extractReadableMessage(message) };
|
|
452
|
+
}
|
|
453
|
+
// Unrecognized — skip
|
|
454
|
+
return null;
|
|
455
|
+
}
|
|
456
|
+
//# sourceMappingURL=timeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.js","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"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"}
|
package/dist/voice-paths.d.ts
CHANGED
|
@@ -7,6 +7,10 @@ export declare const SOX_CANDIDATES: string[];
|
|
|
7
7
|
export declare const WHISPER_SERVER_CANDIDATES: string[];
|
|
8
8
|
/** Whisper-server discovery info file path */
|
|
9
9
|
export declare const WHISPER_SERVER_INFO_FILE: string;
|
|
10
|
+
/** Directory for custom .ppn wake word model files */
|
|
11
|
+
export declare const WAKE_WORD_MODEL_DIR: string;
|
|
12
|
+
/** Picovoice access key file */
|
|
13
|
+
export declare const PICOVOICE_ACCESS_KEY_FILE: string;
|
|
10
14
|
/** OpenClaw binary candidates */
|
|
11
15
|
export declare const OPENCLAW_CANDIDATES: string[];
|
|
12
16
|
/** Resolve `openclaw` binary: try known candidate paths, fallback to bare name on PATH. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-paths.d.ts","sourceRoot":"","sources":["../src/voice-paths.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,iBAAiB,UAK7B,CAAC;AAGF,eAAO,MAAM,iBAAiB,UAI7B,CAAC;AACF,eAAO,MAAM,oBAAoB,UAGhC,CAAC;AAGF,eAAO,MAAM,kBAAkB,UAG9B,CAAC;AACF,eAAO,MAAM,cAAc,UAG1B,CAAC;AACF,eAAO,MAAM,cAAc,UAG1B,CAAC;AACF,eAAO,MAAM,yBAAyB,UAGrC,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,wBAAwB,QAAuD,CAAC;
|
|
1
|
+
{"version":3,"file":"voice-paths.d.ts","sourceRoot":"","sources":["../src/voice-paths.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,iBAAiB,UAK7B,CAAC;AAGF,eAAO,MAAM,iBAAiB,UAI7B,CAAC;AACF,eAAO,MAAM,oBAAoB,UAGhC,CAAC;AAGF,eAAO,MAAM,kBAAkB,UAG9B,CAAC;AACF,eAAO,MAAM,cAAc,UAG1B,CAAC;AACF,eAAO,MAAM,cAAc,UAG1B,CAAC;AACF,eAAO,MAAM,yBAAyB,UAGrC,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,wBAAwB,QAAuD,CAAC;AAI7F,sDAAsD;AACtD,eAAO,MAAM,mBAAmB,QAA6C,CAAC;AAE9E,gCAAgC;AAChC,eAAO,MAAM,yBAAyB,QAAwD,CAAC;AAE/F,iCAAiC;AACjC,eAAO,MAAM,mBAAmB,UAU/B,CAAC;AAEF,2FAA2F;AAC3F,wBAAgB,kBAAkB,IAAI,MAAM,CAK3C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAatC"}
|
package/dist/voice-paths.js
CHANGED
|
@@ -39,6 +39,11 @@ export const WHISPER_SERVER_CANDIDATES = [
|
|
|
39
39
|
];
|
|
40
40
|
/** Whisper-server discovery info file path */
|
|
41
41
|
export const WHISPER_SERVER_INFO_FILE = join(homedir(), '.agentdeck', 'whisper-server.json');
|
|
42
|
+
// ===== Porcupine Wake Word =====
|
|
43
|
+
/** Directory for custom .ppn wake word model files */
|
|
44
|
+
export const WAKE_WORD_MODEL_DIR = join(homedir(), '.agentdeck', 'wake-word');
|
|
45
|
+
/** Picovoice access key file */
|
|
46
|
+
export const PICOVOICE_ACCESS_KEY_FILE = join(homedir(), '.agentdeck', 'picovoice-access-key');
|
|
42
47
|
/** OpenClaw binary candidates */
|
|
43
48
|
export const OPENCLAW_CANDIDATES = [
|
|
44
49
|
'/opt/homebrew/bin/openclaw',
|
package/dist/voice-paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voice-paths.js","sourceRoot":"","sources":["../src/voice-paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,CAAC,OAAO,EAAE,EAAE,0BAA0B,CAAC;IAC3C,iCAAiC,EAAI,iBAAiB;IACtD,8BAA8B,EAAO,eAAe;IACpD,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC;CAC1B,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,yBAAyB;IACzB,gBAAgB;IAChB,eAAe;CAChB,CAAC;AACF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,eAAe;IACf,gBAAgB;CACjB,CAAC;AAEF,iEAAiE;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,+BAA+B;IAC/B,4BAA4B;CAC7B,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,uBAAuB;IACvB,oBAAoB;CACrB,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,uBAAuB;IACvB,oBAAoB;CACrB,CAAC;AACF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,kCAAkC;IAClC,+BAA+B;CAChC,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;AAE7F,iCAAiC;AACjC,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,4BAA4B;IAC5B,yBAAyB;IACzB,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAyB,wBAAwB;IAC/F,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,gBAAgB;IACzF,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC;IAClC,IAAI,CAAC,OAAO,EAAE,EAAE,wBAAwB,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,EAAE,mBAAmB,CAAC;CACrC,CAAC;AAEF,2FAA2F;AAC3F,MAAM,UAAU,kBAAkB;IAChC,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;QAC5C,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAC9C,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,KAAK,GAAG;QACZ,mBAAmB;QACnB,gBAAgB;QAChB,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,EAAG,wBAAwB;QAC7D,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC;KAC5B,CAAC;IACF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,eAAe,CAAC;IACrD,OAAO,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC"}
|
|
1
|
+
{"version":3,"file":"voice-paths.js","sourceRoot":"","sources":["../src/voice-paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,CAAC,OAAO,EAAE,EAAE,0BAA0B,CAAC;IAC3C,iCAAiC,EAAI,iBAAiB;IACtD,8BAA8B,EAAO,eAAe;IACpD,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC;CAC1B,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,yBAAyB;IACzB,gBAAgB;IAChB,eAAe;CAChB,CAAC;AACF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,eAAe;IACf,gBAAgB;CACjB,CAAC;AAEF,iEAAiE;AACjE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,+BAA+B;IAC/B,4BAA4B;CAC7B,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,uBAAuB;IACvB,oBAAoB;CACrB,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,uBAAuB;IACvB,oBAAoB;CACrB,CAAC;AACF,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,kCAAkC;IAClC,+BAA+B;CAChC,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;AAE7F,kCAAkC;AAElC,sDAAsD;AACtD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;AAE9E,gCAAgC;AAChC,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;AAE/F,iCAAiC;AACjC,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,4BAA4B;IAC5B,yBAAyB;IACzB,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAyB,wBAAwB;IAC/F,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,CAAC,EAAE,gBAAgB;IACzF,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,EAAE,qBAAqB,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC;IAClC,IAAI,CAAC,OAAO,EAAE,EAAE,wBAAwB,CAAC;IACzC,IAAI,CAAC,OAAO,EAAE,EAAE,mBAAmB,CAAC;CACrC,CAAC;AAEF,2FAA2F;AAC3F,MAAM,UAAU,kBAAkB;IAChC,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;QAC5C,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAC9C,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,KAAK,GAAG;QACZ,mBAAmB;QACnB,gBAAgB;QAChB,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,EAAG,wBAAwB;QAC7D,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC;KAC5B,CAAC;IACF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,eAAe,CAAC;IACrD,OAAO,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentdeck/shared",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"directory": "shared"
|
|
10
10
|
},
|
|
11
11
|
"files": [
|
|
12
|
-
"dist"
|
|
12
|
+
"dist",
|
|
13
|
+
"!dist/__tests__"
|
|
13
14
|
],
|
|
14
15
|
"main": "./dist/index.js",
|
|
15
16
|
"types": "./dist/index.d.ts",
|
|
@@ -25,10 +26,15 @@
|
|
|
25
26
|
"./states": {
|
|
26
27
|
"types": "./dist/states.d.ts",
|
|
27
28
|
"import": "./dist/states.js"
|
|
29
|
+
},
|
|
30
|
+
"./svg-renderers": {
|
|
31
|
+
"types": "./dist/svg-renderers/index.d.ts",
|
|
32
|
+
"import": "./dist/svg-renderers/index.js"
|
|
28
33
|
}
|
|
29
34
|
},
|
|
30
35
|
"devDependencies": {
|
|
31
|
-
"
|
|
36
|
+
"@types/node": "^25.6.0",
|
|
37
|
+
"typescript": "^6.0.3"
|
|
32
38
|
},
|
|
33
39
|
"scripts": {
|
|
34
40
|
"build": "tsc",
|