@pellux/goodvibes-tui 0.20.3 → 0.21.0
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/CHANGELOG.md +27 -0
- package/README.md +23 -2
- package/docs/foundation-artifacts/operator-contract.json +78 -1
- package/package.json +3 -2
- package/src/audio/spoken-turn-controller.ts +31 -1
- package/src/audio/spoken-turn-wiring.ts +26 -4
- package/src/cli/bundle-command.ts +1 -1
- package/src/cli/completions/generate.ts +662 -0
- package/src/cli/config-overrides.ts +68 -0
- package/src/cli/help.ts +4 -2
- package/src/cli/management-commands.ts +1 -1
- package/src/cli/management.ts +1 -8
- package/src/cli/parser.ts +14 -18
- package/src/cli/service-command.ts +1 -1
- package/src/cli/surface-command.ts +1 -1
- package/src/cli/tui-startup.ts +72 -10
- package/src/cli/types.ts +12 -3
- package/src/cli-flags.ts +1 -0
- package/src/config/atomic-write.ts +70 -0
- package/src/config/read-versioned.ts +115 -0
- package/src/core/conversation-rendering.ts +49 -15
- package/src/core/conversation.ts +101 -16
- package/src/core/format-user-error.ts +192 -0
- package/src/core/stream-event-wiring.ts +144 -0
- package/src/core/stream-stall-watchdog.ts +103 -0
- package/src/core/system-message-router.ts +5 -1
- package/src/export/cost-utils.ts +71 -0
- package/src/export/gist-uploader.ts +136 -0
- package/src/input/command-registry.ts +31 -1
- package/src/input/commands/control-room-runtime.ts +5 -5
- package/src/input/commands/experience-runtime.ts +5 -4
- package/src/input/commands/knowledge.ts +1 -1
- package/src/input/commands/local-auth-runtime.ts +27 -5
- package/src/input/commands/local-setup.ts +4 -6
- package/src/input/commands/memory-product-runtime.ts +8 -6
- package/src/input/commands/operator-panel-runtime.ts +1 -1
- package/src/input/commands/operator-runtime.ts +3 -10
- package/src/input/commands/{integration-runtime.ts → plugin-runtime.ts} +1 -1
- package/src/input/commands/recall-review.ts +26 -2
- package/src/input/commands/services-runtime.ts +2 -2
- package/src/input/commands/session-workflow.ts +3 -3
- package/src/input/commands/share-runtime.ts +99 -12
- package/src/input/commands/tts-runtime.ts +30 -4
- package/src/input/commands.ts +2 -2
- package/src/input/delete-key-policy.ts +46 -0
- package/src/input/feed-context-factory.ts +2 -0
- package/src/input/handler-feed.ts +3 -0
- package/src/input/handler-interactions.ts +2 -15
- package/src/input/handler-modal-routes.ts +91 -12
- package/src/input/handler-modal-token-routes.ts +3 -0
- package/src/input/handler-onboarding-cloudflare.ts +1 -1
- package/src/input/handler-onboarding.ts +55 -69
- package/src/input/handler-types.ts +163 -0
- package/src/input/handler.ts +5 -2
- package/src/input/input-history.ts +76 -6
- package/src/input/model-picker-filter.ts +265 -0
- package/src/input/model-picker-items.ts +208 -0
- package/src/input/model-picker.ts +92 -325
- package/src/input/onboarding/handler-onboarding-routes.ts +7 -2
- package/src/input/onboarding/onboarding-verification-helpers.ts +76 -0
- package/src/input/onboarding/onboarding-wizard-apply.ts +4 -4
- package/src/input/onboarding/onboarding-wizard-cloudflare-step.ts +2 -2
- package/src/input/onboarding/onboarding-wizard-cloudflare.ts +8 -8
- package/src/input/onboarding/onboarding-wizard-external-surface-extra-specs.ts +1 -1
- package/src/input/onboarding/onboarding-wizard-external-surfaces.ts +2 -29
- package/src/input/onboarding/onboarding-wizard-rules.ts +28 -28
- package/src/input/onboarding/onboarding-wizard-state.ts +20 -20
- package/src/input/onboarding/onboarding-wizard-steps.ts +18 -25
- package/src/input/onboarding/onboarding-wizard-types.ts +145 -3
- package/src/input/onboarding/onboarding-wizard.ts +3 -3
- package/src/input/settings-modal-data.ts +304 -0
- package/src/input/settings-modal-mutations.ts +154 -0
- package/src/input/settings-modal.ts +182 -220
- package/src/main.ts +57 -57
- package/src/panels/builtin/agent.ts +4 -1
- package/src/panels/builtin/development.ts +4 -1
- package/src/panels/confirm-state.ts +27 -12
- package/src/panels/cost-tracker-panel.ts +23 -67
- package/src/panels/eval-panel.ts +10 -9
- package/src/panels/knowledge-panel.ts +3 -5
- package/src/panels/local-auth-panel.ts +124 -4
- package/src/panels/project-planning-panel.ts +42 -4
- package/src/panels/search-focus.ts +11 -5
- package/src/panels/subscription-panel.ts +33 -25
- package/src/panels/types.ts +28 -1
- package/src/panels/wrfc-panel.ts +224 -41
- package/src/renderer/agent-detail-modal.ts +11 -10
- package/src/renderer/code-block.ts +10 -2
- package/src/renderer/compositor.ts +18 -4
- package/src/renderer/context-inspector.ts +1 -5
- package/src/renderer/diff.ts +94 -21
- package/src/renderer/markdown.ts +29 -13
- package/src/renderer/settings-modal-helpers.ts +1 -1
- package/src/renderer/settings-modal.ts +77 -8
- package/src/renderer/syntax-highlighter.ts +10 -3
- package/src/renderer/term-caps.ts +318 -0
- package/src/renderer/theme.ts +158 -0
- package/src/renderer/tool-call.ts +12 -2
- package/src/renderer/ui-factory.ts +50 -6
- package/src/runtime/bootstrap-command-context.ts +1 -0
- package/src/runtime/bootstrap-command-parts.ts +14 -0
- package/src/runtime/bootstrap-core.ts +121 -13
- package/src/runtime/bootstrap.ts +2 -0
- package/src/runtime/onboarding/apply.ts +4 -6
- package/src/runtime/onboarding/index.ts +1 -0
- package/src/runtime/onboarding/markers.ts +42 -49
- package/src/runtime/onboarding/progress.ts +148 -0
- package/src/runtime/onboarding/state.ts +133 -55
- package/src/runtime/onboarding/types.ts +20 -0
- package/src/runtime/services.ts +21 -0
- package/src/runtime/wrfc-persistence.ts +237 -0
- package/src/shell/blocking-input.ts +20 -5
- package/src/tools/wrfc-agent-guard.ts +64 -3
- package/src/utils/format-elapsed.ts +30 -0
- package/src/utils/terminal-width.ts +45 -0
- package/src/version.ts +1 -1
- package/src/work-plans/work-plan-store.ts +4 -6
- package/src/planning/project-planning-coordinator.ts +0 -543
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"product": {
|
|
4
4
|
"id": "goodvibes",
|
|
5
5
|
"surface": "operator",
|
|
6
|
-
"version": "0.33.
|
|
6
|
+
"version": "0.33.36"
|
|
7
7
|
},
|
|
8
8
|
"auth": {
|
|
9
9
|
"modes": [
|
|
@@ -3253,6 +3253,7 @@
|
|
|
3253
3253
|
"google-chat",
|
|
3254
3254
|
"signal",
|
|
3255
3255
|
"whatsapp",
|
|
3256
|
+
"telephony",
|
|
3256
3257
|
"imessage",
|
|
3257
3258
|
"msteams",
|
|
3258
3259
|
"bluebubbles",
|
|
@@ -3360,6 +3361,7 @@
|
|
|
3360
3361
|
"google-chat",
|
|
3361
3362
|
"signal",
|
|
3362
3363
|
"whatsapp",
|
|
3364
|
+
"telephony",
|
|
3363
3365
|
"imessage",
|
|
3364
3366
|
"msteams",
|
|
3365
3367
|
"bluebubbles",
|
|
@@ -3433,6 +3435,7 @@
|
|
|
3433
3435
|
"google-chat",
|
|
3434
3436
|
"signal",
|
|
3435
3437
|
"whatsapp",
|
|
3438
|
+
"telephony",
|
|
3436
3439
|
"imessage",
|
|
3437
3440
|
"msteams",
|
|
3438
3441
|
"bluebubbles",
|
|
@@ -3623,6 +3626,7 @@
|
|
|
3623
3626
|
"google-chat",
|
|
3624
3627
|
"signal",
|
|
3625
3628
|
"whatsapp",
|
|
3629
|
+
"telephony",
|
|
3626
3630
|
"imessage",
|
|
3627
3631
|
"msteams",
|
|
3628
3632
|
"bluebubbles",
|
|
@@ -3743,6 +3747,7 @@
|
|
|
3743
3747
|
"google-chat",
|
|
3744
3748
|
"signal",
|
|
3745
3749
|
"whatsapp",
|
|
3750
|
+
"telephony",
|
|
3746
3751
|
"imessage",
|
|
3747
3752
|
"msteams",
|
|
3748
3753
|
"bluebubbles",
|
|
@@ -3939,6 +3944,7 @@
|
|
|
3939
3944
|
"google-chat",
|
|
3940
3945
|
"signal",
|
|
3941
3946
|
"whatsapp",
|
|
3947
|
+
"telephony",
|
|
3942
3948
|
"imessage",
|
|
3943
3949
|
"msteams",
|
|
3944
3950
|
"bluebubbles",
|
|
@@ -4595,6 +4601,7 @@
|
|
|
4595
4601
|
"google-chat",
|
|
4596
4602
|
"signal",
|
|
4597
4603
|
"whatsapp",
|
|
4604
|
+
"telephony",
|
|
4598
4605
|
"imessage",
|
|
4599
4606
|
"msteams",
|
|
4600
4607
|
"bluebubbles",
|
|
@@ -4690,6 +4697,7 @@
|
|
|
4690
4697
|
"google-chat",
|
|
4691
4698
|
"signal",
|
|
4692
4699
|
"whatsapp",
|
|
4700
|
+
"telephony",
|
|
4693
4701
|
"imessage",
|
|
4694
4702
|
"msteams",
|
|
4695
4703
|
"bluebubbles",
|
|
@@ -4743,6 +4751,7 @@
|
|
|
4743
4751
|
"google-chat",
|
|
4744
4752
|
"signal",
|
|
4745
4753
|
"whatsapp",
|
|
4754
|
+
"telephony",
|
|
4746
4755
|
"imessage",
|
|
4747
4756
|
"msteams",
|
|
4748
4757
|
"bluebubbles",
|
|
@@ -5056,6 +5065,7 @@
|
|
|
5056
5065
|
"google-chat",
|
|
5057
5066
|
"signal",
|
|
5058
5067
|
"whatsapp",
|
|
5068
|
+
"telephony",
|
|
5059
5069
|
"imessage",
|
|
5060
5070
|
"msteams",
|
|
5061
5071
|
"bluebubbles",
|
|
@@ -5246,6 +5256,7 @@
|
|
|
5246
5256
|
"google-chat",
|
|
5247
5257
|
"signal",
|
|
5248
5258
|
"whatsapp",
|
|
5259
|
+
"telephony",
|
|
5249
5260
|
"imessage",
|
|
5250
5261
|
"msteams",
|
|
5251
5262
|
"bluebubbles",
|
|
@@ -5344,6 +5355,7 @@
|
|
|
5344
5355
|
"google-chat",
|
|
5345
5356
|
"signal",
|
|
5346
5357
|
"whatsapp",
|
|
5358
|
+
"telephony",
|
|
5347
5359
|
"imessage",
|
|
5348
5360
|
"msteams",
|
|
5349
5361
|
"bluebubbles",
|
|
@@ -5397,6 +5409,7 @@
|
|
|
5397
5409
|
"google-chat",
|
|
5398
5410
|
"signal",
|
|
5399
5411
|
"whatsapp",
|
|
5412
|
+
"telephony",
|
|
5400
5413
|
"imessage",
|
|
5401
5414
|
"msteams",
|
|
5402
5415
|
"bluebubbles",
|
|
@@ -5545,6 +5558,7 @@
|
|
|
5545
5558
|
"google-chat",
|
|
5546
5559
|
"signal",
|
|
5547
5560
|
"whatsapp",
|
|
5561
|
+
"telephony",
|
|
5548
5562
|
"imessage",
|
|
5549
5563
|
"msteams",
|
|
5550
5564
|
"bluebubbles",
|
|
@@ -6032,6 +6046,7 @@
|
|
|
6032
6046
|
"google-chat",
|
|
6033
6047
|
"signal",
|
|
6034
6048
|
"whatsapp",
|
|
6049
|
+
"telephony",
|
|
6035
6050
|
"imessage",
|
|
6036
6051
|
"msteams",
|
|
6037
6052
|
"bluebubbles",
|
|
@@ -6222,6 +6237,7 @@
|
|
|
6222
6237
|
"google-chat",
|
|
6223
6238
|
"signal",
|
|
6224
6239
|
"whatsapp",
|
|
6240
|
+
"telephony",
|
|
6225
6241
|
"imessage",
|
|
6226
6242
|
"msteams",
|
|
6227
6243
|
"bluebubbles",
|
|
@@ -6320,6 +6336,7 @@
|
|
|
6320
6336
|
"google-chat",
|
|
6321
6337
|
"signal",
|
|
6322
6338
|
"whatsapp",
|
|
6339
|
+
"telephony",
|
|
6323
6340
|
"imessage",
|
|
6324
6341
|
"msteams",
|
|
6325
6342
|
"bluebubbles",
|
|
@@ -6373,6 +6390,7 @@
|
|
|
6373
6390
|
"google-chat",
|
|
6374
6391
|
"signal",
|
|
6375
6392
|
"whatsapp",
|
|
6393
|
+
"telephony",
|
|
6376
6394
|
"imessage",
|
|
6377
6395
|
"msteams",
|
|
6378
6396
|
"bluebubbles",
|
|
@@ -6521,6 +6539,7 @@
|
|
|
6521
6539
|
"google-chat",
|
|
6522
6540
|
"signal",
|
|
6523
6541
|
"whatsapp",
|
|
6542
|
+
"telephony",
|
|
6524
6543
|
"imessage",
|
|
6525
6544
|
"msteams",
|
|
6526
6545
|
"bluebubbles",
|
|
@@ -6872,6 +6891,7 @@
|
|
|
6872
6891
|
"google-chat",
|
|
6873
6892
|
"signal",
|
|
6874
6893
|
"whatsapp",
|
|
6894
|
+
"telephony",
|
|
6875
6895
|
"imessage",
|
|
6876
6896
|
"msteams",
|
|
6877
6897
|
"bluebubbles",
|
|
@@ -6967,6 +6987,7 @@
|
|
|
6967
6987
|
"google-chat",
|
|
6968
6988
|
"signal",
|
|
6969
6989
|
"whatsapp",
|
|
6990
|
+
"telephony",
|
|
6970
6991
|
"imessage",
|
|
6971
6992
|
"msteams",
|
|
6972
6993
|
"bluebubbles",
|
|
@@ -7020,6 +7041,7 @@
|
|
|
7020
7041
|
"google-chat",
|
|
7021
7042
|
"signal",
|
|
7022
7043
|
"whatsapp",
|
|
7044
|
+
"telephony",
|
|
7023
7045
|
"imessage",
|
|
7024
7046
|
"msteams",
|
|
7025
7047
|
"bluebubbles",
|
|
@@ -7330,6 +7352,7 @@
|
|
|
7330
7352
|
"google-chat",
|
|
7331
7353
|
"signal",
|
|
7332
7354
|
"whatsapp",
|
|
7355
|
+
"telephony",
|
|
7333
7356
|
"imessage",
|
|
7334
7357
|
"msteams",
|
|
7335
7358
|
"bluebubbles",
|
|
@@ -7520,6 +7543,7 @@
|
|
|
7520
7543
|
"google-chat",
|
|
7521
7544
|
"signal",
|
|
7522
7545
|
"whatsapp",
|
|
7546
|
+
"telephony",
|
|
7523
7547
|
"imessage",
|
|
7524
7548
|
"msteams",
|
|
7525
7549
|
"bluebubbles",
|
|
@@ -7618,6 +7642,7 @@
|
|
|
7618
7642
|
"google-chat",
|
|
7619
7643
|
"signal",
|
|
7620
7644
|
"whatsapp",
|
|
7645
|
+
"telephony",
|
|
7621
7646
|
"imessage",
|
|
7622
7647
|
"msteams",
|
|
7623
7648
|
"bluebubbles",
|
|
@@ -7671,6 +7696,7 @@
|
|
|
7671
7696
|
"google-chat",
|
|
7672
7697
|
"signal",
|
|
7673
7698
|
"whatsapp",
|
|
7699
|
+
"telephony",
|
|
7674
7700
|
"imessage",
|
|
7675
7701
|
"msteams",
|
|
7676
7702
|
"bluebubbles",
|
|
@@ -7819,6 +7845,7 @@
|
|
|
7819
7845
|
"google-chat",
|
|
7820
7846
|
"signal",
|
|
7821
7847
|
"whatsapp",
|
|
7848
|
+
"telephony",
|
|
7822
7849
|
"imessage",
|
|
7823
7850
|
"msteams",
|
|
7824
7851
|
"bluebubbles",
|
|
@@ -8227,6 +8254,7 @@
|
|
|
8227
8254
|
"google-chat",
|
|
8228
8255
|
"signal",
|
|
8229
8256
|
"whatsapp",
|
|
8257
|
+
"telephony",
|
|
8230
8258
|
"imessage",
|
|
8231
8259
|
"msteams",
|
|
8232
8260
|
"bluebubbles",
|
|
@@ -8334,6 +8362,7 @@
|
|
|
8334
8362
|
"google-chat",
|
|
8335
8363
|
"signal",
|
|
8336
8364
|
"whatsapp",
|
|
8365
|
+
"telephony",
|
|
8337
8366
|
"imessage",
|
|
8338
8367
|
"msteams",
|
|
8339
8368
|
"bluebubbles",
|
|
@@ -8407,6 +8436,7 @@
|
|
|
8407
8436
|
"google-chat",
|
|
8408
8437
|
"signal",
|
|
8409
8438
|
"whatsapp",
|
|
8439
|
+
"telephony",
|
|
8410
8440
|
"imessage",
|
|
8411
8441
|
"msteams",
|
|
8412
8442
|
"bluebubbles",
|
|
@@ -8597,6 +8627,7 @@
|
|
|
8597
8627
|
"google-chat",
|
|
8598
8628
|
"signal",
|
|
8599
8629
|
"whatsapp",
|
|
8630
|
+
"telephony",
|
|
8600
8631
|
"imessage",
|
|
8601
8632
|
"msteams",
|
|
8602
8633
|
"bluebubbles",
|
|
@@ -8717,6 +8748,7 @@
|
|
|
8717
8748
|
"google-chat",
|
|
8718
8749
|
"signal",
|
|
8719
8750
|
"whatsapp",
|
|
8751
|
+
"telephony",
|
|
8720
8752
|
"imessage",
|
|
8721
8753
|
"msteams",
|
|
8722
8754
|
"bluebubbles",
|
|
@@ -8913,6 +8945,7 @@
|
|
|
8913
8945
|
"google-chat",
|
|
8914
8946
|
"signal",
|
|
8915
8947
|
"whatsapp",
|
|
8948
|
+
"telephony",
|
|
8916
8949
|
"imessage",
|
|
8917
8950
|
"msteams",
|
|
8918
8951
|
"bluebubbles",
|
|
@@ -9231,6 +9264,7 @@
|
|
|
9231
9264
|
"google-chat",
|
|
9232
9265
|
"signal",
|
|
9233
9266
|
"whatsapp",
|
|
9267
|
+
"telephony",
|
|
9234
9268
|
"imessage",
|
|
9235
9269
|
"msteams",
|
|
9236
9270
|
"bluebubbles",
|
|
@@ -9338,6 +9372,7 @@
|
|
|
9338
9372
|
"google-chat",
|
|
9339
9373
|
"signal",
|
|
9340
9374
|
"whatsapp",
|
|
9375
|
+
"telephony",
|
|
9341
9376
|
"imessage",
|
|
9342
9377
|
"msteams",
|
|
9343
9378
|
"bluebubbles",
|
|
@@ -9411,6 +9446,7 @@
|
|
|
9411
9446
|
"google-chat",
|
|
9412
9447
|
"signal",
|
|
9413
9448
|
"whatsapp",
|
|
9449
|
+
"telephony",
|
|
9414
9450
|
"imessage",
|
|
9415
9451
|
"msteams",
|
|
9416
9452
|
"bluebubbles",
|
|
@@ -9601,6 +9637,7 @@
|
|
|
9601
9637
|
"google-chat",
|
|
9602
9638
|
"signal",
|
|
9603
9639
|
"whatsapp",
|
|
9640
|
+
"telephony",
|
|
9604
9641
|
"imessage",
|
|
9605
9642
|
"msteams",
|
|
9606
9643
|
"bluebubbles",
|
|
@@ -9721,6 +9758,7 @@
|
|
|
9721
9758
|
"google-chat",
|
|
9722
9759
|
"signal",
|
|
9723
9760
|
"whatsapp",
|
|
9761
|
+
"telephony",
|
|
9724
9762
|
"imessage",
|
|
9725
9763
|
"msteams",
|
|
9726
9764
|
"bluebubbles",
|
|
@@ -9917,6 +9955,7 @@
|
|
|
9917
9955
|
"google-chat",
|
|
9918
9956
|
"signal",
|
|
9919
9957
|
"whatsapp",
|
|
9958
|
+
"telephony",
|
|
9920
9959
|
"imessage",
|
|
9921
9960
|
"msteams",
|
|
9922
9961
|
"bluebubbles",
|
|
@@ -10167,6 +10206,7 @@
|
|
|
10167
10206
|
"google-chat",
|
|
10168
10207
|
"signal",
|
|
10169
10208
|
"whatsapp",
|
|
10209
|
+
"telephony",
|
|
10170
10210
|
"imessage",
|
|
10171
10211
|
"msteams",
|
|
10172
10212
|
"bluebubbles",
|
|
@@ -10328,6 +10368,7 @@
|
|
|
10328
10368
|
"google-chat",
|
|
10329
10369
|
"signal",
|
|
10330
10370
|
"whatsapp",
|
|
10371
|
+
"telephony",
|
|
10331
10372
|
"imessage",
|
|
10332
10373
|
"msteams",
|
|
10333
10374
|
"bluebubbles",
|
|
@@ -10435,6 +10476,7 @@
|
|
|
10435
10476
|
"google-chat",
|
|
10436
10477
|
"signal",
|
|
10437
10478
|
"whatsapp",
|
|
10479
|
+
"telephony",
|
|
10438
10480
|
"imessage",
|
|
10439
10481
|
"msteams",
|
|
10440
10482
|
"bluebubbles",
|
|
@@ -10508,6 +10550,7 @@
|
|
|
10508
10550
|
"google-chat",
|
|
10509
10551
|
"signal",
|
|
10510
10552
|
"whatsapp",
|
|
10553
|
+
"telephony",
|
|
10511
10554
|
"imessage",
|
|
10512
10555
|
"msteams",
|
|
10513
10556
|
"bluebubbles",
|
|
@@ -10698,6 +10741,7 @@
|
|
|
10698
10741
|
"google-chat",
|
|
10699
10742
|
"signal",
|
|
10700
10743
|
"whatsapp",
|
|
10744
|
+
"telephony",
|
|
10701
10745
|
"imessage",
|
|
10702
10746
|
"msteams",
|
|
10703
10747
|
"bluebubbles",
|
|
@@ -10818,6 +10862,7 @@
|
|
|
10818
10862
|
"google-chat",
|
|
10819
10863
|
"signal",
|
|
10820
10864
|
"whatsapp",
|
|
10865
|
+
"telephony",
|
|
10821
10866
|
"imessage",
|
|
10822
10867
|
"msteams",
|
|
10823
10868
|
"bluebubbles",
|
|
@@ -11014,6 +11059,7 @@
|
|
|
11014
11059
|
"google-chat",
|
|
11015
11060
|
"signal",
|
|
11016
11061
|
"whatsapp",
|
|
11062
|
+
"telephony",
|
|
11017
11063
|
"imessage",
|
|
11018
11064
|
"msteams",
|
|
11019
11065
|
"bluebubbles",
|
|
@@ -11333,6 +11379,7 @@
|
|
|
11333
11379
|
"google-chat",
|
|
11334
11380
|
"signal",
|
|
11335
11381
|
"whatsapp",
|
|
11382
|
+
"telephony",
|
|
11336
11383
|
"imessage",
|
|
11337
11384
|
"msteams",
|
|
11338
11385
|
"bluebubbles",
|
|
@@ -11440,6 +11487,7 @@
|
|
|
11440
11487
|
"google-chat",
|
|
11441
11488
|
"signal",
|
|
11442
11489
|
"whatsapp",
|
|
11490
|
+
"telephony",
|
|
11443
11491
|
"imessage",
|
|
11444
11492
|
"msteams",
|
|
11445
11493
|
"bluebubbles",
|
|
@@ -11513,6 +11561,7 @@
|
|
|
11513
11561
|
"google-chat",
|
|
11514
11562
|
"signal",
|
|
11515
11563
|
"whatsapp",
|
|
11564
|
+
"telephony",
|
|
11516
11565
|
"imessage",
|
|
11517
11566
|
"msteams",
|
|
11518
11567
|
"bluebubbles",
|
|
@@ -11703,6 +11752,7 @@
|
|
|
11703
11752
|
"google-chat",
|
|
11704
11753
|
"signal",
|
|
11705
11754
|
"whatsapp",
|
|
11755
|
+
"telephony",
|
|
11706
11756
|
"imessage",
|
|
11707
11757
|
"msteams",
|
|
11708
11758
|
"bluebubbles",
|
|
@@ -11823,6 +11873,7 @@
|
|
|
11823
11873
|
"google-chat",
|
|
11824
11874
|
"signal",
|
|
11825
11875
|
"whatsapp",
|
|
11876
|
+
"telephony",
|
|
11826
11877
|
"imessage",
|
|
11827
11878
|
"msteams",
|
|
11828
11879
|
"bluebubbles",
|
|
@@ -12019,6 +12070,7 @@
|
|
|
12019
12070
|
"google-chat",
|
|
12020
12071
|
"signal",
|
|
12021
12072
|
"whatsapp",
|
|
12073
|
+
"telephony",
|
|
12022
12074
|
"imessage",
|
|
12023
12075
|
"msteams",
|
|
12024
12076
|
"bluebubbles",
|
|
@@ -12337,6 +12389,7 @@
|
|
|
12337
12389
|
"google-chat",
|
|
12338
12390
|
"signal",
|
|
12339
12391
|
"whatsapp",
|
|
12392
|
+
"telephony",
|
|
12340
12393
|
"imessage",
|
|
12341
12394
|
"msteams",
|
|
12342
12395
|
"bluebubbles",
|
|
@@ -12432,6 +12485,7 @@
|
|
|
12432
12485
|
"google-chat",
|
|
12433
12486
|
"signal",
|
|
12434
12487
|
"whatsapp",
|
|
12488
|
+
"telephony",
|
|
12435
12489
|
"imessage",
|
|
12436
12490
|
"msteams",
|
|
12437
12491
|
"bluebubbles",
|
|
@@ -12485,6 +12539,7 @@
|
|
|
12485
12539
|
"google-chat",
|
|
12486
12540
|
"signal",
|
|
12487
12541
|
"whatsapp",
|
|
12542
|
+
"telephony",
|
|
12488
12543
|
"imessage",
|
|
12489
12544
|
"msteams",
|
|
12490
12545
|
"bluebubbles",
|
|
@@ -12767,6 +12822,7 @@
|
|
|
12767
12822
|
"google-chat",
|
|
12768
12823
|
"signal",
|
|
12769
12824
|
"whatsapp",
|
|
12825
|
+
"telephony",
|
|
12770
12826
|
"imessage",
|
|
12771
12827
|
"msteams",
|
|
12772
12828
|
"bluebubbles",
|
|
@@ -12957,6 +13013,7 @@
|
|
|
12957
13013
|
"google-chat",
|
|
12958
13014
|
"signal",
|
|
12959
13015
|
"whatsapp",
|
|
13016
|
+
"telephony",
|
|
12960
13017
|
"imessage",
|
|
12961
13018
|
"msteams",
|
|
12962
13019
|
"bluebubbles",
|
|
@@ -13055,6 +13112,7 @@
|
|
|
13055
13112
|
"google-chat",
|
|
13056
13113
|
"signal",
|
|
13057
13114
|
"whatsapp",
|
|
13115
|
+
"telephony",
|
|
13058
13116
|
"imessage",
|
|
13059
13117
|
"msteams",
|
|
13060
13118
|
"bluebubbles",
|
|
@@ -13108,6 +13166,7 @@
|
|
|
13108
13166
|
"google-chat",
|
|
13109
13167
|
"signal",
|
|
13110
13168
|
"whatsapp",
|
|
13169
|
+
"telephony",
|
|
13111
13170
|
"imessage",
|
|
13112
13171
|
"msteams",
|
|
13113
13172
|
"bluebubbles",
|
|
@@ -13256,6 +13315,7 @@
|
|
|
13256
13315
|
"google-chat",
|
|
13257
13316
|
"signal",
|
|
13258
13317
|
"whatsapp",
|
|
13318
|
+
"telephony",
|
|
13259
13319
|
"imessage",
|
|
13260
13320
|
"msteams",
|
|
13261
13321
|
"bluebubbles",
|
|
@@ -13731,6 +13791,7 @@
|
|
|
13731
13791
|
"google-chat",
|
|
13732
13792
|
"signal",
|
|
13733
13793
|
"whatsapp",
|
|
13794
|
+
"telephony",
|
|
13734
13795
|
"imessage",
|
|
13735
13796
|
"msteams",
|
|
13736
13797
|
"bluebubbles",
|
|
@@ -13921,6 +13982,7 @@
|
|
|
13921
13982
|
"google-chat",
|
|
13922
13983
|
"signal",
|
|
13923
13984
|
"whatsapp",
|
|
13985
|
+
"telephony",
|
|
13924
13986
|
"imessage",
|
|
13925
13987
|
"msteams",
|
|
13926
13988
|
"bluebubbles",
|
|
@@ -14019,6 +14081,7 @@
|
|
|
14019
14081
|
"google-chat",
|
|
14020
14082
|
"signal",
|
|
14021
14083
|
"whatsapp",
|
|
14084
|
+
"telephony",
|
|
14022
14085
|
"imessage",
|
|
14023
14086
|
"msteams",
|
|
14024
14087
|
"bluebubbles",
|
|
@@ -14072,6 +14135,7 @@
|
|
|
14072
14135
|
"google-chat",
|
|
14073
14136
|
"signal",
|
|
14074
14137
|
"whatsapp",
|
|
14138
|
+
"telephony",
|
|
14075
14139
|
"imessage",
|
|
14076
14140
|
"msteams",
|
|
14077
14141
|
"bluebubbles",
|
|
@@ -14220,6 +14284,7 @@
|
|
|
14220
14284
|
"google-chat",
|
|
14221
14285
|
"signal",
|
|
14222
14286
|
"whatsapp",
|
|
14287
|
+
"telephony",
|
|
14223
14288
|
"imessage",
|
|
14224
14289
|
"msteams",
|
|
14225
14290
|
"bluebubbles",
|
|
@@ -14436,6 +14501,7 @@
|
|
|
14436
14501
|
"google-chat",
|
|
14437
14502
|
"signal",
|
|
14438
14503
|
"whatsapp",
|
|
14504
|
+
"telephony",
|
|
14439
14505
|
"imessage",
|
|
14440
14506
|
"msteams",
|
|
14441
14507
|
"bluebubbles",
|
|
@@ -14543,6 +14609,7 @@
|
|
|
14543
14609
|
"google-chat",
|
|
14544
14610
|
"signal",
|
|
14545
14611
|
"whatsapp",
|
|
14612
|
+
"telephony",
|
|
14546
14613
|
"imessage",
|
|
14547
14614
|
"msteams",
|
|
14548
14615
|
"bluebubbles",
|
|
@@ -14616,6 +14683,7 @@
|
|
|
14616
14683
|
"google-chat",
|
|
14617
14684
|
"signal",
|
|
14618
14685
|
"whatsapp",
|
|
14686
|
+
"telephony",
|
|
14619
14687
|
"imessage",
|
|
14620
14688
|
"msteams",
|
|
14621
14689
|
"bluebubbles",
|
|
@@ -14806,6 +14874,7 @@
|
|
|
14806
14874
|
"google-chat",
|
|
14807
14875
|
"signal",
|
|
14808
14876
|
"whatsapp",
|
|
14877
|
+
"telephony",
|
|
14809
14878
|
"imessage",
|
|
14810
14879
|
"msteams",
|
|
14811
14880
|
"bluebubbles",
|
|
@@ -14926,6 +14995,7 @@
|
|
|
14926
14995
|
"google-chat",
|
|
14927
14996
|
"signal",
|
|
14928
14997
|
"whatsapp",
|
|
14998
|
+
"telephony",
|
|
14929
14999
|
"imessage",
|
|
14930
15000
|
"msteams",
|
|
14931
15001
|
"bluebubbles",
|
|
@@ -15122,6 +15192,7 @@
|
|
|
15122
15192
|
"google-chat",
|
|
15123
15193
|
"signal",
|
|
15124
15194
|
"whatsapp",
|
|
15195
|
+
"telephony",
|
|
15125
15196
|
"imessage",
|
|
15126
15197
|
"msteams",
|
|
15127
15198
|
"bluebubbles",
|
|
@@ -24538,6 +24609,7 @@
|
|
|
24538
24609
|
"google-chat",
|
|
24539
24610
|
"signal",
|
|
24540
24611
|
"whatsapp",
|
|
24612
|
+
"telephony",
|
|
24541
24613
|
"imessage",
|
|
24542
24614
|
"msteams",
|
|
24543
24615
|
"bluebubbles",
|
|
@@ -24699,6 +24771,7 @@
|
|
|
24699
24771
|
"google-chat",
|
|
24700
24772
|
"signal",
|
|
24701
24773
|
"whatsapp",
|
|
24774
|
+
"telephony",
|
|
24702
24775
|
"imessage",
|
|
24703
24776
|
"msteams",
|
|
24704
24777
|
"bluebubbles",
|
|
@@ -61824,6 +61897,7 @@
|
|
|
61824
61897
|
"google-chat",
|
|
61825
61898
|
"signal",
|
|
61826
61899
|
"whatsapp",
|
|
61900
|
+
"telephony",
|
|
61827
61901
|
"imessage",
|
|
61828
61902
|
"msteams",
|
|
61829
61903
|
"bluebubbles",
|
|
@@ -62046,6 +62120,7 @@
|
|
|
62046
62120
|
"google-chat",
|
|
62047
62121
|
"signal",
|
|
62048
62122
|
"whatsapp",
|
|
62123
|
+
"telephony",
|
|
62049
62124
|
"imessage",
|
|
62050
62125
|
"msteams",
|
|
62051
62126
|
"bluebubbles",
|
|
@@ -62281,6 +62356,7 @@
|
|
|
62281
62356
|
"google-chat",
|
|
62282
62357
|
"signal",
|
|
62283
62358
|
"whatsapp",
|
|
62359
|
+
"telephony",
|
|
62284
62360
|
"imessage",
|
|
62285
62361
|
"msteams",
|
|
62286
62362
|
"bluebubbles",
|
|
@@ -62461,6 +62537,7 @@
|
|
|
62461
62537
|
"google-chat",
|
|
62462
62538
|
"signal",
|
|
62463
62539
|
"whatsapp",
|
|
62540
|
+
"telephony",
|
|
62464
62541
|
"imessage",
|
|
62465
62542
|
"msteams",
|
|
62466
62543
|
"bluebubbles",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pellux/goodvibes-tui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"description": "Terminal-native GoodVibes product for coding, operations, automation, knowledge, channels, and daemon-backed control-plane workflows.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/main.ts",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"build:windows": "bun build src/main.ts --compile --target=bun-windows-x64 --outfile dist/goodvibes-windows.exe",
|
|
43
43
|
"build:all-shell": "bun run build:linux-x64 && bun run build:linux-arm64 && bun run build:macos-x64 && bun run build:macos-arm64 && bun run build:windows",
|
|
44
44
|
"test": "bun run scripts/run-tests.ts",
|
|
45
|
+
"test:coverage": "bun run scripts/coverage-gate.ts",
|
|
45
46
|
"version": "bun run scripts/prebuild.ts",
|
|
46
47
|
"preinstall": "sh scripts/check-bun.sh",
|
|
47
48
|
"postinstall": "bun scripts/postinstall.js",
|
|
@@ -97,7 +98,7 @@
|
|
|
97
98
|
"@anthropic-ai/vertex-sdk": "^0.16.0",
|
|
98
99
|
"@ast-grep/napi": "^0.42.0",
|
|
99
100
|
"@aws/bedrock-token-generator": "^1.1.0",
|
|
100
|
-
"@pellux/goodvibes-sdk": "0.33.
|
|
101
|
+
"@pellux/goodvibes-sdk": "0.33.36",
|
|
101
102
|
"bash-language-server": "^5.6.0",
|
|
102
103
|
"fuse.js": "^7.1.0",
|
|
103
104
|
"graphql": "^16.13.2",
|
|
@@ -25,6 +25,7 @@ export class SpokenTurnController {
|
|
|
25
25
|
private readonly abortControllers = new Set<AbortController>();
|
|
26
26
|
private timer: ReturnType<typeof setInterval> | null = null;
|
|
27
27
|
private errorReportedForTurn = false;
|
|
28
|
+
private noPlayerNoticed = false;
|
|
28
29
|
private readonly voiceService: Pick<VoiceService, 'synthesizeStream'>;
|
|
29
30
|
private readonly configManager: Pick<ConfigManager, 'get'>;
|
|
30
31
|
private readonly player: StreamingAudioPlayer;
|
|
@@ -48,9 +49,14 @@ export class SpokenTurnController {
|
|
|
48
49
|
if (!normalized) return false;
|
|
49
50
|
this.stop();
|
|
50
51
|
if (!this.player.available) {
|
|
51
|
-
this.
|
|
52
|
+
if (!this.noPlayerNoticed) {
|
|
53
|
+
this.noPlayerNoticed = true;
|
|
54
|
+
this.notify?.('[TTS] Text response will continue, but live audio is unavailable. Install mpv or ffplay.');
|
|
55
|
+
}
|
|
52
56
|
return false;
|
|
53
57
|
}
|
|
58
|
+
// Reset the no-player notice if player becomes available again.
|
|
59
|
+
this.noPlayerNoticed = false;
|
|
54
60
|
this.pendingPrompt = normalized;
|
|
55
61
|
return true;
|
|
56
62
|
}
|
|
@@ -169,10 +175,15 @@ export class SpokenTurnController {
|
|
|
169
175
|
}
|
|
170
176
|
|
|
171
177
|
private synthesize(text: string, turnId: string, sequence: number, signal: AbortSignal): Promise<VoiceSynthesisStreamResult> {
|
|
178
|
+
// tts.speed: VoiceSynthesisRequest accepts speed (number | undefined).
|
|
179
|
+
// No ConfigKey for tts.speed exists in the current SDK schema — pending
|
|
180
|
+
// SDK schema addition. Speed is not threaded from config until that key
|
|
181
|
+
// is added. See docs/voice-and-live-tts.md § Speed.
|
|
172
182
|
return this.voiceService.synthesizeStream(readOptionalConfigString(this.configManager, 'tts.provider'), {
|
|
173
183
|
text,
|
|
174
184
|
voiceId: readOptionalConfigString(this.configManager, 'tts.voice'),
|
|
175
185
|
format: 'mp3',
|
|
186
|
+
speed: readOptionalConfigNumber(this.configManager, 'tts.speed'),
|
|
176
187
|
signal,
|
|
177
188
|
metadata: {
|
|
178
189
|
source: 'goodvibes-tui',
|
|
@@ -201,3 +212,22 @@ function readOptionalConfigString(configManager: Pick<ConfigManager, 'get'>, key
|
|
|
201
212
|
const value = String(configManager.get(key) ?? '').trim();
|
|
202
213
|
return value || undefined;
|
|
203
214
|
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* readOptionalConfigNumber — reads a numeric config value by key.
|
|
218
|
+
*
|
|
219
|
+
* `tts.speed` is not yet a ConfigKey in the SDK schema. This helper accepts
|
|
220
|
+
* a string key and casts it, returning undefined when the value is absent,
|
|
221
|
+
* zero, or not a finite positive number. Once `tts.speed` is added to the
|
|
222
|
+
* SDK schema the cast can be removed and the key typed statically.
|
|
223
|
+
*
|
|
224
|
+
* SDK handoff note: add { key: 'tts.speed', type: 'number', default: 1,
|
|
225
|
+
* description: '...' } to schema-domain-core.js and `tts: { ..., speed: 1 }`
|
|
226
|
+
* to DEFAULT_CONFIG.tts to complete this feature.
|
|
227
|
+
*/
|
|
228
|
+
function readOptionalConfigNumber(configManager: Pick<ConfigManager, 'get'>, key: string): number | undefined {
|
|
229
|
+
// Cast required: key is not yet a valid ConfigKey in the SDK schema.
|
|
230
|
+
const raw = configManager.get(key as ConfigKey);
|
|
231
|
+
const value = typeof raw === 'number' ? raw : parseFloat(String(raw ?? ''));
|
|
232
|
+
return isFinite(value) && value > 0 ? value : undefined;
|
|
233
|
+
}
|