pi-cockpit 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +87 -0
- package/package.json +70 -0
- package/src/agents-store.ts +270 -0
- package/src/ambient.ts +72 -0
- package/src/bash-bg-overlay.ts +362 -0
- package/src/bash-bg-store.ts +90 -0
- package/src/bash-bg-widget.ts +70 -0
- package/src/config.ts +86 -0
- package/src/extension/index.ts +1 -0
- package/src/extension-status.ts +25 -0
- package/src/footer.ts +354 -0
- package/src/icons.ts +166 -0
- package/src/index.ts +595 -0
- package/src/layout.ts +129 -0
- package/src/render.ts +441 -0
- package/src/settings-view.ts +129 -0
- package/src/stack-widget.ts +121 -0
- package/src/theme-picker.ts +255 -0
- package/src/todo-store.ts +123 -0
- package/src/types.ts +112 -0
- package/src/viewport.ts +62 -0
- package/themes/cockpit-amber.json +24 -0
- package/themes/cockpit-minimal-amber.json +23 -0
- package/themes/cockpit-minimal-cyan.json +23 -0
- package/themes/cockpit-minimal-green.json +23 -0
- package/themes/cockpit-minimal-purple.json +23 -0
- package/themes/cockpit-minimal-rose.json +23 -0
- package/themes/cockpit-minimal.json +23 -0
- package/themes/cockpit-notion.json +24 -0
- package/themes/cockpit-ocean.json +24 -0
package/src/types.ts
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// Cross-extension event names broadcast by pi-maestro-teammate.
|
|
2
|
+
// Hard-coded strings (stable contract; see pi-maestro-teammate/src/shared/types.ts:184-186)
|
|
3
|
+
// so this package needs no import path into the teammate package.
|
|
4
|
+
export const TEAMMATE_STARTED_EVENT = "teammate:started";
|
|
5
|
+
export const TEAMMATE_MESSAGE_EVENT = "teammate:message";
|
|
6
|
+
export const TEAMMATE_COMPLETE_EVENT = "teammate:complete";
|
|
7
|
+
export const COCKPIT_UI_OWNERSHIP_EVENT = "cockpit:ui-ownership";
|
|
8
|
+
export const COCKPIT_TODO_TOGGLE_EVENT = "cockpit:toggle-todo";
|
|
9
|
+
export const BASH_BG_UPDATE_EVENT = "bash-bg:update";
|
|
10
|
+
export const BASH_BG_QUERY_EVENT = "bash-bg:query";
|
|
11
|
+
export const WORKFLOW_STATUS_KEY = "maestro-workflow";
|
|
12
|
+
|
|
13
|
+
// Widget keys owned by pi-cockpit. Native Flow/teammate widgets yield through
|
|
14
|
+
// COCKPIT_UI_OWNERSHIP_EVENT instead of being cleared across extension boundaries.
|
|
15
|
+
export const STACK_WIDGET_KEY = "cockpit-stack";
|
|
16
|
+
export const AGENT_WIDGET_KEY = "cockpit-agents";
|
|
17
|
+
|
|
18
|
+
// todo tool name registered by pi-maestro-flow (src/extension/index.ts:594).
|
|
19
|
+
export const TODO_TOOL_NAME = "todo";
|
|
20
|
+
// appendEntry customType the todo tool persists after every mutation (tools/todo.ts:145).
|
|
21
|
+
export const TODO_STATE_ENTRY_TYPE = "todo-state";
|
|
22
|
+
|
|
23
|
+
export type AgentStatus = "pending" | "running" | "retrying" | "sleeping" | "done" | "failed";
|
|
24
|
+
|
|
25
|
+
export interface AgentRow {
|
|
26
|
+
correlationId: string;
|
|
27
|
+
parentCorrelationId?: string;
|
|
28
|
+
agent: string;
|
|
29
|
+
name: string | undefined;
|
|
30
|
+
role: string;
|
|
31
|
+
task: string;
|
|
32
|
+
status: AgentStatus;
|
|
33
|
+
tail: string;
|
|
34
|
+
startedAt: number;
|
|
35
|
+
lastActivityAt: number;
|
|
36
|
+
toolCount?: number;
|
|
37
|
+
tokens?: number;
|
|
38
|
+
taskStatus?: string;
|
|
39
|
+
activeTool?: string;
|
|
40
|
+
taskIndex?: number;
|
|
41
|
+
dependencies?: number[];
|
|
42
|
+
/** Set only on a failed row that outlived its completion, so it can be pruned. */
|
|
43
|
+
failedAt?: number;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export type BashBgStatus = "running" | "stopping" | "completed" | "failed" | "killed";
|
|
47
|
+
|
|
48
|
+
export interface BashBgJob {
|
|
49
|
+
id: string;
|
|
50
|
+
command: string;
|
|
51
|
+
cwd: string;
|
|
52
|
+
pid: number;
|
|
53
|
+
status: BashBgStatus;
|
|
54
|
+
startedAt: number;
|
|
55
|
+
updatedAt: number;
|
|
56
|
+
finishedAt?: number;
|
|
57
|
+
exitCode: number | null;
|
|
58
|
+
outputTail: string;
|
|
59
|
+
outputBytes: number;
|
|
60
|
+
logPath: string;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export type TodoState = "pending" | "in_progress" | "completed" | "blocked";
|
|
64
|
+
|
|
65
|
+
export interface TodoItem {
|
|
66
|
+
id: string;
|
|
67
|
+
subject: string;
|
|
68
|
+
status: TodoState;
|
|
69
|
+
blockedBy: string[];
|
|
70
|
+
createdBy?: TodoActor;
|
|
71
|
+
assignee?: TodoActor;
|
|
72
|
+
skills: TodoSkill[];
|
|
73
|
+
updatedAt?: number;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export interface TodoActor {
|
|
77
|
+
id: string;
|
|
78
|
+
label: string;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface TodoSkill {
|
|
82
|
+
name: string;
|
|
83
|
+
role?: string;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export type ViewMode = "list" | "compact";
|
|
87
|
+
|
|
88
|
+
export type IconMode = "auto" | "nerd" | "ascii";
|
|
89
|
+
|
|
90
|
+
export interface CockpitConfig {
|
|
91
|
+
enabled: boolean;
|
|
92
|
+
agentsMode: ViewMode;
|
|
93
|
+
todoMode: ViewMode;
|
|
94
|
+
todoExpanded: boolean;
|
|
95
|
+
hideNativeAgents: boolean;
|
|
96
|
+
icons: { mode: IconMode };
|
|
97
|
+
/**
|
|
98
|
+
* Theme to apply at session start. Empty means "leave whatever pi is using",
|
|
99
|
+
* so cockpit never overrides a theme the user picked elsewhere.
|
|
100
|
+
*/
|
|
101
|
+
theme: string;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export const DEFAULT_CONFIG: CockpitConfig = {
|
|
105
|
+
enabled: true,
|
|
106
|
+
agentsMode: "list",
|
|
107
|
+
todoMode: "list",
|
|
108
|
+
todoExpanded: false,
|
|
109
|
+
hideNativeAgents: true,
|
|
110
|
+
icons: { mode: "auto" },
|
|
111
|
+
theme: "",
|
|
112
|
+
};
|
package/src/viewport.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// Vertical budgeting.
|
|
2
|
+
//
|
|
3
|
+
// Every row cockpit paints is a row of conversation the user cannot read. The
|
|
4
|
+
// widgets used to carry fixed caps (8 todo rows, 6 agent rows, plus headers and
|
|
5
|
+
// the background strip) chosen for a comfortable window. On a 24-row terminal
|
|
6
|
+
// that is most of the screen: the panels win and the actual answer is pushed off
|
|
7
|
+
// the top. Width was already adaptive; height was not.
|
|
8
|
+
|
|
9
|
+
// Share of the terminal a single cockpit panel may claim. Two panels plus the
|
|
10
|
+
// footer then land near a third of the screen, which is the ceiling at which this
|
|
11
|
+
// still reads as a status strip rather than as the application.
|
|
12
|
+
export const CHROME_SHARE = 0.15;
|
|
13
|
+
/** Below this a panel cannot say anything useful, so it stops shrinking. */
|
|
14
|
+
export const MIN_PANEL_ROWS = 3;
|
|
15
|
+
/** Above this extra rows stop earning their place, however tall the terminal is. */
|
|
16
|
+
export const MAX_PANEL_ROWS = 10;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Rows one panel may use, or undefined when the terminal height is unknown — in
|
|
20
|
+
* which case callers keep their previous fixed caps rather than guessing.
|
|
21
|
+
*/
|
|
22
|
+
export function panelRows(terminalRows: number | undefined): number | undefined {
|
|
23
|
+
if (terminalRows === undefined || !Number.isFinite(terminalRows) || terminalRows <= 0) return undefined;
|
|
24
|
+
return Math.max(MIN_PANEL_ROWS, Math.min(MAX_PANEL_ROWS, Math.floor(terminalRows * CHROME_SHARE)));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Rows an overlay list falls back to when the terminal height is unknown. */
|
|
28
|
+
export const DEFAULT_OVERLAY_ROWS = 8;
|
|
29
|
+
/** Share of the terminal an overlay card occupies — mirrors its maxHeight option. */
|
|
30
|
+
export const OVERLAY_SHARE = 0.9;
|
|
31
|
+
export const MIN_OVERLAY_ROWS = 4;
|
|
32
|
+
export const MAX_OVERLAY_ROWS = 24;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* List rows an overlay may show, given the chrome (borders, header, separator,
|
|
36
|
+
* help line) it must also draw.
|
|
37
|
+
*
|
|
38
|
+
* A widget's problem is claiming too much height; an overlay's is claiming too
|
|
39
|
+
* little. The background-jobs card asked for 90% of the screen and then paged
|
|
40
|
+
* eight jobs at a time through it, however tall the terminal was.
|
|
41
|
+
*/
|
|
42
|
+
export function overlayListRows(terminalRows: number | undefined, chromeRows: number): number {
|
|
43
|
+
if (terminalRows === undefined || !Number.isFinite(terminalRows) || terminalRows <= 0) {
|
|
44
|
+
return DEFAULT_OVERLAY_ROWS;
|
|
45
|
+
}
|
|
46
|
+
const available = Math.floor(terminalRows * OVERLAY_SHARE) - chromeRows;
|
|
47
|
+
return Math.max(MIN_OVERLAY_ROWS, Math.min(MAX_OVERLAY_ROWS, available));
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Split `total` items into what fits and what is hidden.
|
|
52
|
+
*
|
|
53
|
+
* The "N more" marker is paid for out of the budget rather than added on top of
|
|
54
|
+
* it, because a panel that overflows its budget by exactly one row is the bug
|
|
55
|
+
* this module exists to prevent.
|
|
56
|
+
*/
|
|
57
|
+
export function fitRows(total: number, budget: number): { visible: number; hidden: number } {
|
|
58
|
+
if (budget <= 0) return { visible: 0, hidden: total };
|
|
59
|
+
if (total <= budget) return { visible: total, hidden: 0 };
|
|
60
|
+
const visible = Math.max(0, budget - 1);
|
|
61
|
+
return { visible, hidden: total - visible };
|
|
62
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
|
|
3
|
+
"name": "cockpit-amber",
|
|
4
|
+
"vars": {
|
|
5
|
+
"accent": "#e6b566", "blue": "#7daea3", "cream": "#f0d9a2", "green": "#a9b665",
|
|
6
|
+
"red": "#ea6962", "orange": "#e78a4e", "purple": "#d3869b", "pink": "#d3869b",
|
|
7
|
+
"text": "#ddc7a1", "muted": "#a89984", "dim": "#7c6f64", "border": "#504945",
|
|
8
|
+
"selected": "#3c3836", "message": "#32302f", "pending": "#30302b", "successBg": "#30352b", "errorBg": "#3a2d2b"
|
|
9
|
+
},
|
|
10
|
+
"colors": {
|
|
11
|
+
"accent": "accent", "border": "blue", "borderAccent": "accent", "borderMuted": "border",
|
|
12
|
+
"success": "green", "error": "red", "warning": "orange", "muted": "muted", "dim": "dim", "text": "text", "thinkingText": "muted",
|
|
13
|
+
"selectedBg": "selected", "userMessageBg": "message", "userMessageText": "text", "customMessageBg": "message", "customMessageText": "text", "customMessageLabel": "purple",
|
|
14
|
+
"toolPendingBg": "pending", "toolSuccessBg": "successBg", "toolErrorBg": "errorBg", "toolTitle": "cream", "toolOutput": "muted",
|
|
15
|
+
"mdHeading": "cream", "mdLink": "blue", "mdLinkUrl": "dim", "mdCode": "accent", "mdCodeBlock": "text", "mdCodeBlockBorder": "border",
|
|
16
|
+
"mdQuote": "muted", "mdQuoteBorder": "border", "mdHr": "border", "mdListBullet": "accent",
|
|
17
|
+
"toolDiffAdded": "green", "toolDiffRemoved": "red", "toolDiffContext": "muted",
|
|
18
|
+
"syntaxComment": "dim", "syntaxKeyword": "purple", "syntaxFunction": "cream", "syntaxVariable": "blue", "syntaxString": "green",
|
|
19
|
+
"syntaxNumber": "orange", "syntaxType": "accent", "syntaxOperator": "text", "syntaxPunctuation": "muted",
|
|
20
|
+
"thinkingOff": "dim", "thinkingMinimal": "muted", "thinkingLow": "blue", "thinkingMedium": "accent", "thinkingHigh": "purple", "thinkingXhigh": "pink", "thinkingMax": "red",
|
|
21
|
+
"bashMode": "green"
|
|
22
|
+
},
|
|
23
|
+
"export": { "pageBg": "#1d2021", "cardBg": "#282828", "infoBg": "#352f27" }
|
|
24
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
|
|
3
|
+
"name": "cockpit-minimal-amber",
|
|
4
|
+
"vars": {
|
|
5
|
+
"accent": "#e6b566", "blue": "#e6b566", "blueSoft": "#edd09b", "green": "#8bd49c", "pink": "#efa7c5",
|
|
6
|
+
"white": "#f2f5f7", "lightGray": "#b8c0ca", "dim": "#847f76", "border": "#6f6a61",
|
|
7
|
+
"selected": "#352d20", "message": "#272219", "pending": "#2c261b", "successBg": "#1c2b23", "errorBg": "#302829"
|
|
8
|
+
},
|
|
9
|
+
"colors": {
|
|
10
|
+
"accent": "accent", "border": "border", "borderAccent": "blue", "borderMuted": "border",
|
|
11
|
+
"success": "green", "error": "pink", "warning": "blueSoft", "muted": "lightGray", "dim": "dim", "text": "white", "thinkingText": "lightGray",
|
|
12
|
+
"selectedBg": "selected", "userMessageBg": "message", "userMessageText": "white", "customMessageBg": "message", "customMessageText": "white", "customMessageLabel": "pink",
|
|
13
|
+
"toolPendingBg": "pending", "toolSuccessBg": "successBg", "toolErrorBg": "errorBg", "toolTitle": "white", "toolOutput": "lightGray",
|
|
14
|
+
"mdHeading": "white", "mdLink": "blue", "mdLinkUrl": "dim", "mdCode": "blue", "mdCodeBlock": "white", "mdCodeBlockBorder": "border",
|
|
15
|
+
"mdQuote": "lightGray", "mdQuoteBorder": "border", "mdHr": "border", "mdListBullet": "green",
|
|
16
|
+
"toolDiffAdded": "green", "toolDiffRemoved": "pink", "toolDiffContext": "dim",
|
|
17
|
+
"syntaxComment": "dim", "syntaxKeyword": "pink", "syntaxFunction": "blue", "syntaxVariable": "blueSoft", "syntaxString": "green",
|
|
18
|
+
"syntaxNumber": "blueSoft", "syntaxType": "blue", "syntaxOperator": "white", "syntaxPunctuation": "lightGray",
|
|
19
|
+
"thinkingOff": "lightGray", "thinkingMinimal": "lightGray", "thinkingLow": "lightGray", "thinkingMedium": "lightGray", "thinkingHigh": "lightGray", "thinkingXhigh": "lightGray", "thinkingMax": "lightGray",
|
|
20
|
+
"bashMode": "lightGray"
|
|
21
|
+
},
|
|
22
|
+
"export": { "pageBg": "#18150f", "cardBg": "#211d16", "infoBg": "#30291d" }
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
|
|
3
|
+
"name": "cockpit-minimal-cyan",
|
|
4
|
+
"vars": {
|
|
5
|
+
"accent": "#72d5d1", "blue": "#72d5d1", "blueSoft": "#a9e1df", "green": "#8bd49c", "pink": "#efa7c5",
|
|
6
|
+
"white": "#f2f5f7", "lightGray": "#b8c0ca", "dim": "#7d8794", "border": "#66717f",
|
|
7
|
+
"selected": "#1e3031", "message": "#192426", "pending": "#1c292b", "successBg": "#1c2b23", "errorBg": "#272b30"
|
|
8
|
+
},
|
|
9
|
+
"colors": {
|
|
10
|
+
"accent": "accent", "border": "border", "borderAccent": "blue", "borderMuted": "border",
|
|
11
|
+
"success": "green", "error": "pink", "warning": "blueSoft", "muted": "lightGray", "dim": "dim", "text": "white", "thinkingText": "lightGray",
|
|
12
|
+
"selectedBg": "selected", "userMessageBg": "message", "userMessageText": "white", "customMessageBg": "message", "customMessageText": "white", "customMessageLabel": "pink",
|
|
13
|
+
"toolPendingBg": "pending", "toolSuccessBg": "successBg", "toolErrorBg": "errorBg", "toolTitle": "white", "toolOutput": "lightGray",
|
|
14
|
+
"mdHeading": "white", "mdLink": "blue", "mdLinkUrl": "dim", "mdCode": "blue", "mdCodeBlock": "white", "mdCodeBlockBorder": "border",
|
|
15
|
+
"mdQuote": "lightGray", "mdQuoteBorder": "border", "mdHr": "border", "mdListBullet": "green",
|
|
16
|
+
"toolDiffAdded": "green", "toolDiffRemoved": "pink", "toolDiffContext": "dim",
|
|
17
|
+
"syntaxComment": "dim", "syntaxKeyword": "pink", "syntaxFunction": "blue", "syntaxVariable": "blueSoft", "syntaxString": "green",
|
|
18
|
+
"syntaxNumber": "blueSoft", "syntaxType": "blue", "syntaxOperator": "white", "syntaxPunctuation": "lightGray",
|
|
19
|
+
"thinkingOff": "lightGray", "thinkingMinimal": "lightGray", "thinkingLow": "lightGray", "thinkingMedium": "lightGray", "thinkingHigh": "lightGray", "thinkingXhigh": "lightGray", "thinkingMax": "lightGray",
|
|
20
|
+
"bashMode": "lightGray"
|
|
21
|
+
},
|
|
22
|
+
"export": { "pageBg": "#101719", "cardBg": "#172124", "infoBg": "#1e3033" }
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
|
|
3
|
+
"name": "cockpit-minimal-green",
|
|
4
|
+
"vars": {
|
|
5
|
+
"accent": "#79d49a", "blue": "#79d49a", "blueSoft": "#addfbd", "green": "#8bd49c", "pink": "#efa7c5",
|
|
6
|
+
"white": "#f2f5f7", "lightGray": "#b8c0ca", "dim": "#7d8794", "border": "#66717f",
|
|
7
|
+
"selected": "#203129", "message": "#1a2420", "pending": "#1d2923", "successBg": "#1c2b23", "errorBg": "#272b30"
|
|
8
|
+
},
|
|
9
|
+
"colors": {
|
|
10
|
+
"accent": "accent", "border": "border", "borderAccent": "blue", "borderMuted": "border",
|
|
11
|
+
"success": "green", "error": "pink", "warning": "blueSoft", "muted": "lightGray", "dim": "dim", "text": "white", "thinkingText": "lightGray",
|
|
12
|
+
"selectedBg": "selected", "userMessageBg": "message", "userMessageText": "white", "customMessageBg": "message", "customMessageText": "white", "customMessageLabel": "pink",
|
|
13
|
+
"toolPendingBg": "pending", "toolSuccessBg": "successBg", "toolErrorBg": "errorBg", "toolTitle": "white", "toolOutput": "lightGray",
|
|
14
|
+
"mdHeading": "white", "mdLink": "blue", "mdLinkUrl": "dim", "mdCode": "blue", "mdCodeBlock": "white", "mdCodeBlockBorder": "border",
|
|
15
|
+
"mdQuote": "lightGray", "mdQuoteBorder": "border", "mdHr": "border", "mdListBullet": "green",
|
|
16
|
+
"toolDiffAdded": "green", "toolDiffRemoved": "pink", "toolDiffContext": "dim",
|
|
17
|
+
"syntaxComment": "dim", "syntaxKeyword": "pink", "syntaxFunction": "blue", "syntaxVariable": "blueSoft", "syntaxString": "green",
|
|
18
|
+
"syntaxNumber": "blueSoft", "syntaxType": "blue", "syntaxOperator": "white", "syntaxPunctuation": "lightGray",
|
|
19
|
+
"thinkingOff": "lightGray", "thinkingMinimal": "lightGray", "thinkingLow": "lightGray", "thinkingMedium": "lightGray", "thinkingHigh": "lightGray", "thinkingXhigh": "lightGray", "thinkingMax": "lightGray",
|
|
20
|
+
"bashMode": "lightGray"
|
|
21
|
+
},
|
|
22
|
+
"export": { "pageBg": "#111814", "cardBg": "#18211c", "infoBg": "#203027" }
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
|
|
3
|
+
"name": "cockpit-minimal-purple",
|
|
4
|
+
"vars": {
|
|
5
|
+
"accent": "#c3a6ff", "blue": "#c3a6ff", "blueSoft": "#d5c5f2", "green": "#8bd49c", "pink": "#efa7c5",
|
|
6
|
+
"white": "#f2f5f7", "lightGray": "#b8c0ca", "dim": "#7d8794", "border": "#66717f",
|
|
7
|
+
"selected": "#2d2739", "message": "#211e29", "pending": "#25212f", "successBg": "#1c2b23", "errorBg": "#272b30"
|
|
8
|
+
},
|
|
9
|
+
"colors": {
|
|
10
|
+
"accent": "accent", "border": "border", "borderAccent": "blue", "borderMuted": "border",
|
|
11
|
+
"success": "green", "error": "pink", "warning": "blueSoft", "muted": "lightGray", "dim": "dim", "text": "white", "thinkingText": "lightGray",
|
|
12
|
+
"selectedBg": "selected", "userMessageBg": "message", "userMessageText": "white", "customMessageBg": "message", "customMessageText": "white", "customMessageLabel": "pink",
|
|
13
|
+
"toolPendingBg": "pending", "toolSuccessBg": "successBg", "toolErrorBg": "errorBg", "toolTitle": "white", "toolOutput": "lightGray",
|
|
14
|
+
"mdHeading": "white", "mdLink": "blue", "mdLinkUrl": "dim", "mdCode": "blue", "mdCodeBlock": "white", "mdCodeBlockBorder": "border",
|
|
15
|
+
"mdQuote": "lightGray", "mdQuoteBorder": "border", "mdHr": "border", "mdListBullet": "green",
|
|
16
|
+
"toolDiffAdded": "green", "toolDiffRemoved": "pink", "toolDiffContext": "dim",
|
|
17
|
+
"syntaxComment": "dim", "syntaxKeyword": "pink", "syntaxFunction": "blue", "syntaxVariable": "blueSoft", "syntaxString": "green",
|
|
18
|
+
"syntaxNumber": "blueSoft", "syntaxType": "blue", "syntaxOperator": "white", "syntaxPunctuation": "lightGray",
|
|
19
|
+
"thinkingOff": "lightGray", "thinkingMinimal": "lightGray", "thinkingLow": "lightGray", "thinkingMedium": "lightGray", "thinkingHigh": "lightGray", "thinkingXhigh": "lightGray", "thinkingMax": "lightGray",
|
|
20
|
+
"bashMode": "lightGray"
|
|
21
|
+
},
|
|
22
|
+
"export": { "pageBg": "#15121a", "cardBg": "#1d1924", "infoBg": "#292234" }
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
|
|
3
|
+
"name": "cockpit-minimal-rose",
|
|
4
|
+
"vars": {
|
|
5
|
+
"accent": "#e7a2b6", "blue": "#e7a2b6", "blueSoft": "#f0c1ce", "green": "#8bd49c", "pink": "#ff8d95",
|
|
6
|
+
"white": "#f2f5f7", "lightGray": "#b8c0ca", "dim": "#837c83", "border": "#71676d",
|
|
7
|
+
"selected": "#36262c", "message": "#281d21", "pending": "#2e2025", "successBg": "#1c2b23", "errorBg": "#342326"
|
|
8
|
+
},
|
|
9
|
+
"colors": {
|
|
10
|
+
"accent": "accent", "border": "border", "borderAccent": "blue", "borderMuted": "border",
|
|
11
|
+
"success": "green", "error": "pink", "warning": "blueSoft", "muted": "lightGray", "dim": "dim", "text": "white", "thinkingText": "lightGray",
|
|
12
|
+
"selectedBg": "selected", "userMessageBg": "message", "userMessageText": "white", "customMessageBg": "message", "customMessageText": "white", "customMessageLabel": "pink",
|
|
13
|
+
"toolPendingBg": "pending", "toolSuccessBg": "successBg", "toolErrorBg": "errorBg", "toolTitle": "white", "toolOutput": "lightGray",
|
|
14
|
+
"mdHeading": "white", "mdLink": "blue", "mdLinkUrl": "dim", "mdCode": "blue", "mdCodeBlock": "white", "mdCodeBlockBorder": "border",
|
|
15
|
+
"mdQuote": "lightGray", "mdQuoteBorder": "border", "mdHr": "border", "mdListBullet": "green",
|
|
16
|
+
"toolDiffAdded": "green", "toolDiffRemoved": "pink", "toolDiffContext": "dim",
|
|
17
|
+
"syntaxComment": "dim", "syntaxKeyword": "pink", "syntaxFunction": "blue", "syntaxVariable": "blueSoft", "syntaxString": "green",
|
|
18
|
+
"syntaxNumber": "blueSoft", "syntaxType": "blue", "syntaxOperator": "white", "syntaxPunctuation": "lightGray",
|
|
19
|
+
"thinkingOff": "lightGray", "thinkingMinimal": "lightGray", "thinkingLow": "lightGray", "thinkingMedium": "lightGray", "thinkingHigh": "lightGray", "thinkingXhigh": "lightGray", "thinkingMax": "lightGray",
|
|
20
|
+
"bashMode": "lightGray"
|
|
21
|
+
},
|
|
22
|
+
"export": { "pageBg": "#181216", "cardBg": "#21191e", "infoBg": "#302229" }
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
|
|
3
|
+
"name": "cockpit-minimal",
|
|
4
|
+
"vars": {
|
|
5
|
+
"accent": "#79b8ff", "blue": "#79b8ff", "blueSoft": "#a9c9ed", "green": "#8bd49c", "pink": "#efa7c5",
|
|
6
|
+
"white": "#f2f5f7", "lightGray": "#b8c0ca", "dim": "#7d8794", "border": "#66717f",
|
|
7
|
+
"selected": "#242d37", "message": "#1b2128", "pending": "#20272f", "successBg": "#1c2b23", "errorBg": "#272b30"
|
|
8
|
+
},
|
|
9
|
+
"colors": {
|
|
10
|
+
"accent": "accent", "border": "border", "borderAccent": "blue", "borderMuted": "border",
|
|
11
|
+
"success": "green", "error": "pink", "warning": "blueSoft", "muted": "lightGray", "dim": "dim", "text": "white", "thinkingText": "lightGray",
|
|
12
|
+
"selectedBg": "selected", "userMessageBg": "message", "userMessageText": "white", "customMessageBg": "message", "customMessageText": "white", "customMessageLabel": "pink",
|
|
13
|
+
"toolPendingBg": "pending", "toolSuccessBg": "successBg", "toolErrorBg": "errorBg", "toolTitle": "white", "toolOutput": "lightGray",
|
|
14
|
+
"mdHeading": "white", "mdLink": "blue", "mdLinkUrl": "dim", "mdCode": "blue", "mdCodeBlock": "white", "mdCodeBlockBorder": "border",
|
|
15
|
+
"mdQuote": "lightGray", "mdQuoteBorder": "border", "mdHr": "border", "mdListBullet": "green",
|
|
16
|
+
"toolDiffAdded": "green", "toolDiffRemoved": "pink", "toolDiffContext": "dim",
|
|
17
|
+
"syntaxComment": "dim", "syntaxKeyword": "pink", "syntaxFunction": "blue", "syntaxVariable": "blueSoft", "syntaxString": "green",
|
|
18
|
+
"syntaxNumber": "blueSoft", "syntaxType": "blue", "syntaxOperator": "white", "syntaxPunctuation": "lightGray",
|
|
19
|
+
"thinkingOff": "lightGray", "thinkingMinimal": "lightGray", "thinkingLow": "lightGray", "thinkingMedium": "lightGray", "thinkingHigh": "lightGray", "thinkingXhigh": "lightGray", "thinkingMax": "lightGray",
|
|
20
|
+
"bashMode": "lightGray"
|
|
21
|
+
},
|
|
22
|
+
"export": { "pageBg": "#111418", "cardBg": "#181d23", "infoBg": "#202832" }
|
|
23
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
|
|
3
|
+
"name": "cockpit-notion",
|
|
4
|
+
"vars": {
|
|
5
|
+
"accent": "#65cdd8", "blue": "#789bd4", "cream": "#ead9ad", "green": "#83c995",
|
|
6
|
+
"red": "#df7b82", "orange": "#e39a67", "purple": "#bd9bd1", "pink": "#d889a1",
|
|
7
|
+
"text": "#e7e3dc", "muted": "#aaa59d", "dim": "#706d68", "border": "#4d4b48",
|
|
8
|
+
"selected": "#353432", "message": "#2d2c2a", "pending": "#292d30", "successBg": "#29312b", "errorBg": "#34292a"
|
|
9
|
+
},
|
|
10
|
+
"colors": {
|
|
11
|
+
"accent": "accent", "border": "blue", "borderAccent": "accent", "borderMuted": "border",
|
|
12
|
+
"success": "green", "error": "red", "warning": "orange", "muted": "muted", "dim": "dim", "text": "text", "thinkingText": "muted",
|
|
13
|
+
"selectedBg": "selected", "userMessageBg": "message", "userMessageText": "text", "customMessageBg": "message", "customMessageText": "text", "customMessageLabel": "purple",
|
|
14
|
+
"toolPendingBg": "pending", "toolSuccessBg": "successBg", "toolErrorBg": "errorBg", "toolTitle": "cream", "toolOutput": "muted",
|
|
15
|
+
"mdHeading": "cream", "mdLink": "blue", "mdLinkUrl": "dim", "mdCode": "accent", "mdCodeBlock": "text", "mdCodeBlockBorder": "border",
|
|
16
|
+
"mdQuote": "muted", "mdQuoteBorder": "border", "mdHr": "border", "mdListBullet": "accent",
|
|
17
|
+
"toolDiffAdded": "green", "toolDiffRemoved": "red", "toolDiffContext": "muted",
|
|
18
|
+
"syntaxComment": "dim", "syntaxKeyword": "purple", "syntaxFunction": "cream", "syntaxVariable": "blue", "syntaxString": "green",
|
|
19
|
+
"syntaxNumber": "orange", "syntaxType": "accent", "syntaxOperator": "text", "syntaxPunctuation": "muted",
|
|
20
|
+
"thinkingOff": "dim", "thinkingMinimal": "muted", "thinkingLow": "blue", "thinkingMedium": "accent", "thinkingHigh": "purple", "thinkingXhigh": "pink", "thinkingMax": "red",
|
|
21
|
+
"bashMode": "green"
|
|
22
|
+
},
|
|
23
|
+
"export": { "pageBg": "#1f1f1e", "cardBg": "#272625", "infoBg": "#332f28" }
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
|
|
3
|
+
"name": "cockpit-ocean",
|
|
4
|
+
"vars": {
|
|
5
|
+
"accent": "#7dcfff", "blue": "#7aa2f7", "cream": "#c0caf5", "green": "#9ece6a",
|
|
6
|
+
"red": "#f7768e", "orange": "#ff9e64", "purple": "#bb9af7", "pink": "#ff79c6",
|
|
7
|
+
"text": "#c8d3f5", "muted": "#828bb8", "dim": "#565f89", "border": "#3b4261",
|
|
8
|
+
"selected": "#2b3150", "message": "#22283f", "pending": "#202940", "successBg": "#22352f", "errorBg": "#3b2732"
|
|
9
|
+
},
|
|
10
|
+
"colors": {
|
|
11
|
+
"accent": "accent", "border": "blue", "borderAccent": "accent", "borderMuted": "border",
|
|
12
|
+
"success": "green", "error": "red", "warning": "orange", "muted": "muted", "dim": "dim", "text": "text", "thinkingText": "muted",
|
|
13
|
+
"selectedBg": "selected", "userMessageBg": "message", "userMessageText": "text", "customMessageBg": "message", "customMessageText": "text", "customMessageLabel": "purple",
|
|
14
|
+
"toolPendingBg": "pending", "toolSuccessBg": "successBg", "toolErrorBg": "errorBg", "toolTitle": "cream", "toolOutput": "muted",
|
|
15
|
+
"mdHeading": "cream", "mdLink": "blue", "mdLinkUrl": "dim", "mdCode": "accent", "mdCodeBlock": "text", "mdCodeBlockBorder": "border",
|
|
16
|
+
"mdQuote": "muted", "mdQuoteBorder": "border", "mdHr": "border", "mdListBullet": "accent",
|
|
17
|
+
"toolDiffAdded": "green", "toolDiffRemoved": "red", "toolDiffContext": "muted",
|
|
18
|
+
"syntaxComment": "dim", "syntaxKeyword": "purple", "syntaxFunction": "cream", "syntaxVariable": "blue", "syntaxString": "green",
|
|
19
|
+
"syntaxNumber": "orange", "syntaxType": "accent", "syntaxOperator": "text", "syntaxPunctuation": "muted",
|
|
20
|
+
"thinkingOff": "dim", "thinkingMinimal": "muted", "thinkingLow": "blue", "thinkingMedium": "accent", "thinkingHigh": "purple", "thinkingXhigh": "pink", "thinkingMax": "red",
|
|
21
|
+
"bashMode": "green"
|
|
22
|
+
},
|
|
23
|
+
"export": { "pageBg": "#161923", "cardBg": "#1d2233", "infoBg": "#282d42" }
|
|
24
|
+
}
|