@agimon-ai/doompi-plan 0.0.1-alpha.65 → 0.0.1-alpha.68
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-plan",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.68",
|
|
4
4
|
"description": "Reviewable Pi planning mode that removes file-editing tools and persists implementation plans.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -35,7 +35,8 @@
|
|
|
35
35
|
"src/types/planSettings.ts",
|
|
36
36
|
"README.md",
|
|
37
37
|
"LICENSE",
|
|
38
|
-
"package.json"
|
|
38
|
+
"package.json",
|
|
39
|
+
"!src/web/**/*.stories.tsx"
|
|
39
40
|
],
|
|
40
41
|
"type": "module",
|
|
41
42
|
"main": "./dist/index.cjs",
|
|
@@ -96,12 +97,12 @@
|
|
|
96
97
|
"dependencies": {
|
|
97
98
|
"@deepseek-ai/cordis": "4.0.2",
|
|
98
99
|
"hono": "4.13.5",
|
|
99
|
-
"@agimon-ai/doompi-config": "0.0.1-alpha.
|
|
100
|
-
"@agimon-ai/doompi-
|
|
101
|
-
"@agimon-ai/doompi-
|
|
102
|
-
"@agimon-ai/doompi-web-
|
|
103
|
-
"@agimon-ai/doompi-web-
|
|
104
|
-
"@agimon-ai/doompi-web-security": "0.0.1-alpha.
|
|
100
|
+
"@agimon-ai/doompi-config": "0.0.1-alpha.67",
|
|
101
|
+
"@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.67",
|
|
102
|
+
"@agimon-ai/doompi-telemetry": "0.0.1-alpha.66",
|
|
103
|
+
"@agimon-ai/doompi-web-components": "0.0.1-alpha.27",
|
|
104
|
+
"@agimon-ai/doompi-web-contracts": "0.0.1-alpha.30",
|
|
105
|
+
"@agimon-ai/doompi-web-security": "0.0.1-alpha.29"
|
|
105
106
|
},
|
|
106
107
|
"devDependencies": {
|
|
107
108
|
"@earendil-works/pi-coding-agent": "0.85.1",
|
|
@@ -20,7 +20,7 @@ export function PlanActivitySection({ sessionId, statuses, openTransientTab }: W
|
|
|
20
20
|
|
|
21
21
|
if (view === undefined) {
|
|
22
22
|
return (
|
|
23
|
-
<p data-testid="activity-summary-plan" className="px-1 text-
|
|
23
|
+
<p data-testid="activity-summary-plan" className="px-1 text-xs text-doom-faint">
|
|
24
24
|
no plan written yet
|
|
25
25
|
</p>
|
|
26
26
|
);
|
|
@@ -38,23 +38,23 @@ export function PlanActivitySection({ sessionId, statuses, openTransientTab }: W
|
|
|
38
38
|
if (sessionId === null) return;
|
|
39
39
|
openTransientTab(planTab());
|
|
40
40
|
}}
|
|
41
|
-
className="min-w-0 gap-0.5 rounded-
|
|
41
|
+
className="min-w-0 gap-0.5 rounded-md px-1 py-1 hover:bg-doom-panel"
|
|
42
42
|
>
|
|
43
43
|
<span className="flex w-full min-w-0 items-center gap-1.5">
|
|
44
44
|
<span
|
|
45
45
|
data-testid="activity-plan-title"
|
|
46
|
-
className="min-w-0 flex-1 truncate text-left text-
|
|
46
|
+
className="min-w-0 flex-1 truncate text-left text-xs font-bold text-doom-hi"
|
|
47
47
|
>
|
|
48
48
|
{view.title}
|
|
49
49
|
</span>
|
|
50
50
|
{view.stamp === '' ? null : (
|
|
51
|
-
<span data-testid="activity-plan-stamp" className="shrink-0 text-
|
|
51
|
+
<span data-testid="activity-plan-stamp" className="shrink-0 text-2xs tabular-nums text-doom-faint">
|
|
52
52
|
{view.stamp}
|
|
53
53
|
</span>
|
|
54
54
|
)}
|
|
55
55
|
</span>
|
|
56
56
|
</Button>
|
|
57
|
-
<p className="px-1 text-
|
|
57
|
+
<p className="px-1 text-2xs leading-relaxed text-doom-faint">
|
|
58
58
|
open to read or edit; the agent reads what you save.
|
|
59
59
|
</p>
|
|
60
60
|
</div>
|
|
@@ -87,7 +87,7 @@ export function PlanPanel({ sessionId, statuses, closeTransientTab }: WebPluginS
|
|
|
87
87
|
return (
|
|
88
88
|
<div data-testid="plan-panel" className="flex min-h-0 flex-1 flex-col">
|
|
89
89
|
<header className="flex shrink-0 items-center gap-2 border-b border-doom-border px-4 py-2">
|
|
90
|
-
<span data-testid="plan-title" className="min-w-0 flex-1 truncate text-
|
|
90
|
+
<span data-testid="plan-title" className="min-w-0 flex-1 truncate text-sm font-bold text-doom-hi">
|
|
91
91
|
{detail?.title ?? 'plan'}
|
|
92
92
|
</span>
|
|
93
93
|
<nav className="flex shrink-0 items-center gap-1">
|
|
@@ -98,7 +98,7 @@ export function PlanPanel({ sessionId, statuses, closeTransientTab }: WebPluginS
|
|
|
98
98
|
size="xs"
|
|
99
99
|
data-testid={`plan-view-${entry}`}
|
|
100
100
|
onClick={() => setView(entry)}
|
|
101
|
-
className="text-
|
|
101
|
+
className="text-2xs"
|
|
102
102
|
>
|
|
103
103
|
{entry}
|
|
104
104
|
</Button>
|
|
@@ -109,32 +109,32 @@ export function PlanPanel({ sessionId, statuses, closeTransientTab }: WebPluginS
|
|
|
109
109
|
size="xs"
|
|
110
110
|
data-testid="plan-close"
|
|
111
111
|
onClick={() => closeTransientTab(PLAN_TAB_ID)}
|
|
112
|
-
className="shrink-0 text-
|
|
112
|
+
className="shrink-0 text-2xs"
|
|
113
113
|
>
|
|
114
114
|
close
|
|
115
115
|
</Button>
|
|
116
116
|
</header>
|
|
117
117
|
|
|
118
118
|
{loading && detail === undefined ? (
|
|
119
|
-
<p data-testid="plan-loading" className="px-4 py-3 text-
|
|
119
|
+
<p data-testid="plan-loading" className="px-4 py-3 text-sm text-doom-faint">
|
|
120
120
|
reading this session's plan…
|
|
121
121
|
</p>
|
|
122
122
|
) : null}
|
|
123
123
|
{error === undefined ? null : (
|
|
124
|
-
<p data-testid="plan-error" className="px-4 py-3 text-
|
|
124
|
+
<p data-testid="plan-error" className="px-4 py-3 text-sm text-doom-red">
|
|
125
125
|
{error}
|
|
126
126
|
</p>
|
|
127
127
|
)}
|
|
128
128
|
|
|
129
129
|
<div className="flex min-h-0 flex-1 flex-col">
|
|
130
130
|
{detail === undefined ? null : detail.unavailable ? (
|
|
131
|
-
<p data-testid="plan-unavailable" className="px-4 py-3 text-
|
|
131
|
+
<p data-testid="plan-unavailable" className="px-4 py-3 text-sm text-doom-faint">
|
|
132
132
|
{detail.reason ?? 'this plan cannot be shown'}
|
|
133
133
|
</p>
|
|
134
134
|
) : view === 'preview' ? (
|
|
135
135
|
<div
|
|
136
136
|
data-testid="plan-preview"
|
|
137
|
-
className="flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto p-4 text-
|
|
137
|
+
className="flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto p-4 text-sm text-doom-text"
|
|
138
138
|
>
|
|
139
139
|
<Markdown text={content} />
|
|
140
140
|
</div>
|
|
@@ -157,7 +157,7 @@ export function PlanPanel({ sessionId, statuses, closeTransientTab }: WebPluginS
|
|
|
157
157
|
loading={saving}
|
|
158
158
|
disabled={draft === undefined || saving}
|
|
159
159
|
onClick={() => void save()}
|
|
160
|
-
className="text-
|
|
160
|
+
className="text-2xs"
|
|
161
161
|
>
|
|
162
162
|
save to disk
|
|
163
163
|
</Button>
|
|
@@ -167,7 +167,7 @@ export function PlanPanel({ sessionId, statuses, closeTransientTab }: WebPluginS
|
|
|
167
167
|
size="xs"
|
|
168
168
|
data-testid="plan-revert"
|
|
169
169
|
onClick={() => setDraft(undefined)}
|
|
170
|
-
className="text-
|
|
170
|
+
className="text-2xs"
|
|
171
171
|
>
|
|
172
172
|
discard edits
|
|
173
173
|
</Button>
|
|
@@ -175,7 +175,7 @@ export function PlanPanel({ sessionId, statuses, closeTransientTab }: WebPluginS
|
|
|
175
175
|
{saveNote === undefined ? null : (
|
|
176
176
|
<span
|
|
177
177
|
data-testid="plan-save-note"
|
|
178
|
-
className={saveNote === SAVED_NOTE ? 'text-
|
|
178
|
+
className={saveNote === SAVED_NOTE ? 'text-2xs text-doom-green' : 'text-2xs text-doom-red'}
|
|
179
179
|
>
|
|
180
180
|
{saveNote}
|
|
181
181
|
</span>
|
|
@@ -187,7 +187,7 @@ export function PlanPanel({ sessionId, statuses, closeTransientTab }: WebPluginS
|
|
|
187
187
|
|
|
188
188
|
{detail === undefined ? null : (
|
|
189
189
|
<footer data-testid="plan-source-path" className="shrink-0 truncate border-t border-doom-border px-4 py-1.5">
|
|
190
|
-
<span className="text-
|
|
190
|
+
<span className="text-2xs text-doom-faint">{detail.path}</span>
|
|
191
191
|
</footer>
|
|
192
192
|
)}
|
|
193
193
|
</div>
|
|
@@ -51,8 +51,8 @@ export function PlanReviewPrompt({ dialog, answer, cancel }: ToolPromptRenderPro
|
|
|
51
51
|
>
|
|
52
52
|
<div className="flex flex-col gap-1 px-3.5 pt-3 pb-2">
|
|
53
53
|
<SectionLabel>plan review</SectionLabel>
|
|
54
|
-
<p className="text-
|
|
55
|
-
<p className="text-
|
|
54
|
+
<p className="text-base leading-relaxed text-doom-hi">{dialog.title}</p>
|
|
55
|
+
<p className="text-sm leading-relaxed text-doom-dim">
|
|
56
56
|
Review the plan in the conversation before choosing what happens next.
|
|
57
57
|
</p>
|
|
58
58
|
</div>
|
|
@@ -67,7 +67,7 @@ export function PlanReviewPrompt({ dialog, answer, cancel }: ToolPromptRenderPro
|
|
|
67
67
|
/>
|
|
68
68
|
|
|
69
69
|
<div className="flex min-h-[34px] items-center gap-2 border-t border-doom-border-soft px-3.5 py-2">
|
|
70
|
-
<span className="text-
|
|
70
|
+
<span className="text-xs text-doom-faint">
|
|
71
71
|
{optionListHint(dialog.options.length)} · <Kbd>esc</Kbd> cancels
|
|
72
72
|
</span>
|
|
73
73
|
<Button variant="outline" size="sm" data-testid="plan-review-cancel" className="ml-auto" onClick={cancel}>
|