@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.56",
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.66",
62
- "@agimon-ai/doompi-web-components": "0.0.1-alpha.26",
63
- "@agimon-ai/doompi-ui": "0.0.1-alpha.67",
64
- "@agimon-ai/doompi-web-contracts": "0.0.1-alpha.29"
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-[10px] ${
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-[13px] leading-relaxed text-doom-hi">
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-[11px] ${chosen ? 'text-doom-green' : 'text-doom-faint'}`}>
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-[12px] ${chosen ? 'text-doom-hi' : 'text-doom-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-[11px] leading-relaxed whitespace-normal text-doom-dim">
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-[11px] text-doom-faint">✎</span>
161
- <OptionLabel className="min-w-0 text-[12px] whitespace-normal text-doom-text">{CUSTOM_LABEL}</OptionLabel>
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-[12px]"
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-[11px] text-doom-dim">
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-[11px]"
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-[12px] text-doom-dim">
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-[9px] text-doom-dim">
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-[10px] text-doom-faint max-sm:hidden">
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>