@kvman/kvcoder 0.1.6 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.d.ts +49 -3
- package/dist/api.d.ts.map +1 -1
- package/dist/calls/run-shell.d.ts.map +1 -1
- package/dist/calls/run-shell.js +39 -9
- package/dist/calls/run-shell.js.map +1 -1
- package/dist/connector-call.d.ts +1 -1
- package/dist/connector-call.d.ts.map +1 -1
- package/dist/connector-call.js +4 -2
- package/dist/connector-call.js.map +1 -1
- package/dist/connectors/artifact.d.ts +1 -1
- package/dist/connectors/artifact.d.ts.map +1 -1
- package/dist/connectors/artifact.js +4 -4
- package/dist/connectors/artifact.js.map +1 -1
- package/dist/connectors/ask.d.ts +24 -0
- package/dist/connectors/ask.d.ts.map +1 -1
- package/dist/connectors/ask.js +20 -11
- package/dist/connectors/ask.js.map +1 -1
- package/dist/connectors/background.d.ts +14 -1
- package/dist/connectors/background.d.ts.map +1 -1
- package/dist/connectors/background.js +53 -23
- package/dist/connectors/background.js.map +1 -1
- package/dist/connectors/builtin-connectors.d.ts +110 -0
- package/dist/connectors/builtin-connectors.d.ts.map +1 -1
- package/dist/connectors/builtin-connectors.js +4 -1
- package/dist/connectors/builtin-connectors.js.map +1 -1
- package/dist/connectors/delegate.d.ts +3 -2
- package/dist/connectors/delegate.d.ts.map +1 -1
- package/dist/connectors/delegate.js +27 -9
- package/dist/connectors/delegate.js.map +1 -1
- package/dist/connectors/execution-map.d.ts +62 -0
- package/dist/connectors/execution-map.d.ts.map +1 -0
- package/dist/connectors/execution-map.js +142 -0
- package/dist/connectors/execution-map.js.map +1 -0
- package/dist/connectors/fs.d.ts +32 -1
- package/dist/connectors/fs.d.ts.map +1 -1
- package/dist/connectors/fs.js +76 -45
- package/dist/connectors/fs.js.map +1 -1
- package/dist/connectors/mcp.d.ts +18 -1
- package/dist/connectors/mcp.d.ts.map +1 -1
- package/dist/connectors/mcp.js +54 -6
- package/dist/connectors/mcp.js.map +1 -1
- package/dist/connectors/payload-fields.d.ts.map +1 -1
- package/dist/connectors/payload-fields.js +1 -1
- package/dist/connectors/payload-fields.js.map +1 -1
- package/dist/delegate/approved-run.d.ts +4 -6
- package/dist/delegate/approved-run.d.ts.map +1 -1
- package/dist/delegate/approved-run.js +74 -34
- package/dist/delegate/approved-run.js.map +1 -1
- package/dist/delegate/git-staging.d.ts +12 -0
- package/dist/delegate/git-staging.d.ts.map +1 -0
- package/dist/delegate/git-staging.js +54 -0
- package/dist/delegate/git-staging.js.map +1 -0
- package/dist/delegate/permission.d.ts +240 -0
- package/dist/delegate/permission.d.ts.map +1 -0
- package/dist/delegate/permission.js +78 -0
- package/dist/delegate/permission.js.map +1 -0
- package/dist/delegate/program-permission.d.ts +27 -0
- package/dist/delegate/program-permission.d.ts.map +1 -0
- package/dist/delegate/program-permission.js +53 -0
- package/dist/delegate/program-permission.js.map +1 -0
- package/dist/delegate/register-worker-run.d.ts.map +1 -1
- package/dist/delegate/register-worker-run.js +27 -11
- package/dist/delegate/register-worker-run.js.map +1 -1
- package/dist/delegate/run-program.d.ts.map +1 -1
- package/dist/delegate/run-program.js +29 -8
- package/dist/delegate/run-program.js.map +1 -1
- package/dist/delegate/runs.d.ts +14 -4
- package/dist/delegate/runs.d.ts.map +1 -1
- package/dist/delegate/runs.js +49 -19
- package/dist/delegate/runs.js.map +1 -1
- package/dist/delegate/staging-guard.d.ts +9 -0
- package/dist/delegate/staging-guard.d.ts.map +1 -0
- package/dist/delegate/staging-guard.js +55 -0
- package/dist/delegate/staging-guard.js.map +1 -0
- package/dist/delegate/start-background.d.ts +7 -0
- package/dist/delegate/start-background.d.ts.map +1 -0
- package/dist/delegate/start-background.js +32 -0
- package/dist/delegate/start-background.js.map +1 -0
- package/dist/delegate/start-pending.d.ts +5 -0
- package/dist/delegate/start-pending.d.ts.map +1 -0
- package/dist/delegate/start-pending.js +42 -0
- package/dist/delegate/start-pending.js.map +1 -0
- package/dist/delegate/workers.d.ts +5 -2
- package/dist/delegate/workers.d.ts.map +1 -1
- package/dist/delegate/workers.js +44 -8
- package/dist/delegate/workers.js.map +1 -1
- package/dist/files/file-change.d.ts +28 -0
- package/dist/files/file-change.d.ts.map +1 -0
- package/dist/files/file-change.js +125 -0
- package/dist/files/file-change.js.map +1 -0
- package/dist/files/file-parts.d.ts +18 -0
- package/dist/files/file-parts.d.ts.map +1 -0
- package/dist/files/file-parts.js +40 -0
- package/dist/files/file-parts.js.map +1 -0
- package/dist/files/read-file.d.ts +9 -1
- package/dist/files/read-file.d.ts.map +1 -1
- package/dist/files/read-file.js +35 -13
- package/dist/files/read-file.js.map +1 -1
- package/dist/files/search-text.d.ts +12 -2
- package/dist/files/search-text.d.ts.map +1 -1
- package/dist/files/search-text.js +87 -23
- package/dist/files/search-text.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/jobs/job-rows.d.ts +11 -2
- package/dist/jobs/job-rows.d.ts.map +1 -1
- package/dist/jobs/job-rows.js +24 -13
- package/dist/jobs/job-rows.js.map +1 -1
- package/dist/jobs/process-handlers.d.ts.map +1 -1
- package/dist/jobs/process-handlers.js +12 -1
- package/dist/jobs/process-handlers.js.map +1 -1
- package/dist/jobs/process-report.d.ts.map +1 -1
- package/dist/jobs/process-report.js +2 -1
- package/dist/jobs/process-report.js.map +1 -1
- package/dist/jobs/process-run.d.ts.map +1 -1
- package/dist/jobs/process-run.js +2 -1
- package/dist/jobs/process-run.js.map +1 -1
- package/dist/jobs/register-jobs.d.ts.map +1 -1
- package/dist/jobs/register-jobs.js +1 -0
- package/dist/jobs/register-jobs.js.map +1 -1
- package/dist/maps/map-reminder.d.ts +7 -0
- package/dist/maps/map-reminder.d.ts.map +1 -0
- package/dist/maps/map-reminder.js +24 -0
- package/dist/maps/map-reminder.js.map +1 -0
- package/dist/maps/map-rules.d.ts +36 -0
- package/dist/maps/map-rules.d.ts.map +1 -0
- package/dist/maps/map-rules.js +86 -0
- package/dist/maps/map-rules.js.map +1 -0
- package/dist/maps/map-schema.d.ts +55 -0
- package/dist/maps/map-schema.d.ts.map +1 -0
- package/dist/maps/map-schema.js +27 -0
- package/dist/maps/map-schema.js.map +1 -0
- package/dist/maps/register-maps.d.ts +3 -0
- package/dist/maps/register-maps.d.ts.map +1 -0
- package/dist/maps/register-maps.js +21 -0
- package/dist/maps/register-maps.js.map +1 -0
- package/dist/mcp/connect.d.ts +2 -0
- package/dist/mcp/connect.d.ts.map +1 -1
- package/dist/mcp/connect.js +16 -4
- package/dist/mcp/connect.js.map +1 -1
- package/dist/mcp/oauth-provider.d.ts +8 -5
- package/dist/mcp/oauth-provider.d.ts.map +1 -1
- package/dist/mcp/oauth-provider.js +31 -22
- package/dist/mcp/oauth-provider.js.map +1 -1
- package/dist/mcp/secrets.d.ts +2 -0
- package/dist/mcp/secrets.d.ts.map +1 -1
- package/dist/mcp/secrets.js +6 -0
- package/dist/mcp/secrets.js.map +1 -1
- package/dist/mcp/sign-in.d.ts.map +1 -1
- package/dist/mcp/sign-in.js +12 -4
- package/dist/mcp/sign-in.js.map +1 -1
- package/dist/messages/receive-message.d.ts +2 -1
- package/dist/messages/receive-message.d.ts.map +1 -1
- package/dist/messages/receive-message.js +34 -9
- package/dist/messages/receive-message.js.map +1 -1
- package/dist/messages/register-messages.d.ts.map +1 -1
- package/dist/messages/register-messages.js +13 -8
- package/dist/messages/register-messages.js.map +1 -1
- package/dist/messages/send-receipt.d.ts +10 -0
- package/dist/messages/send-receipt.d.ts.map +1 -0
- package/dist/messages/send-receipt.js +14 -0
- package/dist/messages/send-receipt.js.map +1 -0
- package/dist/prompt/build-prompt.d.ts +1 -0
- package/dist/prompt/build-prompt.d.ts.map +1 -1
- package/dist/prompt/build-prompt.js +5 -1
- package/dist/prompt/build-prompt.js.map +1 -1
- package/dist/prompt/project-rules.d.ts +6 -0
- package/dist/prompt/project-rules.d.ts.map +1 -0
- package/dist/prompt/project-rules.js +37 -0
- package/dist/prompt/project-rules.js.map +1 -0
- package/dist/prompt/session-grants.d.ts +209 -0
- package/dist/prompt/session-grants.d.ts.map +1 -0
- package/dist/prompt/session-grants.js +50 -0
- package/dist/prompt/session-grants.js.map +1 -0
- package/dist/prompt/session-prompt.d.ts +3 -2
- package/dist/prompt/session-prompt.d.ts.map +1 -1
- package/dist/prompt/session-prompt.js +24 -40
- package/dist/prompt/session-prompt.js.map +1 -1
- package/dist/prompt/working-method.d.ts.map +1 -1
- package/dist/prompt/working-method.js +23 -17
- package/dist/prompt/working-method.js.map +1 -1
- package/dist/register-settings.d.ts +3 -1
- package/dist/register-settings.d.ts.map +1 -1
- package/dist/register-settings.js +5 -4
- package/dist/register-settings.js.map +1 -1
- package/dist/registry/register-connectors.d.ts +9 -0
- package/dist/registry/register-connectors.d.ts.map +1 -1
- package/dist/registry/register-connectors.js +20 -12
- package/dist/registry/register-connectors.js.map +1 -1
- package/dist/result-text.d.ts +4 -0
- package/dist/result-text.d.ts.map +1 -1
- package/dist/result-text.js +9 -0
- package/dist/result-text.js.map +1 -1
- package/dist/schemas/records.d.ts +142 -0
- package/dist/schemas/records.d.ts.map +1 -1
- package/dist/schemas/records.js +60 -2
- package/dist/schemas/records.js.map +1 -1
- package/dist/sessions/execution-root.d.ts +8 -0
- package/dist/sessions/execution-root.d.ts.map +1 -0
- package/dist/sessions/execution-root.js +25 -0
- package/dist/sessions/execution-root.js.map +1 -0
- package/dist/sessions/new-session.d.ts +5 -1
- package/dist/sessions/new-session.d.ts.map +1 -1
- package/dist/sessions/new-session.js +17 -4
- package/dist/sessions/new-session.js.map +1 -1
- package/dist/sessions/register-context.d.ts.map +1 -1
- package/dist/sessions/register-context.js +6 -5
- package/dist/sessions/register-context.js.map +1 -1
- package/dist/sessions/register-fork-export.d.ts.map +1 -1
- package/dist/sessions/register-fork-export.js +5 -3
- package/dist/sessions/register-fork-export.js.map +1 -1
- package/dist/sessions/register-lifecycle.d.ts.map +1 -1
- package/dist/sessions/register-lifecycle.js +14 -5
- package/dist/sessions/register-lifecycle.js.map +1 -1
- package/dist/sessions/register-sessions.d.ts.map +1 -1
- package/dist/sessions/register-sessions.js +0 -2
- package/dist/sessions/register-sessions.js.map +1 -1
- package/dist/sessions/session-view.d.ts +23 -0
- package/dist/sessions/session-view.d.ts.map +1 -1
- package/dist/sessions/session-view.js +4 -1
- package/dist/sessions/session-view.js.map +1 -1
- package/dist/store/all-docs.d.ts +4 -0
- package/dist/store/all-docs.d.ts.map +1 -0
- package/dist/store/all-docs.js +14 -0
- package/dist/store/all-docs.js.map +1 -0
- package/dist/store/collections.d.ts +230 -0
- package/dist/store/collections.d.ts.map +1 -1
- package/dist/store/collections.js +16 -1
- package/dist/store/collections.js.map +1 -1
- package/dist/turns/answer-fingerprint.d.ts +4 -0
- package/dist/turns/answer-fingerprint.d.ts.map +1 -0
- package/dist/turns/answer-fingerprint.js +18 -0
- package/dist/turns/answer-fingerprint.js.map +1 -0
- package/dist/turns/apply-answer.d.ts +19 -0
- package/dist/turns/apply-answer.d.ts.map +1 -0
- package/dist/turns/apply-answer.js +47 -0
- package/dist/turns/apply-answer.js.map +1 -0
- package/dist/turns/background.d.ts +3 -0
- package/dist/turns/background.d.ts.map +1 -1
- package/dist/turns/background.js +13 -12
- package/dist/turns/background.js.map +1 -1
- package/dist/turns/call-permission.d.ts +22 -0
- package/dist/turns/call-permission.d.ts.map +1 -0
- package/dist/turns/call-permission.js +49 -0
- package/dist/turns/call-permission.js.map +1 -0
- package/dist/turns/cancel-step-job.d.ts +14 -0
- package/dist/turns/cancel-step-job.d.ts.map +1 -0
- package/dist/turns/cancel-step-job.js +35 -0
- package/dist/turns/cancel-step-job.js.map +1 -0
- package/dist/turns/child-result.d.ts +7 -0
- package/dist/turns/child-result.d.ts.map +1 -0
- package/dist/turns/child-result.js +24 -0
- package/dist/turns/child-result.js.map +1 -0
- package/dist/turns/compaction.d.ts +15 -1
- package/dist/turns/compaction.d.ts.map +1 -1
- package/dist/turns/compaction.js +44 -16
- package/dist/turns/compaction.js.map +1 -1
- package/dist/turns/end-turn-state.d.ts +42 -0
- package/dist/turns/end-turn-state.d.ts.map +1 -0
- package/dist/turns/end-turn-state.js +64 -0
- package/dist/turns/end-turn-state.js.map +1 -0
- package/dist/turns/end-turn.d.ts +7 -8
- package/dist/turns/end-turn.d.ts.map +1 -1
- package/dist/turns/end-turn.js +52 -55
- package/dist/turns/end-turn.js.map +1 -1
- package/dist/turns/helper-calls.d.ts +6 -0
- package/dist/turns/helper-calls.d.ts.map +1 -0
- package/dist/turns/helper-calls.js +8 -0
- package/dist/turns/helper-calls.js.map +1 -0
- package/dist/turns/history.d.ts +3 -1
- package/dist/turns/history.d.ts.map +1 -1
- package/dist/turns/history.js +15 -7
- package/dist/turns/history.js.map +1 -1
- package/dist/turns/lost-reply.d.ts +7 -0
- package/dist/turns/lost-reply.d.ts.map +1 -1
- package/dist/turns/lost-reply.js +12 -0
- package/dist/turns/lost-reply.js.map +1 -1
- package/dist/turns/message-blocks.d.ts +2 -0
- package/dist/turns/message-blocks.d.ts.map +1 -1
- package/dist/turns/message-blocks.js +7 -0
- package/dist/turns/message-blocks.js.map +1 -1
- package/dist/turns/model-context.d.ts +2 -0
- package/dist/turns/model-context.d.ts.map +1 -1
- package/dist/turns/model-context.js +23 -4
- package/dist/turns/model-context.js.map +1 -1
- package/dist/turns/model-retry.d.ts +2 -1
- package/dist/turns/model-retry.d.ts.map +1 -1
- package/dist/turns/model-retry.js +5 -1
- package/dist/turns/model-retry.js.map +1 -1
- package/dist/turns/read-only.d.ts +6 -0
- package/dist/turns/read-only.d.ts.map +1 -0
- package/dist/turns/read-only.js +12 -0
- package/dist/turns/read-only.js.map +1 -0
- package/dist/turns/receipt-job.d.ts +5 -0
- package/dist/turns/receipt-job.d.ts.map +1 -0
- package/dist/turns/receipt-job.js +40 -0
- package/dist/turns/receipt-job.js.map +1 -0
- package/dist/turns/recover-workspace.d.ts +9 -0
- package/dist/turns/recover-workspace.d.ts.map +1 -0
- package/dist/turns/recover-workspace.js +79 -0
- package/dist/turns/recover-workspace.js.map +1 -0
- package/dist/turns/recovery-state.d.ts +19 -0
- package/dist/turns/recovery-state.d.ts.map +1 -0
- package/dist/turns/recovery-state.js +87 -0
- package/dist/turns/recovery-state.js.map +1 -0
- package/dist/turns/register-interruptions.d.ts.map +1 -1
- package/dist/turns/register-interruptions.js +19 -8
- package/dist/turns/register-interruptions.js.map +1 -1
- package/dist/turns/register-turns.d.ts.map +1 -1
- package/dist/turns/register-turns.js +42 -31
- package/dist/turns/register-turns.js.map +1 -1
- package/dist/turns/resolve.d.ts +4 -0
- package/dist/turns/resolve.d.ts.map +1 -1
- package/dist/turns/resolve.js +19 -17
- package/dist/turns/resolve.js.map +1 -1
- package/dist/turns/retry-turn.d.ts +4 -0
- package/dist/turns/retry-turn.d.ts.map +1 -0
- package/dist/turns/retry-turn.js +20 -0
- package/dist/turns/retry-turn.js.map +1 -0
- package/dist/turns/run-calls.d.ts +21 -4
- package/dist/turns/run-calls.d.ts.map +1 -1
- package/dist/turns/run-calls.js +157 -41
- package/dist/turns/run-calls.js.map +1 -1
- package/dist/turns/run-command.d.ts +5 -3
- package/dist/turns/run-command.d.ts.map +1 -1
- package/dist/turns/run-command.js +21 -12
- package/dist/turns/run-command.js.map +1 -1
- package/dist/turns/settle-calls.d.ts +2 -8
- package/dist/turns/settle-calls.d.ts.map +1 -1
- package/dist/turns/settle-calls.js +26 -35
- package/dist/turns/settle-calls.js.map +1 -1
- package/dist/turns/start-turn.d.ts +8 -83
- package/dist/turns/start-turn.d.ts.map +1 -1
- package/dist/turns/start-turn.js +35 -24
- package/dist/turns/start-turn.js.map +1 -1
- package/dist/turns/step-claim.d.ts +39 -0
- package/dist/turns/step-claim.d.ts.map +1 -0
- package/dist/turns/step-claim.js +72 -0
- package/dist/turns/step-claim.js.map +1 -0
- package/dist/turns/step-intents.d.ts +31 -0
- package/dist/turns/step-intents.d.ts.map +1 -0
- package/dist/turns/step-intents.js +101 -0
- package/dist/turns/step-intents.js.map +1 -0
- package/dist/turns/step-next.d.ts +17 -0
- package/dist/turns/step-next.d.ts.map +1 -0
- package/dist/turns/step-next.js +25 -0
- package/dist/turns/step-next.js.map +1 -0
- package/dist/turns/step.d.ts +1 -1
- package/dist/turns/step.d.ts.map +1 -1
- package/dist/turns/step.js +108 -88
- package/dist/turns/step.js.map +1 -1
- package/dist/turns/summary-facts.d.ts +25 -0
- package/dist/turns/summary-facts.d.ts.map +1 -0
- package/dist/turns/summary-facts.js +63 -0
- package/dist/turns/summary-facts.js.map +1 -0
- package/dist/turns/usage.d.ts +7 -0
- package/dist/turns/usage.d.ts.map +1 -0
- package/dist/turns/usage.js +18 -0
- package/dist/turns/usage.js.map +1 -0
- package/dist/ui/register-ui.js +3 -3
- package/dist/ui/register-ui.js.map +1 -1
- package/dist/web/components/approval.css +2 -0
- package/dist/web/components/approval.js +233 -0
- package/dist/web/components/call.css +1 -1
- package/dist/web/components/call.js +430 -304
- package/dist/web/components/connectors.css +1 -1
- package/dist/web/components/connectors.js +595 -592
- package/dist/web/components/conversation.css +1 -1
- package/dist/web/components/conversation.js +2978 -1637
- package/dist/web/components/mcp-sign-in.css +1 -1
- package/dist/web/components/model.css +1 -1
- package/dist/web/components/model.js +138 -134
- package/dist/web/components/question.css +1 -1
- package/dist/web/components/question.js +148 -78
- package/dist/web/components/sessions.css +1 -1
- package/docs/connectors.md +3 -3
- package/locales/ar.json +95 -13
- package/locales/en.json +95 -13
- package/package.json +6 -6
- package/dist/turns/cancel-turn.d.ts +0 -3
- package/dist/turns/cancel-turn.d.ts.map +0 -1
- package/dist/turns/cancel-turn.js +0 -31
- package/dist/turns/cancel-turn.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, createVNode as s, defineComponent as c, h as l, inject as u,
|
|
1
|
+
import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, createVNode as s, defineComponent as c, h as l, inject as u, mergeModels as d, mergeProps as f, nextTick as p, onBeforeUnmount as m, onMounted as h, onUnmounted as g, openBlock as _, reactive as v, ref as y, renderList as b, renderSlot as x, shallowRef as S, toDisplayString as C, unref as w, useModel as T, useTemplateRef as E, vModelCheckbox as D, vModelRadio as O, vModelSelect as k, vModelText as A, watch as j, withCtx as M, withDirectives as N, withKeys as P, withModifiers as F } from "vue";
|
|
2
2
|
//#region ../../node_modules/.pnpm/@lucide+vue@1.49.0_vue@3.5.43_typescript@6.0.3_/node_modules/@lucide/vue/dist/esm/shared/src/build/defaultAttributes.mjs
|
|
3
|
-
var
|
|
3
|
+
var I = {
|
|
4
4
|
xmlns: "http://www.w3.org/2000/svg",
|
|
5
5
|
width: 24,
|
|
6
6
|
height: 24,
|
|
@@ -10,25 +10,25 @@ var L = {
|
|
|
10
10
|
"stroke-width": 2,
|
|
11
11
|
"stroke-linecap": "round",
|
|
12
12
|
"stroke-linejoin": "round"
|
|
13
|
-
},
|
|
13
|
+
}, L = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim();
|
|
14
14
|
//#endregion
|
|
15
15
|
//#region ../../node_modules/.pnpm/@lucide+vue@1.49.0_vue@3.5.43_typescript@6.0.3_/node_modules/@lucide/vue/dist/esm/shared/src/build/buildLucideIconNode.mjs
|
|
16
|
-
function
|
|
16
|
+
function R(e) {
|
|
17
17
|
return e != null;
|
|
18
18
|
}
|
|
19
|
-
function
|
|
20
|
-
let n = t.attributeNames ?? {}, r = (e) => n[e] ?? e, i = e.size ?? e.width ??
|
|
19
|
+
function ee(e, t = {}) {
|
|
20
|
+
let n = t.attributeNames ?? {}, r = (e) => n[e] ?? e, i = e.size ?? e.width ?? I.width, a = e.size ?? e.height ?? I.height, o = e.aliases?.filter((e) => typeof e == "string" && e.trim() !== "").map((e) => `lucide-${e}`) ?? [], s = [...e.name ? [`lucide-${e.name}`] : [], ...o], c = t.className?.split(" ").filter(Boolean) ?? [], l = t.includeDefaultClasses === !1 ? L(...c) : L("lucide", ...s, ...c), u = t.absoluteStrokeWidth ? Number(t.strokeWidth ?? I["stroke-width"]) * Number(e.size ?? e.width ?? I.width) / Number(t.size ?? t.width ?? I.width) : t.strokeWidth ?? I["stroke-width"];
|
|
21
21
|
return [
|
|
22
22
|
"svg",
|
|
23
23
|
{
|
|
24
|
-
...Object.entries(
|
|
24
|
+
...Object.entries(I).reduce((e, [t, n]) => (e[r(t)] = n, e), {}),
|
|
25
25
|
..."color" in t && t.color && { [r("stroke")]: t.color },
|
|
26
|
-
..."size" in t &&
|
|
26
|
+
..."size" in t && R(t.size) && {
|
|
27
27
|
[r("width")]: t.size,
|
|
28
28
|
[r("height")]: t.size
|
|
29
29
|
},
|
|
30
|
-
..."width" in t &&
|
|
31
|
-
..."height" in t &&
|
|
30
|
+
..."width" in t && R(t.width) && { [r("width")]: t.width },
|
|
31
|
+
..."height" in t && R(t.height) && { [r("height")]: t.height },
|
|
32
32
|
[r("stroke-width")]: u,
|
|
33
33
|
...l && { [r("class")]: l },
|
|
34
34
|
[r("viewBox")]: `0 0 ${i} ${a}`,
|
|
@@ -50,24 +50,24 @@ function B(e, t = {}) {
|
|
|
50
50
|
}
|
|
51
51
|
//#endregion
|
|
52
52
|
//#region ../../node_modules/.pnpm/@lucide+vue@1.49.0_vue@3.5.43_typescript@6.0.3_/node_modules/@lucide/vue/dist/esm/shared/src/utils/hasA11yProp.mjs
|
|
53
|
-
var
|
|
53
|
+
var z = (e) => {
|
|
54
54
|
for (let t in e) if (t.startsWith("aria-") || t === "role" || t === "title") return !0;
|
|
55
55
|
return !1;
|
|
56
|
-
},
|
|
57
|
-
function
|
|
58
|
-
return u(
|
|
56
|
+
}, B = (e) => e === "", V = (e) => e?.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), te = /* @__PURE__ */ Symbol("lucide-icons");
|
|
57
|
+
function ne() {
|
|
58
|
+
return u(te, {});
|
|
59
59
|
}
|
|
60
60
|
//#endregion
|
|
61
61
|
//#region ../../node_modules/.pnpm/@lucide+vue@1.49.0_vue@3.5.43_typescript@6.0.3_/node_modules/@lucide/vue/dist/esm/Icon.mjs
|
|
62
|
-
var
|
|
63
|
-
name: e &&
|
|
62
|
+
var re = ({ name: e, iconNode: t, "icon-node": n, icon: r = {
|
|
63
|
+
name: e && V(e),
|
|
64
64
|
node: t ?? n ?? [],
|
|
65
65
|
size: 24,
|
|
66
66
|
aliases: []
|
|
67
67
|
}, absoluteStrokeWidth: i, "absolute-stroke-width": a, nonScalingStroke: o, "non-scaling-stroke": s, strokeWidth: c, "stroke-width": u, size: d, width: f = d, height: p = d, color: m, ...h }, { slots: g }) => {
|
|
68
|
-
let { size: _, color: v, strokeWidth: y = 2, absoluteStrokeWidth: b = !1, nonScalingStroke: x = !1, class: S = "" } =
|
|
68
|
+
let { size: _, color: v, strokeWidth: y = 2, absoluteStrokeWidth: b = !1, nonScalingStroke: x = !1, class: S = "" } = ne(), C = B(i) || B(a) || i === !0 || a === !0 || b === !0, w = B(o) || B(s) || o === !0 || s === !0 || x === !0;
|
|
69
69
|
delete h.class;
|
|
70
|
-
let T = g.default?.(), [, E, D = []] =
|
|
70
|
+
let T = g.default?.(), [, E, D = []] = ee(r, {
|
|
71
71
|
color: m ?? v,
|
|
72
72
|
width: f ?? d ?? _,
|
|
73
73
|
height: p ?? d ?? _,
|
|
@@ -75,38 +75,38 @@ var ne = ({ name: e, iconNode: t, "icon-node": n, icon: r = {
|
|
|
75
75
|
absoluteStrokeWidth: C,
|
|
76
76
|
nonScalingStroke: w,
|
|
77
77
|
className: S,
|
|
78
|
-
hasA11yProp: T != null && T.length > 0 ||
|
|
78
|
+
hasA11yProp: T != null && T.length > 0 || z(h),
|
|
79
79
|
attributes: h
|
|
80
80
|
});
|
|
81
81
|
return l("svg", E, [...D.map(([e, t]) => l(e, t)), ...T ?? []]);
|
|
82
82
|
};
|
|
83
83
|
//#endregion
|
|
84
84
|
//#region ../../node_modules/.pnpm/@lucide+vue@1.49.0_vue@3.5.43_typescript@6.0.3_/node_modules/@lucide/vue/dist/esm/createLucideIcon.mjs
|
|
85
|
-
function
|
|
85
|
+
function H(e, t = []) {
|
|
86
86
|
let n = typeof e == "string" ? {
|
|
87
87
|
name: e,
|
|
88
88
|
node: t
|
|
89
89
|
} : e;
|
|
90
|
-
return (e, { slots: t }) => l(
|
|
90
|
+
return (e, { slots: t }) => l(re, {
|
|
91
91
|
...e,
|
|
92
92
|
icon: n
|
|
93
93
|
}, t.default ? { default: t.default } : void 0);
|
|
94
94
|
}
|
|
95
|
-
var
|
|
95
|
+
var ie = H({
|
|
96
96
|
name: "check",
|
|
97
97
|
size: 24,
|
|
98
98
|
node: [["path", {
|
|
99
99
|
d: "M20 6 9 17l-5-5",
|
|
100
100
|
key: "1gmf2c"
|
|
101
101
|
}]]
|
|
102
|
-
}),
|
|
102
|
+
}), ae = H({
|
|
103
103
|
name: "chevron-down",
|
|
104
104
|
size: 24,
|
|
105
105
|
node: [["path", {
|
|
106
106
|
d: "m6 9 6 6 6-6",
|
|
107
107
|
key: "qrunsl"
|
|
108
108
|
}]]
|
|
109
|
-
}),
|
|
109
|
+
}), U = H({
|
|
110
110
|
name: "pencil",
|
|
111
111
|
size: 24,
|
|
112
112
|
node: [["path", {
|
|
@@ -116,7 +116,7 @@ var re = W({
|
|
|
116
116
|
d: "m15 5 4 4",
|
|
117
117
|
key: "1mk7zo"
|
|
118
118
|
}]]
|
|
119
|
-
}),
|
|
119
|
+
}), W = H({
|
|
120
120
|
name: "plus",
|
|
121
121
|
size: 24,
|
|
122
122
|
node: [["path", {
|
|
@@ -126,7 +126,7 @@ var re = W({
|
|
|
126
126
|
d: "M12 5v14",
|
|
127
127
|
key: "s699le"
|
|
128
128
|
}]]
|
|
129
|
-
}),
|
|
129
|
+
}), oe = H({
|
|
130
130
|
name: "search",
|
|
131
131
|
size: 24,
|
|
132
132
|
node: [["path", {
|
|
@@ -138,7 +138,7 @@ var re = W({
|
|
|
138
138
|
r: "8",
|
|
139
139
|
key: "4ej97u"
|
|
140
140
|
}]]
|
|
141
|
-
}),
|
|
141
|
+
}), G = H({
|
|
142
142
|
name: "settings",
|
|
143
143
|
size: 24,
|
|
144
144
|
node: [["path", {
|
|
@@ -150,7 +150,7 @@ var re = W({
|
|
|
150
150
|
r: "3",
|
|
151
151
|
key: "1v7zrd"
|
|
152
152
|
}]]
|
|
153
|
-
}), se =
|
|
153
|
+
}), se = H({
|
|
154
154
|
name: "trash",
|
|
155
155
|
size: 24,
|
|
156
156
|
node: [
|
|
@@ -176,7 +176,7 @@ var re = W({
|
|
|
176
176
|
}]
|
|
177
177
|
],
|
|
178
178
|
aliases: ["trash-2"]
|
|
179
|
-
}), ce =
|
|
179
|
+
}), ce = H({
|
|
180
180
|
name: "x",
|
|
181
181
|
size: 24,
|
|
182
182
|
node: [["path", {
|
|
@@ -189,7 +189,7 @@ var re = W({
|
|
|
189
189
|
});
|
|
190
190
|
//#endregion
|
|
191
191
|
//#region web/src/kvman.ts
|
|
192
|
-
function
|
|
192
|
+
function K() {
|
|
193
193
|
let e = u("kvman");
|
|
194
194
|
if (e === void 0) throw Error("kvcoder components run inside kvwebui, which provides kvman.");
|
|
195
195
|
return e;
|
|
@@ -212,7 +212,7 @@ function de(e) {
|
|
|
212
212
|
function fe(e) {
|
|
213
213
|
return Object.fromEntries(Object.entries(le(e)).map(([e, t]) => [e, typeof t == "string" ? t : JSON.stringify(t)]));
|
|
214
214
|
}
|
|
215
|
-
function
|
|
215
|
+
function q(e, t) {
|
|
216
216
|
let n = de(t);
|
|
217
217
|
e.toast(n === void 0 ? "kvcoder.ui.failed" : ue(n.code), n?.params ?? {}, "error");
|
|
218
218
|
}
|
|
@@ -229,42 +229,42 @@ var pe = ["aria-label"], me = { class: "kvc-dialog-head" }, he = { class: "kvc-c
|
|
|
229
229
|
props: { name: {} },
|
|
230
230
|
emits: ["close"],
|
|
231
231
|
setup(e, { emit: t }) {
|
|
232
|
-
let n = e, r = t, o =
|
|
232
|
+
let n = e, r = t, o = K(), c = E("dialog"), l = () => [...c.value?.querySelectorAll("button:not(:disabled), select:not(:disabled), input:not(:disabled), textarea:not(:disabled), a[href]") ?? []];
|
|
233
233
|
function u(e) {
|
|
234
234
|
let t = l(), n = e.shiftKey ? t[0] : t.at(-1);
|
|
235
235
|
(document.activeElement === n || document.activeElement === c.value) && (e.preventDefault(), (e.shiftKey ? t.at(-1) : t[0])?.focus());
|
|
236
236
|
}
|
|
237
|
-
return
|
|
237
|
+
return h(() => c.value?.focus()), (e, t) => (_(), i("div", {
|
|
238
238
|
class: "kvc-dialog-backdrop",
|
|
239
239
|
"data-test": "connector-dialog-backdrop",
|
|
240
|
-
onClick: t[2] ||=
|
|
240
|
+
onClick: t[2] ||= F((e) => r("close"), ["self"])
|
|
241
241
|
}, [a("div", {
|
|
242
242
|
ref_key: "dialog",
|
|
243
243
|
ref: c,
|
|
244
244
|
class: "kvc-dialog",
|
|
245
245
|
role: "dialog",
|
|
246
246
|
"aria-modal": "true",
|
|
247
|
-
"aria-label":
|
|
247
|
+
"aria-label": w(o).t("kvcoder.config.connectors.configure", { name: n.name }),
|
|
248
248
|
tabindex: "-1",
|
|
249
249
|
"data-test": "connector-dialog",
|
|
250
|
-
onKeydown: [t[1] ||= F(
|
|
251
|
-
}, [a("div", me, [a("span", he, [a("span", ge,
|
|
250
|
+
onKeydown: [t[1] ||= P(F((e) => r("close"), ["stop"]), ["esc"]), P(u, ["tab"])]
|
|
251
|
+
}, [a("div", me, [a("span", he, [a("span", ge, C(n.name), 1), a("span", _e, C(w(o).t(`kvcoder.config.dialog.scope.${w(o).scope.value}`, { name: w(o).workspace.value.name })), 1)]), a("button", {
|
|
252
252
|
type: "button",
|
|
253
253
|
class: "kvc-button kvc-ghost kvc-icon-button",
|
|
254
|
-
"aria-label":
|
|
255
|
-
title:
|
|
254
|
+
"aria-label": w(o).t("kvcoder.config.dialog.close"),
|
|
255
|
+
title: w(o).t("kvcoder.config.dialog.close"),
|
|
256
256
|
"data-test": "connector-dialog-close",
|
|
257
257
|
onClick: t[0] ||= (e) => r("close")
|
|
258
|
-
}, [s(
|
|
258
|
+
}, [s(w(ce), {
|
|
259
259
|
size: 18,
|
|
260
260
|
"aria-hidden": "true"
|
|
261
|
-
})], 8, ve)]),
|
|
261
|
+
})], 8, ve)]), x(e.$slots, "default")], 40, pe)]));
|
|
262
262
|
}
|
|
263
263
|
});
|
|
264
264
|
//#endregion
|
|
265
265
|
//#region web/src/use-setting.ts
|
|
266
|
-
function
|
|
267
|
-
let r =
|
|
266
|
+
function J(e, n) {
|
|
267
|
+
let r = S(null), i = y("default"), a = y(!1), o = async () => {
|
|
268
268
|
let t = (await e.exec("kernel.settings.list", {})).find((e) => e.key === n);
|
|
269
269
|
r.value = t?.value ?? null, i.value = t?.source ?? "default";
|
|
270
270
|
}, s = async (t) => {
|
|
@@ -272,12 +272,12 @@ function Y(e, n) {
|
|
|
272
272
|
try {
|
|
273
273
|
return await t(), await o(), !0;
|
|
274
274
|
} catch (t) {
|
|
275
|
-
return
|
|
275
|
+
return q(e, t), !1;
|
|
276
276
|
} finally {
|
|
277
277
|
a.value = !1;
|
|
278
278
|
}
|
|
279
279
|
};
|
|
280
|
-
return
|
|
280
|
+
return h(o), j(() => [e.scope.value, e.workspace.value.id], o), {
|
|
281
281
|
value: r,
|
|
282
282
|
saving: a,
|
|
283
283
|
locked: t(() => e.scope.value === "global" && i.value === "workspace"),
|
|
@@ -352,16 +352,17 @@ var Se = [
|
|
|
352
352
|
"opencode",
|
|
353
353
|
"pi",
|
|
354
354
|
"claude"
|
|
355
|
-
], De = (e) => Array.isArray(e) && e.every((e) => typeof e == "string"),
|
|
356
|
-
function
|
|
357
|
-
return typeof e != "object" || !e || !Z(e, "name", "description", "enabled", "kind", "instructions") || typeof e.name != "string" || typeof e.description != "string" || typeof e.enabled != "boolean" || typeof e.instructions != "string" ? !1 : e.kind === "subagent" ? Z(e, "connectors", "model", "thinking") && (e.connectors === null || De(e.connectors)) &&
|
|
355
|
+
], De = (e) => Array.isArray(e) && e.every((e) => typeof e == "string"), Y = (e) => e === null || typeof e == "string", X = (e, t) => e.some((e) => e === t), Z = (e, ...t) => t.every((t) => t in e);
|
|
356
|
+
function Oe(e) {
|
|
357
|
+
return typeof e != "object" || !e || !Z(e, "name", "description", "enabled", "kind", "instructions") || typeof e.name != "string" || typeof e.description != "string" || typeof e.enabled != "boolean" || typeof e.instructions != "string" ? !1 : e.kind === "subagent" ? Z(e, "connectors", "model", "thinking") && (e.connectors === null || De(e.connectors)) && Y(e.model) && (e.thinking === null || X(Se, e.thinking)) : !Z(e, "approval", "timeoutMs", "model") || !X(["ask", "auto"], e.approval) || typeof e.timeoutMs != "number" || !Y(e.model) ? !1 : e.kind === "opencode" ? Z(e, "agent", "autoApprove") && Y(e.agent) && typeof e.autoApprove == "boolean" : e.kind === "pi" ? Z(e, "thinking", "tools") && (e.thinking === null || X(Ce, e.thinking)) && (e.tools === null || De(e.tools)) : e.kind === "claude" && Z(e, "effort", "permissionMode") && (e.effort === null || X(we, e.effort)) && X(Te, e.permissionMode);
|
|
358
358
|
}
|
|
359
|
-
var
|
|
359
|
+
var ke = (e) => Array.isArray(e) ? e.filter(Oe) : [], Ae = {
|
|
360
360
|
name: "",
|
|
361
361
|
description: "",
|
|
362
362
|
enabled: !0,
|
|
363
363
|
instructions: "",
|
|
364
364
|
kind: "subagent",
|
|
365
|
+
readOnly: !1,
|
|
365
366
|
all: !0,
|
|
366
367
|
connectors: [],
|
|
367
368
|
model: null,
|
|
@@ -376,10 +377,10 @@ var Ae = (e) => Array.isArray(e) ? e.filter(ke) : [], je = {
|
|
|
376
377
|
effort: "",
|
|
377
378
|
permissionMode: "acceptEdits"
|
|
378
379
|
};
|
|
379
|
-
function
|
|
380
|
-
if (e === void 0) return { ...
|
|
380
|
+
function je(e) {
|
|
381
|
+
if (e === void 0) return { ...Ae };
|
|
381
382
|
let t = {
|
|
382
|
-
...
|
|
383
|
+
...Ae,
|
|
383
384
|
name: e.name,
|
|
384
385
|
description: e.description,
|
|
385
386
|
enabled: e.enabled,
|
|
@@ -388,6 +389,7 @@ function Me(e) {
|
|
|
388
389
|
if (e.kind === "subagent") return {
|
|
389
390
|
...t,
|
|
390
391
|
kind: "subagent",
|
|
392
|
+
readOnly: e.readOnly === !0,
|
|
391
393
|
all: e.connectors === null,
|
|
392
394
|
connectors: [...e.connectors ?? []],
|
|
393
395
|
model: e.model,
|
|
@@ -417,7 +419,7 @@ function Me(e) {
|
|
|
417
419
|
};
|
|
418
420
|
}
|
|
419
421
|
var Q = (e) => e === "" ? null : e;
|
|
420
|
-
function
|
|
422
|
+
function Me(e, t) {
|
|
421
423
|
let n = {
|
|
422
424
|
name: e.name.trim(),
|
|
423
425
|
description: e.description.trim(),
|
|
@@ -429,6 +431,7 @@ function Ne(e, t) {
|
|
|
429
431
|
return {
|
|
430
432
|
...n,
|
|
431
433
|
kind: "subagent",
|
|
434
|
+
readOnly: e.readOnly,
|
|
432
435
|
connectors: r,
|
|
433
436
|
model: e.model,
|
|
434
437
|
thinking: Q(e.thinking)
|
|
@@ -459,19 +462,19 @@ function Ne(e, t) {
|
|
|
459
462
|
permissionMode: e.permissionMode
|
|
460
463
|
};
|
|
461
464
|
}
|
|
462
|
-
var
|
|
465
|
+
var Ne = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/, Pe = 16384, Fe = /^(?:[1-9]|[1-9]\d|1[01]\d|120)$/, Ie = [
|
|
463
466
|
"bypassPermissions",
|
|
464
467
|
"auto",
|
|
465
468
|
"dontAsk"
|
|
466
|
-
],
|
|
467
|
-
function
|
|
469
|
+
], Le = (e) => e.approval === "auto" && (e.kind === "opencode" && e.autoApprove || e.kind === "claude" && Ie.includes(e.permissionMode));
|
|
470
|
+
function Re(e, t) {
|
|
468
471
|
let n = e.name.trim(), r = {};
|
|
469
|
-
return n === "" ? r.name = "kvcoder.config.workers.invalid.nameEmpty" :
|
|
472
|
+
return n === "" ? r.name = "kvcoder.config.workers.invalid.nameEmpty" : Ne.test(n) ? t.includes(n) && (r.name = "kvcoder.config.workers.invalid.nameTaken") : r.name = "kvcoder.config.workers.invalid.nameShape", e.description.trim() === "" && (r.description = "kvcoder.config.workers.invalid.descriptionEmpty"), new TextEncoder().encode(e.instructions).length > Pe && (r.instructions = "kvcoder.config.workers.invalid.instructionsLong"), e.kind === "subagent" && !e.all && e.connectors.length === 0 && (r.connectors = "kvcoder.config.workers.invalid.connectorsEmpty"), e.kind !== "subagent" && !Fe.test(e.minutes.trim()) && (r.minutes = "kvcoder.config.workers.invalid.minutes"), Le(e) && (r.approval = "kvcoder.config.workers.invalid.unattended"), r;
|
|
470
473
|
}
|
|
471
474
|
//#endregion
|
|
472
475
|
//#region web/src/use-workers.ts
|
|
473
|
-
function
|
|
474
|
-
let n =
|
|
476
|
+
function ze(e) {
|
|
477
|
+
let n = J(e, "kvcoder.delegate.workers"), r = t(() => ke(n.value.value)), i = y({});
|
|
475
478
|
async function a(t) {
|
|
476
479
|
i.value = {
|
|
477
480
|
...i.value,
|
|
@@ -481,14 +484,14 @@ function Be(e) {
|
|
|
481
484
|
try {
|
|
482
485
|
n = (await e.exec("kvcoder.delegate.worker.check", { name: t })).status;
|
|
483
486
|
} catch (t) {
|
|
484
|
-
|
|
487
|
+
q(e, t), n = "notFound";
|
|
485
488
|
}
|
|
486
489
|
i.value = {
|
|
487
490
|
...i.value,
|
|
488
491
|
[t]: n
|
|
489
492
|
};
|
|
490
493
|
}
|
|
491
|
-
return
|
|
494
|
+
return j(r, (e) => {
|
|
492
495
|
for (let t of e) t.kind !== "subagent" && !(t.name in i.value) && a(t.name);
|
|
493
496
|
}), {
|
|
494
497
|
workers: r,
|
|
@@ -515,32 +518,32 @@ function Be(e) {
|
|
|
515
518
|
}
|
|
516
519
|
//#endregion
|
|
517
520
|
//#region web/src/ModelPicker.vue?vue&type=script&setup=true&lang.ts
|
|
518
|
-
var
|
|
521
|
+
var Be = { class: "kvc-picker" }, Ve = [
|
|
519
522
|
"aria-expanded",
|
|
520
523
|
"aria-label",
|
|
521
524
|
"disabled"
|
|
522
|
-
],
|
|
525
|
+
], He = { class: "kvc-picker-label" }, Ue = ["onKeydown"], We = { class: "kvc-search" }, Ge = [
|
|
523
526
|
"placeholder",
|
|
524
527
|
"aria-label",
|
|
525
528
|
"onKeydown"
|
|
526
|
-
],
|
|
529
|
+
], Ke = ["aria-label"], qe = ["aria-selected", "data-active"], Je = { class: "kvc-model-name" }, Ye = {
|
|
527
530
|
class: "kvc-group",
|
|
528
531
|
role: "presentation",
|
|
529
532
|
"data-test": "model-group"
|
|
530
|
-
},
|
|
533
|
+
}, Xe = [
|
|
531
534
|
"aria-selected",
|
|
532
535
|
"data-active",
|
|
533
536
|
"data-test",
|
|
534
537
|
"onClick",
|
|
535
538
|
"onMousemove"
|
|
536
|
-
],
|
|
539
|
+
], Ze = { class: "kvc-model-name" }, Qe = {
|
|
537
540
|
key: 1,
|
|
538
541
|
class: "kvc-muted kvc-none",
|
|
539
542
|
"data-test": "model-none"
|
|
540
|
-
},
|
|
543
|
+
}, $e = {
|
|
541
544
|
class: "kvc-muted kvc-count",
|
|
542
545
|
"data-test": "model-count"
|
|
543
|
-
},
|
|
546
|
+
}, et = 24, tt = /* @__PURE__ */ c({
|
|
544
547
|
__name: "ModelPicker",
|
|
545
548
|
props: {
|
|
546
549
|
groups: {},
|
|
@@ -551,149 +554,150 @@ var Ve = { class: "kvc-picker" }, He = [
|
|
|
551
554
|
},
|
|
552
555
|
emits: ["pick", "none"],
|
|
553
556
|
setup(o, { emit: c }) {
|
|
554
|
-
let l = o, u = c, d =
|
|
555
|
-
let t =
|
|
556
|
-
return t < 0 ? -1 : t +
|
|
557
|
+
let l = o, u = c, d = K(), f = y(!1), h = y(""), g = y(0), v = E("trigger"), x = E("search"), S = E("panel"), T = t(() => xe(l.groups, h.value)), D = t(() => T.value.groups.flatMap((e) => e.models)), O = t(() => l.groups.flatMap((e) => e.models).find((e) => e.id === l.current)?.name ?? l.current ?? l.empty ?? ""), k = t(() => l.none !== void 0 && h.value.trim() === ""), M = t(() => +!!k.value), I = t(() => D.value.length + M.value), L = (e) => {
|
|
558
|
+
let t = D.value.findIndex((t) => t.id === e);
|
|
559
|
+
return t < 0 ? -1 : t + M.value;
|
|
557
560
|
};
|
|
558
561
|
function R() {
|
|
559
|
-
f.value = !1,
|
|
562
|
+
f.value = !1, v.value?.focus();
|
|
560
563
|
}
|
|
561
|
-
async function
|
|
562
|
-
|
|
564
|
+
async function ee() {
|
|
565
|
+
h.value = "", g.value = Math.max(L(l.current ?? ""), 0), z = 0, f.value = !0, await p(), V(), x.value?.focus(), ne();
|
|
563
566
|
}
|
|
564
|
-
let
|
|
565
|
-
function
|
|
566
|
-
let e = S.value, t =
|
|
567
|
+
let z = 0, B = 0;
|
|
568
|
+
function V() {
|
|
569
|
+
let e = S.value, t = v.value?.closest(".kvc-conversation")?.getBoundingClientRect();
|
|
567
570
|
if (e === null || t === void 0) return;
|
|
568
|
-
let n = e.getBoundingClientRect(), r = t.left +
|
|
569
|
-
a !==
|
|
571
|
+
let n = e.getBoundingClientRect(), r = t.left + et - (n.left - z), i = t.right - et - (n.right - z), a = r > 0 ? r : i < 0 ? i : 0;
|
|
572
|
+
a !== z && (z = a, e.style.translate = `${a}px 0`);
|
|
570
573
|
}
|
|
571
|
-
function
|
|
572
|
-
|
|
574
|
+
function te() {
|
|
575
|
+
V(), B = requestAnimationFrame(te);
|
|
573
576
|
}
|
|
574
|
-
function
|
|
577
|
+
function ne() {
|
|
575
578
|
S.value?.querySelector("[data-active=\"true\"]")?.scrollIntoView?.({ block: "nearest" });
|
|
576
579
|
}
|
|
577
|
-
async function
|
|
578
|
-
|
|
580
|
+
async function re(e) {
|
|
581
|
+
I.value !== 0 && (g.value = (g.value + e + I.value) % I.value, await p(), ne());
|
|
579
582
|
}
|
|
580
|
-
function
|
|
583
|
+
function H(e) {
|
|
581
584
|
e !== void 0 && (u("pick", e), R());
|
|
582
585
|
}
|
|
583
|
-
function
|
|
586
|
+
function U() {
|
|
584
587
|
u("none"), R();
|
|
585
588
|
}
|
|
586
|
-
function
|
|
587
|
-
k.value && g.value === 0 ?
|
|
589
|
+
function W() {
|
|
590
|
+
k.value && g.value === 0 ? U() : H(D.value[g.value - M.value]?.id);
|
|
588
591
|
}
|
|
589
|
-
function
|
|
590
|
-
e.target instanceof Node && !
|
|
592
|
+
function G(e) {
|
|
593
|
+
e.target instanceof Node && !v.value?.parentElement?.contains(e.target) && (f.value = !1);
|
|
591
594
|
}
|
|
592
|
-
return
|
|
593
|
-
e ? (document.addEventListener("pointerdown",
|
|
594
|
-
}),
|
|
595
|
-
document.removeEventListener("pointerdown",
|
|
596
|
-
}), (t, o) => (
|
|
595
|
+
return j(h, () => g.value = 0), j(f, (e) => {
|
|
596
|
+
e ? (document.addEventListener("pointerdown", G), B = requestAnimationFrame(te)) : (document.removeEventListener("pointerdown", G), cancelAnimationFrame(B));
|
|
597
|
+
}), m(() => {
|
|
598
|
+
document.removeEventListener("pointerdown", G), cancelAnimationFrame(B);
|
|
599
|
+
}), (t, o) => (_(), i("div", Be, [a("button", {
|
|
597
600
|
ref_key: "trigger",
|
|
598
|
-
ref:
|
|
601
|
+
ref: v,
|
|
599
602
|
type: "button",
|
|
600
603
|
class: "kvc-button",
|
|
601
604
|
"aria-haspopup": "listbox",
|
|
602
605
|
"aria-expanded": f.value,
|
|
603
|
-
"aria-label": `${
|
|
606
|
+
"aria-label": `${w(d).t("kvcoder.ui.model")}: ${O.value}`,
|
|
604
607
|
disabled: l.disabled,
|
|
605
608
|
"data-test": "model-picker",
|
|
606
|
-
onClick: o[0] ||= (e) => f.value ? R() :
|
|
607
|
-
}, [a("span",
|
|
609
|
+
onClick: o[0] ||= (e) => f.value ? R() : ee()
|
|
610
|
+
}, [a("span", He, C(O.value), 1), s(w(ae), {
|
|
608
611
|
size: 16,
|
|
609
612
|
"aria-hidden": "true"
|
|
610
|
-
})], 8,
|
|
613
|
+
})], 8, Ve), f.value ? (_(), i("div", {
|
|
611
614
|
key: 0,
|
|
612
615
|
ref_key: "panel",
|
|
613
616
|
ref: S,
|
|
614
617
|
class: "kvc-popover",
|
|
615
618
|
"data-test": "model-popover",
|
|
616
|
-
onKeydown: F(
|
|
619
|
+
onKeydown: P(F(R, ["stop"]), ["esc"])
|
|
617
620
|
}, [
|
|
618
|
-
a("label",
|
|
621
|
+
a("label", We, [s(w(oe), {
|
|
619
622
|
size: 16,
|
|
620
623
|
"aria-hidden": "true"
|
|
621
|
-
}),
|
|
624
|
+
}), N(a("input", {
|
|
622
625
|
ref_key: "search",
|
|
623
|
-
ref:
|
|
624
|
-
"onUpdate:modelValue": o[1] ||= (e) =>
|
|
626
|
+
ref: x,
|
|
627
|
+
"onUpdate:modelValue": o[1] ||= (e) => h.value = e,
|
|
625
628
|
type: "search",
|
|
626
629
|
role: "combobox",
|
|
627
630
|
"aria-expanded": "true",
|
|
628
631
|
"aria-controls": "kvc-models",
|
|
629
|
-
placeholder:
|
|
630
|
-
"aria-label":
|
|
632
|
+
placeholder: w(d).t("kvcoder.ui.searchModels"),
|
|
633
|
+
"aria-label": w(d).t("kvcoder.ui.searchModels"),
|
|
631
634
|
"data-test": "model-search",
|
|
632
635
|
onKeydown: [
|
|
633
|
-
o[2] ||= F(
|
|
634
|
-
o[3] ||= F(
|
|
635
|
-
F(
|
|
636
|
+
o[2] ||= P(F((e) => re(1), ["prevent"]), ["down"]),
|
|
637
|
+
o[3] ||= P(F((e) => re(-1), ["prevent"]), ["up"]),
|
|
638
|
+
P(F(W, ["prevent"]), ["enter"])
|
|
636
639
|
]
|
|
637
|
-
}, null, 40,
|
|
640
|
+
}, null, 40, Ge), [[A, h.value]])]),
|
|
638
641
|
a("div", {
|
|
639
642
|
id: "kvc-models",
|
|
640
643
|
class: "kvc-options",
|
|
641
644
|
role: "listbox",
|
|
642
|
-
"aria-label":
|
|
645
|
+
"aria-label": w(d).t("kvcoder.ui.model")
|
|
643
646
|
}, [
|
|
644
|
-
k.value ? (
|
|
647
|
+
k.value ? (_(), i("div", {
|
|
645
648
|
key: 0,
|
|
646
649
|
class: "kvc-model",
|
|
647
650
|
role: "option",
|
|
648
651
|
"aria-selected": l.current === null,
|
|
649
652
|
"data-active": g.value === 0,
|
|
650
653
|
"data-test": "model-none-entry",
|
|
651
|
-
onClick:
|
|
654
|
+
onClick: U,
|
|
652
655
|
onMousemove: o[4] ||= (e) => g.value = 0
|
|
653
|
-
}, [a("span",
|
|
656
|
+
}, [a("span", Je, C(l.none), 1), l.current === null ? (_(), n(w(ie), {
|
|
654
657
|
key: 0,
|
|
655
658
|
size: 16,
|
|
656
659
|
"aria-hidden": "true"
|
|
657
|
-
})) : r("v-if", !0)], 40,
|
|
658
|
-
(
|
|
660
|
+
})) : r("v-if", !0)], 40, qe)) : r("v-if", !0),
|
|
661
|
+
(_(!0), i(e, null, b(T.value.groups, (t) => (_(), i(e, { key: t.provider }, [a("div", Ye, C(t.title), 1), (_(!0), i(e, null, b(t.models, (e) => (_(), i("div", {
|
|
659
662
|
key: e.id,
|
|
660
663
|
class: "kvc-model",
|
|
661
664
|
role: "option",
|
|
662
665
|
"aria-selected": e.id === l.current,
|
|
663
666
|
"data-active": L(e.id) === g.value,
|
|
664
667
|
"data-test": `model-${e.id}`,
|
|
665
|
-
onClick: (t) =>
|
|
668
|
+
onClick: (t) => H(e.id),
|
|
666
669
|
onMousemove: (t) => g.value = L(e.id)
|
|
667
|
-
}, [a("span",
|
|
670
|
+
}, [a("span", Ze, C(e.name), 1), e.id === l.current ? (_(), n(w(ie), {
|
|
668
671
|
key: 0,
|
|
669
672
|
size: 16,
|
|
670
673
|
"aria-hidden": "true"
|
|
671
|
-
})) : r("v-if", !0)], 40,
|
|
672
|
-
|
|
673
|
-
], 8,
|
|
674
|
-
a("p",
|
|
675
|
-
shown:
|
|
676
|
-
total:
|
|
674
|
+
})) : r("v-if", !0)], 40, Xe))), 128))], 64))), 128)),
|
|
675
|
+
T.value.shown === 0 ? (_(), i("p", Qe, C(w(d).t("kvcoder.ui.noModels")), 1)) : r("v-if", !0)
|
|
676
|
+
], 8, Ke),
|
|
677
|
+
a("p", $e, C(w(d).t("kvcoder.ui.modelsCount", {
|
|
678
|
+
shown: T.value.shown,
|
|
679
|
+
total: T.value.total
|
|
677
680
|
})), 1)
|
|
678
|
-
], 40,
|
|
681
|
+
], 40, Ue)) : r("v-if", !0)]));
|
|
679
682
|
}
|
|
680
|
-
}),
|
|
683
|
+
}), nt = [
|
|
681
684
|
"shell",
|
|
682
685
|
"fs",
|
|
683
686
|
"artifact",
|
|
687
|
+
"execution-map",
|
|
684
688
|
"background",
|
|
685
689
|
"ask",
|
|
686
690
|
"delegate",
|
|
687
691
|
"mcp"
|
|
688
|
-
],
|
|
692
|
+
], rt = [
|
|
689
693
|
"shell",
|
|
690
694
|
"delegate",
|
|
691
695
|
"mcp"
|
|
692
|
-
],
|
|
693
|
-
function
|
|
694
|
-
let n =
|
|
696
|
+
], it = (e) => Array.isArray(e) ? e.filter((e) => typeof e == "string") : [];
|
|
697
|
+
function at(e) {
|
|
698
|
+
let n = y([]), r = J(e, "kvcoder.connectors.disabled"), i = t(() => it(r.value.value)), a = async () => {
|
|
695
699
|
n.value = await e.exec("kvcoder.connector.list", {});
|
|
696
|
-
}, o = t(() => [...
|
|
700
|
+
}, o = t(() => [...nt.map((t) => ({
|
|
697
701
|
name: t,
|
|
698
702
|
description: e.t(`kvcoder.config.connector.${t}`)
|
|
699
703
|
})), ...n.value.map((e) => ({
|
|
@@ -702,9 +706,9 @@ function ot(e) {
|
|
|
702
706
|
}))].map((e) => ({
|
|
703
707
|
...e,
|
|
704
708
|
on: !i.value.includes(e.name),
|
|
705
|
-
configurable:
|
|
709
|
+
configurable: rt.includes(e.name)
|
|
706
710
|
})));
|
|
707
|
-
return
|
|
711
|
+
return h(a), j(() => e.workspace.value.id, a), {
|
|
708
712
|
items: o,
|
|
709
713
|
locked: r.locked,
|
|
710
714
|
changed: r.changed,
|
|
@@ -715,25 +719,25 @@ function ot(e) {
|
|
|
715
719
|
}
|
|
716
720
|
//#endregion
|
|
717
721
|
//#region web/src/WorkerProgramFields.vue?vue&type=script&setup=true&lang.ts
|
|
718
|
-
var
|
|
722
|
+
var ot = { class: "kvc-form-choice" }, st = { class: "kvc-form-label" }, ct = ["value", "data-test"], lt = {
|
|
719
723
|
key: 0,
|
|
720
724
|
class: "kvc-form-error",
|
|
721
725
|
role: "alert",
|
|
722
726
|
"data-test": "worker-approval-error"
|
|
723
|
-
},
|
|
727
|
+
}, ut = {
|
|
724
728
|
key: 1,
|
|
725
729
|
class: "kvc-muted"
|
|
726
|
-
},
|
|
730
|
+
}, dt = { class: "kvc-form-field" }, ft = { class: "kvc-form-label" }, pt = ["aria-invalid"], mt = {
|
|
727
731
|
key: 0,
|
|
728
732
|
class: "kvc-form-error",
|
|
729
733
|
role: "alert",
|
|
730
734
|
"data-test": "worker-minutes-error"
|
|
731
|
-
},
|
|
735
|
+
}, ht = {
|
|
732
736
|
key: 1,
|
|
733
737
|
class: "kvc-muted"
|
|
734
|
-
},
|
|
738
|
+
}, gt = { class: "kvc-form-field" }, _t = { class: "kvc-form-label" }, vt = { class: "kvc-muted" }, yt = { class: "kvc-form-field" }, bt = { class: "kvc-form-label" }, xt = { class: "kvc-muted" }, St = { class: "kvc-form-radio" }, Ct = { class: "kvc-form-field" }, wt = { class: "kvc-form-label" }, Tt = { value: "" }, Et = ["value"], Dt = { class: "kvc-form-field" }, Ot = { class: "kvc-form-label" }, kt = { class: "kvc-muted" }, At = { class: "kvc-form-field" }, jt = { class: "kvc-form-label" }, Mt = { value: "" }, Nt = ["value"], Pt = { class: "kvc-form-field" }, Ft = { class: "kvc-form-label" }, It = ["value"], Lt = { class: "kvc-muted" }, Rt = /* @__PURE__ */ c({
|
|
735
739
|
__name: "WorkerProgramFields",
|
|
736
|
-
props: /*@__PURE__*/
|
|
740
|
+
props: /*@__PURE__*/ d({
|
|
737
741
|
minutesProblem: {},
|
|
738
742
|
approvalProblem: {}
|
|
739
743
|
}, {
|
|
@@ -742,25 +746,25 @@ var st = { class: "kvc-form-choice" }, ct = { class: "kvc-form-label" }, lt = ["
|
|
|
742
746
|
}),
|
|
743
747
|
emits: ["update:draft"],
|
|
744
748
|
setup(t) {
|
|
745
|
-
let n =
|
|
746
|
-
return (t, l) => (
|
|
747
|
-
a("fieldset",
|
|
748
|
-
a("legend",
|
|
749
|
-
(
|
|
749
|
+
let n = T(t, "draft"), r = t, s = K(), c = (e) => s.t(`kvcoder.config.workers.form.${e}`);
|
|
750
|
+
return (t, l) => (_(), i(e, null, [
|
|
751
|
+
a("fieldset", ot, [
|
|
752
|
+
a("legend", st, C(c("approval")), 1),
|
|
753
|
+
(_(), i(e, null, b(["ask", "auto"], (e) => a("label", {
|
|
750
754
|
key: e,
|
|
751
755
|
class: "kvc-form-radio"
|
|
752
|
-
}, [
|
|
756
|
+
}, [N(a("input", {
|
|
753
757
|
"onUpdate:modelValue": l[0] ||= (e) => n.value.approval = e,
|
|
754
758
|
type: "radio",
|
|
755
759
|
name: "kvc-worker-approval",
|
|
756
760
|
value: e,
|
|
757
761
|
"data-test": `worker-approval-${e}`
|
|
758
|
-
}, null, 8,
|
|
759
|
-
r.approvalProblem === void 0 ? (
|
|
762
|
+
}, null, 8, ct), [[O, n.value.approval]]), o(" " + C(c(`approval.${e}`)), 1)])), 64)),
|
|
763
|
+
r.approvalProblem === void 0 ? (_(), i("span", ut, C(c("approvalHint")), 1)) : (_(), i("span", lt, C(w(s).t(r.approvalProblem)), 1))
|
|
760
764
|
]),
|
|
761
|
-
a("label",
|
|
762
|
-
a("span",
|
|
763
|
-
|
|
765
|
+
a("label", dt, [
|
|
766
|
+
a("span", ft, C(c("minutes")), 1),
|
|
767
|
+
N(a("input", {
|
|
764
768
|
"onUpdate:modelValue": l[1] ||= (e) => n.value.minutes = e,
|
|
765
769
|
type: "text",
|
|
766
770
|
inputmode: "numeric",
|
|
@@ -769,12 +773,12 @@ var st = { class: "kvc-form-choice" }, ct = { class: "kvc-form-label" }, lt = ["
|
|
|
769
773
|
autocomplete: "off",
|
|
770
774
|
"aria-invalid": r.minutesProblem !== void 0,
|
|
771
775
|
"data-test": "worker-minutes"
|
|
772
|
-
}, null, 8,
|
|
773
|
-
r.minutesProblem === void 0 ? (
|
|
776
|
+
}, null, 8, pt), [[A, n.value.minutes]]),
|
|
777
|
+
r.minutesProblem === void 0 ? (_(), i("span", ht, C(c("minutesHint")), 1)) : (_(), i("span", mt, C(w(s).t(r.minutesProblem)), 1))
|
|
774
778
|
]),
|
|
775
|
-
a("label",
|
|
776
|
-
a("span",
|
|
777
|
-
|
|
779
|
+
a("label", gt, [
|
|
780
|
+
a("span", _t, C(c("model")), 1),
|
|
781
|
+
N(a("input", {
|
|
778
782
|
"onUpdate:modelValue": l[2] ||= (e) => n.value.programModel = e,
|
|
779
783
|
type: "text",
|
|
780
784
|
dir: "ltr",
|
|
@@ -782,12 +786,12 @@ var st = { class: "kvc-form-choice" }, ct = { class: "kvc-form-label" }, lt = ["
|
|
|
782
786
|
spellcheck: "false",
|
|
783
787
|
autocomplete: "off",
|
|
784
788
|
"data-test": "worker-program-model"
|
|
785
|
-
}, null, 512), [[
|
|
786
|
-
a("span",
|
|
789
|
+
}, null, 512), [[A, n.value.programModel]]),
|
|
790
|
+
a("span", vt, C(c("programDefault")), 1)
|
|
787
791
|
]),
|
|
788
|
-
n.value.kind === "opencode" ? (
|
|
789
|
-
a("span",
|
|
790
|
-
|
|
792
|
+
n.value.kind === "opencode" ? (_(), i(e, { key: 0 }, [a("label", yt, [
|
|
793
|
+
a("span", bt, C(c("agent")), 1),
|
|
794
|
+
N(a("input", {
|
|
791
795
|
"onUpdate:modelValue": l[3] ||= (e) => n.value.agent = e,
|
|
792
796
|
type: "text",
|
|
793
797
|
dir: "ltr",
|
|
@@ -795,94 +799,94 @@ var st = { class: "kvc-form-choice" }, ct = { class: "kvc-form-label" }, lt = ["
|
|
|
795
799
|
spellcheck: "false",
|
|
796
800
|
autocomplete: "off",
|
|
797
801
|
"data-test": "worker-agent"
|
|
798
|
-
}, null, 512), [[
|
|
799
|
-
a("span",
|
|
800
|
-
]), a("label",
|
|
802
|
+
}, null, 512), [[A, n.value.agent]]),
|
|
803
|
+
a("span", xt, C(c("programDefault")), 1)
|
|
804
|
+
]), a("label", St, [N(a("input", {
|
|
801
805
|
"onUpdate:modelValue": l[4] ||= (e) => n.value.autoApprove = e,
|
|
802
806
|
type: "checkbox",
|
|
803
807
|
"data-test": "worker-auto-approve"
|
|
804
|
-
}, null, 512), [[
|
|
808
|
+
}, null, 512), [[D, n.value.autoApprove]]), o(" " + C(c("autoApprove")), 1)])], 64)) : n.value.kind === "pi" ? (_(), i(e, { key: 1 }, [a("label", Ct, [a("span", wt, C(c("thinking")), 1), N(a("select", {
|
|
805
809
|
"onUpdate:modelValue": l[5] ||= (e) => n.value.piThinking = e,
|
|
806
810
|
class: "kvc-button",
|
|
807
811
|
"data-test": "worker-pi-thinking"
|
|
808
|
-
}, [a("option",
|
|
812
|
+
}, [a("option", Tt, C(c("programDefault")), 1), (_(!0), i(e, null, b(w(Ce), (e) => (_(), i("option", {
|
|
809
813
|
key: e,
|
|
810
814
|
value: e
|
|
811
|
-
},
|
|
812
|
-
a("span",
|
|
813
|
-
|
|
815
|
+
}, C(e), 9, Et))), 128))], 512), [[k, n.value.piThinking]])]), a("label", Dt, [
|
|
816
|
+
a("span", Ot, C(c("tools")), 1),
|
|
817
|
+
N(a("textarea", {
|
|
814
818
|
"onUpdate:modelValue": l[6] ||= (e) => n.value.tools = e,
|
|
815
819
|
dir: "ltr",
|
|
816
820
|
rows: "3",
|
|
817
821
|
class: "kvc-field kvc-mono",
|
|
818
822
|
spellcheck: "false",
|
|
819
823
|
"data-test": "worker-tools"
|
|
820
|
-
}, null, 512), [[
|
|
821
|
-
a("span",
|
|
822
|
-
])], 64)) : (
|
|
824
|
+
}, null, 512), [[A, n.value.tools]]),
|
|
825
|
+
a("span", kt, C(c("toolsHint")), 1)
|
|
826
|
+
])], 64)) : (_(), i(e, { key: 2 }, [a("label", At, [a("span", jt, C(c("effort")), 1), N(a("select", {
|
|
823
827
|
"onUpdate:modelValue": l[7] ||= (e) => n.value.effort = e,
|
|
824
828
|
class: "kvc-button",
|
|
825
829
|
"data-test": "worker-effort"
|
|
826
|
-
}, [a("option",
|
|
830
|
+
}, [a("option", Mt, C(c("programDefault")), 1), (_(!0), i(e, null, b(w(we), (e) => (_(), i("option", {
|
|
827
831
|
key: e,
|
|
828
832
|
value: e
|
|
829
|
-
},
|
|
830
|
-
a("span",
|
|
831
|
-
|
|
833
|
+
}, C(e), 9, Nt))), 128))], 512), [[k, n.value.effort]])]), a("label", Pt, [
|
|
834
|
+
a("span", Ft, C(c("permissionMode")), 1),
|
|
835
|
+
N(a("select", {
|
|
832
836
|
"onUpdate:modelValue": l[8] ||= (e) => n.value.permissionMode = e,
|
|
833
837
|
class: "kvc-button",
|
|
834
838
|
"data-test": "worker-permission-mode"
|
|
835
|
-
}, [(
|
|
839
|
+
}, [(_(!0), i(e, null, b(w(Te), (e) => (_(), i("option", {
|
|
836
840
|
key: e,
|
|
837
841
|
value: e
|
|
838
|
-
},
|
|
839
|
-
a("span",
|
|
842
|
+
}, C(e), 9, It))), 128))], 512), [[k, n.value.permissionMode]]),
|
|
843
|
+
a("span", Lt, C(c("permissionModeHint")), 1)
|
|
840
844
|
])], 64))
|
|
841
845
|
], 64));
|
|
842
846
|
}
|
|
843
|
-
}),
|
|
847
|
+
}), zt = {
|
|
844
848
|
class: "kvc-setting-title",
|
|
845
849
|
"data-test": "worker-form-title"
|
|
846
|
-
},
|
|
850
|
+
}, Bt = { class: "kvc-form-field" }, Vt = { class: "kvc-form-label" }, Ht = ["aria-invalid"], Ut = {
|
|
847
851
|
key: 0,
|
|
848
852
|
class: "kvc-form-error",
|
|
849
853
|
role: "alert",
|
|
850
854
|
"data-test": "worker-name-error"
|
|
851
|
-
},
|
|
855
|
+
}, Wt = {
|
|
852
856
|
key: 1,
|
|
853
857
|
class: "kvc-muted"
|
|
854
|
-
},
|
|
858
|
+
}, Gt = { class: "kvc-form-field" }, Kt = { class: "kvc-form-label" }, qt = ["aria-invalid"], Jt = {
|
|
855
859
|
key: 0,
|
|
856
860
|
class: "kvc-form-error",
|
|
857
861
|
role: "alert",
|
|
858
862
|
"data-test": "worker-description-error"
|
|
859
|
-
},
|
|
863
|
+
}, Yt = {
|
|
860
864
|
key: 1,
|
|
861
865
|
class: "kvc-muted"
|
|
862
|
-
},
|
|
866
|
+
}, Xt = { class: "kvc-form-field" }, Zt = { class: "kvc-form-label" }, Qt = ["value"], $t = { class: "kvc-muted" }, en = { class: "kvc-form-field" }, tn = { class: "kvc-form-label" }, nn = ["aria-invalid"], rn = {
|
|
863
867
|
key: 0,
|
|
864
868
|
class: "kvc-form-error",
|
|
865
869
|
role: "alert",
|
|
866
870
|
"data-test": "worker-instructions-error"
|
|
867
|
-
},
|
|
871
|
+
}, an = {
|
|
868
872
|
key: 1,
|
|
869
873
|
class: "kvc-muted"
|
|
870
|
-
}, sn = { class: "kvc-form-
|
|
874
|
+
}, on = { class: "kvc-form-field" }, sn = { class: "kvc-form-radio" }, cn = { class: "kvc-muted" }, ln = { class: "kvc-form-choice" }, un = { class: "kvc-form-label" }, dn = { class: "kvc-form-radio" }, fn = ["checked"], pn = { class: "kvc-form-radio" }, mn = ["checked"], hn = [
|
|
871
875
|
"checked",
|
|
872
876
|
"data-test",
|
|
873
877
|
"onChange"
|
|
874
|
-
],
|
|
878
|
+
], gn = {
|
|
875
879
|
key: 1,
|
|
876
880
|
class: "kvc-form-error",
|
|
877
881
|
role: "alert",
|
|
878
882
|
"data-test": "worker-connectors-error"
|
|
879
|
-
},
|
|
883
|
+
}, _n = {
|
|
880
884
|
key: 2,
|
|
881
885
|
class: "kvc-muted"
|
|
882
|
-
},
|
|
886
|
+
}, vn = {
|
|
883
887
|
class: "kvc-form-field",
|
|
884
888
|
"data-test": "worker-model"
|
|
885
|
-
},
|
|
889
|
+
}, yn = { class: "kvc-form-label" }, bn = { class: "kvc-form-field" }, xn = { class: "kvc-form-label" }, Sn = { value: "" }, Cn = ["value"], wn = { class: "kvc-actions" }, Tn = ["disabled"], En = ["disabled"], Dn = /* @__PURE__ */ c({
|
|
886
890
|
__name: "WorkerForm",
|
|
887
891
|
props: {
|
|
888
892
|
entry: {},
|
|
@@ -891,336 +895,344 @@ var st = { class: "kvc-form-choice" }, ct = { class: "kvc-form-label" }, lt = ["
|
|
|
891
895
|
},
|
|
892
896
|
emits: ["save", "cancel"],
|
|
893
897
|
setup(c, { emit: l }) {
|
|
894
|
-
let u = c,
|
|
895
|
-
|
|
898
|
+
let u = c, d = l, f = K(), p = v(je(u.entry)), m = y({}), g = y([]), x = y([]), S = y([]), T = (e) => f.t(`kvcoder.config.workers.form.${e}`), E = u.entry !== void 0, O = [
|
|
899
|
+
"delegate",
|
|
900
|
+
"ask",
|
|
901
|
+
"execution-map"
|
|
902
|
+
], j = t(() => [...nt.filter((e) => !O.includes(e)), ...S.value]), M = t(() => be(g.value, x.value, p.model));
|
|
903
|
+
h(async () => {
|
|
896
904
|
try {
|
|
897
905
|
let [e, t, n] = await Promise.all([
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
906
|
+
f.exec("kvai.provider.list", {}),
|
|
907
|
+
f.exec("kvai.model.list", {}),
|
|
908
|
+
f.exec("kvcoder.connector.list", {})
|
|
901
909
|
]);
|
|
902
|
-
|
|
910
|
+
g.value = e, x.value = t, S.value = n.map((e) => e.name);
|
|
903
911
|
} catch (e) {
|
|
904
|
-
|
|
912
|
+
q(f, e);
|
|
905
913
|
}
|
|
906
914
|
});
|
|
907
|
-
function
|
|
915
|
+
function P(e, t) {
|
|
908
916
|
let n = t.target instanceof HTMLInputElement && t.target.checked;
|
|
909
|
-
|
|
917
|
+
p.connectors = n ? [...p.connectors, e] : p.connectors.filter((t) => t !== e);
|
|
910
918
|
}
|
|
911
|
-
function
|
|
912
|
-
|
|
919
|
+
function I() {
|
|
920
|
+
m.value = Re(p, u.taken), !(Object.keys(m.value).length > 0) && d("save", Me(p, j.value));
|
|
913
921
|
}
|
|
914
|
-
return (t, c) => (
|
|
922
|
+
return (t, c) => (_(), i("form", {
|
|
915
923
|
class: "kvc-form",
|
|
916
924
|
novalidate: "",
|
|
917
925
|
"data-test": "worker-form",
|
|
918
|
-
onSubmit: I
|
|
926
|
+
onSubmit: F(I, ["prevent"])
|
|
919
927
|
}, [
|
|
920
|
-
a("span",
|
|
921
|
-
a("label",
|
|
922
|
-
a("span",
|
|
923
|
-
|
|
924
|
-
"onUpdate:modelValue": c[0] ||= (e) =>
|
|
928
|
+
a("span", zt, C(E ? w(f).t("kvcoder.config.workers.form.titleEdit", { name: p.name }) : T("titleNew")), 1),
|
|
929
|
+
a("label", Bt, [
|
|
930
|
+
a("span", Vt, C(T("name")), 1),
|
|
931
|
+
N(a("input", {
|
|
932
|
+
"onUpdate:modelValue": c[0] ||= (e) => p.name = e,
|
|
925
933
|
type: "text",
|
|
926
934
|
dir: "ltr",
|
|
927
935
|
class: "kvc-field kvc-mono",
|
|
928
|
-
disabled:
|
|
936
|
+
disabled: E,
|
|
929
937
|
spellcheck: "false",
|
|
930
938
|
autocomplete: "off",
|
|
931
|
-
"aria-invalid":
|
|
939
|
+
"aria-invalid": m.value.name !== void 0,
|
|
932
940
|
"data-test": "worker-name"
|
|
933
|
-
}, null, 8,
|
|
934
|
-
|
|
941
|
+
}, null, 8, Ht), [[A, p.name]]),
|
|
942
|
+
m.value.name === void 0 ? (_(), i("span", Wt, C(T("nameHint")), 1)) : (_(), i("span", Ut, C(w(f).t(m.value.name)), 1))
|
|
935
943
|
]),
|
|
936
|
-
a("label",
|
|
937
|
-
a("span",
|
|
938
|
-
|
|
939
|
-
"onUpdate:modelValue": c[1] ||= (e) =>
|
|
944
|
+
a("label", Gt, [
|
|
945
|
+
a("span", Kt, C(T("description")), 1),
|
|
946
|
+
N(a("input", {
|
|
947
|
+
"onUpdate:modelValue": c[1] ||= (e) => p.description = e,
|
|
940
948
|
type: "text",
|
|
941
949
|
dir: "auto",
|
|
942
950
|
class: "kvc-field",
|
|
943
951
|
autocomplete: "off",
|
|
944
|
-
"aria-invalid":
|
|
952
|
+
"aria-invalid": m.value.description !== void 0,
|
|
945
953
|
"data-test": "worker-description"
|
|
946
|
-
}, null, 8,
|
|
947
|
-
|
|
954
|
+
}, null, 8, qt), [[A, p.description]]),
|
|
955
|
+
m.value.description === void 0 ? (_(), i("span", Yt, C(T("descriptionHint")), 1)) : (_(), i("span", Jt, C(w(f).t(m.value.description)), 1))
|
|
948
956
|
]),
|
|
949
|
-
a("label",
|
|
950
|
-
a("span",
|
|
951
|
-
|
|
952
|
-
"onUpdate:modelValue": c[2] ||= (e) =>
|
|
957
|
+
a("label", Xt, [
|
|
958
|
+
a("span", Zt, C(T("kind")), 1),
|
|
959
|
+
N(a("select", {
|
|
960
|
+
"onUpdate:modelValue": c[2] ||= (e) => p.kind = e,
|
|
953
961
|
class: "kvc-button",
|
|
954
|
-
disabled:
|
|
962
|
+
disabled: E,
|
|
955
963
|
"data-test": "worker-kind-select"
|
|
956
|
-
}, [(
|
|
964
|
+
}, [(_(!0), i(e, null, b(w(Ee), (e) => (_(), i("option", {
|
|
957
965
|
key: e,
|
|
958
966
|
value: e
|
|
959
|
-
}, w(
|
|
960
|
-
a("span",
|
|
967
|
+
}, C(w(f).t(`kvcoder.config.workers.kind.${e}`)), 9, Qt))), 128))], 512), [[k, p.kind]]),
|
|
968
|
+
a("span", $t, C(T("kindHint")), 1)
|
|
961
969
|
]),
|
|
962
|
-
a("label",
|
|
963
|
-
a("span",
|
|
964
|
-
|
|
965
|
-
"onUpdate:modelValue": c[3] ||= (e) =>
|
|
970
|
+
a("label", en, [
|
|
971
|
+
a("span", tn, C(T("instructions")), 1),
|
|
972
|
+
N(a("textarea", {
|
|
973
|
+
"onUpdate:modelValue": c[3] ||= (e) => p.instructions = e,
|
|
966
974
|
dir: "auto",
|
|
967
975
|
rows: "8",
|
|
968
976
|
class: "kvc-field",
|
|
969
|
-
"aria-invalid":
|
|
977
|
+
"aria-invalid": m.value.instructions !== void 0,
|
|
970
978
|
"data-test": "worker-instructions"
|
|
971
|
-
}, null, 8,
|
|
972
|
-
|
|
979
|
+
}, null, 8, nn), [[A, p.instructions]]),
|
|
980
|
+
m.value.instructions === void 0 ? (_(), i("span", an, C(T("instructionsHint")), 1)) : (_(), i("span", rn, C(w(f).t(m.value.instructions)), 1))
|
|
973
981
|
]),
|
|
974
|
-
|
|
975
|
-
a("
|
|
976
|
-
|
|
977
|
-
|
|
982
|
+
p.kind === "subagent" ? (_(), i(e, { key: 1 }, [
|
|
983
|
+
a("label", on, [a("span", sn, [N(a("input", {
|
|
984
|
+
"onUpdate:modelValue": c[4] ||= (e) => p.readOnly = e,
|
|
985
|
+
type: "checkbox",
|
|
986
|
+
"data-test": "worker-read-only"
|
|
987
|
+
}, null, 512), [[D, p.readOnly]]), o(C(T("readOnly")), 1)]), a("span", cn, C(T("readOnlyHint")), 1)]),
|
|
988
|
+
a("fieldset", ln, [
|
|
989
|
+
a("legend", un, C(T("connectors")), 1),
|
|
990
|
+
a("label", dn, [a("input", {
|
|
978
991
|
type: "radio",
|
|
979
992
|
name: "kvc-worker-connectors",
|
|
980
|
-
checked:
|
|
993
|
+
checked: p.all,
|
|
981
994
|
"data-test": "worker-connectors-all",
|
|
982
|
-
onChange: c[5] ||= (e) =>
|
|
983
|
-
}, null, 40,
|
|
984
|
-
a("label",
|
|
995
|
+
onChange: c[5] ||= (e) => p.all = !0
|
|
996
|
+
}, null, 40, fn), o(" " + C(T("connectors.all")), 1)]),
|
|
997
|
+
a("label", pn, [a("input", {
|
|
985
998
|
type: "radio",
|
|
986
999
|
name: "kvc-worker-connectors",
|
|
987
|
-
checked: !
|
|
1000
|
+
checked: !p.all,
|
|
988
1001
|
"data-test": "worker-connectors-some",
|
|
989
|
-
onChange: c[6] ||= (e) =>
|
|
990
|
-
}, null, 40,
|
|
991
|
-
|
|
1002
|
+
onChange: c[6] ||= (e) => p.all = !1
|
|
1003
|
+
}, null, 40, mn), o(" " + C(T("connectors.some")), 1)]),
|
|
1004
|
+
p.all ? r("v-if", !0) : (_(!0), i(e, { key: 0 }, b(j.value, (e) => (_(), i("label", {
|
|
992
1005
|
key: e,
|
|
993
1006
|
class: "kvc-form-radio kvc-mono"
|
|
994
1007
|
}, [a("input", {
|
|
995
1008
|
type: "checkbox",
|
|
996
|
-
checked:
|
|
1009
|
+
checked: p.connectors.includes(e),
|
|
997
1010
|
"data-test": `worker-connector-${e}`,
|
|
998
|
-
onChange: (t) =>
|
|
999
|
-
}, null, 40,
|
|
1000
|
-
|
|
1011
|
+
onChange: (t) => P(e, t)
|
|
1012
|
+
}, null, 40, hn), o(" " + C(e), 1)]))), 128)),
|
|
1013
|
+
m.value.connectors === void 0 ? (_(), i("span", _n, C(T("connectorsHint")), 1)) : (_(), i("span", gn, C(w(f).t(m.value.connectors)), 1))
|
|
1001
1014
|
]),
|
|
1002
|
-
a("div",
|
|
1003
|
-
groups:
|
|
1004
|
-
current:
|
|
1005
|
-
empty:
|
|
1006
|
-
none:
|
|
1007
|
-
onPick: c[7] ||= (e) =>
|
|
1008
|
-
onNone: c[8] ||= (e) =>
|
|
1015
|
+
a("div", vn, [a("span", yn, C(T("model")), 1), s(tt, {
|
|
1016
|
+
groups: M.value,
|
|
1017
|
+
current: p.model,
|
|
1018
|
+
empty: T("sameModel"),
|
|
1019
|
+
none: T("sameModel"),
|
|
1020
|
+
onPick: c[7] ||= (e) => p.model = e,
|
|
1021
|
+
onNone: c[8] ||= (e) => p.model = null
|
|
1009
1022
|
}, null, 8, [
|
|
1010
1023
|
"groups",
|
|
1011
1024
|
"current",
|
|
1012
1025
|
"empty",
|
|
1013
1026
|
"none"
|
|
1014
1027
|
])]),
|
|
1015
|
-
a("label",
|
|
1016
|
-
"onUpdate:modelValue": c[9] ||= (e) =>
|
|
1028
|
+
a("label", bn, [a("span", xn, C(T("thinking")), 1), N(a("select", {
|
|
1029
|
+
"onUpdate:modelValue": c[9] ||= (e) => p.thinking = e,
|
|
1017
1030
|
class: "kvc-button",
|
|
1018
1031
|
"data-test": "worker-thinking"
|
|
1019
|
-
}, [a("option",
|
|
1032
|
+
}, [a("option", Sn, C(T("sameThinking")), 1), (_(!0), i(e, null, b(w(Se), (e) => (_(), i("option", {
|
|
1020
1033
|
key: e,
|
|
1021
1034
|
value: e
|
|
1022
|
-
}, w(
|
|
1023
|
-
], 64)) : (
|
|
1035
|
+
}, C(w(f).t(`kvcoder.ui.thinkingLevels.${e}`)), 9, Cn))), 128))], 512), [[k, p.thinking]])])
|
|
1036
|
+
], 64)) : (_(), n(Rt, {
|
|
1024
1037
|
key: 0,
|
|
1025
|
-
draft:
|
|
1026
|
-
"
|
|
1027
|
-
"
|
|
1028
|
-
"approval-problem": h.value.approval
|
|
1038
|
+
draft: p,
|
|
1039
|
+
"minutes-problem": m.value.minutes,
|
|
1040
|
+
"approval-problem": m.value.approval
|
|
1029
1041
|
}, null, 8, [
|
|
1030
1042
|
"draft",
|
|
1031
1043
|
"minutes-problem",
|
|
1032
1044
|
"approval-problem"
|
|
1033
1045
|
])),
|
|
1034
|
-
a("div",
|
|
1046
|
+
a("div", wn, [a("button", {
|
|
1035
1047
|
type: "button",
|
|
1036
1048
|
class: "kvc-button",
|
|
1037
1049
|
disabled: u.working,
|
|
1038
1050
|
"data-test": "worker-cancel",
|
|
1039
|
-
onClick: c[10] ||= (e) =>
|
|
1040
|
-
}, w(
|
|
1051
|
+
onClick: c[10] ||= (e) => d("cancel")
|
|
1052
|
+
}, C(w(f).t("kvcoder.config.workers.cancel")), 9, Tn), a("button", {
|
|
1041
1053
|
type: "submit",
|
|
1042
1054
|
class: "kvc-button kvc-primary",
|
|
1043
1055
|
disabled: u.working,
|
|
1044
1056
|
"data-test": "worker-save"
|
|
1045
|
-
},
|
|
1057
|
+
}, C(T("save")), 9, En)])
|
|
1046
1058
|
], 32));
|
|
1047
1059
|
}
|
|
1048
|
-
}),
|
|
1060
|
+
}), On = {
|
|
1049
1061
|
key: 1,
|
|
1050
1062
|
class: "kvc-dialog-rows",
|
|
1051
1063
|
"data-test": "workers"
|
|
1052
|
-
},
|
|
1064
|
+
}, kn = { class: "kvc-muted" }, An = {
|
|
1053
1065
|
key: 0,
|
|
1054
1066
|
class: "kvc-muted",
|
|
1055
1067
|
"data-test": "workers-own-value"
|
|
1056
|
-
},
|
|
1068
|
+
}, jn = {
|
|
1057
1069
|
key: 1,
|
|
1058
1070
|
class: "kvc-connectors-state"
|
|
1059
|
-
},
|
|
1071
|
+
}, Mn = {
|
|
1060
1072
|
class: "kvc-chip",
|
|
1061
1073
|
"data-test": "workers-changed"
|
|
1062
|
-
},
|
|
1074
|
+
}, Nn = ["disabled"], Pn = {
|
|
1063
1075
|
key: 2,
|
|
1064
1076
|
class: "kvc-muted",
|
|
1065
1077
|
"data-test": "workers-empty"
|
|
1066
|
-
},
|
|
1078
|
+
}, Fn = ["data-test"], In = { class: "kvc-connector-text" }, Ln = {
|
|
1067
1079
|
class: "kvc-mono kvc-connector-name",
|
|
1068
1080
|
"data-test": "worker-name"
|
|
1069
|
-
},
|
|
1081
|
+
}, Rn = {
|
|
1070
1082
|
class: "kvc-muted",
|
|
1071
1083
|
dir: "auto",
|
|
1072
1084
|
"data-test": "worker-description"
|
|
1073
|
-
},
|
|
1085
|
+
}, zn = {
|
|
1074
1086
|
class: "kvc-chip",
|
|
1075
1087
|
"data-test": "worker-kind"
|
|
1076
|
-
},
|
|
1088
|
+
}, Bn = {
|
|
1077
1089
|
key: 0,
|
|
1078
1090
|
class: "kvc-server-state",
|
|
1079
1091
|
"data-status": "checking",
|
|
1080
1092
|
role: "status",
|
|
1081
1093
|
"data-test": "worker-state"
|
|
1082
|
-
},
|
|
1094
|
+
}, Vn = {
|
|
1083
1095
|
key: 1,
|
|
1084
1096
|
class: "kvc-server-state",
|
|
1085
1097
|
"data-status": "failed",
|
|
1086
1098
|
role: "status",
|
|
1087
1099
|
"data-test": "worker-state"
|
|
1088
|
-
},
|
|
1100
|
+
}, Hn = ["onClick"], Un = ["aria-label"], Wn = { class: "kvc-muted" }, Gn = ["disabled"], Kn = ["disabled", "onClick"], qn = {
|
|
1089
1101
|
key: 1,
|
|
1090
1102
|
class: "kvc-connector-actions"
|
|
1091
|
-
},
|
|
1103
|
+
}, Jn = [
|
|
1092
1104
|
"disabled",
|
|
1093
1105
|
"aria-label",
|
|
1094
1106
|
"title",
|
|
1095
1107
|
"onClick"
|
|
1096
|
-
],
|
|
1108
|
+
], Yn = [
|
|
1097
1109
|
"disabled",
|
|
1098
1110
|
"aria-label",
|
|
1099
1111
|
"title",
|
|
1100
1112
|
"onClick"
|
|
1101
|
-
],
|
|
1113
|
+
], Xn = [
|
|
1102
1114
|
"aria-checked",
|
|
1103
1115
|
"aria-label",
|
|
1104
1116
|
"disabled",
|
|
1105
1117
|
"onClick"
|
|
1106
|
-
],
|
|
1118
|
+
], Zn = { class: "kvc-actions" }, Qn = ["disabled"], $n = /* @__PURE__ */ c({
|
|
1107
1119
|
__name: "DelegateWorkers",
|
|
1108
1120
|
setup(t) {
|
|
1109
|
-
let c =
|
|
1121
|
+
let c = K(), { workers: l, states: u, locked: d, changed: p, working: m, save: h, remove: g, toggle: v, reset: x, check: S } = ze(c), T = y(), E = y(), D = (e) => c.t(`${e}.${c.scope.value}`, { name: c.workspace.value.name }), O = (e, t) => c.t(`kvcoder.config.workers.${e}`, { name: t });
|
|
1110
1122
|
async function k(e) {
|
|
1111
|
-
await h(e) && (
|
|
1123
|
+
await h(e) && (T.value = void 0, c.toast("kvcoder.config.workers.saved", { name: e.name }, "success"));
|
|
1112
1124
|
}
|
|
1113
1125
|
async function A(e) {
|
|
1114
1126
|
await g(e) && c.toast("kvcoder.config.workers.removed", { name: e }, "success"), E.value = void 0;
|
|
1115
1127
|
}
|
|
1116
|
-
return (t, h) =>
|
|
1117
|
-
a("p",
|
|
1118
|
-
|
|
1128
|
+
return (t, h) => T.value === void 0 ? (_(), i("div", On, [
|
|
1129
|
+
a("p", kn, C(w(c).t("kvcoder.config.workers.intro")), 1),
|
|
1130
|
+
w(d) ? (_(), i("p", An, C(w(c).t("kvcoder.config.connectors.ownValue", { name: w(c).workspace.value.name })), 1)) : w(p) ? (_(), i("div", jn, [a("span", Mn, C(D("kvcoder.config.connectors.changed")), 1), a("button", {
|
|
1119
1131
|
type: "button",
|
|
1120
1132
|
class: "kvc-text-button",
|
|
1121
|
-
disabled:
|
|
1133
|
+
disabled: w(m),
|
|
1122
1134
|
"data-test": "workers-reset",
|
|
1123
|
-
onClick: h[1] ||= (...e) =>
|
|
1124
|
-
},
|
|
1125
|
-
|
|
1126
|
-
(
|
|
1135
|
+
onClick: h[1] ||= (...e) => w(x) && w(x)(...e)
|
|
1136
|
+
}, C(D("kvcoder.config.connectors.reset")), 9, Nn)])) : r("v-if", !0),
|
|
1137
|
+
w(l).length === 0 ? (_(), i("p", Pn, C(w(c).t("kvcoder.config.workers.empty")), 1)) : r("v-if", !0),
|
|
1138
|
+
(_(!0), i(e, null, b(w(l), (e) => (_(), i("div", {
|
|
1127
1139
|
key: e.name,
|
|
1128
1140
|
class: "kvc-connector",
|
|
1129
1141
|
"data-test": `worker-${e.name}`
|
|
1130
|
-
}, [a("span",
|
|
1131
|
-
a("span",
|
|
1132
|
-
a("span",
|
|
1133
|
-
a("span", null, [a("span",
|
|
1134
|
-
|
|
1142
|
+
}, [a("span", In, [
|
|
1143
|
+
a("span", Ln, C(e.name), 1),
|
|
1144
|
+
a("span", Rn, C(e.description), 1),
|
|
1145
|
+
a("span", null, [a("span", zn, C(w(c).t(`kvcoder.config.workers.kind.${e.kind}`)), 1)]),
|
|
1146
|
+
w(u)[e.name] === "checking" ? (_(), i("span", Bn, C(w(c).t("kvcoder.config.workers.checking")), 1)) : w(u)[e.name] === "notFound" ? (_(), i("span", Vn, [o(C(w(c).t("kvcoder.config.workers.notFound", { program: e.kind })) + " ", 1), a("button", {
|
|
1135
1147
|
type: "button",
|
|
1136
1148
|
class: "kvc-text-button",
|
|
1137
1149
|
"data-test": "worker-check",
|
|
1138
|
-
onClick: (t) =>
|
|
1139
|
-
}, w(
|
|
1140
|
-
]), E.value === e.name ? (
|
|
1150
|
+
onClick: (t) => w(S)(e.name)
|
|
1151
|
+
}, C(w(c).t("kvcoder.config.workers.recheck")), 9, Hn)])) : r("v-if", !0)
|
|
1152
|
+
]), E.value === e.name ? (_(), i("span", {
|
|
1141
1153
|
key: 0,
|
|
1142
1154
|
class: "kvc-connector-actions",
|
|
1143
1155
|
role: "alertdialog",
|
|
1144
1156
|
"aria-label": O("removeConfirm", e.name),
|
|
1145
1157
|
"data-test": "worker-remove-confirm"
|
|
1146
1158
|
}, [
|
|
1147
|
-
a("span",
|
|
1159
|
+
a("span", Wn, C(O("removeConfirm", e.name)), 1),
|
|
1148
1160
|
a("button", {
|
|
1149
1161
|
type: "button",
|
|
1150
1162
|
class: "kvc-button",
|
|
1151
|
-
disabled:
|
|
1163
|
+
disabled: w(m),
|
|
1152
1164
|
"data-test": "worker-remove-cancel",
|
|
1153
1165
|
onClick: h[2] ||= (e) => E.value = void 0
|
|
1154
|
-
}, w(
|
|
1166
|
+
}, C(w(c).t("kvcoder.config.workers.cancel")), 9, Gn),
|
|
1155
1167
|
a("button", {
|
|
1156
1168
|
type: "button",
|
|
1157
1169
|
class: "kvc-button kvc-danger",
|
|
1158
|
-
disabled:
|
|
1170
|
+
disabled: w(m),
|
|
1159
1171
|
"data-test": "worker-remove-yes",
|
|
1160
1172
|
onClick: (t) => A(e.name)
|
|
1161
|
-
}, w(
|
|
1162
|
-
], 8,
|
|
1173
|
+
}, C(w(c).t("kvcoder.config.workers.removeYes")), 9, Kn)
|
|
1174
|
+
], 8, Un)) : (_(), i("span", qn, [
|
|
1163
1175
|
a("button", {
|
|
1164
1176
|
type: "button",
|
|
1165
1177
|
class: "kvc-button kvc-ghost kvc-icon-button",
|
|
1166
|
-
disabled:
|
|
1178
|
+
disabled: w(d) || w(m),
|
|
1167
1179
|
"aria-label": O("edit", e.name),
|
|
1168
1180
|
title: O("edit", e.name),
|
|
1169
1181
|
"data-test": "worker-edit",
|
|
1170
|
-
onClick: (t) =>
|
|
1171
|
-
}, [s(
|
|
1182
|
+
onClick: (t) => T.value = { entry: e }
|
|
1183
|
+
}, [s(w(U), {
|
|
1172
1184
|
size: 16,
|
|
1173
1185
|
"aria-hidden": "true"
|
|
1174
|
-
})], 8,
|
|
1186
|
+
})], 8, Jn),
|
|
1175
1187
|
a("button", {
|
|
1176
1188
|
type: "button",
|
|
1177
1189
|
class: "kvc-button kvc-ghost kvc-icon-button",
|
|
1178
|
-
disabled:
|
|
1190
|
+
disabled: w(d) || w(m),
|
|
1179
1191
|
"aria-label": O("remove", e.name),
|
|
1180
1192
|
title: O("remove", e.name),
|
|
1181
1193
|
"data-test": "worker-remove",
|
|
1182
1194
|
onClick: (t) => E.value = e.name
|
|
1183
|
-
}, [s(
|
|
1195
|
+
}, [s(w(se), {
|
|
1184
1196
|
size: 16,
|
|
1185
1197
|
"aria-hidden": "true"
|
|
1186
|
-
})], 8,
|
|
1198
|
+
})], 8, Yn),
|
|
1187
1199
|
a("button", {
|
|
1188
1200
|
type: "button",
|
|
1189
1201
|
role: "switch",
|
|
1190
1202
|
class: "kvc-switch",
|
|
1191
1203
|
"aria-checked": e.enabled,
|
|
1192
1204
|
"aria-label": O("use", e.name),
|
|
1193
|
-
disabled:
|
|
1205
|
+
disabled: w(d) || w(m),
|
|
1194
1206
|
"data-test": "worker-switch",
|
|
1195
|
-
onClick: (t) =>
|
|
1207
|
+
onClick: (t) => w(v)(e.name)
|
|
1196
1208
|
}, [...h[4] ||= [a("span", {
|
|
1197
1209
|
class: "kvc-switch-knob",
|
|
1198
1210
|
"aria-hidden": "true"
|
|
1199
|
-
}, null, -1)]], 8,
|
|
1200
|
-
]))], 8,
|
|
1201
|
-
a("div",
|
|
1211
|
+
}, null, -1)]], 8, Xn)
|
|
1212
|
+
]))], 8, Fn))), 128)),
|
|
1213
|
+
a("div", Zn, [a("button", {
|
|
1202
1214
|
type: "button",
|
|
1203
1215
|
class: "kvc-button kvc-primary",
|
|
1204
|
-
disabled:
|
|
1216
|
+
disabled: w(d) || w(m),
|
|
1205
1217
|
"data-test": "worker-add",
|
|
1206
|
-
onClick: h[3] ||= (e) =>
|
|
1207
|
-
}, [s(
|
|
1218
|
+
onClick: h[3] ||= (e) => T.value = {}
|
|
1219
|
+
}, [s(w(W), {
|
|
1208
1220
|
size: 16,
|
|
1209
1221
|
"aria-hidden": "true"
|
|
1210
|
-
}), o(w(
|
|
1211
|
-
])) : (
|
|
1212
|
-
taken:
|
|
1213
|
-
working:
|
|
1222
|
+
}), o(C(w(c).t("kvcoder.config.workers.add")), 1)], 8, Qn)])
|
|
1223
|
+
])) : (_(), n(Dn, f({ key: 0 }, T.value.entry === void 0 ? {} : { entry: T.value.entry }, {
|
|
1224
|
+
taken: w(l).filter((e) => e.name !== T.value?.entry?.name).map((e) => e.name),
|
|
1225
|
+
working: w(m),
|
|
1214
1226
|
onSave: k,
|
|
1215
|
-
onCancel: h[0] ||= (e) =>
|
|
1227
|
+
onCancel: h[0] ||= (e) => T.value = void 0
|
|
1216
1228
|
}), null, 16, ["taken", "working"]));
|
|
1217
1229
|
}
|
|
1218
|
-
}),
|
|
1219
|
-
function
|
|
1220
|
-
return typeof e != "object" || !e || !("name" in e) || !("description" in e) || typeof e.name != "string" || typeof e.description != "string" ? !1 : "command" in e ? typeof e.command == "string" && "args" in e &&
|
|
1230
|
+
}), er = "@kvman/kvcoder", tr = (e) => Array.isArray(e) && e.every((e) => typeof e == "string");
|
|
1231
|
+
function nr(e) {
|
|
1232
|
+
return typeof e != "object" || !e || !("name" in e) || !("description" in e) || typeof e.name != "string" || typeof e.description != "string" ? !1 : "command" in e ? typeof e.command == "string" && "args" in e && tr(e.args) && "env" in e && tr(e.env) : "url" in e && typeof e.url == "string" && "headers" in e && tr(e.headers);
|
|
1221
1233
|
}
|
|
1222
|
-
var
|
|
1223
|
-
function
|
|
1234
|
+
var rr = (e) => Array.isArray(e) ? e.filter(nr) : [], ir = (e, t, n) => `mcp.${e}.${t}.${n}`, $ = (e) => `mcp.${e}.`, ar = (e) => e.kind === "command" ? "env" : "header";
|
|
1235
|
+
function or(e, t) {
|
|
1224
1236
|
if (e === void 0) return {
|
|
1225
1237
|
name: "",
|
|
1226
1238
|
description: "",
|
|
@@ -1233,7 +1245,7 @@ function ir(e, t) {
|
|
|
1233
1245
|
let [n, r] = "command" in e ? ["env", e.env] : ["header", e.headers], i = r.map((r) => ({
|
|
1234
1246
|
name: r,
|
|
1235
1247
|
value: "",
|
|
1236
|
-
set: t.includes(
|
|
1248
|
+
set: t.includes(ir(e.name, n, r)),
|
|
1237
1249
|
replacing: !1
|
|
1238
1250
|
}));
|
|
1239
1251
|
return "command" in e ? {
|
|
@@ -1254,7 +1266,7 @@ function ir(e, t) {
|
|
|
1254
1266
|
values: i
|
|
1255
1267
|
};
|
|
1256
1268
|
}
|
|
1257
|
-
function
|
|
1269
|
+
function sr(e) {
|
|
1258
1270
|
let t = {
|
|
1259
1271
|
name: e.name.trim(),
|
|
1260
1272
|
description: e.description.trim()
|
|
@@ -1270,93 +1282,101 @@ function ar(e) {
|
|
|
1270
1282
|
env: n
|
|
1271
1283
|
};
|
|
1272
1284
|
}
|
|
1273
|
-
var
|
|
1285
|
+
var cr = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/, lr = {
|
|
1274
1286
|
env: /^[A-Za-z_][A-Za-z0-9_]*$/,
|
|
1275
1287
|
header: /^[A-Za-z0-9!#$%&'*+.^_`|~-]+$/
|
|
1276
|
-
},
|
|
1277
|
-
function
|
|
1278
|
-
let t =
|
|
1279
|
-
return n.some((e) => !
|
|
1288
|
+
}, ur = (e) => URL.canParse(e) && ["http:", "https:"].includes(new URL(e).protocol);
|
|
1289
|
+
function dr(e) {
|
|
1290
|
+
let t = ar(e), n = e.values.map((e) => e.name.trim());
|
|
1291
|
+
return n.some((e) => !lr[t].test(e)) ? `kvcoder.config.mcp.invalid.valueName.${t}` : new Set(n).size === n.length ? e.values.some((e) => (!e.set || e.replacing) && e.value === "") ? "kvcoder.config.mcp.invalid.valueEmpty" : void 0 : "kvcoder.config.mcp.invalid.valueRepeated";
|
|
1280
1292
|
}
|
|
1281
|
-
function
|
|
1293
|
+
function fr(e, t) {
|
|
1282
1294
|
let n = e.name.trim(), r = {};
|
|
1283
|
-
n === "" ? r.name = "kvcoder.config.mcp.invalid.nameEmpty" :
|
|
1284
|
-
let i =
|
|
1295
|
+
n === "" ? r.name = "kvcoder.config.mcp.invalid.nameEmpty" : cr.test(n) ? t.includes(n) && (r.name = "kvcoder.config.mcp.invalid.nameTaken") : r.name = "kvcoder.config.mcp.invalid.nameShape", e.description.trim() === "" && (r.description = "kvcoder.config.mcp.invalid.descriptionEmpty"), e.kind === "command" && e.command.trim() === "" && (r.command = "kvcoder.config.mcp.invalid.commandEmpty"), e.kind === "url" && !ur(e.url.trim()) && (r.url = "kvcoder.config.mcp.invalid.url");
|
|
1296
|
+
let i = dr(e);
|
|
1285
1297
|
return i !== void 0 && (r.values = i), r;
|
|
1286
1298
|
}
|
|
1287
|
-
function
|
|
1288
|
-
|
|
1299
|
+
function pr(e, t) {
|
|
1300
|
+
return t === void 0 ? !1 : "command" in t ? e.kind !== "command" || e.command.trim() !== t.command || e.args.split("\n").map((e) => e.trim()).filter((e) => e !== "").join("\n") !== t.args.join("\n") : e.kind !== "url" || e.url.trim() !== t.url;
|
|
1301
|
+
}
|
|
1302
|
+
function mr(e, t, n) {
|
|
1303
|
+
let r = e.name.trim(), i = ar(e), a = new Set(e.values.map((e) => ir(r, i, e.name.trim()))), o = Object.fromEntries(e.values.filter((e) => !e.set || e.replacing).map((e) => [ir(r, i, e.name.trim()), e.value])), s = t === void 0 ? [] : n.filter((e) => e.startsWith(`${$(r)}env.`) || e.startsWith(`${$(r)}header.`)), c = pr(e, t) ? n.filter((e) => e.startsWith(`${$(r)}oauth.`)) : [];
|
|
1289
1304
|
return {
|
|
1290
|
-
set:
|
|
1291
|
-
remove:
|
|
1305
|
+
set: o,
|
|
1306
|
+
remove: [...s.filter((e) => !a.has(e)), ...c]
|
|
1292
1307
|
};
|
|
1293
1308
|
}
|
|
1294
1309
|
//#endregion
|
|
1295
1310
|
//#region web/src/McpServerForm.vue?vue&type=script&setup=true&lang.ts
|
|
1296
|
-
var
|
|
1311
|
+
var hr = {
|
|
1297
1312
|
class: "kvc-setting-title",
|
|
1298
1313
|
"data-test": "mcp-form-title"
|
|
1299
|
-
},
|
|
1314
|
+
}, gr = { class: "kvc-form-field" }, _r = { class: "kvc-form-label" }, vr = ["aria-invalid"], yr = {
|
|
1300
1315
|
key: 0,
|
|
1301
1316
|
class: "kvc-form-error",
|
|
1302
1317
|
role: "alert",
|
|
1303
1318
|
"data-test": "mcp-name-error"
|
|
1304
|
-
},
|
|
1319
|
+
}, br = {
|
|
1305
1320
|
key: 1,
|
|
1306
1321
|
class: "kvc-muted"
|
|
1307
|
-
},
|
|
1322
|
+
}, xr = { class: "kvc-form-field" }, Sr = { class: "kvc-form-label" }, Cr = ["aria-invalid"], wr = {
|
|
1308
1323
|
key: 0,
|
|
1309
1324
|
class: "kvc-form-error",
|
|
1310
1325
|
role: "alert",
|
|
1311
1326
|
"data-test": "mcp-description-error"
|
|
1312
|
-
},
|
|
1327
|
+
}, Tr = {
|
|
1313
1328
|
key: 1,
|
|
1314
1329
|
class: "kvc-muted"
|
|
1315
|
-
},
|
|
1330
|
+
}, Er = { class: "kvc-form-choice" }, Dr = { class: "kvc-form-label" }, Or = [
|
|
1316
1331
|
"value",
|
|
1317
1332
|
"checked",
|
|
1318
1333
|
"data-test",
|
|
1319
1334
|
"onChange"
|
|
1320
|
-
],
|
|
1335
|
+
], kr = { class: "kvc-form-field" }, Ar = { class: "kvc-form-label" }, jr = ["aria-invalid"], Mr = {
|
|
1321
1336
|
key: 0,
|
|
1322
1337
|
class: "kvc-form-error",
|
|
1323
1338
|
role: "alert",
|
|
1324
1339
|
"data-test": "mcp-command-error"
|
|
1325
|
-
},
|
|
1340
|
+
}, Nr = {
|
|
1326
1341
|
key: 1,
|
|
1327
1342
|
class: "kvc-muted"
|
|
1328
|
-
},
|
|
1343
|
+
}, Pr = { class: "kvc-form-field" }, Fr = { class: "kvc-form-label" }, Ir = { class: "kvc-muted" }, Lr = {
|
|
1329
1344
|
key: 1,
|
|
1330
1345
|
class: "kvc-form-field"
|
|
1331
|
-
},
|
|
1346
|
+
}, Rr = { class: "kvc-form-label" }, zr = ["aria-invalid"], Br = {
|
|
1332
1347
|
key: 0,
|
|
1333
1348
|
class: "kvc-form-error",
|
|
1334
1349
|
role: "alert",
|
|
1335
1350
|
"data-test": "mcp-url-error"
|
|
1336
|
-
},
|
|
1351
|
+
}, Vr = {
|
|
1337
1352
|
class: "kvc-form-field",
|
|
1338
1353
|
"data-test": "mcp-values"
|
|
1339
|
-
},
|
|
1354
|
+
}, Hr = { class: "kvc-form-label" }, Ur = { class: "kvc-muted" }, Wr = {
|
|
1355
|
+
key: 0,
|
|
1356
|
+
class: "kvc-muted",
|
|
1357
|
+
role: "status",
|
|
1358
|
+
"data-test": "mcp-moved"
|
|
1359
|
+
}, Gr = [
|
|
1340
1360
|
"onUpdate:modelValue",
|
|
1341
1361
|
"disabled",
|
|
1342
1362
|
"placeholder",
|
|
1343
1363
|
"aria-label"
|
|
1344
|
-
],
|
|
1364
|
+
], Kr = {
|
|
1345
1365
|
key: 0,
|
|
1346
1366
|
class: "kvc-form-set"
|
|
1347
|
-
},
|
|
1367
|
+
}, qr = {
|
|
1348
1368
|
class: "kvc-chip",
|
|
1349
1369
|
"data-test": "mcp-value-set"
|
|
1350
|
-
},
|
|
1370
|
+
}, Jr = ["onClick"], Yr = [
|
|
1351
1371
|
"onUpdate:modelValue",
|
|
1352
1372
|
"placeholder",
|
|
1353
1373
|
"aria-label"
|
|
1354
|
-
],
|
|
1355
|
-
key:
|
|
1374
|
+
], Xr = ["aria-label", "onClick"], Zr = {
|
|
1375
|
+
key: 1,
|
|
1356
1376
|
class: "kvc-form-error",
|
|
1357
1377
|
role: "alert",
|
|
1358
1378
|
"data-test": "mcp-values-error"
|
|
1359
|
-
},
|
|
1379
|
+
}, Qr = { class: "kvc-actions" }, $r = ["disabled"], ei = ["disabled"], ti = /* @__PURE__ */ c({
|
|
1360
1380
|
__name: "McpServerForm",
|
|
1361
1381
|
props: {
|
|
1362
1382
|
entry: {},
|
|
@@ -1366,38 +1386,42 @@ var fr = {
|
|
|
1366
1386
|
},
|
|
1367
1387
|
emits: ["save", "cancel"],
|
|
1368
1388
|
setup(n, { emit: c }) {
|
|
1369
|
-
let l = n, u = c, d =
|
|
1370
|
-
|
|
1371
|
-
|
|
1389
|
+
let l = n, u = c, d = K(), f = v(or(l.entry, l.secrets)), p = y({}), m = t(() => ar(f)), h = (e) => d.t(`kvcoder.config.mcp.form.${e}`), g = t(() => pr(f, l.entry));
|
|
1390
|
+
j(g, (e) => {
|
|
1391
|
+
if (e) for (let e of f.values) e.set && (e.replacing = !0);
|
|
1392
|
+
});
|
|
1393
|
+
let x = l.entry !== void 0;
|
|
1394
|
+
function S() {
|
|
1395
|
+
p.value = fr(f, l.taken), !(Object.keys(p.value).length > 0) && u("save", sr(f), mr(f, l.entry, l.secrets));
|
|
1372
1396
|
}
|
|
1373
|
-
function
|
|
1397
|
+
function T(e) {
|
|
1374
1398
|
f.kind !== e && (f.kind = e, f.values = []);
|
|
1375
1399
|
}
|
|
1376
|
-
return (t, n) => (
|
|
1400
|
+
return (t, n) => (_(), i("form", {
|
|
1377
1401
|
class: "kvc-form",
|
|
1378
1402
|
novalidate: "",
|
|
1379
1403
|
"data-test": "mcp-form",
|
|
1380
|
-
onSubmit:
|
|
1404
|
+
onSubmit: F(S, ["prevent"])
|
|
1381
1405
|
}, [
|
|
1382
|
-
a("span",
|
|
1383
|
-
a("label",
|
|
1384
|
-
a("span",
|
|
1385
|
-
|
|
1406
|
+
a("span", hr, C(x ? w(d).t("kvcoder.config.mcp.form.titleEdit", { name: f.name }) : h("titleNew")), 1),
|
|
1407
|
+
a("label", gr, [
|
|
1408
|
+
a("span", _r, C(h("name")), 1),
|
|
1409
|
+
N(a("input", {
|
|
1386
1410
|
"onUpdate:modelValue": n[0] ||= (e) => f.name = e,
|
|
1387
1411
|
type: "text",
|
|
1388
1412
|
dir: "ltr",
|
|
1389
1413
|
class: "kvc-field kvc-mono",
|
|
1390
|
-
disabled:
|
|
1414
|
+
disabled: x,
|
|
1391
1415
|
spellcheck: "false",
|
|
1392
1416
|
autocomplete: "off",
|
|
1393
1417
|
"aria-invalid": p.value.name !== void 0,
|
|
1394
1418
|
"data-test": "mcp-name"
|
|
1395
|
-
}, null, 8,
|
|
1396
|
-
p.value.name === void 0 ? (
|
|
1419
|
+
}, null, 8, vr), [[A, f.name]]),
|
|
1420
|
+
p.value.name === void 0 ? (_(), i("span", br, C(h("nameHint")), 1)) : (_(), i("span", yr, C(w(d).t(p.value.name)), 1))
|
|
1397
1421
|
]),
|
|
1398
|
-
a("label",
|
|
1399
|
-
a("span",
|
|
1400
|
-
|
|
1422
|
+
a("label", xr, [
|
|
1423
|
+
a("span", Sr, C(h("description")), 1),
|
|
1424
|
+
N(a("input", {
|
|
1401
1425
|
"onUpdate:modelValue": n[1] ||= (e) => f.description = e,
|
|
1402
1426
|
type: "text",
|
|
1403
1427
|
dir: "auto",
|
|
@@ -1405,10 +1429,10 @@ var fr = {
|
|
|
1405
1429
|
autocomplete: "off",
|
|
1406
1430
|
"aria-invalid": p.value.description !== void 0,
|
|
1407
1431
|
"data-test": "mcp-description"
|
|
1408
|
-
}, null, 8,
|
|
1409
|
-
p.value.description === void 0 ? (
|
|
1432
|
+
}, null, 8, Cr), [[A, f.description]]),
|
|
1433
|
+
p.value.description === void 0 ? (_(), i("span", Tr, C(h("descriptionHint")), 1)) : (_(), i("span", wr, C(w(d).t(p.value.description)), 1))
|
|
1410
1434
|
]),
|
|
1411
|
-
a("fieldset",
|
|
1435
|
+
a("fieldset", Er, [a("legend", Dr, C(h("kind")), 1), (_(), i(e, null, b(["command", "url"], (e) => a("label", {
|
|
1412
1436
|
key: e,
|
|
1413
1437
|
class: "kvc-form-radio"
|
|
1414
1438
|
}, [a("input", {
|
|
@@ -1417,11 +1441,11 @@ var fr = {
|
|
|
1417
1441
|
value: e,
|
|
1418
1442
|
checked: f.kind === e,
|
|
1419
1443
|
"data-test": `mcp-kind-${e}`,
|
|
1420
|
-
onChange: (t) =>
|
|
1421
|
-
}, null, 40,
|
|
1422
|
-
f.kind === "command" ? (
|
|
1423
|
-
a("span",
|
|
1424
|
-
|
|
1444
|
+
onChange: (t) => T(e)
|
|
1445
|
+
}, null, 40, Or), o(" " + C(h(`kind.${e}`)), 1)])), 64))]),
|
|
1446
|
+
f.kind === "command" ? (_(), i(e, { key: 0 }, [a("label", kr, [
|
|
1447
|
+
a("span", Ar, C(h("command")), 1),
|
|
1448
|
+
N(a("input", {
|
|
1425
1449
|
"onUpdate:modelValue": n[2] ||= (e) => f.command = e,
|
|
1426
1450
|
type: "text",
|
|
1427
1451
|
dir: "ltr",
|
|
@@ -1430,22 +1454,22 @@ var fr = {
|
|
|
1430
1454
|
autocomplete: "off",
|
|
1431
1455
|
"aria-invalid": p.value.command !== void 0,
|
|
1432
1456
|
"data-test": "mcp-command"
|
|
1433
|
-
}, null, 8,
|
|
1434
|
-
p.value.command === void 0 ? (
|
|
1435
|
-
]), a("label",
|
|
1436
|
-
a("span",
|
|
1437
|
-
|
|
1457
|
+
}, null, 8, jr), [[A, f.command]]),
|
|
1458
|
+
p.value.command === void 0 ? (_(), i("span", Nr, C(h("commandHint")), 1)) : (_(), i("span", Mr, C(w(d).t(p.value.command)), 1))
|
|
1459
|
+
]), a("label", Pr, [
|
|
1460
|
+
a("span", Fr, C(h("args")), 1),
|
|
1461
|
+
N(a("textarea", {
|
|
1438
1462
|
"onUpdate:modelValue": n[3] ||= (e) => f.args = e,
|
|
1439
1463
|
dir: "ltr",
|
|
1440
1464
|
rows: "3",
|
|
1441
1465
|
class: "kvc-field kvc-mono",
|
|
1442
1466
|
spellcheck: "false",
|
|
1443
1467
|
"data-test": "mcp-args"
|
|
1444
|
-
}, null, 512), [[
|
|
1445
|
-
a("span",
|
|
1446
|
-
])], 64)) : (
|
|
1447
|
-
a("span",
|
|
1448
|
-
|
|
1468
|
+
}, null, 512), [[A, f.args]]),
|
|
1469
|
+
a("span", Ir, C(h("argsHint")), 1)
|
|
1470
|
+
])], 64)) : (_(), i("label", Lr, [
|
|
1471
|
+
a("span", Rr, C(h("url")), 1),
|
|
1472
|
+
N(a("input", {
|
|
1449
1473
|
"onUpdate:modelValue": n[4] ||= (e) => f.url = e,
|
|
1450
1474
|
type: "url",
|
|
1451
1475
|
dir: "ltr",
|
|
@@ -1455,18 +1479,19 @@ var fr = {
|
|
|
1455
1479
|
placeholder: "https://",
|
|
1456
1480
|
"aria-invalid": p.value.url !== void 0,
|
|
1457
1481
|
"data-test": "mcp-url"
|
|
1458
|
-
}, null, 8,
|
|
1459
|
-
p.value.url === void 0 ? r("v-if", !0) : (
|
|
1482
|
+
}, null, 8, zr), [[A, f.url]]),
|
|
1483
|
+
p.value.url === void 0 ? r("v-if", !0) : (_(), i("span", Br, C(w(d).t(p.value.url)), 1))
|
|
1460
1484
|
])),
|
|
1461
|
-
a("div",
|
|
1462
|
-
a("span",
|
|
1463
|
-
a("span",
|
|
1464
|
-
(
|
|
1485
|
+
a("div", Vr, [
|
|
1486
|
+
a("span", Hr, C(h(m.value)), 1),
|
|
1487
|
+
a("span", Ur, C(h("secretsHint")), 1),
|
|
1488
|
+
g.value ? (_(), i("span", Wr, C(h("moved")), 1)) : r("v-if", !0),
|
|
1489
|
+
(_(!0), i(e, null, b(f.values, (e, t) => (_(), i("div", {
|
|
1465
1490
|
key: t,
|
|
1466
1491
|
class: "kvc-form-value",
|
|
1467
1492
|
"data-test": "mcp-value"
|
|
1468
1493
|
}, [
|
|
1469
|
-
|
|
1494
|
+
N(a("input", {
|
|
1470
1495
|
"onUpdate:modelValue": (t) => e.name = t,
|
|
1471
1496
|
type: "text",
|
|
1472
1497
|
dir: "ltr",
|
|
@@ -1477,34 +1502,34 @@ var fr = {
|
|
|
1477
1502
|
spellcheck: "false",
|
|
1478
1503
|
autocomplete: "off",
|
|
1479
1504
|
"data-test": "mcp-value-name"
|
|
1480
|
-
}, null, 8,
|
|
1481
|
-
e.set && !e.replacing ? (
|
|
1505
|
+
}, null, 8, Gr), [[A, e.name]]),
|
|
1506
|
+
e.set && !e.replacing ? (_(), i("span", Kr, [a("span", qr, C(h("set")), 1), a("button", {
|
|
1482
1507
|
type: "button",
|
|
1483
1508
|
class: "kvc-text-button",
|
|
1484
1509
|
"data-test": "mcp-value-replace",
|
|
1485
1510
|
onClick: (t) => e.replacing = !0
|
|
1486
|
-
},
|
|
1511
|
+
}, C(h("replace")), 9, Jr)])) : N((_(), i("input", {
|
|
1487
1512
|
key: 1,
|
|
1488
1513
|
"onUpdate:modelValue": (t) => e.value = t,
|
|
1489
1514
|
type: "password",
|
|
1490
1515
|
autocomplete: "off",
|
|
1491
1516
|
class: "kvc-field",
|
|
1492
1517
|
placeholder: h("value"),
|
|
1493
|
-
"aria-label":
|
|
1518
|
+
"aria-label": w(d).t("kvcoder.config.mcp.form.valueOf", { name: e.name }),
|
|
1494
1519
|
"data-test": "mcp-value-secret"
|
|
1495
|
-
}, null, 8,
|
|
1520
|
+
}, null, 8, Yr)), [[A, e.value]]),
|
|
1496
1521
|
a("button", {
|
|
1497
1522
|
type: "button",
|
|
1498
1523
|
class: "kvc-button kvc-ghost kvc-icon-button",
|
|
1499
|
-
"aria-label":
|
|
1524
|
+
"aria-label": w(d).t("kvcoder.config.mcp.form.removeValue", { name: e.name }),
|
|
1500
1525
|
"data-test": "mcp-value-remove",
|
|
1501
1526
|
onClick: (e) => f.values.splice(t, 1)
|
|
1502
|
-
}, [s(
|
|
1527
|
+
}, [s(w(ce), {
|
|
1503
1528
|
size: 16,
|
|
1504
1529
|
"aria-hidden": "true"
|
|
1505
|
-
})], 8,
|
|
1530
|
+
})], 8, Xr)
|
|
1506
1531
|
]))), 128)),
|
|
1507
|
-
p.value.values === void 0 ? r("v-if", !0) : (
|
|
1532
|
+
p.value.values === void 0 ? r("v-if", !0) : (_(), i("span", Zr, C(w(d).t(p.value.values)), 1)),
|
|
1508
1533
|
a("button", {
|
|
1509
1534
|
type: "button",
|
|
1510
1535
|
class: "kvc-text-button kvc-form-add",
|
|
@@ -1515,31 +1540,31 @@ var fr = {
|
|
|
1515
1540
|
set: !1,
|
|
1516
1541
|
replacing: !1
|
|
1517
1542
|
})
|
|
1518
|
-
}, [s(
|
|
1543
|
+
}, [s(w(W), {
|
|
1519
1544
|
size: 14,
|
|
1520
1545
|
"aria-hidden": "true"
|
|
1521
|
-
}), o(
|
|
1546
|
+
}), o(C(h(`add.${m.value}`)), 1)])
|
|
1522
1547
|
]),
|
|
1523
|
-
a("div",
|
|
1548
|
+
a("div", Qr, [a("button", {
|
|
1524
1549
|
type: "button",
|
|
1525
1550
|
class: "kvc-button",
|
|
1526
1551
|
disabled: l.working,
|
|
1527
1552
|
"data-test": "mcp-cancel",
|
|
1528
1553
|
onClick: n[6] ||= (e) => u("cancel")
|
|
1529
|
-
}, w(
|
|
1554
|
+
}, C(w(d).t("kvcoder.config.mcp.cancel")), 9, $r), a("button", {
|
|
1530
1555
|
type: "submit",
|
|
1531
1556
|
class: "kvc-button kvc-primary",
|
|
1532
1557
|
disabled: l.working,
|
|
1533
1558
|
"data-test": "mcp-save"
|
|
1534
|
-
},
|
|
1559
|
+
}, C(h("save")), 9, ei)])
|
|
1535
1560
|
], 32));
|
|
1536
1561
|
}
|
|
1537
1562
|
});
|
|
1538
1563
|
//#endregion
|
|
1539
1564
|
//#region web/src/use-mcp-servers.ts
|
|
1540
|
-
function
|
|
1541
|
-
let n =
|
|
1542
|
-
a.value = (await e.exec("kernel.secrets.list", {})).filter((e) => e.extension ===
|
|
1565
|
+
function ni(e) {
|
|
1566
|
+
let n = J(e, "kvcoder.mcp.servers"), r = t(() => rr(n.value.value)), i = y({}), a = y([]), o = y(!1), s = /* @__PURE__ */ new Set(), c = async () => {
|
|
1567
|
+
a.value = (await e.exec("kernel.secrets.list", {})).filter((e) => e.extension === er).map((e) => e.name);
|
|
1543
1568
|
};
|
|
1544
1569
|
async function l(t) {
|
|
1545
1570
|
i.value = {
|
|
@@ -1573,14 +1598,14 @@ function Qr(e) {
|
|
|
1573
1598
|
try {
|
|
1574
1599
|
return await t();
|
|
1575
1600
|
} catch (t) {
|
|
1576
|
-
return
|
|
1601
|
+
return q(e, t), !1;
|
|
1577
1602
|
} finally {
|
|
1578
1603
|
o.value = !1;
|
|
1579
1604
|
}
|
|
1580
1605
|
}
|
|
1581
1606
|
let f = async (t) => {
|
|
1582
1607
|
for (let n of t) await e.exec("kernel.secrets.delete", {
|
|
1583
|
-
extension:
|
|
1608
|
+
extension: er,
|
|
1584
1609
|
name: n
|
|
1585
1610
|
});
|
|
1586
1611
|
}, p = (t, i) => d(async () => {
|
|
@@ -1593,7 +1618,7 @@ function Qr(e) {
|
|
|
1593
1618
|
try {
|
|
1594
1619
|
if (!await n.set(u)) return !1;
|
|
1595
1620
|
for (let [t, n] of Object.entries(i.set)) await e.exec("kernel.secrets.set", {
|
|
1596
|
-
extension:
|
|
1621
|
+
extension: er,
|
|
1597
1622
|
name: t,
|
|
1598
1623
|
value: n
|
|
1599
1624
|
});
|
|
@@ -1612,25 +1637,25 @@ function Qr(e) {
|
|
|
1612
1637
|
let r = window.open(n, "_blank");
|
|
1613
1638
|
return r === null ? "blocked" : (r.opener = null, "opened");
|
|
1614
1639
|
}
|
|
1615
|
-
let
|
|
1616
|
-
async function
|
|
1640
|
+
let _ = (e) => d(async () => (await f(a.value.filter((t) => t.startsWith(`${$(e)}oauth.`))), await c(), l(e), !0)), v = (e) => a.value.includes(`${$(e)}oauth.tokens`);
|
|
1641
|
+
async function b() {
|
|
1617
1642
|
let e = r.value.filter((e) => i.value[e.name]?.status === "signInNeeded");
|
|
1618
1643
|
if (e.length !== 0) {
|
|
1619
1644
|
await c();
|
|
1620
1645
|
for (let t of e) l(t.name);
|
|
1621
1646
|
}
|
|
1622
1647
|
}
|
|
1623
|
-
return
|
|
1624
|
-
window.addEventListener("focus",
|
|
1648
|
+
return h(async () => {
|
|
1649
|
+
window.addEventListener("focus", b);
|
|
1625
1650
|
try {
|
|
1626
1651
|
await c();
|
|
1627
1652
|
} catch (t) {
|
|
1628
|
-
|
|
1653
|
+
q(e, t);
|
|
1629
1654
|
}
|
|
1630
|
-
}),
|
|
1655
|
+
}), j(r, (e, t) => {
|
|
1631
1656
|
let n = new Set((t ?? []).map((e) => e.name));
|
|
1632
1657
|
for (let t of e) !s.has(t.name) && (!n.has(t.name) || !(t.name in i.value)) && l(t.name);
|
|
1633
|
-
}),
|
|
1658
|
+
}), g(() => window.removeEventListener("focus", b)), j(() => e.workspace.value.id, u), {
|
|
1634
1659
|
servers: r,
|
|
1635
1660
|
states: i,
|
|
1636
1661
|
secrets: a,
|
|
@@ -1642,59 +1667,59 @@ function Qr(e) {
|
|
|
1642
1667
|
reset: n.reset,
|
|
1643
1668
|
check: l,
|
|
1644
1669
|
signIn: m,
|
|
1645
|
-
signOut:
|
|
1670
|
+
signOut: _,
|
|
1646
1671
|
signedIn: v
|
|
1647
1672
|
};
|
|
1648
1673
|
}
|
|
1649
1674
|
//#endregion
|
|
1650
1675
|
//#region web/src/McpServers.vue?vue&type=script&setup=true&lang.ts
|
|
1651
|
-
var
|
|
1676
|
+
var ri = {
|
|
1652
1677
|
key: 1,
|
|
1653
1678
|
class: "kvc-dialog-rows",
|
|
1654
1679
|
"data-test": "mcp-servers"
|
|
1655
|
-
},
|
|
1680
|
+
}, ii = { class: "kvc-muted" }, ai = {
|
|
1656
1681
|
key: 0,
|
|
1657
1682
|
class: "kvc-muted",
|
|
1658
1683
|
"data-test": "mcp-own-value"
|
|
1659
|
-
},
|
|
1684
|
+
}, oi = {
|
|
1660
1685
|
key: 1,
|
|
1661
1686
|
class: "kvc-connectors-state"
|
|
1662
|
-
},
|
|
1687
|
+
}, si = {
|
|
1663
1688
|
class: "kvc-chip",
|
|
1664
1689
|
"data-test": "mcp-changed"
|
|
1665
|
-
},
|
|
1690
|
+
}, ci = ["disabled"], li = {
|
|
1666
1691
|
key: 2,
|
|
1667
1692
|
class: "kvc-muted",
|
|
1668
1693
|
"data-test": "mcp-empty"
|
|
1669
|
-
},
|
|
1694
|
+
}, ui = ["data-test"], di = { class: "kvc-connector-text" }, fi = {
|
|
1670
1695
|
class: "kvc-mono kvc-connector-name",
|
|
1671
1696
|
"data-test": "mcp-server-name"
|
|
1672
|
-
},
|
|
1697
|
+
}, pi = {
|
|
1673
1698
|
class: "kvc-muted",
|
|
1674
1699
|
dir: "auto",
|
|
1675
1700
|
"data-test": "mcp-server-description"
|
|
1676
|
-
},
|
|
1701
|
+
}, mi = ["data-status"], hi = ["onClick"], gi = ["disabled", "onClick"], _i = ["disabled", "onClick"], vi = {
|
|
1677
1702
|
key: 1,
|
|
1678
1703
|
class: "kvc-muted kvc-server-reason",
|
|
1679
1704
|
dir: "auto",
|
|
1680
1705
|
"data-test": "mcp-server-reason"
|
|
1681
|
-
},
|
|
1706
|
+
}, yi = ["aria-label"], bi = { class: "kvc-muted" }, xi = ["disabled"], Si = ["disabled", "onClick"], Ci = {
|
|
1682
1707
|
key: 1,
|
|
1683
1708
|
class: "kvc-connector-actions"
|
|
1684
|
-
},
|
|
1709
|
+
}, wi = [
|
|
1685
1710
|
"disabled",
|
|
1686
1711
|
"aria-label",
|
|
1687
1712
|
"title",
|
|
1688
1713
|
"onClick"
|
|
1689
|
-
],
|
|
1714
|
+
], Ti = [
|
|
1690
1715
|
"disabled",
|
|
1691
1716
|
"aria-label",
|
|
1692
1717
|
"title",
|
|
1693
1718
|
"onClick"
|
|
1694
|
-
],
|
|
1719
|
+
], Ei = { class: "kvc-actions" }, Di = ["disabled"], Oi = /* @__PURE__ */ c({
|
|
1695
1720
|
__name: "McpServers",
|
|
1696
1721
|
setup(t) {
|
|
1697
|
-
let c =
|
|
1722
|
+
let c = K(), { servers: l, states: u, secrets: d, locked: p, changed: m, working: h, save: g, remove: v, reset: x, check: S, signIn: T, signOut: E, signedIn: D } = ni(c), O = y(), k = y(), A = (e) => c.t(`${e}.${c.scope.value}`, { name: c.workspace.value.name }), j = (e) => u.value[e] ?? { status: "checking" };
|
|
1698
1723
|
function M(e) {
|
|
1699
1724
|
return e.status === "ready" ? c.t("kvcoder.config.mcp.ready", { count: e.tools }) : c.t(`kvcoder.config.mcp.${e.status}`);
|
|
1700
1725
|
}
|
|
@@ -1703,119 +1728,119 @@ var $r = {
|
|
|
1703
1728
|
await g(e, t) && (O.value = void 0, c.toast("kvcoder.config.mcp.saved", { name: e.name }, "success"));
|
|
1704
1729
|
}
|
|
1705
1730
|
async function F(e) {
|
|
1706
|
-
await
|
|
1731
|
+
await T(e) === "blocked" && c.toast("kvcoder.config.mcp.signIn.blocked", {}, "warning");
|
|
1707
1732
|
}
|
|
1708
1733
|
async function I(e) {
|
|
1709
|
-
await
|
|
1734
|
+
await v(e) && c.toast("kvcoder.config.mcp.removed", { name: e }, "success"), k.value = void 0;
|
|
1710
1735
|
}
|
|
1711
|
-
return (t, u) => O.value === void 0 ? (
|
|
1712
|
-
a("p",
|
|
1713
|
-
|
|
1736
|
+
return (t, u) => O.value === void 0 ? (_(), i("div", ri, [
|
|
1737
|
+
a("p", ii, C(w(c).t("kvcoder.config.mcp.intro")), 1),
|
|
1738
|
+
w(p) ? (_(), i("p", ai, C(w(c).t("kvcoder.config.connectors.ownValue", { name: w(c).workspace.value.name })), 1)) : w(m) ? (_(), i("div", oi, [a("span", si, C(A("kvcoder.config.connectors.changed")), 1), a("button", {
|
|
1714
1739
|
type: "button",
|
|
1715
1740
|
class: "kvc-text-button",
|
|
1716
|
-
disabled:
|
|
1741
|
+
disabled: w(h),
|
|
1717
1742
|
"data-test": "mcp-reset",
|
|
1718
|
-
onClick: u[1] ||= (...e) =>
|
|
1719
|
-
},
|
|
1720
|
-
|
|
1721
|
-
(
|
|
1743
|
+
onClick: u[1] ||= (...e) => w(x) && w(x)(...e)
|
|
1744
|
+
}, C(A("kvcoder.config.connectors.reset")), 9, ci)])) : r("v-if", !0),
|
|
1745
|
+
w(l).length === 0 ? (_(), i("p", li, C(w(c).t("kvcoder.config.mcp.empty")), 1)) : r("v-if", !0),
|
|
1746
|
+
(_(!0), i(e, null, b(w(l), (e) => (_(), i("div", {
|
|
1722
1747
|
key: e.name,
|
|
1723
1748
|
class: "kvc-connector kvc-server",
|
|
1724
1749
|
"data-test": `mcp-server-${e.name}`
|
|
1725
|
-
}, [a("span",
|
|
1726
|
-
a("span",
|
|
1727
|
-
a("span",
|
|
1750
|
+
}, [a("span", di, [
|
|
1751
|
+
a("span", fi, C(e.name), 1),
|
|
1752
|
+
a("span", pi, C(e.description), 1),
|
|
1728
1753
|
a("span", {
|
|
1729
1754
|
class: "kvc-server-state",
|
|
1730
1755
|
"data-status": j(e.name).status,
|
|
1731
1756
|
role: "status",
|
|
1732
1757
|
"data-test": "mcp-server-state"
|
|
1733
1758
|
}, [
|
|
1734
|
-
o(
|
|
1735
|
-
j(e.name).status === "checking" ? r("v-if", !0) : (
|
|
1759
|
+
o(C(M(j(e.name))) + " ", 1),
|
|
1760
|
+
j(e.name).status === "checking" ? r("v-if", !0) : (_(), i("button", {
|
|
1736
1761
|
key: 0,
|
|
1737
1762
|
type: "button",
|
|
1738
1763
|
class: "kvc-text-button",
|
|
1739
1764
|
"data-test": "mcp-server-check",
|
|
1740
|
-
onClick: (t) =>
|
|
1741
|
-
}, w(
|
|
1742
|
-
"url" in e &&
|
|
1765
|
+
onClick: (t) => w(S)(e.name)
|
|
1766
|
+
}, C(w(c).t("kvcoder.config.mcp.recheck")), 9, hi)),
|
|
1767
|
+
"url" in e && w(D)(e.name) ? (_(), i("button", {
|
|
1743
1768
|
key: 1,
|
|
1744
1769
|
type: "button",
|
|
1745
1770
|
class: "kvc-text-button",
|
|
1746
|
-
disabled:
|
|
1771
|
+
disabled: w(h),
|
|
1747
1772
|
"data-test": "mcp-server-sign-out",
|
|
1748
|
-
onClick: (t) =>
|
|
1749
|
-
}, w(
|
|
1750
|
-
], 8,
|
|
1751
|
-
"url" in e && j(e.name).status === "signInNeeded" ? (
|
|
1773
|
+
onClick: (t) => w(E)(e.name)
|
|
1774
|
+
}, C(w(c).t("kvcoder.config.mcp.signOut")), 9, gi)) : r("v-if", !0)
|
|
1775
|
+
], 8, mi),
|
|
1776
|
+
"url" in e && j(e.name).status === "signInNeeded" ? (_(), i("button", {
|
|
1752
1777
|
key: 0,
|
|
1753
1778
|
type: "button",
|
|
1754
1779
|
class: "kvc-button kvc-primary kvc-server-sign-in",
|
|
1755
|
-
disabled:
|
|
1780
|
+
disabled: w(h),
|
|
1756
1781
|
"data-test": "mcp-server-sign-in",
|
|
1757
1782
|
onClick: (t) => F(e.name)
|
|
1758
|
-
}, w(
|
|
1759
|
-
N(j(e.name)) === void 0 ? r("v-if", !0) : (
|
|
1760
|
-
]), k.value === e.name ? (
|
|
1783
|
+
}, C(w(c).t("kvcoder.config.mcp.signIn")), 9, _i)) : r("v-if", !0),
|
|
1784
|
+
N(j(e.name)) === void 0 ? r("v-if", !0) : (_(), i("span", vi, C(N(j(e.name))), 1))
|
|
1785
|
+
]), k.value === e.name ? (_(), i("span", {
|
|
1761
1786
|
key: 0,
|
|
1762
1787
|
class: "kvc-connector-actions",
|
|
1763
1788
|
role: "alertdialog",
|
|
1764
|
-
"aria-label":
|
|
1789
|
+
"aria-label": w(c).t("kvcoder.config.mcp.removeConfirm", { name: e.name }),
|
|
1765
1790
|
"data-test": "mcp-remove-confirm"
|
|
1766
1791
|
}, [
|
|
1767
|
-
a("span",
|
|
1792
|
+
a("span", bi, C(w(c).t("kvcoder.config.mcp.removeConfirm", { name: e.name })), 1),
|
|
1768
1793
|
a("button", {
|
|
1769
1794
|
type: "button",
|
|
1770
1795
|
class: "kvc-button",
|
|
1771
|
-
disabled:
|
|
1796
|
+
disabled: w(h),
|
|
1772
1797
|
"data-test": "mcp-remove-cancel",
|
|
1773
1798
|
onClick: u[2] ||= (e) => k.value = void 0
|
|
1774
|
-
}, w(
|
|
1799
|
+
}, C(w(c).t("kvcoder.config.mcp.cancel")), 9, xi),
|
|
1775
1800
|
a("button", {
|
|
1776
1801
|
type: "button",
|
|
1777
1802
|
class: "kvc-button kvc-danger",
|
|
1778
|
-
disabled:
|
|
1803
|
+
disabled: w(h),
|
|
1779
1804
|
"data-test": "mcp-remove-yes",
|
|
1780
1805
|
onClick: (t) => I(e.name)
|
|
1781
|
-
}, w(
|
|
1782
|
-
], 8,
|
|
1806
|
+
}, C(w(c).t("kvcoder.config.mcp.removeYes")), 9, Si)
|
|
1807
|
+
], 8, yi)) : (_(), i("span", Ci, [a("button", {
|
|
1783
1808
|
type: "button",
|
|
1784
1809
|
class: "kvc-button kvc-ghost kvc-icon-button",
|
|
1785
|
-
disabled:
|
|
1786
|
-
"aria-label":
|
|
1787
|
-
title:
|
|
1810
|
+
disabled: w(p) || w(h),
|
|
1811
|
+
"aria-label": w(c).t("kvcoder.config.mcp.edit", { name: e.name }),
|
|
1812
|
+
title: w(c).t("kvcoder.config.mcp.edit", { name: e.name }),
|
|
1788
1813
|
"data-test": "mcp-server-edit",
|
|
1789
1814
|
onClick: (t) => O.value = { entry: e }
|
|
1790
|
-
}, [s(
|
|
1815
|
+
}, [s(w(U), {
|
|
1791
1816
|
size: 16,
|
|
1792
1817
|
"aria-hidden": "true"
|
|
1793
|
-
})], 8,
|
|
1818
|
+
})], 8, wi), a("button", {
|
|
1794
1819
|
type: "button",
|
|
1795
1820
|
class: "kvc-button kvc-ghost kvc-icon-button",
|
|
1796
|
-
disabled:
|
|
1797
|
-
"aria-label":
|
|
1798
|
-
title:
|
|
1821
|
+
disabled: w(p) || w(h),
|
|
1822
|
+
"aria-label": w(c).t("kvcoder.config.mcp.remove", { name: e.name }),
|
|
1823
|
+
title: w(c).t("kvcoder.config.mcp.remove", { name: e.name }),
|
|
1799
1824
|
"data-test": "mcp-server-remove",
|
|
1800
1825
|
onClick: (t) => k.value = e.name
|
|
1801
|
-
}, [s(
|
|
1826
|
+
}, [s(w(se), {
|
|
1802
1827
|
size: 16,
|
|
1803
1828
|
"aria-hidden": "true"
|
|
1804
|
-
})], 8,
|
|
1805
|
-
a("div",
|
|
1829
|
+
})], 8, Ti)]))], 8, ui))), 128)),
|
|
1830
|
+
a("div", Ei, [a("button", {
|
|
1806
1831
|
type: "button",
|
|
1807
1832
|
class: "kvc-button kvc-primary",
|
|
1808
|
-
disabled:
|
|
1833
|
+
disabled: w(p) || w(h),
|
|
1809
1834
|
"data-test": "mcp-add",
|
|
1810
1835
|
onClick: u[3] ||= (e) => O.value = {}
|
|
1811
|
-
}, [s(
|
|
1836
|
+
}, [s(w(W), {
|
|
1812
1837
|
size: 16,
|
|
1813
1838
|
"aria-hidden": "true"
|
|
1814
|
-
}), o(w(
|
|
1815
|
-
])) : (
|
|
1816
|
-
taken:
|
|
1817
|
-
secrets:
|
|
1818
|
-
working:
|
|
1839
|
+
}), o(C(w(c).t("kvcoder.config.mcp.add")), 1)], 8, Di)])
|
|
1840
|
+
])) : (_(), n(ti, f({ key: 0 }, O.value.entry === void 0 ? {} : { entry: O.value.entry }, {
|
|
1841
|
+
taken: w(l).filter((e) => e.name !== O.value?.entry?.name).map((e) => e.name),
|
|
1842
|
+
secrets: w(d),
|
|
1843
|
+
working: w(h),
|
|
1819
1844
|
onSave: P,
|
|
1820
1845
|
onCancel: u[0] ||= (e) => O.value = void 0
|
|
1821
1846
|
}), null, 16, [
|
|
@@ -1824,10 +1849,10 @@ var $r = {
|
|
|
1824
1849
|
"working"
|
|
1825
1850
|
]));
|
|
1826
1851
|
}
|
|
1827
|
-
}),
|
|
1852
|
+
}), ki = ["data-test"], Ai = { class: "kvc-setting-text" }, ji = ["data-test"], Mi = { class: "kvc-muted" }, Ni = { class: "kvc-setting-control" }, Pi = ["data-test"], Fi = {
|
|
1828
1853
|
key: 1,
|
|
1829
1854
|
class: "kvc-connectors-state"
|
|
1830
|
-
},
|
|
1855
|
+
}, Ii = ["data-test"], Li = ["data-test"], Ri = ["disabled", "data-test"], zi = /* @__PURE__ */ c({
|
|
1831
1856
|
__name: "SettingFrame",
|
|
1832
1857
|
props: {
|
|
1833
1858
|
settingKey: {},
|
|
@@ -1836,193 +1861,171 @@ var $r = {
|
|
|
1836
1861
|
saved: { type: Boolean }
|
|
1837
1862
|
},
|
|
1838
1863
|
setup(t) {
|
|
1839
|
-
let n = t, o =
|
|
1840
|
-
return (t, c) => (
|
|
1864
|
+
let n = t, o = K(), s = (e) => o.t(`${e}.${o.scope.value}`, { name: o.workspace.value.name });
|
|
1865
|
+
return (t, c) => (_(), i("div", {
|
|
1841
1866
|
class: "kvc-setting",
|
|
1842
1867
|
"data-test": n.name
|
|
1843
|
-
}, [a("span",
|
|
1868
|
+
}, [a("span", Ai, [a("span", {
|
|
1844
1869
|
class: "kvc-setting-title",
|
|
1845
1870
|
"data-test": `${n.name}-title`
|
|
1846
|
-
}, w(
|
|
1871
|
+
}, C(w(o).t(`${n.settingKey}.title`)), 9, ji), a("span", Mi, C(w(o).t(`${n.settingKey}.description`)), 1)]), a("span", Ni, [x(t.$slots, "default", { disabled: n.setting.locked.value || n.setting.saving.value }), n.setting.locked.value ? (_(), i("span", {
|
|
1847
1872
|
key: 0,
|
|
1848
1873
|
class: "kvc-muted",
|
|
1849
1874
|
"data-test": `${n.name}-own-value`
|
|
1850
|
-
}, w(
|
|
1875
|
+
}, C(w(o).t("kvcoder.config.setting.ownValue", { name: w(o).workspace.value.name })), 9, Pi)) : n.setting.changed.value || n.saved ? (_(), i("span", Fi, [n.saved ? (_(), i("span", {
|
|
1851
1876
|
key: 0,
|
|
1852
1877
|
class: "kvc-muted",
|
|
1853
1878
|
role: "status",
|
|
1854
1879
|
"data-test": `${n.name}-saved`
|
|
1855
|
-
}, w(
|
|
1880
|
+
}, C(w(o).t("kvcoder.config.setting.saved")), 9, Ii)) : r("v-if", !0), n.setting.changed.value ? (_(), i(e, { key: 1 }, [a("span", {
|
|
1856
1881
|
class: "kvc-chip",
|
|
1857
1882
|
"data-test": `${n.name}-changed`
|
|
1858
|
-
},
|
|
1883
|
+
}, C(s("kvcoder.config.setting.changed")), 9, Li), a("button", {
|
|
1859
1884
|
type: "button",
|
|
1860
1885
|
class: "kvc-text-button",
|
|
1861
1886
|
disabled: n.setting.saving.value,
|
|
1862
1887
|
"data-test": `${n.name}-reset`,
|
|
1863
1888
|
onClick: c[0] ||= (...e) => n.setting.reset && n.setting.reset(...e)
|
|
1864
|
-
},
|
|
1889
|
+
}, C(s("kvcoder.config.setting.reset")), 9, Ri)], 64)) : r("v-if", !0)])) : r("v-if", !0)])], 8, ki));
|
|
1865
1890
|
}
|
|
1866
|
-
}),
|
|
1891
|
+
}), Bi = {
|
|
1867
1892
|
class: "kvc-dialog-rows",
|
|
1868
1893
|
"data-test": "shell-settings"
|
|
1869
|
-
},
|
|
1870
|
-
"value",
|
|
1871
|
-
"disabled",
|
|
1872
|
-
"aria-label"
|
|
1873
|
-
], Ri = ["value"], zi = [
|
|
1894
|
+
}, Vi = [
|
|
1874
1895
|
"disabled",
|
|
1875
1896
|
"placeholder",
|
|
1876
1897
|
"aria-label"
|
|
1877
|
-
],
|
|
1898
|
+
], Hi = /* @__PURE__ */ c({
|
|
1878
1899
|
__name: "ShellSettings",
|
|
1879
|
-
setup(
|
|
1880
|
-
let
|
|
1881
|
-
|
|
1882
|
-
async function
|
|
1883
|
-
e
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
if (e === d.value) return void (f.value = e);
|
|
1888
|
-
l.value = await c.set(e === "" ? null : e) ? "path" : void 0, f.value = d.value;
|
|
1900
|
+
setup(e) {
|
|
1901
|
+
let n = K(), r = J(n, "kvcoder.shell.path"), o = y(!1), c = E("field"), l = t(() => typeof r.value.value == "string" ? r.value.value : ""), u = y("");
|
|
1902
|
+
j(l, (e) => u.value = e, { immediate: !0 });
|
|
1903
|
+
async function d() {
|
|
1904
|
+
let e = u.value.trim();
|
|
1905
|
+
if (e === l.value) return void (u.value = e);
|
|
1906
|
+
let t = document.activeElement === c.value;
|
|
1907
|
+
o.value = await r.set(e === "" ? null : e), u.value = l.value, t && (await p(), c.value?.focus());
|
|
1889
1908
|
}
|
|
1890
|
-
return (
|
|
1891
|
-
"setting-key": "kvcoder.shell.approval",
|
|
1892
|
-
name: "shell-approval",
|
|
1893
|
-
setting: T(o),
|
|
1894
|
-
saved: l.value === "approval"
|
|
1895
|
-
}, {
|
|
1896
|
-
default: N(({ disabled: t }) => [a("select", {
|
|
1897
|
-
class: "kvc-field",
|
|
1898
|
-
value: T(o).value.value,
|
|
1899
|
-
disabled: t,
|
|
1900
|
-
"aria-label": T(r).t("kvcoder.shell.approval.title"),
|
|
1901
|
-
"data-test": "shell-approval-control",
|
|
1902
|
-
onChange: p
|
|
1903
|
-
}, [(v(), i(e, null, x(u, (e) => a("option", {
|
|
1904
|
-
key: e,
|
|
1905
|
-
value: e
|
|
1906
|
-
}, w(T(r).t(`kvcoder.shell.approval.options.${e}`)), 9, Ri)), 64))], 40, Li)]),
|
|
1907
|
-
_: 1
|
|
1908
|
-
}, 8, ["setting", "saved"]), s(Fi, {
|
|
1909
|
+
return (e, t) => (_(), i("div", Bi, [s(zi, {
|
|
1909
1910
|
"setting-key": "kvcoder.shell.path",
|
|
1910
1911
|
name: "shell-path",
|
|
1911
|
-
setting:
|
|
1912
|
-
saved:
|
|
1912
|
+
setting: w(r),
|
|
1913
|
+
saved: o.value
|
|
1913
1914
|
}, {
|
|
1914
|
-
default:
|
|
1915
|
-
|
|
1915
|
+
default: M(({ disabled: e }) => [N(a("input", {
|
|
1916
|
+
ref_key: "field",
|
|
1917
|
+
ref: c,
|
|
1918
|
+
"onUpdate:modelValue": t[0] ||= (e) => u.value = e,
|
|
1916
1919
|
type: "text",
|
|
1917
1920
|
dir: "ltr",
|
|
1918
1921
|
class: "kvc-field kvc-mono",
|
|
1919
1922
|
disabled: e,
|
|
1920
|
-
placeholder:
|
|
1921
|
-
"aria-label":
|
|
1923
|
+
placeholder: w(n).t("kvcoder.config.shell.pathFound"),
|
|
1924
|
+
"aria-label": w(n).t("kvcoder.shell.path.title"),
|
|
1922
1925
|
spellcheck: "false",
|
|
1923
1926
|
autocomplete: "off",
|
|
1924
1927
|
"data-test": "shell-path-control",
|
|
1925
|
-
onKeydown:
|
|
1926
|
-
onBlur:
|
|
1927
|
-
}, null, 40,
|
|
1928
|
+
onKeydown: P(d, ["enter"]),
|
|
1929
|
+
onBlur: d
|
|
1930
|
+
}, null, 40, Vi), [[A, u.value]])]),
|
|
1928
1931
|
_: 1
|
|
1929
1932
|
}, 8, ["setting", "saved"])]));
|
|
1930
1933
|
}
|
|
1931
|
-
}),
|
|
1934
|
+
}), Ui = {
|
|
1932
1935
|
class: "kvc-connectors",
|
|
1933
1936
|
"data-test": "connectors"
|
|
1934
|
-
},
|
|
1937
|
+
}, Wi = {
|
|
1935
1938
|
key: 0,
|
|
1936
1939
|
class: "kvc-muted",
|
|
1937
1940
|
"data-test": "connectors-own-value"
|
|
1938
|
-
},
|
|
1941
|
+
}, Gi = {
|
|
1939
1942
|
key: 1,
|
|
1940
1943
|
class: "kvc-connectors-state"
|
|
1941
|
-
},
|
|
1944
|
+
}, Ki = {
|
|
1942
1945
|
class: "kvc-chip",
|
|
1943
1946
|
"data-test": "connectors-changed"
|
|
1944
|
-
},
|
|
1947
|
+
}, qi = ["disabled"], Ji = ["data-test"], Yi = { class: "kvc-connector-text" }, Xi = {
|
|
1945
1948
|
class: "kvc-mono kvc-connector-name",
|
|
1946
1949
|
"data-test": "connector-name"
|
|
1947
|
-
},
|
|
1950
|
+
}, Zi = {
|
|
1948
1951
|
class: "kvc-muted",
|
|
1949
1952
|
dir: "auto",
|
|
1950
1953
|
"data-test": "connector-description"
|
|
1951
|
-
},
|
|
1954
|
+
}, Qi = { class: "kvc-connector-actions" }, $i = [
|
|
1952
1955
|
"aria-label",
|
|
1953
1956
|
"title",
|
|
1954
1957
|
"onClick"
|
|
1955
|
-
],
|
|
1958
|
+
], ea = [
|
|
1956
1959
|
"aria-checked",
|
|
1957
1960
|
"aria-label",
|
|
1958
1961
|
"disabled",
|
|
1959
1962
|
"onClick"
|
|
1960
|
-
],
|
|
1963
|
+
], ta = /* @__PURE__ */ c({
|
|
1961
1964
|
__name: "ConnectorsList",
|
|
1962
1965
|
setup(t) {
|
|
1963
|
-
let o =
|
|
1964
|
-
function
|
|
1966
|
+
let o = K(), { items: c, locked: l, changed: u, saving: d, toggle: f, reset: m } = at(o), h = y(), g = /* @__PURE__ */ new Map();
|
|
1967
|
+
function v(e, t) {
|
|
1965
1968
|
t instanceof HTMLElement ? g.set(e, t) : g.delete(e);
|
|
1966
1969
|
}
|
|
1967
|
-
async function
|
|
1970
|
+
async function x() {
|
|
1968
1971
|
let e = h.value;
|
|
1969
|
-
h.value = void 0, await
|
|
1972
|
+
h.value = void 0, await p(), e !== void 0 && g.get(e)?.focus();
|
|
1970
1973
|
}
|
|
1971
1974
|
let S = (e) => o.t(`${e}.${o.scope.value}`, { name: o.workspace.value.name });
|
|
1972
|
-
return (t,
|
|
1973
|
-
|
|
1975
|
+
return (t, p) => (_(), i("div", Ui, [
|
|
1976
|
+
w(l) ? (_(), i("p", Wi, C(w(o).t("kvcoder.config.connectors.ownValue", { name: w(o).workspace.value.name })), 1)) : w(u) ? (_(), i("div", Gi, [a("span", Ki, C(S("kvcoder.config.connectors.changed")), 1), a("button", {
|
|
1974
1977
|
type: "button",
|
|
1975
1978
|
class: "kvc-text-button",
|
|
1976
|
-
disabled:
|
|
1979
|
+
disabled: w(d),
|
|
1977
1980
|
"data-test": "connectors-reset",
|
|
1978
|
-
onClick:
|
|
1979
|
-
},
|
|
1980
|
-
(
|
|
1981
|
+
onClick: p[0] ||= (...e) => w(m) && w(m)(...e)
|
|
1982
|
+
}, C(S("kvcoder.config.connectors.reset")), 9, qi)])) : r("v-if", !0),
|
|
1983
|
+
(_(!0), i(e, null, b(w(c), (e) => (_(), i("div", {
|
|
1981
1984
|
key: e.name,
|
|
1982
1985
|
class: "kvc-connector",
|
|
1983
1986
|
"data-test": `connector-${e.name}`
|
|
1984
|
-
}, [a("span",
|
|
1987
|
+
}, [a("span", Yi, [a("span", Xi, C(e.name), 1), a("span", Zi, C(e.description), 1)]), a("span", Qi, [e.configurable ? (_(), i("button", {
|
|
1985
1988
|
key: 0,
|
|
1986
1989
|
ref_for: !0,
|
|
1987
|
-
ref: (t) =>
|
|
1990
|
+
ref: (t) => v(e.name, t),
|
|
1988
1991
|
type: "button",
|
|
1989
1992
|
class: "kvc-button kvc-ghost kvc-icon-button",
|
|
1990
1993
|
"aria-haspopup": "dialog",
|
|
1991
|
-
"aria-label":
|
|
1992
|
-
title:
|
|
1994
|
+
"aria-label": w(o).t("kvcoder.config.connectors.configure", { name: e.name }),
|
|
1995
|
+
title: w(o).t("kvcoder.config.connectors.configure", { name: e.name }),
|
|
1993
1996
|
"data-test": "connector-configure",
|
|
1994
1997
|
onClick: (t) => h.value = e.name
|
|
1995
|
-
}, [s(
|
|
1998
|
+
}, [s(w(G), {
|
|
1996
1999
|
size: 18,
|
|
1997
2000
|
"aria-hidden": "true"
|
|
1998
|
-
})], 8,
|
|
2001
|
+
})], 8, $i)) : r("v-if", !0), a("button", {
|
|
1999
2002
|
type: "button",
|
|
2000
2003
|
role: "switch",
|
|
2001
2004
|
class: "kvc-switch",
|
|
2002
2005
|
"aria-checked": e.on,
|
|
2003
|
-
"aria-label":
|
|
2004
|
-
disabled:
|
|
2006
|
+
"aria-label": w(o).t("kvcoder.config.connectors.use", { name: e.name }),
|
|
2007
|
+
disabled: w(l) || w(d),
|
|
2005
2008
|
"data-test": "connector-switch",
|
|
2006
|
-
onClick: (t) =>
|
|
2007
|
-
}, [...
|
|
2009
|
+
onClick: (t) => w(f)(e.name)
|
|
2010
|
+
}, [...p[1] ||= [a("span", {
|
|
2008
2011
|
class: "kvc-switch-knob",
|
|
2009
2012
|
"aria-hidden": "true"
|
|
2010
|
-
}, null, -1)]], 8,
|
|
2011
|
-
h.value === void 0 ? r("v-if", !0) : (
|
|
2013
|
+
}, null, -1)]], 8, ea)])], 8, Ji))), 128)),
|
|
2014
|
+
h.value === void 0 ? r("v-if", !0) : (_(), n(ye, {
|
|
2012
2015
|
key: 2,
|
|
2013
2016
|
name: h.value,
|
|
2014
|
-
onClose:
|
|
2017
|
+
onClose: x
|
|
2015
2018
|
}, {
|
|
2016
|
-
default:
|
|
2019
|
+
default: M(() => [h.value === "shell" ? (_(), n(Hi, { key: 0 })) : h.value === "delegate" ? (_(), n($n, { key: 1 })) : h.value === "mcp" ? (_(), n(Oi, { key: 2 })) : r("v-if", !0)]),
|
|
2017
2020
|
_: 1
|
|
2018
2021
|
}, 8, ["name"]))
|
|
2019
2022
|
]));
|
|
2020
2023
|
}
|
|
2021
|
-
}),
|
|
2024
|
+
}), na = /* @__PURE__ */ c({
|
|
2022
2025
|
__name: "connectors",
|
|
2023
2026
|
setup(e) {
|
|
2024
|
-
return (e, t) => (
|
|
2027
|
+
return (e, t) => (_(), n(ta));
|
|
2025
2028
|
}
|
|
2026
2029
|
});
|
|
2027
2030
|
//#endregion
|
|
2028
|
-
export {
|
|
2031
|
+
export { na as default };
|