@agimon-ai/doompi-task 0.0.1-alpha.67 → 0.0.1-alpha.69
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agimon-ai/doompi-task",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.69",
|
|
4
4
|
"description": "Persistent, dependency-aware task graphs and subagent delegation for Pi coding sessions.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -30,7 +30,8 @@
|
|
|
30
30
|
"src/web",
|
|
31
31
|
"src/exports/webClient.ts",
|
|
32
32
|
"src/types/webTasks.ts",
|
|
33
|
-
"package.json"
|
|
33
|
+
"package.json",
|
|
34
|
+
"!src/web/**/*.stories.tsx"
|
|
34
35
|
],
|
|
35
36
|
"type": "module",
|
|
36
37
|
"main": "./dist/index.cjs",
|
|
@@ -166,11 +167,11 @@
|
|
|
166
167
|
"dependencies": {
|
|
167
168
|
"@deepseek-ai/cordis": "4.0.2",
|
|
168
169
|
"typebox": "1.3.25",
|
|
169
|
-
"@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.
|
|
170
|
-
"@agimon-ai/doompi-telemetry": "0.0.1-alpha.
|
|
171
|
-
"@agimon-ai/doompi-ui": "0.0.1-alpha.
|
|
172
|
-
"@agimon-ai/doompi-web-
|
|
173
|
-
"@agimon-ai/doompi-web-
|
|
170
|
+
"@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.68",
|
|
171
|
+
"@agimon-ai/doompi-telemetry": "0.0.1-alpha.67",
|
|
172
|
+
"@agimon-ai/doompi-ui": "0.0.1-alpha.69",
|
|
173
|
+
"@agimon-ai/doompi-web-components": "0.0.1-alpha.28",
|
|
174
|
+
"@agimon-ai/doompi-web-contracts": "0.0.1-alpha.31"
|
|
174
175
|
},
|
|
175
176
|
"devDependencies": {
|
|
176
177
|
"@earendil-works/pi-coding-agent": "0.85.1",
|
|
@@ -181,6 +182,7 @@
|
|
|
181
182
|
"@types/react": "19.2.18",
|
|
182
183
|
"@vitest/coverage-v8": "5.0.0",
|
|
183
184
|
"react": "19.2.8",
|
|
185
|
+
"react-dom": "19.2.8",
|
|
184
186
|
"tsdown": "0.23.0",
|
|
185
187
|
"typescript": "7.0.2",
|
|
186
188
|
"vitest": "5.0.0"
|
|
@@ -27,7 +27,7 @@ const DESCRIPTION_ROWS = 5;
|
|
|
27
27
|
const MESSAGE_ROWS = 4;
|
|
28
28
|
|
|
29
29
|
function FieldLabel({ children }: { children: string }) {
|
|
30
|
-
return <span className="text-
|
|
30
|
+
return <span className="text-2xs font-bold tracking-widest text-doom-faint">{children}</span>;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
function Field({ label, children }: { label: string; children: ReactNode }) {
|
|
@@ -41,7 +41,7 @@ function Field({ label, children }: { label: string; children: ReactNode }) {
|
|
|
41
41
|
|
|
42
42
|
function ReadOnlyValue({ value, testId }: { value: string; testId: string }) {
|
|
43
43
|
return (
|
|
44
|
-
<span data-testid={testId} className="whitespace-pre-wrap break-words text-
|
|
44
|
+
<span data-testid={testId} className="whitespace-pre-wrap break-words text-sm leading-relaxed text-doom-dim">
|
|
45
45
|
{value}
|
|
46
46
|
</span>
|
|
47
47
|
);
|
|
@@ -128,7 +128,7 @@ export function TaskDetailDialog({
|
|
|
128
128
|
<DialogContent width="lg" data-testid="task-detail-dialog" data-mode={mode} aria-describedby={undefined}>
|
|
129
129
|
<DialogHeader>
|
|
130
130
|
<div className="flex min-w-0 flex-col items-start gap-1 sm:flex-row sm:items-center sm:gap-2.5">
|
|
131
|
-
<span className="text-
|
|
131
|
+
<span className="text-2xs text-doom-faint">task #{task.id}</span>
|
|
132
132
|
<DialogTitle data-testid="task-detail-title" className="max-w-full break-words">
|
|
133
133
|
{task.subject}
|
|
134
134
|
</DialogTitle>
|
|
@@ -189,7 +189,7 @@ export function TaskDetailDialog({
|
|
|
189
189
|
>
|
|
190
190
|
<SelectTrigger
|
|
191
191
|
data-testid="task-detail-status-input"
|
|
192
|
-
className="h-7 w-full min-w-0 text-
|
|
192
|
+
className="h-7 w-full min-w-0 text-xs sm:min-w-[200px]"
|
|
193
193
|
>
|
|
194
194
|
<SelectValue />
|
|
195
195
|
</SelectTrigger>
|
|
@@ -203,7 +203,7 @@ export function TaskDetailDialog({
|
|
|
203
203
|
</Select>
|
|
204
204
|
</Field>
|
|
205
205
|
<DialogFooter className="flex-wrap sm:flex-nowrap">
|
|
206
|
-
<span className="w-full text-
|
|
206
|
+
<span className="w-full text-2xs text-doom-faint sm:w-auto">
|
|
207
207
|
saved as one prompt naming only the fields you changed
|
|
208
208
|
</span>
|
|
209
209
|
<span className="min-w-0 flex-1" />
|
|
@@ -230,7 +230,7 @@ export function TaskDetailDialog({
|
|
|
230
230
|
/>
|
|
231
231
|
</Field>
|
|
232
232
|
<DialogFooter className="flex-wrap sm:flex-nowrap">
|
|
233
|
-
<span className="w-full text-
|
|
233
|
+
<span className="w-full text-2xs text-doom-faint sm:w-auto">
|
|
234
234
|
steers the run, it does not edit the task
|
|
235
235
|
</span>
|
|
236
236
|
<span className="min-w-0 flex-1" />
|
|
@@ -50,7 +50,7 @@ function TaskRow({
|
|
|
50
50
|
<div
|
|
51
51
|
data-testid={`activity-task-${task.id}`}
|
|
52
52
|
data-task-status={task.status}
|
|
53
|
-
className="flex flex-col gap-1 rounded-
|
|
53
|
+
className="flex flex-col gap-1 rounded-md px-1 py-1"
|
|
54
54
|
>
|
|
55
55
|
<div className="grid min-w-0 grid-cols-[auto_minmax(0,1fr)_auto_auto] items-center gap-x-1.5">
|
|
56
56
|
<Dot tone={STATUS_TONE[task.status]} pulse={task.status === 'in_progress'} />
|
|
@@ -59,11 +59,11 @@ function TaskRow({
|
|
|
59
59
|
data-testid={`activity-task-title-${task.id}`}
|
|
60
60
|
title={task.subject}
|
|
61
61
|
onClick={() => openDialog('view')}
|
|
62
|
-
className={`min-w-0 truncate text-left text-
|
|
62
|
+
className={`min-w-0 truncate text-left text-xs font-bold hover:underline ${task.status === 'failed' ? 'text-doom-red' : task.status === 'completed' ? 'text-doom-dim' : 'text-doom-hi'}`}
|
|
63
63
|
>
|
|
64
64
|
<span className="text-doom-faint">#{task.id}</span> {task.subject}
|
|
65
65
|
</button>
|
|
66
|
-
<span className="shrink-0 text-
|
|
66
|
+
<span className="shrink-0 text-2xs text-doom-faint">{task.status.replace('_', ' ')}</span>
|
|
67
67
|
{task.status !== 'completed' && task.status !== 'deleted' ? (
|
|
68
68
|
<DropdownMenu>
|
|
69
69
|
<DropdownMenuTrigger asChild>
|
|
@@ -105,7 +105,7 @@ function TaskRow({
|
|
|
105
105
|
) : null}
|
|
106
106
|
</div>
|
|
107
107
|
{detail || agent || task.blockedBy.length > 0 ? (
|
|
108
|
-
<span className="truncate pl-3 text-
|
|
108
|
+
<span className="truncate pl-3 text-2xs text-doom-faint">
|
|
109
109
|
{agent ? `[${agent}] ` : ''}
|
|
110
110
|
{detail ?? ''}
|
|
111
111
|
{task.blockedBy.length > 0 ? ` · blocked by ${task.blockedBy.map((id) => `#${id}`).join(', ')}` : ''}
|
|
@@ -131,15 +131,13 @@ export function TasksActivitySection({ sessionId, sendSessionFrame }: WebPluginS
|
|
|
131
131
|
<span
|
|
132
132
|
aria-hidden
|
|
133
133
|
className={
|
|
134
|
-
active.length > 0
|
|
135
|
-
? 'animate-pulse text-[11px] font-bold text-doom-yellow'
|
|
136
|
-
: 'text-[11px] font-bold text-doom-faint'
|
|
134
|
+
active.length > 0 ? 'animate-pulse text-sm font-bold text-doom-yellow' : 'text-sm font-bold text-doom-faint'
|
|
137
135
|
}
|
|
138
136
|
>
|
|
139
137
|
#
|
|
140
138
|
</span>
|
|
141
|
-
<span className="flex-1 text-
|
|
142
|
-
<span className="text-
|
|
139
|
+
<span className="flex-1 text-sm font-bold text-doom-text">tasks</span>
|
|
140
|
+
<span className="text-2xs text-doom-faint">{active.length} active</span>
|
|
143
141
|
</div>
|
|
144
142
|
{active.length > 0 ? (
|
|
145
143
|
<div className="flex flex-col gap-0.5">
|
|
@@ -161,15 +159,15 @@ export function TasksActivitySection({ sessionId, sendSessionFrame }: WebPluginS
|
|
|
161
159
|
size="xs"
|
|
162
160
|
aria-expanded={historyOpen}
|
|
163
161
|
onClick={() => setHistoryOpen((open) => !open)}
|
|
164
|
-
className="justify-start gap-1.5 rounded-
|
|
162
|
+
className="justify-start gap-1.5 rounded-md px-1 py-0.5 hover:bg-doom-panel"
|
|
165
163
|
>
|
|
166
164
|
{historyOpen ? (
|
|
167
165
|
<ChevronDownIcon className="h-2.5 w-2.5 text-doom-faint" />
|
|
168
166
|
) : (
|
|
169
167
|
<ChevronRightIcon className="h-2.5 w-2.5 text-doom-faint" />
|
|
170
168
|
)}
|
|
171
|
-
<span className="text-
|
|
172
|
-
<span className="text-
|
|
169
|
+
<span className="text-xs font-bold text-doom-dim">session</span>
|
|
170
|
+
<span className="text-2xs text-doom-faint">{history.length}</span>
|
|
173
171
|
</Button>
|
|
174
172
|
{historyOpen ? (
|
|
175
173
|
<div className="flex flex-col gap-0.5 pl-2">
|