@elizaos/app-core 2.0.0-alpha.13 → 2.0.0-alpha.15

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 (125) hide show
  1. package/.turbo/turbo-build.log +0 -1
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js +26 -12
  4. package/dist/api/client.d.ts +3 -3
  5. package/dist/api/client.d.ts.map +1 -1
  6. package/dist/api/client.js +24 -13
  7. package/dist/bridge/plugin-bridge.d.ts.map +1 -1
  8. package/dist/components/AvatarLoader.d.ts +3 -1
  9. package/dist/components/AvatarLoader.d.ts.map +1 -1
  10. package/dist/components/AvatarLoader.js +4 -1
  11. package/dist/components/BscTradePanel.d.ts +1 -1
  12. package/dist/components/BscTradePanel.d.ts.map +1 -1
  13. package/dist/components/CharacterView.d.ts.map +1 -1
  14. package/dist/components/CharacterView.js +50 -15
  15. package/dist/components/ChatView.js +1 -1
  16. package/dist/components/ConfigPageView.d.ts.map +1 -1
  17. package/dist/components/ConfigPageView.js +9 -8
  18. package/dist/components/ConversationsSidebar.js +1 -1
  19. package/dist/components/CustomActionEditor.js +1 -1
  20. package/dist/components/FineTuningView.d.ts.map +1 -1
  21. package/dist/components/FineTuningView.js +2 -2
  22. package/dist/components/GlobalEmoteOverlay.d.ts.map +1 -1
  23. package/dist/components/GlobalEmoteOverlay.js +1 -1
  24. package/dist/components/HeartbeatsView.js +1 -1
  25. package/dist/components/LoadingScreen.d.ts.map +1 -1
  26. package/dist/components/LoadingScreen.js +38 -7
  27. package/dist/components/OnboardingWizard.js +1 -1
  28. package/dist/components/PluginsView.d.ts.map +1 -1
  29. package/dist/components/PluginsView.js +4 -1
  30. package/dist/components/ShellOverlays.js +1 -1
  31. package/dist/components/VoiceConfigView.d.ts.map +1 -1
  32. package/dist/components/VoiceConfigView.js +4 -2
  33. package/dist/components/avatar/VrmEngine.d.ts +2 -0
  34. package/dist/components/avatar/VrmEngine.d.ts.map +1 -1
  35. package/dist/components/avatar/VrmEngine.js +14 -6
  36. package/dist/components/companion/CompanionSceneHost.d.ts +1 -1
  37. package/dist/components/companion/CompanionSceneHost.d.ts.map +1 -1
  38. package/dist/components/companion/CompanionSceneHost.js +1 -1
  39. package/dist/components/index.d.ts +10 -10
  40. package/dist/components/index.d.ts.map +1 -1
  41. package/dist/components/index.js +10 -10
  42. package/dist/components/inventory/TokensTable.js +2 -2
  43. package/dist/components/onboarding/IdentityStep.d.ts.map +1 -1
  44. package/dist/components/onboarding/IdentityStep.js +1 -1
  45. package/dist/components/shared/ShellHeaderControls.js +1 -1
  46. package/dist/config/config-field.d.ts.map +1 -1
  47. package/dist/config/config-field.js +7 -8
  48. package/dist/config/index.d.ts +1 -1
  49. package/dist/config/index.d.ts.map +1 -1
  50. package/dist/config/index.js +1 -1
  51. package/dist/hooks/useVoiceChat.d.ts.map +1 -1
  52. package/dist/hooks/useVoiceChat.js +3 -1
  53. package/dist/i18n/locales/en.json +1192 -1192
  54. package/dist/i18n/locales/es.json +1192 -1192
  55. package/dist/i18n/locales/ko.json +1192 -1192
  56. package/dist/i18n/locales/pt.json +1192 -1192
  57. package/dist/i18n/locales/zh-CN.json +1192 -1192
  58. package/dist/package.json +181 -0
  59. package/dist/platform/lifo.d.ts.map +1 -1
  60. package/dist/platform/lifo.js +4 -1
  61. package/dist/state/AppContext.d.ts.map +1 -1
  62. package/dist/state/AppContext.js +23 -6
  63. package/dist/state/internal.d.ts +1 -1
  64. package/dist/state/internal.d.ts.map +1 -1
  65. package/dist/state/internal.js +1 -1
  66. package/dist/state/parsers.d.ts.map +1 -1
  67. package/dist/state/parsers.js +3 -2
  68. package/dist/state/persistence.js +1 -1
  69. package/dist/styles/anime.css +6324 -0
  70. package/dist/styles/base.css +196 -0
  71. package/dist/styles/onboarding-game.css +738 -0
  72. package/dist/styles/styles.css +2087 -0
  73. package/dist/styles/xterm.css +241 -0
  74. package/package.json +4 -4
  75. package/src/App.tsx +35 -14
  76. package/src/ambient.d.ts +5 -5
  77. package/src/api/client.ts +36 -23
  78. package/src/bridge/plugin-bridge.ts +1 -1
  79. package/src/components/AvatarLoader.tsx +6 -0
  80. package/src/components/BscTradePanel.tsx +1 -1
  81. package/src/components/CharacterView.tsx +536 -367
  82. package/src/components/ChatView.tsx +3 -3
  83. package/src/components/ConfigPageView.tsx +9 -8
  84. package/src/components/ConversationsSidebar.tsx +1 -1
  85. package/src/components/CustomActionEditor.tsx +6 -6
  86. package/src/components/FineTuningView.tsx +6 -3
  87. package/src/components/GlobalEmoteOverlay.tsx +1 -4
  88. package/src/components/HeartbeatsView.tsx +1 -1
  89. package/src/components/InventoryView.tsx +2 -2
  90. package/src/components/LoadingScreen.tsx +39 -6
  91. package/src/components/OnboardingWizard.tsx +1 -1
  92. package/src/components/PluginsView.tsx +6 -0
  93. package/src/components/ShellOverlays.tsx +1 -1
  94. package/src/components/VoiceConfigView.tsx +4 -5
  95. package/src/components/avatar/VrmEngine.ts +25 -7
  96. package/src/components/companion/CompanionSceneHost.tsx +5 -1
  97. package/src/components/index.ts +10 -10
  98. package/src/components/inventory/TokensTable.tsx +2 -2
  99. package/src/components/onboarding/IdentityStep.tsx +9 -13
  100. package/src/components/shared/ShellHeaderControls.tsx +1 -1
  101. package/src/config/config-field.tsx +7 -8
  102. package/src/config/index.ts +3 -3
  103. package/src/hooks/useVoiceChat.ts +5 -3
  104. package/src/platform/lifo.ts +14 -4
  105. package/src/state/AppContext.tsx +24 -1
  106. package/src/state/internal.ts +6 -6
  107. package/src/state/parsers.ts +4 -3
  108. package/src/state/persistence.ts +1 -1
  109. package/test/app/MessageContent.test.tsx +42 -0
  110. package/test/app/bug-report-modal.test.tsx +3 -3
  111. package/test/app/chat-view.test.tsx +3 -3
  112. package/test/app/cloud-login-lock.test.ts +3 -2
  113. package/test/app/custom-actions-smoke.test.ts +3 -3
  114. package/test/app/onboarding-language.test.tsx +3 -3
  115. package/test/app/pages-navigation-smoke.e2e.test.ts +13 -8
  116. package/test/app/plugin-bridge.test.ts +1 -1
  117. package/test/app/provider-dropdown-default.test.tsx +2 -4
  118. package/test/app/restart-banner.test.tsx +3 -3
  119. package/test/app/shell-mode-switching.e2e.test.ts +6 -6
  120. package/test/app/shell-mode-tab-memory.test.tsx +1 -1
  121. package/test/app/startup-chat.e2e.test.ts +3 -3
  122. package/test/app/triggers-view.e2e.test.ts +3 -2
  123. package/test/app/wallet-api-save-lock.test.ts +2 -1
  124. package/test/utils/assistant-text.test.ts +64 -0
  125. package/test/utils/streaming-text.test.ts +89 -0
@@ -0,0 +1,181 @@
1
+ {
2
+ "name": "@elizaos/app-core",
3
+ "version": "2.0.0-alpha.15",
4
+ "description": "Shared application core for elizaOS shells and white-label apps.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "homepage": "https://github.com/elizaOS/eliza",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/elizaOS/eliza.git",
11
+ "directory": "packages/app-core"
12
+ },
13
+ "keywords": [
14
+ "elizaos",
15
+ "app-core",
16
+ "react",
17
+ "shell"
18
+ ],
19
+ "main": "./index.js",
20
+ "exports": {
21
+ ".": {
22
+ "types": "./index.d.ts",
23
+ "import": "./index.js",
24
+ "default": "./index.js"
25
+ },
26
+ "./api": {
27
+ "types": "./api/index.d.ts",
28
+ "import": "./api/index.js",
29
+ "default": "./api/index.js"
30
+ },
31
+ "./config": {
32
+ "types": "./config/index.d.ts",
33
+ "import": "./config/index.js",
34
+ "default": "./config/index.js"
35
+ },
36
+ "./types": {
37
+ "types": "./types/index.d.ts",
38
+ "import": "./types/index.js",
39
+ "default": "./types/index.js"
40
+ },
41
+ "./events": {
42
+ "types": "./events/index.d.ts",
43
+ "import": "./events/index.js",
44
+ "default": "./events/index.js"
45
+ },
46
+ "./i18n": {
47
+ "types": "./i18n/index.d.ts",
48
+ "import": "./i18n/index.js",
49
+ "default": "./i18n/index.js"
50
+ },
51
+ "./navigation": {
52
+ "types": "./navigation/index.d.ts",
53
+ "import": "./navigation/index.js",
54
+ "default": "./navigation/index.js"
55
+ },
56
+ "./hooks": {
57
+ "types": "./hooks/index.d.ts",
58
+ "import": "./hooks/index.js",
59
+ "default": "./hooks/index.js"
60
+ },
61
+ "./bridge": {
62
+ "types": "./bridge/index.d.ts",
63
+ "import": "./bridge/index.js",
64
+ "default": "./bridge/index.js"
65
+ },
66
+ "./bridge/electrobun-rpc": {
67
+ "types": "./bridge/electrobun-rpc.d.ts",
68
+ "import": "./bridge/electrobun-rpc.js",
69
+ "default": "./bridge/electrobun-rpc.js"
70
+ },
71
+ "./bridge/electrobun-runtime": {
72
+ "types": "./bridge/electrobun-runtime.d.ts",
73
+ "import": "./bridge/electrobun-runtime.js",
74
+ "default": "./bridge/electrobun-runtime.js"
75
+ },
76
+ "./state": {
77
+ "types": "./state/index.d.ts",
78
+ "import": "./state/index.js",
79
+ "default": "./state/index.js"
80
+ },
81
+ "./components": {
82
+ "types": "./components/index.d.ts",
83
+ "import": "./components/index.js",
84
+ "default": "./components/index.js"
85
+ },
86
+ "./components/*": {
87
+ "types": "./components/*.d.ts",
88
+ "import": "./components/*.js",
89
+ "default": "./components/*.js"
90
+ },
91
+ "./components/ChatAvatar": {
92
+ "types": "./components/ChatAvatar.d.ts",
93
+ "import": "./components/ChatAvatar.js",
94
+ "default": "./components/ChatAvatar.js"
95
+ },
96
+ "./components/CompanionSceneHost": {
97
+ "types": "./components/CompanionSceneHost.d.ts",
98
+ "import": "./components/CompanionSceneHost.js",
99
+ "default": "./components/CompanionSceneHost.js"
100
+ },
101
+ "./components/VrmStage": {
102
+ "types": "./components/VrmStage.d.ts",
103
+ "import": "./components/VrmStage.js",
104
+ "default": "./components/VrmStage.js"
105
+ },
106
+ "./utils": {
107
+ "types": "./utils/index.d.ts",
108
+ "import": "./utils/index.js",
109
+ "default": "./utils/index.js"
110
+ },
111
+ "./voice": {
112
+ "types": "./voice/index.d.ts",
113
+ "import": "./voice/index.js",
114
+ "default": "./voice/index.js"
115
+ },
116
+ "./autonomy": {
117
+ "types": "./autonomy/index.d.ts",
118
+ "import": "./autonomy/index.js",
119
+ "default": "./autonomy/index.js"
120
+ },
121
+ "./chat": {
122
+ "types": "./chat/index.d.ts",
123
+ "import": "./chat/index.js",
124
+ "default": "./chat/index.js"
125
+ },
126
+ "./platform": {
127
+ "types": "./platform/index.d.ts",
128
+ "import": "./platform/index.js",
129
+ "default": "./platform/index.js"
130
+ },
131
+ "./coding": {
132
+ "types": "./coding/index.d.ts",
133
+ "import": "./coding/index.js",
134
+ "default": "./coding/index.js"
135
+ },
136
+ "./onboarding-config": {
137
+ "types": "./onboarding-config.d.ts",
138
+ "import": "./onboarding-config.js",
139
+ "default": "./onboarding-config.js"
140
+ },
141
+ "./providers": {
142
+ "types": "./providers/index.d.ts",
143
+ "import": "./providers/index.js",
144
+ "default": "./providers/index.js"
145
+ },
146
+ "./actions": {
147
+ "types": "./actions/index.d.ts",
148
+ "import": "./actions/index.js",
149
+ "default": "./actions/index.js"
150
+ },
151
+ "./styles/base.css": "./styles/base.css",
152
+ "./styles/xterm.css": "./styles/xterm.css",
153
+ "./styles/anime.css": "./styles/anime.css",
154
+ "./styles/onboarding-game.css": "./styles/onboarding-game.css",
155
+ "./styles/styles.css": "./styles/styles.css",
156
+ "./package.json": "./package.json"
157
+ },
158
+ "peerDependencies": {
159
+ "react": "^19.0.0",
160
+ "react-dom": "^19.0.0"
161
+ },
162
+ "dependencies": {
163
+ "@capacitor/core": "8.0.2",
164
+ "@capacitor/haptics": "8.0.0",
165
+ "@capacitor/keyboard": "8.0.0",
166
+ "@capacitor/preferences": "^8.0.1",
167
+ "@elizaos/autonomous": "^2.0.0-alpha.15",
168
+ "@elizaos/ui": "^2.0.0-alpha.15",
169
+ "@lifo-sh/core": "0.4.4",
170
+ "@lifo-sh/ui": "0.4.2",
171
+ "@pixiv/three-vrm": "^3.4.5",
172
+ "@sparkjsdev/spark": "^0.1.10",
173
+ "lucide-react": "^0.575.0",
174
+ "three": "^0.182.0",
175
+ "zod": "^4.3.6"
176
+ },
177
+ "publishConfig": {
178
+ "access": "public"
179
+ },
180
+ "types": "./index.d.ts"
181
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"lifo.d.ts","sourceRoot":"","sources":["../../src/platform/lifo.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAE3D,KAAK,YAAY,GAAG;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,IAAI,IAAI,CAAC;IAChB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE;QACL,OAAO,CACL,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;YACR,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;YACnC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;SACpC,GACA,OAAO,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAClC,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IACjC,IAAI,EACA,WAAW,GACX,eAAe,GACf,eAAe,GACf,QAAQ,GACR,QAAQ,GACR,cAAc,GACd,eAAe,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAsBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAI3E;AAED,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,YAAY,GACzB,MAAM,GAAG,IAAI,CAGf;AAED,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAE9E;AAED,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,YAAY,GACzB,MAAM,GAAG,IAAI,CAGf;AAED,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,SAAS,EACT,UAAoB,GACrB,EAAE,sBAAsB,GAAG,MAAM,CAQjC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAU9C;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAIvE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAQzE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AA8CD,wBAAsB,iBAAiB,CACrC,eAAe,EAAE,WAAW,EAC5B,eAAe,EAAE,WAAW,GAC3B,OAAO,CAAC,WAAW,CAAC,CAqBtB"}
1
+ {"version":3,"file":"lifo.d.ts","sourceRoot":"","sources":["../../src/platform/lifo.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAE3D,KAAK,YAAY,GAAG;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,IAAI,IAAI,CAAC;IAChB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE;QACL,OAAO,CACL,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;YACR,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;YACnC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;SACpC,GACA,OAAO,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAClC,CAAC;CACH;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC;IACjC,IAAI,EACA,WAAW,GACX,eAAe,GACf,eAAe,GACf,QAAQ,GACR,QAAQ,GACR,cAAc,GACd,eAAe,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAsBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAS3E;AAED,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,YAAY,GACzB,MAAM,GAAG,IAAI,CAGf;AAED,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,YAAY,GACzB,OAAO,CAET;AAED,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,YAAY,GACzB,MAAM,GAAG,IAAI,CAGf;AAED,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,SAAS,EACT,UAAoB,GACrB,EAAE,sBAAsB,GAAG,MAAM,CAQjC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAY9C;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAIvE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAQzE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AA8CD,wBAAsB,iBAAiB,CACrC,eAAe,EAAE,WAAW,EAC5B,eAAe,EAAE,WAAW,GAC3B,OAAO,CAAC,WAAW,CAAC,CAsBtB"}
@@ -19,7 +19,10 @@ export function isLifoPopoutValue(value) {
19
19
  if (typeof value !== "string")
20
20
  return false;
21
21
  const normalized = value.trim().toLowerCase();
22
- return normalized === "" || normalized === "1" || normalized === "true" || normalized === "lifo";
22
+ return (normalized === "" ||
23
+ normalized === "1" ||
24
+ normalized === "true" ||
25
+ normalized === "lifo");
23
26
  }
24
27
  export function getPopoutValueFromLocation(locationLike) {
25
28
  const { search, hash } = parseLocationParams(locationLike);
@@ -1 +1 @@
1
- {"version":3,"file":"AppContext.d.ts","sourceRoot":"","sources":["../../src/state/AppContext.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAuKf,OAAO,EACL,KAAK,YAAY,EACjB,sBAAsB,EACtB,YAAY,EACZ,kCAAkC,EAClC,KAAK,UAAU,EACf,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,YAAY,EACZ,cAAc,EACd,KAAK,aAAa,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,0BAA0B,EAC/B,yBAAyB,EACzB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,8BAA8B,EACnC,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,6BAA6B,EAC7B,oBAAoB,EACpB,gBAAgB,EAChB,4BAA4B,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,4BAA4B,EAC5B,qBAAqB,EACrB,6BAA6B,EAC7B,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,6BAA6B,EAC7B,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,WAAW,EACX,0BAA0B,EAC1B,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,MAAM,EACN,SAAS,GACV,MAAM,YAAY,CAAC;AAkKpB,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CA8zKhE"}
1
+ {"version":3,"file":"AppContext.d.ts","sourceRoot":"","sources":["../../src/state/AppContext.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAsKf,OAAO,EACL,KAAK,YAAY,EACjB,sBAAsB,EACtB,YAAY,EACZ,kCAAkC,EAClC,KAAK,UAAU,EACf,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,YAAY,EACZ,cAAc,EACd,KAAK,aAAa,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,0BAA0B,EAC/B,yBAAyB,EACzB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,8BAA8B,EACnC,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,yBAAyB,EACzB,6BAA6B,EAC7B,oBAAoB,EACpB,gBAAgB,EAChB,4BAA4B,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,4BAA4B,EAC5B,qBAAqB,EACrB,6BAA6B,EAC7B,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,6BAA6B,EAC7B,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,WAAW,EACX,0BAA0B,EAC1B,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,MAAM,EACN,SAAS,GACV,MAAM,YAAY,CAAC;AAkKpB,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAq1KhE"}
@@ -1,9 +1,4 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /**
3
- * Global application state via React Context.
4
- *
5
- * Children access state and actions through the useApp() hook.
6
- */
7
2
  import { useCallback, useEffect, useMemo, useRef, useState, } from "react";
8
3
  import { prepareDraftForSave } from "../actions/character";
9
4
  import { client, MiladyClient, } from "../api";
@@ -480,6 +475,8 @@ export function AppProvider({ children }) {
480
475
  const [configText, setConfigText] = useState("");
481
476
  // --- Refs for timers ---
482
477
  const actionNoticeTimer = useRef(null);
478
+ /** Session-scoped set of notice texts that have been shown with once=true. */
479
+ const shownOnceNotices = useRef(new Set());
483
480
  const elizaCloudPollInterval = useRef(null);
484
481
  const elizaCloudLoginPollTimer = useRef(null);
485
482
  const prevAgentStateRef = useRef(null);
@@ -531,7 +528,11 @@ export function AppProvider({ children }) {
531
528
  const { modalProps } = useConfirm();
532
529
  const { prompt: promptModal, modalProps: promptModalProps } = usePrompt();
533
530
  // ── Action notice ──────────────────────────────────────────────────
534
- const setActionNotice = useCallback((text, tone = "info", ttlMs = 2800) => {
531
+ const setActionNotice = useCallback((text, tone = "info", ttlMs = 2800, once = false) => {
532
+ if (once && shownOnceNotices.current.has(text))
533
+ return;
534
+ if (once)
535
+ shownOnceNotices.current.add(text);
535
536
  setActionNoticeState({ tone, text });
536
537
  if (actionNoticeTimer.current != null) {
537
538
  window.clearTimeout(actionNoticeTimer.current);
@@ -2208,6 +2209,22 @@ export function AppProvider({ children }) {
2208
2209
  if (id === activeConversationId &&
2209
2210
  conversationMessagesRef.current.length > 0)
2210
2211
  return;
2212
+ // Clean up empty conversations: if the previous conversation has only
2213
+ // system/greeting messages and no user messages, delete it silently.
2214
+ const prevId = activeConversationId;
2215
+ if (prevId && prevId !== id) {
2216
+ const prevMessages = conversationMessagesRef.current;
2217
+ const hasUserMessage = prevMessages.some((m) => m.role === "user");
2218
+ if (!hasUserMessage && prevMessages.length <= 1) {
2219
+ void client.deleteConversation(prevId).catch(() => { });
2220
+ setConversations((prev) => prev.filter((c) => c.id !== prevId));
2221
+ setUnreadConversations((prev) => {
2222
+ const next = new Set(prev);
2223
+ next.delete(prevId);
2224
+ return next;
2225
+ });
2226
+ }
2227
+ }
2211
2228
  const previousActive = activeConversationId;
2212
2229
  setActiveConversationId(id);
2213
2230
  activeConversationIdRef.current = id;
@@ -1,5 +1,5 @@
1
- export { asApiLikeError, computeStreamingDelta, formatSearchBullet, formatStartupErrorDetail, mergeStreamingText, normalizeCustomActionName, normalizeStreamComparisonText, parseAgentStartupDiagnostics, parseAgentStatusEvent, parseConversationMessageEvent, parseCustomActionParams, parseProactiveMessageEvent, parseSlashCommandInput, parseStreamEventEnvelopeEvent, shouldApplyFinalStreamText, } from "./parsers";
2
1
  export { deriveOnboardingResumeConnection, deriveOnboardingResumeFields, hasPartialOnboardingConnectionConfig, inferOnboardingResumeStep, } from "./onboarding-resume";
2
+ export { asApiLikeError, computeStreamingDelta, formatSearchBullet, formatStartupErrorDetail, mergeStreamingText, normalizeCustomActionName, normalizeStreamComparisonText, parseAgentStartupDiagnostics, parseAgentStatusEvent, parseConversationMessageEvent, parseCustomActionParams, parseProactiveMessageEvent, parseSlashCommandInput, parseStreamEventEnvelopeEvent, shouldApplyFinalStreamText, } from "./parsers";
3
3
  export { applyUiTheme, clearPersistedOnboardingStep, loadActiveConversationId, loadAvatarIndex, loadChatAvatarVisible, loadChatMode, loadChatVoiceMuted, loadCompanionMessageCutoffTs, loadLastNativeTab, loadPersistedOnboardingStep, loadUiLanguage, loadUiShellMode, loadUiTheme, normalizeUiShellMode, normalizeUiTheme, saveActiveConversationId, saveAvatarIndex, saveChatAvatarVisible, saveChatMode, saveChatVoiceMuted, saveCompanionMessageCutoffTs, saveLastNativeTab, saveOnboardingStep, saveUiLanguage, saveUiShellMode, saveUiTheme, type UiTheme, } from "./persistence";
4
4
  export { type ActionNotice, AGENT_READY_TIMEOUT_MS, AGENT_STATES, AGENT_TRANSFER_MIN_PASSWORD_LENGTH, type AppActions, type AppContextValue, type AppState, type ChatTurnUsage, type GamePostMessageAuthPayload, LIFECYCLE_MESSAGES, type LifecycleAction, type LoadConversationMessagesResult, ONBOARDING_PERMISSION_LABELS, type OnboardingNextOptions, type OnboardingStep, type ShellView, type SlashCommandInput, type StartupErrorReason, type StartupErrorState, type StartupPhase, type UiShellMode, } from "./types";
5
5
  export { AppContext, useApp } from "./useApp";
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/state/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,6BAA6B,EAC7B,4BAA4B,EAC5B,qBAAqB,EACrB,6BAA6B,EAC7B,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gCAAgC,EAChC,4BAA4B,EAC5B,oCAAoC,EACpC,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,EACZ,4BAA4B,EAC5B,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,4BAA4B,EAC5B,iBAAiB,EACjB,2BAA2B,EAC3B,cAAc,EACd,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,4BAA4B,EAC5B,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,WAAW,EACX,KAAK,OAAO,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,YAAY,EACjB,sBAAsB,EACtB,YAAY,EACZ,kCAAkC,EAClC,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,0BAA0B,EAC/B,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,8BAA8B,EACnC,4BAA4B,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,GACV,MAAM,OAAO,CAAC"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/state/internal.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,4BAA4B,EAC5B,oCAAoC,EACpC,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,6BAA6B,EAC7B,4BAA4B,EAC5B,qBAAqB,EACrB,6BAA6B,EAC7B,uBAAuB,EACvB,0BAA0B,EAC1B,sBAAsB,EACtB,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,YAAY,EACZ,4BAA4B,EAC5B,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,4BAA4B,EAC5B,iBAAiB,EACjB,2BAA2B,EAC3B,cAAc,EACd,eAAe,EACf,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,YAAY,EACZ,kBAAkB,EAClB,4BAA4B,EAC5B,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,WAAW,EACX,KAAK,OAAO,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,YAAY,EACjB,sBAAsB,EACtB,YAAY,EACZ,kCAAkC,EAClC,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,0BAA0B,EAC/B,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,8BAA8B,EACnC,4BAA4B,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,WAAW,GACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,GACV,MAAM,OAAO,CAAC"}
@@ -1,5 +1,5 @@
1
- export { asApiLikeError, computeStreamingDelta, formatSearchBullet, formatStartupErrorDetail, mergeStreamingText, normalizeCustomActionName, normalizeStreamComparisonText, parseAgentStartupDiagnostics, parseAgentStatusEvent, parseConversationMessageEvent, parseCustomActionParams, parseProactiveMessageEvent, parseSlashCommandInput, parseStreamEventEnvelopeEvent, shouldApplyFinalStreamText, } from "./parsers";
2
1
  export { deriveOnboardingResumeConnection, deriveOnboardingResumeFields, hasPartialOnboardingConnectionConfig, inferOnboardingResumeStep, } from "./onboarding-resume";
2
+ export { asApiLikeError, computeStreamingDelta, formatSearchBullet, formatStartupErrorDetail, mergeStreamingText, normalizeCustomActionName, normalizeStreamComparisonText, parseAgentStartupDiagnostics, parseAgentStatusEvent, parseConversationMessageEvent, parseCustomActionParams, parseProactiveMessageEvent, parseSlashCommandInput, parseStreamEventEnvelopeEvent, shouldApplyFinalStreamText, } from "./parsers";
3
3
  export { applyUiTheme, clearPersistedOnboardingStep, loadActiveConversationId, loadAvatarIndex, loadChatAvatarVisible, loadChatMode, loadChatVoiceMuted, loadCompanionMessageCutoffTs, loadLastNativeTab, loadPersistedOnboardingStep, loadUiLanguage, loadUiShellMode, loadUiTheme, normalizeUiShellMode, normalizeUiTheme, saveActiveConversationId, saveAvatarIndex, saveChatAvatarVisible, saveChatMode, saveChatVoiceMuted, saveCompanionMessageCutoffTs, saveLastNativeTab, saveOnboardingStep, saveUiLanguage, saveUiShellMode, saveUiTheme, } from "./persistence";
4
4
  export { AGENT_READY_TIMEOUT_MS, AGENT_STATES, AGENT_TRANSFER_MIN_PASSWORD_LENGTH, LIFECYCLE_MESSAGES, ONBOARDING_PERMISSION_LABELS, } from "./types";
5
5
  export { AppContext, useApp } from "./useApp";
@@ -1 +1 @@
1
- {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/state/parsers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,WAAW,GAAG,IAAI,CAuBpB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,GACb,uBAAuB,GAAG,SAAS,CAcrC;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,mBAAmB,GAAG,IAAI,CA+B5B;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,GACb,mBAAmB,GAAG,IAAI,CAwB5B;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,GAAG,IAAI,CAMjE;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAQT;AAmBD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAY7E;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAK/D;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,MAAM,GACd;IACD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CA2DA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAGzE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAiBhE;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAazE"}
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/state/parsers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EACvB,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,WAAW,GAAG,IAAI,CAuBpB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,GACb,uBAAuB,GAAG,SAAS,CAcrC;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,mBAAmB,GAAG,IAAI,CA+B5B;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,GACb,mBAAmB,GAAG,IAAI,CAwB5B;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B;IAAE,cAAc,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,GAAG,IAAI,CAMjE;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAQT;AAoBD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAY7E;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAK/D;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,MAAM,GACd;IACD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CA2DA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAGzE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAiBhE;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAazE"}
@@ -136,9 +136,10 @@ function normalizeSlashCommandName(name) {
136
136
  function splitCommandArgs(text) {
137
137
  const parts = [];
138
138
  const regex = /[^\s"']+|"([^"]*)"|'([^']*)'/g;
139
- let match;
140
- while ((match = regex.exec(text)) !== null) {
139
+ let match = regex.exec(text);
140
+ while (match !== null) {
141
141
  parts.push(match[1] || match[2] || match[0]);
142
+ match = regex.exec(text);
142
143
  }
143
144
  return parts;
144
145
  }
@@ -261,7 +261,7 @@ export function loadActiveConversationId() {
261
261
  }
262
262
  export function saveActiveConversationId(value) {
263
263
  try {
264
- if (value && value.trim()) {
264
+ if (value?.trim()) {
265
265
  localStorage.setItem(ACTIVE_CONVERSATION_ID_KEY, value);
266
266
  return;
267
267
  }