groove-dev 0.27.103 → 0.27.104

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.
Files changed (27) hide show
  1. package/moe-training/client/index.js +1 -0
  2. package/moe-training/client/step-classifier.js +1 -1
  3. package/moe-training/client/trajectory-capture.js +16 -7
  4. package/moe-training/test/client/step-classifier.test.js +42 -0
  5. package/moe-training/test/client/trajectory-capture.test.js +95 -0
  6. package/node_modules/@groove-dev/cli/package.json +1 -1
  7. package/node_modules/@groove-dev/daemon/package.json +1 -1
  8. package/node_modules/@groove-dev/daemon/src/api.js +19 -3
  9. package/node_modules/@groove-dev/gui/dist/assets/{index-8gdXdRnq.js → index-oUBAPJv6.js} +15 -15
  10. package/node_modules/@groove-dev/gui/dist/index.html +1 -1
  11. package/node_modules/@groove-dev/gui/package.json +1 -1
  12. package/node_modules/@groove-dev/gui/src/components/settings/ProviderSetupWizard.jsx +28 -2
  13. package/node_modules/@groove-dev/gui/src/views/settings.jsx +23 -2
  14. package/node_modules/moe-training/client/index.js +1 -0
  15. package/node_modules/moe-training/client/step-classifier.js +1 -1
  16. package/node_modules/moe-training/client/trajectory-capture.js +16 -7
  17. package/node_modules/moe-training/test/client/step-classifier.test.js +42 -0
  18. package/node_modules/moe-training/test/client/trajectory-capture.test.js +95 -0
  19. package/package.json +1 -1
  20. package/packages/cli/package.json +1 -1
  21. package/packages/daemon/package.json +1 -1
  22. package/packages/daemon/src/api.js +19 -3
  23. package/packages/gui/dist/assets/{index-8gdXdRnq.js → index-oUBAPJv6.js} +15 -15
  24. package/packages/gui/dist/index.html +1 -1
  25. package/packages/gui/package.json +1 -1
  26. package/packages/gui/src/components/settings/ProviderSetupWizard.jsx +28 -2
  27. package/packages/gui/src/views/settings.jsx +23 -2
@@ -6,7 +6,7 @@
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <link rel="icon" type="image/png" href="/favicon.png" />
8
8
  <title>Groove GUI</title>
9
- <script type="module" crossorigin src="/assets/index-8gdXdRnq.js"></script>
9
+ <script type="module" crossorigin src="/assets/index-oUBAPJv6.js"></script>
10
10
  <link rel="modulepreload" crossorigin href="/assets/vendor-26L3JoZv.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/reactflow-DoBZjiHE.js">
12
12
  <link rel="modulepreload" crossorigin href="/assets/codemirror-CFF1Lrnz.js">
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groove-dev/gui",
3
- "version": "0.27.103",
3
+ "version": "0.27.104",
4
4
  "description": "GROOVE GUI — visual agent control plane",
5
5
  "license": "FSL-1.1-Apache-2.0",
6
6
  "type": "module",
@@ -172,6 +172,8 @@ function AuthenticateStep({ providerId, meta, onSaveKey }) {
172
172
  const [showKey, setShowKey] = useState(false);
173
173
  const [saving, setSaving] = useState(false);
174
174
  const [loginStarted, setLoginStarted] = useState(false);
175
+ const [verifying, setVerifying] = useState(false);
176
+ const [verifyError, setVerifyError] = useState('');
175
177
  const [authMode, setAuthMode] = useState(meta.authType === 'subscription' ? 'subscription' : 'apikey');
176
178
 
177
179
  async function handleSaveKey() {
@@ -287,9 +289,33 @@ function AuthenticateStep({ providerId, meta, onSaveKey }) {
287
289
  <ExternalLink size={12} className="text-accent" />
288
290
  <span className="text-xs text-accent font-sans">Sign-in opened in your browser</span>
289
291
  </div>
290
- <Button variant="primary" size="sm" onClick={onSaveKey} className="gap-1.5">
291
- <Check size={11} /> I've signed in
292
+ <Button
293
+ variant="primary"
294
+ size="sm"
295
+ disabled={verifying}
296
+ onClick={async () => {
297
+ setVerifying(true);
298
+ setVerifyError('');
299
+ try {
300
+ const res = await api.post(`/providers/codex/verify`);
301
+ if (res.authenticated) {
302
+ onSaveKey();
303
+ } else {
304
+ setVerifyError('Authentication not detected yet. Please complete sign-in in your browser and try again.');
305
+ }
306
+ } catch {
307
+ setVerifyError('Authentication not detected yet. Please complete sign-in in your browser and try again.');
308
+ } finally {
309
+ setVerifying(false);
310
+ }
311
+ }}
312
+ className="gap-1.5"
313
+ >
314
+ {verifying ? <Loader2 size={11} className="animate-spin" /> : <Check size={11} />} I've signed in
292
315
  </Button>
316
+ {verifyError && (
317
+ <p className="text-2xs text-danger font-sans">{verifyError}</p>
318
+ )}
293
319
  </div>
294
320
  )}
295
321
  </div>
@@ -454,10 +454,31 @@ function ProviderCard({ provider, onKeyChange }) {
454
454
  <Button
455
455
  variant="primary"
456
456
  size="sm"
457
- onClick={() => { setLoginPending(false); if (onKeyChange) onKeyChange(); }}
457
+ disabled={checking}
458
+ onClick={async () => {
459
+ if (provider.id === 'codex') {
460
+ setChecking(true);
461
+ try {
462
+ const res = await api.post(`/providers/codex/verify`);
463
+ if (res.authenticated) {
464
+ setLoginPending(false);
465
+ if (onKeyChange) onKeyChange();
466
+ } else {
467
+ addToast('error', 'Authentication not detected yet. Please complete sign-in in your browser and try again.');
468
+ }
469
+ } catch {
470
+ addToast('error', 'Authentication not detected yet. Please complete sign-in in your browser and try again.');
471
+ } finally {
472
+ setChecking(false);
473
+ }
474
+ } else {
475
+ setLoginPending(false);
476
+ if (onKeyChange) onKeyChange();
477
+ }
478
+ }}
458
479
  className="w-full h-8 text-xs gap-1.5"
459
480
  >
460
- <Check size={12} /> I've signed in
481
+ {checking ? <Loader2 size={12} className="animate-spin" /> : <Check size={12} />} I've signed in
461
482
  </Button>
462
483
  <button
463
484
  onClick={() => setLoginPending(false)}