@kvman/kvcoder 0.1.12 → 0.1.14

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 (149) hide show
  1. package/dist/api.d.ts +40 -0
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/artifacts/delete-artifact.d.ts +9 -0
  4. package/dist/artifacts/delete-artifact.d.ts.map +1 -0
  5. package/dist/artifacts/delete-artifact.js +40 -0
  6. package/dist/artifacts/delete-artifact.js.map +1 -0
  7. package/dist/artifacts/served-artifacts.d.ts +9 -0
  8. package/dist/artifacts/served-artifacts.d.ts.map +1 -0
  9. package/dist/artifacts/served-artifacts.js +45 -0
  10. package/dist/artifacts/served-artifacts.js.map +1 -0
  11. package/dist/calls/run-tool.d.ts +7 -2
  12. package/dist/calls/run-tool.d.ts.map +1 -1
  13. package/dist/calls/run-tool.js +37 -3
  14. package/dist/calls/run-tool.js.map +1 -1
  15. package/dist/connectors/artifact.d.ts +9 -1
  16. package/dist/connectors/artifact.d.ts.map +1 -1
  17. package/dist/connectors/artifact.js +15 -3
  18. package/dist/connectors/artifact.js.map +1 -1
  19. package/dist/connectors/background.d.ts.map +1 -1
  20. package/dist/connectors/background.js +5 -2
  21. package/dist/connectors/background.js.map +1 -1
  22. package/dist/connectors/builtin-connectors.d.ts +9 -0
  23. package/dist/connectors/builtin-connectors.d.ts.map +1 -1
  24. package/dist/connectors/delegate.d.ts.map +1 -1
  25. package/dist/connectors/delegate.js +3 -1
  26. package/dist/connectors/delegate.js.map +1 -1
  27. package/dist/connectors/execution-map.d.ts +2 -1
  28. package/dist/connectors/execution-map.d.ts.map +1 -1
  29. package/dist/connectors/execution-map.js +4 -3
  30. package/dist/connectors/execution-map.js.map +1 -1
  31. package/dist/connectors/fs.d.ts.map +1 -1
  32. package/dist/connectors/fs.js +3 -11
  33. package/dist/connectors/fs.js.map +1 -1
  34. package/dist/delegate/continue-helper.d.ts +6 -3
  35. package/dist/delegate/continue-helper.d.ts.map +1 -1
  36. package/dist/delegate/continue-helper.js +14 -10
  37. package/dist/delegate/continue-helper.js.map +1 -1
  38. package/dist/delegate/workers.d.ts +1 -1
  39. package/dist/delegate/workers.d.ts.map +1 -1
  40. package/dist/delegate/workers.js +13 -2
  41. package/dist/delegate/workers.js.map +1 -1
  42. package/dist/files/file-change.d.ts.map +1 -1
  43. package/dist/files/file-change.js +5 -3
  44. package/dist/files/file-change.js.map +1 -1
  45. package/dist/files/register-changes.d.ts.map +1 -1
  46. package/dist/files/register-changes.js +9 -3
  47. package/dist/files/register-changes.js.map +1 -1
  48. package/dist/files/register-preview.d.ts +3 -0
  49. package/dist/files/register-preview.d.ts.map +1 -0
  50. package/dist/files/register-preview.js +32 -0
  51. package/dist/files/register-preview.js.map +1 -0
  52. package/dist/files/search-text.d.ts +1 -0
  53. package/dist/files/search-text.d.ts.map +1 -1
  54. package/dist/files/search-text.js +11 -7
  55. package/dist/files/search-text.js.map +1 -1
  56. package/dist/files/utf8-text.d.ts +2 -0
  57. package/dist/files/utf8-text.d.ts.map +1 -0
  58. package/dist/files/utf8-text.js +12 -0
  59. package/dist/files/utf8-text.js.map +1 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +2 -0
  62. package/dist/index.js.map +1 -1
  63. package/dist/jobs/job-rows.d.ts +3 -4
  64. package/dist/jobs/job-rows.d.ts.map +1 -1
  65. package/dist/jobs/job-rows.js +5 -7
  66. package/dist/jobs/job-rows.js.map +1 -1
  67. package/dist/jobs/process-handlers.js +2 -2
  68. package/dist/jobs/process-handlers.js.map +1 -1
  69. package/dist/jobs/process-report.d.ts +3 -1
  70. package/dist/jobs/process-report.d.ts.map +1 -1
  71. package/dist/jobs/process-report.js +19 -7
  72. package/dist/jobs/process-report.js.map +1 -1
  73. package/dist/jobs/process-run.d.ts +10 -2
  74. package/dist/jobs/process-run.d.ts.map +1 -1
  75. package/dist/jobs/process-run.js +10 -6
  76. package/dist/jobs/process-run.js.map +1 -1
  77. package/dist/jobs/process-text.d.ts +2 -0
  78. package/dist/jobs/process-text.d.ts.map +1 -1
  79. package/dist/jobs/process-text.js +2 -0
  80. package/dist/jobs/process-text.js.map +1 -1
  81. package/dist/jobs/register-jobs.d.ts.map +1 -1
  82. package/dist/jobs/register-jobs.js +29 -1
  83. package/dist/jobs/register-jobs.js.map +1 -1
  84. package/dist/maps/map-rules.d.ts +1 -0
  85. package/dist/maps/map-rules.d.ts.map +1 -1
  86. package/dist/maps/map-rules.js +1 -1
  87. package/dist/maps/map-rules.js.map +1 -1
  88. package/dist/mcp/tools.d.ts +3 -1
  89. package/dist/mcp/tools.d.ts.map +1 -1
  90. package/dist/mcp/tools.js +19 -2
  91. package/dist/mcp/tools.js.map +1 -1
  92. package/dist/messages/receive-message.d.ts.map +1 -1
  93. package/dist/messages/receive-message.js +2 -1
  94. package/dist/messages/receive-message.js.map +1 -1
  95. package/dist/prompt/working-method.d.ts.map +1 -1
  96. package/dist/prompt/working-method.js +13 -6
  97. package/dist/prompt/working-method.js.map +1 -1
  98. package/dist/register-settings.d.ts.map +1 -1
  99. package/dist/register-settings.js +2 -0
  100. package/dist/register-settings.js.map +1 -1
  101. package/dist/schemas/records.d.ts +1 -0
  102. package/dist/schemas/records.d.ts.map +1 -1
  103. package/dist/schemas/records.js +2 -1
  104. package/dist/schemas/records.js.map +1 -1
  105. package/dist/sessions/placeholder-title.d.ts +3 -0
  106. package/dist/sessions/placeholder-title.d.ts.map +1 -0
  107. package/dist/sessions/placeholder-title.js +19 -0
  108. package/dist/sessions/placeholder-title.js.map +1 -0
  109. package/dist/sessions/register-lifecycle.d.ts.map +1 -1
  110. package/dist/sessions/register-lifecycle.js +10 -2
  111. package/dist/sessions/register-lifecycle.js.map +1 -1
  112. package/dist/store/collections.d.ts +2 -0
  113. package/dist/store/collections.d.ts.map +1 -1
  114. package/dist/turns/clear-results.d.ts.map +1 -1
  115. package/dist/turns/clear-results.js +9 -5
  116. package/dist/turns/clear-results.js.map +1 -1
  117. package/dist/turns/compaction.d.ts.map +1 -1
  118. package/dist/turns/compaction.js +2 -1
  119. package/dist/turns/compaction.js.map +1 -1
  120. package/dist/turns/helper-calls.js +1 -1
  121. package/dist/turns/helper-calls.js.map +1 -1
  122. package/dist/turns/model-retry.d.ts +1 -1
  123. package/dist/turns/model-retry.d.ts.map +1 -1
  124. package/dist/turns/model-retry.js +3 -2
  125. package/dist/turns/model-retry.js.map +1 -1
  126. package/dist/turns/run-calls.d.ts.map +1 -1
  127. package/dist/turns/run-calls.js +20 -17
  128. package/dist/turns/run-calls.js.map +1 -1
  129. package/dist/turns/step.d.ts.map +1 -1
  130. package/dist/turns/step.js +6 -3
  131. package/dist/turns/step.js.map +1 -1
  132. package/dist/ui/register-ui.js +2 -2
  133. package/dist/ui/register-ui.js.map +1 -1
  134. package/dist/web/components/approval.css +1 -1
  135. package/dist/web/components/call.css +1 -1
  136. package/dist/web/components/call.js +556 -379
  137. package/dist/web/components/connectors.css +1 -1
  138. package/dist/web/components/connectors.js +6 -7
  139. package/dist/web/components/conversation.css +1 -1
  140. package/dist/web/components/conversation.js +2264 -1811
  141. package/dist/web/components/mcp-sign-in.css +1 -1
  142. package/dist/web/components/model.css +1 -1
  143. package/dist/web/components/model.js +4 -3
  144. package/dist/web/components/preferences.css +1 -1
  145. package/dist/web/components/question.css +1 -1
  146. package/dist/web/components/sessions.css +1 -1
  147. package/locales/ar.json +61 -29
  148. package/locales/en.json +61 -29
  149. package/package.json +6 -6
@@ -1,2 +1,2 @@
1
- .kvc-workspace{flex-direction:column;flex:1 1 0;align-self:stretch;block-size:100%;min-block-size:24rem;min-inline-size:min(100%,30rem);display:flex;position:relative;container:kvc-workspace/inline-size}.kvc-stage{flex:1 1 0;min-block-size:0;display:flex;position:relative}.kvc-workspace>.kvc-header{background:var(--kv-color-surface);color:var(--kv-color-text)}.kvc-conversation{background:var(--kv-color-surface);min-inline-size:0;color:var(--kv-color-text);flex-direction:column;flex:1 1 0;display:flex}.kvc-artifact-panel{background:var(--kv-color-surface);border-inline-start:1px solid var(--kv-color-border);flex-direction:column;flex:0 0 min(40%,32rem);min-inline-size:0;display:flex;position:relative;container-type:inline-size}.kvc-artifact-panel[data-sized=true]{flex-basis:clamp(20rem, var(--kvc-panel-width), 70%)}.kvc-panel-resizer{z-index:6;cursor:col-resize;touch-action:none;inline-size:8px;position:absolute;inset-block:0;inset-inline-start:-4px}.kvc-panel-resizer:hover,.kvc-panel-resizer:focus-visible,.kvc-panel-resizer[data-dragging=true]{background:color-mix(in srgb, var(--kv-color-primary) 35%, transparent);outline:none}.kvc-artifact-head{align-items:center;gap:var(--kv-space-sm);padding-block:12px;padding-inline:var(--kv-space-lg);border-block-end:1px solid var(--kv-color-border);display:flex}.kvc-artifact-name .kvc-picker{min-inline-size:0}.kvc-artifact-name .kvc-picker>.kvc-button{justify-content:space-between;max-inline-size:100%}.kvc-artifact-name .kvc-picker-label{min-inline-size:0;max-inline-size:none;font-size:15px;font-weight:600}.kvc-artifact-title{font-size:15px;font-weight:600}.kvc-artifact-name{flex-direction:column;flex:1 1 0;gap:2px;min-inline-size:0;display:flex}.kvc-artifact-name>.kvc-muted{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.kvc-tab-icon{display:none}@container (inline-size<=30rem){.kvc-artifact-head{padding-inline:var(--kv-space-md)}.kvc-artifact-actions .kvc-tab{align-items:center;padding-inline:8px;display:flex}.kvc-artifact-actions .kvc-tab-icon{display:block}.kvc-artifact-actions .kvc-tab-text{display:none}}.kvc-artifact-actions{flex:none;align-items:center;gap:6px;margin-inline-start:auto;display:flex}.kvc-button.kvc-icon-button{box-sizing:border-box;flex:none;inline-size:36px;padding-inline:0}.kvc-artifact-body{min-block-size:0;padding-block:var(--kv-space-md);padding-inline:var(--kv-space-lg);flex:auto;overflow:auto}.kvc-artifact-source{font-family:var(--kv-font-mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:12px}.kvc-artifact-frame{background:#fff;border:0;block-size:100%;inline-size:100%}@container (inline-size<=48rem){.kvc-artifact-panel{z-index:5;inline-size:min(100%,32rem);position:absolute;inset-block:0;inset-inline-end:0;box-shadow:0 12px 32px #00000024}}@container kvc-workspace (inline-size<=48rem){.kvc-panel-resizer{display:none}}.kvc-header{align-items:center;gap:var(--kv-space-sm);padding-block:4px;padding-inline:var(--kv-space-lg);border-block-end:1px solid var(--kv-color-border);flex-wrap:wrap;display:flex;position:relative}.kvc-title{flex-wrap:wrap;flex:auto;align-items:baseline;column-gap:12px;min-inline-size:0;display:flex}.kvc-header-stats{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.kvc-title strong{text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.kvc-muted{color:var(--kv-color-muted);font-size:12.5px}.kvc-tabs{border:1px solid var(--kv-color-border);border-radius:10px;gap:2px;padding:3px;display:flex}.kvc-tab{color:var(--kv-color-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;padding-block:4px;padding-inline:12px}.kvc-tab[aria-selected=true],.kvc-tab[aria-pressed=true]{background:var(--kv-color-background);color:var(--kv-color-text);font-weight:500}.kvc-scrollport{flex-direction:column;flex:auto;min-block-size:0;display:flex;position:relative}.kvc-scroll{flex:auto;min-block-size:0;position:relative;overflow-y:auto}.kvc-jump{inline-size:max-content;margin-inline:auto;position:absolute;inset-block-end:12px;inset-inline:0;box-shadow:0 4px 16px #00000029}.kvc-column{box-sizing:border-box;inline-size:100%;max-inline-size:800px;padding:var(--kv-space-md) var(--kv-space-lg);gap:var(--kv-space-md);overflow-wrap:anywhere;flex-direction:column;margin-inline:auto;display:flex}.kvc-user{background:var(--kv-color-background);border-radius:16px;white-space:pre-wrap;border-end-end-radius:4px;align-self:flex-end;max-inline-size:80%;padding-block:10px;padding-inline:14px}.kvc-queued{border:1px dashed var(--kv-color-border);background:0 0}.kvc-answer{gap:var(--kv-space-sm);flex-direction:column;display:flex}.kvc-card{border:1px solid var(--kv-color-border);border-radius:var(--kv-radius);background:var(--kv-color-background);overflow:hidden}.kvc-card-row{align-items:center;gap:10px;padding-block:9px;padding-inline:12px;display:flex}.kvc-card-body{border-block-start:1px solid var(--kv-color-border);gap:var(--kv-space-sm);flex-direction:column;padding-block:10px;padding-inline:14px;display:flex}.kvc-lines{text-align:start;flex-direction:column;flex:auto;gap:2px;min-inline-size:0;display:flex}.kvc-failed{border-color:var(--kv-color-danger)}.kvc-mono{font-family:var(--kv-font-mono);overflow-wrap:anywhere;direction:ltr;unicode-bidi:isolate;font-size:12.5px}.kvc-card-row>.kvc-muted,.kvc-card-row>.kvc-chip{white-space:nowrap;flex:none}.kvc-card-row>svg{flex:none}.kvc-output{background:var(--kv-color-surface);color:var(--kv-color-text);font-family:var(--kv-font-mono);white-space:pre-wrap;overflow-wrap:anywhere;max-block-size:320px;margin:0;padding:10px 14px;font-size:12px;overflow-y:auto}.kvc-output+.kvc-output{border-block-start:1px solid var(--kv-color-border)}.kvc-output-block>.kvc-output{max-block-size:none;overflow-y:visible}.kvc-output .kvc-link{color:inherit;text-underline-offset:2px;text-decoration:underline}.kvc-chip{white-space:nowrap;border:1px solid var(--kv-color-border);border-radius:999px;align-items:center;gap:4px;padding-block:2px;padding-inline:8px;font-size:12px;font-weight:500;display:inline-flex}.kvc-ok{color:var(--kv-color-success)}.kvc-warn{color:var(--kv-color-warning)}.kvc-sign-in-failed,.kvc-danger{color:var(--kv-color-danger)}.kvc-notice{align-items:center;gap:var(--kv-space-sm);color:var(--kv-color-muted);font-size:13px;display:flex}.kvc-notice:before,.kvc-notice:after{content:"";background:var(--kv-color-border);flex:auto;block-size:1px}.kvc-ask{border-color:var(--kv-color-warning)}.kvc-option{border:1px solid var(--kv-color-border);cursor:pointer;border-radius:10px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.kvc-option:has(input:checked){border-color:var(--kv-color-primary);background:color-mix(in srgb, var(--kv-color-primary) 8%, var(--kv-color-surface))}.kvc-answered-option{color:var(--kv-color-muted);align-items:flex-start;gap:10px;display:flex}.kvc-answered-option[data-chosen=true]{color:var(--kv-color-text);font-weight:500}.kvc-answered-option>svg{flex:none;margin-block-start:3px}.kvc-answered-gap{flex:0 0 16px}.kvc-sr{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}.kvc-button{border:1px solid var(--kv-color-border);background:var(--kv-color-surface);min-block-size:36px;color:var(--kv-color-text);font:inherit;cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding-inline:14px;font-weight:500;display:inline-flex}a.kvc-button{color:inherit;text-decoration:none}.kvc-button:disabled{opacity:.5;cursor:default}.kvc-primary,.kvc-decide[aria-pressed=true]{background:var(--kv-color-primary);border-color:var(--kv-color-primary);color:var(--kv-color-on-primary)}.kvc-ghost{background:0 0;border-color:#0000}.kvc-actions{gap:var(--kv-space-sm);flex-wrap:wrap;justify-content:flex-end;display:flex}.kvc-actions>.kvc-button{white-space:nowrap;flex:none}.kvc-composer{z-index:2;background:var(--kv-color-surface);padding-block:12px 18px;padding-inline:var(--kv-space-lg);position:sticky;inset-block-end:0}.kvc-box{box-sizing:border-box;border:1px solid var(--kv-color-border);background:var(--kv-color-surface);gap:var(--kv-space-sm);border-radius:16px;flex-direction:column;max-inline-size:760px;margin-inline:auto;padding:10px 12px;display:flex}.kvc-field{box-sizing:border-box;border:1px solid var(--kv-color-border);background:var(--kv-color-surface);inline-size:100%;color:inherit;font:inherit;border-radius:10px;padding-block:8px;padding-inline:12px}.kvc-field:disabled{opacity:.6;cursor:not-allowed}.kvc-box textarea{resize:none;color:inherit;font:inherit;background:0 0;border:0;outline:none;min-block-size:44px}.kvc-start{justify-content:safe center;gap:var(--kv-space-lg);min-height:0;padding:var(--kv-space-lg);flex-direction:column;flex:auto;display:flex;overflow-y:auto}.kvc-start-note{text-align:center;margin:0}.kvc-link-button{color:var(--kv-color-primary);font:inherit;text-underline-offset:2px;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.kvc-start h1{text-align:center;margin:0;font-size:26px;font-weight:600}.kvc-sessions{box-sizing:border-box;border-inline-end:1px solid var(--kv-color-border);flex-direction:column;flex:none;align-self:stretch;gap:2px;max-block-size:100%;inline-size:272px;padding:14px 12px;display:flex;overflow-y:auto}.kvc-session{min-block-size:44px;color:inherit;font:inherit;text-align:start;cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;padding-inline:10px;display:flex}.kvc-session[aria-current=page]{background:color-mix(in srgb, var(--kv-color-primary) 16%, var(--kv-color-surface));font-weight:600}.kvc-session .kvc-muted,.kvc-session .kvc-chip{white-space:nowrap;flex:none}.kvc-session span:first-child{text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.kvc-group{color:var(--kv-color-muted);padding-block:12px 4px;padding-inline:10px;font-size:12px;font-weight:600}.kvc-spin{border:2px solid var(--kv-color-border);border-block-start-color:var(--kv-color-primary);border-radius:50%;flex:none;block-size:14px;inline-size:14px;animation:.9s linear infinite kvc-spin}.kvc-menu{z-index:10;border:1px solid var(--kv-color-border);background:var(--kv-color-surface);border-radius:12px;flex-direction:column;min-inline-size:220px;padding:6px;display:flex;position:absolute;inset-block-start:100%;inset-inline-end:0;box-shadow:0 12px 32px #00000024}.kvc-menu button{text-align:start;justify-content:flex-start}.kvc-prompt{padding:var(--kv-space-md);border:1px solid var(--kv-color-border);border-radius:var(--kv-radius);background:var(--kv-color-background);font-family:var(--kv-font-mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:12px}.kvc-activity{border:1px solid var(--kv-color-border);border-radius:var(--kv-radius);background:var(--kv-color-background);align-items:center;gap:10px;padding-block:8px;padding-inline:12px;font-size:13.5px;display:flex}.kvc-activity-text{flex-direction:column;flex:auto;gap:6px;min-inline-size:0;display:flex}.kvc-activity-call{flex-direction:column;gap:2px;display:flex}.kvc-oneline{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.kvc-picker{position:relative}.kvc-picker-label{text-overflow:ellipsis;white-space:nowrap;max-inline-size:16rem;overflow:hidden}.kvc-popover{z-index:20;box-sizing:border-box;inline-size:min(26rem, calc(100cqw - 2 * var(--kv-space-lg)));border:1px solid var(--kv-color-border);background:var(--kv-color-surface);border-radius:12px;flex-direction:column;gap:6px;padding:8px;display:flex;position:absolute;inset-block-start:calc(100% + 6px);inset-inline-start:0;box-shadow:0 12px 32px #00000024}.kvc-choices{inline-size:max-content;min-inline-size:10rem;max-inline-size:min(22rem, calc(100cqw - 2 * var(--kv-space-md)));gap:2px;max-block-size:18rem;overflow-y:auto}.kvc-choices>.kvc-model{flex:none}.kvc-recovery{align-items:center;gap:var(--kv-space-sm);flex-wrap:wrap;display:flex}.kvc-recovery .kvc-popover{inset-block:auto calc(100% + 6px)}.kvc-search{border:1px solid var(--kv-color-border);border-radius:10px;align-items:center;gap:8px;padding-inline:10px;display:flex}.kvc-search input{min-inline-size:0;color:inherit;font:inherit;background:0 0;border:0;outline:none;flex:auto;padding-block:8px}.kvc-options{flex-direction:column;max-block-size:18rem;display:flex;overflow-y:auto}.kvc-model{cursor:pointer;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding-block:7px;padding-inline:10px;display:flex}.kvc-model[data-active=true]{background:var(--kv-color-background)}.kvc-model[aria-selected=true]{font-weight:600}.kvc-model-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.kvc-none,.kvc-count{margin:0;padding-inline:10px}@keyframes kvc-spin{to{transform:rotate(360deg)}}.kvc-dot{background:var(--kv-color-success);border-radius:50%;flex:none;block-size:8px;inline-size:8px}.kvc-jobs-panel{max-block-size:70vh;inline-size:min(32rem,100%);inset-inline:auto 0;overflow-y:auto}.kvc-job{border:1px solid var(--kv-color-border);border-radius:8px;flex-direction:column;gap:6px;padding:8px;display:flex}.kvc-job-head{justify-content:space-between;align-items:center;gap:8px;min-inline-size:0;display:flex}.kvc-job-title{flex:auto;min-inline-size:0;font-weight:600}.kvc-job-head>.kvc-muted,.kvc-job-head>.kvc-chip{white-space:nowrap;flex:none}.kvc-job-links{flex-wrap:wrap;gap:4px 12px;display:flex}.kvc-job-links .kvc-link{color:var(--kv-color-primary);text-underline-offset:2px;text-decoration:underline}.kvc-job .kvc-output{background:var(--kv-color-background);border-radius:8px}.kvc-connectors{flex-direction:column;display:flex}.kvc-connectors-state{flex-wrap:wrap;align-items:center;gap:10px;padding-block-end:8px;display:flex}.kvc-text-button{color:var(--kv-color-primary);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;font-weight:500}.kvc-text-button:disabled{opacity:.5;cursor:default}.kvc-connector{border-block-end:1px solid var(--kv-color-border);align-items:center;gap:16px;padding-block:12px;display:flex}.kvc-connector:last-child{border-block-end:0}.kvc-connector-text{flex-direction:column;flex:1;gap:2px;min-inline-size:0;display:flex}.kvc-connector-name{font-size:13.5px;font-weight:600}.kvc-switch{background:var(--kv-color-border);cursor:pointer;border:0;border-radius:999px;flex:none;align-items:center;block-size:24px;inline-size:40px;padding:2px;transition:background-color .12s;display:flex}.kvc-switch[aria-checked=true]{background:var(--kv-color-primary)}.kvc-switch:disabled{opacity:.5;cursor:default}.kvc-switch-knob{background:var(--kv-color-surface);border-radius:999px;block-size:20px;inline-size:20px;transition:margin-inline-start .12s}.kvc-switch[aria-checked=true] .kvc-switch-knob{margin-inline-start:16px}.kvc-setting{border-block-end:1px solid var(--kv-color-border);flex-wrap:wrap;align-items:flex-start;gap:24px;padding-block:16px;display:flex}.kvc-setting-text{flex-direction:column;flex:20rem;gap:4px;min-inline-size:15rem;display:flex}.kvc-setting-title{font-weight:600}.kvc-setting-control{flex-direction:column;gap:8px;inline-size:22.5rem;max-inline-size:100%;display:flex}.kvc-setting .kvc-picker>.kvc-button{justify-content:space-between;inline-size:100%}.kvc-setting .kvc-picker-label{max-inline-size:none}.kvc-setting .kvc-popover{inline-size:100%}.kvc-setting .kvc-connectors-state{padding-block-end:0}.kvc-connector-actions{flex:none;align-items:center;gap:8px;display:flex}.kvc-dialog-backdrop{z-index:40;padding:var(--kv-space-md);background:#00000059;place-items:center;display:grid;position:fixed;inset:0}.kvc-dialog{box-sizing:border-box;gap:var(--kv-space-sm);inline-size:100%;max-inline-size:44rem;max-block-size:calc(100dvh - 2 * var(--kv-space-md));background:var(--kv-color-surface);color:var(--kv-color-text);padding:var(--kv-space-lg);border-radius:16px;outline:none;flex-direction:column;display:flex;overflow-y:auto;box-shadow:0 20px 50px #00000040}.kvc-dialog-head{align-items:flex-start;gap:12px;display:flex}.kvc-dialog-title{font-size:16px;font-weight:600}.kvc-dialog-rows{flex-direction:column;display:flex}.kvc-dialog-rows>.kvc-setting:last-child{border-block-end:0;padding-block-end:0}.kvc-server{align-items:flex-start}.kvc-server-state{flex-wrap:wrap;align-items:center;gap:10px;font-size:13px;font-weight:500;display:flex}.kvc-server-state[data-status=ready]{color:var(--kv-color-success)}.kvc-server-state[data-status=failed],.kvc-server-state[data-status=signInNeeded]{color:var(--kv-color-warning)}.kvc-server-state[data-status=checking]{color:var(--kv-color-muted)}.kvc-server-reason{overflow-wrap:anywhere;white-space:pre-wrap}.kvc-server-sign-in{align-self:flex-start;margin-block-start:6px}.kvc-sign-in{max-inline-size:32rem;padding:var(--kv-space-lg);text-align:center;flex-direction:column;align-items:center;gap:8px;margin-inline:auto;display:flex}.kvc-sign-in-done{color:var(--kv-color-success)}.kvc-sign-in-failed{color:var(--kv-color-danger)}.kvc-danger{background:var(--kv-color-danger);border-color:var(--kv-color-danger);color:var(--kv-color-on-primary)}.kvc-form{gap:var(--kv-space-md);flex-direction:column;padding-block-start:var(--kv-space-sm);display:flex}.kvc-form-field{flex-direction:column;gap:6px;display:flex}.kvc-form-label{padding:0;font-weight:600}.kvc-confirm{border:1px solid var(--kv-color-danger);border-radius:var(--kv-radius);flex-direction:column;gap:8px;padding:12px;display:flex}.kvc-preferences{resize:vertical;min-block-size:6rem;inline-size:100%}.kvc-remember{margin-block-start:4px;display:block}.kvc-fold-body{border-block-start:1px solid var(--kv-color-border);flex-direction:column;gap:6px;padding:6px 8px 8px;display:flex}.kvc-final{border-inline-start:3px solid var(--kv-color-primary);padding-inline-start:12px}.kvc-changes{flex-direction:column;gap:8px;display:flex}.kvc-change-head{text-align:start;flex:auto;align-items:center;gap:8px;min-inline-size:0;display:flex}.kvc-diff>[data-kind=added]{color:var(--kv-color-success,inherit);background:color-mix(in srgb, var(--kv-color-success,green) 12%, transparent)}.kvc-diff>[data-kind=removed]{color:var(--kv-color-danger);background:color-mix(in srgb, var(--kv-color-danger) 12%, transparent)}.kvc-diff>[data-kind=hunk],.kvc-diff>[data-kind=head]{color:var(--kv-color-muted,inherit)}.kvc-picker-icon{flex:none;display:none}.kvc-artifact-name .kvc-picker>.kvc-button{min-block-size:0;padding-block:2px}.kvc-decide{white-space:nowrap}@container kvc-workspace (inline-size<=30rem){.kvc-composer-row .kvc-picker-icon{display:block}.kvc-composer-row .kvc-picker-label{display:none}}.kvc-chats-bar{display:none}@media (width<=60rem){.kvc-sessions{display:none}.kvc-drawer .kvc-sessions{border-inline-end:0;inline-size:100%;display:flex}.kvc-chats-bar{padding-block:4px;padding-inline:var(--kv-space-md);border-block-end:1px solid var(--kv-color-border);display:flex}}.kvc-drawer-backdrop{z-index:40;background:#00000059;position:fixed;inset:0}.kvc-drawer{background:var(--kv-color-surface);inline-size:min(85vw,20rem);position:absolute;inset-block:0;inset-inline-start:0;overflow-y:auto;box-shadow:0 12px 32px #0003}.kvc-rules{flex-direction:column;gap:6px;margin-block-start:8px;display:flex}.kvc-rule{justify-content:space-between;align-items:center;gap:12px;display:flex}.kvc-form-error{color:var(--kv-color-danger);font-size:12.5px}.kvc-form-choice{gap:var(--kv-space-md);border:0;flex-wrap:wrap;margin:0;padding:0;display:flex}.kvc-form-choice>legend{margin-block-end:6px}.kvc-form-radio{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.kvc-form-value{grid-template-columns:minmax(0,2fr) minmax(0,3fr) auto;align-items:center;gap:8px;display:grid}.kvc-form-set{align-items:center;gap:10px;display:flex}.kvc-form-add{align-self:flex-start;align-items:center;gap:4px;display:inline-flex}.kvc-form textarea.kvc-field{resize:vertical}.kvc-box{position:relative}.kvc-composer-row{align-items:center;gap:8px;display:flex}.kvc-composer-hint{text-overflow:ellipsis;white-space:nowrap;flex:1 1 0;min-inline-size:0;overflow:hidden}.kvc-composer-row .kvc-picker{flex:0 auto;min-inline-size:0}.kvc-composer-row .kvc-picker>.kvc-button{max-inline-size:100%}.kvc-composer-row .kvc-picker-label{min-inline-size:0}.kvc-composer .kvc-popover{inset-block:auto calc(100% + 6px)}.kvc-slash{z-index:20;border:1px solid var(--kv-color-border);background:var(--kv-color-surface);border-radius:12px;flex-direction:column;padding:6px;display:flex;position:absolute;inset-block-end:calc(100% + 6px);inset-inline:0;box-shadow:0 12px 32px #00000024}.kvc-slash-row{cursor:pointer;border-radius:8px;align-items:baseline;gap:12px;padding-block:7px;padding-inline:10px;display:flex}.kvc-slash-row[data-active=true]{background:var(--kv-color-background)}.kvc-slash-name{flex:0 0 9rem}.kvc-slash-row .kvc-mono{font-size:13px;font-weight:600}.kvc-call-parts{border-block-start:1px solid var(--kv-color-border);margin:0;padding-block:8px;padding-inline:14px}.kvc-summary{flex-wrap:wrap;align-items:baseline;column-gap:8px;min-inline-size:0;font-size:13px;display:flex}.kvc-summary>.kvc-mono{min-inline-size:0}.kvc-block{border-block-start:1px solid var(--kv-color-border);margin:0;padding-block:8px;font-size:13px}.kvc-block:not(.kvc-code-lines){padding-inline:14px}.kvc-code-lines{font-family:var(--kv-font-mono);font-size:12px;line-height:1.55}.kvc-code-line{gap:8px;min-block-size:1.55em;padding-inline:14px;display:flex}.kvc-code-line[data-kind=removed]{background:color-mix(in srgb, var(--kv-color-danger) 14%, transparent)}.kvc-code-line[data-kind=added]{background:color-mix(in srgb, var(--kv-color-success) 14%, transparent)}.kvc-line-number{text-align:end;min-inline-size:3ch;color:var(--kv-color-muted);-webkit-user-select:none;user-select:none;flex:none}.kvc-line-mark{color:var(--kv-color-muted);-webkit-user-select:none;user-select:none;flex:0 0 1ch}.kvc-line-text{white-space:pre-wrap;overflow-wrap:anywhere;flex:auto;min-inline-size:0}.kvc-code-lines .kvc-link,.kvc-fields .kvc-link,.kvc-error .kvc-link{color:var(--kv-color-primary);text-underline-offset:2px;text-decoration:underline}.kvc-prose-lines{font-family:inherit;font-size:13px}.kvc-fold{margin-block-start:6px;margin-inline:14px;display:block}.kvc-output-block{border-block-start:1px solid var(--kv-color-border)}.kvc-output-block>.kvc-fold{margin-block:6px}.kvc-error{color:var(--kv-color-danger);white-space:pre-wrap;overflow-wrap:anywhere;font-family:inherit}.kvc-entries{flex-direction:column;gap:2px;display:flex}.kvc-entry{align-items:center;gap:8px;display:flex}.kvc-entry>.kvc-mono{flex:auto;min-inline-size:0}.kvc-file-path{padding-block-end:4px;font-weight:600}.kvc-block>.kvc-code-lines>.kvc-code-line{padding-inline:0}.kvc-block>.kvc-code-lines>.kvc-fold{margin-inline:0}.kvc-fields{grid-template-columns:minmax(6rem,max-content) minmax(0,1fr);gap:4px 12px;margin:0;display:grid}.kvc-field-row{display:contents}.kvc-steps{gap:6px;padding-inline-start:0;list-style:none;display:grid}.kvc-step-arguments{padding-block-start:2px;padding-inline-start:1.5rem}.kvc-field-row>dt{font-family:var(--kv-font-mono);font-size:12px}.kvc-field-row>dd{overflow-wrap:anywhere;min-inline-size:0;margin:0}.kvc-field-block>.kvc-code-line,.kvc-field-block>.kvc-fold{margin-inline:0;padding-inline:0}.kvc-field-table{overflow-x:auto}.kvc-field-table table{border-collapse:collapse;font-size:12.5px}.kvc-field-table th,.kvc-field-table td{text-align:start;vertical-align:top;padding-block:3px;padding-inline:0 14px}.kvc-field-table th{color:var(--kv-color-muted);font-weight:500;font-family:var(--kv-font-mono);font-size:12px}.kvc-field-items{flex-direction:column;gap:2px;display:flex}.kvc-approval{border-block-start:1px solid var(--kv-color-border)}.kvc-approval>.kvc-actions{padding-block-start:0}.kvc-always>.kvc-link-button{margin-inline-end:auto}.kvc-reason,.kvc-always{flex-wrap:wrap;align-items:center;padding-block-start:0}.kvc-reason>textarea{flex:16rem}.kvc-always>input{flex:0 14rem;min-inline-size:8rem}.kvc-run-row{align-items:baseline;gap:10px;display:flex}.kvc-run-row>.kvc-run-call{flex:auto;min-inline-size:0}.kvc-run-row>.kvc-chip,.kvc-run-row>.kvc-muted{white-space:nowrap;flex:none}:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .kvc-flip{transform:scaleX(-1)}.kvc-slash-row[aria-disabled=true]{opacity:.55;cursor:default}.kvc-button:focus-visible,.kvc-text-button:focus-visible,.kvc-link-button:focus-visible,.kvc-session:focus-visible,.kvc-switch:focus-visible,.kvc-chip-remove:focus-visible{outline:2px solid var(--kv-color-primary);outline-offset:2px}.kvc-box:focus-within,.kvc-search:focus-within{outline:2px solid var(--kv-color-primary);outline-offset:1px}.kvc-chip-remove{min-block-size:20px;padding:0}@media (pointer:coarse){.kvc-button{min-block-size:44px}.kvc-button.kvc-icon-button{inline-size:44px}.kvc-text-button,.kvc-link-button{align-items:center;min-block-size:44px;display:inline-flex}.kvc-chip-remove{min-block-size:44px;min-inline-size:44px}.kvc-switch{position:relative}.kvc-switch:after{content:"";position:absolute;inset-block:-10px;inset-inline:-2px}}
1
+ .kvc-workspace{flex-direction:column;flex:1 1 0;align-self:stretch;block-size:100%;min-block-size:24rem;min-inline-size:min(100%,30rem);display:flex;position:relative;container:kvc-workspace/inline-size}.kvc-stage{flex:1 1 0;min-block-size:0;display:flex;position:relative}.kvc-topline{align-items:stretch;display:flex}.kvc-topline>.kvc-header{background:var(--kv-color-surface);min-inline-size:0;color:var(--kv-color-text);flex:auto}.kvc-new-chat{display:none}.kvc-conversation{background:var(--kv-color-surface);min-inline-size:0;color:var(--kv-color-text);flex-direction:column;flex:1 1 0;display:flex}.kvc-artifact-panel{background:var(--kv-color-surface);border-inline-start:1px solid var(--kv-color-border);flex-direction:column;flex:0 0 min(40%,32rem);min-inline-size:0;display:flex;position:relative;container-type:inline-size}.kvc-artifact-panel[data-sized=true]{flex-basis:clamp(20rem, var(--kvc-panel-width), 70%)}.kvc-panel-resizer{z-index:6;cursor:col-resize;touch-action:none;inline-size:8px;position:absolute;inset-block:0;inset-inline-start:-4px}.kvc-panel-resizer:hover,.kvc-panel-resizer:focus-visible,.kvc-panel-resizer[data-dragging=true]{background:color-mix(in srgb, var(--kv-color-primary) 35%, transparent);outline:none}.kvc-artifact-confirm{justify-content:space-between;align-items:center;gap:var(--kv-space-sm);padding-block:var(--kv-space-sm);padding-inline:var(--kv-space-lg);border-block-end:1px solid var(--kv-color-border);flex-wrap:wrap;display:flex}.kvc-artifact-head{align-items:center;gap:var(--kv-space-sm);padding-block:12px;padding-inline:var(--kv-space-lg);border-block-end:1px solid var(--kv-color-border);display:flex}.kvc-artifact-name .kvc-picker{min-inline-size:0}.kvc-artifact-name .kvc-picker>.kvc-button{justify-content:space-between;max-inline-size:100%}.kvc-artifact-name .kvc-picker-label{min-inline-size:0;max-inline-size:none;font-size:15px;font-weight:600}.kvc-artifact-title{font-size:15px;font-weight:600}.kvc-artifact-name{flex-direction:column;flex:1 1 0;gap:2px;min-inline-size:0;display:flex}.kvc-artifact-name>.kvc-muted{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.kvc-tab-icon{display:none}@container (inline-size<=30rem){.kvc-artifact-head{padding-inline:var(--kv-space-md)}.kvc-artifact-actions .kvc-tab{align-items:center;padding-inline:8px;display:flex}.kvc-artifact-actions .kvc-tab-icon{display:block}.kvc-artifact-actions .kvc-tab-text{display:none}}.kvc-artifact-actions{flex:none;align-items:center;gap:6px;margin-inline-start:auto;display:flex}.kvc-button.kvc-icon-button{box-sizing:border-box;flex:none;inline-size:36px;padding-inline:0}.kvc-artifact-body{min-block-size:0;padding-block:var(--kv-space-md);padding-inline:var(--kv-space-lg);flex:auto;overflow:auto}.kvc-artifact-source{font-family:var(--kv-font-mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:12px}.kvc-artifact-frame{background:#fff;border:0;block-size:100%;inline-size:100%}@container (inline-size<=48rem){.kvc-artifact-panel{z-index:5;inline-size:min(100%,32rem);position:absolute;inset-block:0;inset-inline-end:0;box-shadow:0 12px 32px #00000024}}@container kvc-workspace (inline-size<=48rem){.kvc-panel-resizer{display:none}}.kvc-header{align-items:center;gap:var(--kv-space-sm);padding-block:4px;padding-inline:var(--kv-space-lg);border-block-end:1px solid var(--kv-color-border);flex-wrap:wrap;display:flex;position:relative}.kvc-title{flex-wrap:wrap;flex:auto;align-items:baseline;column-gap:12px;min-inline-size:0;display:flex}.kvc-header-stats{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.kvc-title strong{text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.kvc-muted{color:var(--kv-color-muted);font-size:12.5px}.kvc-tabs{border:1px solid var(--kv-color-border);border-radius:10px;gap:2px;padding:3px;display:flex}.kvc-tab{color:var(--kv-color-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;padding-block:4px;padding-inline:12px}.kvc-tab[aria-selected=true],.kvc-tab[aria-pressed=true]{background:var(--kv-color-background);color:var(--kv-color-text);font-weight:500}.kvc-scrollport{flex-direction:column;flex:auto;min-block-size:0;display:flex;position:relative}.kvc-scroll{flex:auto;min-block-size:0;position:relative;overflow-y:auto}.kvc-jump{inline-size:max-content;margin-inline:auto;position:absolute;inset-block-end:12px;inset-inline:0;box-shadow:0 4px 16px #00000029}.kvc-column{box-sizing:border-box;inline-size:100%;max-inline-size:800px;padding:var(--kv-space-md) var(--kv-space-lg);gap:var(--kv-space-md);overflow-wrap:anywhere;flex-direction:column;margin-inline:auto;display:flex}.kvc-user{background:var(--kv-color-background);border-radius:16px;white-space:pre-wrap;border-end-end-radius:4px;align-self:flex-end;max-inline-size:80%;padding-block:10px;padding-inline:14px}.kvc-queued{border:1px dashed var(--kv-color-border);background:0 0}.kvc-answer{gap:var(--kv-space-sm);flex-direction:column;display:flex}.kvc-card{border:1px solid var(--kv-color-border);border-radius:var(--kv-radius);background:var(--kv-color-background);overflow:hidden}.kvc-card-row{align-items:center;gap:10px;padding-block:9px;padding-inline:12px;display:flex}.kvc-card-body{border-block-start:1px solid var(--kv-color-border);gap:var(--kv-space-sm);flex-direction:column;padding-block:10px;padding-inline:14px;display:flex}.kvc-lines{text-align:start;flex-direction:column;flex:auto;gap:2px;min-inline-size:0;display:flex}.kvc-failed{border-color:var(--kv-color-danger)}.kvc-mono{font-family:var(--kv-font-mono);overflow-wrap:anywhere;direction:ltr;unicode-bidi:isolate;font-size:12.5px}.kvc-card-row>.kvc-muted,.kvc-card-row>.kvc-chip{white-space:nowrap;flex:none}.kvc-card-row>svg{flex:none}.kvc-output{background:var(--kv-color-surface);color:var(--kv-color-text);font-family:var(--kv-font-mono);white-space:pre-wrap;overflow-wrap:anywhere;max-block-size:320px;margin:0;padding:10px 14px;font-size:12px;overflow-y:auto}.kvc-output+.kvc-output{border-block-start:1px solid var(--kv-color-border)}.kvc-output-block>.kvc-output{max-block-size:none;overflow-y:visible}.kvc-output .kvc-link{color:inherit;text-underline-offset:2px;text-decoration:underline}.kvc-chip{white-space:nowrap;border:1px solid var(--kv-color-border);border-radius:999px;align-items:center;gap:4px;padding-block:2px;padding-inline:8px;font-size:12px;font-weight:500;display:inline-flex}.kvc-ok{color:var(--kv-color-success)}.kvc-warn{color:var(--kv-color-warning)}.kvc-sign-in-failed,.kvc-danger{color:var(--kv-color-danger)}.kvc-notice{align-items:center;gap:var(--kv-space-sm);color:var(--kv-color-muted);font-size:13px;display:flex}.kvc-notice:before,.kvc-notice:after{content:"";background:var(--kv-color-border);flex:auto;block-size:1px}.kvc-ask{border-color:var(--kv-color-warning)}.kvc-option{border:1px solid var(--kv-color-border);cursor:pointer;border-radius:10px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.kvc-option:has(input:checked){border-color:var(--kv-color-primary);background:color-mix(in srgb, var(--kv-color-primary) 8%, var(--kv-color-surface))}.kvc-answered-option{color:var(--kv-color-muted);align-items:flex-start;gap:10px;display:flex}.kvc-answered-option[data-chosen=true]{color:var(--kv-color-text);font-weight:500}.kvc-answered-option>svg{flex:none;margin-block-start:3px}.kvc-answered-gap{flex:0 0 16px}.kvc-sr{clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}.kvc-button{border:1px solid var(--kv-color-border);background:var(--kv-color-surface);min-block-size:36px;color:var(--kv-color-text);font:inherit;cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding-inline:14px;font-weight:500;display:inline-flex}a.kvc-button{color:inherit;text-decoration:none}.kvc-button:disabled{opacity:.5;cursor:default}.kvc-primary,.kvc-decide[aria-pressed=true]{background:var(--kv-color-primary);border-color:var(--kv-color-primary);color:var(--kv-color-on-primary)}.kvc-ghost{background:0 0;border-color:#0000}.kvc-actions{gap:var(--kv-space-sm);flex-wrap:wrap;justify-content:flex-end;display:flex}.kvc-actions>.kvc-button{white-space:nowrap;flex:none}.kvc-composer{z-index:2;background:var(--kv-color-surface);padding-block:12px 18px;padding-inline:var(--kv-space-lg);position:sticky;inset-block-end:0}.kvc-box{box-sizing:border-box;border:1px solid var(--kv-color-border);background:var(--kv-color-surface);gap:var(--kv-space-sm);border-radius:16px;flex-direction:column;max-inline-size:760px;margin-inline:auto;padding:10px 12px;display:flex}.kvc-field{box-sizing:border-box;border:1px solid var(--kv-color-border);background:var(--kv-color-surface);inline-size:100%;color:inherit;font:inherit;border-radius:10px;padding-block:8px;padding-inline:12px}.kvc-field:disabled{opacity:.6;cursor:not-allowed}.kvc-box textarea{resize:none;color:inherit;font:inherit;background:0 0;border:0;outline:none;min-block-size:44px}.kvc-start{justify-content:safe center;gap:var(--kv-space-lg);min-height:0;padding:var(--kv-space-lg);flex-direction:column;flex:auto;display:flex;overflow-y:auto}.kvc-start-note{text-align:center;margin:0}.kvc-link-button{color:var(--kv-color-primary);font:inherit;text-underline-offset:2px;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.kvc-start h1{text-align:center;margin:0;font-size:26px;font-weight:600}.kvc-sessions{box-sizing:border-box;border-inline-end:1px solid var(--kv-color-border);flex-direction:column;flex:none;align-self:stretch;gap:2px;max-block-size:100%;inline-size:272px;padding:14px 12px;display:flex;overflow-y:auto}.kvc-session{min-block-size:44px;color:inherit;font:inherit;text-align:start;cursor:pointer;background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;padding-inline:10px;display:flex}.kvc-session[aria-current=page]{background:color-mix(in srgb, var(--kv-color-primary) 16%, var(--kv-color-surface));font-weight:600}.kvc-session .kvc-muted,.kvc-session .kvc-chip{white-space:nowrap;flex:none}.kvc-session span:first-child{text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}.kvc-group{color:var(--kv-color-muted);padding-block:12px 4px;padding-inline:10px;font-size:12px;font-weight:600}.kvc-spin{border:2px solid var(--kv-color-border);border-block-start-color:var(--kv-color-primary);border-radius:50%;flex:none;block-size:14px;inline-size:14px;animation:.9s linear infinite kvc-spin}.kvc-menu{z-index:10;border:1px solid var(--kv-color-border);background:var(--kv-color-surface);border-radius:12px;flex-direction:column;min-inline-size:220px;padding:6px;display:flex;position:absolute;inset-block-start:100%;inset-inline-end:0;box-shadow:0 12px 32px #00000024}.kvc-menu button{text-align:start;justify-content:flex-start}.kvc-prompt{padding:var(--kv-space-md);border:1px solid var(--kv-color-border);border-radius:var(--kv-radius);background:var(--kv-color-background);font-family:var(--kv-font-mono);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:12px}.kvc-activity{border:1px solid var(--kv-color-border);border-radius:var(--kv-radius);background:var(--kv-color-background);align-items:center;gap:10px;padding-block:8px;padding-inline:12px;font-size:13.5px;display:flex}.kvc-activity-text{flex-direction:column;flex:auto;gap:6px;min-inline-size:0;display:flex}.kvc-activity-call{flex-direction:column;gap:2px;display:flex}.kvc-oneline{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.kvc-fold-words{text-align:start;flex:auto}.kvc-fold-failed{color:var(--kv-color-danger)}.kvc-picker{position:relative}.kvc-picker-label{text-overflow:ellipsis;white-space:nowrap;max-inline-size:16rem;overflow:hidden}.kvc-popover{z-index:20;box-sizing:border-box;inline-size:min(26rem, calc(100cqw - 2 * var(--kv-space-lg)));border:1px solid var(--kv-color-border);background:var(--kv-color-surface);border-radius:12px;flex-direction:column;gap:6px;padding:8px;display:flex;position:absolute;inset-block-start:calc(100% + 6px);inset-inline-start:0;box-shadow:0 12px 32px #00000024}.kvc-choices{inline-size:max-content;min-inline-size:10rem;max-inline-size:min(22rem, calc(100cqw - 2 * var(--kv-space-md)));gap:2px;max-block-size:18rem;overflow-y:auto}.kvc-choices>.kvc-model{flex:none}.kvc-popover-start{inset-inline:auto 0}.kvc-recovery{align-items:center;gap:var(--kv-space-sm);flex-wrap:wrap;display:flex}.kvc-recovery .kvc-popover{inset-block:auto calc(100% + 6px)}.kvc-search{border:1px solid var(--kv-color-border);border-radius:10px;align-items:center;gap:8px;padding-inline:10px;display:flex}.kvc-search input{min-inline-size:0;color:inherit;font:inherit;background:0 0;border:0;outline:none;flex:auto;padding-block:8px}.kvc-options{flex-direction:column;max-block-size:18rem;display:flex;overflow-y:auto}.kvc-model{cursor:pointer;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding-block:7px;padding-inline:10px;display:flex}.kvc-model[data-active=true]{background:var(--kv-color-background)}.kvc-model[aria-selected=true]{font-weight:600}.kvc-model-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.kvc-none,.kvc-count{margin:0;padding-inline:10px}@keyframes kvc-spin{to{transform:rotate(360deg)}}.kvc-dot{background:var(--kv-color-success);border-radius:50%;flex:none;block-size:8px;inline-size:8px}.kvc-jobs-panel{max-block-size:70vh;inline-size:min(32rem,100%);inset-inline:auto 0;overflow-y:auto}.kvc-job{border:1px solid var(--kv-color-border);border-radius:8px;flex-direction:column;gap:6px;padding:8px;display:flex}.kvc-job-head{justify-content:space-between;align-items:center;gap:8px;min-inline-size:0;display:flex}.kvc-job-title{flex:auto;min-inline-size:0;font-weight:600}.kvc-job-head>.kvc-muted,.kvc-job-head>.kvc-chip{white-space:nowrap;flex:none}.kvc-job-links{flex-wrap:wrap;gap:4px 12px;display:flex}.kvc-job-links .kvc-link{color:var(--kv-color-primary);text-underline-offset:2px;text-decoration:underline}.kvc-job .kvc-output{background:var(--kv-color-background);border-radius:8px}.kvc-connectors{flex-direction:column;display:flex}.kvc-connectors-state{flex-wrap:wrap;align-items:center;gap:10px;padding-block-end:8px;display:flex}.kvc-text-button{color:var(--kv-color-primary);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;font-weight:500}.kvc-text-button:disabled{opacity:.5;cursor:default}.kvc-connector{border-block-end:1px solid var(--kv-color-border);align-items:center;gap:16px;padding-block:12px;display:flex}.kvc-connector:last-child{border-block-end:0}.kvc-connector-text{flex-direction:column;flex:1;gap:2px;min-inline-size:0;display:flex}.kvc-connector-name{font-size:13.5px;font-weight:600}.kvc-switch{background:var(--kv-color-border);cursor:pointer;border:0;border-radius:999px;flex:none;align-items:center;block-size:24px;inline-size:40px;padding:2px;transition:background-color .12s;display:flex}.kvc-switch[aria-checked=true]{background:var(--kv-color-primary)}.kvc-switch:disabled{opacity:.5;cursor:default}.kvc-switch-knob{background:var(--kv-color-surface);border-radius:999px;block-size:20px;inline-size:20px;transition:margin-inline-start .12s}.kvc-switch[aria-checked=true] .kvc-switch-knob{margin-inline-start:16px}.kvc-setting{border-block-end:1px solid var(--kv-color-border);flex-wrap:wrap;align-items:flex-start;gap:24px;padding-block:16px;display:flex}.kvc-setting-text{flex-direction:column;flex:20rem;gap:4px;min-inline-size:15rem;display:flex}.kvc-setting-title{font-weight:600}.kvc-setting-control{flex-direction:column;gap:8px;inline-size:22.5rem;max-inline-size:100%;display:flex}.kvc-setting .kvc-picker>.kvc-button{justify-content:space-between;inline-size:100%}.kvc-setting .kvc-picker-label{max-inline-size:none}.kvc-setting .kvc-popover{inline-size:100%}.kvc-setting .kvc-connectors-state{padding-block-end:0}.kvc-connector-actions{flex:none;align-items:center;gap:8px;display:flex}.kvc-dialog-backdrop{z-index:40;padding:var(--kv-space-md);background:#00000059;place-items:center;display:grid;position:fixed;inset:0}.kvc-dialog{box-sizing:border-box;gap:var(--kv-space-sm);inline-size:100%;max-inline-size:44rem;max-block-size:calc(100dvh - 2 * var(--kv-space-md));background:var(--kv-color-surface);color:var(--kv-color-text);padding:var(--kv-space-lg);border-radius:16px;outline:none;flex-direction:column;display:flex;overflow-y:auto;box-shadow:0 20px 50px #00000040}.kvc-dialog-head{align-items:flex-start;gap:12px;display:flex}.kvc-dialog-title{font-size:16px;font-weight:600}.kvc-dialog-rows{flex-direction:column;display:flex}.kvc-dialog-rows>.kvc-setting:last-child{border-block-end:0;padding-block-end:0}.kvc-server{align-items:flex-start}.kvc-server-state{flex-wrap:wrap;align-items:center;gap:10px;font-size:13px;font-weight:500;display:flex}.kvc-server-state[data-status=ready]{color:var(--kv-color-success)}.kvc-server-state[data-status=failed],.kvc-server-state[data-status=signInNeeded]{color:var(--kv-color-warning)}.kvc-server-state[data-status=checking]{color:var(--kv-color-muted)}.kvc-server-reason{overflow-wrap:anywhere;white-space:pre-wrap}.kvc-server-sign-in{align-self:flex-start;margin-block-start:6px}.kvc-sign-in{max-inline-size:32rem;padding:var(--kv-space-lg);text-align:center;flex-direction:column;align-items:center;gap:8px;margin-inline:auto;display:flex}.kvc-sign-in-done{color:var(--kv-color-success)}.kvc-sign-in-failed{color:var(--kv-color-danger)}.kvc-danger{background:var(--kv-color-danger);border-color:var(--kv-color-danger);color:var(--kv-color-on-primary)}.kvc-form{gap:var(--kv-space-md);flex-direction:column;padding-block-start:var(--kv-space-sm);display:flex}.kvc-form-field{flex-direction:column;gap:6px;display:flex}.kvc-form-label{padding:0;font-weight:600}.kvc-confirm{border:1px solid var(--kv-color-danger);border-radius:var(--kv-radius);flex-direction:column;gap:8px;padding:12px;display:flex}.kvc-preferences{resize:vertical;min-block-size:6rem;inline-size:100%}.kvc-remember{margin-block-start:4px;display:block}.kvc-fold-body{border-block-start:1px solid var(--kv-color-border);flex-direction:column;gap:6px;padding:6px 8px 8px;display:flex}.kvc-final{border-inline-start:3px solid var(--kv-color-primary);padding-inline-start:12px}.kvc-headline>summary{cursor:pointer;padding-block:2px;font-weight:600;list-style-position:inside}.kvc-headline>p{margin-block:4px 0}.kvc-changes{flex-direction:column;gap:8px;display:flex}.kvc-change-head{text-align:start;flex:auto;align-items:center;gap:8px;min-inline-size:0;display:flex}.kvc-diff>[data-kind=added]{color:var(--kv-color-success,inherit);background:color-mix(in srgb, var(--kv-color-success,green) 12%, transparent)}.kvc-diff>[data-kind=removed]{color:var(--kv-color-danger);background:color-mix(in srgb, var(--kv-color-danger) 12%, transparent)}.kvc-diff>[data-kind=hunk],.kvc-diff>[data-kind=head]{color:var(--kv-color-muted,inherit)}.kvc-picker-icon{flex:none;display:none}.kvc-artifact-name .kvc-picker>.kvc-button{min-block-size:0;padding-block:2px}.kvc-decide{white-space:nowrap}@container kvc-workspace (inline-size<=30rem){.kvc-composer-row .kvc-picker-icon{display:block}.kvc-composer-row .kvc-picker-label{display:none}}.kvc-chats-bar{display:none}@media (width<=60rem){.kvc-sessions{display:none}.kvc-drawer .kvc-sessions{border-inline-end:0;inline-size:100%;display:flex}.kvc-topline{background:var(--kv-color-surface);border-block-end:1px solid var(--kv-color-border)}.kvc-chats-bar,.kvc-new-chat{align-items:center;display:flex}.kvc-chats-bar{padding-inline-start:var(--kv-space-sm)}.kvc-new-chat{padding-inline-end:var(--kv-space-sm)}.kvc-topline>.kvc-header{padding-inline:var(--kv-space-sm);border-block-end:0}}:root:has(.kvc-artifact-panel) .kvc-sessions{display:none}:root:has(.kvc-artifact-panel) .kvc-drawer .kvc-sessions{border-inline-end:0;inline-size:100%;display:flex}:root:has(.kvc-artifact-panel) .kvc-topline{background:var(--kv-color-surface);border-block-end:1px solid var(--kv-color-border)}:is(:root:has(.kvc-artifact-panel) .kvc-chats-bar,:root:has(.kvc-artifact-panel) .kvc-new-chat){align-items:center;display:flex}:root:has(.kvc-artifact-panel) .kvc-chats-bar{padding-inline-start:var(--kv-space-sm)}:root:has(.kvc-artifact-panel) .kvc-new-chat{padding-inline-end:var(--kv-space-sm)}:root:has(.kvc-artifact-panel) .kvc-topline>.kvc-header{padding-inline:var(--kv-space-sm);border-block-end:0}.kvc-composer{container:kvc-composer/inline-size}@container kvc-composer (inline-size<=36rem){.kvc-composer-row .kvc-picker-icon{display:block}.kvc-composer-row .kvc-picker-label,.kvc-composer-row .kvc-picker-chevron{display:none}.kvc-composer-hint{visibility:hidden}}.kvc-segments{gap:4px;display:flex}.kvc-segments>.kvc-button[aria-pressed=true]{background:var(--kv-color-primary);color:var(--kv-color-on-primary);border-color:var(--kv-color-primary)}.kvc-choice-note{font-size:12px}.kvc-drawer-backdrop{z-index:40;background:#00000059;position:fixed;inset:0}.kvc-drawer{background:var(--kv-color-surface);inline-size:min(85vw,20rem);position:absolute;inset-block:0;inset-inline-start:0;overflow-y:auto;box-shadow:0 12px 32px #0003}.kvc-rules{flex-direction:column;gap:6px;margin-block-start:8px;display:flex}.kvc-rule{justify-content:space-between;align-items:center;gap:12px;display:flex}.kvc-form-error{color:var(--kv-color-danger);font-size:12.5px}.kvc-form-choice{gap:var(--kv-space-md);border:0;flex-wrap:wrap;margin:0;padding:0;display:flex}.kvc-form-choice>legend{margin-block-end:6px}.kvc-form-radio{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.kvc-form-value{grid-template-columns:minmax(0,2fr) minmax(0,3fr) auto;align-items:center;gap:8px;display:grid}.kvc-form-set{align-items:center;gap:10px;display:flex}.kvc-form-add{align-self:flex-start;align-items:center;gap:4px;display:inline-flex}.kvc-form textarea.kvc-field{resize:vertical}.kvc-box{position:relative}.kvc-composer-row{align-items:center;gap:8px;display:flex}.kvc-composer-hint{text-overflow:ellipsis;white-space:nowrap;flex:1 1 0;min-inline-size:0;overflow:hidden}.kvc-composer-row .kvc-picker{flex:0 auto;min-inline-size:0}.kvc-composer-row .kvc-picker>.kvc-button{max-inline-size:100%}.kvc-composer-row .kvc-picker-label{min-inline-size:0}.kvc-composer .kvc-popover{inset-block:auto calc(100% + 6px)}@container kvc-workspace (inline-size<=30rem){.kvc-composer-row{flex-wrap:wrap;gap:4px}.kvc-composer-row .kvc-picker{flex:none}.kvc-composer-row .kvc-button{min-block-size:32px;padding-inline:8px}.kvc-composer-row .kvc-picker-chevron{display:none}.kvc-composer-hint{visibility:hidden}.kvc-composer{padding-block:8px 10px;padding-inline:var(--kv-space-md)}.kvc-box{border-radius:12px;padding:8px}}.kvc-slash{z-index:20;border:1px solid var(--kv-color-border);background:var(--kv-color-surface);border-radius:12px;flex-direction:column;padding:6px;display:flex;position:absolute;inset-block-end:calc(100% + 6px);inset-inline:0;box-shadow:0 12px 32px #00000024}.kvc-slash-row{cursor:pointer;border-radius:8px;align-items:baseline;gap:12px;padding-block:7px;padding-inline:10px;display:flex}.kvc-slash-row[data-active=true]{background:var(--kv-color-background)}.kvc-slash-name{flex:0 0 9rem}.kvc-slash-row .kvc-mono{font-size:13px;font-weight:600}.kvc-call-parts{border-block-start:1px solid var(--kv-color-border);margin:0;padding-block:8px;padding-inline:14px}.kvc-summary{flex-wrap:wrap;align-items:baseline;column-gap:8px;min-inline-size:0;font-size:13px;display:flex}.kvc-summary>.kvc-mono{min-inline-size:0}.kvc-block{border-block-start:1px solid var(--kv-color-border);margin:0;padding-block:8px;font-size:13px}.kvc-block:not(.kvc-code-lines){padding-inline:14px}.kvc-code-lines{font-family:var(--kv-font-mono);font-size:12px;line-height:1.55}.kvc-code-line{gap:8px;min-block-size:1.55em;padding-inline:14px;display:flex}.kvc-code-line[data-kind=removed]{background:color-mix(in srgb, var(--kv-color-danger) 14%, transparent)}.kvc-code-line[data-kind=added]{background:color-mix(in srgb, var(--kv-color-success) 14%, transparent)}.kvc-line-number{text-align:end;min-inline-size:3ch;color:var(--kv-color-muted);-webkit-user-select:none;user-select:none;flex:none}.kvc-line-mark{color:var(--kv-color-muted);-webkit-user-select:none;user-select:none;flex:0 0 1ch}.kvc-line-text{white-space:pre-wrap;overflow-wrap:anywhere;flex:auto;min-inline-size:0}.kvc-code-lines .kvc-link,.kvc-fields .kvc-link,.kvc-error .kvc-link{color:var(--kv-color-primary);text-underline-offset:2px;text-decoration:underline}.kvc-prose-lines{font-family:inherit;font-size:13px}.kvc-fold{margin-block-start:6px;margin-inline:14px;display:block}.kvc-output-block{border-block-start:1px solid var(--kv-color-border)}.kvc-output-block>.kvc-fold{margin-block:6px}.kvc-error{color:var(--kv-color-danger);white-space:pre-wrap;overflow-wrap:anywhere;font-family:inherit}.kvc-entries{flex-direction:column;gap:2px;display:flex}.kvc-entry{align-items:center;gap:8px;display:flex}.kvc-entry>.kvc-mono{flex:auto;min-inline-size:0}.kvc-file-path{padding-block-end:4px;font-weight:600}.kvc-block>.kvc-code-lines>.kvc-code-line{padding-inline:0}.kvc-block>.kvc-code-lines>.kvc-fold{margin-inline:0}.kvc-fields{grid-template-columns:minmax(6rem,max-content) minmax(0,1fr);gap:4px 12px;margin:0;display:grid}.kvc-field-row{display:contents}.kvc-steps{gap:6px;padding-inline-start:0;list-style:none;display:grid}.kvc-step-arguments{padding-block-start:2px;padding-inline-start:1.5rem}.kvc-field-row>dt{font-family:var(--kv-font-mono);font-size:12px}.kvc-field-row>dd{overflow-wrap:anywhere;min-inline-size:0;margin:0}.kvc-field-block>.kvc-code-line,.kvc-field-block>.kvc-fold{margin-inline:0;padding-inline:0}.kvc-field-table{overflow-x:auto}.kvc-field-table table{border-collapse:collapse;font-size:12.5px}.kvc-field-table th,.kvc-field-table td{text-align:start;vertical-align:top;padding-block:3px;padding-inline:0 14px}.kvc-field-table th{color:var(--kv-color-muted);font-weight:500;font-family:var(--kv-font-mono);font-size:12px}.kvc-field-items{flex-direction:column;gap:2px;display:flex}.kvc-approval{border-block-start:1px solid var(--kv-color-border)}.kvc-approval>.kvc-actions{padding-block-start:0}.kvc-always>.kvc-link-button{margin-inline-end:auto}.kvc-reason,.kvc-always{flex-wrap:wrap;align-items:center;padding-block-start:0}.kvc-reason>textarea{flex:16rem}.kvc-always>input{flex:0 14rem;min-inline-size:8rem}.kvc-run-row{align-items:baseline;gap:10px;display:flex}.kvc-run-row>.kvc-run-call{flex:auto;min-inline-size:0}.kvc-run-row>.kvc-chip,.kvc-run-row>.kvc-muted{white-space:nowrap;flex:none}:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)) .kvc-flip{transform:scaleX(-1)}.kvc-slash-row[aria-disabled=true]{opacity:.55;cursor:default}.kvc-button:focus-visible,.kvc-text-button:focus-visible,.kvc-link-button:focus-visible,.kvc-session:focus-visible,.kvc-switch:focus-visible,.kvc-chip-remove:focus-visible{outline:2px solid var(--kv-color-primary);outline-offset:2px}.kvc-box:focus-within,.kvc-search:focus-within{outline:2px solid var(--kv-color-primary);outline-offset:1px}.kvc-chip-remove{min-block-size:20px;padding:0}@media (pointer:coarse){.kvc-button{min-block-size:44px}.kvc-button.kvc-icon-button{inline-size:44px}.kvc-text-button,.kvc-link-button{align-items:center;min-block-size:44px;display:inline-flex}.kvc-chip-remove{min-block-size:44px;min-inline-size:44px}.kvc-switch{position:relative}.kvc-switch:after{content:"";position:absolute;inset-block:-10px;inset-inline:-2px}}
2
2
  /*$vite$:1*/
package/locales/ar.json CHANGED
@@ -44,7 +44,7 @@
44
44
  "kvcoder.ui.today": "اليوم",
45
45
  "kvcoder.ui.earlier": "الأقدم",
46
46
  "kvcoder.ui.notify.title": "محادثة تحتاجك",
47
- "kvcoder.ui.notify.ask": "احصل على تنبيه عندما تحتاجك محادثة وkvman في الخلفية.",
47
+ "kvcoder.ui.notify.ask": "احصل على تنبيه عندما تحتاجك محادثة بينما kvman في الخلفية.",
48
48
  "kvcoder.ui.notify.on": "تفعيل",
49
49
  "kvcoder.ui.notify.later": "ليس الآن",
50
50
  "kvcoder.ui.needsYou": "بانتظار ردّك",
@@ -55,8 +55,8 @@
55
55
  "kvcoder.ui.seconds": "{count} ث",
56
56
  "kvcoder.ui.minutes": "{count} د",
57
57
  "kvcoder.ui.totals": "{time} · {cost}",
58
- "kvcoder.ui.turnSoFar": "هذه الجولة: {steps} خطوة · نحو {cost}",
59
- "kvcoder.ui.turnSteps": "هذه الجولة: {steps} خطوة",
58
+ "kvcoder.ui.turnSoFar": "هذه الجولة: {steps} خطوة · {time} · نحو {cost}",
59
+ "kvcoder.ui.turnSteps": "هذه الجولة: {steps} خطوة · {time}",
60
60
  "kvcoder.ui.staging.changed": "غيّر هذا التشغيل ما هو مُجهَّز للإيداع في Git ({paths} مسارات).",
61
61
  "kvcoder.ui.staging.headMoved": "حرّك هذا التشغيل HEAD، فلا يمكن استعادة التجهيز من هنا.",
62
62
  "kvcoder.ui.staging.restore": "استعادة التجهيز",
@@ -67,7 +67,7 @@
67
67
  "kvcoder.ui.costParts": "منها: التلخيص {summary}، العنوان {title}، المساعدون {helpers}",
68
68
  "kvcoder.ui.costEstimate": "التكلفة تقدير من كتالوج النماذج",
69
69
  "kvcoder.ui.memoryDetail": "يحمل النموذج الآن {tokens} من {window} توكن. تُلخَّص الرسائل الأقدم عند {at}%.",
70
- "kvcoder.ui.turns": "الجولات: {count}",
70
+ "kvcoder.ui.turns": "لا جولات | جولة واحدة | جولتان | {count} جولات | {count} جولة | {count} جولة",
71
71
  "kvcoder.ui.exitCode": "رمز الخروج {code}",
72
72
  "kvcoder.ui.retry": "إعادة المحاولة",
73
73
  "kvcoder.ui.loadFailed": "تعذّر تحميل هذه المحادثة: {error}",
@@ -89,7 +89,7 @@
89
89
  "kvcoder.ui.other": "إجابة أخرى",
90
90
  "kvcoder.ui.yes": "نعم",
91
91
  "kvcoder.ui.no": "لا",
92
- "kvcoder.ui.allowCommands": "هل تسمح بتنفيذ هذه الأوامر؟ ({count})",
92
+ "kvcoder.ui.allowCommands": "هل تسمح بتنفيذ هذه الأوامر؟ | هل تسمح بتنفيذ هذا الأمر؟ | هل تسمح بتنفيذ هذين الأمرين؟ | هل تسمح بتنفيذ هذه الأوامر الـ{count}؟ | هل تسمح بتنفيذ هذه الأوامر الـ{count}؟ | هل تسمح بتنفيذ هذه الأوامر الـ{count}؟",
93
93
  "kvcoder.ui.allow": "سماح",
94
94
  "kvcoder.ui.approval.denyWhy": "ارفض واذكر السبب…",
95
95
  "kvcoder.ui.approval.reason": "ماذا يفعل الوكيل بدلًا من ذلك؟",
@@ -119,7 +119,7 @@
119
119
  "kvcoder.ui.preparing": "جارٍ تجهيز أمر…",
120
120
  "kvcoder.ui.searchModels": "ابحث في النماذج",
121
121
  "kvcoder.ui.noModels": "لا توجد نماذج مطابقة",
122
- "kvcoder.ui.modelsCount": "{shown} من أصل {total}",
122
+ "kvcoder.ui.modelsCount": "{shown} من أصل {count} | {shown} من أصل نموذج واحد | {shown} من أصل نموذجين | {shown} من أصل {count} نماذج | {shown} من أصل {count} نموذجًا | {shown} من أصل {count} نموذج",
123
123
  "kvcoder.ui.activity.waiting": "بانتظار النموذج…",
124
124
  "kvcoder.ui.activity.thinking": "يفكر…",
125
125
  "kvcoder.ui.activity.writing": "يكتب…",
@@ -152,8 +152,8 @@
152
152
  "kvcoder.ui.approvalLine.change": "تغيير",
153
153
  "kvcoder.ui.homeWorkspace": "الرئيسية",
154
154
  "kvcoder.ui.chatNotHere": "هذه المحادثة ليست في مساحة العمل هذه.",
155
- "kvcoder.ui.showEarlier": "عرض {count} رسالة أقدم",
156
- "kvcoder.ui.earlierMessages": "رسائل أقدم: {count} · تصدير",
155
+ "kvcoder.ui.showEarlier": "عرض الرسائل الأقدم | عرض رسالة أقدم | عرض رسالتين أقدم | عرض {count} رسائل أقدم | عرض {count} رسالة أقدم | عرض {count} رسالة أقدم",
156
+ "kvcoder.ui.earlierMessages": "لا رسائل أقدم · تصدير | رسالة أقدم · تصدير | رسالتان أقدم · تصدير | {count} رسائل أقدم · تصدير | {count} رسالة أقدم · تصدير | {count} رسالة أقدم · تصدير",
157
157
  "kvcoder.ui.messageDismisses": "إرسال رسالة الآن يتخطى الأسئلة ويرفض الأوامر المعلّقة.",
158
158
  "kvcoder.ui.promptTitle": "تعليمات النظام كما ستُرسل في الخطوة التالية",
159
159
  "kvcoder.ui.copy": "نسخ",
@@ -193,7 +193,7 @@
193
193
  "kvcoder.session.fork.description": "ينسخ رسائل المحادثة وملخّصها حتى رقم معيّن إلى محادثة جديدة.",
194
194
  "kvcoder.session.export.description": "يكتب المحادثة وجولاتها ورسائلها ومحادثات وكلائها الفرعيين في ملف JSON.",
195
195
  "kvcoder.session.title.description": "يكتب عنوان المحادثة من جولتها الأولى.",
196
- "kvcoder.session.prune.description": "يحذف أقدم المحادثات غير النشطة الزائدة عن kvcoder.sessions.keep.",
196
+ "kvcoder.session.prune.description": "يحذف أقدم المحادثات غير النشطة الزائدة عن kvcoder.sessions.keep، ثم المخرجات الأقدم من kvcoder.artifacts.keepDays.",
197
197
  "kvcoder.message.send.description": "يرسل رسالة المستخدم: تبدأ جولة، أو توجّه الجولة الجارية، أو تجيب جولة تنتظر. تكرار الإرسال بالمعرّف sendId نفسه يُؤكَّد ولا يضيف شيئًا.",
198
198
  "kvcoder.message.inject.description": "يضيف رسالة من إضافة إلى المحادثة كما تُضاف رسالة المستخدم، موسومة باسم الإضافة.",
199
199
  "kvcoder.context.get.description": "يعطي حجم نص المحادثة بالتوكنات، ونافذة سياق نموذجها، والنسبة التي تُلخَّص عندها الرسائل الأقدم.",
@@ -269,6 +269,8 @@
269
269
  "kvcoder.delegate.model.description": "النموذج الذي يستخدمه الوكيل المساعد إن لم يحدّد عامله نموذجًا.",
270
270
  "kvcoder.thinking.title": "التفكير",
271
271
  "kvcoder.thinking.description": "مقدار تفكير النموذج في المحادثة الجديدة.",
272
+ "kvcoder.delegate.thinking.title": "تفكير المساعدين",
273
+ "kvcoder.delegate.thinking.description": "مقدار تفكير المساعد إن لم يحدّد عامله مستوى. المتوسط يبقي المساعدين سريعين، والأعلى أبطأ وأغلى.",
272
274
  "kvcoder.maxSteps.title": "الخطوات في كل جولة",
273
275
  "kvcoder.maxSteps.description": "أقصى عدد من الخطوات تنفّذه الجولة قبل أن تتوقف. اتركه فارغًا لتبقى الجولة بلا حدّ.",
274
276
  "kvcoder.preferences.title": "تفضيلاتك",
@@ -309,6 +311,7 @@
309
311
  "kvcoder.job.list.description": "أحدث 50 مهمة خلفية في محادثة (عمليات ووكلاء فرعيون وتشغيلات برامج المساعدين)، الجارية أولًا.",
310
312
  "kvcoder.job.get.description": "مهمة خلفية واحدة في محادثة مع ناتجها: آخر 100 سطر لعملية، أو نتيجة وكيل فرعي، أو ما أعاده تشغيل برنامج مساعد.",
311
313
  "kvcoder.job.cancel.description": "يوقف عملية خلفية جارية أو تشغيل برنامج مساعد في محادثة، أو يلغي وكيلها الفرعي الخلفي.",
314
+ "kvcoder.job.restart.description": "يشغّل عملية خلفية لمحادثة مجددًا بسطرها، ويوقفها أولًا إن كانت تعمل؛ ولا يبدأ جولة.",
312
315
  "kvcoder.delegate.staging.restore.description": "يعيد ما كان مُجهَّزًا للإيداع في Git قبل تشغيل برنامج مساعد؛ لا يغيّر أي ملف ولا أي إيداع.",
313
316
  "kvcoder.artifact.list.description": "يسرد مخرجات المحادثة، الأحدث تعديلًا أولًا.",
314
317
  "kvcoder.artifact.get.description": "يعيد مخرجًا واحدًا من المحادثة مع محتواه.",
@@ -355,7 +358,7 @@
355
358
  "kvcoder.ui.map.evidence": "الدليل",
356
359
  "kvcoder.ui.map.note": "ملاحظة",
357
360
  "kvcoder.ui.map.noted": "مؤجَّل لوقت لاحق ({count})",
358
- "kvcoder.ui.map.remaining": "{count} من خطوات خريطة التنفيذ لم تُنجز.",
361
+ "kvcoder.ui.map.remaining": "كل خطوات خريطة التنفيذ أُنجزت. | خطوة واحدة من خريطة التنفيذ لم تُنجز. | خطوتان من خريطة التنفيذ لم تُنجزا. | {count} خطوات من خريطة التنفيذ لم تُنجز. | {count} خطوة من خريطة التنفيذ لم تُنجز. | {count} خطوة من خريطة التنفيذ لم تُنجز.",
359
362
  "kvcoder.ui.map.continue": "تابع",
360
363
  "kvcoder.ui.map.continueMessage": "تابع.",
361
364
  "kvcoder.ui.map.show": "عرض الخريطة",
@@ -414,7 +417,7 @@
414
417
  "kvcoder.config.mcp.empty": "لا توجد خوادم بعد. أضف خادمًا ليستخدم الوكيل أدواته.",
415
418
  "kvcoder.config.mcp.add": "إضافة خادم",
416
419
  "kvcoder.config.mcp.checking": "جارٍ الفحص…",
417
- "kvcoder.config.mcp.ready": "جاهز · {count} أداة",
420
+ "kvcoder.config.mcp.ready": "جاهز · لا أدوات | جاهز · أداة واحدة | جاهز · أداتان | جاهز · {count} أدوات | جاهز · {count} أداة | جاهز · {count} أداة",
418
421
  "kvcoder.config.mcp.signInNeeded": "يحتاج إلى تسجيل الدخول",
419
422
  "kvcoder.config.mcp.failed": "تعذّر الاتصال",
420
423
  "kvcoder.config.mcp.recheck": "افحص مجددًا",
@@ -501,7 +504,7 @@
501
504
  "kvcoder.config.workers.form.model": "النموذج",
502
505
  "kvcoder.config.workers.form.sameModel": "مثل المحادثة",
503
506
  "kvcoder.config.workers.form.thinking": "التفكير",
504
- "kvcoder.config.workers.form.sameThinking": "مثل المحادثة",
507
+ "kvcoder.config.workers.form.sameThinking": "الافتراضي للمساعدين",
505
508
  "kvcoder.config.workers.form.save": "حفظ",
506
509
  "kvcoder.config.workers.invalid.nameEmpty": "أدخل اسمًا للمساعد.",
507
510
  "kvcoder.config.workers.invalid.nameShape": "استخدم أحرفًا إنجليزية صغيرة وأرقامًا وشرطات، على أن يبدأ بحرف.",
@@ -558,18 +561,19 @@
558
561
  "kvcoder.ui.call.write": "كتابة",
559
562
  "kvcoder.ui.call.read": "قراءة",
560
563
  "kvcoder.ui.call.list": "عرض",
561
- "kvcoder.ui.fold.read": "قراءة {count}",
562
- "kvcoder.ui.fold.searched": "بحث {count}",
563
- "kvcoder.ui.fold.changed": "تغيير {count}",
564
- "kvcoder.ui.fold.ran": "تشغيل {count}",
565
- "kvcoder.ui.fold.other": "أخرى {count}",
566
- "kvcoder.ui.fold.failed": "فشل {count}",
564
+ "kvcoder.ui.fold.read": "قراءة {count} ملف | قراءة ملف واحد | قراءة ملفين | قراءة {count} ملفات | قراءة {count} ملفًا | قراءة {count} ملف",
565
+ "kvcoder.ui.fold.searched": "بحث {count} مرة | بحث مرة واحدة | بحث مرتين | بحث {count} مرات | بحث {count} مرة | بحث {count} مرة",
566
+ "kvcoder.ui.fold.changed": "تعديل {count} ملف | تعديل ملف واحد | تعديل ملفين | تعديل {count} ملفات | تعديل {count} ملفًا | تعديل {count} ملف",
567
+ "kvcoder.ui.fold.ran": "تشغيل {count} أمر | تشغيل أمر واحد | تشغيل أمرين | تشغيل {count} أوامر | تشغيل {count} أمرًا | تشغيل {count} أمر",
568
+ "kvcoder.ui.fold.other": "استخدام {count} أداة أخرى | استخدام أداة أخرى | استخدام أداتين أخريين | استخدام {count} أدوات أخرى | استخدام {count} أداة أخرى | استخدام {count} أداة أخرى",
569
+ "kvcoder.ui.fold.failed": "فشل {count} خطوة | فشلت خطوة واحدة | فشلت خطوتان | فشلت {count} خطوات | فشلت {count} خطوة | فشلت {count} خطوة",
570
+ "kvcoder.ui.fold.list": "{first}، {next}",
567
571
  "kvcoder.ui.call.fetch": "جلب",
568
572
  "kvcoder.ui.call.find": "إيجاد",
569
- "kvcoder.ui.call.files": "{count} ملف",
573
+ "kvcoder.ui.call.files": "لا ملفات | ملف واحد | ملفان | {count} ملفات | {count} ملفًا | {count} ملف",
570
574
  "kvcoder.ui.call.fileNotRead": "لم يُقرأ: استهلكت الملفات التي قبله حدّ هذا الاستدعاء (30 KB).",
571
575
  "kvcoder.ui.call.fileUnchanged": "لم يتغيّر منذ قراءة سابقة في هذه المحادثة.",
572
- "kvcoder.ui.call.filesFirst": "أول {count} ملف",
576
+ "kvcoder.ui.call.filesFirst": "لا ملفات | الملف الأول | أول ملفين | أول {count} ملفات | أول {count} ملفًا | أول {count} ملف",
573
577
  "kvcoder.ui.call.search": "بحث",
574
578
  "kvcoder.ui.call.tools": "الأدوات",
575
579
  "kvcoder.ui.call.delegate": "تفويض",
@@ -589,18 +593,18 @@
589
593
  "kvcoder.ui.call.created": "أُنشئ · {size}",
590
594
  "kvcoder.ui.call.replaced": "استُبدل · {size}",
591
595
  "kvcoder.ui.call.lines": "الأسطر {from}–{to} من {total}",
592
- "kvcoder.ui.call.entries": "{count} عنصر",
593
- "kvcoder.ui.call.entriesFirst": "أول {count} عنصر",
594
- "kvcoder.ui.call.matchCount": "النتائج: {count}",
595
- "kvcoder.ui.call.matches": "{matches} نتيجة في {files} ملف",
596
- "kvcoder.ui.call.matchesFirst": "أول {matches} نتيجة في {files} ملف",
597
- "kvcoder.ui.call.toolCount": "{count} أداة",
598
- "kvcoder.ui.call.runCount": "{count} مهمة",
596
+ "kvcoder.ui.call.entries": "لا عناصر | عنصر واحد | عنصران | {count} عناصر | {count} عنصرًا | {count} عنصر",
597
+ "kvcoder.ui.call.entriesFirst": "لا عناصر | العنصر الأول | أول عنصرين | أول {count} عناصر | أول {count} عنصرًا | أول {count} عنصر",
598
+ "kvcoder.ui.call.matchCount": "لا نتائج | نتيجة واحدة | نتيجتان | {count} نتائج | {count} نتيجة | {count} نتيجة",
599
+ "kvcoder.ui.call.matches": "{matches} في {files}",
600
+ "kvcoder.ui.call.matchesFirst": "لا نتائج | النتيجة الأولى | أول نتيجتين | أول {count} نتائج | أول {count} نتيجة | أول {count} نتيجة",
601
+ "kvcoder.ui.call.toolCount": "لا أدوات | أداة واحدة | أداتان | {count} أدوات | {count} أداة | {count} أداة",
602
+ "kvcoder.ui.call.runCount": "لا مهام | مهمة واحدة | مهمتان | {count} مهام | {count} مهمة | {count} مهمة",
599
603
  "kvcoder.ui.call.bytes": "{count} بايت",
600
604
  "kvcoder.ui.call.kilobytes": "{count} ك.ب",
601
605
  "kvcoder.ui.call.megabytes": "{count} م.ب",
602
606
  "kvcoder.ui.call.risky": "خطِر",
603
- "kvcoder.ui.call.replacements": "الاستبدالات: {count} · من السطر {line}",
607
+ "kvcoder.ui.call.replacements": "لا استبدالات · من السطر {line} | استبدال واحد · من السطر {line} | استبدالان · من السطر {line} | {count} استبدالات · من السطر {line} | {count} استبدالًا · من السطر {line} | {count} استبدال · من السطر {line}",
604
608
  "kvcoder.ui.call.showAll": "عرض كل الأسطر ({count})",
605
609
  "kvcoder.ui.call.showFewer": "عرض أقل",
606
610
  "kvcoder.ui.call.error": "الخطأ",
@@ -624,5 +628,33 @@
624
628
  "kvcoder.ui.failure.denied": "رفضتَ هذا الاستدعاء.",
625
629
  "kvcoder.ui.call.showDetails": "عرض التفاصيل",
626
630
  "kvcoder.ui.call.hideDetails": "إخفاء التفاصيل",
627
- "kvcoder.ui.failure.command": "فشل الأمر."
631
+ "kvcoder.ui.failure.command": "فشل الأمر.",
632
+ "kvcoder.ui.history": "السجل",
633
+ "kvcoder.ui.host.openDiff": "افتح الفروق",
634
+ "kvcoder.ui.host.proposed": "{name} (مقترح)",
635
+ "kvcoder.ui.host.open": "افتح",
636
+ "kvcoder.file.preview.get.description": "يعطي الملف كما سيتركه تعديل fs edit أو كتابة fs write، مع مساره الكامل؛ ولا يكتب شيئًا.",
637
+ "kvcoder.delegate.thinking.options.off": "بدون",
638
+ "kvcoder.delegate.thinking.options.minimal": "أدنى",
639
+ "kvcoder.delegate.thinking.options.low": "منخفض",
640
+ "kvcoder.delegate.thinking.options.medium": "متوسط",
641
+ "kvcoder.delegate.thinking.options.high": "مرتفع",
642
+ "kvcoder.thinking.options.xhigh": "مرتفع جدًا",
643
+ "kvcoder.thinking.options.max": "أقصى",
644
+ "kvcoder.delegate.thinking.options.xhigh": "مرتفع جدًا",
645
+ "kvcoder.delegate.thinking.options.max": "أقصى",
646
+ "kvcoder.ui.call.exit": "رمز الخروج {code}",
647
+ "kvcoder.ui.mapStepNow": "الخطوة: {title}",
648
+ "kvcoder.ui.thinkingSlower": "أبطأ وأغلى",
649
+ "kvcoder.ui.changes.scope.turn": "هذه الجولة",
650
+ "kvcoder.ui.changes.scope.chat": "المحادثة كلها",
651
+ "kvcoder.ui.changes.scopeLabel": "أي التغييرات",
652
+ "kvcoder.ui.jobs.restart": "إعادة التشغيل",
653
+ "kvcoder.ui.jobs.runAgain": "شغّله مجددًا",
654
+ "kvcoder.ui.jobs.ended": "في الخلفية ({count})",
655
+ "kvcoder.artifact.delete.description": "يحذف مُخرَجًا حلّ محله غيره أو لم يعد صحيحًا.",
656
+ "kvcoder.artifacts.keepDays.title": "أيام الاحتفاظ بالمخرجات",
657
+ "kvcoder.artifacts.keepDays.description": "عدد الأيام التي يُحتفظ فيها بمُخرَج محادثة خاملة بعد آخر تغيير له. 0 يحتفظ بها كلها.",
658
+ "kvcoder.ui.artifacts.delete": "حذف",
659
+ "kvcoder.ui.artifacts.deleteConfirm": "هل تريد حذف هذا المُخرَج؟"
628
660
  }
package/locales/en.json CHANGED
@@ -55,8 +55,8 @@
55
55
  "kvcoder.ui.seconds": "{count} s",
56
56
  "kvcoder.ui.minutes": "{count} min",
57
57
  "kvcoder.ui.totals": "{time} · {cost}",
58
- "kvcoder.ui.turnSoFar": "Turn: {steps} steps · about {cost}",
59
- "kvcoder.ui.turnSteps": "Turn: {steps} steps",
58
+ "kvcoder.ui.turnSoFar": "Turn: {steps} steps · {time} · about {cost}",
59
+ "kvcoder.ui.turnSteps": "Turn: {steps} steps · {time}",
60
60
  "kvcoder.ui.staging.changed": "This run changed what is staged in Git ({paths} paths).",
61
61
  "kvcoder.ui.staging.headMoved": "This run moved HEAD, so staging can't be restored here.",
62
62
  "kvcoder.ui.staging.restore": "Restore staging",
@@ -67,7 +67,7 @@
67
67
  "kvcoder.ui.costParts": "Of it: summaries {summary}, title {title}, helpers {helpers}",
68
68
  "kvcoder.ui.costEstimate": "Cost is an estimate from the model catalog",
69
69
  "kvcoder.ui.memoryDetail": "The model now holds {tokens} of its {window} tokens. Older messages are summarized at {at}%.",
70
- "kvcoder.ui.turns": "Turns: {count}",
70
+ "kvcoder.ui.turns": "{count} turn | {count} turns",
71
71
  "kvcoder.ui.exitCode": "exit {code}",
72
72
  "kvcoder.ui.retry": "Retry",
73
73
  "kvcoder.ui.loadFailed": "This chat couldn't be loaded: {error}",
@@ -89,7 +89,7 @@
89
89
  "kvcoder.ui.other": "Something else",
90
90
  "kvcoder.ui.yes": "Yes",
91
91
  "kvcoder.ui.no": "No",
92
- "kvcoder.ui.allowCommands": "Allow these commands? ({count})",
92
+ "kvcoder.ui.allowCommands": "Allow this command? | Allow these {count} commands?",
93
93
  "kvcoder.ui.allow": "Allow",
94
94
  "kvcoder.ui.approval.denyWhy": "Deny and say why…",
95
95
  "kvcoder.ui.approval.reason": "What should the agent do instead?",
@@ -119,7 +119,7 @@
119
119
  "kvcoder.ui.preparing": "Preparing a command…",
120
120
  "kvcoder.ui.searchModels": "Search models",
121
121
  "kvcoder.ui.noModels": "No models match",
122
- "kvcoder.ui.modelsCount": "{shown} of {total} models",
122
+ "kvcoder.ui.modelsCount": "{shown} of {count} model | {shown} of {count} models",
123
123
  "kvcoder.ui.activity.waiting": "Waiting for the model…",
124
124
  "kvcoder.ui.activity.thinking": "Thinking…",
125
125
  "kvcoder.ui.activity.writing": "Writing…",
@@ -152,8 +152,8 @@
152
152
  "kvcoder.ui.approvalLine.change": "Change",
153
153
  "kvcoder.ui.homeWorkspace": "Home",
154
154
  "kvcoder.ui.chatNotHere": "This chat isn't in this workspace.",
155
- "kvcoder.ui.showEarlier": "Show {count} earlier messages",
156
- "kvcoder.ui.earlierMessages": "{count} earlier messages · Export",
155
+ "kvcoder.ui.showEarlier": "Show {count} earlier message | Show {count} earlier messages",
156
+ "kvcoder.ui.earlierMessages": "{count} earlier message · Export | {count} earlier messages · Export",
157
157
  "kvcoder.ui.messageDismisses": "Sending a message skips the questions and denies the commands.",
158
158
  "kvcoder.ui.promptTitle": "The exact system prompt the next step sends",
159
159
  "kvcoder.ui.copy": "Copy",
@@ -193,7 +193,7 @@
193
193
  "kvcoder.session.fork.description": "Copies a session's messages, and its summary, through a seq into a new session.",
194
194
  "kvcoder.session.export.description": "Writes a session, its turns and messages, and its subagent sessions to a JSON file.",
195
195
  "kvcoder.session.title.description": "Writes a session's title from its first turn.",
196
- "kvcoder.session.prune.description": "Deletes the oldest idle top-level sessions beyond kvcoder.sessions.keep.",
196
+ "kvcoder.session.prune.description": "Deletes the oldest idle top-level sessions beyond kvcoder.sessions.keep, then the artifacts older than kvcoder.artifacts.keepDays.",
197
197
  "kvcoder.message.send.description": "Sends the person's message: it starts a turn, steers the running one, or answers a waiting one. A repeat with the same sendId is acknowledged and adds nothing.",
198
198
  "kvcoder.message.inject.description": "Adds an extension's message to a session, as the person's message would be, marked as the extension's.",
199
199
  "kvcoder.context.get.description": "Gives the size of a session's prompt in tokens, its model's context window, and the share at which older messages are summarized.",
@@ -269,6 +269,8 @@
269
269
  "kvcoder.delegate.model.description": "The model a helper uses when its worker names none.",
270
270
  "kvcoder.thinking.title": "Thinking",
271
271
  "kvcoder.thinking.description": "How hard the model thinks in a new chat.",
272
+ "kvcoder.delegate.thinking.title": "Helpers' thinking",
273
+ "kvcoder.delegate.thinking.description": "How hard a helper thinks when its worker sets no level. Medium keeps helpers quick; a higher level is slower and costlier.",
272
274
  "kvcoder.maxSteps.title": "Steps per turn",
273
275
  "kvcoder.maxSteps.description": "The most steps a turn takes before it stops. Leave it empty for no limit.",
274
276
  "kvcoder.preferences.title": "Your preferences",
@@ -309,6 +311,7 @@
309
311
  "kvcoder.job.list.description": "A chat's newest 50 background jobs (processes, subagents, and program workers' runs), running ones first.",
310
312
  "kvcoder.job.get.description": "One background job of a chat with its output: a process's last 100 lines, a subagent's result, or what a program worker's run returned.",
311
313
  "kvcoder.job.cancel.description": "Stops a running background process or program worker's run of a chat, or cancels its background subagent.",
314
+ "kvcoder.job.restart.description": "Starts a chat's background process again with its line, stopping it first when it runs; starts no turn.",
312
315
  "kvcoder.delegate.staging.restore.description": "Puts back what was staged in Git before a program worker's run; it changes no file and no commit.",
313
316
  "kvcoder.artifact.list.description": "Lists the artifacts of a chat, newest change first.",
314
317
  "kvcoder.artifact.get.description": "Gives one artifact of a chat with its content.",
@@ -355,7 +358,7 @@
355
358
  "kvcoder.ui.map.evidence": "Evidence",
356
359
  "kvcoder.ui.map.note": "Note",
357
360
  "kvcoder.ui.map.noted": "Noted for later ({count})",
358
- "kvcoder.ui.map.remaining": "{count} steps of the execution map are not done.",
361
+ "kvcoder.ui.map.remaining": "{count} step of the execution map is not done. | {count} steps of the execution map are not done.",
359
362
  "kvcoder.ui.map.continue": "Continue",
360
363
  "kvcoder.ui.map.continueMessage": "Continue.",
361
364
  "kvcoder.ui.map.show": "Show the map",
@@ -414,7 +417,7 @@
414
417
  "kvcoder.config.mcp.empty": "No servers yet. Add one and the agent can use its tools.",
415
418
  "kvcoder.config.mcp.add": "Add a server",
416
419
  "kvcoder.config.mcp.checking": "Checking…",
417
- "kvcoder.config.mcp.ready": "Ready · {count} tools",
420
+ "kvcoder.config.mcp.ready": "Ready · {count} tool | Ready · {count} tools",
418
421
  "kvcoder.config.mcp.signInNeeded": "Sign-in needed",
419
422
  "kvcoder.config.mcp.failed": "Could not connect",
420
423
  "kvcoder.config.mcp.recheck": "Check again",
@@ -501,7 +504,7 @@
501
504
  "kvcoder.config.workers.form.model": "Model",
502
505
  "kvcoder.config.workers.form.sameModel": "Same as the chat",
503
506
  "kvcoder.config.workers.form.thinking": "Thinking",
504
- "kvcoder.config.workers.form.sameThinking": "Same as the chat",
507
+ "kvcoder.config.workers.form.sameThinking": "Helpers' default",
505
508
  "kvcoder.config.workers.form.save": "Save",
506
509
  "kvcoder.config.workers.invalid.nameEmpty": "Give the worker a name.",
507
510
  "kvcoder.config.workers.invalid.nameShape": "Use lowercase letters, digits, and dashes, starting with a letter.",
@@ -558,18 +561,19 @@
558
561
  "kvcoder.ui.call.write": "Write",
559
562
  "kvcoder.ui.call.read": "Read",
560
563
  "kvcoder.ui.call.list": "List",
561
- "kvcoder.ui.fold.read": "Read {count}",
562
- "kvcoder.ui.fold.searched": "Searched {count}",
563
- "kvcoder.ui.fold.changed": "Changed {count}",
564
- "kvcoder.ui.fold.ran": "Ran {count}",
565
- "kvcoder.ui.fold.other": "Other {count}",
566
- "kvcoder.ui.fold.failed": "Failed {count}",
564
+ "kvcoder.ui.fold.read": "read {count} file | read {count} files",
565
+ "kvcoder.ui.fold.searched": "ran {count} search | ran {count} searches",
566
+ "kvcoder.ui.fold.changed": "changed {count} file | changed {count} files",
567
+ "kvcoder.ui.fold.ran": "ran {count} command | ran {count} commands",
568
+ "kvcoder.ui.fold.other": "used {count} other tool | used {count} other tools",
569
+ "kvcoder.ui.fold.failed": "{count} failed",
570
+ "kvcoder.ui.fold.list": "{first}, {next}",
567
571
  "kvcoder.ui.call.fetch": "Fetch",
568
572
  "kvcoder.ui.call.find": "Find",
569
- "kvcoder.ui.call.files": "{count} files",
573
+ "kvcoder.ui.call.files": "{count} file | {count} files",
570
574
  "kvcoder.ui.call.fileNotRead": "Not read: the files before it used this call's 30 KB.",
571
575
  "kvcoder.ui.call.fileUnchanged": "Unchanged since an earlier read in this chat.",
572
- "kvcoder.ui.call.filesFirst": "The first {count} files",
576
+ "kvcoder.ui.call.filesFirst": "The first {count} file | The first {count} files",
573
577
  "kvcoder.ui.call.search": "Search",
574
578
  "kvcoder.ui.call.tools": "Tools",
575
579
  "kvcoder.ui.call.delegate": "Delegate",
@@ -589,18 +593,18 @@
589
593
  "kvcoder.ui.call.created": "Created · {size}",
590
594
  "kvcoder.ui.call.replaced": "Replaced · {size}",
591
595
  "kvcoder.ui.call.lines": "Lines {from}–{to} of {total}",
592
- "kvcoder.ui.call.entries": "{count} entries",
593
- "kvcoder.ui.call.entriesFirst": "The first {count} entries",
594
- "kvcoder.ui.call.matchCount": "Matches: {count}",
595
- "kvcoder.ui.call.matches": "{matches} matches in {files} files",
596
- "kvcoder.ui.call.matchesFirst": "The first {matches} matches in {files} files",
597
- "kvcoder.ui.call.toolCount": "{count} tools",
598
- "kvcoder.ui.call.runCount": "{count} runs",
599
- "kvcoder.ui.call.bytes": "{count} bytes",
596
+ "kvcoder.ui.call.entries": "{count} entry | {count} entries",
597
+ "kvcoder.ui.call.entriesFirst": "The first {count} entry | The first {count} entries",
598
+ "kvcoder.ui.call.matchCount": "{count} match | {count} matches",
599
+ "kvcoder.ui.call.matches": "{matches} in {files}",
600
+ "kvcoder.ui.call.matchesFirst": "The first {count} match | The first {count} matches",
601
+ "kvcoder.ui.call.toolCount": "{count} tool | {count} tools",
602
+ "kvcoder.ui.call.runCount": "{count} run | {count} runs",
603
+ "kvcoder.ui.call.bytes": "{count} byte | {count} bytes",
600
604
  "kvcoder.ui.call.kilobytes": "{count} KB",
601
605
  "kvcoder.ui.call.megabytes": "{count} MB",
602
606
  "kvcoder.ui.call.risky": "Risky",
603
- "kvcoder.ui.call.replacements": "Replaced: {count} · from line {line}",
607
+ "kvcoder.ui.call.replacements": "{count} replacement · from line {line} | {count} replacements · from line {line}",
604
608
  "kvcoder.ui.call.showAll": "Show all {count} lines",
605
609
  "kvcoder.ui.call.showFewer": "Show fewer",
606
610
  "kvcoder.ui.call.error": "Error",
@@ -624,5 +628,33 @@
624
628
  "kvcoder.ui.failure.denied": "You denied this call.",
625
629
  "kvcoder.ui.call.showDetails": "Show details",
626
630
  "kvcoder.ui.call.hideDetails": "Hide details",
627
- "kvcoder.ui.failure.command": "The command failed."
631
+ "kvcoder.ui.failure.command": "The command failed.",
632
+ "kvcoder.ui.history": "History",
633
+ "kvcoder.ui.host.openDiff": "Open diff",
634
+ "kvcoder.ui.host.proposed": "{name} (proposed)",
635
+ "kvcoder.ui.host.open": "Open",
636
+ "kvcoder.file.preview.get.description": "Gives a file as an fs edit or fs write would leave it, with its absolute path; writes nothing.",
637
+ "kvcoder.delegate.thinking.options.off": "Off",
638
+ "kvcoder.delegate.thinking.options.minimal": "Minimal",
639
+ "kvcoder.delegate.thinking.options.low": "Low",
640
+ "kvcoder.delegate.thinking.options.medium": "Medium",
641
+ "kvcoder.delegate.thinking.options.high": "High",
642
+ "kvcoder.thinking.options.xhigh": "Extra high",
643
+ "kvcoder.thinking.options.max": "Max",
644
+ "kvcoder.delegate.thinking.options.xhigh": "Extra high",
645
+ "kvcoder.delegate.thinking.options.max": "Max",
646
+ "kvcoder.ui.call.exit": "exit {code}",
647
+ "kvcoder.ui.mapStepNow": "Step: {title}",
648
+ "kvcoder.ui.thinkingSlower": "Slower and costlier",
649
+ "kvcoder.ui.changes.scope.turn": "This turn",
650
+ "kvcoder.ui.changes.scope.chat": "Whole chat",
651
+ "kvcoder.ui.changes.scopeLabel": "Which changes",
652
+ "kvcoder.ui.jobs.restart": "Restart",
653
+ "kvcoder.ui.jobs.runAgain": "Run again",
654
+ "kvcoder.ui.jobs.ended": "Background ({count})",
655
+ "kvcoder.artifact.delete.description": "Deletes an artifact that is superseded or no longer true.",
656
+ "kvcoder.artifacts.keepDays.title": "Days to keep artifacts",
657
+ "kvcoder.artifacts.keepDays.description": "How many days an idle chat's artifact is kept after its last change. 0 keeps them all.",
658
+ "kvcoder.ui.artifacts.delete": "Delete",
659
+ "kvcoder.ui.artifacts.deleteConfirm": "Delete this artifact?"
628
660
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kvman/kvcoder",
3
- "version": "0.1.12",
3
+ "version": "0.1.14",
4
4
  "description": "kvcoder: the app-building harness, with one run tool over connectors, sections, and its conversation UI.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -33,10 +33,10 @@
33
33
  "locales"
34
34
  ],
35
35
  "peerDependencies": {
36
- "@kvman/sdk": "^0.1.3"
36
+ "@kvman/sdk": "^0.1.5"
37
37
  },
38
38
  "dependencies": {
39
- "@kvman/kvai": "0.1.5",
39
+ "@kvman/kvai": "0.1.7",
40
40
  "@lucide/vue": "1.49.0",
41
41
  "@modelcontextprotocol/sdk": "1.32.1",
42
42
  "cross-spawn": "7.0.6",
@@ -44,9 +44,9 @@
44
44
  "vue": "3.5.43"
45
45
  },
46
46
  "devDependencies": {
47
- "@kvman/kvwebui": "0.1.5",
48
- "@kvman/sdk": "0.1.3",
49
- "@kvman/testkit": "0.1.7",
47
+ "@kvman/kvwebui": "0.1.7",
48
+ "@kvman/sdk": "0.1.5",
49
+ "@kvman/testkit": "0.1.9",
50
50
  "@types/cross-spawn": "6.0.6",
51
51
  "@types/turndown": "5.0.6",
52
52
  "@vitejs/plugin-vue": "6.0.9",