@kvman/kvcoder 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +9 -0
- package/dist/api.d.ts +386 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +2 -0
- package/dist/api.js.map +1 -0
- package/dist/artifacts/artifact-format.d.ts +9 -0
- package/dist/artifacts/artifact-format.d.ts.map +1 -0
- package/dist/artifacts/artifact-format.js +32 -0
- package/dist/artifacts/artifact-format.js.map +1 -0
- package/dist/artifacts/artifact-records.d.ts +12 -0
- package/dist/artifacts/artifact-records.d.ts.map +1 -0
- package/dist/artifacts/artifact-records.js +17 -0
- package/dist/artifacts/artifact-records.js.map +1 -0
- package/dist/artifacts/register-artifacts.d.ts +3 -0
- package/dist/artifacts/register-artifacts.d.ts.map +1 -0
- package/dist/artifacts/register-artifacts.js +37 -0
- package/dist/artifacts/register-artifacts.js.map +1 -0
- package/dist/calls/binary-checks.d.ts +8 -0
- package/dist/calls/binary-checks.d.ts.map +1 -0
- package/dist/calls/binary-checks.js +12 -0
- package/dist/calls/binary-checks.js.map +1 -0
- package/dist/calls/connector-help.d.ts +3 -0
- package/dist/calls/connector-help.d.ts.map +1 -0
- package/dist/calls/connector-help.js +73 -0
- package/dist/calls/connector-help.js.map +1 -0
- package/dist/calls/help-text.d.ts +19 -0
- package/dist/calls/help-text.d.ts.map +1 -0
- package/dist/calls/help-text.js +22 -0
- package/dist/calls/help-text.js.map +1 -0
- package/dist/calls/line-run.d.ts +33 -0
- package/dist/calls/line-run.d.ts.map +1 -0
- package/dist/calls/line-run.js +56 -0
- package/dist/calls/line-run.js.map +1 -0
- package/dist/calls/run-shell.d.ts +12 -0
- package/dist/calls/run-shell.d.ts.map +1 -0
- package/dist/calls/run-shell.js +88 -0
- package/dist/calls/run-shell.js.map +1 -0
- package/dist/calls/run-tool.d.ts +49 -0
- package/dist/calls/run-tool.d.ts.map +1 -0
- package/dist/calls/run-tool.js +66 -0
- package/dist/calls/run-tool.js.map +1 -0
- package/dist/calls/shell-command.d.ts +25 -0
- package/dist/calls/shell-command.d.ts.map +1 -0
- package/dist/calls/shell-command.js +31 -0
- package/dist/calls/shell-command.js.map +1 -0
- package/dist/calls/shell-program.d.ts +5 -0
- package/dist/calls/shell-program.d.ts.map +1 -0
- package/dist/calls/shell-program.js +8 -0
- package/dist/calls/shell-program.js.map +1 -0
- package/dist/connector-call.d.ts +66 -0
- package/dist/connector-call.d.ts.map +1 -0
- package/dist/connector-call.js +133 -0
- package/dist/connector-call.js.map +1 -0
- package/dist/connectors/artifact.d.ts +51 -0
- package/dist/connectors/artifact.d.ts.map +1 -0
- package/dist/connectors/artifact.js +101 -0
- package/dist/connectors/artifact.js.map +1 -0
- package/dist/connectors/ask.d.ts +58 -0
- package/dist/connectors/ask.d.ts.map +1 -0
- package/dist/connectors/ask.js +85 -0
- package/dist/connectors/ask.js.map +1 -0
- package/dist/connectors/background.d.ts +29 -0
- package/dist/connectors/background.d.ts.map +1 -0
- package/dist/connectors/background.js +56 -0
- package/dist/connectors/background.js.map +1 -0
- package/dist/connectors/binary.d.ts +5 -0
- package/dist/connectors/binary.d.ts.map +1 -0
- package/dist/connectors/binary.js +27 -0
- package/dist/connectors/binary.js.map +1 -0
- package/dist/connectors/builtin-connectors.d.ts +217 -0
- package/dist/connectors/builtin-connectors.d.ts.map +1 -0
- package/dist/connectors/builtin-connectors.js +49 -0
- package/dist/connectors/builtin-connectors.js.map +1 -0
- package/dist/connectors/connector-command.d.ts +26 -0
- package/dist/connectors/connector-command.d.ts.map +1 -0
- package/dist/connectors/connector-command.js +17 -0
- package/dist/connectors/connector-command.js.map +1 -0
- package/dist/connectors/delegate.d.ts +32 -0
- package/dist/connectors/delegate.d.ts.map +1 -0
- package/dist/connectors/delegate.js +82 -0
- package/dist/connectors/delegate.js.map +1 -0
- package/dist/connectors/fs.d.ts +60 -0
- package/dist/connectors/fs.d.ts.map +1 -0
- package/dist/connectors/fs.js +132 -0
- package/dist/connectors/fs.js.map +1 -0
- package/dist/connectors/mcp.d.ts +37 -0
- package/dist/connectors/mcp.d.ts.map +1 -0
- package/dist/connectors/mcp.js +69 -0
- package/dist/connectors/mcp.js.map +1 -0
- package/dist/connectors/payload-fields.d.ts +9 -0
- package/dist/connectors/payload-fields.d.ts.map +1 -0
- package/dist/connectors/payload-fields.js +13 -0
- package/dist/connectors/payload-fields.js.map +1 -0
- package/dist/connectors/shell.d.ts +19 -0
- package/dist/connectors/shell.d.ts.map +1 -0
- package/dist/connectors/shell.js +22 -0
- package/dist/connectors/shell.js.map +1 -0
- package/dist/delay.d.ts +3 -0
- package/dist/delay.d.ts.map +1 -0
- package/dist/delay.js +11 -0
- package/dist/delay.js.map +1 -0
- package/dist/delegate/approved-run.d.ts +13 -0
- package/dist/delegate/approved-run.d.ts.map +1 -0
- package/dist/delegate/approved-run.js +54 -0
- package/dist/delegate/approved-run.js.map +1 -0
- package/dist/delegate/programs.d.ts +32 -0
- package/dist/delegate/programs.d.ts.map +1 -0
- package/dist/delegate/programs.js +67 -0
- package/dist/delegate/programs.js.map +1 -0
- package/dist/delegate/register-worker-run.d.ts +9 -0
- package/dist/delegate/register-worker-run.d.ts.map +1 -0
- package/dist/delegate/register-worker-run.js +70 -0
- package/dist/delegate/register-worker-run.js.map +1 -0
- package/dist/delegate/run-program.d.ts +9 -0
- package/dist/delegate/run-program.d.ts.map +1 -0
- package/dist/delegate/run-program.js +59 -0
- package/dist/delegate/run-program.js.map +1 -0
- package/dist/delegate/runs.d.ts +27 -0
- package/dist/delegate/runs.d.ts.map +1 -0
- package/dist/delegate/runs.js +68 -0
- package/dist/delegate/runs.js.map +1 -0
- package/dist/delegate/workers.d.ts +266 -0
- package/dist/delegate/workers.d.ts.map +1 -0
- package/dist/delegate/workers.js +80 -0
- package/dist/delegate/workers.js.map +1 -0
- package/dist/docs.d.ts +14 -0
- package/dist/docs.d.ts.map +1 -0
- package/dist/docs.js +59 -0
- package/dist/docs.js.map +1 -0
- package/dist/files/edit-text.d.ts +13 -0
- package/dist/files/edit-text.d.ts.map +1 -0
- package/dist/files/edit-text.js +46 -0
- package/dist/files/edit-text.js.map +1 -0
- package/dist/files/file-queue.d.ts +3 -0
- package/dist/files/file-queue.d.ts.map +1 -0
- package/dist/files/file-queue.js +17 -0
- package/dist/files/file-queue.js.map +1 -0
- package/dist/files/list-entries.d.ts +14 -0
- package/dist/files/list-entries.d.ts.map +1 -0
- package/dist/files/list-entries.js +40 -0
- package/dist/files/list-entries.js.map +1 -0
- package/dist/files/read-file.d.ts +17 -0
- package/dist/files/read-file.d.ts.map +1 -0
- package/dist/files/read-file.js +53 -0
- package/dist/files/read-file.js.map +1 -0
- package/dist/files/search-text.d.ts +14 -0
- package/dist/files/search-text.d.ts.map +1 -0
- package/dist/files/search-text.js +62 -0
- package/dist/files/search-text.js.map +1 -0
- package/dist/files/workspace-path.d.ts +5 -0
- package/dist/files/workspace-path.d.ts.map +1 -0
- package/dist/files/workspace-path.js +37 -0
- package/dist/files/workspace-path.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +68 -0
- package/dist/index.js.map +1 -0
- package/dist/jobs/job-rows.d.ts +24 -0
- package/dist/jobs/job-rows.d.ts.map +1 -0
- package/dist/jobs/job-rows.js +74 -0
- package/dist/jobs/job-rows.js.map +1 -0
- package/dist/jobs/process-handlers.d.ts +8 -0
- package/dist/jobs/process-handlers.d.ts.map +1 -0
- package/dist/jobs/process-handlers.js +43 -0
- package/dist/jobs/process-handlers.js.map +1 -0
- package/dist/jobs/process-records.d.ts +15 -0
- package/dist/jobs/process-records.d.ts.map +1 -0
- package/dist/jobs/process-records.js +30 -0
- package/dist/jobs/process-records.js.map +1 -0
- package/dist/jobs/process-report.d.ts +8 -0
- package/dist/jobs/process-report.d.ts.map +1 -0
- package/dist/jobs/process-report.js +44 -0
- package/dist/jobs/process-report.js.map +1 -0
- package/dist/jobs/process-run.d.ts +26 -0
- package/dist/jobs/process-run.d.ts.map +1 -0
- package/dist/jobs/process-run.js +70 -0
- package/dist/jobs/process-run.js.map +1 -0
- package/dist/jobs/process-text.d.ts +5 -0
- package/dist/jobs/process-text.d.ts.map +1 -0
- package/dist/jobs/process-text.js +11 -0
- package/dist/jobs/process-text.js.map +1 -0
- package/dist/jobs/register-jobs.d.ts +3 -0
- package/dist/jobs/register-jobs.d.ts.map +1 -0
- package/dist/jobs/register-jobs.js +61 -0
- package/dist/jobs/register-jobs.js.map +1 -0
- package/dist/mcp/command-transport.d.ts +17 -0
- package/dist/mcp/command-transport.d.ts.map +1 -0
- package/dist/mcp/command-transport.js +60 -0
- package/dist/mcp/command-transport.js.map +1 -0
- package/dist/mcp/connect.d.ts +12 -0
- package/dist/mcp/connect.d.ts.map +1 -0
- package/dist/mcp/connect.js +54 -0
- package/dist/mcp/connect.js.map +1 -0
- package/dist/mcp/oauth-provider.d.ts +25 -0
- package/dist/mcp/oauth-provider.d.ts.map +1 -0
- package/dist/mcp/oauth-provider.js +59 -0
- package/dist/mcp/oauth-provider.js.map +1 -0
- package/dist/mcp/register-mcp.d.ts +3 -0
- package/dist/mcp/register-mcp.d.ts.map +1 -0
- package/dist/mcp/register-mcp.js +61 -0
- package/dist/mcp/register-mcp.js.map +1 -0
- package/dist/mcp/secrets.d.ts +7 -0
- package/dist/mcp/secrets.d.ts.map +1 -0
- package/dist/mcp/secrets.js +20 -0
- package/dist/mcp/secrets.js.map +1 -0
- package/dist/mcp/servers.d.ts +33 -0
- package/dist/mcp/servers.d.ts.map +1 -0
- package/dist/mcp/servers.js +31 -0
- package/dist/mcp/servers.js.map +1 -0
- package/dist/mcp/sign-in-record.d.ts +10 -0
- package/dist/mcp/sign-in-record.d.ts.map +1 -0
- package/dist/mcp/sign-in-record.js +4 -0
- package/dist/mcp/sign-in-record.js.map +1 -0
- package/dist/mcp/sign-in.d.ts +12 -0
- package/dist/mcp/sign-in.d.ts.map +1 -0
- package/dist/mcp/sign-in.js +75 -0
- package/dist/mcp/sign-in.js.map +1 -0
- package/dist/mcp/tools.d.ts +19 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +31 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/messages/attachments.d.ts +8 -0
- package/dist/messages/attachments.d.ts.map +1 -0
- package/dist/messages/attachments.js +48 -0
- package/dist/messages/attachments.js.map +1 -0
- package/dist/messages/receive-message.d.ts +15 -0
- package/dist/messages/receive-message.d.ts.map +1 -0
- package/dist/messages/receive-message.js +60 -0
- package/dist/messages/receive-message.js.map +1 -0
- package/dist/messages/register-messages.d.ts +3 -0
- package/dist/messages/register-messages.d.ts.map +1 -0
- package/dist/messages/register-messages.js +63 -0
- package/dist/messages/register-messages.js.map +1 -0
- package/dist/problems.d.ts +8 -0
- package/dist/problems.d.ts.map +1 -0
- package/dist/problems.js +14 -0
- package/dist/problems.js.map +1 -0
- package/dist/prompt/build-prompt.d.ts +29 -0
- package/dist/prompt/build-prompt.d.ts.map +1 -0
- package/dist/prompt/build-prompt.js +60 -0
- package/dist/prompt/build-prompt.js.map +1 -0
- package/dist/prompt/register-prompt.d.ts +3 -0
- package/dist/prompt/register-prompt.d.ts.map +1 -0
- package/dist/prompt/register-prompt.js +29 -0
- package/dist/prompt/register-prompt.js.map +1 -0
- package/dist/prompt/session-prompt.d.ts +24 -0
- package/dist/prompt/session-prompt.d.ts.map +1 -0
- package/dist/prompt/session-prompt.js +50 -0
- package/dist/prompt/session-prompt.js.map +1 -0
- package/dist/prompt/working-method.d.ts +7 -0
- package/dist/prompt/working-method.d.ts.map +1 -0
- package/dist/prompt/working-method.js +51 -0
- package/dist/prompt/working-method.js.map +1 -0
- package/dist/register-settings.d.ts +142 -0
- package/dist/register-settings.d.ts.map +1 -0
- package/dist/register-settings.js +51 -0
- package/dist/register-settings.js.map +1 -0
- package/dist/registry/loaded.d.ts +32 -0
- package/dist/registry/loaded.d.ts.map +1 -0
- package/dist/registry/loaded.js +41 -0
- package/dist/registry/loaded.js.map +1 -0
- package/dist/registry/register-connectors.d.ts +32 -0
- package/dist/registry/register-connectors.d.ts.map +1 -0
- package/dist/registry/register-connectors.js +126 -0
- package/dist/registry/register-connectors.js.map +1 -0
- package/dist/registry/register-sections.d.ts +18 -0
- package/dist/registry/register-sections.d.ts.map +1 -0
- package/dist/registry/register-sections.js +99 -0
- package/dist/registry/register-sections.js.map +1 -0
- package/dist/registry/session-points.d.ts +11 -0
- package/dist/registry/session-points.d.ts.map +1 -0
- package/dist/registry/session-points.js +89 -0
- package/dist/registry/session-points.js.map +1 -0
- package/dist/result-text.d.ts +11 -0
- package/dist/result-text.d.ts.map +1 -0
- package/dist/result-text.js +21 -0
- package/dist/result-text.js.map +1 -0
- package/dist/schemas/records.d.ts +357 -0
- package/dist/schemas/records.d.ts.map +1 -0
- package/dist/schemas/records.js +159 -0
- package/dist/schemas/records.js.map +1 -0
- package/dist/schemas/registry.d.ts +160 -0
- package/dist/schemas/registry.d.ts.map +1 -0
- package/dist/schemas/registry.js +37 -0
- package/dist/schemas/registry.js.map +1 -0
- package/dist/sessions/new-session.d.ts +6 -0
- package/dist/sessions/new-session.d.ts.map +1 -0
- package/dist/sessions/new-session.js +52 -0
- package/dist/sessions/new-session.js.map +1 -0
- package/dist/sessions/register-fork-export.d.ts +5 -0
- package/dist/sessions/register-fork-export.d.ts.map +1 -0
- package/dist/sessions/register-fork-export.js +62 -0
- package/dist/sessions/register-fork-export.js.map +1 -0
- package/dist/sessions/register-lifecycle.d.ts +3 -0
- package/dist/sessions/register-lifecycle.d.ts.map +1 -0
- package/dist/sessions/register-lifecycle.js +59 -0
- package/dist/sessions/register-lifecycle.js.map +1 -0
- package/dist/sessions/register-sessions.d.ts +3 -0
- package/dist/sessions/register-sessions.d.ts.map +1 -0
- package/dist/sessions/register-sessions.js +93 -0
- package/dist/sessions/register-sessions.js.map +1 -0
- package/dist/sessions/session-lookup.d.ts +10 -0
- package/dist/sessions/session-lookup.d.ts.map +1 -0
- package/dist/sessions/session-lookup.js +25 -0
- package/dist/sessions/session-lookup.js.map +1 -0
- package/dist/sessions/session-view.d.ts +118 -0
- package/dist/sessions/session-view.d.ts.map +1 -0
- package/dist/sessions/session-view.js +105 -0
- package/dist/sessions/session-view.js.map +1 -0
- package/dist/store/collections.d.ts +471 -0
- package/dist/store/collections.d.ts.map +1 -0
- package/dist/store/collections.js +46 -0
- package/dist/store/collections.js.map +1 -0
- package/dist/turns/background.d.ts +6 -0
- package/dist/turns/background.d.ts.map +1 -0
- package/dist/turns/background.js +27 -0
- package/dist/turns/background.js.map +1 -0
- package/dist/turns/cancel-turn.d.ts +3 -0
- package/dist/turns/cancel-turn.d.ts.map +1 -0
- package/dist/turns/cancel-turn.js +31 -0
- package/dist/turns/cancel-turn.js.map +1 -0
- package/dist/turns/compaction.d.ts +12 -0
- package/dist/turns/compaction.d.ts.map +1 -0
- package/dist/turns/compaction.js +55 -0
- package/dist/turns/compaction.js.map +1 -0
- package/dist/turns/end-turn.d.ts +15 -0
- package/dist/turns/end-turn.d.ts.map +1 -0
- package/dist/turns/end-turn.js +67 -0
- package/dist/turns/end-turn.js.map +1 -0
- package/dist/turns/history.d.ts +28 -0
- package/dist/turns/history.d.ts.map +1 -0
- package/dist/turns/history.js +47 -0
- package/dist/turns/history.js.map +1 -0
- package/dist/turns/lost-reply.d.ts +31 -0
- package/dist/turns/lost-reply.d.ts.map +1 -0
- package/dist/turns/lost-reply.js +43 -0
- package/dist/turns/lost-reply.js.map +1 -0
- package/dist/turns/message-blocks.d.ts +9 -0
- package/dist/turns/message-blocks.d.ts.map +1 -0
- package/dist/turns/message-blocks.js +25 -0
- package/dist/turns/message-blocks.js.map +1 -0
- package/dist/turns/model-context.d.ts +81 -0
- package/dist/turns/model-context.d.ts.map +1 -0
- package/dist/turns/model-context.js +46 -0
- package/dist/turns/model-context.js.map +1 -0
- package/dist/turns/model-info.d.ts +7 -0
- package/dist/turns/model-info.d.ts.map +1 -0
- package/dist/turns/model-info.js +10 -0
- package/dist/turns/model-info.js.map +1 -0
- package/dist/turns/model-retry.d.ts +3 -0
- package/dist/turns/model-retry.d.ts.map +1 -0
- package/dist/turns/model-retry.js +23 -0
- package/dist/turns/model-retry.js.map +1 -0
- package/dist/turns/register-interruptions.d.ts +3 -0
- package/dist/turns/register-interruptions.d.ts.map +1 -0
- package/dist/turns/register-interruptions.js +31 -0
- package/dist/turns/register-interruptions.js.map +1 -0
- package/dist/turns/register-turns.d.ts +3 -0
- package/dist/turns/register-turns.d.ts.map +1 -0
- package/dist/turns/register-turns.js +66 -0
- package/dist/turns/register-turns.js.map +1 -0
- package/dist/turns/resolve.d.ts +7 -0
- package/dist/turns/resolve.d.ts.map +1 -0
- package/dist/turns/resolve.js +29 -0
- package/dist/turns/resolve.js.map +1 -0
- package/dist/turns/run-calls.d.ts +34 -0
- package/dist/turns/run-calls.d.ts.map +1 -0
- package/dist/turns/run-calls.js +99 -0
- package/dist/turns/run-calls.js.map +1 -0
- package/dist/turns/run-command.d.ts +26 -0
- package/dist/turns/run-command.d.ts.map +1 -0
- package/dist/turns/run-command.js +118 -0
- package/dist/turns/run-command.js.map +1 -0
- package/dist/turns/settle-calls.d.ts +17 -0
- package/dist/turns/settle-calls.d.ts.map +1 -0
- package/dist/turns/settle-calls.js +98 -0
- package/dist/turns/settle-calls.js.map +1 -0
- package/dist/turns/start-turn.d.ts +87 -0
- package/dist/turns/start-turn.d.ts.map +1 -0
- package/dist/turns/start-turn.js +40 -0
- package/dist/turns/start-turn.js.map +1 -0
- package/dist/turns/step.d.ts +8 -0
- package/dist/turns/step.d.ts.map +1 -0
- package/dist/turns/step.js +168 -0
- package/dist/turns/step.js.map +1 -0
- package/dist/ui/register-ui.d.ts +3 -0
- package/dist/ui/register-ui.d.ts.map +1 -0
- package/dist/ui/register-ui.js +75 -0
- package/dist/ui/register-ui.js.map +1 -0
- package/dist/web/components/call.css +2 -0
- package/dist/web/components/call.js +386 -0
- package/dist/web/components/connectors.css +2 -0
- package/dist/web/components/connectors.js +2403 -0
- package/dist/web/components/conversation.css +2 -0
- package/dist/web/components/conversation.js +4319 -0
- package/dist/web/components/mcp-sign-in.css +2 -0
- package/dist/web/components/mcp-sign-in.js +265 -0
- package/dist/web/components/model.css +2 -0
- package/dist/web/components/model.js +545 -0
- package/dist/web/components/question.css +2 -0
- package/dist/web/components/question.js +321 -0
- package/dist/web/components/sessions.css +2 -0
- package/dist/web/components/sessions.js +264 -0
- package/docs/connectors.md +86 -0
- package/docs/sections.md +27 -0
- package/locales/ar.json +418 -0
- package/locales/en.json +418 -0
- package/package.json +70 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Connectors
|
|
2
|
+
|
|
3
|
+
A **connector** is a named set of commands the agent runs with its one tool, `run`:
|
|
4
|
+
|
|
5
|
+
```json
|
|
6
|
+
{ "description": "Adding milk to the notes", "connector": "notes", "command": "add", "payload": { "text": "Buy milk" } }
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
- `description` is one sentence for the person, shown on the call's card.
|
|
10
|
+
- `connector` and `command` name what runs; `payload` is the command's input, and may be left out when it takes none.
|
|
11
|
+
- Every connector has the command `help`: with no payload it describes the connector and its commands, and with `{ "command": "add" }` it gives that command's payload and result as JSON Schema, with its examples.
|
|
12
|
+
|
|
13
|
+
A connector is the only way the agent reaches anything outside the model. An extension registers its connectors with kvcoder, which keeps them in its own store for one run: see **Lifetime** below.
|
|
14
|
+
|
|
15
|
+
Register from the registering extension's `kernel.started` handler, every start:
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
ctx.registerHandler('kernel.started', {
|
|
19
|
+
description: 'Registers the notes connector with kvcoder.',
|
|
20
|
+
handle: () => ctx.exec('kvcoder.connector.register', {
|
|
21
|
+
name: 'notes',
|
|
22
|
+
description: 'Add and list notes.',
|
|
23
|
+
commands: [
|
|
24
|
+
{ name: 'add', command: 'notes.note.add', examples: [{ description: 'Add a note', input: { text: 'Buy milk' } }] },
|
|
25
|
+
{ name: 'list', command: 'notes.note.list' },
|
|
26
|
+
{ name: 'clear', command: 'notes.note.clear', asks: true },
|
|
27
|
+
],
|
|
28
|
+
}),
|
|
29
|
+
});
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
- The registering extension declares `@kvman/kvcoder` in `kvman.dependencies`, so its `kernel.started` handler runs after kvcoder's clear.
|
|
33
|
+
- `kvcoder.connector.register` takes exactly one of `commands` or `binary`, plus `name` and `description`.
|
|
34
|
+
- To register several connectors in one call, pass `{ connectors: [ … ] }`, each entry shaped as one connector. All are checked first and stored together: the call registers all of them or none, and a name given twice fails `VALIDATION_FAILED`.
|
|
35
|
+
- `name`: the `connector` the agent names. Names, and each command's `name`, are lowercase kebab-case single words: `model-list`, not `model list`. A command can't be named `help`.
|
|
36
|
+
- `description`: what the agent sees in the prompt's connector index. Say what the connector is for and when to use it. kvcoder adds the command names after it (`Commands: add, list, help.`), so the index is never out of date. The prompt lists the payloads of kvcoder's own connectors (`shell`, `fs`, `artifact`, `background`, `ask`, `delegate`); the agent learns a registered connector's payloads from `help`, so clear field names and descriptions matter.
|
|
37
|
+
- `commands`: each command's `name`, the public `command` it runs, and optional `examples` (`{ description, input }`). `help` shows the registered descriptions, JSON Schemas, and examples, so give every input field a `.describe()`.
|
|
38
|
+
- `asks: true` on a command makes the person approve every call of it first (see **A command that asks** below). The field takes only `true`; leave it out for a command that runs at once.
|
|
39
|
+
- Each `command` must be a public command or query of the registering extension, or registration fails `VALIDATION_FAILED`. The command runs through `ctx.exec` with the payload as its input, so validation, cancel, and timeouts are the kernel's, and it runs to its end inside the agent's step.
|
|
40
|
+
- The result the agent reads is the output as indented JSON, or `error <code>: <message>`. A payload that doesn't fit returns each problem and then the payload's signature, such as `{ text, done? }`, so the agent can correct it in one try; a payload that isn't a plain object returns its JSON Schema on one line instead.
|
|
41
|
+
- `binary`: a program on the system, with `{ check, install?, help? }`. `check` is a line whose exit code 0 means the program is usable; the connector is listed, and can be called, only while its check passes.
|
|
42
|
+
|
|
43
|
+
## A command that asks
|
|
44
|
+
|
|
45
|
+
Mark a command with `asks: true` when it changes something the person didn't make in this chat: their settings, their data, what is installed.
|
|
46
|
+
|
|
47
|
+
- Every call of it becomes an approval card in the chat, showing the call's `description`, the connector and command, and the payload. The turn waits for the answer.
|
|
48
|
+
- It asks whatever `kvcoder.shell.approval` says. That setting covers kvcoder's own `shell`, `fs`, and `mcp` calls, which carry `risky`; a registered command has no `risky`, so the flag on its entry decides.
|
|
49
|
+
- **Allow** runs the command at the start of the next step, and its result goes to the agent as usual. **Deny** returns `denied by the user`, and the command never runs.
|
|
50
|
+
- The payload isn't checked before the person is asked; the kernel validates it when the command runs.
|
|
51
|
+
- `help { "command": "clear" }` adds the line "The person is asked before this runs.", so the agent knows. `help` itself never asks.
|
|
52
|
+
- A subagent's call asks the same way; its card shows in the chat that started it.
|
|
53
|
+
- `asks` belongs to a command entry: on a binary connector it fails `VALIDATION_FAILED`, and so does `asks: false`.
|
|
54
|
+
- `kvcoder.connector.list` answers `asks` (`true` or `false`) for each command.
|
|
55
|
+
- `runConnector` from `@kvman/kvcoder/testing` runs the command at once: a test has no person to ask.
|
|
56
|
+
|
|
57
|
+
A binary connector names a program instead of commands:
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
await ctx.exec('kvcoder.connector.register', {
|
|
61
|
+
name: 'gh',
|
|
62
|
+
description: 'GitHub CLI.',
|
|
63
|
+
binary: { check: 'gh --version', install: 'https://cli.github.com' },
|
|
64
|
+
});
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The agent calls a binary connector with two commands. `exec { args?, background?, timeoutMs?, risky }` runs the program with those arguments in the real shell, in the workspace folder. `help {}` describes `exec` and prints the program's own help (`gh --help`), and `help { "command": "pr" }` prints `gh pr --help`. For a program whose help is asked another way, register the line with `{command}` standing for the command: `help: 'go help {command}'`.
|
|
68
|
+
|
|
69
|
+
`kvcoder.connector.unregister { name }` removes one of the caller's own connectors; a missing name does nothing. `kvcoder.connector.list` answers every registered connector and program, each with `enabled`. The setting `kvcoder.connectors.disabled` lists the names that are turned off, kvcoder's own seven included: such a connector is left out of the prompt and can't be called, from the next step.
|
|
70
|
+
|
|
71
|
+
## Built-in connectors
|
|
72
|
+
|
|
73
|
+
kvcoder's own connectors are `shell` (one line in the real shell), `fs` (read, list, search, write, and edit files in the workspace folder), `artifact` (a document shown beside the chat), `background` (follow up on what was started with `background: true`), `ask` (a question that suspends the turn), `delegate` (`delegate run { worker, task, background? }` hands a task to a worker, which runs it in a helper session; the workers are the setting `kvcoder.delegate.workers`, and it is a connector of a session only while a worker is turned on), and `mcp` (the tools of the MCP servers the person added; it is a connector of a session only while the workspace has a server). Their names are taken: registering one fails `kvcoder/NAME_TAKEN`.
|
|
74
|
+
|
|
75
|
+
`shell exec`, a binary's `exec`, `fs write`, `fs edit`, and `mcp call` ask the person first when the payload says `risky: true`, or always when `kvcoder.shell.approval` is `ask`. A registered command asks only when its entry has `asks: true`, and then always. `risky` is required: a call that leaves it out fails `VALIDATION_FAILED` and asks nobody. Only `shell exec`, a binary's `exec`, and `delegate run` take `background: true`; every other command runs to its end.
|
|
76
|
+
|
|
77
|
+
## Ownership
|
|
78
|
+
|
|
79
|
+
- The caller owns what it registers; only the owner replaces or removes it.
|
|
80
|
+
- A connector name owned by another extension fails `kvcoder/NAME_TAKEN` (`{ name, owner }` in the problem's params).
|
|
81
|
+
|
|
82
|
+
## Lifetime
|
|
83
|
+
|
|
84
|
+
- Connectors last one run. kvcoder clears them in its own `kernel.started` handler, which runs first because registering extensions declare kvcoder as a dependency. Each extension registers its connectors again from its own `kernel.started` handler. A hot reload of kvcoder reruns its dependents' handlers too.
|
|
85
|
+
- Sections are stored until removed; see [Sections](sections.md).
|
|
86
|
+
- When kvcoder reads, it ignores any connector whose owner isn't loaded.
|
package/docs/sections.md
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Sections
|
|
2
|
+
|
|
3
|
+
A **section** is text in the agent's system prompt. Its owner pushes it whenever its data changes; kvcoder adds it to the prompts its reach allows.
|
|
4
|
+
|
|
5
|
+
```ts
|
|
6
|
+
ctx.registerHandler('kernel.started', {
|
|
7
|
+
description: 'Publishes a global section with kvcoder.',
|
|
8
|
+
handle: () => ctx.exec('kvcoder.section.set', { id: 'open-notes', title: 'Open notes', order: 40, global: true, content: 'Current work: …' }),
|
|
9
|
+
});
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
`kvcoder.section.set` takes:
|
|
13
|
+
|
|
14
|
+
- `id`: the section's name within its owner. Ids belong to their owner: two extensions may both have an `open-notes` section, and each call touches only the caller's.
|
|
15
|
+
- `title`: a short human-readable label.
|
|
16
|
+
- `order`: sections are added to a prompt in ascending `order`.
|
|
17
|
+
- `content`: the text, at most 16 KB (16 × 1024 bytes).
|
|
18
|
+
- One of: `global: true`, `sessionId`, or neither. `global: true` reaches every workspace's prompts; `sessionId` reaches that session's prompts only; neither reaches every prompt of the calling job's workspace. `global` and `sessionId` exclude each other.
|
|
19
|
+
|
|
20
|
+
`kvcoder.section.remove { id }` (with the same `global`/`sessionId` place) removes the caller's own section; a missing one does nothing. `kvcoder.section.list` answers the sections a session's prompt reaches, `[{ id, title, order, owner, global, sessionId?, size }]`.
|
|
21
|
+
|
|
22
|
+
## Caps and errors
|
|
23
|
+
|
|
24
|
+
- A section holds at most 16 KB, and all sections a prompt could reach hold at most 64 KB together. `kvcoder.section.set` fails `TOO_LARGE` when the section alone, or the global sections plus the job's workspace ones plus the session's, would pass the limits.
|
|
25
|
+
- If a built-up prompt still finds more, the last sections by `order` are left out and a warning is logged.
|
|
26
|
+
- Sections are stored until removed: they survive restarts, and `section.set` again replaces the caller's section with the same `id` and place.
|
|
27
|
+
- Stale owners are ignored: sections whose registering extension isn't loaded are left out of prompts.
|
package/locales/ar.json
ADDED
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kvcoder.title": "المبرمج",
|
|
3
|
+
"kvcoder.app.title": "kvman للبرمجة",
|
|
4
|
+
"kvcoder.markdown": "{text}",
|
|
5
|
+
"kvcoder.pages.chat": "المحادثة",
|
|
6
|
+
"kvcoder.pages.session": "المحادثة",
|
|
7
|
+
"kvcoder.pages.mcpSignIn": "تسجيل الدخول",
|
|
8
|
+
"kvcoder.status.waiting": "بانتظار ردّك: {count}",
|
|
9
|
+
"kvcoder.status.chat": "المحادثة ↑ {input} ↓ {output} · {cost}",
|
|
10
|
+
"kvcoder.errors.NAME_TAKEN": "الاسم {name} مستخدم لدى {owner}.",
|
|
11
|
+
"kvcoder.errors.QUESTION_NOT_FOUND": "هذا السؤال أُجيب عنه أو تم تخطيه أو إلغاؤه من قبل.",
|
|
12
|
+
"kvcoder.errors.SESSION_NOT_FOUND": "هذه المحادثة غير موجودة في مساحة العمل الحالية.",
|
|
13
|
+
"kvcoder.errors.SESSION_BUSY": "المحادثة مشغولة الآن. حاول مجددًا بعد انتهاء الخطوة الجارية.",
|
|
14
|
+
"kvcoder.errors.JOB_NOT_FOUND": "لا توجد في هذه المحادثة مهمة خلفية بهذا المعرّف.",
|
|
15
|
+
"kvcoder.errors.MCP_SERVER_NOT_FOUND": "لا يوجد خادم MCP باسم {server}.",
|
|
16
|
+
"kvcoder.errors.WORKER_NOT_FOUND": "لا يوجد مساعد باسم {worker}.",
|
|
17
|
+
"kvcoder.errors.MCP_CONNECT_FAILED": "فشل خادم MCP {server}: {reason}",
|
|
18
|
+
"kvcoder.errors.MCP_SIGN_IN_NEEDED": "خادم MCP {server} يحتاج إلى تسجيل دخولك.",
|
|
19
|
+
"kvcoder.errors.MCP_SIGN_IN_FAILED": "لم ينجح تسجيل الدخول: {reason}",
|
|
20
|
+
"kvcoder.notices.CANCELLED": "أوقفتَ هذه الجولة.",
|
|
21
|
+
"kvcoder.notices.INTERRUPTED": "توقف kvman أثناء هذه الجولة. أرسل رسالة للمتابعة.",
|
|
22
|
+
"kvcoder.notices.STEP_FAILED": "توقفت الجولة: {error}",
|
|
23
|
+
"kvcoder.notices.MAX_STEPS": "توقفت الجولة بعد بلوغ الحد الأقصى للخطوات ({steps}).",
|
|
24
|
+
"kvcoder.notices.SUMMARY_FAILED": "تعذّر تلخيص الرسائل السابقة: {error}",
|
|
25
|
+
"kvcoder.notices.REPLY_LOST": "لم يصل رد النموذج كاملًا بعد عدة محاولات (ضاع نحو {tokens} توكن). اكتب «تابع» للمحاولة من جديد، أو اختر نموذجًا آخر.",
|
|
26
|
+
"kvcoder.ui.newChat": "محادثة جديدة",
|
|
27
|
+
"kvcoder.ui.chats": "المحادثات",
|
|
28
|
+
"kvcoder.ui.today": "اليوم",
|
|
29
|
+
"kvcoder.ui.earlier": "الأقدم",
|
|
30
|
+
"kvcoder.ui.needsYou": "بانتظار ردّك",
|
|
31
|
+
"kvcoder.ui.status.idle": "جاهزة",
|
|
32
|
+
"kvcoder.ui.status.running": "قيد العمل…",
|
|
33
|
+
"kvcoder.ui.status.waiting": "بانتظار ردّك",
|
|
34
|
+
"kvcoder.ui.failed": "حدث خطأ ما.",
|
|
35
|
+
"kvcoder.ui.seconds": "{count} ث",
|
|
36
|
+
"kvcoder.ui.minutes": "{count} د",
|
|
37
|
+
"kvcoder.ui.totals": "{time} · {tokens} توكن · {cost}",
|
|
38
|
+
"kvcoder.ui.turns": "الجولات: {count}",
|
|
39
|
+
"kvcoder.ui.exitCode": "رمز الخروج {code}",
|
|
40
|
+
"kvcoder.ui.retry": "إعادة المحاولة",
|
|
41
|
+
"kvcoder.ui.chooseAnotherModel": "اختيار نموذج آخر",
|
|
42
|
+
"kvcoder.ui.continueText": "تابع",
|
|
43
|
+
"kvcoder.ui.command": "الأمر",
|
|
44
|
+
"kvcoder.ui.chooseModel": "اختيار نموذج",
|
|
45
|
+
"kvcoder.ui.chooseModelHint": "اختر نموذجًا للبدء.",
|
|
46
|
+
"kvcoder.ui.keyNeeded": "يحتاج {provider} إلى مفتاح API.",
|
|
47
|
+
"kvcoder.ui.addKey": "إضافة مفتاح",
|
|
48
|
+
"kvcoder.ui.jumpToLatest": "الانتقال إلى الأحدث",
|
|
49
|
+
"kvcoder.ui.output": "الناتج",
|
|
50
|
+
"kvcoder.ui.running": "قيد التنفيذ",
|
|
51
|
+
"kvcoder.ui.skip": "تخطي",
|
|
52
|
+
"kvcoder.ui.answer": "إرسال الإجابة",
|
|
53
|
+
"kvcoder.ui.other": "إجابة أخرى",
|
|
54
|
+
"kvcoder.ui.yes": "نعم",
|
|
55
|
+
"kvcoder.ui.no": "لا",
|
|
56
|
+
"kvcoder.ui.allowCommands": "هل تسمح بتنفيذ هذه الأوامر؟ ({count})",
|
|
57
|
+
"kvcoder.ui.allow": "سماح",
|
|
58
|
+
"kvcoder.ui.deny": "رفض",
|
|
59
|
+
"kvcoder.ui.allowAll": "سماح للكل",
|
|
60
|
+
"kvcoder.ui.denyAll": "رفض الكل",
|
|
61
|
+
"kvcoder.ui.backgroundFinished": "انتهت مهمة خلفية",
|
|
62
|
+
"kvcoder.ui.helperFinished": "أنهى وكيل مساعد عمله",
|
|
63
|
+
"kvcoder.ui.toModel": "رسالة من kvcoder إلى النموذج",
|
|
64
|
+
"kvcoder.ui.attachment": "صورة مرفقة",
|
|
65
|
+
"kvcoder.ui.queued": "أُرسلت · سيقرؤها النموذج بعد الخطوة الحالية",
|
|
66
|
+
"kvcoder.ui.thought": "التفكير",
|
|
67
|
+
"kvcoder.ui.thinkingNow": "يفكر…",
|
|
68
|
+
"kvcoder.ui.summarized": "تم تلخيص الرسائل السابقة",
|
|
69
|
+
"kvcoder.ui.summarizing": "جارٍ تلخيص الرسائل السابقة…",
|
|
70
|
+
"kvcoder.ui.working.compact": "جارٍ تلخيص الرسائل السابقة…",
|
|
71
|
+
"kvcoder.ui.working.export": "جارٍ تصدير المحادثة…",
|
|
72
|
+
"kvcoder.ui.working.fork": "جارٍ نسخ المحادثة إلى محادثة جديدة…",
|
|
73
|
+
"kvcoder.ui.working.rename": "جارٍ إعادة تسمية المحادثة…",
|
|
74
|
+
"kvcoder.ui.nothingToSummarize": "لا يوجد ما يُلخَّص بعد: الرسائل التي تسبق آخر {count} ما زالت قصيرة",
|
|
75
|
+
"kvcoder.ui.preparing": "جارٍ تجهيز أمر…",
|
|
76
|
+
"kvcoder.ui.searchModels": "ابحث في النماذج",
|
|
77
|
+
"kvcoder.ui.noModels": "لا توجد نماذج مطابقة",
|
|
78
|
+
"kvcoder.ui.modelsCount": "{shown} من أصل {total}",
|
|
79
|
+
"kvcoder.ui.activity.waiting": "بانتظار النموذج…",
|
|
80
|
+
"kvcoder.ui.activity.thinking": "يفكر…",
|
|
81
|
+
"kvcoder.ui.activity.writing": "يكتب…",
|
|
82
|
+
"kvcoder.ui.activity.preparing": "جارٍ تجهيز أمر…",
|
|
83
|
+
"kvcoder.ui.activity.running": "جارٍ التنفيذ…",
|
|
84
|
+
"kvcoder.ui.uploadFailed": "تعذّر رفع {name}.",
|
|
85
|
+
"kvcoder.ui.removeAttachment": "إزالة المرفق",
|
|
86
|
+
"kvcoder.ui.attach": "إرفاق ملفات",
|
|
87
|
+
"kvcoder.ui.enterSends": "Enter للإرسال · Shift+Enter لسطر جديد",
|
|
88
|
+
"kvcoder.ui.stop": "إيقاف",
|
|
89
|
+
"kvcoder.ui.send": "إرسال",
|
|
90
|
+
"kvcoder.ui.placeholder": "اكتب رسالة…",
|
|
91
|
+
"kvcoder.ui.startHeading": "ماذا تريد أن نبني في {workspace}؟",
|
|
92
|
+
"kvcoder.ui.startPlaceholder": "صِف تعديلًا أو مشكلة أو فكرة…",
|
|
93
|
+
"kvcoder.ui.startHint": "إرسال الرسالة يبدأ محادثة جديدة. الأوامر تطلب موافقتك قبل تنفيذها.",
|
|
94
|
+
"kvcoder.ui.earlierMessages": "رسائل أقدم: {count} · تصدير",
|
|
95
|
+
"kvcoder.ui.messageDismisses": "إرسال رسالة الآن يتخطى الأسئلة ويرفض الأوامر المعلّقة.",
|
|
96
|
+
"kvcoder.ui.promptTitle": "تعليمات النظام كما ستُرسل في الخطوة التالية",
|
|
97
|
+
"kvcoder.ui.copy": "نسخ",
|
|
98
|
+
"kvcoder.ui.copied": "تم النسخ.",
|
|
99
|
+
"kvcoder.ui.section": "{title} · {owner} · {reach} · {size} بايت",
|
|
100
|
+
"kvcoder.ui.reach.global": "كل مساحات العمل",
|
|
101
|
+
"kvcoder.ui.reach.workspace": "مساحة العمل الحالية",
|
|
102
|
+
"kvcoder.ui.reach.session": "هذه المحادثة",
|
|
103
|
+
"kvcoder.ui.leftOut": "مستبعد: يتجاوز 64 كيلوبايت",
|
|
104
|
+
"kvcoder.ui.model": "النموذج",
|
|
105
|
+
"kvcoder.ui.thinking": "التفكير",
|
|
106
|
+
"kvcoder.ui.thinkingLevels.off": "بدون",
|
|
107
|
+
"kvcoder.ui.thinkingLevels.minimal": "أدنى",
|
|
108
|
+
"kvcoder.ui.thinkingLevels.low": "منخفض",
|
|
109
|
+
"kvcoder.ui.thinkingLevels.medium": "متوسط",
|
|
110
|
+
"kvcoder.ui.thinkingLevels.high": "مرتفع",
|
|
111
|
+
"kvcoder.ui.menu": "المزيد",
|
|
112
|
+
"kvcoder.ui.rename": "إعادة التسمية",
|
|
113
|
+
"kvcoder.ui.fork": "نسخ إلى محادثة جديدة",
|
|
114
|
+
"kvcoder.ui.export": "تصدير بصيغة JSON",
|
|
115
|
+
"kvcoder.ui.compact": "تلخيص الرسائل السابقة الآن",
|
|
116
|
+
"kvcoder.ui.delete": "حذف المحادثة",
|
|
117
|
+
"kvcoder.ui.deleteConfirm": "هل تريد حذف هذه المحادثة ومحادثات وكلائها المساعدين؟",
|
|
118
|
+
"kvcoder.ui.cancel": "إلغاء",
|
|
119
|
+
"kvcoder.session.create.description": "ينشئ محادثة في مساحة العمل الحالية.",
|
|
120
|
+
"kvcoder.session.list.description": "يسرد محادثات مساحة العمل الحالية، الأحدث أولًا.",
|
|
121
|
+
"kvcoder.session.count.description": "يعدّ محادثات مساحة العمل الحالية، بحالة معيّنة أو كلها.",
|
|
122
|
+
"kvcoder.session.get.description": "يعيد محادثة واحدة.",
|
|
123
|
+
"kvcoder.session.rename.description": "يعيد تسمية محادثة؛ ولا يغيّر kvcoder عنوانها بعد ذلك.",
|
|
124
|
+
"kvcoder.session.configure.description": "يغيّر نموذج المحادثة أو مستوى تفكيرها، بدءًا من خطوتها التالية.",
|
|
125
|
+
"kvcoder.session.delete.description": "يحذف محادثة: يلغي جولتها ويحذف محادثات وكلائها الفرعيين.",
|
|
126
|
+
"kvcoder.session.compact.description": "يلخّص الرسائل الأقدم في المحادثة الآن؛ وتبقى آخر 10 كاملة. ويذكر هل أُنشئ ملخّص.",
|
|
127
|
+
"kvcoder.session.fork.description": "ينسخ رسائل المحادثة وملخّصها حتى رقم معيّن إلى محادثة جديدة.",
|
|
128
|
+
"kvcoder.session.export.description": "يكتب المحادثة وجولاتها ورسائلها ومحادثات وكلائها الفرعيين في ملف JSON.",
|
|
129
|
+
"kvcoder.session.title.description": "يكتب عنوان المحادثة من جولتها الأولى.",
|
|
130
|
+
"kvcoder.session.prune.description": "يحذف أقدم المحادثات غير النشطة الزائدة عن kvcoder.sessions.keep.",
|
|
131
|
+
"kvcoder.message.send.description": "يرسل رسالة المستخدم: تبدأ جولة، أو توجّه الجولة الجارية، أو تجيب جولة تنتظر.",
|
|
132
|
+
"kvcoder.message.inject.description": "يضيف رسالة من إضافة إلى المحادثة كما تُضاف رسالة المستخدم، موسومة باسم الإضافة.",
|
|
133
|
+
"kvcoder.message.list.description": "يسرد أحدث رسائل المحادثة بالترتيب، وعدد الأقدم، والرسائل التي تنتظر الخطوة.",
|
|
134
|
+
"kvcoder.note.add.description": "يضيف ملاحظة للعرض فقط؛ لا تصل إلى النموذج ولا تبدأ جولة.",
|
|
135
|
+
"kvcoder.turn.cancel.description": "يلغي جولة المحادثة: خطوتها وجولات وكلائها الفرعيين وأسئلتها.",
|
|
136
|
+
"kvcoder.turn.list.description": "يسرد جولات المحادثة، الأحدث أولًا.",
|
|
137
|
+
"kvcoder.turn.step.description": "ينفّذ خطوة واحدة من جولة المحادثة.",
|
|
138
|
+
"kvcoder.question.answer.description": "يجيب عن سؤال أو طلب موافقة معلّق؛ ويعيد معرّف مهمة الخطوة التالية حين لا يبقى شيء معلّق.",
|
|
139
|
+
"kvcoder.shell.run.description": "ينفّذ سطرًا واحدًا في الطرفية الفعلية، داخل مجلد مساحة العمل.",
|
|
140
|
+
"kvcoder.binary.run.description": "يشغّل البرنامج بالوسائط المعطاة في الطرفية الفعلية، داخل مجلد مساحة العمل.",
|
|
141
|
+
"kvcoder.fs.file.get.description": "يقرأ أسطرًا من ملف نصي.",
|
|
142
|
+
"kvcoder.fs.entry.list.description": "يسرد ملفات ومجلدات مجلد واحد.",
|
|
143
|
+
"kvcoder.fs.text.search.description": "يجد الأسطر التي تطابق تعبيرًا نمطيًا، في ملف أو داخل مجلد.",
|
|
144
|
+
"kvcoder.fs.write.description": "ينشئ ملفًا مع مجلداته الأصلية، أو يستبدل محتوى الملف.",
|
|
145
|
+
"kvcoder.fs.edit.description": "يستبدل مقاطع نصية محددة في ملف موجود؛ وإذا فشل أحد الاستبدالات لا يُكتب شيء.",
|
|
146
|
+
"kvcoder.artifact.write.description": "ينشئ مخرجًا، أو يستبدل عنوانه وصيغته ومحتواه.",
|
|
147
|
+
"kvcoder.artifact.edit.description": "يستبدل مقاطع نصية محددة في مخرج موجود؛ وإذا فشل أحد الاستبدالات لا يتغير شيء.",
|
|
148
|
+
"kvcoder.artifact.content.get.description": "يقرأ مخرجًا مع محتواه.",
|
|
149
|
+
"kvcoder.background.list.description": "يسرد أحدث 50 تشغيلًا في الخلفية لهذه المحادثة، الأحدث أولًا.",
|
|
150
|
+
"kvcoder.background.output.get.description": "يعيد حالة تشغيل واحد في الخلفية وناتجه (آخر 100 سطر لعملية، أو إجابة وكيل فرعي، أو ما أعاده تشغيل برنامج مساعد).",
|
|
151
|
+
"kvcoder.background.stop.description": "يوقف عملية في الخلفية أو تشغيل برنامج مساعد، أو يلغي وكيلًا فرعيًا في الخلفية.",
|
|
152
|
+
"kvcoder.mcp.tool.describe.description": "يسرد أدوات خادم MCP، أو يعطي وصف أداة واحدة ومُدخلاتها.",
|
|
153
|
+
"kvcoder.mcp.tool.call.description": "يستدعي أداة من خادم MCP ويعيد نصّها.",
|
|
154
|
+
"kvcoder.mcp.server.check.description": "يتصل بخادم MCP ويخبر هل هو جاهز، أم يحتاج إلى تسجيل دخول، أم فشل.",
|
|
155
|
+
"kvcoder.mcp.sign-in.start.description": "يبدأ تسجيل دخولك إلى خادم MCP ويعطي العنوان الذي تفتحه.",
|
|
156
|
+
"kvcoder.mcp.sign-in.finish.description": "يُنهي تسجيل الدخول بالرمز الذي أعاده الخادم.",
|
|
157
|
+
"kvcoder.ask.text.check.description": "يطلب من المستخدم إجابة نصية حرة وينتظرها.",
|
|
158
|
+
"kvcoder.ask.choice.check.description": "يطلب من المستخدم الاختيار من بين خيارات وينتظر الإجابة.",
|
|
159
|
+
"kvcoder.ask.confirm.check.description": "يسأل المستخدم سؤال نعم أو لا وينتظر الإجابة.",
|
|
160
|
+
"kvcoder.delegate.check.description": "يشغّل مساعدًا على مهمة؛ وعدة تشغيلات في رد واحد تعمل بالتوازي.",
|
|
161
|
+
"kvcoder.delegate.worker.check.description": "يتحقق من أن برنامج المساعد مثبت؛ والوكيل المساعد جاهز دائمًا.",
|
|
162
|
+
"kvcoder.delegate.worker.run.description": "يشغّل برنامج المساعد على مهمته، ويعطي المحادثة إجابته.",
|
|
163
|
+
"kvcoder.connector.help.get.description": "يعيد مساعدة موصّل: أوامره، أو حمولة أمر واحد ونتيجته وأمثلته.",
|
|
164
|
+
"kvcoder.connector.register.description": "يسجّل موصّلًا يستدعيه الوكيل بأداته run: أوامر المستدعي العامة، أو برنامجًا يعمل في الطرفية.",
|
|
165
|
+
"kvcoder.connector.unregister.description": "يزيل أحد موصّلات المستدعي.",
|
|
166
|
+
"kvcoder.connector.list.description": "يسرد الموصّلات التي يمكن للوكيل استخدامها.",
|
|
167
|
+
"kvcoder.section.set.description": "يضبط أحد أقسام المستدعي في تعليمات النظام.",
|
|
168
|
+
"kvcoder.section.remove.description": "يزيل أحد أقسام المستدعي؛ ولا يفعل شيئًا إن لم يكن القسم موجودًا.",
|
|
169
|
+
"kvcoder.section.list.description": "يسرد الأقسام التي تدخل في تعليمات محادثة، أو أقسام مساحة العمل عند عدم تحديد محادثة.",
|
|
170
|
+
"kvcoder.handler.register.description": "يسجّل أحد أوامر المستدعي العامة ليُنفَّذ عند نقطة من نقاط المحادثة.",
|
|
171
|
+
"kvcoder.handler.unregister.description": "يزيل معالج المستدعي لنقطة محادثة؛ ولكل إضافة معالجها الخاص.",
|
|
172
|
+
"kvcoder.handler.list.description": "يسرد معالجات المحادثات.",
|
|
173
|
+
"kvcoder.handler.run.description": "ينفّذ أمر معالج المحادثة ويتذكر مهمته حتى لا تبدأ رسائله جولة.",
|
|
174
|
+
"kvcoder.prompt.get.description": "يعيد تعليمات النظام كما ستُرسل في الخطوة التالية، مع أقسامها.",
|
|
175
|
+
"kvcoder.ui.get.description": "يعيد صفحات kvcoder وعنصر التنقل وعناصر شريط الحالة.",
|
|
176
|
+
"kvcoder.docs.list.description": "يسرد صفحات توثيق kvcoder.",
|
|
177
|
+
"kvcoder.docs.get.description": "يعيد صفحة توثيق واحدة من kvcoder.",
|
|
178
|
+
"kvcoder.model.title": "النموذج",
|
|
179
|
+
"kvcoder.model.description": "النموذج الذي تبدأ به المحادثة الجديدة.",
|
|
180
|
+
"kvcoder.thinking.title": "التفكير",
|
|
181
|
+
"kvcoder.thinking.description": "مقدار تفكير النموذج في المحادثة الجديدة.",
|
|
182
|
+
"kvcoder.maxSteps.title": "الخطوات في كل جولة",
|
|
183
|
+
"kvcoder.maxSteps.description": "أقصى عدد من الخطوات تنفّذه الجولة قبل أن تتوقف.",
|
|
184
|
+
"kvcoder.shell.approval.title": "الموافقة على الأوامر",
|
|
185
|
+
"kvcoder.shell.approval.description": "متى يطلب الوكيل موافقتك قبل تنفيذ أمر أو تعديل ملف.",
|
|
186
|
+
"kvcoder.shell.path.title": "برنامج الطرفية",
|
|
187
|
+
"kvcoder.shell.path.description": "برنامج الطرفية الذي تُنفَّذ به الأوامر. اتركه فارغًا ليُستخدم bash، أو PowerShell على Windows.",
|
|
188
|
+
"kvcoder.compactAt.title": "حدّ التلخيص",
|
|
189
|
+
"kvcoder.compactAt.description": "نسبة امتلاء سياق النموذج التي تُلخَّص بعدها الرسائل الأقدم: 0.8 تعني 80%.",
|
|
190
|
+
"kvcoder.compactKeep.title": "الرسائل التي تبقى كاملة",
|
|
191
|
+
"kvcoder.compactKeep.description": "عدد أحدث الرسائل التي تبقى كما هي عند تلخيص الرسائل الأقدم، من 1 إلى 100.",
|
|
192
|
+
"kvcoder.connectors.title": "موصّلات البرامج",
|
|
193
|
+
"kvcoder.connectors.description": "برامج يمكن للوكيل تشغيلها كموصّلات، مكتوبة كقائمة JSON.",
|
|
194
|
+
"kvcoder.sessions.keep.title": "عدد المحادثات المحفوظة",
|
|
195
|
+
"kvcoder.sessions.keep.description": "عدد المحادثات التي تُحفظ في كل مساحة عمل. الصفر يحفظها كلها.",
|
|
196
|
+
"kvcoder.job.list.description": "أحدث 50 مهمة خلفية في محادثة (عمليات ووكلاء فرعيون وتشغيلات برامج المساعدين)، الجارية أولًا.",
|
|
197
|
+
"kvcoder.job.get.description": "مهمة خلفية واحدة في محادثة مع ناتجها: آخر 100 سطر لعملية، أو نتيجة وكيل فرعي، أو ما أعاده تشغيل برنامج مساعد.",
|
|
198
|
+
"kvcoder.job.cancel.description": "يوقف عملية خلفية جارية أو تشغيل برنامج مساعد في محادثة، أو يلغي وكيلها الفرعي الخلفي.",
|
|
199
|
+
"kvcoder.artifact.list.description": "يسرد مخرجات المحادثة، الأحدث تعديلًا أولًا.",
|
|
200
|
+
"kvcoder.artifact.get.description": "يعيد مخرجًا واحدًا من المحادثة مع محتواه.",
|
|
201
|
+
"kvcoder.ui.jobs.title": "المهام الخلفية",
|
|
202
|
+
"kvcoder.ui.jobs.running": "{count} قيد التشغيل",
|
|
203
|
+
"kvcoder.ui.jobs.minutes": "{minutes} د {seconds} ث",
|
|
204
|
+
"kvcoder.ui.jobs.logs": "السجل",
|
|
205
|
+
"kvcoder.ui.jobs.stop": "إيقاف",
|
|
206
|
+
"kvcoder.ui.jobs.noOutput": "لا يوجد ناتج بعد.",
|
|
207
|
+
"kvcoder.ui.jobs.status.running": "قيد التشغيل",
|
|
208
|
+
"kvcoder.ui.jobs.status.succeeded": "اكتملت",
|
|
209
|
+
"kvcoder.ui.jobs.status.failed": "فشلت",
|
|
210
|
+
"kvcoder.ui.jobs.status.cancelled": "أُوقفت",
|
|
211
|
+
"kvcoder.ui.jobs.status.interrupted": "انقطعت",
|
|
212
|
+
"kvcoder.ui.jobs.inBackground": "يعمل في الخلفية",
|
|
213
|
+
"kvcoder.ui.jobs.background": "في الخلفية",
|
|
214
|
+
"kvcoder.notices.STEP_FAILED_REASON": "توقفت الجولة: {error} {reason}",
|
|
215
|
+
"kvcoder.ui.activity.retrying": "جارٍ إعادة المحاولة… ({attempt} من {of})",
|
|
216
|
+
"kvcoder.ui.artifacts.title": "المخرجات",
|
|
217
|
+
"kvcoder.ui.artifacts.open": "فتح",
|
|
218
|
+
"kvcoder.ui.artifacts.close": "إغلاق",
|
|
219
|
+
"kvcoder.ui.artifacts.version": "الإصدار {version}",
|
|
220
|
+
"kvcoder.ui.artifacts.toggle": "المخرجات ({count})",
|
|
221
|
+
"kvcoder.ui.artifacts.frameLabel": "معاينة {title}",
|
|
222
|
+
"kvcoder.ui.artifacts.view": "طريقة العرض",
|
|
223
|
+
"kvcoder.ui.artifacts.preview": "معاينة",
|
|
224
|
+
"kvcoder.ui.artifacts.source": "المصدر",
|
|
225
|
+
"kvcoder.ui.artifacts.format.markdown": "Markdown",
|
|
226
|
+
"kvcoder.ui.artifacts.format.html": "HTML",
|
|
227
|
+
"kvcoder.ui.artifacts.format.url": "رابط",
|
|
228
|
+
"kvcoder.ui.artifacts.openUrl": "فتح في تبويب جديد",
|
|
229
|
+
"kvcoder.ui.artifacts.urlRefused": "لا يمكن عرض هذا العنوان هنا: تُعرض فقط الصفحات على localhost أو 127.0.0.1، ما عدا kvman نفسه.",
|
|
230
|
+
"kvcoder.thinking.options.off": "بدون",
|
|
231
|
+
"kvcoder.thinking.options.minimal": "أدنى",
|
|
232
|
+
"kvcoder.thinking.options.low": "منخفض",
|
|
233
|
+
"kvcoder.thinking.options.medium": "متوسط",
|
|
234
|
+
"kvcoder.thinking.options.high": "مرتفع",
|
|
235
|
+
"kvcoder.shell.approval.options.auto": "اسأل عن العمليات الخطرة فقط",
|
|
236
|
+
"kvcoder.shell.approval.options.ask": "اسأل عن كل عملية",
|
|
237
|
+
"kvcoder.ui.skipped": "تم التخطي",
|
|
238
|
+
"kvcoder.ui.chosen": "تم اختياره",
|
|
239
|
+
"kvcoder.connectors.disabled.title": "الموصّلات المعطّلة",
|
|
240
|
+
"kvcoder.connectors.disabled.description": "الموصّلات التي لا يستطيع الوكيل استخدامها، بأسمائها.",
|
|
241
|
+
"kvcoder.mcp.servers.title": "خوادم MCP",
|
|
242
|
+
"kvcoder.mcp.servers.description": "خوادم MCP التي يستخدمها الوكيل عبر الموصّل mcp.",
|
|
243
|
+
"kvcoder.delegate.workers.title": "المساعدون",
|
|
244
|
+
"kvcoder.delegate.workers.description": "المساعدون الذين يسند إليهم الوكيل مهمة عبر الموصّل delegate.",
|
|
245
|
+
"kvcoder.config.agent": "الوكيل",
|
|
246
|
+
"kvcoder.config.chats": "المحادثات",
|
|
247
|
+
"kvcoder.config.connectors": "الموصّلات",
|
|
248
|
+
"kvcoder.config.connectors.intro": "الموصّل شيء يستطيع الوكيل استخدامه. إذا عطّلت موصّلًا فلن يراه الوكيل بدءًا من خطوته التالية.",
|
|
249
|
+
"kvcoder.config.connector.shell": "يشغّل أسطر الأوامر في مجلد مساحة العمل.",
|
|
250
|
+
"kvcoder.config.connector.fs": "يقرأ الملفات ويكتبها ويعدّلها ويسردها ويبحث فيها.",
|
|
251
|
+
"kvcoder.config.connector.artifact": "يكتب المخرجات والصفحات المعروضة بجانب المحادثة.",
|
|
252
|
+
"kvcoder.config.connector.background": "يسرد ما يعمل في الخلفية ويقرأ ناتجه ويوقفه.",
|
|
253
|
+
"kvcoder.config.connector.ask": "يطرح عليك سؤالًا وينتظر إجابتك.",
|
|
254
|
+
"kvcoder.config.connector.delegate": "يسند جزءًا من المهمة إلى مساعد: وكيل آخر له تعليماته.",
|
|
255
|
+
"kvcoder.config.connector.mcp": "يستخدم أدوات خوادم MCP التي تضيفها.",
|
|
256
|
+
"kvcoder.config.connectors.use": "استخدام {name}",
|
|
257
|
+
"kvcoder.config.connectors.configure": "إعداد {name}",
|
|
258
|
+
"kvcoder.config.dialog.close": "إغلاق",
|
|
259
|
+
"kvcoder.config.dialog.scope.global": "التغييرات تسري على كل مساحات العمل",
|
|
260
|
+
"kvcoder.config.dialog.scope.workspace": "التغييرات تسري على {name} فقط",
|
|
261
|
+
"kvcoder.config.setting.saved": "تم الحفظ",
|
|
262
|
+
"kvcoder.config.setting.changed.global": "تم تغييره",
|
|
263
|
+
"kvcoder.config.setting.changed.workspace": "تم تغييره في {name}",
|
|
264
|
+
"kvcoder.config.setting.reset.global": "استعادة الافتراضي",
|
|
265
|
+
"kvcoder.config.setting.reset.workspace": "استخدام قيمة كل مساحات العمل",
|
|
266
|
+
"kvcoder.config.setting.ownValue": "لمساحة العمل {name} قيمة خاصة بها. انتقل إلى {name} لتغييرها.",
|
|
267
|
+
"kvcoder.config.shell.pathFound": "يُعثر عليه تلقائيًا",
|
|
268
|
+
"kvcoder.config.mcp.intro": "خوادم MCP تمنح الوكيل أدوات أكثر. يُفحص كل خادم عند فتح هذه القائمة.",
|
|
269
|
+
"kvcoder.config.mcp.empty": "لا توجد خوادم بعد. أضف خادمًا ليستخدم الوكيل أدواته.",
|
|
270
|
+
"kvcoder.config.mcp.add": "إضافة خادم",
|
|
271
|
+
"kvcoder.config.mcp.checking": "جارٍ الفحص…",
|
|
272
|
+
"kvcoder.config.mcp.ready": "جاهز · {count} أداة",
|
|
273
|
+
"kvcoder.config.mcp.signInNeeded": "يحتاج إلى تسجيل الدخول",
|
|
274
|
+
"kvcoder.config.mcp.failed": "تعذّر الاتصال",
|
|
275
|
+
"kvcoder.config.mcp.recheck": "افحص مجددًا",
|
|
276
|
+
"kvcoder.config.mcp.signIn": "تسجيل الدخول",
|
|
277
|
+
"kvcoder.config.mcp.signOut": "تسجيل الخروج",
|
|
278
|
+
"kvcoder.config.mcp.signIn.blocked": "حجب متصفحك تبويب تسجيل الدخول. اسمح بالنوافذ المنبثقة لـ kvman ثم اضغط تسجيل الدخول مجددًا.",
|
|
279
|
+
"kvcoder.config.mcp.signIn.working": "جارٍ إنهاء تسجيل الدخول…",
|
|
280
|
+
"kvcoder.config.mcp.signIn.done": "تم تسجيل الدخول إلى {name}.",
|
|
281
|
+
"kvcoder.config.mcp.signIn.close": "يمكنك إغلاق هذا التبويب.",
|
|
282
|
+
"kvcoder.config.mcp.signIn.failed": "لم يكتمل تسجيل الدخول",
|
|
283
|
+
"kvcoder.config.mcp.signIn.unfinished": "لم يُكمل الخادم تسجيل الدخول: أُلغي أو رُفض.",
|
|
284
|
+
"kvcoder.config.mcp.signIn.retry": "أغلق هذا التبويب واضغط تسجيل الدخول مجددًا.",
|
|
285
|
+
"kvcoder.config.mcp.edit": "تعديل {name}",
|
|
286
|
+
"kvcoder.config.mcp.remove": "إزالة {name}",
|
|
287
|
+
"kvcoder.config.mcp.removeConfirm": "هل تريد إزالة {name} وأسراره؟",
|
|
288
|
+
"kvcoder.config.mcp.removeYes": "إزالة",
|
|
289
|
+
"kvcoder.config.mcp.cancel": "إلغاء",
|
|
290
|
+
"kvcoder.config.mcp.saved": "تم حفظ الخادم {name}.",
|
|
291
|
+
"kvcoder.config.mcp.removed": "تمت إزالة الخادم {name}.",
|
|
292
|
+
"kvcoder.config.mcp.form.titleNew": "إضافة خادم MCP",
|
|
293
|
+
"kvcoder.config.mcp.form.titleEdit": "تعديل {name}",
|
|
294
|
+
"kvcoder.config.mcp.form.name": "الاسم",
|
|
295
|
+
"kvcoder.config.mcp.form.nameHint": "الاسم الذي يستخدمه الوكيل: أحرف إنجليزية صغيرة وأرقام وشرطات، مثل github.",
|
|
296
|
+
"kvcoder.config.mcp.form.description": "الوصف",
|
|
297
|
+
"kvcoder.config.mcp.form.descriptionHint": "الغرض من الخادم. يقرؤه الوكيل ليقرر متى يستخدمه.",
|
|
298
|
+
"kvcoder.config.mcp.form.kind": "طريقة التشغيل",
|
|
299
|
+
"kvcoder.config.mcp.form.kind.command": "أمر على هذا الحاسوب",
|
|
300
|
+
"kvcoder.config.mcp.form.kind.url": "رابط",
|
|
301
|
+
"kvcoder.config.mcp.form.command": "الأمر",
|
|
302
|
+
"kvcoder.config.mcp.form.commandHint": "البرنامج الذي يشغّل الخادم، مثل npx أو uvx.",
|
|
303
|
+
"kvcoder.config.mcp.form.args": "معاملات الأمر",
|
|
304
|
+
"kvcoder.config.mcp.form.argsHint": "واحد في كل سطر.",
|
|
305
|
+
"kvcoder.config.mcp.form.url": "الرابط",
|
|
306
|
+
"kvcoder.config.mcp.form.env": "متغيرات البيئة",
|
|
307
|
+
"kvcoder.config.mcp.form.header": "المفاتيح السرية",
|
|
308
|
+
"kvcoder.config.mcp.form.secretsHint": "تُحفظ القيم كأسرار ولا تُعرض مرة أخرى.",
|
|
309
|
+
"kvcoder.config.mcp.form.valueName.env": "المتغير",
|
|
310
|
+
"kvcoder.config.mcp.form.valueName.header": "اسم المفتاح",
|
|
311
|
+
"kvcoder.config.mcp.form.value": "القيمة",
|
|
312
|
+
"kvcoder.config.mcp.form.valueOf": "قيمة {name}",
|
|
313
|
+
"kvcoder.config.mcp.form.set": "محفوظة",
|
|
314
|
+
"kvcoder.config.mcp.form.replace": "استبدال",
|
|
315
|
+
"kvcoder.config.mcp.form.removeValue": "إزالة {name}",
|
|
316
|
+
"kvcoder.config.mcp.form.add.env": "إضافة متغير",
|
|
317
|
+
"kvcoder.config.mcp.form.add.header": "إضافة مفتاح سري",
|
|
318
|
+
"kvcoder.config.mcp.form.save": "حفظ",
|
|
319
|
+
"kvcoder.config.mcp.invalid.nameEmpty": "أدخل اسمًا للخادم.",
|
|
320
|
+
"kvcoder.config.mcp.invalid.nameShape": "استخدم أحرفًا إنجليزية صغيرة وأرقامًا وشرطات، على أن يبدأ بحرف.",
|
|
321
|
+
"kvcoder.config.mcp.invalid.nameTaken": "يوجد خادم آخر بهذا الاسم.",
|
|
322
|
+
"kvcoder.config.mcp.invalid.descriptionEmpty": "اذكر الغرض من الخادم.",
|
|
323
|
+
"kvcoder.config.mcp.invalid.commandEmpty": "أدخل الأمر الذي يشغّل الخادم.",
|
|
324
|
+
"kvcoder.config.mcp.invalid.url": "أدخل عنوانًا يبدأ بـ http:// أو https://.",
|
|
325
|
+
"kvcoder.config.mcp.invalid.valueName.env": "اسم المتغير يتكون من أحرف إنجليزية وأرقام و _، ولا يبدأ برقم.",
|
|
326
|
+
"kvcoder.config.mcp.invalid.valueName.header": "اسم المفتاح السري لا يحتوي على مسافات ولا نقطتين.",
|
|
327
|
+
"kvcoder.config.mcp.invalid.valueRepeated": "لا يُكرَّر الاسم الواحد.",
|
|
328
|
+
"kvcoder.config.mcp.invalid.valueEmpty": "أدخل قيمة لكل اسم جديد، أو احذف سطره.",
|
|
329
|
+
"kvcoder.config.workers.intro": "المساعد وكيل آخر يسند إليه الوكيل الرئيسي جزءًا من المهمة. إذا عطّلت مساعدًا فلن يراه الوكيل.",
|
|
330
|
+
"kvcoder.config.workers.empty": "لا يوجد مساعدون بعد. أضف واحدًا ليسند إليه الوكيل مهمة.",
|
|
331
|
+
"kvcoder.config.workers.add": "إضافة مساعد",
|
|
332
|
+
"kvcoder.config.workers.use": "استخدام {name}",
|
|
333
|
+
"kvcoder.config.workers.edit": "تعديل {name}",
|
|
334
|
+
"kvcoder.config.workers.remove": "إزالة {name}",
|
|
335
|
+
"kvcoder.config.workers.removeConfirm": "إزالة {name}؟",
|
|
336
|
+
"kvcoder.config.workers.removeYes": "إزالة",
|
|
337
|
+
"kvcoder.config.workers.cancel": "إلغاء",
|
|
338
|
+
"kvcoder.config.workers.saved": "تم حفظ المساعد {name}.",
|
|
339
|
+
"kvcoder.config.workers.removed": "تمت إزالة المساعد {name}.",
|
|
340
|
+
"kvcoder.config.workers.kind.subagent": "وكيل مساعد",
|
|
341
|
+
"kvcoder.config.workers.form.titleNew": "إضافة مساعد",
|
|
342
|
+
"kvcoder.config.workers.form.titleEdit": "تعديل {name}",
|
|
343
|
+
"kvcoder.config.workers.form.name": "الاسم",
|
|
344
|
+
"kvcoder.config.workers.form.nameHint": "الاسم الذي يستخدمه الوكيل: أحرف إنجليزية صغيرة وأرقام وشرطات، مثل reviewer.",
|
|
345
|
+
"kvcoder.config.workers.form.description": "الوصف",
|
|
346
|
+
"kvcoder.config.workers.form.descriptionHint": "الغرض من المساعد. يقرؤه الوكيل ليقرر متى يستخدمه.",
|
|
347
|
+
"kvcoder.config.workers.form.instructions": "التعليمات",
|
|
348
|
+
"kvcoder.config.workers.form.instructionsHint": "دور المساعد وقواعده، وتُضاف إلى تعليمات النظام الخاصة به. اتركها فارغة لمساعد عام.",
|
|
349
|
+
"kvcoder.config.workers.form.connectors": "الموصّلات",
|
|
350
|
+
"kvcoder.config.workers.form.connectorsHint": "ما يستطيع المساعد استخدامه. يستطيع دائمًا أن يسألك، ولا يسند العمل إلى غيره أبدًا.",
|
|
351
|
+
"kvcoder.config.workers.form.connectors.all": "الكل",
|
|
352
|
+
"kvcoder.config.workers.form.connectors.some": "هذه فقط",
|
|
353
|
+
"kvcoder.config.workers.form.model": "النموذج",
|
|
354
|
+
"kvcoder.config.workers.form.sameModel": "مثل المحادثة",
|
|
355
|
+
"kvcoder.config.workers.form.thinking": "التفكير",
|
|
356
|
+
"kvcoder.config.workers.form.sameThinking": "مثل المحادثة",
|
|
357
|
+
"kvcoder.config.workers.form.save": "حفظ",
|
|
358
|
+
"kvcoder.config.workers.invalid.nameEmpty": "أدخل اسمًا للمساعد.",
|
|
359
|
+
"kvcoder.config.workers.invalid.nameShape": "استخدم أحرفًا إنجليزية صغيرة وأرقامًا وشرطات، على أن يبدأ بحرف.",
|
|
360
|
+
"kvcoder.config.workers.invalid.nameTaken": "يوجد مساعد آخر بهذا الاسم.",
|
|
361
|
+
"kvcoder.config.workers.invalid.descriptionEmpty": "اذكر الغرض من المساعد.",
|
|
362
|
+
"kvcoder.config.workers.invalid.instructionsLong": "التعليمات أطول من 16 كيلوبايت.",
|
|
363
|
+
"kvcoder.config.workers.invalid.connectorsEmpty": "اختر موصّلًا واحدًا على الأقل، أو اختر الكل.",
|
|
364
|
+
"kvcoder.config.workers.kind.opencode": "opencode",
|
|
365
|
+
"kvcoder.config.workers.kind.pi": "pi",
|
|
366
|
+
"kvcoder.config.workers.kind.claude": "Claude Code",
|
|
367
|
+
"kvcoder.config.workers.checking": "جارٍ الفحص…",
|
|
368
|
+
"kvcoder.config.workers.notFound": "لم يُعثر على {program}",
|
|
369
|
+
"kvcoder.config.workers.recheck": "افحص مجددًا",
|
|
370
|
+
"kvcoder.config.workers.form.kind": "النوع",
|
|
371
|
+
"kvcoder.config.workers.form.kindHint": "الوكيل المساعد يعمل داخل kvman. والأنواع الأخرى تشغّل برنامجًا مثبتًا على هذا الحاسوب، يسجّل الدخول بطريقته.",
|
|
372
|
+
"kvcoder.config.workers.form.approval": "قبل التشغيل",
|
|
373
|
+
"kvcoder.config.workers.form.approval.ask": "اسألني",
|
|
374
|
+
"kvcoder.config.workers.form.approval.auto": "ابدأ فورًا",
|
|
375
|
+
"kvcoder.config.workers.form.approvalHint": "البرنامج يعدّل الملفات وينفّذ الأوامر بنفسه، دون أن يسألك مرة أخرى.",
|
|
376
|
+
"kvcoder.config.workers.form.minutes": "المهلة (بالدقائق)",
|
|
377
|
+
"kvcoder.config.workers.form.minutesHint": "من 1 إلى 120. التشغيل الذي يتجاوزها يُوقف.",
|
|
378
|
+
"kvcoder.config.workers.form.programDefault": "اتركه فارغًا لاستخدام الإعداد الافتراضي للبرنامج.",
|
|
379
|
+
"kvcoder.config.workers.form.agent": "الوكيل",
|
|
380
|
+
"kvcoder.config.workers.form.autoApprove": "السماح له بتنفيذ أفعاله دون موافقة (--auto)",
|
|
381
|
+
"kvcoder.config.workers.form.tools": "الأدوات",
|
|
382
|
+
"kvcoder.config.workers.form.toolsHint": "واحدة في كل سطر. اتركها فارغة لاستخدام أدوات البرنامج.",
|
|
383
|
+
"kvcoder.config.workers.form.effort": "مستوى الجهد",
|
|
384
|
+
"kvcoder.config.workers.form.permissionMode": "وضع الصلاحيات",
|
|
385
|
+
"kvcoder.config.workers.form.permissionModeHint": "كيف يتصرف البرنامج في تعديلاته وأوامره: هل ينفّذها مباشرة أم لا.",
|
|
386
|
+
"kvcoder.config.workers.invalid.minutes": "أدخل عددًا صحيحًا من الدقائق من 1 إلى 120.",
|
|
387
|
+
"kvcoder.config.workers.invalid.unattended": "المساعد الذي يبدأ فورًا لا يمكنه أيضًا تنفيذ أفعاله دون موافقة. اختر «اسألني»، أو إعدادًا أكثر تقييدًا أدناه.",
|
|
388
|
+
"kvcoder.config.connectors.changed.global": "تم تغييره",
|
|
389
|
+
"kvcoder.config.connectors.changed.workspace": "تم تغييره في {name}",
|
|
390
|
+
"kvcoder.config.connectors.reset.global": "استعادة الافتراضي",
|
|
391
|
+
"kvcoder.config.connectors.reset.workspace": "استخدام قائمة كل مساحات العمل",
|
|
392
|
+
"kvcoder.config.connectors.ownValue": "لمساحة العمل {name} قائمة خاصة بها. انتقل إلى {name} لتغييرها.",
|
|
393
|
+
"kvcoder.config.model.useDefault": "استخدام النموذج الافتراضي",
|
|
394
|
+
"kvcoder.config.model.default": "النموذج الافتراضي ({name})",
|
|
395
|
+
"kvcoder.config.model.defaultUnset": "النموذج الافتراضي",
|
|
396
|
+
"kvcoder.config.model.changed.global": "تم تغييره",
|
|
397
|
+
"kvcoder.config.model.changed.workspace": "تم تغييره في {name}",
|
|
398
|
+
"kvcoder.config.model.reset.global": "استعادة الافتراضي",
|
|
399
|
+
"kvcoder.config.model.reset.workspace": "استخدام قيمة كل مساحات العمل",
|
|
400
|
+
"kvcoder.config.model.ownValue": "لمساحة العمل {name} قيمة خاصة بها. انتقل إلى {name} لتغييرها.",
|
|
401
|
+
"kvcoder.ui.milliseconds": "{count} مللي ث",
|
|
402
|
+
"kvcoder.ui.minutesSeconds": "{minutes} د {seconds} ث",
|
|
403
|
+
"kvcoder.ui.callFailed": "فشل",
|
|
404
|
+
"kvcoder.ui.callParts": "كُتب في {written} · نُفّذ في {ran}",
|
|
405
|
+
"kvcoder.ui.callRan": "نُفّذ في {ran}",
|
|
406
|
+
"kvcoder.ui.showPrompt": "عرض التعليمات",
|
|
407
|
+
"kvcoder.ui.showChat": "العودة إلى المحادثة",
|
|
408
|
+
"kvcoder.ui.slash.title": "الأوامر",
|
|
409
|
+
"kvcoder.ui.slash.none": "لا يوجد أمر بهذا الاسم",
|
|
410
|
+
"kvcoder.ui.slash.compact": "تلخيص الرسائل السابقة الآن",
|
|
411
|
+
"kvcoder.ui.slash.export": "تنزيل هذه المحادثة بصيغة JSON",
|
|
412
|
+
"kvcoder.ui.slash.fork": "نسخ هذه المحادثة إلى محادثة جديدة",
|
|
413
|
+
"kvcoder.ui.slash.new": "بدء محادثة جديدة",
|
|
414
|
+
"kvcoder.ui.slash.prompt": "عرض التعليمات، أو العودة إلى المحادثة",
|
|
415
|
+
"kvcoder.ui.slash.rename": "إعادة تسمية هذه المحادثة",
|
|
416
|
+
"kvcoder.ui.slash.rename.argument": "العنوان",
|
|
417
|
+
"kvcoder.ui.slash.wait": "أرسل رسالة أولى لاستخدام الأوامر"
|
|
418
|
+
}
|