@agentdeck/shared 0.1.0 → 0.2.3
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 +18 -3
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +62 -0
- package/dist/adapter.js.map +1 -1
- package/dist/command-builders.d.ts +35 -0
- package/dist/command-builders.d.ts.map +1 -0
- package/dist/command-builders.js +75 -0
- package/dist/command-builders.js.map +1 -0
- package/dist/connection-status.d.ts +42 -0
- package/dist/connection-status.d.ts.map +1 -0
- package/dist/connection-status.js +52 -0
- package/dist/connection-status.js.map +1 -0
- package/dist/d200h-layout.d.ts +131 -0
- package/dist/d200h-layout.d.ts.map +1 -0
- package/dist/d200h-layout.js +627 -0
- package/dist/d200h-layout.js.map +1 -0
- package/dist/design-tokens.d.ts +259 -0
- package/dist/design-tokens.d.ts.map +1 -0
- package/dist/design-tokens.js +156 -0
- package/dist/design-tokens.js.map +1 -0
- package/dist/eval-schema.d.ts +235 -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 +52 -0
- package/dist/format-utils.d.ts.map +1 -0
- package/dist/format-utils.js +165 -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 +19 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -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/net-utils.d.ts +2 -1
- package/dist/net-utils.d.ts.map +1 -1
- package/dist/net-utils.js +100 -3
- package/dist/net-utils.js.map +1 -1
- package/dist/pricing.d.ts +45 -0
- package/dist/pricing.d.ts.map +1 -0
- package/dist/pricing.js +93 -0
- package/dist/pricing.js.map +1 -0
- package/dist/protocol.d.ts +496 -2
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +30 -1
- package/dist/protocol.js.map +1 -1
- package/dist/sample.d.ts +152 -0
- package/dist/sample.d.ts.map +1 -0
- package/dist/sample.js +22 -0
- package/dist/sample.js.map +1 -0
- package/dist/session-utils.d.ts +142 -0
- package/dist/session-utils.d.ts.map +1 -0
- package/dist/session-utils.js +304 -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 +48 -0
- package/dist/state-colors.js.map +1 -0
- package/dist/states.d.ts +2 -0
- package/dist/states.d.ts.map +1 -1
- package/dist/states.js +6 -1
- package/dist/states.js.map +1 -1
- package/dist/svg-renderers/agent-logos.d.ts +45 -0
- package/dist/svg-renderers/agent-logos.d.ts.map +1 -0
- package/dist/svg-renderers/agent-logos.js +238 -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 +78 -0
- package/dist/svg-renderers/session-slot-renderer.d.ts.map +1 -0
- package/dist/svg-renderers/session-slot-renderer.js +506 -0
- package/dist/svg-renderers/session-slot-renderer.js.map +1 -0
- package/dist/svg-renderers/text-utils.d.ts +29 -0
- package/dist/svg-renderers/text-utils.d.ts.map +1 -0
- package/dist/svg-renderers/text-utils.js +122 -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-icons.d.ts +70 -0
- package/dist/timeline-icons.d.ts.map +1 -0
- package/dist/timeline-icons.js +161 -0
- package/dist/timeline-icons.js.map +1 -0
- package/dist/timeline-label.d.ts +38 -0
- package/dist/timeline-label.d.ts.map +1 -0
- package/dist/timeline-label.js +95 -0
- package/dist/timeline-label.js.map +1 -0
- package/dist/timeline-markdown.d.ts +80 -0
- package/dist/timeline-markdown.d.ts.map +1 -0
- package/dist/timeline-markdown.js +221 -0
- package/dist/timeline-markdown.js.map +1 -0
- package/dist/timeline-summarizer.d.ts +37 -0
- package/dist/timeline-summarizer.d.ts.map +1 -0
- package/dist/timeline-summarizer.js +125 -0
- package/dist/timeline-summarizer.js.map +1 -0
- package/dist/timeline.d.ts +135 -0
- package/dist/timeline.d.ts.map +1 -0
- package/dist/timeline.js +633 -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
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared timeline types and log parser for OpenClaw mode.
|
|
3
|
+
* Used by both bridge (BridgeLogStream) and plugin (LogStream).
|
|
4
|
+
*/
|
|
5
|
+
export type TimelineEntryType = 'tool_request' | 'tool_resolved' | 'chat_start' | 'chat_end' | 'chat_response' | 'error' | 'scheduled' | 'user_action' | 'model_call' | 'model_response' | 'memory_recall' | 'tool_exec' | 'eval_result' | 'task_start' | 'task_end' | 'task_milestone';
|
|
6
|
+
import type { TaskBoundarySignal } from './eval-schema.js';
|
|
7
|
+
export type { TaskBoundarySignal } from './eval-schema.js';
|
|
8
|
+
export interface TimelineEntry {
|
|
9
|
+
ts: number;
|
|
10
|
+
type: TimelineEntryType;
|
|
11
|
+
raw: string;
|
|
12
|
+
detail?: string;
|
|
13
|
+
approvalId?: string;
|
|
14
|
+
status?: 'pending' | 'approved' | 'denied';
|
|
15
|
+
agentType?: string;
|
|
16
|
+
projectName?: string;
|
|
17
|
+
sessionId?: string;
|
|
18
|
+
runId?: string;
|
|
19
|
+
startedAt?: number;
|
|
20
|
+
endedAt?: number;
|
|
21
|
+
repeatCount?: number;
|
|
22
|
+
automated?: boolean;
|
|
23
|
+
/** APME task id. Set on task_start/task_end and on every turn entry inside the task scope. */
|
|
24
|
+
taskId?: string;
|
|
25
|
+
/** Only on task_end. Why the task closed. */
|
|
26
|
+
boundarySignal?: TaskBoundarySignal;
|
|
27
|
+
/**
|
|
28
|
+
* Per-task evaluation result, attached when the task_judge resolves
|
|
29
|
+
* (always AFTER the initial task_end emit — clients upsert the existing
|
|
30
|
+
* row by (type='task_end', taskId) and merge these four fields).
|
|
31
|
+
*
|
|
32
|
+
* - `taskScore` : 0..1 composite (matches `tasks.composite_score`)
|
|
33
|
+
* - `taskOutcome` : terminal outcome string from `bridge/src/apme/outcome.ts`
|
|
34
|
+
* (`'committed' | 'abandoned' | 'iterated' | 'ab_winner' | 'ab_loser'
|
|
35
|
+
* | 'interrupted' | 'exploratory' | 'pending'`). UIs collapse into
|
|
36
|
+
* three visual classes — success / fail / partial / pending — and pick
|
|
37
|
+
* the badge color via design-system status tokens.
|
|
38
|
+
* - `taskCategory`: task_rollup category ('general' | 'conversation' | …)
|
|
39
|
+
* - `taskSummary` : one-line judge summary
|
|
40
|
+
*/
|
|
41
|
+
taskScore?: number;
|
|
42
|
+
taskOutcome?: string;
|
|
43
|
+
taskCategory?: string;
|
|
44
|
+
taskSummary?: string;
|
|
45
|
+
/**
|
|
46
|
+
* How the row's `raw` summary was produced. Lets clients decide whether
|
|
47
|
+
* the detail pane is worth showing — when `'none'`, detail is just the
|
|
48
|
+
* unfiltered response that the heuristic couldn't summarize, and showing
|
|
49
|
+
* it duplicates content rather than adding value.
|
|
50
|
+
* - `'llm'` : LLM-summarized (clean, short, distinct from detail)
|
|
51
|
+
* - `'heuristic'`: topic-hint extracted from response or prompt
|
|
52
|
+
* - `'none'` : last-resort fallback (literal "Completed", bare tool name, etc.)
|
|
53
|
+
* - `'progress'`: non-terminal assistant status update (work still running)
|
|
54
|
+
*/
|
|
55
|
+
summaryKind?: 'llm' | 'heuristic' | 'none' | 'progress';
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Prepare a chat-response body for storage as `entry.detail` while keeping
|
|
59
|
+
* markdown intact. Use this on chat_response / chat_end emit paths so the
|
|
60
|
+
* client renderer can apply heading / bullet / table / inline span styles —
|
|
61
|
+
* `cleanDetailText` would have stripped all of that before it ever reached
|
|
62
|
+
* the dashboard.
|
|
63
|
+
*
|
|
64
|
+
* Filters and caps:
|
|
65
|
+
* - System JSON blobs (`{"connectionId": ...}` etc.) → empty
|
|
66
|
+
* - Error JSON (`{"error": ...}`) → the error string
|
|
67
|
+
* - Other JSON object → compact stringified form (200 char cap)
|
|
68
|
+
* - Otherwise → original text with 3+ blank lines collapsed to 2, trimmed
|
|
69
|
+
*
|
|
70
|
+
* Markdown markers (`**`, `##`, `|`, `` ` ``, `[text](url)`, etc.) are
|
|
71
|
+
* preserved verbatim so the client `parseTimelineMarkdown` /
|
|
72
|
+
* `parseInlineSpans` can do their job.
|
|
73
|
+
*/
|
|
74
|
+
export declare function prepareMarkdownDetail(text: string): string;
|
|
75
|
+
/**
|
|
76
|
+
* Clean detail text — strip markdown artifacts, JSON blobs, and system noise.
|
|
77
|
+
* Applied to timeline entry `detail` fields before storage on **non-chat**
|
|
78
|
+
* paths (tool errors, system log lines). Chat response detail should go
|
|
79
|
+
* through `prepareMarkdownDetail` instead so the dashboard can render the
|
|
80
|
+
* markdown.
|
|
81
|
+
*/
|
|
82
|
+
export declare function cleanDetailText(text: string): string;
|
|
83
|
+
/**
|
|
84
|
+
* Strip inline markdown from raw text (lightweight version of cleanDetailText).
|
|
85
|
+
* Handles: **bold**, # heading, `code`, [text](url).
|
|
86
|
+
*/
|
|
87
|
+
export declare function cleanRawText(text: string): string;
|
|
88
|
+
/**
|
|
89
|
+
* Remove NOP/NOOP markers from text.
|
|
90
|
+
* Applied to both raw and detail fields.
|
|
91
|
+
*/
|
|
92
|
+
export declare function cleanNopMarkers(text: string): string;
|
|
93
|
+
export declare function isAssistantProgressUpdate(text?: string): boolean;
|
|
94
|
+
export declare function detailHasRealSignal(detail?: string): boolean;
|
|
95
|
+
export declare function isOpenClawPlaceholderRaw(raw: string): boolean;
|
|
96
|
+
export declare function isTaskNotificationChatStart(entry: TimelineEntry): boolean;
|
|
97
|
+
export declare function isOpenClawLowSignalResponse(entry: TimelineEntry): boolean;
|
|
98
|
+
export declare function isOpenClawCronPrompt(text?: string): boolean;
|
|
99
|
+
export declare function summarizeOpenClawCronPrompt(text?: string): string;
|
|
100
|
+
export declare function shouldDropLowSignalTimelineEntry(entry: TimelineEntry): boolean;
|
|
101
|
+
export declare function normalizeTimelineEntryForStorage(entry: TimelineEntry): TimelineEntry | null;
|
|
102
|
+
/**
|
|
103
|
+
* Extract the semantic core of a timeline entry for dedup comparison.
|
|
104
|
+
* For chat_end: strip duration/tool suffix (everything after first ' · ').
|
|
105
|
+
* For chat_start: use full raw text.
|
|
106
|
+
*/
|
|
107
|
+
export declare function extractSemanticCore(raw: string, type: TimelineEntryType): string;
|
|
108
|
+
/**
|
|
109
|
+
* Check if an entry is repetitive compared to recent entries.
|
|
110
|
+
* Returns the index of the matching entry in recentEntries, or -1 if not repetitive.
|
|
111
|
+
*/
|
|
112
|
+
export declare function isRepetitiveEntry(entry: TimelineEntry, recentEntries: readonly TimelineEntry[], windowMs?: number): number;
|
|
113
|
+
/**
|
|
114
|
+
* Shared dedup pipeline for timeline stores.
|
|
115
|
+
* Cleans text, checks exact dedup (8s), and repetitive dedup (1h).
|
|
116
|
+
* Returns: 'skip' (duplicate), 'merge' + index (repetitive), or 'add' (new).
|
|
117
|
+
*
|
|
118
|
+
* Window rationale: PTY fallback fires 1.5s after spinner_stop; Stop hook can
|
|
119
|
+
* arrive several seconds later if Claude Code's transcript_path JSONL flush is
|
|
120
|
+
* slow. 8s covers worst-case race without merging genuinely separate turns.
|
|
121
|
+
*/
|
|
122
|
+
export type DeduplicateResult = {
|
|
123
|
+
action: 'skip';
|
|
124
|
+
} | {
|
|
125
|
+
action: 'merge';
|
|
126
|
+
index: number;
|
|
127
|
+
removeChatStartIndex?: number;
|
|
128
|
+
} | {
|
|
129
|
+
action: 'add';
|
|
130
|
+
entry: TimelineEntry;
|
|
131
|
+
};
|
|
132
|
+
export declare function deduplicateEntry(entry: TimelineEntry, entries: readonly TimelineEntry[]): DeduplicateResult;
|
|
133
|
+
/** Parse a single JSON log line into a TimelineEntry, or null if unrecognized. */
|
|
134
|
+
export declare function parseLogLine(json: unknown): TimelineEntry | null;
|
|
135
|
+
//# sourceMappingURL=timeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../src/timeline.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,iBAAiB,GACzB,cAAc,GAAG,eAAe,GAAG,YAAY,GAAG,UAAU,GAC5D,eAAe,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,GACvD,YAAY,GAAG,gBAAgB,GAAG,eAAe,GAAG,WAAW,GAC/D,aAAa,GAGb,YAAY,GAAG,UAAU,GAIzB,gBAAgB,CAAC;AAIrB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,iBAAiB,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;CACzD;AAuDD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgB1D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA8CpD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASjD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wBAAgB,yBAAyB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAqBhE;AAED,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAQ5D;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG7D;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAKzE;AAQD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAuBzE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAYjE;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAsB9E;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI,CAoB3F;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAMhF;AA2DD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,SAAS,aAAa,EAAE,EACvC,QAAQ,SAAY,GACnB,MAAM,CA4BR;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAA;CAAE,GACjE;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,CAAC;AAE5C,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,SAAS,aAAa,EAAE,GAChC,iBAAiB,CAwCnB;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAkMhE"}
|