@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,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical state color palette — single source of truth for all platforms.
|
|
3
|
+
*
|
|
4
|
+
* TypeScript consumers import directly.
|
|
5
|
+
* Native platforms (Android/Apple/ESP32) reference these hex values in comments.
|
|
6
|
+
*/
|
|
7
|
+
import { State } from './states.js';
|
|
8
|
+
export declare const STATE_COLORS: Record<State, string>;
|
|
9
|
+
/** Look up state color by string key. No agent-type overrides — purely semantic. */
|
|
10
|
+
export declare function stateColor(state: string | undefined): string;
|
|
11
|
+
export declare const AGENT_BRAND_COLORS: Record<string, string>;
|
|
12
|
+
/** Get agent brand color. Falls back to slate for unknown types. */
|
|
13
|
+
export declare function agentBrandColor(agentType: string | undefined): string;
|
|
14
|
+
/** Mix a hex color toward black by ratio (0=original, 1=black). */
|
|
15
|
+
export declare function dimColor(hex: string, ratio: number): string;
|
|
16
|
+
//# sourceMappingURL=state-colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-colors.d.ts","sourceRoot":"","sources":["../src/state-colors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAKpC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAO9C,CAAC;AAEF,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAG5D;AAID,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQrD,CAAC;AAEF,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAErE;AAID,mEAAmE;AACnE,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ3D"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical state color palette — single source of truth for all platforms.
|
|
3
|
+
*
|
|
4
|
+
* TypeScript consumers import directly.
|
|
5
|
+
* Native platforms (Android/Apple/ESP32) reference these hex values in comments.
|
|
6
|
+
*/
|
|
7
|
+
import { State } from './states.js';
|
|
8
|
+
// ===== State Colors =====
|
|
9
|
+
export const STATE_COLORS = {
|
|
10
|
+
[State.IDLE]: '#22c55e', // green
|
|
11
|
+
[State.PROCESSING]: '#3b82f6', // blue
|
|
12
|
+
[State.AWAITING_PERMISSION]: '#f59e0b', // amber
|
|
13
|
+
[State.AWAITING_OPTION]: '#f59e0b', // amber
|
|
14
|
+
[State.AWAITING_DIFF]: '#f59e0b', // amber
|
|
15
|
+
[State.DISCONNECTED]: '#6b7280', // gray
|
|
16
|
+
};
|
|
17
|
+
/** Look up state color by string key. No agent-type overrides — purely semantic. */
|
|
18
|
+
export function stateColor(state) {
|
|
19
|
+
if (!state)
|
|
20
|
+
return STATE_COLORS[State.DISCONNECTED];
|
|
21
|
+
return STATE_COLORS[state] ?? STATE_COLORS[State.IDLE];
|
|
22
|
+
}
|
|
23
|
+
// ===== Agent Brand Colors (for icons, not states) =====
|
|
24
|
+
export const AGENT_BRAND_COLORS = {
|
|
25
|
+
'claude-code': '#C07058', // terracotta
|
|
26
|
+
'openclaw': '#ff4d4d', // red
|
|
27
|
+
'codex-cli': '#6366f1', // indigo
|
|
28
|
+
'codex-app': '#6366f1', // indigo
|
|
29
|
+
'opencode': '#F1ECEC', // cream
|
|
30
|
+
'antigravity': '#5F6368', // Google gray
|
|
31
|
+
'monitor': '#94a3b8', // slate
|
|
32
|
+
};
|
|
33
|
+
/** Get agent brand color. Falls back to slate for unknown types. */
|
|
34
|
+
export function agentBrandColor(agentType) {
|
|
35
|
+
return AGENT_BRAND_COLORS[agentType ?? ''] ?? '#94a3b8';
|
|
36
|
+
}
|
|
37
|
+
// ===== Color Utilities =====
|
|
38
|
+
/** Mix a hex color toward black by ratio (0=original, 1=black). */
|
|
39
|
+
export function dimColor(hex, ratio) {
|
|
40
|
+
const r = parseInt(hex.slice(1, 3), 16);
|
|
41
|
+
const g = parseInt(hex.slice(3, 5), 16);
|
|
42
|
+
const b = parseInt(hex.slice(5, 7), 16);
|
|
43
|
+
const dr = Math.round(r * (1 - ratio));
|
|
44
|
+
const dg = Math.round(g * (1 - ratio));
|
|
45
|
+
const db = Math.round(b * (1 - ratio));
|
|
46
|
+
return `#${dr.toString(16).padStart(2, '0')}${dg.toString(16).padStart(2, '0')}${db.toString(16).padStart(2, '0')}`;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=state-colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-colors.js","sourceRoot":"","sources":["../src/state-colors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,2BAA2B;AAE3B,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,CAAC,KAAK,CAAC,IAAI,CAAC,EAAiB,SAAS,EAAG,QAAQ;IACjD,CAAC,KAAK,CAAC,UAAU,CAAC,EAAW,SAAS,EAAG,OAAO;IAChD,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAG,QAAQ;IACjD,CAAC,KAAK,CAAC,eAAe,CAAC,EAAM,SAAS,EAAG,QAAQ;IACjD,CAAC,KAAK,CAAC,aAAa,CAAC,EAAQ,SAAS,EAAG,QAAQ;IACjD,CAAC,KAAK,CAAC,YAAY,CAAC,EAAS,SAAS,EAAG,OAAO;CACjD,CAAC;AAEF,oFAAoF;AACpF,MAAM,UAAU,UAAU,CAAC,KAAyB;IAClD,IAAI,CAAC,KAAK;QAAE,OAAO,YAAY,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACpD,OAAQ,YAAuC,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrF,CAAC;AAED,yDAAyD;AAEzD,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,aAAa,EAAE,SAAS,EAAG,aAAa;IACxC,UAAU,EAAK,SAAS,EAAG,MAAM;IACjC,WAAW,EAAI,SAAS,EAAG,SAAS;IACpC,WAAW,EAAI,SAAS,EAAG,SAAS;IACpC,UAAU,EAAK,SAAS,EAAG,QAAQ;IACnC,aAAa,EAAE,SAAS,EAAG,cAAc;IACzC,SAAS,EAAM,SAAS,EAAG,QAAQ;CACpC,CAAC;AAEF,oEAAoE;AACpE,MAAM,UAAU,eAAe,CAAC,SAA6B;IAC3D,OAAO,kBAAkB,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC;AAC1D,CAAC;AAED,8BAA8B;AAE9B,mEAAmE;AACnE,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,KAAa;IACjD,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACvC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACvC,OAAO,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACtH,CAAC"}
|
package/dist/states.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export interface PromptOption {
|
|
|
27
27
|
shortcut?: string;
|
|
28
28
|
recommended?: boolean;
|
|
29
29
|
selected?: boolean;
|
|
30
|
+
kind?: 'choice' | 'freeform_input';
|
|
30
31
|
}
|
|
31
32
|
export interface StateSnapshot {
|
|
32
33
|
state: State;
|
|
@@ -40,6 +41,7 @@ export interface StateSnapshot {
|
|
|
40
41
|
cursorIndex: number;
|
|
41
42
|
projectName: string | null;
|
|
42
43
|
modelName: string | null;
|
|
44
|
+
effortLevel: string | null;
|
|
43
45
|
billingType: import('./protocol.js').BillingType;
|
|
44
46
|
sessionDurationSec: number;
|
|
45
47
|
inputTokens: number;
|
package/dist/states.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../src/states.ts"],"names":[],"mappings":"AAAA,oBAAY,KAAK;IACf,YAAY,iBAAiB;IAC7B,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,mBAAmB,wBAAwB;IAC3C,eAAe,oBAAoB;IACnC,aAAa,kBAAkB;CAChC;AAED,oBAAY,cAAc;IACxB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,YAAY,gBAAgB;IAC5B,QAAQ,YAAY;IACpB,kBAAkB,sBAAsB;CACzC;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,KAAK,GAAG,GAAG,CAAC;IAClB,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,eAAO,MAAM,WAAW,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../src/states.ts"],"names":[],"mappings":"AAAA,oBAAY,KAAK;IACf,YAAY,iBAAiB;IAC7B,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,mBAAmB,wBAAwB;IAC3C,eAAe,oBAAoB;IACnC,aAAa,kBAAkB;CAChC;AAED,oBAAY,cAAc;IACxB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,YAAY,gBAAgB;IAC5B,QAAQ,YAAY;IACpB,kBAAkB,sBAAsB;CACzC;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC;AAEpE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,KAAK,GAAG,GAAG,CAAC;IAClB,EAAE,EAAE,KAAK,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,eAAO,MAAM,WAAW,EAAE,eAAe,EAiCxC,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,gBAAgB,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,OAAO,eAAe,EAAE,WAAW,CAAC;IACjD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B"}
|
package/dist/states.js
CHANGED
|
@@ -39,7 +39,12 @@ export const transitions = [
|
|
|
39
39
|
{ from: State.AWAITING_PERMISSION, to: State.PROCESSING, trigger: 'spinner_start', source: 'pty' },
|
|
40
40
|
{ from: State.AWAITING_OPTION, to: State.PROCESSING, trigger: 'spinner_start', source: 'pty' },
|
|
41
41
|
{ from: State.AWAITING_DIFF, to: State.PROCESSING, trigger: 'spinner_start', source: 'pty' },
|
|
42
|
-
// stuck_timeout only
|
|
42
|
+
// stuck_timeout: only PROCESSING recovers after STUCK_TIMEOUT_MS (Claude hung).
|
|
43
|
+
// AWAITING_* intentionally have NO wall-clock backstop — an unanswered prompt
|
|
44
|
+
// is a genuine, indefinitely-valid wait (the user may be away); it only leaves
|
|
45
|
+
// via a real signal (spinner_start / idle_detected / user response / stop), and
|
|
46
|
+
// a truly-dead session is reaped by liveness, not a timer. A blind awaiting
|
|
47
|
+
// timer wrongly forced real prompts to IDLE and vanished them from dashboards.
|
|
43
48
|
{ from: State.PROCESSING, to: State.IDLE, trigger: 'stuck_timeout', source: 'internal' },
|
|
44
49
|
{ from: '*', to: State.DISCONNECTED, trigger: 'session_end', source: 'hook' },
|
|
45
50
|
{ from: '*', to: State.IDLE, trigger: 'interrupt', source: 'user' },
|
package/dist/states.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"states.js","sourceRoot":"","sources":["../src/states.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"states.js","sourceRoot":"","sources":["../src/states.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,KAOX;AAPD,WAAY,KAAK;IACf,sCAA6B,CAAA;IAC7B,sBAAa,CAAA;IACb,kCAAyB,CAAA;IACzB,oDAA2C,CAAA;IAC3C,4CAAmC,CAAA;IACnC,wCAA+B,CAAA;AACjC,CAAC,EAPW,KAAK,KAAL,KAAK,QAOhB;AAED,MAAM,CAAN,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,qCAAmB,CAAA;IACnB,+BAAa,CAAA;IACb,8CAA4B,CAAA;IAC5B,sCAAoB,CAAA;IACpB,0DAAwC,CAAA;AAC1C,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;AAWD,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C,EAAE,IAAI,EAAE,KAAK,CAAC,YAAY,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE;IACtF,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,EAAE;IACzF,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE;IACnF,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAC3E,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE;IACnF,EAAE,IAAI,EAAE,KAAK,CAAC,mBAAmB,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE;IAC5F,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE;IACxF,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE;IACtF,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE;IACtG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE;IAChG,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,eAAe,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK,EAAE;IACnG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,eAAe,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK,EAAE;IAC7F,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE;IAC/F,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE;IACzF,EAAE,IAAI,EAAE,KAAK,CAAC,mBAAmB,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE;IACnG,EAAE,IAAI,EAAE,KAAK,CAAC,mBAAmB,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE;IACpG,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE;IAChG,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE;IAC7F,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE;IAC9F,8FAA8F;IAC9F,EAAE,IAAI,EAAE,KAAK,CAAC,mBAAmB,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE;IAClG,EAAE,IAAI,EAAE,KAAK,CAAC,eAAe,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE;IAC9F,EAAE,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE;IAC5F,gFAAgF;IAChF,8EAA8E;IAC9E,+EAA+E;IAC/E,gFAAgF;IAChF,4EAA4E;IAC5E,+EAA+E;IAC/E,EAAE,IAAI,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE;IACxF,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE;IAC7E,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE;CACpE,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent creature SVG fragments for session buttons.
|
|
3
|
+
*
|
|
4
|
+
* The exported names are kept for plugin compatibility, but the rendered
|
|
5
|
+
* marks are the same AgentDeck creature language used by the terrarium:
|
|
6
|
+
* Claude = robot, Codex = cloud prompt, OpenClaw = crayfish, OpenCode =
|
|
7
|
+
* nested-square floater, Antigravity = peak/arc mark.
|
|
8
|
+
*/
|
|
9
|
+
import type { AgentType } from '../adapter.js';
|
|
10
|
+
export declare const ROBOT_CREATURE_PATH = "M20.998 10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0v-3.1h3V5h17.998v5.949zM6 10.949h1.488V8.102H6v2.847zm10.51 0H18V8.102h-1.49v2.847z";
|
|
11
|
+
/** OpenCode mark (design/brand/opencode.svg): hollow nested-square ring. */
|
|
12
|
+
export declare const OPENCODE_RING_PATH = "M16 6H8v12h8V6zm4 16H4V2h16v20z";
|
|
13
|
+
/** Antigravity mark (design/brand/antigravity.svg): peak/arc. */
|
|
14
|
+
export declare const ANTIGRAVITY_PATH = "M21.751 22.607c1.34 1.005 3.35.335 1.508-1.508C17.73 15.74 18.904 1 12.037 1 5.17 1 6.342 15.74.815 21.1c-2.01 2.009.167 2.511 1.507 1.506 5.192-3.517 4.857-9.714 9.715-9.714 4.857 0 4.522 6.197 9.714 9.715z";
|
|
15
|
+
/** Claude Code creature asset: assets/logos/claude.svg. viewBox 0 0 24 24. */
|
|
16
|
+
export declare const CLAUDE_LOGO_PATH = "M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z";
|
|
17
|
+
/** Legacy OpenClaw paths kept for the Gateway preset mini-browser icon. */
|
|
18
|
+
export declare const OC_BODY = "M60 10 C30 10 15 35 15 55 C15 75 30 95 45 100 L45 110 L55 110 L55 100 C55 100 60 102 65 100 L65 110 L75 110 L75 100 C90 95 105 75 105 55 C105 35 90 10 60 10Z";
|
|
19
|
+
export declare const OC_CLAW_L = "M20 45 C5 40 0 50 5 60 C10 70 20 65 25 55 C28 48 25 45 20 45Z";
|
|
20
|
+
export declare const OC_CLAW_R = "M100 45 C115 40 120 50 115 60 C110 70 100 65 95 55 C92 48 95 45 100 45Z";
|
|
21
|
+
/** Codex CLI knot/clover — official SVG from codex brand assets. viewBox 0 0 24 24. */
|
|
22
|
+
export declare const CODEX_LOGO_PATH = "M8.086.457a6.105 6.105 0 013.046-.415c1.333.153 2.521.72 3.564 1.7a.117.117 0 00.107.029c1.408-.346 2.762-.224 4.061.366l.063.03.154.076c1.357.703 2.33 1.77 2.918 3.198.278.679.418 1.388.421 2.126a5.655 5.655 0 01-.18 1.631.167.167 0 00.04.155 5.982 5.982 0 011.578 2.891c.385 1.901-.01 3.615-1.183 5.14l-.182.22a6.063 6.063 0 01-2.934 1.851.162.162 0 00-.108.102c-.255.736-.511 1.364-.987 1.992-1.199 1.582-2.962 2.462-4.948 2.451-1.583-.008-2.986-.587-4.21-1.736a.145.145 0 00-.14-.032c-.518.167-1.04.191-1.604.185a5.924 5.924 0 01-2.595-.622 6.058 6.058 0 01-2.146-1.781c-.203-.269-.404-.522-.551-.821a7.74 7.74 0 01-.495-1.283 6.11 6.11 0 01-.017-3.064.166.166 0 00.008-.074.115.115 0 00-.037-.064 5.958 5.958 0 01-1.38-2.202 5.196 5.196 0 01-.333-1.589 6.915 6.915 0 01.188-2.132c.45-1.484 1.309-2.648 2.577-3.493.282-.188.55-.334.802-.438.286-.12.573-.22.861-.304a.129.129 0 00.087-.087A6.016 6.016 0 015.635 2.31C6.315 1.464 7.132.846 8.086.457zm-.804 7.85a.848.848 0 00-1.473.842l1.694 2.965-1.688 2.848a.849.849 0 001.46.864l1.94-3.272a.849.849 0 00.007-.854l-1.94-3.393zm5.446 6.24a.849.849 0 000 1.695h4.848a.849.849 0 000-1.696h-4.848z";
|
|
23
|
+
/** OpenClaw creature asset: assets/logos/openclaw.svg. viewBox 0 0 24 24. */
|
|
24
|
+
export declare const OPENCLAW_LOGO_PATHS: string[];
|
|
25
|
+
/**
|
|
26
|
+
* Render the agent's canonical brand mark as a 1-bit glyph: the path(s) filled
|
|
27
|
+
* with `ink` (evenodd so in-path holes — robot eyes, opencode ring, codex prompt —
|
|
28
|
+
* read as paper), plus any separate `paper` eye cutouts. 24-unit viewBox scaled to
|
|
29
|
+
* `size`, centered on (cx,cy). Used by the TRMNL e-ink layout; mirrored in Swift.
|
|
30
|
+
*/
|
|
31
|
+
export declare function agentGlyphMono(agent: string, cx: number, cy: number, size: number, ink: string, paper: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Render agent logo as a visible icon at top-center of button.
|
|
34
|
+
* Uses agent brand color (not state color) for consistent identification.
|
|
35
|
+
* @param agent Agent type
|
|
36
|
+
* @param size Target size in px (default 48)
|
|
37
|
+
* @param opacity Icon opacity (default 0.7)
|
|
38
|
+
*/
|
|
39
|
+
export declare function agentLogoIcon(agent: AgentType, size?: number, opacity?: number, cx?: number, cy?: number): string;
|
|
40
|
+
/**
|
|
41
|
+
* Render agent logo as a background watermark.
|
|
42
|
+
* Uses brand color dimmed for subtle identification.
|
|
43
|
+
*/
|
|
44
|
+
export declare function agentLogoWatermark(agent: AgentType, _color?: string, opacity?: number): string;
|
|
45
|
+
//# sourceMappingURL=agent-logos.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-logos.d.ts","sourceRoot":"","sources":["../../src/svg-renderers/agent-logos.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAM/C,eAAO,MAAM,mBAAmB,8MAC6K,CAAC;AAE9M,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,oCAAoC,CAAC;AAEpE,iEAAiE;AACjE,eAAO,MAAM,gBAAgB,oNACsL,CAAC;AAEpN,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,g+CACk8C,CAAC;AAEh+C,2EAA2E;AAC3E,eAAO,MAAM,OAAO,kKAC6I,CAAC;AAClK,eAAO,MAAM,SAAS,kEAC2C,CAAC;AAClE,eAAO,MAAM,SAAS,4EACqD,CAAC;AAE5E,uFAAuF;AACvF,eAAO,MAAM,eAAe,goCACmmC,CAAC;AAEhoC,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,UAM/B,CAAC;AA6JF;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,MAAM,CASR;AAID;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,IAAI,SAAK,EACT,OAAO,SAAM,EACb,EAAE,SAAK,EACP,EAAE,SAAgB,GACjB,MAAM,CAgBR;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,EAChB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,SAAO,GACb,MAAM,CAkBR"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent creature SVG fragments for session buttons.
|
|
3
|
+
*
|
|
4
|
+
* The exported names are kept for plugin compatibility, but the rendered
|
|
5
|
+
* marks are the same AgentDeck creature language used by the terrarium:
|
|
6
|
+
* Claude = robot, Codex = cloud prompt, OpenClaw = crayfish, OpenCode =
|
|
7
|
+
* nested-square floater, Antigravity = peak/arc mark.
|
|
8
|
+
*/
|
|
9
|
+
import { dimColor, agentBrandColor } from '../state-colors.js';
|
|
10
|
+
// Claude Code creature = the rusty robot (design/brand/claudecode.svg): blocky
|
|
11
|
+
// head with two eye holes. Exported so 1-bit surfaces (TRMNL e-ink) render the
|
|
12
|
+
// canonical mark rather than a drifted approximation.
|
|
13
|
+
export const ROBOT_CREATURE_PATH = 'M20.998 10.949H24v3.102h-3v3.028h-1.487V20H18v-2.921h-1.487V20H15v-2.921H9V20H7.488v-2.921H6V20H4.487v-2.921H3V14.05H0v-3.1h3V5h17.998v5.949zM6 10.949h1.488V8.102H6v2.847zm10.51 0H18V8.102h-1.49v2.847z';
|
|
14
|
+
/** OpenCode mark (design/brand/opencode.svg): hollow nested-square ring. */
|
|
15
|
+
export const OPENCODE_RING_PATH = 'M16 6H8v12h8V6zm4 16H4V2h16v20z';
|
|
16
|
+
/** Antigravity mark (design/brand/antigravity.svg): peak/arc. */
|
|
17
|
+
export const ANTIGRAVITY_PATH = 'M21.751 22.607c1.34 1.005 3.35.335 1.508-1.508C17.73 15.74 18.904 1 12.037 1 5.17 1 6.342 15.74.815 21.1c-2.01 2.009.167 2.511 1.507 1.506 5.192-3.517 4.857-9.714 9.715-9.714 4.857 0 4.522 6.197 9.714 9.715z';
|
|
18
|
+
/** Claude Code creature asset: assets/logos/claude.svg. viewBox 0 0 24 24. */
|
|
19
|
+
export const CLAUDE_LOGO_PATH = 'M4.709 15.955l4.72-2.647.08-.23-.08-.128H9.2l-.79-.048-2.698-.073-2.339-.097-2.266-.122-.571-.121L0 11.784l.055-.352.48-.321.686.06 1.52.103 2.278.158 1.652.097 2.449.255h.389l.055-.157-.134-.098-.103-.097-2.358-1.596-2.552-1.688-1.336-.972-.724-.491-.364-.462-.158-1.008.656-.722.881.06.225.061.893.686 1.908 1.476 2.491 1.833.365.304.145-.103.019-.073-.164-.274-1.355-2.446-1.446-2.49-.644-1.032-.17-.619a2.97 2.97 0 01-.104-.729L6.283.134 6.696 0l.996.134.42.364.62 1.414 1.002 2.229 1.555 3.03.456.898.243.832.091.255h.158V9.01l.128-1.706.237-2.095.23-2.695.08-.76.376-.91.747-.492.584.28.48.685-.067.444-.286 1.851-.559 2.903-.364 1.942h.212l.243-.242.985-1.306 1.652-2.064.73-.82.85-.904.547-.431h1.033l.76 1.129-.34 1.166-1.064 1.347-.881 1.142-1.264 1.7-.79 1.36.073.11.188-.02 2.856-.606 1.543-.28 1.841-.315.833.388.091.395-.328.807-1.969.486-2.309.462-3.439.813-.042.03.049.061 1.549.146.662.036h1.622l3.02.225.79.522.474.638-.079.485-1.215.62-1.64-.389-3.829-.91-1.312-.329h-.182v.11l1.093 1.068 2.006 1.81 2.509 2.33.127.578-.322.455-.34-.049-2.205-1.657-.851-.747-1.926-1.62h-.128v.17l.444.649 2.345 3.521.122 1.08-.17.353-.608.213-.668-.122-1.374-1.925-1.415-2.167-1.143-1.943-.14.08-.674 7.254-.316.37-.729.28-.607-.461-.322-.747.322-1.476.389-1.924.315-1.53.286-1.9.17-.632-.012-.042-.14.018-1.434 1.967-2.18 2.945-1.726 1.845-.414.164-.717-.37.067-.662.401-.589 2.388-3.036 1.44-1.882.93-1.086-.006-.158h-.055L4.132 18.56l-1.13.146-.487-.456.061-.746.231-.243 1.908-1.312-.006.006z';
|
|
20
|
+
/** Legacy OpenClaw paths kept for the Gateway preset mini-browser icon. */
|
|
21
|
+
export const OC_BODY = 'M60 10 C30 10 15 35 15 55 C15 75 30 95 45 100 L45 110 L55 110 L55 100 C55 100 60 102 65 100 L65 110 L75 110 L75 100 C90 95 105 75 105 55 C105 35 90 10 60 10Z';
|
|
22
|
+
export const OC_CLAW_L = 'M20 45 C5 40 0 50 5 60 C10 70 20 65 25 55 C28 48 25 45 20 45Z';
|
|
23
|
+
export const OC_CLAW_R = 'M100 45 C115 40 120 50 115 60 C110 70 100 65 95 55 C92 48 95 45 100 45Z';
|
|
24
|
+
/** Codex CLI knot/clover — official SVG from codex brand assets. viewBox 0 0 24 24. */
|
|
25
|
+
export const CODEX_LOGO_PATH = 'M8.086.457a6.105 6.105 0 013.046-.415c1.333.153 2.521.72 3.564 1.7a.117.117 0 00.107.029c1.408-.346 2.762-.224 4.061.366l.063.03.154.076c1.357.703 2.33 1.77 2.918 3.198.278.679.418 1.388.421 2.126a5.655 5.655 0 01-.18 1.631.167.167 0 00.04.155 5.982 5.982 0 011.578 2.891c.385 1.901-.01 3.615-1.183 5.14l-.182.22a6.063 6.063 0 01-2.934 1.851.162.162 0 00-.108.102c-.255.736-.511 1.364-.987 1.992-1.199 1.582-2.962 2.462-4.948 2.451-1.583-.008-2.986-.587-4.21-1.736a.145.145 0 00-.14-.032c-.518.167-1.04.191-1.604.185a5.924 5.924 0 01-2.595-.622 6.058 6.058 0 01-2.146-1.781c-.203-.269-.404-.522-.551-.821a7.74 7.74 0 01-.495-1.283 6.11 6.11 0 01-.017-3.064.166.166 0 00.008-.074.115.115 0 00-.037-.064 5.958 5.958 0 01-1.38-2.202 5.196 5.196 0 01-.333-1.589 6.915 6.915 0 01.188-2.132c.45-1.484 1.309-2.648 2.577-3.493.282-.188.55-.334.802-.438.286-.12.573-.22.861-.304a.129.129 0 00.087-.087A6.016 6.016 0 015.635 2.31C6.315 1.464 7.132.846 8.086.457zm-.804 7.85a.848.848 0 00-1.473.842l1.694 2.965-1.688 2.848a.849.849 0 001.46.864l1.94-3.272a.849.849 0 00.007-.854l-1.94-3.393zm5.446 6.24a.849.849 0 000 1.695h4.848a.849.849 0 000-1.696h-4.848z';
|
|
26
|
+
/** OpenClaw creature asset: assets/logos/openclaw.svg. viewBox 0 0 24 24. */
|
|
27
|
+
export const OPENCLAW_LOGO_PATHS = [
|
|
28
|
+
'M9.046 7.104a.527.527 0 110 1.055.527.527 0 010-1.055z',
|
|
29
|
+
'M15.376 7.104a.528.528 0 110 1.056.528.528 0 010-1.056z',
|
|
30
|
+
'M16.877 1.912c.58-.27 1.14-.323 1.616-.037a.317.317 0 01-.326.542c-.227-.136-.547-.153-1.022.068-.352.165-.765.45-1.234.866 2.683 1.17 4.4 3.5 5.148 5.921a6.421 6.421 0 00-.704.184c-.578.016-1.174.204-1.502.735-.338.55-.268 1.276.072 2.069l.005.012.007.014c.523 1.045 1.318 1.91 2.2 2.284-.912 3.274-3.44 6.144-5.972 6.988v2.109h-2.11v-2.11c-1.043.417-2.086.01-2.11 0v2.11h-2.11v-2.11c-2.531-.843-5.061-3.713-5.973-6.987.882-.373 1.678-1.238 2.2-2.284l.007-.014.006-.012c.34-.793.41-1.518.071-2.069-.327-.531-.923-.719-1.503-.735a6.409 6.409 0 00-.704-.183c.749-2.421 2.466-4.751 5.149-5.922-.47-.416-.88-.701-1.234-.866-.474-.221-.794-.204-1.021-.068a.318.318 0 01-.435-.109.317.317 0 01.109-.433c.476-.286 1.036-.233 1.615.037.49.229 1.031.628 1.621 1.182A9.924 9.924 0 0112 2.568c1.199 0 2.284.19 3.256.526.59-.554 1.13-.953 1.62-1.182zM8.835 6.577a1.266 1.266 0 100 2.532 1.266 1.266 0 000-2.532zm6.33 0a1.267 1.267 0 100 2.533 1.267 1.267 0 000-2.533z',
|
|
31
|
+
'M.395 13.118c-.966-1.932-.163-3.863 2.41-3.365v-.001l.05.01c.084.018.17.038.26.06.033.009.067.017.1.027.084.022.168.048.255.076l.09.027c.528 0 .95.158 1.16.501.212.343.212.87-.105 1.61-.085.17-.178.333-.276.489l-.01.017a4.967 4.967 0 01-.62.791l-.019.02c-1.092 1.117-2.496 1.336-3.295-.262z',
|
|
32
|
+
'M21.193 9.753c2.574-.5 3.378 1.433 2.411 3.365-.58 1.159-1.476 1.361-2.342.96l-.011-.005a2.419 2.419 0 01-.114-.056l-.019-.01a2.751 2.751 0 01-.115-.067l-.023-.014c-.035-.022-.071-.044-.106-.068l-.05-.035c-.55-.388-1.062-1.007-1.44-1.76-.276-.647-.311-1.132-.174-1.472.176-.439.636-.639 1.23-.639.032-.011.066-.02.099-.03.08-.026.16-.05.238-.072l.117-.03a5.502 5.502 0 01.3-.067z',
|
|
33
|
+
];
|
|
34
|
+
const OPENCLAW_BODY_PATHS = OPENCLAW_LOGO_PATHS.slice(2);
|
|
35
|
+
function officialPathIcon(path, fill, size, opacity, cx, cy) {
|
|
36
|
+
const s = size / 24;
|
|
37
|
+
return `<g transform="translate(${cx},${cy}) scale(${s.toFixed(3)}) translate(-12,-12)" opacity="${opacity}"><path d="${path}" fill="${fill}" fill-rule="evenodd" clip-rule="evenodd"/></g>`;
|
|
38
|
+
}
|
|
39
|
+
function gradientPathIcon(path, size, opacity, cx, cy) {
|
|
40
|
+
const s = size / 24;
|
|
41
|
+
const idSuffix = `${Math.round(size)}-${Math.round(cx * 10)}-${Math.round(cy * 10)}`.replace(/-/g, '_');
|
|
42
|
+
const gradId = `antigravity_rainbow_${idSuffix}`;
|
|
43
|
+
const warmId = `antigravity_warm_${idSuffix}`;
|
|
44
|
+
const greenId = `antigravity_green_${idSuffix}`;
|
|
45
|
+
const purpleId = `antigravity_purple_${idSuffix}`;
|
|
46
|
+
return [
|
|
47
|
+
`<g transform="translate(${cx},${cy}) scale(${s.toFixed(3)}) translate(-12,-12)" opacity="${opacity}">`,
|
|
48
|
+
`<defs>`,
|
|
49
|
+
`<linearGradient id="${gradId}" x1="12" y1="1" x2="12" y2="23" gradientUnits="userSpaceOnUse">`,
|
|
50
|
+
`<stop offset="0%" stop-color="#FF8A18"/>`,
|
|
51
|
+
`<stop offset="24%" stop-color="#FF4F47"/>`,
|
|
52
|
+
`<stop offset="52%" stop-color="#28BDF3"/>`,
|
|
53
|
+
`<stop offset="100%" stop-color="#247CFF"/>`,
|
|
54
|
+
`</linearGradient>`,
|
|
55
|
+
`<radialGradient id="${warmId}" cx="9" cy="2" r="9" gradientUnits="userSpaceOnUse">`,
|
|
56
|
+
`<stop offset="0%" stop-color="#F3D233"/>`,
|
|
57
|
+
`<stop offset="58%" stop-color="#FF8A18" stop-opacity="0.74"/>`,
|
|
58
|
+
`<stop offset="100%" stop-color="#FF8A18" stop-opacity="0"/>`,
|
|
59
|
+
`</radialGradient>`,
|
|
60
|
+
`<radialGradient id="${greenId}" cx="4" cy="10" r="8" gradientUnits="userSpaceOnUse">`,
|
|
61
|
+
`<stop offset="0%" stop-color="#2FD66D"/>`,
|
|
62
|
+
`<stop offset="72%" stop-color="#2FD66D" stop-opacity="0.58"/>`,
|
|
63
|
+
`<stop offset="100%" stop-color="#2FD66D" stop-opacity="0"/>`,
|
|
64
|
+
`</radialGradient>`,
|
|
65
|
+
`<radialGradient id="${purpleId}" cx="20" cy="9" r="9" gradientUnits="userSpaceOnUse">`,
|
|
66
|
+
`<stop offset="0%" stop-color="#A85CC8"/>`,
|
|
67
|
+
`<stop offset="70%" stop-color="#A85CC8" stop-opacity="0.58"/>`,
|
|
68
|
+
`<stop offset="100%" stop-color="#A85CC8" stop-opacity="0"/>`,
|
|
69
|
+
`</radialGradient>`,
|
|
70
|
+
`</defs>`,
|
|
71
|
+
`<path d="${path}" fill="url(#${gradId})" fill-rule="evenodd" clip-rule="evenodd"/>`,
|
|
72
|
+
`<path d="${path}" fill="url(#${warmId})" fill-rule="evenodd" clip-rule="evenodd"/>`,
|
|
73
|
+
`<path d="${path}" fill="url(#${greenId})" fill-rule="evenodd" clip-rule="evenodd"/>`,
|
|
74
|
+
`<path d="${path}" fill="url(#${purpleId})" fill-rule="evenodd" clip-rule="evenodd"/>`,
|
|
75
|
+
`</g>`,
|
|
76
|
+
].join('');
|
|
77
|
+
}
|
|
78
|
+
function robotCreatureIcon(fill, size, opacity, cx, cy) {
|
|
79
|
+
return officialPathIcon(ROBOT_CREATURE_PATH, fill, size, opacity, cx, cy);
|
|
80
|
+
}
|
|
81
|
+
function codexCloudCreatureIcon(size, opacity, cx, cy) {
|
|
82
|
+
const body = size * 0.78;
|
|
83
|
+
const half = body / 2;
|
|
84
|
+
const idSuffix = `${Math.round(size)}-${Math.round(cx * 10)}-${Math.round(cy * 10)}`.replace(/-/g, '_');
|
|
85
|
+
const gradId = `codex_cloud_${idSuffix}`;
|
|
86
|
+
const glowId = `codex_cloud_glow_${idSuffix}`;
|
|
87
|
+
const lobes = [
|
|
88
|
+
[-0.14, -0.30, 0.30],
|
|
89
|
+
[0.16, -0.26, 0.28],
|
|
90
|
+
[0.32, -0.02, 0.28],
|
|
91
|
+
[0.14, 0.26, 0.28],
|
|
92
|
+
[-0.16, 0.26, 0.28],
|
|
93
|
+
[-0.32, -0.02, 0.28],
|
|
94
|
+
];
|
|
95
|
+
const lobeEls = lobes.map(([dx, dy, r]) => {
|
|
96
|
+
const lcx = cx + dx * body;
|
|
97
|
+
const lcy = cy + dy * body;
|
|
98
|
+
const lr = r * body;
|
|
99
|
+
return `<circle cx="${lcx.toFixed(2)}" cy="${lcy.toFixed(2)}" r="${lr.toFixed(2)}" fill="url(#${gradId})"/>`;
|
|
100
|
+
}).join('');
|
|
101
|
+
const glowEls = lobes.map(([dx, dy, r]) => {
|
|
102
|
+
const lcx = cx + dx * body;
|
|
103
|
+
const lcy = cy + dy * body;
|
|
104
|
+
const lr = r * body * 1.06;
|
|
105
|
+
return `<circle cx="${lcx.toFixed(2)}" cy="${lcy.toFixed(2)}" r="${lr.toFixed(2)}" fill="#BFD7FF"/>`;
|
|
106
|
+
}).join('');
|
|
107
|
+
return [
|
|
108
|
+
`<g opacity="${opacity}">`,
|
|
109
|
+
`<defs>`,
|
|
110
|
+
`<linearGradient id="${gradId}" x1="${cx}" y1="${cy - half}" x2="${cx}" y2="${cy + half}" gradientUnits="userSpaceOnUse">`,
|
|
111
|
+
`<stop offset="0%" stop-color="#D9D3FF"/>`,
|
|
112
|
+
`<stop offset="48%" stop-color="#8BA4FF"/>`,
|
|
113
|
+
`<stop offset="100%" stop-color="#3941FF"/>`,
|
|
114
|
+
`</linearGradient>`,
|
|
115
|
+
`<filter id="${glowId}" x="-50%" y="-50%" width="200%" height="200%"><feGaussianBlur stdDeviation="${Math.max(1.4, size * 0.04).toFixed(1)}"/></filter>`,
|
|
116
|
+
`</defs>`,
|
|
117
|
+
`<g opacity="0.30" filter="url(#${glowId})">${glowEls}</g>`,
|
|
118
|
+
`<g>${lobeEls}</g>`,
|
|
119
|
+
`<path d="M${(cx - body * 0.17).toFixed(1)} ${(cy - body * 0.11).toFixed(1)} L${(cx + body * 0.05).toFixed(1)} ${cy.toFixed(1)} L${(cx - body * 0.17).toFixed(1)} ${(cy + body * 0.11).toFixed(1)}" fill="none" stroke="#FFFFFF" stroke-width="${Math.max(2, body * 0.075).toFixed(1)}" stroke-linecap="round" stroke-linejoin="round"/>`,
|
|
120
|
+
`<line x1="${(cx + body * 0.16).toFixed(1)}" y1="${(cy + body * 0.11).toFixed(1)}" x2="${(cx + body * 0.34).toFixed(1)}" y2="${(cy + body * 0.11).toFixed(1)}" stroke="#FFFFFF" stroke-width="${Math.max(2, body * 0.075).toFixed(1)}" stroke-linecap="round"/>`,
|
|
121
|
+
`</g>`,
|
|
122
|
+
].join('');
|
|
123
|
+
}
|
|
124
|
+
function openClawCreatureIcon(size, opacity, cx, cy) {
|
|
125
|
+
const bodySize = size * 0.92;
|
|
126
|
+
const s = bodySize / 24;
|
|
127
|
+
const idSuffix = `${Math.round(size)}-${Math.round(cx * 10)}-${Math.round(cy * 10)}`.replace(/-/g, '_');
|
|
128
|
+
const gradId = `openclaw_shell_${idSuffix}`;
|
|
129
|
+
return [
|
|
130
|
+
`<g transform="translate(${cx},${cy}) scale(${s.toFixed(3)}) translate(-12,-12)" opacity="${opacity}">`,
|
|
131
|
+
`<defs>`,
|
|
132
|
+
`<linearGradient id="${gradId}" x1="0" y1="0" x2="24" y2="24" gradientUnits="userSpaceOnUse">`,
|
|
133
|
+
`<stop offset="0%" stop-color="#FF6B6B"/>`,
|
|
134
|
+
`<stop offset="100%" stop-color="#991B1B"/>`,
|
|
135
|
+
`</linearGradient>`,
|
|
136
|
+
`</defs>`,
|
|
137
|
+
`<g fill="url(#${gradId})" fill-rule="evenodd" clip-rule="evenodd">`,
|
|
138
|
+
...OPENCLAW_BODY_PATHS.map((p) => `<path d="${p}"/>`),
|
|
139
|
+
`</g>`,
|
|
140
|
+
`<circle cx="8.835" cy="7.843" r="1.266" fill="#050810"/>`,
|
|
141
|
+
`<circle cx="15.165" cy="7.843" r="1.266" fill="#050810"/>`,
|
|
142
|
+
`<circle cx="9.046" cy="7.632" r="0.527" fill="#00E5CC" opacity="0.9"/>`,
|
|
143
|
+
`<circle cx="15.376" cy="7.632" r="0.527" fill="#00E5CC" opacity="0.9"/>`,
|
|
144
|
+
`</g>`,
|
|
145
|
+
].join('');
|
|
146
|
+
}
|
|
147
|
+
function openCodeCreatureIcon(size, opacity, cx, cy) {
|
|
148
|
+
// Canonical opencode mark (opencode.svg, viewBox 24, evenodd): a single-color vertical
|
|
149
|
+
// rectangular RING with a HOLLOW center — not filled nested squares. Map so the mark
|
|
150
|
+
// (16×20) sits centered on (cx,cy) at ~0.6×size tall.
|
|
151
|
+
const s = (size * 0.72) / 24;
|
|
152
|
+
const tx = cx - 12 * s;
|
|
153
|
+
const ty = cy - 12 * s;
|
|
154
|
+
return [
|
|
155
|
+
`<g opacity="${opacity}" transform="translate(${tx.toFixed(2)} ${ty.toFixed(2)}) scale(${s.toFixed(4)})">`,
|
|
156
|
+
`<path d="M16 6H8v12h8V6zm4 16H4V2h16v20z" fill-rule="evenodd" fill="#F1ECEC"/>`,
|
|
157
|
+
`</g>`,
|
|
158
|
+
].join('');
|
|
159
|
+
}
|
|
160
|
+
function antigravityCreatureIcon(size, opacity, cx, cy) {
|
|
161
|
+
return gradientPathIcon(ANTIGRAVITY_PATH, size * 0.76, opacity, cx, cy);
|
|
162
|
+
}
|
|
163
|
+
const AGENT_MONO_GLYPH = {
|
|
164
|
+
'claude-code': { paths: [ROBOT_CREATURE_PATH] },
|
|
165
|
+
'codex-cli': { paths: [CODEX_LOGO_PATH] },
|
|
166
|
+
'codex-app': { paths: [CODEX_LOGO_PATH] },
|
|
167
|
+
codex: { paths: [CODEX_LOGO_PATH] },
|
|
168
|
+
opencode: { paths: [OPENCODE_RING_PATH] },
|
|
169
|
+
antigravity: { paths: [ANTIGRAVITY_PATH] },
|
|
170
|
+
openclaw: { paths: OPENCLAW_BODY_PATHS, eyes: [[8.835, 7.843, 1.05], [15.165, 7.843, 1.05]] },
|
|
171
|
+
};
|
|
172
|
+
/**
|
|
173
|
+
* Render the agent's canonical brand mark as a 1-bit glyph: the path(s) filled
|
|
174
|
+
* with `ink` (evenodd so in-path holes — robot eyes, opencode ring, codex prompt —
|
|
175
|
+
* read as paper), plus any separate `paper` eye cutouts. 24-unit viewBox scaled to
|
|
176
|
+
* `size`, centered on (cx,cy). Used by the TRMNL e-ink layout; mirrored in Swift.
|
|
177
|
+
*/
|
|
178
|
+
export function agentGlyphMono(agent, cx, cy, size, ink, paper) {
|
|
179
|
+
const g = AGENT_MONO_GLYPH[(agent || '').toLowerCase()] ?? AGENT_MONO_GLYPH.openclaw;
|
|
180
|
+
const s = size / 24;
|
|
181
|
+
const agentClass = (agent || '').toLowerCase();
|
|
182
|
+
const out = [`<g class="agent-mono-glyph-${agentClass}" transform="translate(${cx.toFixed(2)},${cy.toFixed(2)}) scale(${s.toFixed(4)}) translate(-12,-12)">`];
|
|
183
|
+
for (const p of g.paths)
|
|
184
|
+
out.push(`<path d="${p}" fill="${ink}" fill-rule="evenodd"/>`);
|
|
185
|
+
if (g.eyes)
|
|
186
|
+
for (const [ex, ey, er] of g.eyes)
|
|
187
|
+
out.push(`<circle cx="${ex}" cy="${ey}" r="${er}" fill="${paper}"/>`);
|
|
188
|
+
out.push('</g>');
|
|
189
|
+
return out.join('');
|
|
190
|
+
}
|
|
191
|
+
// ===== Prominent agent icon (top of button, primary identification) =====
|
|
192
|
+
/**
|
|
193
|
+
* Render agent logo as a visible icon at top-center of button.
|
|
194
|
+
* Uses agent brand color (not state color) for consistent identification.
|
|
195
|
+
* @param agent Agent type
|
|
196
|
+
* @param size Target size in px (default 48)
|
|
197
|
+
* @param opacity Icon opacity (default 0.7)
|
|
198
|
+
*/
|
|
199
|
+
export function agentLogoIcon(agent, size = 48, opacity = 0.7, cx = 72, cy = size / 2 + 12) {
|
|
200
|
+
const brandColor = agentBrandColor(agent);
|
|
201
|
+
if (agent === 'claude-code') {
|
|
202
|
+
return robotCreatureIcon(brandColor, size, opacity, cx, cy);
|
|
203
|
+
}
|
|
204
|
+
if (agent === 'codex-cli' || agent === 'codex-app') {
|
|
205
|
+
return codexCloudCreatureIcon(size, opacity, cx, cy);
|
|
206
|
+
}
|
|
207
|
+
if (agent === 'opencode') {
|
|
208
|
+
return openCodeCreatureIcon(size, opacity, cx, cy);
|
|
209
|
+
}
|
|
210
|
+
if (agent === 'antigravity') {
|
|
211
|
+
return antigravityCreatureIcon(size, opacity, cx, cy);
|
|
212
|
+
}
|
|
213
|
+
return openClawCreatureIcon(size, opacity, cx, cy);
|
|
214
|
+
}
|
|
215
|
+
// ===== Low-opacity watermark (background mark) =====
|
|
216
|
+
/**
|
|
217
|
+
* Render agent logo as a background watermark.
|
|
218
|
+
* Uses brand color dimmed for subtle identification.
|
|
219
|
+
*/
|
|
220
|
+
export function agentLogoWatermark(agent, _color, opacity = 0.12) {
|
|
221
|
+
const brandColor = agentBrandColor(agent);
|
|
222
|
+
const markOpacity = Math.min(opacity * 4, 0.9);
|
|
223
|
+
const fill = dimColor(brandColor, 0.5);
|
|
224
|
+
if (agent === 'claude-code') {
|
|
225
|
+
return robotCreatureIcon(fill, 72, markOpacity, 72, 72);
|
|
226
|
+
}
|
|
227
|
+
if (agent === 'codex-cli' || agent === 'codex-app') {
|
|
228
|
+
return codexCloudCreatureIcon(72, markOpacity, 72, 72);
|
|
229
|
+
}
|
|
230
|
+
if (agent === 'opencode') {
|
|
231
|
+
return openCodeCreatureIcon(72, markOpacity, 72, 72);
|
|
232
|
+
}
|
|
233
|
+
if (agent === 'antigravity') {
|
|
234
|
+
return antigravityCreatureIcon(72, markOpacity, 72, 72);
|
|
235
|
+
}
|
|
236
|
+
return openClawCreatureIcon(72, markOpacity, 72, 72);
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=agent-logos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-logos.js","sourceRoot":"","sources":["../../src/svg-renderers/agent-logos.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/svg-renderers/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/svg-renderers/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { SessionInfo } from '../protocol.js';
|
|
2
|
+
import type { PromptOption } from '../states.js';
|
|
3
|
+
import { State } from '../states.js';
|
|
4
|
+
export type DisconnectedSlotKind = 'open-app' | 'empty';
|
|
5
|
+
export type ClusterQuadrant = 'tl' | 'tr' | 'bl' | 'br';
|
|
6
|
+
export interface DisconnectedSlotConfig {
|
|
7
|
+
kind: DisconnectedSlotKind;
|
|
8
|
+
label?: string;
|
|
9
|
+
subtitle?: string;
|
|
10
|
+
detail?: string;
|
|
11
|
+
/**
|
|
12
|
+
* When set, render the matching 144×144 quadrant of a 288×288 cluster
|
|
13
|
+
* hero — used by even×even decks (SD+, SD XL) so the OFFLINE card sits
|
|
14
|
+
* on the geometric center 2×2 of the keypad instead of one off-center key.
|
|
15
|
+
*/
|
|
16
|
+
quadrant?: ClusterQuadrant;
|
|
17
|
+
col?: number;
|
|
18
|
+
row?: number;
|
|
19
|
+
cols?: number;
|
|
20
|
+
rows?: number;
|
|
21
|
+
}
|
|
22
|
+
export type StatusIconKind = 'hub' | 'no-session' | 'agentdeck' | 'tool' | 'model' | 'mode' | 'ready' | 'activity' | 'open-app' | 'retry' | 'offline' | 'back' | 'more' | 'esc' | 'stop' | 'play' | 'review' | 'commit' | 'clear' | 'gateway' | 'status' | 'allow' | 'deny' | 'diff' | 'option';
|
|
23
|
+
export type StatusCardTone = 'ready' | 'idle' | 'info' | 'warning' | 'danger' | 'muted' | 'agent' | 'action' | 'brand' | 'purple';
|
|
24
|
+
export interface StatusCardConfig {
|
|
25
|
+
icon: StatusIconKind;
|
|
26
|
+
label: string;
|
|
27
|
+
subtitle?: string;
|
|
28
|
+
detail?: string;
|
|
29
|
+
tone?: StatusCardTone;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Compact, readable model strings for narrow surfaces (StreamDeck 144\u00d7144 keys).
|
|
33
|
+
* - claude-sonnet-4-6 \u2192 "sonnet 4.6"
|
|
34
|
+
* - claude-opus-4-7 \u2192 "opus 4.7"
|
|
35
|
+
* - claude-haiku-4-5-20251001 \u2192 "haiku 4.5" (date suffix dropped)
|
|
36
|
+
* - gpt-5-codex / gpt-5 / others \u2192 unchanged (caller still truncates if needed)
|
|
37
|
+
*/
|
|
38
|
+
export declare function aliasModelName(name: string): string;
|
|
39
|
+
export declare function formatModelEffort(modelName?: string, effortLevel?: string, maxLen?: number): string;
|
|
40
|
+
/**
|
|
41
|
+
* AgentDeck product mark — the aquarium dome over a hardware deck (glass dome +
|
|
42
|
+
* waterline + highlight + rounded deck base + three keys + two bubbles). Ported
|
|
43
|
+
* unit-for-unit (0..24 space) from the SwiftUI `AgentDeckLogo` / Compose
|
|
44
|
+
* `AgentDeckMark` so the Stream Deck / D200H offline hero shows the SAME brand
|
|
45
|
+
* mark that the macOS/iOS/Android connection overlays and the ESP32 splash draw.
|
|
46
|
+
* Centered on (x,y); `size` is the mark's width in px. `color` draws the dome/deck
|
|
47
|
+
* strokes + keys; `accent` tints the waterline + bubbles.
|
|
48
|
+
*/
|
|
49
|
+
export declare function renderAgentDeckMark(x: number, y: number, size: number, color: string, accent?: string): string;
|
|
50
|
+
export declare function renderSessionSlot(session: SessionInfo, isActive: boolean, animFrame: number, displayName?: string, options?: {
|
|
51
|
+
animated?: boolean;
|
|
52
|
+
processingStartFrame?: number;
|
|
53
|
+
isStale?: boolean;
|
|
54
|
+
}): string;
|
|
55
|
+
export declare function renderEmptySlot(): string;
|
|
56
|
+
export declare function renderQuietSlot(): string;
|
|
57
|
+
export declare function renderStatusCard(config: StatusCardConfig): string;
|
|
58
|
+
export declare function renderDisconnectedSlot(config: DisconnectedSlotConfig): string;
|
|
59
|
+
/**
|
|
60
|
+
* Renders a single 144×144 viewport into a 288×288 cluster hero. Each of the
|
|
61
|
+
* four center keys (tl/tr/bl/br) emits the same logical content offset by its
|
|
62
|
+
* quadrant; viewBox clipping keeps only the relevant 144×144 visible. The
|
|
63
|
+
* cluster reads as one card visually, with the inner panel + glyph + text
|
|
64
|
+
* spanning all four keys while each key keeps its own outer rounded bezel.
|
|
65
|
+
*/
|
|
66
|
+
export declare function renderOpenAppQuadrant(quadrant: ClusterQuadrant, label?: string, subtitle?: string): string;
|
|
67
|
+
export declare function renderBackButton(): string;
|
|
68
|
+
export declare function renderNextPageButton(pageLabel: string): string;
|
|
69
|
+
export declare function renderEscButton(active?: boolean): string;
|
|
70
|
+
export declare function renderStopButton(active?: boolean): string;
|
|
71
|
+
export declare function renderDetailInfo(session: SessionInfo | undefined, state: State, tool?: string, modelName?: string, mode?: string, displayName?: string, effortLevel?: string): string;
|
|
72
|
+
export declare function renderOptionButton(option: PromptOption, index: number): string;
|
|
73
|
+
export declare function renderPresetButton(label: string, iconSvg: string, color: string, textColor: string, subtitle?: string, loading?: boolean): string;
|
|
74
|
+
export declare function renderInfoSlot(label: string, subtitle?: string, icon?: StatusIconKind, tone?: StatusCardTone, detail?: string): string;
|
|
75
|
+
export declare function svgFrame(bgColor: string, innerElements: string): string;
|
|
76
|
+
export declare function renderOpenAppGrid(col: number, row: number, cols: number, rows: number, label?: string, subtitle?: string): string;
|
|
77
|
+
export declare function renderOfflineTouchStrip(index: number): string;
|
|
78
|
+
//# sourceMappingURL=session-slot-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-slot-renderer.d.ts","sourceRoot":"","sources":["../../src/svg-renderers/session-slot-renderer.ts"],"names":[],"mappings":"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"}
|