@kodaris/krubble-app-components 1.0.102 → 1.0.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.
@@ -6051,6 +6051,10 @@
6051
6051
  stop() {
6052
6052
  this._handleStop();
6053
6053
  }
6054
+ /** Whether a turn is in flight — true from send until the stream ends. */
6055
+ isStreaming() {
6056
+ return this._isStreaming;
6057
+ }
6054
6058
  /** Open the chat panel. */
6055
6059
  open() {
6056
6060
  if (!this.opened) {
@@ -7321,122 +7325,6 @@
7321
7325
  }
7322
7326
  }
7323
7327
  // --- Render ---
7324
- /**
7325
- * The composer's controls: attach, the textarea, the mic, and send/stop.
7326
- *
7327
- * While dictating, only the mic swaps — to a stop button — so the textarea
7328
- * stays visible with the transcript streaming into it and send stays reachable.
7329
- */
7330
- _renderComposerControls() {
7331
- return b `
7332
- <button
7333
- class="input-plus"
7334
- @click=${this._handlePlusClick}
7335
- >+</button>
7336
- <textarea
7337
- class="input"
7338
- .value=${this._inputValue}
7339
- placeholder=${this.placeholder}
7340
- rows="1"
7341
- @input=${this._handleInputChange}
7342
- @keydown=${this._handleKeyDown}
7343
- @paste=${this._handlePaste}
7344
- ></textarea>
7345
- ${window.SpeechRecognition || window.webkitSpeechRecognition ? b `
7346
- ${this._isDictating ? b `
7347
- <button
7348
- class="mic-stop"
7349
- title="Stop dictation"
7350
- aria-label="Stop dictation"
7351
- @click=${this._handleMicClick}
7352
- >
7353
- <svg
7354
- xmlns="http://www.w3.org/2000/svg"
7355
- fill="currentColor"
7356
- viewBox="0 0 24 24"
7357
- class="mic-stop-icon"
7358
- aria-hidden="true"
7359
- >
7360
- <rect
7361
- x="6"
7362
- y="6"
7363
- width="12"
7364
- height="12"
7365
- rx="2"
7366
- />
7367
- </svg>
7368
- </button>
7369
- ` : b `
7370
- <button
7371
- class="mic"
7372
- title="Dictate a message"
7373
- aria-label="Dictate a message"
7374
- @click=${this._handleMicClick}
7375
- >
7376
- <svg
7377
- xmlns="http://www.w3.org/2000/svg"
7378
- viewBox="0 0 24 24"
7379
- fill="none"
7380
- stroke="currentColor"
7381
- stroke-width="1.75"
7382
- stroke-linecap="round"
7383
- stroke-linejoin="round"
7384
- class="mic-icon"
7385
- aria-hidden="true"
7386
- >
7387
- <path d="M12 15a3 3 0 0 0 3-3V6a3 3 0 0 0-6 0v6a3 3 0 0 0 3 3Z"/>
7388
- <path d="M19 11a7 7 0 0 1-14 0"/>
7389
- <path d="M12 18v3"/>
7390
- </svg>
7391
- </button>
7392
- `}
7393
- ` : A}
7394
- ${this._isStreaming ? b `
7395
- <button
7396
- class="stop"
7397
- @click=${this._handleStop}
7398
- title="Stop generating"
7399
- >
7400
- <svg
7401
- xmlns="http://www.w3.org/2000/svg"
7402
- fill="currentColor"
7403
- viewBox="0 0 24 24"
7404
- class="stop-icon"
7405
- >
7406
- <rect
7407
- x="6"
7408
- y="6"
7409
- width="12"
7410
- height="12"
7411
- rx="2"
7412
- />
7413
- </svg>
7414
- </button>
7415
- ` : b `
7416
- <button
7417
- class=${e({
7418
- 'send': true,
7419
- 'send--disabled': !this._inputValue.trim() && !this._pendingConversationFiles.length,
7420
- })}
7421
- @click=${this._handleSubmit}
7422
- title="Send message"
7423
- >
7424
- <svg
7425
- width="16"
7426
- height="16"
7427
- viewBox="0 0 24 24"
7428
- fill="none"
7429
- stroke="currentColor"
7430
- stroke-width="2.5"
7431
- stroke-linecap="round"
7432
- class="send-icon"
7433
- >
7434
- <path d="M12 19V5M5 12l7-7 7 7"/>
7435
- </svg>
7436
- </button>
7437
- `}
7438
- `;
7439
- }
7440
7328
  /** The `/` skill menu shown above the composer while typing a slash command. */
7441
7329
  _renderSkillMenu() {
7442
7330
  const skills = this._invocableSkills;
@@ -8143,7 +8031,112 @@
8143
8031
  />
8144
8032
  ${this._skillMenuOpened ? this._renderSkillMenu() : A}
8145
8033
  <div class="input-wrapper">
8146
- ${this._renderComposerControls()}
8034
+ <button
8035
+ class="input-plus"
8036
+ @click=${this._handlePlusClick}
8037
+ >+</button>
8038
+ <textarea
8039
+ class="input"
8040
+ .value=${this._inputValue}
8041
+ placeholder=${this.placeholder}
8042
+ rows="1"
8043
+ @input=${this._handleInputChange}
8044
+ @keydown=${this._handleKeyDown}
8045
+ @paste=${this._handlePaste}
8046
+ ></textarea>
8047
+ ${window.SpeechRecognition || window.webkitSpeechRecognition ? b `
8048
+ ${this._isDictating ? b `
8049
+ <button
8050
+ class="mic-stop"
8051
+ title="Stop dictation"
8052
+ aria-label="Stop dictation"
8053
+ @click=${this._handleMicClick}
8054
+ >
8055
+ <svg
8056
+ xmlns="http://www.w3.org/2000/svg"
8057
+ fill="currentColor"
8058
+ viewBox="0 0 24 24"
8059
+ class="mic-stop-icon"
8060
+ aria-hidden="true"
8061
+ >
8062
+ <rect
8063
+ x="6"
8064
+ y="6"
8065
+ width="12"
8066
+ height="12"
8067
+ rx="2"
8068
+ />
8069
+ </svg>
8070
+ </button>
8071
+ ` : b `
8072
+ <button
8073
+ class="mic"
8074
+ title="Dictate a message"
8075
+ aria-label="Dictate a message"
8076
+ @click=${this._handleMicClick}
8077
+ >
8078
+ <svg
8079
+ xmlns="http://www.w3.org/2000/svg"
8080
+ viewBox="0 0 24 24"
8081
+ fill="none"
8082
+ stroke="currentColor"
8083
+ stroke-width="1.75"
8084
+ stroke-linecap="round"
8085
+ stroke-linejoin="round"
8086
+ class="mic-icon"
8087
+ aria-hidden="true"
8088
+ >
8089
+ <path d="M12 15a3 3 0 0 0 3-3V6a3 3 0 0 0-6 0v6a3 3 0 0 0 3 3Z"/>
8090
+ <path d="M19 11a7 7 0 0 1-14 0"/>
8091
+ <path d="M12 18v3"/>
8092
+ </svg>
8093
+ </button>
8094
+ `}
8095
+ ` : A}
8096
+ ${this._isStreaming ? b `
8097
+ <button
8098
+ class="stop"
8099
+ @click=${this._handleStop}
8100
+ title="Stop generating"
8101
+ >
8102
+ <svg
8103
+ xmlns="http://www.w3.org/2000/svg"
8104
+ fill="currentColor"
8105
+ viewBox="0 0 24 24"
8106
+ class="stop-icon"
8107
+ >
8108
+ <rect
8109
+ x="6"
8110
+ y="6"
8111
+ width="12"
8112
+ height="12"
8113
+ rx="2"
8114
+ />
8115
+ </svg>
8116
+ </button>
8117
+ ` : b `
8118
+ <button
8119
+ class=${e({
8120
+ 'send': true,
8121
+ 'send--disabled': !this._inputValue.trim() && !this._pendingConversationFiles.length,
8122
+ })}
8123
+ @click=${this._handleSubmit}
8124
+ title="Send message"
8125
+ >
8126
+ <svg
8127
+ width="16"
8128
+ height="16"
8129
+ viewBox="0 0 24 24"
8130
+ fill="none"
8131
+ stroke="currentColor"
8132
+ stroke-width="2.5"
8133
+ stroke-linecap="round"
8134
+ class="send-icon"
8135
+ >
8136
+ <path d="M12 19V5M5 12l7-7 7 7"/>
8137
+ </svg>
8138
+ </button>
8139
+ `}
8147
8140
  </div>
8148
8141
  </div>
8149
8142
  ${this._skillBrowseOpened ? this._renderSkillBrowse() : A}