@agimon-ai/doompi-user-feedback 0.0.1-alpha.56 → 0.0.1-alpha.58
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-user-feedback",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.58",
|
|
4
4
|
"description": "Structured user questions with interactive and autonomous Voice handoff for Pi agents.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
"src/types/questionnaire.ts",
|
|
34
34
|
"README.md",
|
|
35
35
|
"LICENSE",
|
|
36
|
-
"package.json"
|
|
36
|
+
"package.json",
|
|
37
|
+
"!src/web/**/*.stories.tsx"
|
|
37
38
|
],
|
|
38
39
|
"type": "module",
|
|
39
40
|
"main": "./dist/index.cjs",
|
|
@@ -58,10 +59,10 @@
|
|
|
58
59
|
"dependencies": {
|
|
59
60
|
"@deepseek-ai/cordis": "4.0.2",
|
|
60
61
|
"typebox": "1.3.25",
|
|
61
|
-
"@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.
|
|
62
|
-
"@agimon-ai/doompi-
|
|
63
|
-
"@agimon-ai/doompi-
|
|
64
|
-
"@agimon-ai/doompi-web-contracts": "0.0.1-alpha.
|
|
62
|
+
"@agimon-ai/doompi-extension-contracts": "0.0.1-alpha.68",
|
|
63
|
+
"@agimon-ai/doompi-ui": "0.0.1-alpha.69",
|
|
64
|
+
"@agimon-ai/doompi-web-components": "0.0.1-alpha.28",
|
|
65
|
+
"@agimon-ai/doompi-web-contracts": "0.0.1-alpha.31"
|
|
65
66
|
},
|
|
66
67
|
"devDependencies": {
|
|
67
68
|
"@earendil-works/pi-coding-agent": "0.85.1",
|
|
@@ -72,6 +73,7 @@
|
|
|
72
73
|
"@types/react": "19.2.18",
|
|
73
74
|
"@vitest/coverage-v8": "5.0.0",
|
|
74
75
|
"react": "19.2.8",
|
|
76
|
+
"react-dom": "19.2.8",
|
|
75
77
|
"tsdown": "0.23.0",
|
|
76
78
|
"typescript": "7.0.2",
|
|
77
79
|
"vitest": "5.0.0"
|
|
@@ -53,7 +53,7 @@ function StepBar({
|
|
|
53
53
|
data-testid={`questionnaire-step-${String(index)}`}
|
|
54
54
|
data-step-state={active ? 'current' : answered ? 'answered' : 'pending'}
|
|
55
55
|
onClick={() => onPick(index)}
|
|
56
|
-
className={`gap-1.5 rounded-full px-2.5 py-0.5 text-
|
|
56
|
+
className={`gap-1.5 rounded-full px-2.5 py-0.5 text-xs ${
|
|
57
57
|
active
|
|
58
58
|
? 'bg-doom-selected text-doom-on-selected'
|
|
59
59
|
: answered
|
|
@@ -112,7 +112,7 @@ function QuestionBody({
|
|
|
112
112
|
const preview = question.options[cursor]?.preview;
|
|
113
113
|
return (
|
|
114
114
|
<div className="flex min-w-0 flex-col gap-2">
|
|
115
|
-
<p data-testid="questionnaire-question" className="break-words text-
|
|
115
|
+
<p data-testid="questionnaire-question" className="break-words text-base leading-relaxed text-doom-hi">
|
|
116
116
|
{question.question}
|
|
117
117
|
</p>
|
|
118
118
|
|
|
@@ -134,15 +134,15 @@ function QuestionBody({
|
|
|
134
134
|
}
|
|
135
135
|
className="min-w-0 items-start gap-2.5 rounded-md px-2.5 py-1.5 whitespace-normal"
|
|
136
136
|
>
|
|
137
|
-
<span className={`mt-[2px] shrink-0 text-
|
|
137
|
+
<span className={`mt-[2px] shrink-0 text-sm ${chosen ? 'text-doom-green' : 'text-doom-faint'}`}>
|
|
138
138
|
{question.multiSelect ? (chosen ? '[x]' : '[ ]') : chosen ? '●' : '○'}
|
|
139
139
|
</span>
|
|
140
140
|
<OptionLabel className="min-w-0 flex flex-col gap-0.5 text-left">
|
|
141
|
-
<span className={`break-words text-
|
|
141
|
+
<span className={`break-words text-sm ${chosen ? 'text-doom-hi' : 'text-doom-text'}`}>
|
|
142
142
|
{option.label}
|
|
143
143
|
</span>
|
|
144
144
|
{option.description ? (
|
|
145
|
-
<span className="break-words text-
|
|
145
|
+
<span className="break-words text-sm leading-relaxed whitespace-normal text-doom-dim">
|
|
146
146
|
{option.description}
|
|
147
147
|
</span>
|
|
148
148
|
) : null}
|
|
@@ -157,8 +157,8 @@ function QuestionBody({
|
|
|
157
157
|
onClick={() => onDraft(setCustom(draft, index, entry.custom ?? ''), false)}
|
|
158
158
|
className="min-w-0 items-center gap-2.5 rounded-md px-2.5 py-1.5 whitespace-normal"
|
|
159
159
|
>
|
|
160
|
-
<span className="shrink-0 text-
|
|
161
|
-
<OptionLabel className="min-w-0 text-
|
|
160
|
+
<span className="shrink-0 text-sm text-doom-faint">✎</span>
|
|
161
|
+
<OptionLabel className="min-w-0 text-sm whitespace-normal text-doom-text">{CUSTOM_LABEL}</OptionLabel>
|
|
162
162
|
</OptionRow>
|
|
163
163
|
</div>
|
|
164
164
|
|
|
@@ -173,7 +173,7 @@ function QuestionBody({
|
|
|
173
173
|
placeholder="type your answer…"
|
|
174
174
|
onChange={(event) => onDraft(setCustom(draft, index, event.target.value), false)}
|
|
175
175
|
onKeyDown={fieldKeys(() => onCommit(true))}
|
|
176
|
-
className="text-
|
|
176
|
+
className="text-sm"
|
|
177
177
|
/>
|
|
178
178
|
</div>
|
|
179
179
|
) : null}
|
|
@@ -181,7 +181,7 @@ function QuestionBody({
|
|
|
181
181
|
{preview ? (
|
|
182
182
|
<div data-testid="questionnaire-preview" className="flex flex-col gap-1">
|
|
183
183
|
<SectionLabel>preview</SectionLabel>
|
|
184
|
-
<div className="max-h-40 overflow-y-auto border-l-2 border-doom-edge-magenta pl-3 text-
|
|
184
|
+
<div className="max-h-40 overflow-y-auto border-l-2 border-doom-edge-magenta pl-3 text-sm text-doom-dim">
|
|
185
185
|
<Markdown text={preview} />
|
|
186
186
|
</div>
|
|
187
187
|
</div>
|
|
@@ -196,7 +196,7 @@ function QuestionBody({
|
|
|
196
196
|
placeholder="anything the options do not cover"
|
|
197
197
|
onChange={(event) => onDraft(setNotes(draft, index, event.target.value), false)}
|
|
198
198
|
onKeyDown={fieldKeys(() => onCommit(false))}
|
|
199
|
-
className="text-
|
|
199
|
+
className="text-sm"
|
|
200
200
|
/>
|
|
201
201
|
</div>
|
|
202
202
|
</div>
|
|
@@ -262,7 +262,7 @@ export function QuestionnairePrompt({ args, dialog, answer, cancel }: ToolPrompt
|
|
|
262
262
|
if (question === undefined) {
|
|
263
263
|
return (
|
|
264
264
|
<div className="flex items-center justify-between gap-3 px-3.5 py-3">
|
|
265
|
-
<span data-testid="questionnaire-empty" className="text-
|
|
265
|
+
<span data-testid="questionnaire-empty" className="text-sm text-doom-dim">
|
|
266
266
|
the agent asked something this cockpit could not read
|
|
267
267
|
</span>
|
|
268
268
|
<Button variant="outline" size="sm" data-testid="questionnaire-cancel" onClick={cancel}>
|
|
@@ -320,7 +320,7 @@ export function QuestionnairePrompt({ args, dialog, answer, cancel }: ToolPrompt
|
|
|
320
320
|
<div className="flex min-w-0 flex-wrap items-center gap-2 px-3 pt-2.5 pb-2 sm:gap-3 sm:px-3.5">
|
|
321
321
|
<StepBar questions={questions} draft={draft} current={current} onPick={show} />
|
|
322
322
|
<span className="min-w-0 flex-1" />
|
|
323
|
-
<Badge size="xs" className="shrink-0 border-transparent bg-doom-panel py-0.5 text-
|
|
323
|
+
<Badge size="xs" className="shrink-0 border-transparent bg-doom-panel py-0.5 text-2xs text-doom-dim">
|
|
324
324
|
question {current + 1} / {questions.length}
|
|
325
325
|
</Badge>
|
|
326
326
|
</div>
|
|
@@ -345,7 +345,7 @@ export function QuestionnairePrompt({ args, dialog, answer, cancel }: ToolPrompt
|
|
|
345
345
|
<Separator />
|
|
346
346
|
|
|
347
347
|
<div className="flex min-w-0 items-center gap-2 px-3 py-2 sm:px-3.5">
|
|
348
|
-
<span data-testid="questionnaire-hint" className="min-w-0 truncate text-
|
|
348
|
+
<span data-testid="questionnaire-hint" className="min-w-0 truncate text-xs text-doom-faint max-sm:hidden">
|
|
349
349
|
<Kbd>←→</Kbd> questions · <Kbd>↑↓</Kbd> options · <Kbd>enter</Kbd>{' '}
|
|
350
350
|
{question.multiSelect ? 'toggles' : 'selects'} · <Kbd>esc</Kbd> cancels
|
|
351
351
|
</span>
|