@agentprojectcontext/apx 1.81.0 → 1.89.1
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/package.json +9 -8
- package/skills/apc-context/SKILL.md +14 -7
- package/skills/apx/SKILL.md +62 -2
- package/skills/apx-mcp/SKILL.md +42 -15
- package/src/core/agent/a2a/peers.js +161 -0
- package/src/core/agent/a2a/reply.js +379 -27
- package/src/core/agent/abort.js +25 -0
- package/src/core/agent/agent-model.js +58 -0
- package/src/core/agent/agent-tools.js +101 -0
- package/src/core/agent/author-line.js +110 -0
- package/src/core/agent/build-agent-system.js +52 -18
- package/src/core/agent/channels/voice-context.js +17 -2
- package/src/core/agent/closing-floor.js +117 -0
- package/src/core/agent/constants.js +119 -11
- package/src/core/agent/engine-call.js +56 -0
- package/src/core/agent/group/run-group-turn.js +218 -0
- package/src/core/agent/group/turn-resolver.js +165 -0
- package/src/core/agent/judge.js +138 -11
- package/src/core/agent/loop/side-effects.js +106 -3
- package/src/core/agent/memory.js +31 -18
- package/src/core/agent/model-capabilities.js +47 -0
- package/src/core/agent/model-router.js +11 -40
- package/src/core/agent/prompt-builder.js +47 -0
- package/src/core/agent/prompts/channels/a2a.md +12 -0
- package/src/core/agent/prompts/channels/code.md +3 -1
- package/src/core/agent/prompts/channels/telegram.md +2 -0
- package/src/core/agent/prompts/channels/web_code.md +1 -1
- package/src/core/agent/prompts/channels/whatsapp.md +37 -0
- package/src/core/agent/prompts/core/agent-base.md +2 -0
- package/src/core/agent/prompts/discipline/action.md +1 -0
- package/src/core/agent/prompts/discipline/two-segment.md +2 -1
- package/src/core/agent/prompts/modes/mobility.md +36 -0
- package/src/core/agent/retry.js +42 -0
- package/src/core/agent/run-agent.js +322 -25
- package/src/core/agent/run-turn.js +253 -0
- package/src/core/agent/self-memory.js +18 -52
- package/src/core/agent/skills/agent-skills.js +118 -0
- package/src/core/agent/skills/catalog.js +1 -1
- package/src/core/agent/skills/declared.js +13 -0
- package/src/core/agent/skills/index-store.js +8 -1
- package/src/core/agent/skills/inspector.js +20 -3
- package/src/core/agent/skills/loader.js +18 -3
- package/src/core/agent/skills/media.js +121 -0
- package/src/core/agent/skills/origin.js +61 -0
- package/src/core/agent/skills/sections.js +136 -0
- package/src/core/agent/super-agent.js +54 -14
- package/src/core/agent/tools/handlers/_calendar.js +50 -0
- package/src/core/agent/tools/handlers/add-mcp.js +103 -0
- package/src/core/agent/tools/handlers/asana-create-task.js +3 -1
- package/src/core/agent/tools/handlers/attach-media.js +56 -0
- package/src/core/agent/tools/handlers/calendar-create-event.js +38 -0
- package/src/core/agent/tools/handlers/calendar-find-slot.js +39 -0
- package/src/core/agent/tools/handlers/calendar-list-events.js +39 -0
- package/src/core/agent/tools/handlers/calendar-update-event.js +35 -0
- package/src/core/agent/tools/handlers/call-agent.js +14 -6
- package/src/core/agent/tools/handlers/call-runtime.js +27 -49
- package/src/core/agent/tools/handlers/comment-task.js +78 -0
- package/src/core/agent/tools/handlers/complete-task.js +60 -0
- package/src/core/agent/tools/handlers/configure-agent.js +70 -0
- package/src/core/agent/tools/handlers/create-agent.js +68 -0
- package/src/core/agent/tools/handlers/create-task.js +41 -3
- package/src/core/agent/tools/handlers/import-agent.js +5 -5
- package/src/core/agent/tools/handlers/list-mcp-tools.js +83 -0
- package/src/core/agent/tools/handlers/list-routines.js +46 -0
- package/src/core/agent/tools/handlers/list-tasks.js +8 -1
- package/src/core/agent/tools/handlers/mark-commitment.js +57 -0
- package/src/core/agent/tools/handlers/read-skill.js +64 -0
- package/src/core/agent/tools/handlers/remember-routine.js +2 -8
- package/src/core/agent/tools/handlers/remember.js +82 -6
- package/src/core/agent/tools/handlers/remove-agent.js +42 -0
- package/src/core/agent/tools/handlers/run-routine.js +94 -0
- package/src/core/agent/tools/handlers/run-shell.js +44 -2
- package/src/core/agent/tools/handlers/send-telegram.js +41 -19
- package/src/core/agent/tools/handlers/set-agent-prompt.js +44 -0
- package/src/core/agent/tools/handlers/view-media.js +69 -0
- package/src/core/agent/tools/handlers/write-agent-memory.js +52 -0
- package/src/core/agent/tools/helpers.js +36 -4
- package/src/core/agent/tools/names.js +64 -0
- package/src/core/agent/tools/registry-bridge.js +24 -1
- package/src/core/agent/tools/registry.js +79 -0
- package/src/core/agent/tools/tool-call-parser.js +136 -13
- package/src/core/agent/vision-bridge.js +69 -0
- package/src/core/apc/agent-identity.js +74 -0
- package/src/core/apc/agent-rename-refs.js +187 -0
- package/src/core/apc/agent-write.js +312 -0
- package/src/core/apc/agents-vault.js +1 -1
- package/src/core/apc/blob-keys.js +42 -0
- package/src/core/apc/frontmatter.js +166 -10
- package/src/core/apc/parser.js +33 -83
- package/src/core/apc/paths.js +4 -6
- package/src/core/apc/project-memory.js +44 -0
- package/src/core/apc/projects-helpers.js +33 -0
- package/src/core/apc/scaffold.js +36 -16
- package/src/core/channels/telegram/ask-callbacks.js +103 -0
- package/src/core/channels/telegram/dispatch.js +154 -30
- package/src/core/channels/telegram/helpers.js +59 -7
- package/src/core/channels/telegram/inbound/audio.js +26 -30
- package/src/core/channels/telegram/inbound/file.js +22 -32
- package/src/core/channels/telegram/inbound/photo.js +24 -28
- package/src/core/channels/telegram/progress-gate.js +76 -0
- package/src/core/channels/telegram/reply.js +151 -43
- package/src/core/channels/telegram/voice-note.js +150 -0
- package/src/core/config/index.js +53 -54
- package/src/core/config/paths.js +117 -31
- package/src/core/config/redact.js +89 -4
- package/src/core/config/secret-values.js +2 -4
- package/src/core/constants/actors.js +5 -0
- package/src/core/constants/channels.js +3 -1
- package/src/core/constants/task-categories.js +73 -0
- package/src/core/constants/task-fields.js +28 -0
- package/src/core/engines/_globs.js +33 -0
- package/src/core/engines/anthropic.js +19 -1
- package/src/core/engines/catalog.js +20 -0
- package/src/core/engines/gemini.js +84 -16
- package/src/core/engines/index.js +19 -3
- package/src/core/engines/mock.js +145 -1
- package/src/core/engines/openai-compatible.js +150 -15
- package/src/core/engines/presets.js +36 -9
- package/src/core/engines/zen.js +131 -0
- package/src/core/events/bus.js +140 -0
- package/src/core/events/mascot-notify.js +156 -0
- package/src/core/http-tools/browser.js +366 -36
- package/src/core/http-tools/catalog.js +206 -22
- package/src/core/http-tools/grep.js +62 -7
- package/src/core/http-tools/registry.js +3 -1
- package/src/core/i18n/en.js +34 -3
- package/src/core/i18n/es.js +36 -4
- package/src/core/i18n/index.js +5 -5
- package/src/core/i18n/pt.js +32 -3
- package/src/core/identity/self.js +14 -1
- package/src/core/images/engines/a1111.js +219 -0
- package/src/core/images/engines/index.js +187 -0
- package/src/core/images/engines/mock.js +74 -0
- package/src/core/images/engines/openai.js +130 -0
- package/src/core/images/engines/sdcpp.js +204 -0
- package/src/core/images/engines/shared.js +218 -0
- package/src/core/images/generate.js +260 -0
- package/src/core/integrations/catalog.js +8 -3
- package/src/core/integrations/plugins/_google-oauth.js +179 -0
- package/src/core/integrations/plugins/asana.js +7 -3
- package/src/core/integrations/plugins/calendar.js +404 -0
- package/src/core/integrations/store.js +2 -0
- package/src/core/memory/broker.js +16 -1
- package/src/core/memory/compactor.js +19 -3
- package/src/core/memory/consolidate.js +2 -2
- package/src/core/memory/dated-log.js +66 -0
- package/src/core/memory/embed-engines/custom.js +59 -0
- package/src/core/memory/embed-engines/gemini.js +9 -3
- package/src/core/memory/embed-engines/index.js +87 -15
- package/src/core/memory/embeddings.js +52 -24
- package/src/core/memory/index.js +13 -3
- package/src/core/memory/indexer.js +83 -27
- package/src/core/memory/prune.js +182 -0
- package/src/core/memory/store.js +22 -0
- package/src/core/memory/summarizer.js +72 -8
- package/src/core/mobility/answer.js +80 -0
- package/src/core/mobility/geofence.js +667 -0
- package/src/core/mobility/osm-route.js +282 -0
- package/src/core/mobility/preferences.js +91 -0
- package/src/core/mobility/state.js +245 -0
- package/src/core/mobility/trip-event.js +384 -0
- package/src/core/net/tailscale.js +168 -0
- package/src/core/profiles/bundled/secretary/PROFILE.md +32 -42
- package/src/core/profiles/bundled/secretary/config.schema.es.json +68 -0
- package/src/core/profiles/bundled/secretary/config.schema.json +30 -2
- package/src/core/profiles/bundled/secretary/profile.json +3 -1
- package/src/core/profiles/bundled/secretary/routines/a2a-sweep.json +20 -0
- package/src/core/profiles/bundled/secretary/routines/day-close.json +4 -1
- package/src/core/profiles/bundled/secretary/routines/day-open.json +7 -1
- package/src/core/profiles/bundled/secretary/routines/watch.json +13 -2
- package/src/core/profiles/lifecycle.js +243 -19
- package/src/core/profiles/paths.js +12 -0
- package/src/core/profiles/store.js +47 -0
- package/src/core/routines/active-runs.js +213 -0
- package/src/core/routines/delivery.js +612 -0
- package/src/core/routines/header.js +88 -0
- package/src/core/routines/index.js +26 -0
- package/src/core/routines/run-log.js +78 -0
- package/src/core/routines/runner.js +629 -66
- package/src/core/routines/signals.js +75 -0
- package/src/core/runtime-skills/apc-context/SKILL.md +14 -7
- package/src/core/runtime-skills/apx/SKILL.md +93 -1
- package/src/core/runtime-skills/apx-agency-agents/SKILL.md +2 -2
- package/src/core/runtime-skills/apx-agent/SKILL.md +134 -19
- package/src/core/runtime-skills/apx-commitment/SKILL.md +21 -11
- package/src/core/runtime-skills/apx-image/SKILL.md +60 -0
- package/src/core/runtime-skills/apx-integrations/SKILL.md +82 -0
- package/src/core/runtime-skills/apx-mcp/SKILL.md +45 -14
- package/src/core/runtime-skills/apx-mcp-builder/SKILL.md +4 -4
- package/src/core/runtime-skills/apx-profile/SKILL.md +27 -2
- package/src/core/runtime-skills/apx-project/SKILL.md +23 -2
- package/src/core/runtime-skills/apx-routine/SKILL.md +40 -17
- package/src/core/runtime-skills/apx-runtime/SKILL.md +124 -14
- package/src/core/runtime-skills/apx-sessions/SKILL.md +7 -6
- package/src/core/runtime-skills/apx-skill-builder/SKILL.md +15 -13
- package/src/core/runtime-skills/apx-task/SKILL.md +79 -26
- package/src/core/runtime-skills/apx-telegram/SKILL.md +12 -12
- package/src/core/runtime-skills/apx-transcribe/SKILL.md +56 -0
- package/src/core/runtime-skills/apx-voice/SKILL.md +27 -8
- package/src/core/runtime-skills/claude-code/SKILL.md +8 -0
- package/src/core/runtime-skills/openrouter/SKILL.md +8 -2
- package/src/core/runtimes/_spawn.js +9 -1
- package/src/core/runtimes/claude-code.js +11 -2
- package/src/core/runtimes/codex.js +44 -10
- package/src/core/runtimes/index.js +17 -2
- package/src/core/runtimes/opencode.js +88 -9
- package/src/core/runtimes/outcome.js +119 -0
- package/src/core/sessions/index.js +193 -1
- package/src/core/stores/agent-inbox.js +109 -23
- package/src/core/stores/code-sessions.js +21 -0
- package/src/core/stores/commitments.js +27 -3
- package/src/core/stores/conversations.js +220 -20
- package/src/core/stores/deliveries.js +177 -0
- package/src/core/stores/media-archive.js +228 -0
- package/src/core/stores/messages.js +1096 -112
- package/src/core/stores/organization.js +34 -0
- package/src/core/stores/project-memory.js +71 -0
- package/src/core/stores/routine-memory.js +16 -8
- package/src/core/stores/routines.js +27 -49
- package/src/core/stores/sessions.js +4 -8
- package/src/core/stores/tasks.js +212 -18
- package/src/core/stores/turn-record.js +209 -0
- package/src/core/tasks/columns.js +136 -0
- package/src/core/tasks/comment-turn.js +258 -0
- package/src/core/util/time.js +13 -0
- package/src/core/voice/engines/index.js +54 -1
- package/src/core/voice/engines/openai.js +50 -4
- package/src/core/voice/opus.js +67 -0
- package/src/core/voice/pronounceable.js +43 -0
- package/src/core/voice/transcription.js +4 -0
- package/src/core/voice/tts.js +114 -24
- package/src/host/daemon/active-turns.js +188 -0
- package/src/host/daemon/api/admin-config.js +9 -0
- package/src/host/daemon/api/agents.js +99 -90
- package/src/host/daemon/api/artifact-preview.js +7 -6
- package/src/host/daemon/api/artifacts.js +3 -2
- package/src/host/daemon/api/code.js +55 -9
- package/src/host/daemon/api/commitments.js +11 -0
- package/src/host/daemon/api/confirm.js +3 -2
- package/src/host/daemon/api/conversations.js +543 -35
- package/src/host/daemon/api/deck.js +9 -8
- package/src/host/daemon/api/deliveries.js +33 -0
- package/src/host/daemon/api/desktop.js +5 -4
- package/src/host/daemon/api/embeddings.js +15 -6
- package/src/host/daemon/api/engines.js +59 -8
- package/src/host/daemon/api/exec.js +437 -121
- package/src/host/daemon/api/groups.js +215 -0
- package/src/host/daemon/api/images.js +107 -0
- package/src/host/daemon/api/inbox.js +123 -2
- package/src/host/daemon/api/integrations.js +64 -2
- package/src/host/daemon/api/mcps.js +7 -6
- package/src/host/daemon/api/media.js +283 -0
- package/src/host/daemon/api/mobility.js +177 -0
- package/src/host/daemon/api/net.js +182 -0
- package/src/host/daemon/api/pairing.js +38 -5
- package/src/host/daemon/api/profiles.js +30 -2
- package/src/host/daemon/api/routines.js +36 -4
- package/src/host/daemon/api/runtimes.js +74 -39
- package/src/host/daemon/api/sessions-search.js +7 -2
- package/src/host/daemon/api/sessions.js +44 -2
- package/src/host/daemon/api/shared.js +127 -20
- package/src/host/daemon/api/skills.js +11 -4
- package/src/host/daemon/api/super-agent.js +384 -53
- package/src/host/daemon/api/tasks.js +180 -10
- package/src/host/daemon/api/telegram.js +11 -10
- package/src/host/daemon/api/thread-faces.js +159 -0
- package/src/host/daemon/api/top-level.js +3 -3
- package/src/host/daemon/api/transcribe.js +11 -10
- package/src/host/daemon/api/tts.js +97 -4
- package/src/host/daemon/api/turn-abort.js +23 -0
- package/src/host/daemon/api/turns.js +49 -0
- package/src/host/daemon/api/voice.js +5 -4
- package/src/host/daemon/api/web.js +98 -0
- package/src/host/daemon/api.js +39 -0
- package/src/host/daemon/delivery-sweep.js +58 -0
- package/src/host/daemon/desktop-ws.js +5 -23
- package/src/host/daemon/events-ws.js +273 -0
- package/src/host/daemon/index.js +59 -15
- package/src/host/daemon/plugins/desktop/index.js +17 -4
- package/src/host/daemon/plugins/telegram/index.js +78 -40
- package/src/host/daemon/pty-bridge.py +99 -0
- package/src/host/daemon/routines-scheduler.js +1 -0
- package/src/host/daemon/smoke.js +1 -2
- package/src/host/daemon/terminal-ws.js +132 -0
- package/src/host/daemon/tts-keepwarm.js +87 -0
- package/src/host/daemon/wakeup.js +11 -6
- package/src/host/daemon/whisper-server.js +44 -0
- package/src/host/daemon/whisper-server.py +70 -13
- package/src/host/daemon/ws-auth.js +28 -0
- package/src/interfaces/android/app/build.gradle +42 -0
- package/src/interfaces/android/app/proguard-rules.pro +4 -0
- package/src/interfaces/android/app/src/main/AndroidManifest.xml +139 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/AlertScreen.java +139 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/AndroidAutoDetector.java +106 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/ApxCarAppService.java +57 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/ApxPreferences.java +165 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/CarAlertStore.java +84 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/CarMessageActionReceiver.java +47 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/CarMessageNotification.java +152 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/DaemonAddress.java +35 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/DaemonClient.java +339 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/DeviceLocation.java +38 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/ErrandScreen.java +127 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MainActivity.java +872 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MapsNavigationDetector.java +63 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MapsNavigationListenerService.java +453 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MapsShareIntentParser.java +93 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MascotBlobCatalog.java +66 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MascotOverlayService.java +448 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MascotView.java +249 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MessageFrameParser.java +240 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/NotifyChannels.java +69 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/ProximityActionReceiver.java +78 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/ProximityNotification.java +161 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/StartupReceiver.java +57 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/TravelEventGate.java +62 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/TravelStatusBanner.java +116 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/TripLocationService.java +272 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/TripPlacesSheet.java +203 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/TripScreen.java +182 -0
- package/src/interfaces/android/app/src/main/res/drawable/app_background.xml +12 -0
- package/src/interfaces/android/app/src/main/res/drawable/ic_apx_app.xml +10 -0
- package/src/interfaces/android/app/src/main/res/drawable/ic_apx_launcher_foreground.xml +12 -0
- package/src/interfaces/android/app/src/main/res/drawable/ic_apx_notification.xml +22 -0
- package/src/interfaces/android/app/src/main/res/drawable/ic_trip_car.xml +37 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/apx_logo.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_amatista.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_aqua.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_brasa.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_campana.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_caracol.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_carbon.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_cobalto.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_cometa.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_coral.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_cubi.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_eclipse.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_faro.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_gajo.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_iris.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_kiwi.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_laguna.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_lila.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_menta.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_nimbo.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_noche.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_onyx.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_orbita.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_ovni.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_papa.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_parche.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_peon.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_perla.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_pino.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_quad.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_rubi.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_saturno.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_trebol.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_trino.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_volcan.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_zafiro.png +0 -0
- package/src/interfaces/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
- package/src/interfaces/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
- package/src/interfaces/android/app/src/main/res/raw/apx_notification.mp3 +0 -0
- package/src/interfaces/android/app/src/main/res/values/colors.xml +4 -0
- package/src/interfaces/android/app/src/main/res/values/strings.xml +25 -0
- package/src/interfaces/android/app/src/main/res/values/styles.xml +10 -0
- package/src/interfaces/android/app/src/main/res/values-v31/styles.xml +14 -0
- package/src/interfaces/android/app/src/main/res/xml/automotive_app_desc.xml +9 -0
- package/src/interfaces/android/app/src/main/res/xml/network_security_config.xml +10 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/AndroidAutoDetectorTest.java +85 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/CarAlertStoreTest.java +104 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/DaemonAddressTest.java +23 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/MapsNavigationDetectorTest.java +69 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/MapsShareIntentParserTest.java +31 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/MessageFrameParserTest.java +180 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/TravelEventGateTest.java +64 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/TripPlacesSheetTest.java +66 -0
- package/src/interfaces/android/build.gradle +3 -0
- package/src/interfaces/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/src/interfaces/android/gradle/wrapper/gradle-wrapper.properties +9 -0
- package/src/interfaces/android/gradle.properties +3 -0
- package/src/interfaces/android/gradlew +248 -0
- package/src/interfaces/android/gradlew.bat +82 -0
- package/src/interfaces/android/settings.gradle +18 -0
- package/src/interfaces/cli/commands/a2a.js +145 -4
- package/src/interfaces/cli/commands/agent.js +247 -22
- package/src/interfaces/cli/commands/code.js +1 -1
- package/src/interfaces/cli/commands/commitment.js +5 -0
- package/src/interfaces/cli/commands/config.js +85 -6
- package/src/interfaces/cli/commands/exec.js +90 -1
- package/src/interfaces/cli/commands/image.js +314 -0
- package/src/interfaces/cli/commands/mcp.js +87 -23
- package/src/interfaces/cli/commands/memory.js +35 -22
- package/src/interfaces/cli/commands/panel.js +94 -0
- package/src/interfaces/cli/commands/profile.js +14 -0
- package/src/interfaces/cli/commands/project.js +29 -0
- package/src/interfaces/cli/commands/routine.js +45 -10
- package/src/interfaces/cli/commands/runtime.js +30 -7
- package/src/interfaces/cli/commands/session.js +90 -38
- package/src/interfaces/cli/commands/sessions.js +35 -2
- package/src/interfaces/cli/commands/skills.js +15 -9
- package/src/interfaces/cli/commands/status.js +2 -3
- package/src/interfaces/cli/commands/task.js +54 -5
- package/src/interfaces/cli/commands/telegram.js +12 -4
- package/src/interfaces/cli/commands/transcribe.js +177 -0
- package/src/interfaces/cli/help/index.js +311 -72
- package/src/interfaces/cli/http.js +61 -13
- package/src/interfaces/cli/index.js +1 -1
- package/src/interfaces/cli/routes/agent.js +5 -4
- package/src/interfaces/cli/routes/commitment.js +3 -2
- package/src/interfaces/cli/routes/config.js +7 -2
- package/src/interfaces/cli/routes/image.js +11 -0
- package/src/interfaces/cli/routes/index.js +2 -0
- package/src/interfaces/cli/routes/log.js +1 -1
- package/src/interfaces/cli/routes/memory.js +3 -2
- package/src/interfaces/cli/routes/panel.js +15 -2
- package/src/interfaces/cli/routes/profile.js +3 -2
- package/src/interfaces/cli/routes/transcribe.js +10 -0
- package/src/interfaces/cli/stdin.js +29 -0
- package/src/interfaces/desktop/assets/blobs/amatista.png +0 -0
- package/src/interfaces/desktop/assets/blobs/aqua.png +0 -0
- package/src/interfaces/desktop/assets/blobs/brasa.png +0 -0
- package/src/interfaces/desktop/assets/blobs/campana.png +0 -0
- package/src/interfaces/desktop/assets/blobs/caracol.png +0 -0
- package/src/interfaces/desktop/assets/blobs/carbon.png +0 -0
- package/src/interfaces/desktop/assets/blobs/cobalto.png +0 -0
- package/src/interfaces/desktop/assets/blobs/cometa.png +0 -0
- package/src/interfaces/desktop/assets/blobs/coral.png +0 -0
- package/src/interfaces/desktop/assets/blobs/cubi.png +0 -0
- package/src/interfaces/desktop/assets/blobs/eclipse.png +0 -0
- package/src/interfaces/desktop/assets/blobs/faro.png +0 -0
- package/src/interfaces/desktop/assets/blobs/gajo.png +0 -0
- package/src/interfaces/desktop/assets/blobs/iris.png +0 -0
- package/src/interfaces/desktop/assets/blobs/kiwi.png +0 -0
- package/src/interfaces/desktop/assets/blobs/laguna.png +0 -0
- package/src/interfaces/desktop/assets/blobs/lila.png +0 -0
- package/src/interfaces/desktop/assets/blobs/menta.png +0 -0
- package/src/interfaces/desktop/assets/blobs/nimbo.png +0 -0
- package/src/interfaces/desktop/assets/blobs/noche.png +0 -0
- package/src/interfaces/desktop/assets/blobs/onyx.png +0 -0
- package/src/interfaces/desktop/assets/blobs/orbita.png +0 -0
- package/src/interfaces/desktop/assets/blobs/ovni.png +0 -0
- package/src/interfaces/desktop/assets/blobs/papa.png +0 -0
- package/src/interfaces/desktop/assets/blobs/parche.png +0 -0
- package/src/interfaces/desktop/assets/blobs/peon.png +0 -0
- package/src/interfaces/desktop/assets/blobs/perla.png +0 -0
- package/src/interfaces/desktop/assets/blobs/pino.png +0 -0
- package/src/interfaces/desktop/assets/blobs/quad.png +0 -0
- package/src/interfaces/desktop/assets/blobs/rubi.png +0 -0
- package/src/interfaces/desktop/assets/blobs/saturno.png +0 -0
- package/src/interfaces/desktop/assets/blobs/trebol.png +0 -0
- package/src/interfaces/desktop/assets/blobs/trino.png +0 -0
- package/src/interfaces/desktop/assets/blobs/volcan.png +0 -0
- package/src/interfaces/desktop/assets/blobs/zafiro.png +0 -0
- package/src/interfaces/desktop/assets/notification.mp3 +0 -0
- package/src/interfaces/desktop/main.js +473 -29
- package/src/interfaces/desktop/mascot-blobs.js +41 -0
- package/src/interfaces/desktop/mascot-preload.js +32 -0
- package/src/interfaces/desktop/mascot.css +186 -0
- package/src/interfaces/desktop/mascot.html +40 -0
- package/src/interfaces/desktop/mascot.js +163 -0
- package/src/interfaces/desktop/preload.js +10 -0
- package/src/interfaces/desktop/renderer.js +308 -48
- package/src/interfaces/desktop/style.css +34 -0
- package/src/interfaces/mcp-server/index.js +87 -0
- package/src/interfaces/tui/_shims/util-locale.ts +0 -2
- package/src/interfaces/tui/app.tsx +0 -6
- package/src/interfaces/tui/attach.ts +0 -1
- package/src/interfaces/tui/context/sdk-apx.tsx +0 -4
- package/src/interfaces/tui/plugin/api.tsx +0 -3
- package/src/interfaces/tui/plugin/runtime.ts +0 -3
- package/src/interfaces/tui/thread.ts +0 -16
- package/src/interfaces/web/README.md +22 -14
- package/src/interfaces/web/dist/assets/claude-XtpLmGtF.webp +0 -0
- package/src/interfaces/web/dist/assets/codex-DExPUgvh.webp +0 -0
- package/src/interfaces/web/dist/assets/index-BEoRgIqd.css +32 -0
- package/src/interfaces/web/dist/assets/index-BEoRgIqd.css.br +0 -0
- package/src/interfaces/web/dist/assets/index-BEoRgIqd.css.gz +0 -0
- package/src/interfaces/web/dist/assets/index-C6fXHc1p.js +1074 -0
- package/src/interfaces/web/dist/assets/index-C6fXHc1p.js.br +0 -0
- package/src/interfaces/web/dist/assets/index-C6fXHc1p.js.gz +0 -0
- package/src/interfaces/web/dist/assets/index-C6fXHc1p.js.map +1 -0
- package/src/interfaces/web/dist/assets/index-C6fXHc1p.js.map.br +0 -0
- package/src/interfaces/web/dist/assets/index-C6fXHc1p.js.map.gz +0 -0
- package/src/interfaces/web/dist/favicon/dark/site.webmanifest +12 -6
- package/src/interfaces/web/dist/favicon/white/site.webmanifest +12 -6
- package/src/interfaces/web/dist/index.html +22 -6
- package/src/interfaces/web/dist/index.html.br +0 -0
- package/src/interfaces/web/dist/index.html.gz +0 -0
- package/src/interfaces/web/dist/manifest.webmanifest +25 -0
- package/src/interfaces/web/dist/modules/blobs/amatista.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/aqua.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/brasa.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/campana.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/caracol.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/carbon.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/cobalto.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/cometa.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/coral.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/cubi.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/eclipse.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/faro.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/gajo.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/iris.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/kiwi.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/laguna.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/lila.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/menta.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/nimbo.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/noche.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/onyx.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/orbita.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/ovni.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/papa.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/parche.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/peon.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/perla.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/pino.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/quad.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/rubi.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/saturno.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/trebol.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/trino.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/volcan.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/zafiro.png +0 -0
- package/src/interfaces/web/dist/sw.js +106 -0
- package/src/interfaces/web/dist/sw.js.br +0 -0
- package/src/interfaces/web/dist/sw.js.gz +0 -0
- package/src/interfaces/web/eslint.config.js +83 -0
- package/src/interfaces/web/index.html +20 -4
- package/src/interfaces/web/package-lock.json +1651 -1280
- package/src/interfaces/web/package.json +9 -10
- package/src/interfaces/web/pnpm-lock.yaml +867 -869
- package/src/interfaces/web/public/favicon/dark/site.webmanifest +12 -6
- package/src/interfaces/web/public/favicon/white/site.webmanifest +12 -6
- package/src/interfaces/web/public/manifest.webmanifest +25 -0
- package/src/interfaces/web/public/modules/blobs/amatista.png +0 -0
- package/src/interfaces/web/public/modules/blobs/aqua.png +0 -0
- package/src/interfaces/web/public/modules/blobs/brasa.png +0 -0
- package/src/interfaces/web/public/modules/blobs/campana.png +0 -0
- package/src/interfaces/web/public/modules/blobs/caracol.png +0 -0
- package/src/interfaces/web/public/modules/blobs/carbon.png +0 -0
- package/src/interfaces/web/public/modules/blobs/cobalto.png +0 -0
- package/src/interfaces/web/public/modules/blobs/cometa.png +0 -0
- package/src/interfaces/web/public/modules/blobs/coral.png +0 -0
- package/src/interfaces/web/public/modules/blobs/cubi.png +0 -0
- package/src/interfaces/web/public/modules/blobs/eclipse.png +0 -0
- package/src/interfaces/web/public/modules/blobs/faro.png +0 -0
- package/src/interfaces/web/public/modules/blobs/gajo.png +0 -0
- package/src/interfaces/web/public/modules/blobs/iris.png +0 -0
- package/src/interfaces/web/public/modules/blobs/kiwi.png +0 -0
- package/src/interfaces/web/public/modules/blobs/laguna.png +0 -0
- package/src/interfaces/web/public/modules/blobs/lila.png +0 -0
- package/src/interfaces/web/public/modules/blobs/menta.png +0 -0
- package/src/interfaces/web/public/modules/blobs/nimbo.png +0 -0
- package/src/interfaces/web/public/modules/blobs/noche.png +0 -0
- package/src/interfaces/web/public/modules/blobs/onyx.png +0 -0
- package/src/interfaces/web/public/modules/blobs/orbita.png +0 -0
- package/src/interfaces/web/public/modules/blobs/ovni.png +0 -0
- package/src/interfaces/web/public/modules/blobs/papa.png +0 -0
- package/src/interfaces/web/public/modules/blobs/parche.png +0 -0
- package/src/interfaces/web/public/modules/blobs/peon.png +0 -0
- package/src/interfaces/web/public/modules/blobs/perla.png +0 -0
- package/src/interfaces/web/public/modules/blobs/pino.png +0 -0
- package/src/interfaces/web/public/modules/blobs/quad.png +0 -0
- package/src/interfaces/web/public/modules/blobs/rubi.png +0 -0
- package/src/interfaces/web/public/modules/blobs/saturno.png +0 -0
- package/src/interfaces/web/public/modules/blobs/trebol.png +0 -0
- package/src/interfaces/web/public/modules/blobs/trino.png +0 -0
- package/src/interfaces/web/public/modules/blobs/volcan.png +0 -0
- package/src/interfaces/web/public/modules/blobs/zafiro.png +0 -0
- package/src/interfaces/web/public/sw.js +106 -0
- package/src/interfaces/web/src/App.tsx +106 -10
- package/src/interfaces/web/src/assets/cli/claude.webp +0 -0
- package/src/interfaces/web/src/assets/cli/codex.webp +0 -0
- package/src/interfaces/web/src/assets/cli/cursor.svg +1 -0
- package/src/interfaces/web/src/assets/cli/opencode.png +0 -0
- package/src/interfaces/web/src/components/Combobox.tsx +201 -0
- package/src/interfaces/web/src/components/MobileHint.tsx +95 -0
- package/src/interfaces/web/src/components/MobileLinkDialog.tsx +156 -0
- package/src/interfaces/web/src/components/ModelCombobox.tsx +21 -113
- package/src/interfaces/web/src/components/{routines/ReadOnlyBlock.tsx → ReadOnlyBlock.tsx} +13 -4
- package/src/interfaces/web/src/components/Roby.tsx +5 -3
- package/src/interfaces/web/src/components/RobyBubble.tsx +23 -5
- package/src/interfaces/web/src/components/RowMenu.tsx +46 -0
- package/src/interfaces/web/src/components/TimezoneSelect.tsx +4 -1
- package/src/interfaces/web/src/components/Toast.tsx +50 -14
- package/src/interfaces/web/src/components/UiSelect.tsx +12 -5
- package/src/interfaces/web/src/components/agents/AgentAvatar.tsx +171 -0
- package/src/interfaces/web/src/components/agents/AgentFormFields.tsx +42 -11
- package/src/interfaces/web/src/components/agents/AgentModelBadge.tsx +157 -0
- package/src/interfaces/web/src/components/agents/AgentModelSelect.tsx +57 -0
- package/src/interfaces/web/src/components/agents/AgentSkillsPicker.tsx +115 -0
- package/src/interfaces/web/src/components/agents/BlobAvatar.tsx +50 -0
- package/src/interfaces/web/src/components/agents/blobPresets.ts +50 -0
- package/src/interfaces/web/src/components/agents/modelCatalog.ts +66 -0
- package/src/interfaces/web/src/components/chat/ActionGroup.tsx +162 -0
- package/src/interfaces/web/src/components/chat/AskAnswersCard.tsx +4 -3
- package/src/interfaces/web/src/components/chat/AskQuestionsCard.tsx +1 -1
- package/src/interfaces/web/src/components/chat/Attachment.tsx +220 -0
- package/src/interfaces/web/src/components/chat/ChatList.tsx +226 -51
- package/src/interfaces/web/src/components/chat/ChatRowActivity.tsx +45 -0
- package/src/interfaces/web/src/components/chat/Composer.tsx +672 -23
- package/src/interfaces/web/src/components/chat/ComposerCommands.tsx +175 -0
- package/src/interfaces/web/src/components/chat/ComposerSuggest.tsx +215 -0
- package/src/interfaces/web/src/components/chat/ContextBar.tsx +133 -65
- package/src/interfaces/web/src/components/chat/InlineAskPanel.tsx +107 -47
- package/src/interfaces/web/src/components/chat/MessageBubble.tsx +460 -119
- package/src/interfaces/web/src/components/chat/MessageList.tsx +165 -18
- package/src/interfaces/web/src/components/chat/ReasoningBlock.tsx +58 -0
- package/src/interfaces/web/src/components/chat/SessionPicker.tsx +182 -0
- package/src/interfaces/web/src/components/chat/SkillTrace.tsx +183 -0
- package/src/interfaces/web/src/components/chat/ToolCall.tsx +11 -11
- package/src/interfaces/web/src/components/code/CodeContextTab.tsx +87 -53
- package/src/interfaces/web/src/components/code/CodeFileTree.tsx +11 -52
- package/src/interfaces/web/src/components/code/CodeFileViewer.tsx +5 -4
- package/src/interfaces/web/src/components/code/CodeProjectPicker.tsx +31 -7
- package/src/interfaces/web/src/components/code/CodeSessionList.tsx +32 -11
- package/src/interfaces/web/src/components/code/CodeSidePanel.tsx +33 -3
- package/src/interfaces/web/src/components/code/CodeTerminal.tsx +5 -4
- package/src/interfaces/web/src/components/code/NewCodeSessionDialog.tsx +164 -0
- package/src/interfaces/web/src/components/commitments/CommitmentDetail.tsx +162 -0
- package/src/interfaces/web/src/components/commitments/CommitmentFormDialog.tsx +158 -0
- package/src/interfaces/web/src/components/commitments/CommitmentList.tsx +194 -0
- package/src/interfaces/web/src/components/commitments/commitmentState.tsx +46 -0
- package/src/interfaces/web/src/components/common/BulkActionBar.tsx +60 -0
- package/src/interfaces/web/src/components/common/ConfirmDialog.tsx +4 -1
- package/src/interfaces/web/src/components/common/SelectCheckbox.tsx +40 -0
- package/src/interfaces/web/src/components/common/TabNav.tsx +1 -1
- package/src/interfaces/web/src/components/cron/CronPicker.tsx +1 -1
- package/src/interfaces/web/src/components/files/FileBrowser.tsx +1 -1
- package/src/interfaces/web/src/components/files/FileTree.tsx +6 -4
- package/src/interfaces/web/src/components/files/FileViewer.tsx +9 -5
- package/src/interfaces/web/src/components/files/MarkdownPreview.tsx +45 -9
- package/src/interfaces/web/src/components/images/ImageDefaultsCard.tsx +93 -0
- package/src/interfaces/web/src/components/images/ImageProviderList.tsx +142 -0
- package/src/interfaces/web/src/components/images/ImageProviderModal.tsx +263 -0
- package/src/interfaces/web/src/components/images/ImageTestCard.tsx +142 -0
- package/src/interfaces/web/src/components/inbox/ChannelFilter.tsx +178 -0
- package/src/interfaces/web/src/components/inbox/InboxList.tsx +77 -81
- package/src/interfaces/web/src/components/inbox/InboxRowItem.tsx +140 -0
- package/src/interfaces/web/src/components/integrations/ComingSoonPlugin.tsx +2 -2
- package/src/interfaces/web/src/components/integrations/PluginConnect.tsx +208 -30
- package/src/interfaces/web/src/components/integrations/PluginToolsSection.tsx +1 -1
- package/src/interfaces/web/src/components/layout/ProjectAvatar.tsx +39 -24
- package/src/interfaces/web/src/components/layout/ProjectSidebar.tsx +253 -58
- package/src/interfaces/web/src/components/memory/MemoryBrowser.tsx +94 -47
- package/src/interfaces/web/src/components/routines/ExecutionsList.tsx +202 -90
- package/src/interfaces/web/src/components/routines/RoutineDetail.tsx +28 -6
- package/src/interfaces/web/src/components/routines/RoutineEditor.tsx +16 -5
- package/src/interfaces/web/src/components/routines/RoutineList.tsx +49 -9
- package/src/interfaces/web/src/components/routines/VarTextarea.tsx +1 -1
- package/src/interfaces/web/src/components/routines/runChat.ts +121 -0
- package/src/interfaces/web/src/components/sessions/SessionDetail.tsx +148 -0
- package/src/interfaces/web/src/components/sessions/SessionTerminal.tsx +98 -0
- package/src/interfaces/web/src/components/settings/AccessPanel.tsx +205 -0
- package/src/interfaces/web/src/components/settings/DefaultRouterCard.tsx +246 -101
- package/src/interfaces/web/src/components/settings/DesktopSettingsPanel.tsx +36 -2
- package/src/interfaces/web/src/components/settings/DevicesPanel.tsx +19 -6
- package/src/interfaces/web/src/components/settings/EmbedProviderList.tsx +274 -0
- package/src/interfaces/web/src/components/settings/EnginesPanel.tsx +26 -6
- package/src/interfaces/web/src/components/settings/MemoryPanel.tsx +118 -119
- package/src/interfaces/web/src/components/settings/NudgePanel.tsx +4 -3
- package/src/interfaces/web/src/components/settings/PairDeviceDialog.tsx +15 -4
- package/src/interfaces/web/src/components/settings/PanelPrefs.tsx +374 -0
- package/src/interfaces/web/src/components/settings/ProfilePanel.tsx +70 -2
- package/src/interfaces/web/src/components/settings/RoutingPanel.tsx +2 -1
- package/src/interfaces/web/src/components/settings/SkillsInspectorPanel.tsx +102 -43
- package/src/interfaces/web/src/components/settings/SkillsManager.tsx +76 -21
- package/src/interfaces/web/src/components/settings/SkillsSettings.tsx +10 -3
- package/src/interfaces/web/src/components/settings/SuperAgentPanel.tsx +8 -0
- package/src/interfaces/web/src/components/settings/TelegramChannelsPanel.tsx +11 -2
- package/src/interfaces/web/src/components/settings/TelegramContactsPanel.tsx +19 -8
- package/src/interfaces/web/src/components/settings/TelegramRolesPanel.tsx +12 -2
- package/src/interfaces/web/src/components/settings/WebPanel.tsx +22 -31
- package/src/interfaces/web/src/components/settings/providers/ProviderCard.tsx +15 -3
- package/src/interfaces/web/src/components/settings/providers/ProviderModal.tsx +97 -66
- package/src/interfaces/web/src/components/settings/providers/ProviderTestDialog.tsx +150 -0
- package/src/interfaces/web/src/components/settings/providers/typeStyles.ts +67 -25
- package/src/interfaces/web/src/components/settings/providers/types.ts +3 -0
- package/src/interfaces/web/src/components/tasks/TaskBoard.tsx +201 -0
- package/src/interfaces/web/src/components/tasks/TaskColumnsDialog.tsx +243 -0
- package/src/interfaces/web/src/components/tasks/TaskComments.tsx +167 -0
- package/src/interfaces/web/src/components/tasks/TaskDetail.tsx +335 -0
- package/src/interfaces/web/src/components/tasks/TaskFormDialog.tsx +406 -0
- package/src/interfaces/web/src/components/tasks/TaskList.tsx +258 -0
- package/src/interfaces/web/src/components/tasks/TaskSubtasks.tsx +126 -0
- package/src/interfaces/web/src/components/tasks/columns.ts +51 -0
- package/src/interfaces/web/src/components/tasks/taskStatus.tsx +159 -34
- package/src/interfaces/web/src/components/tasks/taskViewPrefs.ts +73 -0
- package/src/interfaces/web/src/components/tasks/useTaskColumns.ts +31 -0
- package/src/interfaces/web/src/components/ui/chat-input.tsx +136 -12
- package/src/interfaces/web/src/components/ui/context-menu.tsx +15 -198
- package/src/interfaces/web/src/components/ui/dialog.tsx +3 -2
- package/src/interfaces/web/src/components/ui/filter-chips.tsx +4 -0
- package/src/interfaces/web/src/components/ui/popover.tsx +14 -49
- package/src/interfaces/web/src/components/ui/sheet.tsx +2 -1
- package/src/interfaces/web/src/components/ui/spinner.tsx +2 -1
- package/src/interfaces/web/src/components/ui.tsx +62 -23
- package/src/interfaces/web/src/components/voice/VoiceProviderList.tsx +2 -1
- package/src/interfaces/web/src/components/voice/VoiceProviderModal.tsx +66 -8
- package/src/interfaces/web/src/components/voice/VoiceQvoxInstallCard.tsx +63 -0
- package/src/interfaces/web/src/components/voice/VoiceQvoxStatusCard.tsx +51 -0
- package/src/interfaces/web/src/components/voice/VoiceSttCard.tsx +4 -3
- package/src/interfaces/web/src/components/voice/VoiceTestCard.tsx +38 -4
- package/src/interfaces/web/src/constants/index.ts +1 -0
- package/src/interfaces/web/src/hooks/useChannelPrefs.ts +39 -0
- package/src/interfaces/web/src/hooks/useChat.ts +1092 -85
- package/src/interfaces/web/src/hooks/useChatActivity.ts +24 -0
- package/src/interfaces/web/src/hooks/useInbox.ts +26 -4
- package/src/interfaces/web/src/hooks/useLiveMessages.ts +16 -0
- package/src/interfaces/web/src/hooks/useOllamaModels.ts +79 -0
- package/src/interfaces/web/src/hooks/useRecorder.ts +198 -0
- package/src/interfaces/web/src/hooks/useTokenBootstrap.ts +23 -6
- package/src/interfaces/web/src/i18n/en.ts +832 -175
- package/src/interfaces/web/src/i18n/es.ts +841 -188
- package/src/interfaces/web/src/lib/api/agents.ts +23 -4
- package/src/interfaces/web/src/lib/api/code.ts +17 -0
- package/src/interfaces/web/src/lib/api/commitments.ts +7 -1
- package/src/interfaces/web/src/lib/api/conversations.ts +38 -11
- package/src/interfaces/web/src/lib/api/embeddings.ts +3 -0
- package/src/interfaces/web/src/lib/api/engines.ts +14 -0
- package/src/interfaces/web/src/lib/api/groups.ts +93 -0
- package/src/interfaces/web/src/lib/api/images.ts +193 -0
- package/src/interfaces/web/src/lib/api/inbox.ts +29 -5
- package/src/interfaces/web/src/lib/api/integrations.ts +9 -0
- package/src/interfaces/web/src/lib/api/media.ts +126 -0
- package/src/interfaces/web/src/lib/api/net.ts +44 -0
- package/src/interfaces/web/src/lib/api/profiles.ts +12 -0
- package/src/interfaces/web/src/lib/api/projects.ts +9 -1
- package/src/interfaces/web/src/lib/api/routines.ts +9 -1
- package/src/interfaces/web/src/lib/api/sessions.ts +18 -0
- package/src/interfaces/web/src/lib/api/skills.ts +8 -0
- package/src/interfaces/web/src/lib/api/super_agent.ts +3 -0
- package/src/interfaces/web/src/lib/api/tasks.ts +46 -6
- package/src/interfaces/web/src/lib/api/tools.ts +2 -0
- package/src/interfaces/web/src/lib/api/transcribe.ts +31 -0
- package/src/interfaces/web/src/lib/api/turns.ts +20 -0
- package/src/interfaces/web/src/lib/api/voice.ts +72 -2
- package/src/interfaces/web/src/lib/api.ts +3 -0
- package/src/interfaces/web/src/lib/channels.ts +214 -0
- package/src/interfaces/web/src/lib/chat-activity.ts +175 -0
- package/src/interfaces/web/src/lib/chat-prefs.ts +48 -0
- package/src/interfaces/web/src/lib/code-context.ts +0 -2
- package/src/interfaces/web/src/lib/http.ts +51 -17
- package/src/interfaces/web/src/lib/inbox-selection.ts +29 -0
- package/src/interfaces/web/src/lib/live.ts +252 -0
- package/src/interfaces/web/src/lib/net.ts +211 -0
- package/src/interfaces/web/src/lib/notify.ts +331 -0
- package/src/interfaces/web/src/lib/projectNav.ts +40 -0
- package/src/interfaces/web/src/lib/pwa.ts +115 -0
- package/src/interfaces/web/src/lib/qvox.ts +24 -0
- package/src/interfaces/web/src/lib/slug.ts +3 -0
- package/src/interfaces/web/src/lib/tone.ts +150 -0
- package/src/interfaces/web/src/main.tsx +15 -4
- package/src/interfaces/web/src/screens/ApxAdminScreen.tsx +33 -11
- package/src/interfaces/web/src/screens/InboxScreen.tsx +126 -71
- package/src/interfaces/web/src/screens/ProjectScreen.tsx +8 -4
- package/src/interfaces/web/src/screens/SettingsScreen.tsx +7 -4
- package/src/interfaces/web/src/screens/base/AgentDefaultsTab.tsx +30 -9
- package/src/interfaces/web/src/screens/base/CommitmentsTab.tsx +150 -168
- package/src/interfaces/web/src/screens/base/LogsTab.tsx +8 -7
- package/src/interfaces/web/src/screens/base/SessionsTab.tsx +99 -37
- package/src/interfaces/web/src/screens/base/WorkspacesTab.tsx +1 -1
- package/src/interfaces/web/src/screens/mobile/MobileChat.tsx +85 -0
- package/src/interfaces/web/src/screens/mobile/MobileChatList.tsx +244 -0
- package/src/interfaces/web/src/screens/mobile/MobileCommitments.tsx +350 -0
- package/src/interfaces/web/src/screens/mobile/MobileScreen.tsx +138 -0
- package/src/interfaces/web/src/screens/mobile/MobileTabBar.tsx +105 -0
- package/src/interfaces/web/src/screens/mobile/MobileTasks.tsx +407 -0
- package/src/interfaces/web/src/screens/mobile/NewChatSheet.tsx +313 -0
- package/src/interfaces/web/src/screens/mobile/mobileList.tsx +194 -0
- package/src/interfaces/web/src/screens/mobile/routes.ts +239 -0
- package/src/interfaces/web/src/screens/modules/CodeScreen.tsx +135 -64
- package/src/interfaces/web/src/screens/modules/DeckScreen.tsx +0 -1
- package/src/interfaces/web/src/screens/modules/ImagesScreen.tsx +172 -0
- package/src/interfaces/web/src/screens/modules/VoiceScreen.tsx +36 -4
- package/src/interfaces/web/src/screens/project/AgentBrainGraph.tsx +117 -30
- package/src/interfaces/web/src/screens/project/AgentDetailScreen.tsx +537 -92
- package/src/interfaces/web/src/screens/project/AgentsTab.tsx +344 -93
- package/src/interfaces/web/src/screens/project/ArtifactsTab.tsx +1 -1
- package/src/interfaces/web/src/screens/project/ChatTab.tsx +1160 -94
- package/src/interfaces/web/src/screens/project/IntegrationsTab.tsx +3 -2
- package/src/interfaces/web/src/screens/project/McpsTab.tsx +62 -14
- package/src/interfaces/web/src/screens/project/Overview.tsx +36 -15
- package/src/interfaces/web/src/screens/project/RoutinesTab.tsx +93 -8
- package/src/interfaces/web/src/screens/project/SkillsTab.tsx +4 -1
- package/src/interfaces/web/src/screens/project/StructureTab.tsx +5 -4
- package/src/interfaces/web/src/screens/project/TasksTab.tsx +351 -129
- package/src/interfaces/web/src/screens/project/VarsTab.tsx +17 -5
- package/src/interfaces/web/src/styles.css +106 -31
- package/src/interfaces/web/src/types/daemon.ts +246 -2
- package/src/interfaces/web/src/vite-env.d.ts +20 -0
- package/src/interfaces/tui/plugin/command-shim.ts +0 -109
- package/src/interfaces/web/components.json +0 -25
- package/src/interfaces/web/dist/assets/index-CvEoGtTf.js +0 -849
- package/src/interfaces/web/dist/assets/index-CvEoGtTf.js.map +0 -1
- package/src/interfaces/web/dist/assets/index-DzBBXFaO.css +0 -1
- package/src/interfaces/web/src/components/tasks/TaskDetailPanel.tsx +0 -142
- package/src/interfaces/web/src/components/ui/accordion.tsx +0 -72
- package/src/interfaces/web/src/components/ui/alert-dialog.tsx +0 -187
- package/src/interfaces/web/src/components/ui/alert.tsx +0 -76
- package/src/interfaces/web/src/components/ui/aspect-ratio.tsx +0 -22
- package/src/interfaces/web/src/components/ui/avatar.tsx +0 -107
- package/src/interfaces/web/src/components/ui/breadcrumb.tsx +0 -125
- package/src/interfaces/web/src/components/ui/button-group.tsx +0 -87
- package/src/interfaces/web/src/components/ui/calendar.tsx +0 -221
- package/src/interfaces/web/src/components/ui/card.tsx +0 -103
- package/src/interfaces/web/src/components/ui/carousel.tsx +0 -242
- package/src/interfaces/web/src/components/ui/chart.tsx +0 -371
- package/src/interfaces/web/src/components/ui/checkbox.tsx +0 -29
- package/src/interfaces/web/src/components/ui/collapsible.tsx +0 -19
- package/src/interfaces/web/src/components/ui/combobox.tsx +0 -295
- package/src/interfaces/web/src/components/ui/command.tsx +0 -196
- package/src/interfaces/web/src/components/ui/direction.tsx +0 -4
- package/src/interfaces/web/src/components/ui/drawer.tsx +0 -134
- package/src/interfaces/web/src/components/ui/empty.tsx +0 -104
- package/src/interfaces/web/src/components/ui/field.tsx +0 -236
- package/src/interfaces/web/src/components/ui/hover-card.tsx +0 -51
- package/src/interfaces/web/src/components/ui/input-otp.tsx +0 -85
- package/src/interfaces/web/src/components/ui/item.tsx +0 -201
- package/src/interfaces/web/src/components/ui/menubar.tsx +0 -280
- package/src/interfaces/web/src/components/ui/native-select.tsx +0 -61
- package/src/interfaces/web/src/components/ui/navigation-menu.tsx +0 -168
- package/src/interfaces/web/src/components/ui/pagination.tsx +0 -130
- package/src/interfaces/web/src/components/ui/progress.tsx +0 -83
- package/src/interfaces/web/src/components/ui/radio-group.tsx +0 -36
- package/src/interfaces/web/src/components/ui/resizable.tsx +0 -50
- package/src/interfaces/web/src/components/ui/scroll-area.tsx +0 -53
- package/src/interfaces/web/src/components/ui/sidebar.tsx +0 -726
- package/src/interfaces/web/src/components/ui/slider.tsx +0 -52
- package/src/interfaces/web/src/components/ui/sonner.tsx +0 -49
- package/src/interfaces/web/src/components/ui/table.tsx +0 -116
- package/src/interfaces/web/src/components/ui/toggle-group.tsx +0 -87
- package/src/interfaces/web/src/components/ui/toggle.tsx +0 -45
- package/src/interfaces/web/src/hooks/use-mobile.ts +0 -19
- package/src/interfaces/web/src/screens/base/GlobalTasksTab.tsx +0 -161
|
@@ -13,12 +13,12 @@ export const es = {
|
|
|
13
13
|
every_n_hours: "cada {n} horas, al minuto {minute}",
|
|
14
14
|
every_n_minutes: "cada {n} minutos",
|
|
15
15
|
every_minute: "cada minuto",
|
|
16
|
-
every_label: "
|
|
17
|
-
use_cron: "
|
|
18
|
-
use_picker: "
|
|
19
|
-
preset_every_day: "
|
|
20
|
-
preset_weekdays: "
|
|
21
|
-
preset_weekends: "
|
|
16
|
+
every_label: "Cada N horas en vez de una hora fija",
|
|
17
|
+
use_cron: "Editar como cron",
|
|
18
|
+
use_picker: "Usar el selector",
|
|
19
|
+
preset_every_day: "Todos los días",
|
|
20
|
+
preset_weekdays: "Días de semana",
|
|
21
|
+
preset_weekends: "Fin de semana",
|
|
22
22
|
day_short: { sun: "Dom", mon: "Lun", tue: "Mar", wed: "Mié", thu: "Jue", fri: "Vie", sat: "Sáb" },
|
|
23
23
|
},
|
|
24
24
|
when: {
|
|
@@ -47,6 +47,7 @@ export const es = {
|
|
|
47
47
|
disable: "Deshabilitar",
|
|
48
48
|
open: "Abrir",
|
|
49
49
|
close: "Cerrar",
|
|
50
|
+
more: "Más acciones",
|
|
50
51
|
confirm: "Confirmar",
|
|
51
52
|
optional: "(opcional)",
|
|
52
53
|
none: "—",
|
|
@@ -68,6 +69,8 @@ export const es = {
|
|
|
68
69
|
pager_page: "Página {page} de {total}",
|
|
69
70
|
pager_range: "{from}–{to} de {total}",
|
|
70
71
|
pager_per_page:"Por página",
|
|
72
|
+
all: "Todas",
|
|
73
|
+
actions: "Acciones",
|
|
71
74
|
},
|
|
72
75
|
daemon: {
|
|
73
76
|
connecting: "Conectando con el daemon…",
|
|
@@ -75,9 +78,9 @@ export const es = {
|
|
|
75
78
|
unreachable_hint:"Arrancá APX con `apx daemon start` y refrescá.",
|
|
76
79
|
version: "Versión",
|
|
77
80
|
uptime: "Uptime",
|
|
78
|
-
status: "
|
|
79
|
-
running:
|
|
80
|
-
down:
|
|
81
|
+
status: "Estado",
|
|
82
|
+
running: "Activo",
|
|
83
|
+
down: "Caído",
|
|
81
84
|
reload_hint: "POST /admin/reload — relee ~/.apx/config.json sin reiniciar.",
|
|
82
85
|
shutdown_confirm: "¿Apagar el daemon? Las próximas requests fallarán hasta levantarlo de nuevo.",
|
|
83
86
|
shutdown_done: "Daemon detenido.",
|
|
@@ -111,12 +114,19 @@ export const es = {
|
|
|
111
114
|
more_projects: "{count} más",
|
|
112
115
|
collapse_projects: "Ocultar proyectos",
|
|
113
116
|
expand_projects: "Mostrar proyectos",
|
|
117
|
+
project_settings: "Configuración del proyecto",
|
|
118
|
+
copy_path: "Copiar ruta",
|
|
119
|
+
path_copied: "Ruta copiada.",
|
|
120
|
+
copy_failed: "No se pudo copiar.",
|
|
114
121
|
modules: {
|
|
115
122
|
voice: "Voces",
|
|
123
|
+
images: "Imágenes",
|
|
116
124
|
desktop: "Escritorio",
|
|
117
125
|
deck: "Deck",
|
|
118
126
|
code: "Code",
|
|
119
127
|
web: "Web",
|
|
128
|
+
// Caption under the rail icon — the full name doesn't fit in 3.6rem.
|
|
129
|
+
inbox_short: "Chats",
|
|
120
130
|
},
|
|
121
131
|
},
|
|
122
132
|
topbar: {
|
|
@@ -150,9 +160,9 @@ export const es = {
|
|
|
150
160
|
telegram_polling_started: "Polling iniciado.",
|
|
151
161
|
telegram_polling_stopped: "Polling detenido.",
|
|
152
162
|
telegram_channel_removed: "Canal eliminado.",
|
|
153
|
-
agents_badge:
|
|
154
|
-
engine_badge: "
|
|
155
|
-
engine_badge_no: "
|
|
163
|
+
agents_badge: "Agentes",
|
|
164
|
+
engine_badge: "Sí",
|
|
165
|
+
engine_badge_no: "No",
|
|
156
166
|
base_label: "Base",
|
|
157
167
|
},
|
|
158
168
|
add_project: {
|
|
@@ -169,6 +179,63 @@ export const es = {
|
|
|
169
179
|
browser_unavailable: "Explorador no disponible hasta reiniciar daemon. Pegá ruta manual.",
|
|
170
180
|
no_folders: "Sin carpetas.",
|
|
171
181
|
},
|
|
182
|
+
mobile: {
|
|
183
|
+
back: "Volver",
|
|
184
|
+
sessions: "Sesiones",
|
|
185
|
+
no_sessions: "Sin sesiones guardadas todavía.",
|
|
186
|
+
live_session: "Sesión nueva",
|
|
187
|
+
no_messages: "Sin mensajes todavía",
|
|
188
|
+
team_members: "{count} agentes",
|
|
189
|
+
empty: "Todavía no hablaste con ningún agente.",
|
|
190
|
+
prefs: "Preferencias",
|
|
191
|
+
app_options: "Opciones de app",
|
|
192
|
+
new_chat: "Nuevo chat",
|
|
193
|
+
new_chat_title: "Empezar un chat",
|
|
194
|
+
new_chat_empty: "No se encontraron agentes.",
|
|
195
|
+
group_slug_clash: "Ya elegiste otro «{slug}» de otro proyecto — el @slug tiene que ser único en la sala.",
|
|
196
|
+
|
|
197
|
+
// La barra de abajo: las tres cosas que se miran de parado.
|
|
198
|
+
tab_chats: "Chats",
|
|
199
|
+
tab_tasks: "Tasks",
|
|
200
|
+
tab_commitments: "Promesas",
|
|
201
|
+
tasks_search: "Buscar tasks",
|
|
202
|
+
commitments_search: "Buscar promesas",
|
|
203
|
+
load_more: "Ver {count} más",
|
|
204
|
+
// Cuándo vence algo. Se compara por día del calendario, no por instante:
|
|
205
|
+
// una task que vence hoy a medianoche no está vencida a las 9 de la mañana.
|
|
206
|
+
due: {
|
|
207
|
+
overdue: "Vencidas",
|
|
208
|
+
today: "Hoy",
|
|
209
|
+
tomorrow: "Mañana",
|
|
210
|
+
week: "Esta semana",
|
|
211
|
+
later: "Más adelante",
|
|
212
|
+
none: "Sin fecha",
|
|
213
|
+
},
|
|
214
|
+
commitment_move: "Reprogramar",
|
|
215
|
+
commitment_moved_toast: "Fecha reprogramada.",
|
|
216
|
+
commitment_closed: "Cerrada. Reabrirla es acordar una fecha nueva con la persona — eso se hace en el panel.",
|
|
217
|
+
},
|
|
218
|
+
notify: {
|
|
219
|
+
title: "Notificaciones",
|
|
220
|
+
on: "Notificaciones activadas",
|
|
221
|
+
off: "Activar notificaciones",
|
|
222
|
+
on_hint: "Cuando un agente escribe y no estás en su conversación, este dispositivo te avisa.",
|
|
223
|
+
off_hint: "El panel se actualiza solo y en silencio; con la app en segundo plano no te llega nada.",
|
|
224
|
+
denied: "Este navegador está bloqueando las notificaciones del sitio. Habilitalas desde el candado al lado de la dirección y recargá.",
|
|
225
|
+
insecure: "Las notificaciones necesitan https. Prendé el túnel con `apx panel tailscale on` y abrí el panel en esa dirección.",
|
|
226
|
+
unsupported: "Este navegador no tiene notificaciones.",
|
|
227
|
+
native_off: "Notificaciones desactivadas",
|
|
228
|
+
native_on_hint: "Gestionadas por APX Android. Tocá para abrir ajustes de notificaciones del sistema.",
|
|
229
|
+
native_off_hint: "Activá notificaciones de APX en ajustes del sistema Android.",
|
|
230
|
+
test: "Probar",
|
|
231
|
+
test_title: "APX",
|
|
232
|
+
test_body: "Si ves esto, las notificaciones de este dispositivo funcionan.",
|
|
233
|
+
test_failed: "No se pudo mostrar. Revisá que el navegador tenga permiso a nivel sistema.",
|
|
234
|
+
nudge: "¿Te aviso cuando un agente escriba?",
|
|
235
|
+
nudge_yes: "Activar",
|
|
236
|
+
native_channels_hint: "Qué te interrumpe en este celular. Telegram arranca apagado — la app ya está acá y avisa sola. Lo apagado igual se lee en el chat.",
|
|
237
|
+
channels_hint: "Qué canales pueden sonar en este dispositivo. En el celu Telegram arranca apagado — la app ya está ahí.",
|
|
238
|
+
},
|
|
172
239
|
inbox: {
|
|
173
240
|
search: "Buscar",
|
|
174
241
|
no_match: "No coincide nada",
|
|
@@ -179,11 +246,25 @@ export const es = {
|
|
|
179
246
|
subtitle:
|
|
180
247
|
"Cada agente como una conversación, lo más reciente primero.",
|
|
181
248
|
empty: "Todavía no hablaste con ningún agente.",
|
|
182
|
-
pinned: "principal",
|
|
183
249
|
show_quiet: "Ver los que no hablaron",
|
|
184
250
|
no_reply_yet: "(sin respuestas todavía)",
|
|
185
251
|
},
|
|
186
252
|
|
|
253
|
+
// Filtros y etiquetas de canal: cuáles de los lugares donde puede pasar una
|
|
254
|
+
// conversación quiere ver y escuchar ESTE dispositivo (lib/channels.ts).
|
|
255
|
+
channels: {
|
|
256
|
+
filter: "Canales",
|
|
257
|
+
all: "Todos",
|
|
258
|
+
n_of_m: "{n} de {total}",
|
|
259
|
+
select_all: "Seleccionar todos",
|
|
260
|
+
none: "Ninguno",
|
|
261
|
+
a2a: "Agente ↔ agente",
|
|
262
|
+
group: "Grupos",
|
|
263
|
+
other: "Sin canal",
|
|
264
|
+
mobility: "Viajes y mandados",
|
|
265
|
+
all_hidden: "Acá están todos los canales apagados. Tocá uno para volver a verlo.",
|
|
266
|
+
},
|
|
267
|
+
|
|
187
268
|
settings: {
|
|
188
269
|
title: "Settings",
|
|
189
270
|
subtitle: "Preferencias del panel + diagnóstico del daemon local.",
|
|
@@ -222,8 +303,8 @@ export const es = {
|
|
|
222
303
|
devices_pair_waiting: "Esperando que el dispositivo confirme…",
|
|
223
304
|
devices_pair_done: "Dispositivo vinculado ✓",
|
|
224
305
|
devices_pair_localhost_only: "Solo se pueden generar códigos desde la PC del daemon (localhost).",
|
|
225
|
-
devices_last_seen: "
|
|
226
|
-
devices_never: "
|
|
306
|
+
devices_last_seen: "Visto:",
|
|
307
|
+
devices_never: "Nunca",
|
|
227
308
|
devices_revoke: "Revocar",
|
|
228
309
|
account_section: "Cuenta",
|
|
229
310
|
agents_section: "Agentes & modelos",
|
|
@@ -253,7 +334,7 @@ export const es = {
|
|
|
253
334
|
vanilla_hint:
|
|
254
335
|
"No hay ningún perfil activo. APX se comporta exactamente como siempre — el prompt del super-agente es idéntico al de una instalación limpia.",
|
|
255
336
|
none_available: "No hay perfiles disponibles todavía.",
|
|
256
|
-
active: "
|
|
337
|
+
active: "Activo",
|
|
257
338
|
activate: "Activar",
|
|
258
339
|
replace_active: "Reemplazar el activo",
|
|
259
340
|
deactivate: "Desactivar",
|
|
@@ -281,6 +362,12 @@ export const es = {
|
|
|
281
362
|
no_settings: "Este perfil no tiene nada configurable.",
|
|
282
363
|
settings_locked: "Activá el perfil para poder cambiar su configuración.",
|
|
283
364
|
doctor_vanilla: "Sin perfil activo. APX se comporta como siempre.",
|
|
365
|
+
readopt_all: "Re-sincronizar rutinas",
|
|
366
|
+
readopt_one: "Re-adoptar",
|
|
367
|
+
readopt_title: "Re-adoptar del paquete",
|
|
368
|
+
readopt_confirm:
|
|
369
|
+
"Vuelve a instalar las rutinas afectadas desde el paquete, descartando tus ediciones locales y arreglando la procedencia. Las que no tocaste no cambian.",
|
|
370
|
+
readopt_done: "Rutinas re-adoptadas",
|
|
284
371
|
},
|
|
285
372
|
|
|
286
373
|
nudge: {
|
|
@@ -332,6 +419,8 @@ export const es = {
|
|
|
332
419
|
model: "Modelo activo",
|
|
333
420
|
model_hint: "Ej: anthropic:claude-sonnet-4.5, ollama:gemma2:9b",
|
|
334
421
|
permission_mode: "Permission mode",
|
|
422
|
+
avatar: "Avatar",
|
|
423
|
+
avatar_hint: "Actualiza inmediatamente las mascotas de Desktop y Android.",
|
|
335
424
|
system: "Prompt extra (system)",
|
|
336
425
|
system_hint: "Texto que se prepende al system prompt base.",
|
|
337
426
|
system_ph: "(Vacío = se usa el prompt base de core/agent/prompts/super-agent-base.md)",
|
|
@@ -399,9 +488,10 @@ export const es = {
|
|
|
399
488
|
nav: {
|
|
400
489
|
overview: "Overview",
|
|
401
490
|
chat: "Chat",
|
|
491
|
+
group: "Grupo",
|
|
402
492
|
config: "Config",
|
|
403
493
|
telegram: "Telegram",
|
|
404
|
-
agents:
|
|
494
|
+
agents: "Agentes",
|
|
405
495
|
routines: "Rutinas",
|
|
406
496
|
tasks: "Tasks",
|
|
407
497
|
commitments: "Compromisos",
|
|
@@ -423,15 +513,59 @@ export const es = {
|
|
|
423
513
|
config: "Config",
|
|
424
514
|
},
|
|
425
515
|
|
|
516
|
+
groups: {
|
|
517
|
+
title: "Grupos",
|
|
518
|
+
new: "Nuevo",
|
|
519
|
+
new_group: "Nuevo grupo…",
|
|
520
|
+
new_hint: "Varios agentes en una sala",
|
|
521
|
+
pick_members: "Elegí los miembros",
|
|
522
|
+
add_member: "Sumar al grupo",
|
|
523
|
+
make_group: "Sumar a alguien (hacer grupo)",
|
|
524
|
+
remove_member: "Echar del grupo",
|
|
525
|
+
all_in: "Ya están todos.",
|
|
526
|
+
joined_chat: "{name} se sumó al chat",
|
|
527
|
+
left_chat: "{name} salió del chat",
|
|
528
|
+
new_title: "Nuevo chat grupal",
|
|
529
|
+
empty: "Todavía no hay grupos.",
|
|
530
|
+
pick: "Elegí un grupo o creá uno nuevo.",
|
|
531
|
+
no_messages: "Sin mensajes",
|
|
532
|
+
name_label: "Nombre del grupo",
|
|
533
|
+
name_ph: "Opcional",
|
|
534
|
+
members_label: "Miembros",
|
|
535
|
+
members_hint: "tocá para sumar; el número es el orden",
|
|
536
|
+
first_hint: "Si escribís sin mencionar a nadie, contesta la primera del grupo.",
|
|
537
|
+
create: "Crear grupo",
|
|
538
|
+
start_hint: "Escribí para arrancar. Mencioná con @ para hablarle a alguien puntual.",
|
|
539
|
+
composer_ph: "Mensaje… @mención · /invite nombre hola…",
|
|
540
|
+
invite_ph: "Mensaje… /invite nombre hola…",
|
|
541
|
+
mention_pick: "Mencionar",
|
|
542
|
+
invite_cmd: "/invite",
|
|
543
|
+
suggest_hint: "↑↓ mover · Enter elegir · Esc cerrar",
|
|
544
|
+
cmd_menu: "Comandos",
|
|
545
|
+
cmd_invite_label: "Invitar",
|
|
546
|
+
cmd_invite_hint: "Sumá a alguien y escribí el mensaje de bienvenida",
|
|
547
|
+
cmd_new_label: "Nueva sesión",
|
|
548
|
+
cmd_new_hint: "Empezá un chat limpio con este agente",
|
|
549
|
+
cmd_tools_label: "Tools",
|
|
550
|
+
cmd_tools_hint: "Mostrar u ocultar cards de tools en el hilo",
|
|
551
|
+
you: "Vos",
|
|
552
|
+
you_initial: "V",
|
|
553
|
+
pulled_by: "traído por {name}",
|
|
554
|
+
deleted: "Grupo borrado",
|
|
555
|
+
not_found: "Grupo no encontrado.",
|
|
556
|
+
delete_title: "Borrar grupo",
|
|
557
|
+
delete_confirm: "¿Borrar el grupo “{title}”? La conversación se pierde.",
|
|
558
|
+
},
|
|
559
|
+
|
|
426
560
|
overview: {
|
|
427
561
|
tasks_open: "Tasks abiertas",
|
|
428
562
|
routines: "Rutinas",
|
|
429
563
|
routines_active: "Rutinas activas",
|
|
430
|
-
agents:
|
|
564
|
+
agents: "Agentes",
|
|
431
565
|
mcps: "MCPs",
|
|
432
566
|
artifacts: "Artifacts",
|
|
433
567
|
chat: "Chat (super-agent)",
|
|
434
|
-
chat_value: "
|
|
568
|
+
chat_value: "Abrir",
|
|
435
569
|
roster: "Equipo",
|
|
436
570
|
no_agents: "Todavía no hay agentes.",
|
|
437
571
|
orchestrators: "Orquestadores",
|
|
@@ -461,20 +595,39 @@ export const es = {
|
|
|
461
595
|
send: "Enviar",
|
|
462
596
|
stop: "Stop",
|
|
463
597
|
new_session: "Nueva sesión",
|
|
598
|
+
rename: "Renombrar",
|
|
599
|
+
rename_title: "Renombrar la sesión",
|
|
600
|
+
rename_label: "Nombre",
|
|
601
|
+
rename_hint: "Vacío vuelve al nombre que sale de lo primero que se dijo.",
|
|
602
|
+
renamed: "Sesión renombrada.",
|
|
603
|
+
archive: "Archivar",
|
|
604
|
+
unarchive: "Desarchivar",
|
|
605
|
+
archived_ok: "Sesión archivada.",
|
|
606
|
+
unarchived_ok:"Sesión desarchivada.",
|
|
607
|
+
archived_group:"Archivadas",
|
|
608
|
+
new_session_confirm_title: "Empezar una sesión nueva",
|
|
609
|
+
new_session_confirm_desc: "Arrancás un hilo en blanco con el mismo agente. La conversación actual queda guardada y volvés a ella desde la lista.",
|
|
464
610
|
delete: "Borrar",
|
|
465
611
|
delete_confirm_title: "Borrar chat",
|
|
466
612
|
delete_confirm_desc: "Esta acción no se puede deshacer. Se elimina para siempre el historial de este chat.",
|
|
467
613
|
deleted: "Chat borrado.",
|
|
614
|
+
group_regen_title: "Regenerar la respuesta",
|
|
615
|
+
group_regen_confirm: "Regenerar",
|
|
616
|
+
group_edit_title: "Editar y reenviar",
|
|
617
|
+
group_edit_confirm: "Editar y reenviar",
|
|
618
|
+
group_rewind_desc: "Esto pisa {n} mensaje(s) más nuevos del grupo. No se puede deshacer.",
|
|
468
619
|
meta_created: "Creado {date} · {channel}",
|
|
469
620
|
meta_new: "Chat nuevo · {channel}",
|
|
470
|
-
copy: "
|
|
621
|
+
copy: "Copiar",
|
|
471
622
|
copied: "Copiado.",
|
|
472
623
|
stopped_marker: " [detenido]",
|
|
473
624
|
create_agent: "Crear agente",
|
|
625
|
+
view_agent: "Ver agente",
|
|
474
626
|
create_agent_title: "Crear agente",
|
|
475
627
|
create_agent_desc: "Necesario para iniciar chat en proyecto.",
|
|
476
|
-
|
|
477
|
-
|
|
628
|
+
slug_label: "Slug",
|
|
629
|
+
role_label: "Rol",
|
|
630
|
+
model_label: "Modelo",
|
|
478
631
|
model_hint: "ej. openai:gpt-5, groq:llama-3.3-70b-versatile",
|
|
479
632
|
master_label: "Agente master",
|
|
480
633
|
list: {
|
|
@@ -485,27 +638,24 @@ export const es = {
|
|
|
485
638
|
empty: "No hay conversaciones todavía. Arrancá una desde la derecha.",
|
|
486
639
|
count: "{n} en total",
|
|
487
640
|
pick_agent: "Elegí un agente",
|
|
641
|
+
new_single: "Chat",
|
|
642
|
+
new_single_hint: "Con un agente",
|
|
488
643
|
},
|
|
489
644
|
},
|
|
490
645
|
|
|
491
646
|
tasks: {
|
|
492
647
|
title: "Tasks (TODOs)",
|
|
493
648
|
subtitle: "Append-only JSONL en ~/.apx/projects/<id>/tasks/.",
|
|
494
|
-
add: "agregar",
|
|
495
|
-
add_label: "Nueva task",
|
|
496
649
|
add_placeholder: "ej. revisar bug del scroll",
|
|
497
650
|
empty: "No hay tasks {state}.",
|
|
498
651
|
empty_open: "No hay tasks abiertas.",
|
|
499
652
|
created: "Task creada.",
|
|
500
|
-
create_error: "
|
|
653
|
+
create_error: "No pude crear la task",
|
|
501
654
|
done: "✓ done",
|
|
502
655
|
drop: "✗ drop",
|
|
503
656
|
reopen: "↻ reopen",
|
|
504
|
-
due: "
|
|
657
|
+
due: "Vence",
|
|
505
658
|
via: "via",
|
|
506
|
-
aria_done: "marcar done",
|
|
507
|
-
aria_drop: "descartar task",
|
|
508
|
-
aria_reopen: "reabrir task",
|
|
509
659
|
},
|
|
510
660
|
|
|
511
661
|
global_tasks: {
|
|
@@ -519,11 +669,11 @@ export const es = {
|
|
|
519
669
|
field_project: "Proyecto",
|
|
520
670
|
|
|
521
671
|
field_due: "Vence",
|
|
522
|
-
any_status: "
|
|
672
|
+
any_status: "Cualquier estado",
|
|
523
673
|
title: "Tasks (todos los proyectos)",
|
|
524
674
|
subtitle: "Tareas agregadas de todos los proyectos registrados.",
|
|
525
675
|
empty: "Sin tasks.",
|
|
526
|
-
due: "
|
|
676
|
+
due: "Vence",
|
|
527
677
|
go_project: "Ir al proyecto",
|
|
528
678
|
},
|
|
529
679
|
|
|
@@ -551,17 +701,53 @@ export const es = {
|
|
|
551
701
|
title: "Compromisos",
|
|
552
702
|
subtitle: "Qué prometiste, a quién y para cuándo. Aparte de las tareas: acá hay alguien esperando.",
|
|
553
703
|
empty: "Nada prometido.",
|
|
554
|
-
overdue: "vencía",
|
|
555
704
|
overdue_only: "Pasados de fecha",
|
|
556
705
|
no_date: "sin fecha acordada",
|
|
557
|
-
moved: "
|
|
706
|
+
moved: "Movido",
|
|
558
707
|
mark_kept: "Cumplido",
|
|
559
708
|
mark_missed: "Incumplido",
|
|
709
|
+
mark_dropped: "Eliminar",
|
|
710
|
+
dropped_toast: "Compromiso eliminado.",
|
|
711
|
+
confirm_kept_title: "¿Marcar como cumplido?",
|
|
712
|
+
confirm_kept_desc: "Se marca cumplido lo que le prometiste a {who}.",
|
|
713
|
+
confirm_missed_title: "¿Marcar como incumplido?",
|
|
714
|
+
confirm_missed_desc: "Se marca incumplido lo que le prometiste a {who}. Queda registrado.",
|
|
715
|
+
confirm_dropped_title: "¿Eliminar el compromiso?",
|
|
716
|
+
confirm_dropped_desc: "Se elimina lo que le prometiste a {who}. Es para cuando lo cargaste por error.",
|
|
717
|
+
select_row: "Seleccionar a {who}",
|
|
718
|
+
bulk_selected: "{count} seleccionados",
|
|
719
|
+
bulk_clear: "Limpiar selección",
|
|
720
|
+
confirm_bulk_kept_title: "¿Marcar {count} como cumplidos?",
|
|
721
|
+
confirm_bulk_kept_desc: "Se marcan {count} compromisos como cumplidos.",
|
|
722
|
+
confirm_bulk_dropped_title: "¿Eliminar {count} compromisos?",
|
|
723
|
+
confirm_bulk_dropped_desc: "Se eliminan {count} compromisos. Es para los que cargaste por error.",
|
|
724
|
+
bulk_kept_toast: "{count} compromisos marcados como cumplidos.",
|
|
725
|
+
bulk_dropped_toast: "{count} compromisos eliminados.",
|
|
726
|
+
created: "Compromiso registrado.",
|
|
727
|
+
edit_title: "Editar compromiso",
|
|
728
|
+
row_actions: "Acciones del compromiso",
|
|
729
|
+
list_title: "Compromisos",
|
|
730
|
+
detail_empty: "Elegí un compromiso de la lista.",
|
|
731
|
+
history_title: "Historial de fechas",
|
|
732
|
+
history_empty: "Nunca se movió la fecha.",
|
|
733
|
+
promised: "Prometido",
|
|
734
|
+
field_note: "Nota",
|
|
735
|
+
field_due_move_hint: "Cambiar la fecha queda registrado como reprogramación, con la fecha anterior en el historial.",
|
|
560
736
|
state: {
|
|
561
|
-
open:
|
|
562
|
-
kept:
|
|
563
|
-
missed:
|
|
564
|
-
|
|
737
|
+
open: "Abiertos",
|
|
738
|
+
kept: "Cumplidos",
|
|
739
|
+
missed: "Incumplidos",
|
|
740
|
+
dropped: "Eliminados",
|
|
741
|
+
all: "Todos",
|
|
742
|
+
},
|
|
743
|
+
// Singular, para la chapita de una fila (el bloque `state` es plural
|
|
744
|
+
// porque titula los filtros).
|
|
745
|
+
face: {
|
|
746
|
+
open: "Abierto",
|
|
747
|
+
overdue: "Vencido",
|
|
748
|
+
kept: "Cumplido",
|
|
749
|
+
missed: "Incumplido",
|
|
750
|
+
dropped: "Eliminado",
|
|
565
751
|
},
|
|
566
752
|
},
|
|
567
753
|
|
|
@@ -569,14 +755,14 @@ export const es = {
|
|
|
569
755
|
title: "Heartbeats / Routines",
|
|
570
756
|
subtitle: "Cron, every:Nm, once:ISO. Cada rutina dispara un agente o un shell.",
|
|
571
757
|
empty: "Sin rutinas. Creá una arriba.",
|
|
572
|
-
new: "
|
|
758
|
+
new: "Nueva",
|
|
573
759
|
new_btn: "Nueva",
|
|
574
760
|
delete_confirm: "Borrar rutina {name}?",
|
|
575
761
|
delete_confirm_body: "Esta acción no se puede deshacer.",
|
|
576
762
|
saved: "Rutina guardada.",
|
|
577
|
-
paused: "
|
|
578
|
-
next_run: "
|
|
579
|
-
last_run: "
|
|
763
|
+
paused: "Pausada",
|
|
764
|
+
next_run: "Próxima:",
|
|
765
|
+
last_run: "Última:",
|
|
580
766
|
enabled_hint: "Activa · corre según el intervalo",
|
|
581
767
|
disabled_hint: "Pausada · solo con el botón Run",
|
|
582
768
|
enabled_label: "Habilitada",
|
|
@@ -601,16 +787,27 @@ export const es = {
|
|
|
601
787
|
block_command: "Comando",
|
|
602
788
|
block_empty: "(vacío)",
|
|
603
789
|
runs_title: "Ejecuciones",
|
|
790
|
+
// Una corrida en vuelo: en qué fase del pipeline está, y quién la pidió.
|
|
791
|
+
phase_pre: "Corriendo pre-comandos",
|
|
792
|
+
phase_agent: "Trabajando",
|
|
793
|
+
phase_delivery: "Entregando",
|
|
794
|
+
phase_post: "Corriendo post-comandos",
|
|
795
|
+
trigger_manual: "A mano",
|
|
796
|
+
trigger_schedule: "Por horario",
|
|
797
|
+
trigger_agent: "La pidió un agente",
|
|
798
|
+
live_waiting: "Arrancando…",
|
|
604
799
|
runs_empty: "Sin ejecuciones todavía.",
|
|
605
800
|
runs_close: "Cerrar",
|
|
606
801
|
runs_no_detail: "Sin más detalle.",
|
|
607
802
|
runs_output: "Salida",
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
803
|
+
runs_chat: "Chat",
|
|
804
|
+
open_chat: "Ir al chat",
|
|
805
|
+
status_ok: "Ok",
|
|
806
|
+
status_error: "Error",
|
|
807
|
+
status_skipped: "Salteada",
|
|
611
808
|
agent_field: "Agente (spec.agent)",
|
|
612
809
|
agent_hint: "Quién ejecuta la rutina.",
|
|
613
|
-
agent_loading: "
|
|
810
|
+
agent_loading: "Cargando…",
|
|
614
811
|
agent_pick: "— elegí un agente —",
|
|
615
812
|
prompt_exec: "Prompt (spec.prompt)",
|
|
616
813
|
prompt_exec_ph: "qué pendiente hay para hoy?",
|
|
@@ -628,26 +825,33 @@ export const es = {
|
|
|
628
825
|
shell_hint: "Corre tal cual en el shell. Sin prompt ni pre/post.",
|
|
629
826
|
hb_channel: "Canal (spec.channel)",
|
|
630
827
|
hb_message: "Mensaje (spec.message)",
|
|
631
|
-
name_required: "
|
|
632
|
-
save_error: "
|
|
633
|
-
run_error: "
|
|
634
|
-
toggle_error: "
|
|
635
|
-
delete_error: "
|
|
828
|
+
name_required: "Name requerido",
|
|
829
|
+
save_error: "Save falló",
|
|
830
|
+
run_error: "Run falló",
|
|
831
|
+
toggle_error: "Toggle falló",
|
|
832
|
+
delete_error: "Delete falló",
|
|
636
833
|
run_success: "{name} disparada.",
|
|
637
834
|
run_confirm: "¿Ejecutar la rutina {name} ahora?",
|
|
638
835
|
run_confirm_body: "Corre la acción una vez, sin esperar al horario.",
|
|
836
|
+
select_row: "Seleccionar {name}",
|
|
837
|
+
bulk_selected: "{count} seleccionadas",
|
|
838
|
+
bulk_run: "Ejecutar",
|
|
839
|
+
bulk_clear: "Limpiar selección",
|
|
840
|
+
confirm_bulk_run_title: "¿Ejecutar {count} rutinas?",
|
|
841
|
+
confirm_bulk_run_desc: "Se ejecutan {count} rutinas ahora, sin esperar al horario.",
|
|
842
|
+
bulk_run_toast: "{count} rutinas ejecutadas.",
|
|
639
843
|
running: "Ejecutando…",
|
|
640
|
-
delete_success: "
|
|
844
|
+
delete_success: "Borrada.",
|
|
641
845
|
},
|
|
642
846
|
|
|
643
847
|
agents: {
|
|
644
|
-
title:
|
|
848
|
+
title: "Agentes",
|
|
645
849
|
subtitle: "Definidos en .apc/agents/<slug>.md.",
|
|
646
850
|
subtitle_full: "Definidos en .apc/agents/<slug>.md. La memoria runtime vive en ~/.apx/projects/<id>/agents/<slug>/.",
|
|
647
851
|
empty: "Sin agents. Agregá uno con <code>apx agent add</code> o el botón.",
|
|
648
852
|
empty_text: "Sin agents. Agregá uno con `apx agent add` o el botón de arriba.",
|
|
649
853
|
new: "Agente",
|
|
650
|
-
created:
|
|
854
|
+
created: "Agente {slug} creado.",
|
|
651
855
|
slug_invalid: "slug debe matchear /^[a-z][a-z0-9_-]*$/",
|
|
652
856
|
hierarchy: "Jerarquía",
|
|
653
857
|
list_view: "Lista",
|
|
@@ -655,38 +859,47 @@ export const es = {
|
|
|
655
859
|
chat: "Chat",
|
|
656
860
|
view: "Ver",
|
|
657
861
|
orchestrator: "Orquestador",
|
|
658
|
-
new_title:
|
|
862
|
+
new_title: "Nuevo agente",
|
|
659
863
|
new_desc: "POST /projects/:pid/agents — escribe .apc/agents/<slug>.md.",
|
|
660
|
-
slug_label: "
|
|
864
|
+
slug_label: "Slug",
|
|
661
865
|
slug_ph: "cody",
|
|
662
|
-
role_label:
|
|
866
|
+
role_label: "Rol (opcional)",
|
|
663
867
|
role_ph: "code refactor",
|
|
664
|
-
model_label: "
|
|
868
|
+
model_label: "Modelo (opcional)",
|
|
665
869
|
model_hint: "ej. ollama:gemma2:9b, openai:gpt-4o-mini",
|
|
666
|
-
lang_label:
|
|
667
|
-
desc_label: "
|
|
870
|
+
lang_label: "Idioma (opcional)",
|
|
871
|
+
desc_label: "Descripción (opcional)",
|
|
668
872
|
desc_ph: "Qué hace este agente…",
|
|
669
|
-
skills_label: "
|
|
873
|
+
skills_label: "Skills (coma)",
|
|
670
874
|
skills_ph: "skill-a, skill-b",
|
|
671
|
-
tools_label: "
|
|
875
|
+
tools_label: "Tools (coma)",
|
|
672
876
|
tools_ph: "tool-a, tool-b",
|
|
673
|
-
parent_label: "
|
|
877
|
+
parent_label: "Reporta a (parent, opcional)",
|
|
674
878
|
parent_hint: "Subagente de un orquestador.",
|
|
675
879
|
none_parent: "— ninguno —",
|
|
676
880
|
master_label: "Orquestador (master)",
|
|
677
|
-
create_success: "
|
|
678
|
-
create_error: "
|
|
881
|
+
create_success: "Agente {slug} creado.",
|
|
882
|
+
create_error: "Create falló",
|
|
679
883
|
import_title: "Importar del vault",
|
|
680
884
|
import_desc: "Plantillas en ~/.apx/agents. Se registran en este proyecto (.apc/agents/<slug>.md).",
|
|
681
885
|
import_empty: "Sin plantillas en el vault.",
|
|
682
886
|
import_success: "Importado: {slug}",
|
|
683
|
-
import_already: "
|
|
887
|
+
import_already: "Ya está",
|
|
684
888
|
import_btn: "Importar",
|
|
685
889
|
},
|
|
686
890
|
|
|
687
891
|
agent_detail: {
|
|
688
892
|
not_found: "Agente no encontrado.",
|
|
689
893
|
chat_btn: "Chat con {slug}",
|
|
894
|
+
clone_btn: "Clonar",
|
|
895
|
+
clone_hint: "Duplica este agente (prompt y memoria) con un nombre (n) para evitar duplicados.",
|
|
896
|
+
clone_success: "Clonado como {slug}",
|
|
897
|
+
slug_label: "Slug (identificador)",
|
|
898
|
+
slug_hint: "La clave del agente: nombra su archivo, su carpeta de memoria y su URL. Renombrar los mueve a todos.",
|
|
899
|
+
rename_btn: "Renombrar",
|
|
900
|
+
rename_from_name: "Usar el nombre: {slug}",
|
|
901
|
+
rename_confirm: "¿Renombrar «{from}» a «{to}»? Esto mueve el archivo del agente y su memoria/conversaciones, y reapunta los sub-agentes y rutinas que lo referencian.",
|
|
902
|
+
rename_success: "Renombrado a {slug}",
|
|
690
903
|
reports_to: "↳ reporta a",
|
|
691
904
|
no_threads: "Sin threads.",
|
|
692
905
|
no_activity: "Sin actividad registrada.",
|
|
@@ -694,28 +907,40 @@ export const es = {
|
|
|
694
907
|
subagents: "Subagentes",
|
|
695
908
|
subagents_desc: "Agentes que reportan a este orquestador.",
|
|
696
909
|
config_title: "Configuración del agente",
|
|
910
|
+
tab_config: "Config",
|
|
911
|
+
tab_prompt: "Prompt",
|
|
912
|
+
config_identity: "Identidad",
|
|
913
|
+
config_behavior: "Comportamiento y jerarquía",
|
|
914
|
+
config_behavior_desc: "Autonomía, línea de reporte y modelo forzado.",
|
|
915
|
+
config_capabilities: "Skills y tools",
|
|
697
916
|
type_label: "Tipología (type)",
|
|
698
917
|
area_label: "Área",
|
|
699
918
|
area_hint: "ej. operaciones, marketing",
|
|
700
919
|
area_ph: "operaciones",
|
|
701
|
-
role_label:
|
|
920
|
+
role_label: "Rol",
|
|
702
921
|
parent_label: "Reporta a (parent)",
|
|
703
922
|
none_parent: "— ninguno —",
|
|
704
923
|
model_label: "Modelo base",
|
|
705
|
-
model_hint: "
|
|
924
|
+
model_hint: "`inherit` = default del router (el chat puede forzar otro modelo en ese turno). Un `proveedor:modelo` pisa el campo.",
|
|
706
925
|
model_ph: "(vacío = router default)",
|
|
926
|
+
model_router_default: "Router default",
|
|
927
|
+
model_provider_default: "{provider} · default",
|
|
928
|
+
model_unlisted: "no es de un provider configurado",
|
|
707
929
|
skills_label: "Skills (coma)",
|
|
708
930
|
bio_label: "Bio / descripción",
|
|
709
931
|
system_label: "System prompt",
|
|
710
932
|
system_hint: "Define personalidad y comportamiento (cuerpo del AGENT.md).",
|
|
933
|
+
prompt_lines: "{n} líneas",
|
|
934
|
+
prompt_empty: "Sin definir",
|
|
711
935
|
master_label: "Orquestador (master)",
|
|
712
936
|
delete_btn: "Borrar agente",
|
|
713
937
|
save_btn: "Guardar cambios",
|
|
714
938
|
delete_confirm: "Borrar el agente \"{slug}\"? Se elimina .apc/agents/{slug}.md y sus datos runtime locales.",
|
|
715
939
|
update_success: "Agente actualizado.",
|
|
716
940
|
delete_success: "Agente borrado.",
|
|
717
|
-
tools_hint: "
|
|
718
|
-
tools_custom_ph: "
|
|
941
|
+
tools_hint: "Allowlist de este agente (no el registro del superagente). Para edición: write_file, edit_file, run_command, list_skills, load_skill. Browser/HTTP/MCP quedan opt-in.",
|
|
942
|
+
tools_custom_ph: "+ tool custom…",
|
|
943
|
+
tools_csv_ph: "tools seleccionadas, separadas por coma",
|
|
719
944
|
memory_title: "Memoria del agente",
|
|
720
945
|
memory_empty: "(memoria vacía)",
|
|
721
946
|
memory_saved: "Memoria guardada.",
|
|
@@ -728,13 +953,18 @@ export const es = {
|
|
|
728
953
|
brain_title: "Brain",
|
|
729
954
|
brain_desc: "Grafo de relaciones reales del agente: memoria, threads, tasks, heartbeats y jerarquía. (primera versión — lo refinamos)",
|
|
730
955
|
brain_empty: "Aún no hay relaciones para graficar (sin memoria, threads, tasks ni rutinas).",
|
|
731
|
-
msgs_count: "
|
|
956
|
+
msgs_count: "Msgs",
|
|
732
957
|
},
|
|
733
958
|
|
|
734
959
|
mcps: {
|
|
735
960
|
title: "MCP servers",
|
|
736
961
|
subtitle: "3 scopes: Runtime > Shared > Global. Conflictos arriba si los hay.",
|
|
737
962
|
empty: "Sin MCPs configurados.",
|
|
963
|
+
filter_label: "Filtrar por scope",
|
|
964
|
+
filter_all: "Todos",
|
|
965
|
+
filter_project: "Proyecto",
|
|
966
|
+
filter_global: "Global",
|
|
967
|
+
filter_empty: "Ningún MCP en este filtro.",
|
|
738
968
|
new: "MCP",
|
|
739
969
|
delete_confirm: "Borrar MCP {name} de scope {scope}?",
|
|
740
970
|
conflicts: "⚠ Conflictos: {names}",
|
|
@@ -767,8 +997,11 @@ export const es = {
|
|
|
767
997
|
cmd_label: "Comando",
|
|
768
998
|
cmd_ph: "npx",
|
|
769
999
|
args_label: "Args",
|
|
1000
|
+
args_hint: "separados por espacios",
|
|
1001
|
+
args_ph: "-y @modelcontextprotocol/server-filesystem /tmp",
|
|
770
1002
|
args_hint_tokens: "Una entrada por argumento. Usá el botón + para insertar variables.",
|
|
771
1003
|
env_label: "Env",
|
|
1004
|
+
env_invalid: "env debe ser JSON válido",
|
|
772
1005
|
env_hint_tokens: "Pares clave/valor. Los valores aceptan ${var.NOMBRE} (botón + a la derecha).",
|
|
773
1006
|
env_empty: "Sin variables de entorno.",
|
|
774
1007
|
url_label: "URL",
|
|
@@ -791,11 +1024,11 @@ export const es = {
|
|
|
791
1024
|
logs_events: "Eventos recientes",
|
|
792
1025
|
logs_stderr: "stderr (últimos 4KB)",
|
|
793
1026
|
logs_panel_title: "Live logs",
|
|
794
|
-
logs_panel_pick: "
|
|
1027
|
+
logs_panel_pick: "Elegí un MCP",
|
|
795
1028
|
logs_panel_hint: "Click un MCP de la lista para ver lo que está pasando en vivo.",
|
|
796
1029
|
logs_panel_idle: "Sin actividad. Apretá Probar para arrancarlo.",
|
|
797
1030
|
name_required: "Nombre requerido",
|
|
798
|
-
removed: "
|
|
1031
|
+
removed: "Eliminado",
|
|
799
1032
|
added: "MCP agregado.",
|
|
800
1033
|
updated: "MCP actualizado.",
|
|
801
1034
|
},
|
|
@@ -817,9 +1050,9 @@ export const es = {
|
|
|
817
1050
|
filter_project: "Sólo proyecto",
|
|
818
1051
|
filter_global: "Sólo globales",
|
|
819
1052
|
scope_label: "Scope",
|
|
820
|
-
scope_project: "
|
|
1053
|
+
scope_project: "Proyecto",
|
|
821
1054
|
scope_project_desc: "Sólo este proyecto. Pisa la global con mismo nombre.",
|
|
822
|
-
scope_global: "
|
|
1055
|
+
scope_global: "Global",
|
|
823
1056
|
scope_global_desc: "Disponible en todos los proyectos.",
|
|
824
1057
|
name_label: "Nombre",
|
|
825
1058
|
name_hint: "Mayúsculas, dígitos y _. P. ej.: MY_API_KEY, GITHUB_TOKEN.",
|
|
@@ -840,12 +1073,12 @@ export const es = {
|
|
|
840
1073
|
|
|
841
1074
|
threads: {
|
|
842
1075
|
title: "Chats",
|
|
843
|
-
subtitle:
|
|
844
|
-
no_agents:
|
|
845
|
-
pick:
|
|
1076
|
+
subtitle: "Conversaciones por agente (vacío = ningún log persistido todavía).",
|
|
1077
|
+
no_agents: "No hay agentes. Las conversaciones requieren un agente configurado.",
|
|
1078
|
+
pick: "Elegí un agente para ver sus conversaciones.",
|
|
846
1079
|
empty: "No hay conversaciones para {slug}.",
|
|
847
1080
|
conversation_title: "Conversación {id}",
|
|
848
|
-
messages: "
|
|
1081
|
+
messages: "Mensajes",
|
|
849
1082
|
via: "via",
|
|
850
1083
|
},
|
|
851
1084
|
|
|
@@ -856,7 +1089,7 @@ export const es = {
|
|
|
856
1089
|
model_hint: "ej. anthropic:claude-sonnet-4.5, ollama:gemma2:9b",
|
|
857
1090
|
perm: "super_agent.permission_mode",
|
|
858
1091
|
route: "route_to_agent",
|
|
859
|
-
route_hint:
|
|
1092
|
+
route_hint: "Slug del agente que atiende por defecto en este proyecto.",
|
|
860
1093
|
use_global: "(usa global)",
|
|
861
1094
|
saved: "Guardado.",
|
|
862
1095
|
nothing: "Nada para guardar.",
|
|
@@ -875,7 +1108,7 @@ export const es = {
|
|
|
875
1108
|
save_meta_success: "Project metadata guardado.",
|
|
876
1109
|
no_data: "Sin datos.",
|
|
877
1110
|
tab_settings: "Settings",
|
|
878
|
-
tab_project:
|
|
1111
|
+
tab_project: "Proyecto",
|
|
879
1112
|
},
|
|
880
1113
|
|
|
881
1114
|
telegram: {
|
|
@@ -886,12 +1119,12 @@ export const es = {
|
|
|
886
1119
|
chat_id: "Chat ID (override)",
|
|
887
1120
|
saved: "Override guardado.",
|
|
888
1121
|
cleared: "Override eliminado — vuelve al default.",
|
|
889
|
-
override_active: "
|
|
1122
|
+
override_active: "Override activo",
|
|
890
1123
|
channel_badge: "Canal {name}",
|
|
891
1124
|
no_override: "Sin override. Los mensajes de este proyecto van al canal default.",
|
|
892
1125
|
respond_engine: "Responder con engine",
|
|
893
1126
|
route_agent: "route_to_agent",
|
|
894
|
-
route_hint:
|
|
1127
|
+
route_hint: "Slug del agente que atiende (vacío = super-agent).",
|
|
895
1128
|
bot_hint_none: "Si vacío, hereda del default.",
|
|
896
1129
|
},
|
|
897
1130
|
|
|
@@ -905,6 +1138,9 @@ export const es = {
|
|
|
905
1138
|
sidebar_title: "Memorias",
|
|
906
1139
|
general_group: "General",
|
|
907
1140
|
general_item: "Memoria del proyecto",
|
|
1141
|
+
committed: "En el repo",
|
|
1142
|
+
local_item: "Memoria interna",
|
|
1143
|
+
not_committed: "Local",
|
|
908
1144
|
project_title: "Memoria del proyecto",
|
|
909
1145
|
project_desc: "Hechos durables a nivel proyecto. .apc/memory.md — la leen los agentes y el super-agente.",
|
|
910
1146
|
project_ph: "# Memoria del proyecto\n\nHechos estables que cualquier agente debería saber…",
|
|
@@ -929,7 +1165,7 @@ export const es = {
|
|
|
929
1165
|
workspaces_new: "Nuevo proyecto",
|
|
930
1166
|
workspaces_empty: "Sin proyectos. Agregá uno con el botón de arriba.",
|
|
931
1167
|
sessions_title: "Sessions",
|
|
932
|
-
sessions_desc: "Sesiones de todos los engines (apx · claude · codex), más nuevas primero.",
|
|
1168
|
+
sessions_desc: "Sesiones de todos los engines (apx · claude · codex · opencode), más nuevas primero.",
|
|
933
1169
|
sessions_desc_scoped: "Sesiones en la carpeta de este proyecto ({path}), todos los engines, más nuevas primero.",
|
|
934
1170
|
sessions_all: "Todos los engines",
|
|
935
1171
|
sessions_empty: "Sin sesiones.",
|
|
@@ -940,15 +1176,26 @@ export const es = {
|
|
|
940
1176
|
sessions_clear: "Limpiar filtros",
|
|
941
1177
|
sessions_refresh: "Refrescar lista",
|
|
942
1178
|
sessions_no_match: "Ninguna sesión coincide con «{q}».",
|
|
943
|
-
sessions_act_cmd: "Copiar comando
|
|
1179
|
+
sessions_act_cmd: "Copiar comando",
|
|
944
1180
|
sessions_act_ask: "Pedir a {name} que continúe",
|
|
945
1181
|
sessions_act_folder:"Abrir carpeta",
|
|
946
1182
|
sessions_act_path: "Copiar ruta",
|
|
1183
|
+
sessions_act_menu: "Acciones de la sesión",
|
|
1184
|
+
sessions_act_open_terminal:"Continuar acá",
|
|
1185
|
+
sessions_pick: "Elegí una sesión para ver el detalle.",
|
|
1186
|
+
sessions_detail_command:"Comando para continuarla",
|
|
1187
|
+
sessions_detail_folder:"Carpeta",
|
|
1188
|
+
sessions_detail_updated:"Última actividad",
|
|
1189
|
+
sessions_detail_last_prompt:"Último mensaje",
|
|
1190
|
+
sessions_term_connecting:"Conectando…",
|
|
1191
|
+
sessions_term_closed:"Sesión cerrada",
|
|
1192
|
+
sessions_term_close:"Cerrar la terminal",
|
|
947
1193
|
sessions_cmd_copied:"Comando copiado — pegalo en tu terminal",
|
|
948
1194
|
sessions_path_copied:"Ruta copiada",
|
|
949
1195
|
sessions_copy_failed:"No se pudo copiar",
|
|
950
1196
|
sessions_no_folder: "Esta sesión no tiene carpeta",
|
|
951
1197
|
sessions_no_path: "Esta sesión no tiene ruta",
|
|
1198
|
+
sessions_no_command:"Este engine no permite retomar la sesión",
|
|
952
1199
|
sessions_folder_failed:"No se pudo abrir la carpeta: {msg}",
|
|
953
1200
|
defaults_title: "Agent defaults",
|
|
954
1201
|
defaults_desc: "Plantillas globales del vault. Las bundled vienen con APX y siempre están; las que crees o edites quedan en ~/.apx/agents y se superponen. Importalas a un proyecto desde Agents › Importar.",
|
|
@@ -981,21 +1228,21 @@ export const es = {
|
|
|
981
1228
|
desc_global: "Actividad del daemon (canales globales: telegram, direct…). ~/.apx/messages/<channel>/.",
|
|
982
1229
|
desc_project: "Actividad del proyecto. ~/.apx/projects/<id>/messages/.",
|
|
983
1230
|
filter_channel: "filtrar canal (ej. telegram)",
|
|
984
|
-
filter_dir: "
|
|
1231
|
+
filter_dir: "Dirección",
|
|
985
1232
|
all_directions: "Todas las direcciones",
|
|
986
1233
|
in: "Entrada (in)",
|
|
987
1234
|
out: "Salida (out)",
|
|
988
|
-
filter_type: "
|
|
1235
|
+
filter_type: "Tipo",
|
|
989
1236
|
all_types: "Todos los tipos",
|
|
990
|
-
search_text: "
|
|
1237
|
+
search_text: "Buscar en el texto…",
|
|
991
1238
|
count_of: "de",
|
|
992
1239
|
no_activity: "Sin actividad.",
|
|
993
1240
|
no_activity_ch: "Sin actividad en el canal \"{ch}\".",
|
|
994
1241
|
error: "No pude leer los mensajes: {msg}",
|
|
995
|
-
show_more: "
|
|
996
|
-
event_routine_created: "
|
|
997
|
-
event_routine_updated: "
|
|
998
|
-
show_less: "
|
|
1242
|
+
show_more: "Ver más",
|
|
1243
|
+
event_routine_created: "Rutina creada",
|
|
1244
|
+
event_routine_updated: "Rutina actualizada",
|
|
1245
|
+
show_less: "Ver menos",
|
|
999
1246
|
daemon_errors: "Errores del daemon (~/.apx/logs/errors.jsonl)",
|
|
1000
1247
|
no_errors: "Sin errores registrados. 🎉",
|
|
1001
1248
|
},
|
|
@@ -1004,15 +1251,15 @@ export const es = {
|
|
|
1004
1251
|
title: "Contactos de Telegram",
|
|
1005
1252
|
desc: "Quién le escribe a los bots. El rol define qué herramientas puede usar; un invitado no tiene permisos hasta que le asignes un rol.",
|
|
1006
1253
|
empty: "Todavía no hay contactos — se registran solos cuando alguien escribe a un bot.",
|
|
1007
|
-
owner_badge: "
|
|
1254
|
+
owner_badge: "Dueño",
|
|
1008
1255
|
assign_role: "Asignar rol",
|
|
1009
1256
|
owner_hint: "Es dueño de un canal — cambialo desde el canal",
|
|
1010
1257
|
removed: "Contacto eliminado.",
|
|
1011
1258
|
delete_confirm: "¿Borrar el contacto {name}?",
|
|
1012
|
-
last_seen: "
|
|
1013
|
-
tools_all: "
|
|
1014
|
-
tools_none: "
|
|
1015
|
-
tools_label: "
|
|
1259
|
+
last_seen: "Visto:",
|
|
1260
|
+
tools_all: "Tools: todas",
|
|
1261
|
+
tools_none: "Tools: ninguna",
|
|
1262
|
+
tools_label: "Tools:",
|
|
1016
1263
|
},
|
|
1017
1264
|
|
|
1018
1265
|
telegram_channels: {
|
|
@@ -1023,7 +1270,7 @@ export const es = {
|
|
|
1023
1270
|
removed: "Canal eliminado.",
|
|
1024
1271
|
delete_confirm: "¿Borrar el canal {name}?",
|
|
1025
1272
|
no_owner: "sin dueño (se reclama al primer DM)",
|
|
1026
|
-
owner_label: "
|
|
1273
|
+
owner_label: "Dueño:",
|
|
1027
1274
|
},
|
|
1028
1275
|
|
|
1029
1276
|
telegram_channel_dialog: {
|
|
@@ -1037,10 +1284,10 @@ export const es = {
|
|
|
1037
1284
|
route_label: "route_to_agent",
|
|
1038
1285
|
route_hint: "Agente que contesta; vacío = super-agent APX.",
|
|
1039
1286
|
owner_label: "owner_user_id",
|
|
1040
|
-
owner_hint: "user_id de Telegram del dueño de este canal. Override del rol global a 'owner' acá. Si lo dejás vacío, el primer mensaje privado lo reclama.",
|
|
1287
|
+
owner_hint: "El user_id de Telegram del dueño de este canal. Override del rol global a 'owner' acá. Si lo dejás vacío, el primer mensaje privado lo reclama.",
|
|
1041
1288
|
owner_ph: "889721252",
|
|
1042
1289
|
respond_label: "Responder con engine (no echo)",
|
|
1043
|
-
name_required: "
|
|
1290
|
+
name_required: "Name requerido",
|
|
1044
1291
|
saved: "Canal guardado.",
|
|
1045
1292
|
},
|
|
1046
1293
|
|
|
@@ -1053,9 +1300,9 @@ export const es = {
|
|
|
1053
1300
|
title: "Roles",
|
|
1054
1301
|
desc: "Cada rol define qué herramientas del super-agent puede usar quien lo tenga asignado. 'owner' siempre = todas; 'guest' siempre = ninguna (solo chat).",
|
|
1055
1302
|
empty: "No hay roles definidos.",
|
|
1056
|
-
tools_all: "
|
|
1057
|
-
tools_none: "
|
|
1058
|
-
builtin: "
|
|
1303
|
+
tools_all: "Todas las herramientas",
|
|
1304
|
+
tools_none: "Ninguna herramienta",
|
|
1305
|
+
builtin: "Built-in",
|
|
1059
1306
|
delete_confirm: "¿Borrar el rol \"{name}\"?",
|
|
1060
1307
|
removed: "Rol eliminado.",
|
|
1061
1308
|
saved: "Rol \"{name}\" guardado.",
|
|
@@ -1110,6 +1357,19 @@ export const es = {
|
|
|
1110
1357
|
new_session: "Nueva sesión",
|
|
1111
1358
|
untitled: "Nueva sesión",
|
|
1112
1359
|
no_sessions: "Todavía no hay sesiones — creá una para empezar a codear.",
|
|
1360
|
+
no_sessions_here: "No hay sesiones en este proyecto. Sacá el filtro para ver el resto.",
|
|
1361
|
+
msg_count: "{n} msg",
|
|
1362
|
+
all_projects: "Todos los proyectos",
|
|
1363
|
+
all_projects_desc: "Sesiones de todos los proyectos registrados, las más recientes primero",
|
|
1364
|
+
new_session_desc: "Elegí dónde corre y quién responde en ella.",
|
|
1365
|
+
create_session: "Crear sesión",
|
|
1366
|
+
field_project: "Proyecto",
|
|
1367
|
+
field_project_hint: "Archivos, terminal y diff quedan acotados a él.",
|
|
1368
|
+
field_agent: "Agente",
|
|
1369
|
+
field_agent_hint: "Quién responde en esta sesión. Se puede cambiar después desde Contexto.",
|
|
1370
|
+
field_mode: "Modo",
|
|
1371
|
+
field_title: "Título",
|
|
1372
|
+
field_title_hint: "Opcional — cómo se ve la sesión en la lista.",
|
|
1113
1373
|
pick_project: "Elegí un proyecto para ver sus sesiones.",
|
|
1114
1374
|
rename: "Renombrar",
|
|
1115
1375
|
delete: "Eliminar",
|
|
@@ -1149,6 +1409,8 @@ export const es = {
|
|
|
1149
1409
|
close: "Cerrar",
|
|
1150
1410
|
reload: "Recargar",
|
|
1151
1411
|
discard_changes: "Descartar cambios",
|
|
1412
|
+
discard_label: "Descartar",
|
|
1413
|
+
save_label: "Guardar",
|
|
1152
1414
|
save_shortcut_hint: "Guardar (Cmd/Ctrl+S)",
|
|
1153
1415
|
artifacts_rename: "Renombrar",
|
|
1154
1416
|
artifacts_view: "Ver contenido",
|
|
@@ -1162,12 +1424,15 @@ export const es = {
|
|
|
1162
1424
|
artifacts_preview_public:"URL pública",
|
|
1163
1425
|
artifacts_copy_url: "Copiar URL",
|
|
1164
1426
|
artifacts_preview_started: "Preview activa en {url}",
|
|
1427
|
+
tree_title: "Archivos",
|
|
1165
1428
|
tree_collapse_all: "Colapsar todo",
|
|
1429
|
+
terminal_title: "Terminal",
|
|
1166
1430
|
terminal_clear: "Limpiar",
|
|
1167
1431
|
terminal_close: "Cerrar terminal",
|
|
1168
1432
|
},
|
|
1169
1433
|
|
|
1170
1434
|
desktop_screen: {
|
|
1435
|
+
model_title: "Modelo",
|
|
1171
1436
|
status_title: "Estado",
|
|
1172
1437
|
autostart_title: "Arranque automático",
|
|
1173
1438
|
shortcut_title: "Atajo de teclado",
|
|
@@ -1177,6 +1442,89 @@ export const es = {
|
|
|
1177
1442
|
open_config: "Configuración",
|
|
1178
1443
|
},
|
|
1179
1444
|
|
|
1445
|
+
images_screen: {
|
|
1446
|
+
providers_title: "Motores de imagen",
|
|
1447
|
+
test_title: "Probar imagen",
|
|
1448
|
+
defaults_title: "Valores por defecto",
|
|
1449
|
+
configure_provider: "Configurar {name}",
|
|
1450
|
+
},
|
|
1451
|
+
|
|
1452
|
+
images_ui: {
|
|
1453
|
+
providers_desc: "Los motores se prueban en orden y dibuja el primero que responde. Apagá uno para sacarlo de la cadena, o agregá tu propio endpoint: un servidor en esta Mac, una máquina en la red o una clave en la nube.",
|
|
1454
|
+
providers_load_error: "No se pudieron cargar los motores: {msg}",
|
|
1455
|
+
test_desc: "Dibujá una imagen con el ruteo actual. También avisa qué no pudo respetar el motor.",
|
|
1456
|
+
defaults_desc: "La capa de abajo de toda imagen. La configuración de cada motor los pisa, y un argumento explícito pisa a los dos.",
|
|
1457
|
+
move_up: "Subir",
|
|
1458
|
+
move_down: "Bajar",
|
|
1459
|
+
configure: "Configurar",
|
|
1460
|
+
remove: "Eliminar",
|
|
1461
|
+
add_provider: "Agregar motor",
|
|
1462
|
+
new_provider: "Motor nuevo",
|
|
1463
|
+
remove_confirm: "¿Eliminar este motor?",
|
|
1464
|
+
custom_note: "Tu propio endpoint.",
|
|
1465
|
+
custom_desc: "Cualquier servidor que hable uno de los tres dialectos. Elegí el que responde: equivocarse da 404, no una diferencia sutil.",
|
|
1466
|
+
badge_local: "Local",
|
|
1467
|
+
badge_available: "Responde",
|
|
1468
|
+
badge_unavailable: "No responde",
|
|
1469
|
+
badge_not_configured: "Sin configurar",
|
|
1470
|
+
label_label: "Nombre",
|
|
1471
|
+
label_hint: "Cómo aparece en esta lista.",
|
|
1472
|
+
kind_label: "Dialecto",
|
|
1473
|
+
kind_hint: "Con qué API responde el servidor.",
|
|
1474
|
+
base_url_label: "URL base",
|
|
1475
|
+
base_url_req_label: "URL base (obligatoria)",
|
|
1476
|
+
base_url_hint: "El origen del servidor, sin la ruta de la API — por ejemplo http://127.0.0.1:7860 para uno local o http://maquina.lan:8189 para uno en la red.",
|
|
1477
|
+
base_url_openai_hint: "Dejala vacía para OpenAI. Completala para apuntar a cualquier servidor compatible con OpenAI.",
|
|
1478
|
+
api_key_label: "Clave de API",
|
|
1479
|
+
api_key_set: "Cargada (…{suffix}) — escribí para reemplazarla",
|
|
1480
|
+
api_key_keep_hint: "Dejalo vacío para conservar la clave guardada.",
|
|
1481
|
+
api_key_optional_hint: "Opcional. La mayoría de los servidores locales y de red no necesitan ninguna.",
|
|
1482
|
+
api_key_reuse_hint: "Opcional: si no, usa {engine} o la variable de entorno {env}.",
|
|
1483
|
+
model_label: "Modelo",
|
|
1484
|
+
model_hint: "Checkpoint o id de modelo, cuando el servidor puede cambiarlo. Los que alojan uno solo lo ignoran.",
|
|
1485
|
+
optional_ph: "Opcional",
|
|
1486
|
+
server_default_ph: "Valor del servidor",
|
|
1487
|
+
engine_default: "Valor del motor",
|
|
1488
|
+
configured_default: "Valor configurado",
|
|
1489
|
+
engine_defaults_hint: "Valores de ESTE motor — son del servidor, no del prompt. Un checkpoint turbo quiere unos 8 pasos con cfg 1; uno normal quiere 20 con cfg 7.",
|
|
1490
|
+
size_label: "Tamaño",
|
|
1491
|
+
size_hint: "Ancho x alto, por ejemplo 768x512.",
|
|
1492
|
+
default_size_hint: "Se usa cuando ni el motor ni la llamada dicen otra cosa.",
|
|
1493
|
+
steps_label: "Pasos",
|
|
1494
|
+
steps_hint: "Pasos de muestreo. Más es más lento, no siempre mejor.",
|
|
1495
|
+
cfg_label: "Guía (cfg)",
|
|
1496
|
+
cfg_hint: "Cuánto sigue la imagen al prompt.",
|
|
1497
|
+
sampler_label: "Sampler",
|
|
1498
|
+
scheduler_label: "Scheduler",
|
|
1499
|
+
format_label: "Formato",
|
|
1500
|
+
format_hint: "Solo donde el servidor deja elegir.",
|
|
1501
|
+
quality_label: "Calidad",
|
|
1502
|
+
quality_hint: "Solo OpenAI: standard o hd.",
|
|
1503
|
+
timeout_label: "Tiempo límite (s)",
|
|
1504
|
+
timeout_hint: "Cuánto esperar una imagen antes de abandonar.",
|
|
1505
|
+
negative_label: "Prompt negativo",
|
|
1506
|
+
negative_hint: "Qué dejar afuera de toda imagen. El dialecto de OpenAI no tiene campo para esto.",
|
|
1507
|
+
negative_ph: "Borroso, marca de agua, texto",
|
|
1508
|
+
count_label: "Imágenes por corrida",
|
|
1509
|
+
count_hint: "Cuántas dibujar de una vez.",
|
|
1510
|
+
prompt_label: "Prompt",
|
|
1511
|
+
prompt_ph: "Un zorro de origami verde sobre fondo blanco, luz de estudio",
|
|
1512
|
+
engine_label: "Motor",
|
|
1513
|
+
test_routed_chain: "Ruteado (el primero que responda)",
|
|
1514
|
+
test_routed_single: "Ruteado ({id})",
|
|
1515
|
+
generate: "Generar",
|
|
1516
|
+
download: "Descargar",
|
|
1517
|
+
seed_is: "Semilla {seed}",
|
|
1518
|
+
ignored_note: "{provider} ignoró: {options}. Ese dialecto no tiene campo para eso.",
|
|
1519
|
+
mock_desc: "El motor de prueba offline. Siempre disponible para que una llamada nunca falle del todo — no hay nada que configurar.",
|
|
1520
|
+
err_label_required: "El nombre es obligatorio.",
|
|
1521
|
+
err_base_url_required: "La URL base es obligatoria.",
|
|
1522
|
+
err_save: "No se pudo guardar.",
|
|
1523
|
+
toast_config_saved: "Motor guardado.",
|
|
1524
|
+
toast_defaults_saved: "Valores guardados.",
|
|
1525
|
+
toast_provider_removed: "Motor eliminado.",
|
|
1526
|
+
},
|
|
1527
|
+
|
|
1180
1528
|
voice_screen: {
|
|
1181
1529
|
providers_title: "Proveedores de voz (TTS)",
|
|
1182
1530
|
test_title: "Probar voz",
|
|
@@ -1202,9 +1550,26 @@ export const es = {
|
|
|
1202
1550
|
provider_hint: "Ollama es local y gratis. Gemini/OpenAI usan la API key de su sección en Modelos (o la de abajo).",
|
|
1203
1551
|
mode_label: "Modo de selección",
|
|
1204
1552
|
mode_hint: "Cadena cae al siguiente si uno falla; Único usa exactamente el proveedor elegido.",
|
|
1205
|
-
|
|
1206
|
-
|
|
1553
|
+
chain_label: "Orden de fallback",
|
|
1554
|
+
chain_hint: "Ordená con las flechas: embebe el primer motor disponible. Las keys salen de Engines & models — elegí acá el modelo de embedding de cada proveedor. Apagá Ollama para dejar de usarlo.",
|
|
1555
|
+
keys_reuse_note: "Las API keys se reutilizan de Engines & models — no hace falta volver a cargarlas. Sólo elegí el modelo de embedding por proveedor.",
|
|
1556
|
+
model_ph: "id del modelo de embedding",
|
|
1557
|
+
move_up: "Subir",
|
|
1558
|
+
move_down: "Bajar",
|
|
1559
|
+
badge_local: "Local",
|
|
1560
|
+
badge_custom: "Custom",
|
|
1561
|
+
not_configured: "Sin key",
|
|
1562
|
+
always_on: "Siempre activo",
|
|
1563
|
+
add_custom: "Agregar proveedor custom",
|
|
1564
|
+
remove: "Quitar",
|
|
1565
|
+
custom_default_label: "Custom",
|
|
1566
|
+
custom_label_ph: "Nombre",
|
|
1567
|
+
custom_key_label: "API key",
|
|
1568
|
+
custom_optional_ph: "(opcional)",
|
|
1569
|
+
available: "Disponible",
|
|
1570
|
+
unavailable: "No disp.",
|
|
1207
1571
|
test_btn: "Probar embedding",
|
|
1572
|
+
active_embedder: "Activo: {embedder}",
|
|
1208
1573
|
reindex_btn: "Reindexar memoria",
|
|
1209
1574
|
test_ok: "Embedding OK con {embedder}",
|
|
1210
1575
|
test_failed: "Test falló: {msg}",
|
|
@@ -1243,24 +1608,44 @@ export const es = {
|
|
|
1243
1608
|
compact_fallback_ph: "(vacío → modelo del super-agente)",
|
|
1244
1609
|
},
|
|
1245
1610
|
|
|
1611
|
+
provider_test: {
|
|
1612
|
+
title: "Probar {name}",
|
|
1613
|
+
description: "Un mensaje, una respuesta. No es un chat: no se guarda nada ni se manda historial.",
|
|
1614
|
+
model_label: "Modelo a probar",
|
|
1615
|
+
model_hint: "Elegí uno de la lista o escribí el id a mano.",
|
|
1616
|
+
message_label: "Mensaje",
|
|
1617
|
+
message_ph: "Escribí algo corto…",
|
|
1618
|
+
default_message: "Hola, ¿me escuchás?",
|
|
1619
|
+
send: "Enviar",
|
|
1620
|
+
waiting: "Esperando respuesta…",
|
|
1621
|
+
empty_reply: "(respondió vacío)",
|
|
1622
|
+
tokens: "{n} tokens",
|
|
1623
|
+
served: "Servido {id}",
|
|
1624
|
+
served_mismatch: "el gateway sirvió otro id",
|
|
1625
|
+
button: "Probar la conexión",
|
|
1626
|
+
},
|
|
1627
|
+
|
|
1246
1628
|
router_panel: {
|
|
1247
1629
|
title: "Router de modelos",
|
|
1248
1630
|
description: "Un único router general (sin casos por tarea). Elegí un proveedor y un modelo; si el activo falla, prueba la cadena de fallback en orden.",
|
|
1249
|
-
badge_default: "
|
|
1631
|
+
badge_default: "Default",
|
|
1250
1632
|
no_providers: "Agregá un proveedor abajo para poder elegir modelos.",
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
fallback_empty: "Sin fallback configurado.",
|
|
1633
|
+
chain_title: "Cadena de modelos",
|
|
1634
|
+
chain_desc: "El #1 es el modelo por default; si falla, sigue con los de abajo en orden. Click en uno para editarlo.",
|
|
1635
|
+
reorder: "Arrastrá para reordenar",
|
|
1636
|
+
chain_empty: "Todavía sin modelos. Agregá el primero abajo.",
|
|
1256
1637
|
add_to_chain: "Agregar a la cadena",
|
|
1257
|
-
done: "
|
|
1638
|
+
done: "Listo",
|
|
1258
1639
|
save: "Guardar router",
|
|
1259
1640
|
saved: "Guardado",
|
|
1260
1641
|
saved_toast: "Router guardado.",
|
|
1261
1642
|
provider_ph: "— proveedor —",
|
|
1262
|
-
provider_not_found: "⚠ {name} (no encontrado)",
|
|
1263
1643
|
provider_not_configured: "El proveedor \"{name}\" no está configurado.",
|
|
1644
|
+
provider_off: "El proveedor \"{name}\" está desactivado.",
|
|
1645
|
+
provider_offline: "El proveedor \"{name}\" no está conectado (sin api key o servidor caído).",
|
|
1646
|
+
hint_off: "Desactivado",
|
|
1647
|
+
hint_offline: "sin conexión",
|
|
1648
|
+
ollama_empty: "Ollama no respondió y no hay nada cacheado — escribí el modelo a mano.",
|
|
1264
1649
|
},
|
|
1265
1650
|
|
|
1266
1651
|
routing_panel: {
|
|
@@ -1324,6 +1709,8 @@ export const es = {
|
|
|
1324
1709
|
custom: "Custom",
|
|
1325
1710
|
json_mode: "JSON",
|
|
1326
1711
|
form_mode: "Volver al formulario",
|
|
1712
|
+
tab_form: "Formulario",
|
|
1713
|
+
tab_json: "JSON",
|
|
1327
1714
|
json_label: "Config del provider (JSON)",
|
|
1328
1715
|
json_hint: "Se guarda como engines.{slug} en config.json",
|
|
1329
1716
|
json_help: "Debe ser un objeto JSON válido con al menos engine. El slug se toma del formulario.",
|
|
@@ -1350,6 +1737,8 @@ export const es = {
|
|
|
1350
1737
|
price_cache_write: "$ cache write / 1M",
|
|
1351
1738
|
model_limits_label: "Límites de contexto por modelo (JSON)",
|
|
1352
1739
|
active_label: "Activo (los agentes pueden usarlo)",
|
|
1740
|
+
thinking_label: "Pensar antes de responder",
|
|
1741
|
+
thinking_hint: "Apagalo si el modelo razona en voz alta y gasta el presupuesto de tokens antes de escribir la respuesta.",
|
|
1353
1742
|
err_slug_required: "Slug requerido.",
|
|
1354
1743
|
err_slug_required_form: "Slug requerido (en el formulario).",
|
|
1355
1744
|
err_slug_exists: "Ya existe un provider \"{slug}\".",
|
|
@@ -1375,13 +1764,106 @@ export const es = {
|
|
|
1375
1764
|
|
|
1376
1765
|
chat_ui: {
|
|
1377
1766
|
copy: "Copiar",
|
|
1767
|
+
edit: "Editar",
|
|
1768
|
+
edit_resend: "Guardar y reenviar",
|
|
1769
|
+
regenerate: "Regenerar",
|
|
1378
1770
|
stop: "Detener",
|
|
1379
1771
|
send: "Enviar",
|
|
1772
|
+
queued: "En cola",
|
|
1773
|
+
queued_cancel: "No mandarlo",
|
|
1774
|
+
running_elsewhere: "Escribiendo respuesta",
|
|
1775
|
+
unread_reply: "Respuesta nueva",
|
|
1776
|
+
send_mode_interrupt: "Interrumpe",
|
|
1777
|
+
send_mode_queue: "Encola",
|
|
1778
|
+
send_mode_tip_interrupt: "Escribir durante un turno lo corta y arranca con tu mensaje. Tocá para encolar en su lugar.",
|
|
1779
|
+
send_mode_tip_queue: "Escribir durante un turno espera a que termine. Tocá para interrumpir en su lugar.",
|
|
1380
1780
|
pick_model: "Elegir modelo (o Auto)",
|
|
1381
1781
|
insert_variable: "Insertar variable",
|
|
1382
|
-
ctx_files: "
|
|
1782
|
+
ctx_files: "Archivos",
|
|
1383
1783
|
ctx_actors: "{n} agentes/modelos",
|
|
1384
1784
|
ctx_turns: "{n} turnos",
|
|
1785
|
+
ctx_tokens: "Tokens",
|
|
1786
|
+
ctx_tools: "Herramientas",
|
|
1787
|
+
ctx_expand: "Ver el detalle del contexto",
|
|
1788
|
+
jump_latest: "Ir al final",
|
|
1789
|
+
jump_latest_new: "Mensajes nuevos",
|
|
1790
|
+
typing: "{name} está escribiendo…",
|
|
1791
|
+
working: "{name} está trabajando…",
|
|
1792
|
+
typing_generic: "Escribiendo…",
|
|
1793
|
+
working_generic: "Trabajando…",
|
|
1794
|
+
actions_count: "{n} acciones",
|
|
1795
|
+
actions_count_one: "1 acción",
|
|
1796
|
+
actions_range: "Acciones {from}–{to} de {total}",
|
|
1797
|
+
actions_at: "Acción {n} de {total}",
|
|
1798
|
+
show_tools: "Mostrar tools",
|
|
1799
|
+
show_tools_hint: "Off = chat pelado; on = acciones y tools visibles",
|
|
1800
|
+
show_tools_on: "Vista completa (tools)",
|
|
1801
|
+
show_tools_off: "Vista simple (sin tools)",
|
|
1802
|
+
thinking_label: "Pensamiento",
|
|
1803
|
+
thinking_running: "Pensando…",
|
|
1804
|
+
attachment: "Adjunto",
|
|
1805
|
+
attachment_open: "Descargar",
|
|
1806
|
+
attachment_missing: "no se descargó",
|
|
1807
|
+
attachment_failed: "no se pudo abrir",
|
|
1808
|
+
voice_note: "Nota de voz",
|
|
1809
|
+
attach: "Adjuntar un archivo",
|
|
1810
|
+
attach_remove: "Quitar",
|
|
1811
|
+
attach_failed: "no se pudo subir",
|
|
1812
|
+
attach_bad_type: "No se pueden adjuntar archivos {ext}",
|
|
1813
|
+
attach_too_big: "pasa los {mb} MB",
|
|
1814
|
+
attach_photo: "Foto o video",
|
|
1815
|
+
attach_file: "Archivo",
|
|
1816
|
+
attach_camera: "Cámara",
|
|
1817
|
+
record: "Grabar audio",
|
|
1818
|
+
rec_cancel: "Descartar",
|
|
1819
|
+
rec_insecure: "El micrófono necesita HTTPS (o localhost)",
|
|
1820
|
+
rec_denied: "No diste permiso al micrófono",
|
|
1821
|
+
rec_failed: "No se pudo abrir el micrófono",
|
|
1822
|
+
transcribing: "Transcribiendo…",
|
|
1823
|
+
},
|
|
1824
|
+
|
|
1825
|
+
access: {
|
|
1826
|
+
install_title: "Instalar como app",
|
|
1827
|
+
install_sub: "El panel se instala en el teléfono como una app: ícono propio, sin barra de direcciones.",
|
|
1828
|
+
install_now: "Instalar app",
|
|
1829
|
+
install_done: "Ya está instalada",
|
|
1830
|
+
install_ios: "En iPhone: Compartir → Añadir a pantalla de inicio. Safari no permite instalarla desde acá.",
|
|
1831
|
+
install_insecure: "Este navegador no puede instalarla desde una dirección http:// de red local. Necesita HTTPS — la forma más simple es publicar el panel por Tailscale, abajo. Sin HTTPS tampoco hay micrófono ni portapapeles.",
|
|
1832
|
+
install_unsupported: "Este navegador todavía no ofreció instalar la app. En Chrome podés forzarlo desde el menú ⋮ → Instalar aplicación.",
|
|
1833
|
+
addresses_title: "Direcciones",
|
|
1834
|
+
addresses_sub: "Todas las formas de llegar a este daemon. Si una deja de responder, el panel prueba las otras solo.",
|
|
1835
|
+
secure: "Seguro",
|
|
1836
|
+
here: "Estás acá",
|
|
1837
|
+
copy: "Copiar",
|
|
1838
|
+
copied: "Copiado",
|
|
1839
|
+
qr: "Ver QR",
|
|
1840
|
+
qr_hint: "Escaneá con la cámara del teléfono. Después vinculá el dispositivo para el token.",
|
|
1841
|
+
local_only: "El daemon sólo escucha en loopback: nada de la red puede llegar. Para compartirlo: apx panel share",
|
|
1842
|
+
kind_ts_https: "Tailnet HTTPS",
|
|
1843
|
+
kind_ts: "Tailnet",
|
|
1844
|
+
kind_lan: "Red local",
|
|
1845
|
+
kind_local: "Esta máquina",
|
|
1846
|
+
tailscale_title: "Tailscale",
|
|
1847
|
+
tailscale_sub: "Un nombre estable que funciona desde cualquier lado, con certificado real.",
|
|
1848
|
+
ts_absent: "Tailscale no está instalado en esta máquina.",
|
|
1849
|
+
ts_stopped: "Tailscale está instalado pero no conectado (estado: {state}). Iniciá sesión en la app de Tailscale.",
|
|
1850
|
+
ts_running: "Conectado",
|
|
1851
|
+
serve_start: "Publicar por HTTPS",
|
|
1852
|
+
serve_stop: "Dejar de publicar",
|
|
1853
|
+
serve_on: "Publicado en el tailnet",
|
|
1854
|
+
serve_off: "Ya no se publica",
|
|
1855
|
+
serve_failed: "No se pudo publicar",
|
|
1856
|
+
why_https: "Sin HTTPS el navegador apaga tres cosas: instalar la app, el micrófono y el portapapeles. No es una decisión de APX.",
|
|
1857
|
+
},
|
|
1858
|
+
|
|
1859
|
+
mobile_link: {
|
|
1860
|
+
title: "Abrir en el teléfono",
|
|
1861
|
+
desc: "Escaneá el QR con la cámara del teléfono para abrir el chat mobile.",
|
|
1862
|
+
scan_paired: "Un escaneo y queda: abre el chat y vincula el dispositivo.",
|
|
1863
|
+
scan_plain: "Abre el chat mobile. Si el dispositivo no está vinculado, te lo va a pedir ahí.",
|
|
1864
|
+
paired: "Listo, el teléfono ya está vinculado",
|
|
1865
|
+
insecure: "Esta dirección es http://, así que en el teléfono no vas a poder instalarla como app ni grabar audio. Para eso: apx panel tailscale on",
|
|
1866
|
+
open_chat: "Abrir chat mobile",
|
|
1385
1867
|
},
|
|
1386
1868
|
|
|
1387
1869
|
sidebar_ui: {
|
|
@@ -1421,7 +1903,7 @@ export const es = {
|
|
|
1421
1903
|
openai_style_hint: "Voz base / instruct, usada por endpoints custom (la persona que se mantiene en todo el audio). El tts-1 de OpenAI la ignora.",
|
|
1422
1904
|
style_label: "Estilo (cómo debería hablar)",
|
|
1423
1905
|
style_hint: "Instrucción en lenguaje natural. Vacío = sin estilo. Ej.: 'hablá en un tono alegre y pausado'.",
|
|
1424
|
-
style_ph: "
|
|
1906
|
+
style_ph: "Hablá en un tono alegre y enérgico",
|
|
1425
1907
|
temperature_label: "Temperatura (opcional)",
|
|
1426
1908
|
temperature_hint: "Temperatura de sampleo para endpoints custom. Vacío = default del servidor.",
|
|
1427
1909
|
emotions_short: "Emociones",
|
|
@@ -1443,12 +1925,12 @@ export const es = {
|
|
|
1443
1925
|
mode_single_btn: "Solo engine default",
|
|
1444
1926
|
move_up: "Subir",
|
|
1445
1927
|
move_down: "Bajar",
|
|
1446
|
-
badge_local: "
|
|
1447
|
-
badge_available: "
|
|
1448
|
-
badge_unavailable: "
|
|
1449
|
-
badge_not_configured: "
|
|
1450
|
-
badge_default: "
|
|
1451
|
-
badge_custom: "
|
|
1928
|
+
badge_local: "Local",
|
|
1929
|
+
badge_available: "Disponible",
|
|
1930
|
+
badge_unavailable: "Configurado, no disponible",
|
|
1931
|
+
badge_not_configured: "Sin configurar",
|
|
1932
|
+
badge_default: "Default",
|
|
1933
|
+
badge_custom: "Custom",
|
|
1452
1934
|
set_as_default: "Usar como default",
|
|
1453
1935
|
configure: "Configurar",
|
|
1454
1936
|
remove: "Quitar",
|
|
@@ -1466,6 +1948,17 @@ export const es = {
|
|
|
1466
1948
|
custom_model_hint: "Opcional. La mayoría de los servidores locales lo ignoran (ej. QVox).",
|
|
1467
1949
|
custom_voice_hint: "Opcional. Un preset que entienda tu servidor (ej. custom). Vacío = default del servidor.",
|
|
1468
1950
|
custom_optional_ph: "(opcional)",
|
|
1951
|
+
language_label: "Idioma",
|
|
1952
|
+
language_hint: "El idioma que se le pide al servidor. Sólo se manda a endpoints custom. Vacío = lo que el servidor tenga de default, que es una adivinanza y no una decisión.",
|
|
1953
|
+
language_server_default: "Default del servidor",
|
|
1954
|
+
qvox_voice_hint: "Un speaker preset de tu servidor. Cada uno trae SU propio acento, así que el preset le gana al acento que describas en el Estilo. Vacío = el Estilo diseña la voz.",
|
|
1955
|
+
voice_none: "Ninguna — diseñar la voz desde el Estilo",
|
|
1956
|
+
qvox_style_hint: "Se manda al servidor como `instruct`. Sólo algunos motores lo usan: QVox/Qwen3-TTS diseña la voz con esto — timbre, edad, acento, ritmo ('un hombre argentino cálido, acento rioplatense') — mientras que Pocket TTS no tiene instruct y lo descarta, así que ahí la Voz es toda la voz.",
|
|
1957
|
+
style_overridden_hint: "Con un speaker elegido, un motor que entienda instruct sólo tiñe la interpretación — la voz y el acento del speaker ganan. Vaciá el campo Voz para que el estilo diseñe la voz. Los motores sin instruct ignoran este campo igual.",
|
|
1958
|
+
clone_label: "Grabación de referencia (clonado, opcional)",
|
|
1959
|
+
clone_hint: "Ruta en el filesystem DEL SERVIDOR a una grabación limpia de 10–20s. El clonado es el único modo que reproduce un acento que ningún preset tiene. Le gana a Voz y a Estilo.",
|
|
1960
|
+
ref_text_label: "Qué dice la grabación",
|
|
1961
|
+
ref_text_hint: "Opcional, y conviene completarlo: decirle al modelo qué está escuchando acelera bastante el clonado.",
|
|
1469
1962
|
stt_engine_label: "Engine de transcripción",
|
|
1470
1963
|
stt_engine_hint: "Local usa faster-whisper (requiere python3 + faster-whisper). OpenAI usa la key de engines.openai.",
|
|
1471
1964
|
stt_model_label: "Modelo local (whisper)",
|
|
@@ -1505,6 +1998,9 @@ export const es = {
|
|
|
1505
1998
|
test_synth_error: "No se pudo sintetizar.",
|
|
1506
1999
|
test_engine_label: "Engine",
|
|
1507
2000
|
test_engine_hint: "Override del default para probar.",
|
|
2001
|
+
test_voice_label: "Voz",
|
|
2002
|
+
test_voice_hint: "Sólo para esta prueba — no cambia lo que el motor tiene guardado.",
|
|
2003
|
+
test_voice_default: "Default del motor",
|
|
1508
2004
|
test_style_label: "Estilo (solo Gemini)",
|
|
1509
2005
|
test_style_hint: "Cómo debería hablar. Vacío = sin estilo.",
|
|
1510
2006
|
test_text_label: "Texto a decir",
|
|
@@ -1525,6 +2021,15 @@ export const es = {
|
|
|
1525
2021
|
err_label_required: "Falta el nombre.",
|
|
1526
2022
|
err_base_url_required:"Falta la base URL.",
|
|
1527
2023
|
toast_transcription_updated: "Transcripción actualizada.",
|
|
2024
|
+
qvox_title: "Voz local en esta Mac",
|
|
2025
|
+
qvox_body: "QVox corre Qwen3-TTS en la GPU de tu Mac: el audio no sale de la máquina, no se paga por minuto y no depende de que un servicio esté arriba.",
|
|
2026
|
+
qvox_note: "Necesita uv y Node 18 o superior: npm instala sólo el comando, el motor corre por uv. El primer modelo son varios gigas de descarga.",
|
|
2027
|
+
qvox_ask: "Pedile a {persona} que lo instale",
|
|
2028
|
+
qvox_repo: "Ver el repositorio",
|
|
2029
|
+
qvox_running: "Andando",
|
|
2030
|
+
qvox_stopped: "Detenido",
|
|
2031
|
+
qvox_stopped_hint: "QVox está configurado pero no contesta en su puerto. Levantalo con `qvox serve`, o revisá que su LaunchAgent esté cargado.",
|
|
2032
|
+
qvox_install_title: "Agregá QVox — una voz local con Qwen3 en esta Mac",
|
|
1528
2033
|
},
|
|
1529
2034
|
|
|
1530
2035
|
telegram_ui: {
|
|
@@ -1538,14 +2043,26 @@ export const es = {
|
|
|
1538
2043
|
message_label: "Texto",
|
|
1539
2044
|
send_chat_id: "chat_id: {id}",
|
|
1540
2045
|
default_apx: "APX por defecto",
|
|
1541
|
-
yes: "
|
|
1542
|
-
no: "
|
|
2046
|
+
yes: "Sí",
|
|
2047
|
+
no: "No",
|
|
1543
2048
|
user_id_fallback: "user_id {id}",
|
|
1544
2049
|
role_assigned: "{name} → {role}",
|
|
1545
2050
|
},
|
|
1546
2051
|
|
|
1547
2052
|
agents_form: {
|
|
1548
2053
|
emoji: "Emoji",
|
|
2054
|
+
icon: "Avatar",
|
|
2055
|
+
name: "Nombre",
|
|
2056
|
+
name_hint: "Se muestra en toda la UI. Vacío = se usa el slug.",
|
|
2057
|
+
name_ph: "Cody",
|
|
2058
|
+
slug_hint: "Id permanente: nombre de archivo, links y delegación.",
|
|
2059
|
+
skills_title: "Skills",
|
|
2060
|
+
skills_desc: "Skills del proyecto que este agente carga en su prompt.",
|
|
2061
|
+
skills_use_defaults: "Usar las default del proyecto",
|
|
2062
|
+
skills_use_defaults_hint: "El agente hereda las skills que el proyecto tenga activas. Desactivá para elegir por agente.",
|
|
2063
|
+
skills_empty: "Este proyecto todavía no tiene skills.",
|
|
2064
|
+
skills_locked: "Desactivada a nivel proyecto o global — activala en Skills para usarla acá.",
|
|
2065
|
+
create_defaults_note: "Skills y tools arrancan con las default del proyecto; ajustalas en el tab Config del agente.",
|
|
1549
2066
|
area: "Área",
|
|
1550
2067
|
role: "Rol",
|
|
1551
2068
|
no_role: "— sin rol —",
|
|
@@ -1575,8 +2092,8 @@ export const es = {
|
|
|
1575
2092
|
description: "Descripción",
|
|
1576
2093
|
no_area: "— sin área —",
|
|
1577
2094
|
roles: "Roles",
|
|
1578
|
-
add_role: "
|
|
1579
|
-
no_roles: "
|
|
2095
|
+
add_role: "Rol",
|
|
2096
|
+
no_roles: "Sin roles",
|
|
1580
2097
|
general_roles: "Roles generales",
|
|
1581
2098
|
delete_area: "Borrar área",
|
|
1582
2099
|
delete_role: "Borrar rol",
|
|
@@ -1608,18 +2125,38 @@ export const es = {
|
|
|
1608
2125
|
},
|
|
1609
2126
|
|
|
1610
2127
|
tasks: {
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
2128
|
+
category_general: "Tarea",
|
|
2129
|
+
category_trip: "Mandado en el camino",
|
|
2130
|
+
location_label: "Lugar",
|
|
2131
|
+
location_place: "Nombre del lugar",
|
|
2132
|
+
location_address: "Dirección",
|
|
2133
|
+
location_at: "Coordenadas",
|
|
2134
|
+
location_at_invalid: "Formato: latitud, longitud (ej. -41.1335, -71.3103)",
|
|
2135
|
+
location_place_ph: "Farmacia del Puente",
|
|
2136
|
+
location_address_ph: "Av. San Martín 1234, Bariloche",
|
|
2137
|
+
location_radius: "Radio (m)",
|
|
2138
|
+
location_radius_ph: "Por defecto",
|
|
2139
|
+
location_hint: "Dónde hay que pasar. El nombre solo ya sirve para el aviso; las coordenadas son las que disparan el geocerco cuando vas manejando.",
|
|
2140
|
+
field_category: "Tipo",
|
|
2141
|
+
state_open: "Abiertas",
|
|
2142
|
+
state_done: "Hechas",
|
|
2143
|
+
state_dropped: "Descartadas",
|
|
2144
|
+
status_pending: "Pendiente",
|
|
2145
|
+
status_running: "Corriendo",
|
|
2146
|
+
status_in_review: "En revisión",
|
|
2147
|
+
status_blocked: "Bloqueada",
|
|
2148
|
+
done_label: "Hecha",
|
|
2149
|
+
dropped_label: "Descartada",
|
|
1620
2150
|
detail_title: "Detalle de task",
|
|
2151
|
+
detail_empty: "Elegí una task de la lista.",
|
|
2152
|
+
list_title: "Tasks",
|
|
2153
|
+
agent_none_short: "Sin agente",
|
|
1621
2154
|
field_title: "Título",
|
|
1622
|
-
|
|
2155
|
+
field_description: "Descripción",
|
|
2156
|
+
description_hint: "Qué tenés que hacer vos. Es lo que se lee en la lista.",
|
|
2157
|
+
description_ph: "Llamar al contador antes del viernes…",
|
|
2158
|
+
description_empty: "Sin descripción. Escribí acá qué hay que hacer.",
|
|
2159
|
+
field_prompt: "Prompt del agente",
|
|
1623
2160
|
field_status: "Estado",
|
|
1624
2161
|
field_agent: "Agente",
|
|
1625
2162
|
field_creator: "Creada por",
|
|
@@ -1627,20 +2164,77 @@ export const es = {
|
|
|
1627
2164
|
field_created: "Creada",
|
|
1628
2165
|
field_updated: "Actualizada",
|
|
1629
2166
|
field_done: "Completada",
|
|
1630
|
-
prompt_ph: "
|
|
1631
|
-
toggle_prompt: "Prompt",
|
|
2167
|
+
prompt_ph: "Solo si la va a ejecutar un agente…",
|
|
1632
2168
|
view_thread: "Ver conversación",
|
|
1633
2169
|
mark_done: "Completar",
|
|
2170
|
+
edit_title: "Editar task",
|
|
2171
|
+
row_actions: "Acciones de la task",
|
|
2172
|
+
mark_dropped: "Descartar",
|
|
2173
|
+
mark_reopen: "Reabrir",
|
|
2174
|
+
agent_none: "— sin asignar —",
|
|
2175
|
+
agent_hint: "Quién la tiene. No la toma solo: la trabaja si la mencionás en un comentario o si cae en una columna con automatización.",
|
|
2176
|
+
prompt_hint: "Solo para tasks que ejecuta un agente. Si es un pendiente tuyo, dejalo vacío.",
|
|
2177
|
+
undo: "Deshacer",
|
|
2178
|
+
comments_title: "Comentarios",
|
|
2179
|
+
comment_owner: "Vos",
|
|
2180
|
+
comment_ph: "Escribí un comentario… @agente para que lo tome",
|
|
2181
|
+
comment_hint: "Mencioná a un agente con @ y toma la tarea: la trabaja con sus herramientas y responde acá mismo.",
|
|
2182
|
+
comment_summoned: "Convocado: {who}. La respuesta llega al hilo cuando termine.",
|
|
2183
|
+
subtasks_title: "Subtareas",
|
|
2184
|
+
subtask_ph: "Agregar una subtarea…",
|
|
2185
|
+
part_of: "Parte de otra tarea — abrirla",
|
|
2186
|
+
field_tags: "Tags",
|
|
2187
|
+
tags_hint: "Enter o coma para agregar. Backspace borra el último.",
|
|
2188
|
+
tags_ph: "Urgente, cliente…",
|
|
2189
|
+
tag_remove: "Quitar el tag {tag}",
|
|
2190
|
+
view_label: "Vista",
|
|
2191
|
+
view_list: "Lista",
|
|
2192
|
+
view_board: "Tablero",
|
|
2193
|
+
board_empty_col: "Nada acá",
|
|
2194
|
+
columns_title: "Columnas",
|
|
2195
|
+
columns_hint: "Los nombres son los mismos en todos los proyectos. Cada proyecto elige cuáles muestra.",
|
|
2196
|
+
columns_catalog: "Columnas disponibles",
|
|
2197
|
+
columns_pick_hint: "Tildá las que querés ver en este proyecto.",
|
|
2198
|
+
columns_show: "Mostrar {name} en este proyecto",
|
|
2199
|
+
columns_remove: "Eliminar la columna {name}",
|
|
2200
|
+
columns_add: "Agregar una columna",
|
|
2201
|
+
columns_add_ph: "QA, Diseño, Esperando cliente…",
|
|
2202
|
+
columns_need_one: "Tiene que quedar al menos una columna.",
|
|
2203
|
+
columns_done_note: "«Hecha» siempre es la última columna y no se puede sacar.",
|
|
2204
|
+
columns_automation: "Automatización de {name}",
|
|
2205
|
+
columns_automation_hint: "Cuando una task cae en esta columna, este agente la toma: la trabaja con sus herramientas y deja el resultado en los comentarios.",
|
|
2206
|
+
columns_hook_agent_ph: "Slug del agente (qa, dev…) — vacío = sin automatización",
|
|
2207
|
+
columns_hook_instruction_ph: "Qué tiene que hacer. Vacío = «hacé lo que corresponda».",
|
|
2208
|
+
tick_done: "Marcar «{title}» como hecha",
|
|
2209
|
+
tick_reopen: "Reabrir «{title}»",
|
|
2210
|
+
confirm_drop_title: "¿Descartar la task?",
|
|
2211
|
+
confirm_drop_desc: "Se descarta «{title}». No se borra del historial y podés reabrirla.",
|
|
2212
|
+
select_row: "Seleccionar «{title}»",
|
|
2213
|
+
bulk_selected: "{count} seleccionadas",
|
|
2214
|
+
bulk_done: "Completar",
|
|
2215
|
+
bulk_drop: "Descartar",
|
|
2216
|
+
bulk_clear: "Limpiar selección",
|
|
2217
|
+
confirm_bulk_done_title: "¿Completar {count} tasks?",
|
|
2218
|
+
confirm_bulk_done_desc: "Se marcan {count} tasks como hechas. Podés reabrirlas después.",
|
|
2219
|
+
confirm_bulk_drop_title: "¿Descartar {count} tasks?",
|
|
2220
|
+
confirm_bulk_drop_desc: "Se descartan {count} tasks. No se borran del historial y podés reabrirlas.",
|
|
2221
|
+
bulk_done_toast: "{count} tasks completadas.",
|
|
2222
|
+
bulk_drop_toast: "{count} tasks descartadas.",
|
|
1634
2223
|
},
|
|
1635
2224
|
|
|
1636
2225
|
agents_ui: {
|
|
1637
|
-
model_router_default: "
|
|
2226
|
+
model_router_default: "Modelo: default del router",
|
|
2227
|
+
model_change_tip: "Cambiar el modelo del agente",
|
|
2228
|
+
model_change_title: "Modelo del agente",
|
|
2229
|
+
model_inherit_option: "Heredar (default del router)",
|
|
2230
|
+
model_provider_default: "Default",
|
|
2231
|
+
model_no_providers: "Sin proveedores activos. Configurá uno en Ajustes → Modelos.",
|
|
1638
2232
|
slug_kebab_hint: "kebab-case, ej. reviewer, my-agent, content-writer",
|
|
1639
2233
|
comma_separated: "separadas por coma",
|
|
1640
2234
|
body_hint: "markdown — extiende el system prompt del agente",
|
|
1641
|
-
source_user:
|
|
1642
|
-
source_override: "
|
|
1643
|
-
source_bundled: "
|
|
2235
|
+
source_user: "Usuario",
|
|
2236
|
+
source_override: "Override",
|
|
2237
|
+
source_bundled: "Bundled",
|
|
1644
2238
|
tab_explorer: "Explorador",
|
|
1645
2239
|
type_none: "— sin tipo —",
|
|
1646
2240
|
type_orchestrator: "Orquestador",
|
|
@@ -1667,24 +2261,26 @@ export const es = {
|
|
|
1667
2261
|
brain_expand: "Expandir cerebros",
|
|
1668
2262
|
brain_collapse: "Colapsar",
|
|
1669
2263
|
brain_open: "Abrir",
|
|
2264
|
+
brain_view: "Ver",
|
|
2265
|
+
brain_edit: "Editar",
|
|
1670
2266
|
brain_part_of: "Parte de",
|
|
1671
2267
|
brain_branches: "Ramas",
|
|
1672
|
-
config_def_desc: "
|
|
2268
|
+
config_def_desc: "frontmatter de identidad. El system prompt vive en la tab Prompt.",
|
|
1673
2269
|
memory_durable_desc: "hechos durables que el agente recuerda.",
|
|
1674
|
-
running:
|
|
1675
|
-
paused: "
|
|
1676
|
-
last_error: "
|
|
2270
|
+
running: "Corriendo",
|
|
2271
|
+
paused: "Pausada",
|
|
2272
|
+
last_error: "Última: error",
|
|
1677
2273
|
field_tick: "Tick",
|
|
1678
2274
|
field_next_tick: "Próximo tick",
|
|
1679
2275
|
field_last_tick: "Último tick",
|
|
1680
2276
|
field_last_run: "Última corrida",
|
|
1681
2277
|
tools_label: "Tools",
|
|
1682
|
-
kind_agent: "
|
|
1683
|
-
kind_memory: "
|
|
1684
|
-
kind_thread: "
|
|
1685
|
-
kind_task: "
|
|
1686
|
-
kind_routine: "
|
|
1687
|
-
kind_hierarchy: "
|
|
2278
|
+
kind_agent: "Agente",
|
|
2279
|
+
kind_memory: "Memoria",
|
|
2280
|
+
kind_thread: "Thread",
|
|
2281
|
+
kind_task: "Task",
|
|
2282
|
+
kind_routine: "Rutina",
|
|
2283
|
+
kind_hierarchy: "Jerarquía",
|
|
1688
2284
|
nodes_drag_hint: "{n} nodos · arrastrá para reordenar",
|
|
1689
2285
|
kind_watch: "Vigía",
|
|
1690
2286
|
kind_watch_desc: "Barre buscando cosas que valga la pena notar — vencidos, promesas por caer, proyectos en silencio. No cuesta nada cuando no hay nada que reportar.",
|
|
@@ -1705,11 +2301,11 @@ export const es = {
|
|
|
1705
2301
|
unit_days: "días",
|
|
1706
2302
|
every_n_unit: "cada {n} {unit}",
|
|
1707
2303
|
every_v: "cada {v}",
|
|
1708
|
-
preset_every_10m: "
|
|
1709
|
-
preset_hourly: "
|
|
1710
|
-
preset_daily_9am: "
|
|
2304
|
+
preset_every_10m: "Cada 10 min",
|
|
2305
|
+
preset_hourly: "Cada hora",
|
|
2306
|
+
preset_daily_9am: "Diario 9am",
|
|
1711
2307
|
sched_manual: "solo cuando lo corrés vos",
|
|
1712
|
-
preset_weekdays_9am: "
|
|
2308
|
+
preset_weekdays_9am: "Días hábiles 9am",
|
|
1713
2309
|
preset_manual: "Manual",
|
|
1714
2310
|
var_pre_output_prompt: "Salida de texto de los pre-commands. Se reemplaza dentro del prompt/texto antes de enviarlo. Útil para inyectar datos frescos (clima, una API) en la instrucción.",
|
|
1715
2311
|
var_llm_output: "Respuesta final del agente o super-agente. Disponible en los post-commands como variable de entorno. Ej: reenviarla por Telegram.",
|
|
@@ -1733,17 +2329,22 @@ export const es = {
|
|
|
1733
2329
|
action_runs_shell: "Corre el comando shell",
|
|
1734
2330
|
step_pre: "Pre",
|
|
1735
2331
|
step_post: "Post",
|
|
1736
|
-
last_label: "
|
|
2332
|
+
last_label: "Última:",
|
|
1737
2333
|
tg_chat_id_ph: "(usa el del canal)",
|
|
1738
2334
|
tg_text_ph: "mensaje a enviar",
|
|
1739
2335
|
hb_message_ph: "sigo vivo",
|
|
1740
2336
|
arg_placeholder: "--flag o valor",
|
|
1741
|
-
remove_arg: "
|
|
2337
|
+
remove_arg: "Quitar arg",
|
|
1742
2338
|
super_agent_label: "{persona} (super-agente)",
|
|
1743
2339
|
super_agent_badge: "super-agente",
|
|
1744
2340
|
},
|
|
1745
2341
|
|
|
1746
2342
|
modules_ui: {
|
|
2343
|
+
desktop_model: "Modelo de la ventana",
|
|
2344
|
+
desktop_model_desc: "Qué modelo contesta en la ventana flotante. Es la única superficie donde alguien espera la respuesta en voz alta, así que puede tener uno más rápido que el resto.",
|
|
2345
|
+
desktop_model_hint: "Por defecto usa el del super-agente. Elegir otro acá no cambia Telegram, las rutinas ni el resto.",
|
|
2346
|
+
desktop_model_set: "Modelo de la ventana: {value}.",
|
|
2347
|
+
desktop_model_inherit: "el del super-agente",
|
|
1747
2348
|
desktop_pos_left: "Izquierda",
|
|
1748
2349
|
desktop_pos_center: "Centro",
|
|
1749
2350
|
desktop_pos_right: "Derecha",
|
|
@@ -1753,7 +2354,7 @@ export const es = {
|
|
|
1753
2354
|
desktop_status_desc: "La ventana se abre desde la terminal o por arranque automático.",
|
|
1754
2355
|
desktop_running: "Corriendo",
|
|
1755
2356
|
desktop_stopped: "Detenida",
|
|
1756
|
-
desktop_refresh: "
|
|
2357
|
+
desktop_refresh: "Refrescar",
|
|
1757
2358
|
desktop_start: "Iniciar",
|
|
1758
2359
|
desktop_stop: "Detener",
|
|
1759
2360
|
desktop_restart: "Reiniciar",
|
|
@@ -1766,13 +2367,13 @@ export const es = {
|
|
|
1766
2367
|
desktop_stop_none: "No había ninguna ventana de desktop corriendo.",
|
|
1767
2368
|
desktop_from_terminal: "Desde la terminal:",
|
|
1768
2369
|
desktop_autostart_desc: "Abre la ventana al iniciar sesión. Equivale a `apx desktop install` (no requiere sudo).",
|
|
1769
|
-
desktop_platform: "
|
|
2370
|
+
desktop_platform: "Plataforma: {platform}",
|
|
1770
2371
|
desktop_shortcut_desc: "Atajo global que muestra/oculta la ventana y empieza a escuchar.",
|
|
1771
2372
|
desktop_accelerator: "Acelerador",
|
|
1772
2373
|
desktop_accelerator_hint:"Hacé clic en el campo y apretá tu combinación de teclas. Reiniciá la ventana para aplicar.",
|
|
1773
2374
|
desktop_shortcut_record: "Hacé clic para definir un atajo",
|
|
1774
2375
|
desktop_shortcut_recording: "Apretá tu combinación…",
|
|
1775
|
-
desktop_shortcut_change: "
|
|
2376
|
+
desktop_shortcut_change: "Clic para cambiar",
|
|
1776
2377
|
desktop_shortcut_esc: "Esc para cancelar",
|
|
1777
2378
|
desktop_shortcut_saved: "Atajo guardado. Reiniciá la ventana (apx desktop stop && start) para aplicarlo.",
|
|
1778
2379
|
desktop_autostart_on: "Arranque automático habilitado para el próximo inicio de sesión.",
|
|
@@ -1808,19 +2409,19 @@ export const es = {
|
|
|
1808
2409
|
deck_no_widgets: "No hay widgets en el manifest.",
|
|
1809
2410
|
deck_context_desc: "Información que el Deck ve desde el daemon.",
|
|
1810
2411
|
deck_active_project: "Proyecto activo:",
|
|
1811
|
-
deck_none: "
|
|
2412
|
+
deck_none: "Ninguno",
|
|
1812
2413
|
deck_registered_projects:"Proyectos registrados:",
|
|
1813
2414
|
deck_active_plugins: "Plugins activos:",
|
|
1814
|
-
deck_daemon_active: "
|
|
1815
|
-
deck_daemon_started: "
|
|
1816
|
-
deck_safety_no_shell: "
|
|
1817
|
-
deck_safety_no_arbitrary:"
|
|
1818
|
-
deck_safety_confirm: "
|
|
2415
|
+
deck_daemon_active: "Activo · {uptime}",
|
|
2416
|
+
deck_daemon_started: "Iniciado",
|
|
2417
|
+
deck_safety_no_shell: "Sin shell directo",
|
|
2418
|
+
deck_safety_no_arbitrary:"Comandos arbitrarios bloqueados",
|
|
2419
|
+
deck_safety_confirm: "Las acciones peligrosas requieren confirmación",
|
|
1819
2420
|
code_copied: "Copiado.",
|
|
1820
2421
|
code_saved: "Guardado.",
|
|
1821
2422
|
code_file_empty: "(vacío)",
|
|
1822
2423
|
code_file_error: "Error: {msg}",
|
|
1823
|
-
code_stream_error: "
|
|
2424
|
+
code_stream_error: "Error",
|
|
1824
2425
|
code_super_agent: "super-agent",
|
|
1825
2426
|
code_super_agent_desc: "Agente principal con todas las tools",
|
|
1826
2427
|
code_chat_tab: "Chat",
|
|
@@ -1828,14 +2429,15 @@ export const es = {
|
|
|
1828
2429
|
code_panel_tree: "Árbol de archivos",
|
|
1829
2430
|
code_panel_terminal: "Terminal",
|
|
1830
2431
|
code_panel_context: "Panel de contexto",
|
|
1831
|
-
code_ctx_auto: "
|
|
2432
|
+
code_ctx_auto: "Auto",
|
|
1832
2433
|
code_ctx_mode: "Modo",
|
|
1833
2434
|
code_ctx_agent: "Agente",
|
|
2435
|
+
code_ctx_project: "Proyecto",
|
|
1834
2436
|
code_ctx_msgs_value: "{user} usuario · {assistant} asistente",
|
|
1835
2437
|
code_ctx_tokens_total: "Tokens Total",
|
|
1836
2438
|
code_ctx_created: "Creado",
|
|
1837
2439
|
code_ctx_activity: "Actividad",
|
|
1838
|
-
code_project_fallback: "
|
|
2440
|
+
code_project_fallback: "Proyecto {id}",
|
|
1839
2441
|
code_pick_project_ph: "Elegí un proyecto…",
|
|
1840
2442
|
code_artifact_exit_ok: "exit 0 — {ms}ms",
|
|
1841
2443
|
code_artifact_exit_fail: "exit {code}{timeout}",
|
|
@@ -1843,8 +2445,8 @@ export const es = {
|
|
|
1843
2445
|
code_artifact_view_short:"Ver",
|
|
1844
2446
|
code_artifact_edit_short:"Editar",
|
|
1845
2447
|
code_artifact_exit_badge:"exit {code}",
|
|
1846
|
-
code_artifact_timeout: "
|
|
1847
|
-
code_artifact_truncated: "
|
|
2448
|
+
code_artifact_timeout: "Timeout",
|
|
2449
|
+
code_artifact_truncated: "Truncado",
|
|
1848
2450
|
},
|
|
1849
2451
|
|
|
1850
2452
|
settings_ui: {
|
|
@@ -1864,18 +2466,25 @@ export const es = {
|
|
|
1864
2466
|
base_menu_view: "Vista del menú Base (workspace general).",
|
|
1865
2467
|
coming_soon: "Próximamente",
|
|
1866
2468
|
inspector_title: "Skill Inspector (RAG por turno)",
|
|
1867
|
-
inspector_desc: "
|
|
2469
|
+
inspector_desc: "Un RAG local elige la(s) skill(s) que cada mensaje necesita — cuerpo completo si el match es fuerte, una sugerencia si es medio, nada si no aplica. Se reevalúa en cada turno.",
|
|
2470
|
+
advanced_title: "Avanzado",
|
|
2471
|
+
show: "Mostrar",
|
|
2472
|
+
hide: "Ocultar",
|
|
1868
2473
|
enable_inspector: "Habilitar inspector",
|
|
1869
2474
|
enable_inspector_hint: "Off = comportamiento clásico (lista de slugs + sugerencia pasiva). On = el RAG decide por turno.",
|
|
1870
2475
|
on: "On",
|
|
1871
2476
|
off: "Off",
|
|
1872
2477
|
index_count: "Índice: {n} skills",
|
|
1873
|
-
not_indexed: "
|
|
1874
|
-
dim: "
|
|
1875
|
-
updated_at: "
|
|
2478
|
+
not_indexed: "Sin indexar",
|
|
2479
|
+
dim: "Dim {dim}",
|
|
2480
|
+
updated_at: "Actualizado {date}",
|
|
1876
2481
|
reindex: "Reindexar",
|
|
1877
2482
|
reindex_forced: "Reindexar (forzado)",
|
|
1878
2483
|
embedder_source: "El embedder viene de Memoria (RAG). Local con Ollama, u offline si no hay proveedor configurado.",
|
|
2484
|
+
embedder_shared_title: "Motor de embeddings",
|
|
2485
|
+
embedder_shared_desc: "El skill inspector usa el mismo embedder que Memoria (RAG) — un solo motor para todo el daemon. Cambialo o reordenalo ahí.",
|
|
2486
|
+
embedder_configure: "Configurar en Memoria (RAG)",
|
|
2487
|
+
embedder_stale: "El índice se armó con '{index}' pero ahora está activo '{active}' — reindexá para puntuar con el motor actual.",
|
|
1879
2488
|
thresholds_title: "Umbrales y límites",
|
|
1880
2489
|
thresholds_desc: "Ajustá qué tan agresivo es el inspector. Subir los umbrales = menos falsos positivos pero más riesgo de perderte una skill; bajarlos = al revés.",
|
|
1881
2490
|
test_title: "Probar (dry-run)",
|
|
@@ -1942,13 +2551,19 @@ export const es = {
|
|
|
1942
2551
|
source_builtin: "APX",
|
|
1943
2552
|
source_global: "Global",
|
|
1944
2553
|
source_project: "Proyecto",
|
|
2554
|
+
origin_claude: "Claude",
|
|
2555
|
+
origin_cursor: "Cursor",
|
|
2556
|
+
origin_codex: "Codex",
|
|
2557
|
+
origin_agents: "Agents",
|
|
2558
|
+
path_label: "Ruta",
|
|
2559
|
+
path_apx_link: "Enlace APX",
|
|
1945
2560
|
private_badge: "Privada",
|
|
1946
2561
|
private_hint: "Skill interna de APX — siempre activa, no se puede desactivar ni borrar.",
|
|
1947
2562
|
overridden_badge: "Override",
|
|
1948
2563
|
inherited_hint: "Heredada del global",
|
|
1949
2564
|
reset_to_global: "Volver al global",
|
|
1950
|
-
on: "
|
|
1951
|
-
off: "
|
|
2565
|
+
on: "Activa",
|
|
2566
|
+
off: "Inactiva",
|
|
1952
2567
|
toggle_failed: "No se pudo cambiar el estado: {msg}",
|
|
1953
2568
|
add_title: "Agregar skill",
|
|
1954
2569
|
add_desc: "Crea una skill de usuario en ~/.apx/skills/<slug>/SKILL.md. Queda disponible para todos los scopes.",
|
|
@@ -1998,6 +2613,12 @@ export const es = {
|
|
|
1998
2613
|
|
|
1999
2614
|
shared_ui: {
|
|
2000
2615
|
skill_inspector_title: "Skill Inspector ({embedder}) eligió estas skills para este turno",
|
|
2616
|
+
skill_trace_loaded: "Cargada: su cuerpo entró en el prompt de este turno",
|
|
2617
|
+
skill_trace_hinted: "Sugerida: entró sólo el nombre y la descripción",
|
|
2618
|
+
skill_trace_considered: "Considerada: matcheó este turno pero quedó bajo el umbral para inyectarla",
|
|
2619
|
+
skill_trace_sim: "Similitud {sim}",
|
|
2620
|
+
skill_trace_no_desc: "Sin descripción.",
|
|
2621
|
+
skill_trace_open: "Abrir skill",
|
|
2001
2622
|
tools_count: "{n} tools",
|
|
2002
2623
|
tools_failed: "{n} fallaron",
|
|
2003
2624
|
tool_read_file: "Leer archivo",
|
|
@@ -2013,21 +2634,21 @@ export const es = {
|
|
|
2013
2634
|
tool_call_mcp: "Llamar MCP",
|
|
2014
2635
|
tool_call_runtime: "Llamar runtime",
|
|
2015
2636
|
tool_create_task: "Crear task",
|
|
2016
|
-
dedup: "
|
|
2017
|
-
args: "
|
|
2018
|
-
result: "
|
|
2637
|
+
dedup: "Dedup",
|
|
2638
|
+
args: "Args",
|
|
2639
|
+
result: "Result",
|
|
2019
2640
|
auto: "Auto",
|
|
2020
2641
|
auto_router: "Auto (decide el router)",
|
|
2021
|
-
model_filter_ph: "
|
|
2022
|
-
loading_models: "
|
|
2023
|
-
use_value: "
|
|
2024
|
-
model_combobox_ph: "
|
|
2025
|
-
search_variable_ph: "
|
|
2026
|
-
no_matches: "
|
|
2642
|
+
model_filter_ph: "Filtrar o escribir modelo…",
|
|
2643
|
+
loading_models: "Cargando modelos…",
|
|
2644
|
+
use_value: "Usar “{value}”",
|
|
2645
|
+
model_combobox_ph: "Elegí o escribí un modelo…",
|
|
2646
|
+
search_variable_ph: "Buscar variable…",
|
|
2647
|
+
no_matches: "Sin coincidencias",
|
|
2027
2648
|
create_variable: "Crear nueva variable…",
|
|
2028
2649
|
kv_key_ph: "CLAVE",
|
|
2029
2650
|
kv_value_ph: "valor",
|
|
2030
|
-
remove_row: "
|
|
2651
|
+
remove_row: "Quitar fila",
|
|
2031
2652
|
add_row: "Agregar fila",
|
|
2032
2653
|
err_chat_failed: "Falló el chat.",
|
|
2033
2654
|
err_stream_failed: "Falló el stream.",
|
|
@@ -2046,8 +2667,8 @@ export const es = {
|
|
|
2046
2667
|
more_soon: "Más plugins próximamente…",
|
|
2047
2668
|
tools_hint: "Tools que los plugins conectados exponen a los agentes de este proyecto.",
|
|
2048
2669
|
tools_empty: "No hay tools de integraciones. Conectá un plugin para habilitarlas.",
|
|
2049
|
-
tool_active: "
|
|
2050
|
-
tool_inactive: "
|
|
2670
|
+
tool_active: "Activo",
|
|
2671
|
+
tool_inactive: "Inactivo",
|
|
2051
2672
|
status_active: "Activo",
|
|
2052
2673
|
status_error: "Error",
|
|
2053
2674
|
status_unconfigured: "No configurado",
|
|
@@ -2058,7 +2679,12 @@ export const es = {
|
|
|
2058
2679
|
validating: "Validando...",
|
|
2059
2680
|
verifying: "Verificando token...",
|
|
2060
2681
|
confirm: "Confirmar",
|
|
2682
|
+
change: "Cambiar",
|
|
2061
2683
|
select_placeholder: "Seleccionar...",
|
|
2684
|
+
select_none: "Sin elegir",
|
|
2685
|
+
select_pick: "Elegir",
|
|
2686
|
+
select_missing: "Falta elegir. Confirmá uno abajo.",
|
|
2687
|
+
select_empty: "Esta cuenta no tiene opciones disponibles.",
|
|
2062
2688
|
reveal: "Ver",
|
|
2063
2689
|
hide: "Ocultar",
|
|
2064
2690
|
credentials: "Credenciales {name}",
|
|
@@ -2069,6 +2695,11 @@ export const es = {
|
|
|
2069
2695
|
err_connect: "Error al conectar",
|
|
2070
2696
|
err_generic: "Ocurrió un error",
|
|
2071
2697
|
action_done: "Listo",
|
|
2698
|
+
copy: "Copiar",
|
|
2699
|
+
connect_oauth: "Conectar con Google",
|
|
2700
|
+
oauth_waiting: "Esperando el consentimiento…",
|
|
2701
|
+
oauth_redirect_hint: "Registrá esta URI en tu OAuth client de Google (Credenciales → tu client → \"URIs de redireccionamiento autorizados\"):",
|
|
2702
|
+
oauth_reauth: "Cambió el acceso: volvé a conectar con Google para aplicarlo.",
|
|
2072
2703
|
asana: {
|
|
2073
2704
|
select_label: "Seleccioná el workspace a usar",
|
|
2074
2705
|
connected: { user_name: "Conectado como", user_email: "Email", workspace_name: "Workspace" },
|
|
@@ -2080,6 +2711,28 @@ export const es = {
|
|
|
2080
2711
|
},
|
|
2081
2712
|
},
|
|
2082
2713
|
},
|
|
2714
|
+
calendar: {
|
|
2715
|
+
connected: { account_email: "Cuenta", calendar_name: "Calendario" },
|
|
2716
|
+
fields: {
|
|
2717
|
+
client_id: {
|
|
2718
|
+
label: "Client ID de OAuth",
|
|
2719
|
+
help_label: "¿Cómo consigo el OAuth client?",
|
|
2720
|
+
help_steps: "Abrí console.cloud.google.com y elegí (o creá) un proyecto.\nHabilitá la Google Calendar API en ese proyecto.\nAndá a APIs y servicios → Pantalla de consentimiento de OAuth → tipo Externo, y agregá tu mail como usuario de prueba.\nCredenciales → Crear credenciales → ID de cliente de OAuth → tipo \"App de escritorio\".\nCopiá el Client ID y el Client secret y pegalos abajo.\nEn \"URIs de redireccionamiento autorizados\" pegá la URI que se muestra acá arriba.",
|
|
2721
|
+
},
|
|
2722
|
+
client_secret: {
|
|
2723
|
+
label: "Client secret",
|
|
2724
|
+
hint: "El secreto del mismo OAuth client. Se guarda en ~/.apx, nunca en el repo.",
|
|
2725
|
+
},
|
|
2726
|
+
write_access: {
|
|
2727
|
+
label: "Permitir escritura",
|
|
2728
|
+
hint: "Apagado, APX sólo lee tu agenda. Prendido, puede crear y mover eventos, invitar gente y armar Meet — y igual va a preguntar antes de cada uno.",
|
|
2729
|
+
},
|
|
2730
|
+
meet: {
|
|
2731
|
+
label: "Crear links de Meet",
|
|
2732
|
+
hint: "Cuando agenda con invitados, suma un link de Google Meet al evento.",
|
|
2733
|
+
},
|
|
2734
|
+
},
|
|
2735
|
+
},
|
|
2083
2736
|
github: {
|
|
2084
2737
|
connected: { user_login: "Conectado como", user_name: "Nombre" },
|
|
2085
2738
|
fields: {
|