@agentprojectcontext/apx 1.80.2 → 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 +134 -0
- 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
|
@@ -12,12 +12,12 @@ export const en = {
|
|
|
12
12
|
every_n_hours: "every {n} hours, at :{minute}",
|
|
13
13
|
every_n_minutes: "every {n} minutes",
|
|
14
14
|
every_minute: "every minute",
|
|
15
|
-
every_label: "
|
|
16
|
-
use_cron: "
|
|
17
|
-
use_picker: "
|
|
18
|
-
preset_every_day: "
|
|
19
|
-
preset_weekdays: "
|
|
20
|
-
preset_weekends: "
|
|
15
|
+
every_label: "Every N hours instead",
|
|
16
|
+
use_cron: "Edit as cron",
|
|
17
|
+
use_picker: "Use the picker",
|
|
18
|
+
preset_every_day: "Every day",
|
|
19
|
+
preset_weekdays: "Weekdays",
|
|
20
|
+
preset_weekends: "Weekends",
|
|
21
21
|
day_short: { sun: "Sun", mon: "Mon", tue: "Tue", wed: "Wed", thu: "Thu", fri: "Fri", sat: "Sat" },
|
|
22
22
|
},
|
|
23
23
|
when: {
|
|
@@ -46,6 +46,7 @@ export const en = {
|
|
|
46
46
|
disable: "Disable",
|
|
47
47
|
open: "Open",
|
|
48
48
|
close: "Close",
|
|
49
|
+
more: "More actions",
|
|
49
50
|
confirm: "Confirm",
|
|
50
51
|
optional: "(optional)",
|
|
51
52
|
none: "—",
|
|
@@ -67,6 +68,8 @@ export const en = {
|
|
|
67
68
|
pager_page: "Page {page} of {total}",
|
|
68
69
|
pager_range: "{from}–{to} of {total}",
|
|
69
70
|
pager_per_page:"Per page",
|
|
71
|
+
all: "All",
|
|
72
|
+
actions: "Actions",
|
|
70
73
|
},
|
|
71
74
|
daemon: {
|
|
72
75
|
connecting: "Connecting to the daemon…",
|
|
@@ -75,8 +78,8 @@ export const en = {
|
|
|
75
78
|
version: "Version",
|
|
76
79
|
uptime: "Uptime",
|
|
77
80
|
status: "Status",
|
|
78
|
-
running: "
|
|
79
|
-
down: "
|
|
81
|
+
running: "Running",
|
|
82
|
+
down: "Down",
|
|
80
83
|
reload_hint: "POST /admin/reload — reloads ~/.apx/config.json without restarting.",
|
|
81
84
|
shutdown_confirm: "Shut down the daemon? Upcoming requests will fail until it restarts.",
|
|
82
85
|
shutdown_done: "Daemon stopped.",
|
|
@@ -110,12 +113,19 @@ export const en = {
|
|
|
110
113
|
more_projects: "{count} more",
|
|
111
114
|
collapse_projects: "Hide projects",
|
|
112
115
|
expand_projects: "Show projects",
|
|
116
|
+
project_settings: "Project settings",
|
|
117
|
+
copy_path: "Copy path",
|
|
118
|
+
path_copied: "Path copied.",
|
|
119
|
+
copy_failed: "Could not copy.",
|
|
113
120
|
modules: {
|
|
114
121
|
voice: "Voices",
|
|
122
|
+
images: "Images",
|
|
115
123
|
desktop: "Desktop",
|
|
116
124
|
deck: "Deck",
|
|
117
125
|
code: "Code",
|
|
118
126
|
web: "Web",
|
|
127
|
+
// Caption under the rail icon — the full name doesn't fit in 3.6rem.
|
|
128
|
+
inbox_short: "Chats",
|
|
119
129
|
},
|
|
120
130
|
},
|
|
121
131
|
topbar: {
|
|
@@ -149,9 +159,9 @@ export const en = {
|
|
|
149
159
|
telegram_polling_started: "Polling started.",
|
|
150
160
|
telegram_polling_stopped: "Polling stopped.",
|
|
151
161
|
telegram_channel_removed: "Channel deleted.",
|
|
152
|
-
agents_badge: "
|
|
153
|
-
engine_badge: "
|
|
154
|
-
engine_badge_no: "
|
|
162
|
+
agents_badge: "Agents",
|
|
163
|
+
engine_badge: "Yes",
|
|
164
|
+
engine_badge_no: "No",
|
|
155
165
|
base_label: "Base",
|
|
156
166
|
},
|
|
157
167
|
add_project: {
|
|
@@ -168,6 +178,65 @@ export const en = {
|
|
|
168
178
|
browser_unavailable: "Browser unavailable until daemon restarts. Paste path manually.",
|
|
169
179
|
no_folders: "No folders.",
|
|
170
180
|
},
|
|
181
|
+
mobile: {
|
|
182
|
+
back: "Back",
|
|
183
|
+
sessions: "Sessions",
|
|
184
|
+
no_sessions: "No saved sessions yet.",
|
|
185
|
+
live_session: "New session",
|
|
186
|
+
no_messages: "No messages yet",
|
|
187
|
+
team_members: "{count} agents",
|
|
188
|
+
empty: "You haven't talked to any agent yet.",
|
|
189
|
+
prefs: "Preferences",
|
|
190
|
+
app_options: "App options",
|
|
191
|
+
new_chat: "New chat",
|
|
192
|
+
new_chat_title: "Start a chat",
|
|
193
|
+
new_chat_empty: "No agents found.",
|
|
194
|
+
group_slug_clash: "You already picked another \"{slug}\" from a different project — @slug must be unique in the room.",
|
|
195
|
+
|
|
196
|
+
// The bottom bar: the three things you check standing up.
|
|
197
|
+
tab_chats: "Chats",
|
|
198
|
+
tab_tasks: "Tasks",
|
|
199
|
+
tab_commitments: "Promises",
|
|
200
|
+
tasks_search: "Search tasks",
|
|
201
|
+
commitments_search: "Search promises",
|
|
202
|
+
load_more: "Show {count} more",
|
|
203
|
+
// When something is due. Compared by calendar day, not by instant: a task
|
|
204
|
+
// due today at midnight is not overdue at 9am.
|
|
205
|
+
due: {
|
|
206
|
+
overdue: "Overdue",
|
|
207
|
+
today: "Today",
|
|
208
|
+
tomorrow: "Tomorrow",
|
|
209
|
+
week: "This week",
|
|
210
|
+
later: "Later",
|
|
211
|
+
none: "No date",
|
|
212
|
+
},
|
|
213
|
+
commitment_move: "Reschedule",
|
|
214
|
+
commitment_moved_toast: "Date rescheduled.",
|
|
215
|
+
commitment_closed: "Closed. Reopening one means agreeing a new date with the person — that lives in the panel.",
|
|
216
|
+
},
|
|
217
|
+
notify: {
|
|
218
|
+
title: "Notifications",
|
|
219
|
+
on: "Notifications on",
|
|
220
|
+
off: "Turn notifications on",
|
|
221
|
+
on_hint: "When an agent writes and you are not on its thread, this device says so.",
|
|
222
|
+
off_hint: "The panel updates itself silently; nothing reaches you when it is in the background.",
|
|
223
|
+
denied: "This browser is blocking notifications for this site. Allow them from the padlock next to the address, then reload.",
|
|
224
|
+
insecure: "Notifications need https. Turn the tunnel on with `apx panel tailscale on` and open the panel at that address.",
|
|
225
|
+
unsupported: "This browser has no notifications.",
|
|
226
|
+
native_off: "Notifications off",
|
|
227
|
+
native_on_hint: "Managed by APX Android. Tap to open system notification settings.",
|
|
228
|
+
native_off_hint: "Enable APX notifications in Android system settings.",
|
|
229
|
+
test: "Test",
|
|
230
|
+
test_title: "APX",
|
|
231
|
+
test_body: "If you can see this, notifications work on this device.",
|
|
232
|
+
test_failed: "Nothing was shown. Check the browser has permission at the system level.",
|
|
233
|
+
nudge: "Tell you when an agent writes?",
|
|
234
|
+
nudge_yes: "Turn on",
|
|
235
|
+
native_channels_hint: "What may interrupt you on this phone. Telegram starts off — its own app is already here. A muted channel is still there to read in the chat.",
|
|
236
|
+
// Per device, not per account: the phone has Telegram installed ON it,
|
|
237
|
+
// the laptop does not, so the same channel deserves opposite answers.
|
|
238
|
+
channels_hint: "Which channels may ring this device. The phone starts with Telegram off — the app is already on it.",
|
|
239
|
+
},
|
|
171
240
|
inbox: {
|
|
172
241
|
search: "Search",
|
|
173
242
|
no_match: "Nothing matches",
|
|
@@ -178,11 +247,27 @@ export const en = {
|
|
|
178
247
|
subtitle:
|
|
179
248
|
"Every agent as a conversation, most recent first.",
|
|
180
249
|
empty: "You have not talked to any agent yet.",
|
|
181
|
-
pinned: "lead",
|
|
182
250
|
show_quiet: "Show quiet agents",
|
|
183
251
|
no_reply_yet: "(no replies yet)",
|
|
184
252
|
},
|
|
185
253
|
|
|
254
|
+
// Channel filters + tags: which of the places a conversation can happen this
|
|
255
|
+
// DEVICE wants to see and be told about (lib/channels.ts).
|
|
256
|
+
channels: {
|
|
257
|
+
filter: "Channels",
|
|
258
|
+
// The trigger says how many are on without opening anything — which is the
|
|
259
|
+
// whole reason the picker is collapsed.
|
|
260
|
+
all: "All",
|
|
261
|
+
n_of_m: "{n} of {total}",
|
|
262
|
+
select_all: "Select all",
|
|
263
|
+
none: "None",
|
|
264
|
+
a2a: "Agent ↔ agent",
|
|
265
|
+
group: "Groups",
|
|
266
|
+
other: "No channel",
|
|
267
|
+
mobility: "Trips and errands",
|
|
268
|
+
all_hidden: "Every channel is switched off here. Tap one to bring it back.",
|
|
269
|
+
},
|
|
270
|
+
|
|
186
271
|
settings: {
|
|
187
272
|
title: "Settings",
|
|
188
273
|
subtitle: "Panel preferences + local daemon diagnostics.",
|
|
@@ -221,8 +306,8 @@ export const en = {
|
|
|
221
306
|
devices_pair_waiting: "Waiting for device to confirm…",
|
|
222
307
|
devices_pair_done: "Device paired ✓",
|
|
223
308
|
devices_pair_localhost_only: "Codes can only be generated from the daemon's PC (localhost).",
|
|
224
|
-
devices_last_seen: "
|
|
225
|
-
devices_never: "
|
|
309
|
+
devices_last_seen: "Seen:",
|
|
310
|
+
devices_never: "Never",
|
|
226
311
|
devices_revoke: "Revoke",
|
|
227
312
|
account_section: "Account",
|
|
228
313
|
agents_section: "Agents & models",
|
|
@@ -252,7 +337,7 @@ export const en = {
|
|
|
252
337
|
vanilla_hint:
|
|
253
338
|
"No profile is active. APX behaves exactly as it always has — the super-agent prompt is identical to a clean install.",
|
|
254
339
|
none_available: "No profiles available yet.",
|
|
255
|
-
active: "
|
|
340
|
+
active: "Active",
|
|
256
341
|
activate: "Activate",
|
|
257
342
|
replace_active: "Replace the active one",
|
|
258
343
|
deactivate: "Deactivate",
|
|
@@ -280,6 +365,12 @@ export const en = {
|
|
|
280
365
|
no_settings: "This profile has nothing to configure.",
|
|
281
366
|
settings_locked: "Activate the profile to change its settings.",
|
|
282
367
|
doctor_vanilla: "No profile active. APX behaves as it always has.",
|
|
368
|
+
readopt_all: "Re-sync routines",
|
|
369
|
+
readopt_one: "Re-adopt",
|
|
370
|
+
readopt_title: "Re-adopt from package",
|
|
371
|
+
readopt_confirm:
|
|
372
|
+
"Reinstalls the affected routines from the package, discarding your local edits and repairing provenance. Routines you did not touch are left alone.",
|
|
373
|
+
readopt_done: "Routines re-adopted",
|
|
283
374
|
},
|
|
284
375
|
|
|
285
376
|
nudge: {
|
|
@@ -331,6 +422,8 @@ export const en = {
|
|
|
331
422
|
model: "Active model",
|
|
332
423
|
model_hint: "E.g.: anthropic:claude-sonnet-4.5, ollama:gemma2:9b",
|
|
333
424
|
permission_mode: "Permission mode",
|
|
425
|
+
avatar: "Avatar",
|
|
426
|
+
avatar_hint: "Updates the Desktop and Android mascots immediately.",
|
|
334
427
|
system: "Extra prompt (system)",
|
|
335
428
|
system_hint: "Text prepended to the base system prompt.",
|
|
336
429
|
system_ph: "(Empty = the base prompt from core/agent/prompts/super-agent-base.md is used)",
|
|
@@ -398,6 +491,7 @@ export const en = {
|
|
|
398
491
|
nav: {
|
|
399
492
|
overview: "Overview",
|
|
400
493
|
chat: "Chat",
|
|
494
|
+
group: "Group",
|
|
401
495
|
config: "Config",
|
|
402
496
|
telegram: "Telegram",
|
|
403
497
|
agents: "Agents",
|
|
@@ -422,6 +516,50 @@ export const en = {
|
|
|
422
516
|
config: "Config",
|
|
423
517
|
},
|
|
424
518
|
|
|
519
|
+
groups: {
|
|
520
|
+
title: "Groups",
|
|
521
|
+
new: "New",
|
|
522
|
+
new_group: "New group…",
|
|
523
|
+
new_hint: "Several agents in one room",
|
|
524
|
+
pick_members: "Pick members",
|
|
525
|
+
add_member: "Add to group",
|
|
526
|
+
make_group: "Add someone (make a group)",
|
|
527
|
+
remove_member: "Remove from group",
|
|
528
|
+
all_in: "Everyone's already in.",
|
|
529
|
+
joined_chat: "{name} joined the chat",
|
|
530
|
+
left_chat: "{name} left the chat",
|
|
531
|
+
new_title: "New group chat",
|
|
532
|
+
empty: "No groups yet.",
|
|
533
|
+
pick: "Pick a group or create a new one.",
|
|
534
|
+
no_messages: "No messages",
|
|
535
|
+
name_label: "Group name",
|
|
536
|
+
name_ph: "Optional",
|
|
537
|
+
members_label: "Members",
|
|
538
|
+
members_hint: "tap to add; the number is the order",
|
|
539
|
+
first_hint: "If you write without mentioning anyone, the first agent replies.",
|
|
540
|
+
create: "Create group",
|
|
541
|
+
start_hint: "Type to start. Use @ to address someone in particular.",
|
|
542
|
+
composer_ph: "Message… @mention · /invite name hi…",
|
|
543
|
+
invite_ph: "Message… /invite name hi…",
|
|
544
|
+
mention_pick: "Mention",
|
|
545
|
+
invite_cmd: "/invite",
|
|
546
|
+
suggest_hint: "↑↓ to move · Enter to pick · Esc to close",
|
|
547
|
+
cmd_menu: "Commands",
|
|
548
|
+
cmd_invite_label: "Invite",
|
|
549
|
+
cmd_invite_hint: "Add someone, then write their welcome message",
|
|
550
|
+
cmd_new_label: "New session",
|
|
551
|
+
cmd_new_hint: "Start a fresh chat with this agent",
|
|
552
|
+
cmd_tools_label: "Tools",
|
|
553
|
+
cmd_tools_hint: "Toggle tool cards in this thread",
|
|
554
|
+
you: "You",
|
|
555
|
+
you_initial: "Y",
|
|
556
|
+
pulled_by: "pulled in by {name}",
|
|
557
|
+
deleted: "Group deleted",
|
|
558
|
+
not_found: "Group not found.",
|
|
559
|
+
delete_title: "Delete group",
|
|
560
|
+
delete_confirm: "Delete the group “{title}”? The conversation is lost.",
|
|
561
|
+
},
|
|
562
|
+
|
|
425
563
|
overview: {
|
|
426
564
|
tasks_open: "Open tasks",
|
|
427
565
|
routines: "Routines",
|
|
@@ -430,7 +568,7 @@ export const en = {
|
|
|
430
568
|
mcps: "MCPs",
|
|
431
569
|
artifacts: "Artifacts",
|
|
432
570
|
chat: "Chat (super-agent)",
|
|
433
|
-
chat_value: "
|
|
571
|
+
chat_value: "Open",
|
|
434
572
|
roster: "Team",
|
|
435
573
|
no_agents: "No agents yet.",
|
|
436
574
|
orchestrators: "Orchestrators",
|
|
@@ -460,20 +598,39 @@ export const en = {
|
|
|
460
598
|
send: "Send",
|
|
461
599
|
stop: "Stop",
|
|
462
600
|
new_session: "New session",
|
|
601
|
+
rename: "Rename",
|
|
602
|
+
rename_title: "Rename the session",
|
|
603
|
+
rename_label: "Name",
|
|
604
|
+
rename_hint: "Empty goes back to the name taken from the first thing said.",
|
|
605
|
+
renamed: "Session renamed.",
|
|
606
|
+
archive: "Archive",
|
|
607
|
+
unarchive: "Unarchive",
|
|
608
|
+
archived_ok: "Session archived.",
|
|
609
|
+
unarchived_ok:"Session unarchived.",
|
|
610
|
+
archived_group:"Archived",
|
|
611
|
+
new_session_confirm_title: "Start a new session",
|
|
612
|
+
new_session_confirm_desc: "You get a blank thread with the same agent. The current conversation stays saved and you can come back to it from the list.",
|
|
463
613
|
delete: "Delete",
|
|
464
614
|
delete_confirm_title: "Delete chat",
|
|
465
615
|
delete_confirm_desc: "This can't be undone. This chat's history will be permanently deleted.",
|
|
466
616
|
deleted: "Chat deleted.",
|
|
617
|
+
group_regen_title: "Regenerate the reply",
|
|
618
|
+
group_regen_confirm: "Regenerate",
|
|
619
|
+
group_edit_title: "Edit & resend",
|
|
620
|
+
group_edit_confirm: "Edit & resend",
|
|
621
|
+
group_rewind_desc: "This overwrites {n} newer message(s) in the group. It can't be undone.",
|
|
467
622
|
meta_created: "Created {date} · {channel}",
|
|
468
623
|
meta_new: "New chat · {channel}",
|
|
469
|
-
copy: "
|
|
624
|
+
copy: "Copy",
|
|
470
625
|
copied: "Copied.",
|
|
471
626
|
stopped_marker: " [stopped]",
|
|
472
627
|
create_agent: "Create agent",
|
|
628
|
+
view_agent: "View agent",
|
|
473
629
|
create_agent_title: "Create agent",
|
|
474
630
|
create_agent_desc: "Required to start a chat in this project.",
|
|
475
|
-
|
|
476
|
-
|
|
631
|
+
slug_label: "Slug",
|
|
632
|
+
role_label: "Role",
|
|
633
|
+
model_label: "Model",
|
|
477
634
|
model_hint: "e.g. openai:gpt-5, groq:llama-3.3-70b-versatile",
|
|
478
635
|
master_label: "Master agent",
|
|
479
636
|
list: {
|
|
@@ -484,27 +641,24 @@ export const en = {
|
|
|
484
641
|
empty: "No conversations yet. Start one from the right.",
|
|
485
642
|
count: "{n} total",
|
|
486
643
|
pick_agent: "Pick an agent",
|
|
644
|
+
new_single: "Chat",
|
|
645
|
+
new_single_hint: "With one agent",
|
|
487
646
|
},
|
|
488
647
|
},
|
|
489
648
|
|
|
490
649
|
tasks: {
|
|
491
650
|
title: "Tasks (TODOs)",
|
|
492
651
|
subtitle: "Append-only JSONL in ~/.apx/projects/<id>/tasks/.",
|
|
493
|
-
add: "add",
|
|
494
|
-
add_label: "New task",
|
|
495
652
|
add_placeholder: "e.g. fix scroll bug",
|
|
496
653
|
empty: "No {state} tasks.",
|
|
497
654
|
empty_open: "No open tasks.",
|
|
498
655
|
created: "Task created.",
|
|
499
|
-
create_error: "
|
|
656
|
+
create_error: "Could not create task",
|
|
500
657
|
done: "✓ done",
|
|
501
658
|
drop: "✗ drop",
|
|
502
659
|
reopen: "↻ reopen",
|
|
503
|
-
due: "
|
|
660
|
+
due: "Due",
|
|
504
661
|
via: "via",
|
|
505
|
-
aria_done: "mark done",
|
|
506
|
-
aria_drop: "discard task",
|
|
507
|
-
aria_reopen: "reopen task",
|
|
508
662
|
},
|
|
509
663
|
|
|
510
664
|
global_tasks: {
|
|
@@ -518,11 +672,11 @@ export const en = {
|
|
|
518
672
|
field_project: "Project",
|
|
519
673
|
|
|
520
674
|
field_due: "Due",
|
|
521
|
-
any_status: "
|
|
675
|
+
any_status: "Any status",
|
|
522
676
|
title: "Tasks (all projects)",
|
|
523
677
|
subtitle: "Aggregated tasks from all registered projects.",
|
|
524
678
|
empty: "No tasks.",
|
|
525
|
-
due: "
|
|
679
|
+
due: "Due",
|
|
526
680
|
go_project: "Go to project",
|
|
527
681
|
},
|
|
528
682
|
|
|
@@ -550,17 +704,53 @@ export const en = {
|
|
|
550
704
|
title: "Commitments",
|
|
551
705
|
subtitle: "What was promised, to whom, and by when. Separate from tasks: someone is waiting on these.",
|
|
552
706
|
empty: "Nothing promised.",
|
|
553
|
-
overdue: "was due",
|
|
554
707
|
overdue_only: "Past their date",
|
|
555
708
|
no_date: "no date agreed",
|
|
556
|
-
moved: "
|
|
709
|
+
moved: "Moved",
|
|
557
710
|
mark_kept: "Kept",
|
|
558
711
|
mark_missed: "Missed",
|
|
712
|
+
mark_dropped: "Delete",
|
|
713
|
+
dropped_toast: "Commitment deleted.",
|
|
714
|
+
confirm_kept_title: "Mark as kept?",
|
|
715
|
+
confirm_kept_desc: "Marks what you promised {who} as kept.",
|
|
716
|
+
confirm_missed_title: "Mark as missed?",
|
|
717
|
+
confirm_missed_desc: "Marks what you promised {who} as missed. It stays on the record.",
|
|
718
|
+
confirm_dropped_title: "Delete commitment?",
|
|
719
|
+
confirm_dropped_desc: "Deletes what you promised {who}. Use it when you filed it by mistake.",
|
|
720
|
+
select_row: "Select {who}",
|
|
721
|
+
bulk_selected: "{count} selected",
|
|
722
|
+
bulk_clear: "Clear selection",
|
|
723
|
+
confirm_bulk_kept_title: "Mark {count} as kept?",
|
|
724
|
+
confirm_bulk_kept_desc: "Marks {count} commitments as kept.",
|
|
725
|
+
confirm_bulk_dropped_title: "Delete {count} commitments?",
|
|
726
|
+
confirm_bulk_dropped_desc: "Deletes {count} commitments. For the ones you filed by mistake.",
|
|
727
|
+
bulk_kept_toast: "{count} commitments marked as kept.",
|
|
728
|
+
bulk_dropped_toast: "{count} commitments deleted.",
|
|
729
|
+
created: "Commitment recorded.",
|
|
730
|
+
edit_title: "Edit commitment",
|
|
731
|
+
row_actions: "Commitment actions",
|
|
732
|
+
list_title: "Commitments",
|
|
733
|
+
detail_empty: "Pick a commitment from the list.",
|
|
734
|
+
history_title: "Date history",
|
|
735
|
+
history_empty: "The date was never moved.",
|
|
736
|
+
promised: "Promised",
|
|
737
|
+
field_note: "Note",
|
|
738
|
+
field_due_move_hint: "Moving the date is recorded as a renegotiation, keeping the previous date in the history.",
|
|
559
739
|
state: {
|
|
560
|
-
open:
|
|
561
|
-
kept:
|
|
562
|
-
missed:
|
|
563
|
-
|
|
740
|
+
open: "Open",
|
|
741
|
+
kept: "Kept",
|
|
742
|
+
missed: "Missed",
|
|
743
|
+
dropped: "Deleted",
|
|
744
|
+
all: "All",
|
|
745
|
+
},
|
|
746
|
+
// Singular, for a single row's chip (the `state` block is plural
|
|
747
|
+
// because it labels the filters).
|
|
748
|
+
face: {
|
|
749
|
+
open: "Open",
|
|
750
|
+
overdue: "Overdue",
|
|
751
|
+
kept: "Kept",
|
|
752
|
+
missed: "Missed",
|
|
753
|
+
dropped: "Deleted",
|
|
564
754
|
},
|
|
565
755
|
},
|
|
566
756
|
|
|
@@ -568,14 +758,14 @@ export const en = {
|
|
|
568
758
|
title: "Heartbeats / Routines",
|
|
569
759
|
subtitle: "Cron, every:Nm, once:ISO. Each routine fires an agent or a shell.",
|
|
570
760
|
empty: "No routines. Create one above.",
|
|
571
|
-
new: "
|
|
761
|
+
new: "New",
|
|
572
762
|
new_btn: "New",
|
|
573
763
|
delete_confirm: "Delete routine {name}?",
|
|
574
764
|
delete_confirm_body: "This can't be undone.",
|
|
575
765
|
saved: "Routine saved.",
|
|
576
|
-
paused: "
|
|
577
|
-
next_run: "
|
|
578
|
-
last_run: "
|
|
766
|
+
paused: "Paused",
|
|
767
|
+
next_run: "Next:",
|
|
768
|
+
last_run: "Last:",
|
|
579
769
|
enabled_hint: "Active · runs on schedule",
|
|
580
770
|
disabled_hint: "Paused · only via Run button",
|
|
581
771
|
enabled_label: "Enabled",
|
|
@@ -600,16 +790,27 @@ export const en = {
|
|
|
600
790
|
block_command: "Command",
|
|
601
791
|
block_empty: "(empty)",
|
|
602
792
|
runs_title: "Executions",
|
|
793
|
+
// A run in flight: which phase of the pipeline it is in, and who asked.
|
|
794
|
+
phase_pre: "Running pre-commands",
|
|
795
|
+
phase_agent: "Working",
|
|
796
|
+
phase_delivery: "Delivering",
|
|
797
|
+
phase_post: "Running post-commands",
|
|
798
|
+
trigger_manual: "By hand",
|
|
799
|
+
trigger_schedule: "On schedule",
|
|
800
|
+
trigger_agent: "Asked by an agent",
|
|
801
|
+
live_waiting: "Starting up…",
|
|
603
802
|
runs_empty: "No executions yet.",
|
|
604
803
|
runs_close: "Close",
|
|
605
804
|
runs_no_detail: "No further detail.",
|
|
606
805
|
runs_output: "Output",
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
806
|
+
runs_chat: "Chat",
|
|
807
|
+
open_chat: "Open chat",
|
|
808
|
+
status_ok: "Ok",
|
|
809
|
+
status_error: "Error",
|
|
810
|
+
status_skipped: "Skipped",
|
|
610
811
|
agent_field: "Agent (spec.agent)",
|
|
611
812
|
agent_hint: "Who executes the routine.",
|
|
612
|
-
agent_loading: "
|
|
813
|
+
agent_loading: "Loading…",
|
|
613
814
|
agent_pick: "— pick an agent —",
|
|
614
815
|
prompt_exec: "Prompt (spec.prompt)",
|
|
615
816
|
prompt_exec_ph: "what is pending for today?",
|
|
@@ -627,16 +828,23 @@ export const en = {
|
|
|
627
828
|
shell_hint: "Runs as-is in the shell. No prompt, no pre/post.",
|
|
628
829
|
hb_channel: "Channel (spec.channel)",
|
|
629
830
|
hb_message: "Message (spec.message)",
|
|
630
|
-
name_required: "
|
|
631
|
-
save_error: "
|
|
632
|
-
run_error: "
|
|
633
|
-
toggle_error: "
|
|
634
|
-
delete_error: "
|
|
831
|
+
name_required: "Name required",
|
|
832
|
+
save_error: "Save failed",
|
|
833
|
+
run_error: "Run failed",
|
|
834
|
+
toggle_error: "Toggle failed",
|
|
835
|
+
delete_error: "Delete failed",
|
|
635
836
|
run_success: "{name} fired.",
|
|
636
837
|
run_confirm: "Run routine {name} now?",
|
|
637
838
|
run_confirm_body: "Runs the action once, regardless of the schedule.",
|
|
839
|
+
select_row: "Select {name}",
|
|
840
|
+
bulk_selected: "{count} selected",
|
|
841
|
+
bulk_run: "Run",
|
|
842
|
+
bulk_clear: "Clear selection",
|
|
843
|
+
confirm_bulk_run_title: "Run {count} routines?",
|
|
844
|
+
confirm_bulk_run_desc: "Runs {count} routines now, regardless of the schedule.",
|
|
845
|
+
bulk_run_toast: "{count} routines run.",
|
|
638
846
|
running: "Running…",
|
|
639
|
-
delete_success: "
|
|
847
|
+
delete_success: "Deleted.",
|
|
640
848
|
},
|
|
641
849
|
|
|
642
850
|
agents: {
|
|
@@ -656,36 +864,45 @@ export const en = {
|
|
|
656
864
|
orchestrator: "Orchestrator",
|
|
657
865
|
new_title: "New agent",
|
|
658
866
|
new_desc: "POST /projects/:pid/agents — writes .apc/agents/<slug>.md.",
|
|
659
|
-
slug_label: "
|
|
867
|
+
slug_label: "Slug",
|
|
660
868
|
slug_ph: "cody",
|
|
661
|
-
role_label: "
|
|
869
|
+
role_label: "Role (optional)",
|
|
662
870
|
role_ph: "code refactor",
|
|
663
|
-
model_label: "
|
|
871
|
+
model_label: "Model (optional)",
|
|
664
872
|
model_hint: "e.g. ollama:gemma2:9b, openai:gpt-4o-mini",
|
|
665
|
-
lang_label: "
|
|
666
|
-
desc_label: "
|
|
873
|
+
lang_label: "Language (optional)",
|
|
874
|
+
desc_label: "Description (optional)",
|
|
667
875
|
desc_ph: "What does this agent do…",
|
|
668
|
-
skills_label: "
|
|
876
|
+
skills_label: "Skills (comma)",
|
|
669
877
|
skills_ph: "skill-a, skill-b",
|
|
670
|
-
tools_label: "
|
|
878
|
+
tools_label: "Tools (comma)",
|
|
671
879
|
tools_ph: "tool-a, tool-b",
|
|
672
|
-
parent_label: "
|
|
880
|
+
parent_label: "Reports to (parent, optional)",
|
|
673
881
|
parent_hint: "Sub-agent of an orchestrator.",
|
|
674
882
|
none_parent: "— none —",
|
|
675
883
|
master_label: "Orchestrator (master)",
|
|
676
884
|
create_success: "Agent {slug} created.",
|
|
677
|
-
create_error: "
|
|
885
|
+
create_error: "Create failed",
|
|
678
886
|
import_title: "Import from vault",
|
|
679
887
|
import_desc: "Templates in ~/.apx/agents. Registered in this project (.apc/agents/<slug>.md).",
|
|
680
888
|
import_empty: "No templates in the vault.",
|
|
681
889
|
import_success: "Imported: {slug}",
|
|
682
|
-
import_already: "
|
|
890
|
+
import_already: "Already here",
|
|
683
891
|
import_btn: "Import",
|
|
684
892
|
},
|
|
685
893
|
|
|
686
894
|
agent_detail: {
|
|
687
895
|
not_found: "Agent not found.",
|
|
688
896
|
chat_btn: "Chat with {slug}",
|
|
897
|
+
clone_btn: "Clone",
|
|
898
|
+
clone_hint: "Duplicate this agent (prompt and memory) with a (n) name to avoid duplicates.",
|
|
899
|
+
clone_success: "Cloned as {slug}",
|
|
900
|
+
slug_label: "Slug (identifier)",
|
|
901
|
+
slug_hint: "The agent's key: names its file, its memory dir and its URL. Renaming moves them all.",
|
|
902
|
+
rename_btn: "Rename",
|
|
903
|
+
rename_from_name: "Use the name: {slug}",
|
|
904
|
+
rename_confirm: "Rename “{from}” to “{to}”? This moves the agent's file and its memory/conversations, and repoints sub-agents and routines that point at it.",
|
|
905
|
+
rename_success: "Renamed to {slug}",
|
|
689
906
|
reports_to: "↳ reports to",
|
|
690
907
|
no_threads: "No threads.",
|
|
691
908
|
no_activity: "No recorded activity.",
|
|
@@ -693,6 +910,12 @@ export const en = {
|
|
|
693
910
|
subagents: "Sub-agents",
|
|
694
911
|
subagents_desc: "Agents that report to this orchestrator.",
|
|
695
912
|
config_title: "Agent configuration",
|
|
913
|
+
tab_config: "Config",
|
|
914
|
+
tab_prompt: "Prompt",
|
|
915
|
+
config_identity: "Identity",
|
|
916
|
+
config_behavior: "Behavior & hierarchy",
|
|
917
|
+
config_behavior_desc: "Autonomy, reporting line and model override.",
|
|
918
|
+
config_capabilities: "Skills & tools",
|
|
696
919
|
type_label: "Type",
|
|
697
920
|
area_label: "Area",
|
|
698
921
|
area_hint: "e.g. operations, marketing",
|
|
@@ -701,20 +924,26 @@ export const en = {
|
|
|
701
924
|
parent_label: "Reports to (parent)",
|
|
702
925
|
none_parent: "— none —",
|
|
703
926
|
model_label: "Base model",
|
|
704
|
-
model_hint: "
|
|
927
|
+
model_hint: "`inherit` = router default (chat can still pick a model for that turn). A `provider:model` overwrites the field.",
|
|
705
928
|
model_ph: "(empty = router default)",
|
|
929
|
+
model_router_default: "Router default",
|
|
930
|
+
model_provider_default: "{provider} · default",
|
|
931
|
+
model_unlisted: "not from a configured provider",
|
|
706
932
|
skills_label: "Skills (comma)",
|
|
707
933
|
bio_label: "Bio / description",
|
|
708
934
|
system_label: "System prompt",
|
|
709
935
|
system_hint: "Defines personality and behavior (body of AGENT.md).",
|
|
936
|
+
prompt_lines: "{n} lines",
|
|
937
|
+
prompt_empty: "Not set",
|
|
710
938
|
master_label: "Orchestrator (master)",
|
|
711
939
|
delete_btn: "Delete agent",
|
|
712
940
|
save_btn: "Save changes",
|
|
713
941
|
delete_confirm: "Delete agent \"{slug}\"? Removes .apc/agents/{slug}.md and local runtime data.",
|
|
714
942
|
update_success: "Agent updated.",
|
|
715
943
|
delete_success: "Agent deleted.",
|
|
716
|
-
tools_hint: "
|
|
717
|
-
tools_custom_ph: "
|
|
944
|
+
tools_hint: "This agent's allowlist — not the super-agent registry. For editing: write_file, edit_file, run_command, list_skills, load_skill. Browser/HTTP/MCP stay opt-in.",
|
|
945
|
+
tools_custom_ph: "+ custom tool…",
|
|
946
|
+
tools_csv_ph: "selected tools, comma-separated",
|
|
718
947
|
memory_title: "Agent memory",
|
|
719
948
|
memory_empty: "(empty memory)",
|
|
720
949
|
memory_saved: "Memory saved.",
|
|
@@ -727,13 +956,18 @@ export const en = {
|
|
|
727
956
|
brain_title: "Brain",
|
|
728
957
|
brain_desc: "Real relationship graph of the agent: memory, threads, tasks, heartbeats and hierarchy. (first version — will be refined)",
|
|
729
958
|
brain_empty: "No relationships to graph yet (no memory, threads, tasks or routines).",
|
|
730
|
-
msgs_count: "
|
|
959
|
+
msgs_count: "Msgs",
|
|
731
960
|
},
|
|
732
961
|
|
|
733
962
|
mcps: {
|
|
734
963
|
title: "MCP servers",
|
|
735
964
|
subtitle: "3 scopes: runtime > shared > global. Conflicts shown above if any.",
|
|
736
965
|
empty: "No MCPs configured.",
|
|
966
|
+
filter_label: "Filter by scope",
|
|
967
|
+
filter_all: "All",
|
|
968
|
+
filter_project: "Project",
|
|
969
|
+
filter_global: "Global",
|
|
970
|
+
filter_empty: "No MCPs match this filter.",
|
|
737
971
|
new: "MCP",
|
|
738
972
|
delete_confirm: "Delete MCP {name} from scope {scope}?",
|
|
739
973
|
conflicts: "⚠ Conflicts: {names}",
|
|
@@ -754,9 +988,9 @@ export const en = {
|
|
|
754
988
|
url_ph: "https://example.com/mcp",
|
|
755
989
|
enabled_label: "Enabled",
|
|
756
990
|
add_btn: "Add",
|
|
757
|
-
name_required: "
|
|
991
|
+
name_required: "Name required",
|
|
758
992
|
env_invalid: "env must be valid JSON",
|
|
759
|
-
removed: "
|
|
993
|
+
removed: "Removed",
|
|
760
994
|
added: "MCP added.",
|
|
761
995
|
updated: "MCP updated.",
|
|
762
996
|
edit_title: "Edit MCP",
|
|
@@ -773,7 +1007,7 @@ export const en = {
|
|
|
773
1007
|
logs_events: "Recent events",
|
|
774
1008
|
logs_stderr: "stderr (last 4KB)",
|
|
775
1009
|
logs_panel_title: "Live logs",
|
|
776
|
-
logs_panel_pick: "
|
|
1010
|
+
logs_panel_pick: "Pick an MCP",
|
|
777
1011
|
logs_panel_hint: "Click an MCP in the list to see what's happening live.",
|
|
778
1012
|
logs_panel_idle: "No activity. Hit Test to spin it up.",
|
|
779
1013
|
scope_runtime: "Runtime",
|
|
@@ -819,9 +1053,9 @@ export const en = {
|
|
|
819
1053
|
filter_project: "Project only",
|
|
820
1054
|
filter_global: "Globals only",
|
|
821
1055
|
scope_label: "Scope",
|
|
822
|
-
scope_project: "
|
|
1056
|
+
scope_project: "Project",
|
|
823
1057
|
scope_project_desc: "This project only. Beats the global with the same name.",
|
|
824
|
-
scope_global: "
|
|
1058
|
+
scope_global: "Global",
|
|
825
1059
|
scope_global_desc: "Available to every project.",
|
|
826
1060
|
name_label: "Name",
|
|
827
1061
|
name_hint: "Uppercase, digits and _. E.g. MY_API_KEY, GITHUB_TOKEN.",
|
|
@@ -847,7 +1081,7 @@ export const en = {
|
|
|
847
1081
|
pick: "Pick an agent to view its conversations.",
|
|
848
1082
|
empty: "No conversations for {slug}.",
|
|
849
1083
|
conversation_title: "Conversation {id}",
|
|
850
|
-
messages: "
|
|
1084
|
+
messages: "Messages",
|
|
851
1085
|
via: "via",
|
|
852
1086
|
},
|
|
853
1087
|
|
|
@@ -888,7 +1122,7 @@ export const en = {
|
|
|
888
1122
|
chat_id: "Chat ID (override)",
|
|
889
1123
|
saved: "Override saved.",
|
|
890
1124
|
cleared: "Override removed — falls back to default.",
|
|
891
|
-
override_active: "
|
|
1125
|
+
override_active: "Override active",
|
|
892
1126
|
channel_badge: "Channel {name}",
|
|
893
1127
|
no_override: "No override. Messages from this project go to the default channel.",
|
|
894
1128
|
respond_engine: "Respond with engine",
|
|
@@ -907,6 +1141,9 @@ export const en = {
|
|
|
907
1141
|
sidebar_title: "Memories",
|
|
908
1142
|
general_group: "General",
|
|
909
1143
|
general_item: "Project memory",
|
|
1144
|
+
committed: "In repo",
|
|
1145
|
+
local_item: "Internal memory",
|
|
1146
|
+
not_committed: "Local",
|
|
910
1147
|
project_title: "Project memory",
|
|
911
1148
|
project_desc: "Durable facts at the project level. .apc/memory.md — read by agents and the super-agent.",
|
|
912
1149
|
project_ph: "# Project Memory\n\nStable facts that any agent should know…",
|
|
@@ -931,7 +1168,7 @@ export const en = {
|
|
|
931
1168
|
workspaces_new: "New project",
|
|
932
1169
|
workspaces_empty: "No projects. Add one with the button above.",
|
|
933
1170
|
sessions_title: "Sessions",
|
|
934
|
-
sessions_desc: "Sessions from all engines (apx · claude · codex), newest first.",
|
|
1171
|
+
sessions_desc: "Sessions from all engines (apx · claude · codex · opencode), newest first.",
|
|
935
1172
|
sessions_desc_scoped: "Sessions in this project's folder ({path}), all engines, newest first.",
|
|
936
1173
|
sessions_all: "All engines",
|
|
937
1174
|
sessions_empty: "No sessions.",
|
|
@@ -942,15 +1179,26 @@ export const en = {
|
|
|
942
1179
|
sessions_clear: "Clear filters",
|
|
943
1180
|
sessions_refresh: "Refresh list",
|
|
944
1181
|
sessions_no_match: "No sessions match “{q}”.",
|
|
945
|
-
sessions_act_cmd: "Copy
|
|
1182
|
+
sessions_act_cmd: "Copy command",
|
|
946
1183
|
sessions_act_ask: "Ask {name} to continue",
|
|
947
1184
|
sessions_act_folder:"Open folder",
|
|
948
1185
|
sessions_act_path: "Copy path",
|
|
1186
|
+
sessions_act_menu: "Session actions",
|
|
1187
|
+
sessions_act_open_terminal:"Continue here",
|
|
1188
|
+
sessions_pick: "Pick a session to see its detail.",
|
|
1189
|
+
sessions_detail_command:"Command to continue it",
|
|
1190
|
+
sessions_detail_folder:"Folder",
|
|
1191
|
+
sessions_detail_updated:"Last activity",
|
|
1192
|
+
sessions_detail_last_prompt:"Last message",
|
|
1193
|
+
sessions_term_connecting:"Connecting…",
|
|
1194
|
+
sessions_term_closed:"Session closed",
|
|
1195
|
+
sessions_term_close:"Close the terminal",
|
|
949
1196
|
sessions_cmd_copied:"Command copied — paste it in your terminal",
|
|
950
1197
|
sessions_path_copied:"Path copied",
|
|
951
1198
|
sessions_copy_failed:"Could not copy",
|
|
952
1199
|
sessions_no_folder: "This session has no folder",
|
|
953
1200
|
sessions_no_path: "This session has no path",
|
|
1201
|
+
sessions_no_command:"This engine cannot reopen the session",
|
|
954
1202
|
sessions_folder_failed:"Could not open folder: {msg}",
|
|
955
1203
|
defaults_title: "Agent defaults",
|
|
956
1204
|
defaults_desc: "Global vault templates. Bundled ones come with APX and are always present; ones you create or edit go in ~/.apx/agents and override. Import them into a project from Agents › Import.",
|
|
@@ -983,21 +1231,21 @@ export const en = {
|
|
|
983
1231
|
desc_global: "Daemon activity (global channels: telegram, direct…). ~/.apx/messages/<channel>/.",
|
|
984
1232
|
desc_project: "Project activity. ~/.apx/projects/<id>/messages/.",
|
|
985
1233
|
filter_channel: "filter channel (e.g. telegram)",
|
|
986
|
-
filter_dir: "
|
|
1234
|
+
filter_dir: "Direction",
|
|
987
1235
|
all_directions: "All directions",
|
|
988
1236
|
in: "Incoming (in)",
|
|
989
1237
|
out: "Outgoing (out)",
|
|
990
|
-
filter_type: "
|
|
1238
|
+
filter_type: "Type",
|
|
991
1239
|
all_types: "All types",
|
|
992
|
-
search_text: "
|
|
1240
|
+
search_text: "Search text…",
|
|
993
1241
|
count_of: "of",
|
|
994
1242
|
no_activity: "No activity.",
|
|
995
1243
|
no_activity_ch: "No activity in channel \"{ch}\".",
|
|
996
1244
|
error: "Could not read messages: {msg}",
|
|
997
|
-
show_more: "
|
|
998
|
-
event_routine_created: "
|
|
999
|
-
event_routine_updated: "
|
|
1000
|
-
show_less: "
|
|
1245
|
+
show_more: "Show more",
|
|
1246
|
+
event_routine_created: "Routine created",
|
|
1247
|
+
event_routine_updated: "Routine updated",
|
|
1248
|
+
show_less: "Show less",
|
|
1001
1249
|
daemon_errors: "Daemon errors (~/.apx/logs/errors.jsonl)",
|
|
1002
1250
|
no_errors: "No errors recorded. 🎉",
|
|
1003
1251
|
},
|
|
@@ -1006,15 +1254,15 @@ export const en = {
|
|
|
1006
1254
|
title: "Telegram contacts",
|
|
1007
1255
|
desc: "Who writes to the bots. The role defines which tools they can use; a guest has no permissions until you assign a role.",
|
|
1008
1256
|
empty: "No contacts yet — they register automatically when someone writes to a bot.",
|
|
1009
|
-
owner_badge: "
|
|
1257
|
+
owner_badge: "Owner",
|
|
1010
1258
|
assign_role: "Assign role",
|
|
1011
1259
|
owner_hint: "Channel owner — change it from the channel",
|
|
1012
1260
|
removed: "Contact deleted.",
|
|
1013
1261
|
delete_confirm: "Delete contact {name}?",
|
|
1014
|
-
last_seen: "
|
|
1015
|
-
tools_all: "
|
|
1016
|
-
tools_none: "
|
|
1017
|
-
tools_label: "
|
|
1262
|
+
last_seen: "Seen:",
|
|
1263
|
+
tools_all: "Tools: all",
|
|
1264
|
+
tools_none: "Tools: none",
|
|
1265
|
+
tools_label: "Tools:",
|
|
1018
1266
|
},
|
|
1019
1267
|
|
|
1020
1268
|
telegram_channels: {
|
|
@@ -1025,7 +1273,7 @@ export const en = {
|
|
|
1025
1273
|
removed: "Channel deleted.",
|
|
1026
1274
|
delete_confirm: "Delete channel {name}?",
|
|
1027
1275
|
no_owner: "no owner (claimed on first DM)",
|
|
1028
|
-
owner_label: "
|
|
1276
|
+
owner_label: "Owner:",
|
|
1029
1277
|
},
|
|
1030
1278
|
|
|
1031
1279
|
telegram_channel_dialog: {
|
|
@@ -1042,7 +1290,7 @@ export const en = {
|
|
|
1042
1290
|
owner_hint: "Telegram user_id of the channel owner. Overrides global role to 'owner' here. Leave empty — first private message claims it.",
|
|
1043
1291
|
owner_ph: "889721252",
|
|
1044
1292
|
respond_label: "Respond with engine (not echo)",
|
|
1045
|
-
name_required: "
|
|
1293
|
+
name_required: "Name required",
|
|
1046
1294
|
saved: "Channel saved.",
|
|
1047
1295
|
},
|
|
1048
1296
|
|
|
@@ -1055,9 +1303,9 @@ export const en = {
|
|
|
1055
1303
|
title: "Roles",
|
|
1056
1304
|
desc: "Each role defines which super-agent tools the assigned user can invoke. 'owner' always = all; 'guest' always = none (chat only).",
|
|
1057
1305
|
empty: "No roles defined.",
|
|
1058
|
-
tools_all: "
|
|
1059
|
-
tools_none: "
|
|
1060
|
-
builtin: "
|
|
1306
|
+
tools_all: "All tools",
|
|
1307
|
+
tools_none: "No tools",
|
|
1308
|
+
builtin: "Built-in",
|
|
1061
1309
|
delete_confirm: "Delete role \"{name}\"?",
|
|
1062
1310
|
removed: "Role deleted.",
|
|
1063
1311
|
saved: "Role \"{name}\" saved.",
|
|
@@ -1112,6 +1360,19 @@ export const en = {
|
|
|
1112
1360
|
new_session: "New session",
|
|
1113
1361
|
untitled: "New session",
|
|
1114
1362
|
no_sessions: "No sessions yet — create one to start coding.",
|
|
1363
|
+
no_sessions_here: "No sessions in this project. Clear the filter to see the rest.",
|
|
1364
|
+
msg_count: "{n} msg",
|
|
1365
|
+
all_projects: "All projects",
|
|
1366
|
+
all_projects_desc: "Sessions from every registered project, newest first",
|
|
1367
|
+
new_session_desc: "Pick where it runs and who answers in it.",
|
|
1368
|
+
create_session: "Create session",
|
|
1369
|
+
field_project: "Project",
|
|
1370
|
+
field_project_hint: "Files, terminal and diff are scoped to it.",
|
|
1371
|
+
field_agent: "Agent",
|
|
1372
|
+
field_agent_hint: "Who answers in this session. Changeable later from Context.",
|
|
1373
|
+
field_mode: "Mode",
|
|
1374
|
+
field_title: "Title",
|
|
1375
|
+
field_title_hint: "Optional — how the session shows in the list.",
|
|
1115
1376
|
pick_project: "Pick a project to see its sessions.",
|
|
1116
1377
|
rename: "Rename",
|
|
1117
1378
|
delete: "Delete",
|
|
@@ -1151,6 +1412,8 @@ export const en = {
|
|
|
1151
1412
|
close: "Close",
|
|
1152
1413
|
reload: "Reload",
|
|
1153
1414
|
discard_changes: "Discard changes",
|
|
1415
|
+
discard_label: "Discard",
|
|
1416
|
+
save_label: "Save",
|
|
1154
1417
|
save_shortcut_hint: "Save (Cmd/Ctrl+S)",
|
|
1155
1418
|
artifacts_rename: "Rename",
|
|
1156
1419
|
artifacts_view: "View contents",
|
|
@@ -1164,12 +1427,15 @@ export const en = {
|
|
|
1164
1427
|
artifacts_preview_public:"Public URL",
|
|
1165
1428
|
artifacts_copy_url: "Copy URL",
|
|
1166
1429
|
artifacts_preview_started: "Preview running at {url}",
|
|
1430
|
+
tree_title: "Files",
|
|
1167
1431
|
tree_collapse_all: "Collapse all",
|
|
1432
|
+
terminal_title: "Terminal",
|
|
1168
1433
|
terminal_clear: "Clear",
|
|
1169
1434
|
terminal_close: "Close terminal",
|
|
1170
1435
|
},
|
|
1171
1436
|
|
|
1172
1437
|
desktop_screen: {
|
|
1438
|
+
model_title: "Model",
|
|
1173
1439
|
status_title: "Status",
|
|
1174
1440
|
autostart_title: "Auto-start",
|
|
1175
1441
|
shortcut_title: "Keyboard shortcut",
|
|
@@ -1179,6 +1445,89 @@ export const en = {
|
|
|
1179
1445
|
open_config: "Configuration",
|
|
1180
1446
|
},
|
|
1181
1447
|
|
|
1448
|
+
images_screen: {
|
|
1449
|
+
providers_title: "Image engines",
|
|
1450
|
+
test_title: "Test image",
|
|
1451
|
+
defaults_title: "Shared defaults",
|
|
1452
|
+
configure_provider: "Configure {name}",
|
|
1453
|
+
},
|
|
1454
|
+
|
|
1455
|
+
images_ui: {
|
|
1456
|
+
providers_desc: "Engines are tried in order and the first reachable one draws. Turn one off to take it out of the chain, or add your own endpoint — a server on this Mac, a box on the LAN, or a cloud key.",
|
|
1457
|
+
providers_load_error: "Could not load the engines: {msg}",
|
|
1458
|
+
test_desc: "Draw one picture with the current routing. It also reports anything the engine could not honor.",
|
|
1459
|
+
defaults_desc: "The bottom layer under every image. An engine's own settings override these, and an explicit argument overrides both.",
|
|
1460
|
+
move_up: "Move up",
|
|
1461
|
+
move_down: "Move down",
|
|
1462
|
+
configure: "Configure",
|
|
1463
|
+
remove: "Remove",
|
|
1464
|
+
add_provider: "Add engine",
|
|
1465
|
+
new_provider: "New engine",
|
|
1466
|
+
remove_confirm: "Remove this engine?",
|
|
1467
|
+
custom_note: "Your own endpoint.",
|
|
1468
|
+
custom_desc: "Any server that speaks one of the three dialects. Pick the one it answers on — a wrong choice is a 404, not a subtle difference.",
|
|
1469
|
+
badge_local: "Local",
|
|
1470
|
+
badge_available: "Reachable",
|
|
1471
|
+
badge_unavailable: "Unreachable",
|
|
1472
|
+
badge_not_configured: "Not configured",
|
|
1473
|
+
label_label: "Name",
|
|
1474
|
+
label_hint: "How it appears in this list.",
|
|
1475
|
+
kind_label: "Dialect",
|
|
1476
|
+
kind_hint: "Which API the server answers on.",
|
|
1477
|
+
base_url_label: "Base URL",
|
|
1478
|
+
base_url_req_label: "Base URL (required)",
|
|
1479
|
+
base_url_hint: "The server's origin, without the API path — e.g. http://127.0.0.1:7860 for a local server or http://box.lan:8189 for one on the network.",
|
|
1480
|
+
base_url_openai_hint: "Leave empty for OpenAI itself. Set it to point at any OpenAI-compatible server instead.",
|
|
1481
|
+
api_key_label: "API key",
|
|
1482
|
+
api_key_set: "Set (…{suffix}) — type to replace",
|
|
1483
|
+
api_key_keep_hint: "Leave empty to keep the stored key.",
|
|
1484
|
+
api_key_optional_hint: "Optional. Most local and LAN servers need none.",
|
|
1485
|
+
api_key_reuse_hint: "Optional: falls back to {engine} or the {env} environment variable.",
|
|
1486
|
+
model_label: "Model",
|
|
1487
|
+
model_hint: "Checkpoint or model id, where the server can switch. Servers that host one model ignore it.",
|
|
1488
|
+
optional_ph: "Optional",
|
|
1489
|
+
server_default_ph: "Server default",
|
|
1490
|
+
engine_default: "Engine default",
|
|
1491
|
+
configured_default: "Configured default",
|
|
1492
|
+
engine_defaults_hint: "Defaults for THIS engine — they belong to the server, not to the prompt. A turbo checkpoint wants about 8 steps at cfg 1; a standard one wants 20 at cfg 7.",
|
|
1493
|
+
size_label: "Size",
|
|
1494
|
+
size_hint: "Width x height, e.g. 768x512.",
|
|
1495
|
+
default_size_hint: "Used when neither the engine nor the call says otherwise.",
|
|
1496
|
+
steps_label: "Steps",
|
|
1497
|
+
steps_hint: "Sampling steps. More is slower, not always better.",
|
|
1498
|
+
cfg_label: "Guidance (cfg)",
|
|
1499
|
+
cfg_hint: "How closely the picture follows the prompt.",
|
|
1500
|
+
sampler_label: "Sampler",
|
|
1501
|
+
scheduler_label: "Scheduler",
|
|
1502
|
+
format_label: "Format",
|
|
1503
|
+
format_hint: "Only where the server lets you choose.",
|
|
1504
|
+
quality_label: "Quality",
|
|
1505
|
+
quality_hint: "OpenAI only: standard or hd.",
|
|
1506
|
+
timeout_label: "Timeout (s)",
|
|
1507
|
+
timeout_hint: "How long to wait for one image before giving up.",
|
|
1508
|
+
negative_label: "Negative prompt",
|
|
1509
|
+
negative_hint: "What to keep out of every picture. The OpenAI dialect has no field for it.",
|
|
1510
|
+
negative_ph: "Blurry, watermark, text",
|
|
1511
|
+
count_label: "Images per run",
|
|
1512
|
+
count_hint: "How many to draw at once.",
|
|
1513
|
+
prompt_label: "Prompt",
|
|
1514
|
+
prompt_ph: "A green origami fox on a white background, studio light",
|
|
1515
|
+
engine_label: "Engine",
|
|
1516
|
+
test_routed_chain: "Routed (first reachable)",
|
|
1517
|
+
test_routed_single: "Routed ({id})",
|
|
1518
|
+
generate: "Generate",
|
|
1519
|
+
download: "Download",
|
|
1520
|
+
seed_is: "Seed {seed}",
|
|
1521
|
+
ignored_note: "{provider} ignored: {options}. That dialect has no field for them.",
|
|
1522
|
+
mock_desc: "The offline test engine. Always available so a call never fails outright — nothing to configure.",
|
|
1523
|
+
err_label_required: "A name is required.",
|
|
1524
|
+
err_base_url_required: "A base URL is required.",
|
|
1525
|
+
err_save: "Could not save.",
|
|
1526
|
+
toast_config_saved: "Engine saved.",
|
|
1527
|
+
toast_defaults_saved: "Defaults saved.",
|
|
1528
|
+
toast_provider_removed: "Engine removed.",
|
|
1529
|
+
},
|
|
1530
|
+
|
|
1182
1531
|
voice_screen: {
|
|
1183
1532
|
providers_title: "Voice providers (TTS)",
|
|
1184
1533
|
test_title: "Test voice",
|
|
@@ -1204,10 +1553,27 @@ export const en = {
|
|
|
1204
1553
|
provider_hint: "Ollama is local and free. Gemini/OpenAI use the API key from their section in Models (or the one below).",
|
|
1205
1554
|
mode_label: "Selection mode",
|
|
1206
1555
|
mode_hint: "Chain falls back to the next if one fails; Single uses exactly the chosen provider.",
|
|
1207
|
-
|
|
1208
|
-
|
|
1556
|
+
chain_label: "Fallback order",
|
|
1557
|
+
chain_hint: "Drag with the arrows: the first available engine embeds. Keys come from Engines & models — pick each provider's embedding model right here. Turn off Ollama to stop using it.",
|
|
1558
|
+
keys_reuse_note: "API keys are reused from Engines & models — no need to re-enter them. Only set the embedding model per provider.",
|
|
1559
|
+
model_ph: "embedding model id",
|
|
1560
|
+
move_up: "Move up",
|
|
1561
|
+
move_down: "Move down",
|
|
1562
|
+
badge_local: "Local",
|
|
1563
|
+
badge_custom: "Custom",
|
|
1564
|
+
not_configured: "No key",
|
|
1565
|
+
always_on: "Always on",
|
|
1566
|
+
add_custom: "Add custom provider",
|
|
1567
|
+
remove: "Remove",
|
|
1568
|
+
custom_default_label: "Custom",
|
|
1569
|
+
custom_label_ph: "Name",
|
|
1570
|
+
custom_key_label: "API key",
|
|
1571
|
+
custom_optional_ph: "(optional)",
|
|
1572
|
+
available: "Available",
|
|
1573
|
+
unavailable: "Unavail.",
|
|
1209
1574
|
test_btn: "Test embedding",
|
|
1210
1575
|
reindex_btn: "Reindex memory",
|
|
1576
|
+
active_embedder: "Active: {embedder}",
|
|
1211
1577
|
test_ok: "Embedding OK with {embedder}",
|
|
1212
1578
|
test_failed: "Test failed: {msg}",
|
|
1213
1579
|
reindexed: "Reindexed: {indexed} chunks (cleared {cleared}).",
|
|
@@ -1245,24 +1611,44 @@ export const en = {
|
|
|
1245
1611
|
compact_fallback_ph: "(empty → super-agent model)",
|
|
1246
1612
|
},
|
|
1247
1613
|
|
|
1614
|
+
provider_test: {
|
|
1615
|
+
title: "Test {name}",
|
|
1616
|
+
description: "One message, one reply. Not a chat: nothing is stored and no history is sent.",
|
|
1617
|
+
model_label: "Model to test",
|
|
1618
|
+
model_hint: "Pick one from the list or type the id by hand.",
|
|
1619
|
+
message_label: "Message",
|
|
1620
|
+
message_ph: "Type something short…",
|
|
1621
|
+
default_message: "Hi, can you hear me?",
|
|
1622
|
+
send: "Send",
|
|
1623
|
+
waiting: "Waiting for a reply…",
|
|
1624
|
+
empty_reply: "(replied empty)",
|
|
1625
|
+
tokens: "{n} tokens",
|
|
1626
|
+
served: "Served {id}",
|
|
1627
|
+
served_mismatch: "gateway served a different id",
|
|
1628
|
+
button: "Test the connection",
|
|
1629
|
+
},
|
|
1630
|
+
|
|
1248
1631
|
router_panel: {
|
|
1249
1632
|
title: "Model router",
|
|
1250
1633
|
description: "A single general router (no per-task cases). Pick a provider and model; if the active one fails, it tries the fallback chain in order.",
|
|
1251
|
-
badge_default: "
|
|
1634
|
+
badge_default: "Default",
|
|
1252
1635
|
no_providers: "Add a provider below to be able to pick models.",
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
fallback_empty: "No fallback configured.",
|
|
1636
|
+
chain_title: "Model chain",
|
|
1637
|
+
chain_desc: "#1 is the default model; if it fails, the ones below are tried in order. Click one to edit it.",
|
|
1638
|
+
reorder: "Drag to reorder",
|
|
1639
|
+
chain_empty: "No models yet. Add the first one below.",
|
|
1258
1640
|
add_to_chain: "Add to the chain",
|
|
1259
|
-
done: "
|
|
1641
|
+
done: "Done",
|
|
1260
1642
|
save: "Save router",
|
|
1261
1643
|
saved: "Saved",
|
|
1262
1644
|
saved_toast: "Router saved.",
|
|
1263
1645
|
provider_ph: "— provider —",
|
|
1264
|
-
provider_not_found: "⚠ {name} (not found)",
|
|
1265
1646
|
provider_not_configured: "The provider \"{name}\" is not configured.",
|
|
1647
|
+
provider_off: "The provider \"{name}\" is switched off.",
|
|
1648
|
+
provider_offline: "The provider \"{name}\" is not connected (no api key, or the server is down).",
|
|
1649
|
+
hint_off: "Off",
|
|
1650
|
+
hint_offline: "not connected",
|
|
1651
|
+
ollama_empty: "Ollama did not answer and nothing is cached — type the model by hand.",
|
|
1266
1652
|
},
|
|
1267
1653
|
|
|
1268
1654
|
routing_panel: {
|
|
@@ -1326,6 +1712,8 @@ export const en = {
|
|
|
1326
1712
|
custom: "Custom",
|
|
1327
1713
|
json_mode: "JSON",
|
|
1328
1714
|
form_mode: "Back to form",
|
|
1715
|
+
tab_form: "Form",
|
|
1716
|
+
tab_json: "JSON",
|
|
1329
1717
|
json_label: "Provider config (JSON)",
|
|
1330
1718
|
json_hint: "Saved as engines.{slug} in config.json",
|
|
1331
1719
|
json_help: "Must be a valid JSON object with at least engine. The slug is taken from the form.",
|
|
@@ -1352,6 +1740,8 @@ export const en = {
|
|
|
1352
1740
|
price_cache_write: "$ cache write / 1M",
|
|
1353
1741
|
model_limits_label: "Per-model context limits (JSON)",
|
|
1354
1742
|
active_label: "Active (agents can use it)",
|
|
1743
|
+
thinking_label: "Think before answering",
|
|
1744
|
+
thinking_hint: "Turn off when the model reasons out loud and spends the token budget before writing the answer.",
|
|
1355
1745
|
err_slug_required: "Slug required.",
|
|
1356
1746
|
err_slug_required_form: "Slug required (in the form).",
|
|
1357
1747
|
err_slug_exists: "A provider \"{slug}\" already exists.",
|
|
@@ -1377,13 +1767,109 @@ export const en = {
|
|
|
1377
1767
|
|
|
1378
1768
|
chat_ui: {
|
|
1379
1769
|
copy: "Copy",
|
|
1770
|
+
edit: "Edit",
|
|
1771
|
+
edit_resend: "Save & resend",
|
|
1772
|
+
regenerate: "Regenerate",
|
|
1380
1773
|
stop: "Stop",
|
|
1381
1774
|
send: "Send",
|
|
1775
|
+
queued: "Queued",
|
|
1776
|
+
queued_cancel: "Don't send it",
|
|
1777
|
+
running_elsewhere: "Writing a reply",
|
|
1778
|
+
unread_reply: "New reply",
|
|
1779
|
+
send_mode_interrupt: "Interrupts",
|
|
1780
|
+
send_mode_queue: "Queues",
|
|
1781
|
+
send_mode_tip_interrupt: "Writing during a turn cuts it short and starts with your message. Tap to queue instead.",
|
|
1782
|
+
send_mode_tip_queue: "Writing during a turn waits for it to finish. Tap to interrupt instead.",
|
|
1382
1783
|
pick_model: "Pick model (or Auto)",
|
|
1383
1784
|
insert_variable: "Insert variable",
|
|
1384
|
-
ctx_files: "
|
|
1785
|
+
ctx_files: "Files",
|
|
1385
1786
|
ctx_actors: "{n} agents/models",
|
|
1386
1787
|
ctx_turns: "{n} turns",
|
|
1788
|
+
ctx_tokens: "Tokens",
|
|
1789
|
+
ctx_tools: "Tools",
|
|
1790
|
+
ctx_expand: "Show the context detail",
|
|
1791
|
+
jump_latest: "Jump to latest",
|
|
1792
|
+
jump_latest_new: "New messages",
|
|
1793
|
+
typing: "{name} is typing…",
|
|
1794
|
+
working: "{name} is working…",
|
|
1795
|
+
typing_generic: "Typing…",
|
|
1796
|
+
working_generic: "Working…",
|
|
1797
|
+
actions_count: "{n} actions",
|
|
1798
|
+
actions_count_one: "1 action",
|
|
1799
|
+
// A turn that ran tools, said something, then ran more: several blocks,
|
|
1800
|
+
// ONE count. Numbered against the turn so the second block does not read
|
|
1801
|
+
// as a second turn starting over at one.
|
|
1802
|
+
actions_range: "Actions {from}–{to} of {total}",
|
|
1803
|
+
actions_at: "Action {n} of {total}",
|
|
1804
|
+
show_tools: "Show tools",
|
|
1805
|
+
show_tools_hint: "Off = clean chat; on = actions and tools visible",
|
|
1806
|
+
show_tools_on: "Full view (tools)",
|
|
1807
|
+
show_tools_off: "Simple view (no tools)",
|
|
1808
|
+
thinking_label: "Thinking",
|
|
1809
|
+
thinking_running: "Thinking…",
|
|
1810
|
+
attachment: "Attachment",
|
|
1811
|
+
attachment_open: "Download",
|
|
1812
|
+
attachment_missing: "was not downloaded",
|
|
1813
|
+
attachment_failed: "could not be opened",
|
|
1814
|
+
voice_note: "Voice note",
|
|
1815
|
+
attach: "Attach a file",
|
|
1816
|
+
attach_remove: "Remove",
|
|
1817
|
+
attach_failed: "could not be uploaded",
|
|
1818
|
+
attach_bad_type: "{ext} files can't be attached",
|
|
1819
|
+
attach_too_big: "over {mb} MB",
|
|
1820
|
+
attach_photo: "Photo or video",
|
|
1821
|
+
attach_file: "File",
|
|
1822
|
+
attach_camera: "Camera",
|
|
1823
|
+
record: "Record audio",
|
|
1824
|
+
rec_cancel: "Discard",
|
|
1825
|
+
rec_insecure: "The microphone needs HTTPS (or localhost)",
|
|
1826
|
+
rec_denied: "Microphone permission was denied",
|
|
1827
|
+
rec_failed: "Could not open the microphone",
|
|
1828
|
+
transcribing: "Transcribing…",
|
|
1829
|
+
},
|
|
1830
|
+
|
|
1831
|
+
access: {
|
|
1832
|
+
install_title: "Install as an app",
|
|
1833
|
+
install_sub: "The panel installs to a phone as an app: its own icon, no address bar.",
|
|
1834
|
+
install_now: "Install app",
|
|
1835
|
+
install_done: "Already installed",
|
|
1836
|
+
install_ios: "On iPhone: Share → Add to Home Screen. Safari does not allow installing from here.",
|
|
1837
|
+
install_insecure: "This browser cannot install from a plain http:// address on a local network. It needs HTTPS — the simplest route is publishing the panel over Tailscale, below. Without HTTPS there is no microphone and no clipboard either.",
|
|
1838
|
+
install_unsupported: "This browser has not offered the install yet. In Chrome you can force it from the ⋮ menu → Install app.",
|
|
1839
|
+
addresses_title: "Addresses",
|
|
1840
|
+
addresses_sub: "Every way to reach this daemon. If one stops answering, the panel tries the others by itself.",
|
|
1841
|
+
secure: "Secure",
|
|
1842
|
+
here: "You are here",
|
|
1843
|
+
copy: "Copy",
|
|
1844
|
+
copied: "Copied",
|
|
1845
|
+
qr: "Show QR",
|
|
1846
|
+
qr_hint: "Scan with the phone's camera, then pair the device for its token.",
|
|
1847
|
+
local_only: "The daemon only listens on loopback: nothing on the network can reach it. To share it: apx panel share",
|
|
1848
|
+
kind_ts_https: "Tailnet HTTPS",
|
|
1849
|
+
kind_ts: "Tailnet",
|
|
1850
|
+
kind_lan: "Local network",
|
|
1851
|
+
kind_local: "This machine",
|
|
1852
|
+
tailscale_title: "Tailscale",
|
|
1853
|
+
tailscale_sub: "A stable name that works from anywhere, with a real certificate.",
|
|
1854
|
+
ts_absent: "Tailscale is not installed on this machine.",
|
|
1855
|
+
ts_stopped: "Tailscale is installed but not connected (state: {state}). Sign in from the Tailscale app.",
|
|
1856
|
+
ts_running: "Connected",
|
|
1857
|
+
serve_start: "Publish over HTTPS",
|
|
1858
|
+
serve_stop: "Stop publishing",
|
|
1859
|
+
serve_on: "Published on the tailnet",
|
|
1860
|
+
serve_off: "No longer published",
|
|
1861
|
+
serve_failed: "Could not publish",
|
|
1862
|
+
why_https: "Without HTTPS the browser switches off three things: installing the app, the microphone and the clipboard. That is not APX's decision.",
|
|
1863
|
+
},
|
|
1864
|
+
|
|
1865
|
+
mobile_link: {
|
|
1866
|
+
title: "Open on your phone",
|
|
1867
|
+
desc: "Scan the QR with the phone's camera to open the mobile chat.",
|
|
1868
|
+
scan_paired: "One scan does both: opens the chat and pairs the device.",
|
|
1869
|
+
scan_plain: "Opens the mobile chat. If the device is not paired, it will ask there.",
|
|
1870
|
+
paired: "Done — the phone is paired",
|
|
1871
|
+
insecure: "This address is http://, so on the phone you will not be able to install it as an app or record audio. For that: apx panel tailscale on",
|
|
1872
|
+
open_chat: "Open mobile chat",
|
|
1387
1873
|
},
|
|
1388
1874
|
|
|
1389
1875
|
sidebar_ui: {
|
|
@@ -1423,7 +1909,7 @@ export const en = {
|
|
|
1423
1909
|
openai_style_hint: "Base voice / instruct, used by custom endpoints (the persona kept across the audio). Ignored by stock OpenAI tts-1.",
|
|
1424
1910
|
style_label: "Style (how it should speak)",
|
|
1425
1911
|
style_hint: "Natural-language instruction. Empty = no style. E.g.: 'speak in a cheerful, unhurried tone'.",
|
|
1426
|
-
style_ph: "
|
|
1912
|
+
style_ph: "Speak in a cheerful, energetic tone",
|
|
1427
1913
|
temperature_label: "Temperature (optional)",
|
|
1428
1914
|
temperature_hint: "Sampling temperature for custom endpoints. Empty = server default.",
|
|
1429
1915
|
emotions_short: "Emotions",
|
|
@@ -1445,12 +1931,12 @@ export const en = {
|
|
|
1445
1931
|
mode_single_btn: "Default engine only",
|
|
1446
1932
|
move_up: "Move up",
|
|
1447
1933
|
move_down: "Move down",
|
|
1448
|
-
badge_local: "
|
|
1449
|
-
badge_available: "
|
|
1450
|
-
badge_unavailable: "
|
|
1451
|
-
badge_not_configured: "
|
|
1452
|
-
badge_default: "
|
|
1453
|
-
badge_custom: "
|
|
1934
|
+
badge_local: "Local",
|
|
1935
|
+
badge_available: "Available",
|
|
1936
|
+
badge_unavailable: "Configured, unavailable",
|
|
1937
|
+
badge_not_configured: "Not configured",
|
|
1938
|
+
badge_default: "Default",
|
|
1939
|
+
badge_custom: "Custom",
|
|
1454
1940
|
set_as_default: "Set as default",
|
|
1455
1941
|
configure: "Configure",
|
|
1456
1942
|
remove: "Remove",
|
|
@@ -1468,6 +1954,17 @@ export const en = {
|
|
|
1468
1954
|
custom_model_hint: "Optional. Most local servers ignore it (e.g. QVox).",
|
|
1469
1955
|
custom_voice_hint: "Optional. A preset your server understands (e.g. custom). Empty = server default.",
|
|
1470
1956
|
custom_optional_ph: "(optional)",
|
|
1957
|
+
language_label: "Language",
|
|
1958
|
+
language_hint: "The language the server is told to speak. Sent to custom endpoints only. Empty = whatever the server happens to default to, which is a guess rather than a choice.",
|
|
1959
|
+
language_server_default: "Server default",
|
|
1960
|
+
qvox_voice_hint: "A preset speaker on your server. Each one carries its OWN accent, so a preset wins over the accent described in the Style. Empty = the Style designs the voice instead.",
|
|
1961
|
+
voice_none: "None — design the voice from the Style",
|
|
1962
|
+
qvox_style_hint: "Sent to the server as `instruct`. Only some engines act on it: QVox/Qwen3-TTS designs the voice from it — timbre, age, accent, pace ('a warm Argentinian man, Rioplatense accent') — while Pocket TTS has no instruct at all and drops it, so there the Voice is the whole voice.",
|
|
1963
|
+
style_overridden_hint: "With a preset speaker chosen, an engine that understands instruct only colors the delivery — the speaker's own voice and accent win. Clear the Voice field to have the style design the voice instead. Engines with no instruct ignore this field either way.",
|
|
1964
|
+
clone_label: "Reference recording (cloning, optional)",
|
|
1965
|
+
clone_hint: "Path on the SERVER's filesystem to a 10–20s clean recording. Cloning is the only mode that reproduces an accent no preset speaker has. Overrides both the Voice and the Style.",
|
|
1966
|
+
ref_text_label: "What the recording says",
|
|
1967
|
+
ref_text_hint: "Optional, and worth filling in: telling the model what it is hearing makes cloning noticeably faster.",
|
|
1471
1968
|
stt_engine_label: "Transcription engine",
|
|
1472
1969
|
stt_engine_hint: "Local uses faster-whisper (requires python3 + faster-whisper). OpenAI uses the engines.openai key.",
|
|
1473
1970
|
stt_model_label: "Local model (whisper)",
|
|
@@ -1507,6 +2004,9 @@ export const en = {
|
|
|
1507
2004
|
test_synth_error: "Could not synthesize.",
|
|
1508
2005
|
test_engine_label: "Engine",
|
|
1509
2006
|
test_engine_hint: "Override the default for testing.",
|
|
2007
|
+
test_voice_label: "Voice",
|
|
2008
|
+
test_voice_hint: "Only for this test — it does not change what the engine has saved.",
|
|
2009
|
+
test_voice_default: "Engine default",
|
|
1510
2010
|
test_style_label: "Style (Gemini only)",
|
|
1511
2011
|
test_style_hint: "How it should speak. Empty = no style.",
|
|
1512
2012
|
test_text_label: "Text to say",
|
|
@@ -1527,6 +2027,15 @@ export const en = {
|
|
|
1527
2027
|
err_label_required: "A name is required.",
|
|
1528
2028
|
err_base_url_required:"A base URL is required.",
|
|
1529
2029
|
toast_transcription_updated: "Transcription updated.",
|
|
2030
|
+
qvox_title: "Local voice on this Mac",
|
|
2031
|
+
qvox_body: "QVox runs Qwen3-TTS on your Mac's GPU: the audio never leaves the machine, there is nothing to pay per minute, and nothing to be down.",
|
|
2032
|
+
qvox_note: "Needs uv and Node 18 or newer: npm installs only the command, and the engine runs through uv. The first model is a multi-gigabyte download.",
|
|
2033
|
+
qvox_ask: "Ask {persona} to install it",
|
|
2034
|
+
qvox_repo: "See the repository",
|
|
2035
|
+
qvox_running: "Running",
|
|
2036
|
+
qvox_stopped: "Stopped",
|
|
2037
|
+
qvox_stopped_hint: "QVox is set up but not answering on its port. Start it with `qvox serve`, or check that its LaunchAgent is loaded.",
|
|
2038
|
+
qvox_install_title: "Add QVox — a local Qwen3 voice on this Mac",
|
|
1530
2039
|
},
|
|
1531
2040
|
|
|
1532
2041
|
telegram_ui: {
|
|
@@ -1539,15 +2048,27 @@ export const en = {
|
|
|
1539
2048
|
message_sent: "Message sent.",
|
|
1540
2049
|
message_label: "Text",
|
|
1541
2050
|
send_chat_id: "chat_id: {id}",
|
|
1542
|
-
default_apx: "
|
|
1543
|
-
yes: "
|
|
1544
|
-
no: "
|
|
2051
|
+
default_apx: "Default APX",
|
|
2052
|
+
yes: "Yes",
|
|
2053
|
+
no: "No",
|
|
1545
2054
|
user_id_fallback: "user_id {id}",
|
|
1546
2055
|
role_assigned: "{name} → {role}",
|
|
1547
2056
|
},
|
|
1548
2057
|
|
|
1549
2058
|
agents_form: {
|
|
1550
2059
|
emoji: "Emoji",
|
|
2060
|
+
icon: "Avatar",
|
|
2061
|
+
name: "Name",
|
|
2062
|
+
name_hint: "Shown across the UI. Leave empty to fall back to the slug.",
|
|
2063
|
+
name_ph: "Cody",
|
|
2064
|
+
slug_hint: "Permanent id: filename, links and delegation.",
|
|
2065
|
+
skills_title: "Skills",
|
|
2066
|
+
skills_desc: "Project skills this agent loads into its prompt.",
|
|
2067
|
+
skills_use_defaults: "Use the project defaults",
|
|
2068
|
+
skills_use_defaults_hint: "The agent inherits whatever skills the project enables. Turn off to pick per agent.",
|
|
2069
|
+
skills_empty: "This project has no skills yet.",
|
|
2070
|
+
skills_locked: "Disabled for the project or globally — enable it in Skills to use it here.",
|
|
2071
|
+
create_defaults_note: "Skills and tools start from the project defaults; tune them in the agent's Config tab.",
|
|
1551
2072
|
area: "Area",
|
|
1552
2073
|
role: "Role",
|
|
1553
2074
|
no_role: "— no role —",
|
|
@@ -1577,8 +2098,8 @@ export const en = {
|
|
|
1577
2098
|
description: "Description",
|
|
1578
2099
|
no_area: "— no area —",
|
|
1579
2100
|
roles: "Roles",
|
|
1580
|
-
add_role: "
|
|
1581
|
-
no_roles: "
|
|
2101
|
+
add_role: "Role",
|
|
2102
|
+
no_roles: "No roles",
|
|
1582
2103
|
general_roles: "General roles",
|
|
1583
2104
|
delete_area: "Delete area",
|
|
1584
2105
|
delete_role: "Delete role",
|
|
@@ -1610,18 +2131,38 @@ export const en = {
|
|
|
1610
2131
|
},
|
|
1611
2132
|
|
|
1612
2133
|
tasks: {
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
2134
|
+
category_general: "Task",
|
|
2135
|
+
category_trip: "Errand on the way",
|
|
2136
|
+
location_label: "Place",
|
|
2137
|
+
location_place: "Place name",
|
|
2138
|
+
location_address: "Address",
|
|
2139
|
+
location_at: "Coordinates",
|
|
2140
|
+
location_at_invalid: "Format: latitude, longitude (e.g. -41.1335, -71.3103)",
|
|
2141
|
+
location_place_ph: "Farmacia del Puente",
|
|
2142
|
+
location_address_ph: "Av. San Martín 1234, Bariloche",
|
|
2143
|
+
location_radius: "Radius (m)",
|
|
2144
|
+
location_radius_ph: "Default",
|
|
2145
|
+
location_hint: "Where you have to stop. The name alone is enough for the reminder; the coordinates are what trigger the geofence while you drive.",
|
|
2146
|
+
field_category: "Type",
|
|
2147
|
+
state_open: "Open",
|
|
2148
|
+
state_done: "Done",
|
|
2149
|
+
state_dropped: "Dropped",
|
|
2150
|
+
status_pending: "Pending",
|
|
2151
|
+
status_running: "Running",
|
|
2152
|
+
status_in_review: "In review",
|
|
2153
|
+
status_blocked: "Blocked",
|
|
2154
|
+
done_label: "Done",
|
|
2155
|
+
dropped_label: "Dropped",
|
|
1622
2156
|
detail_title: "Task detail",
|
|
2157
|
+
detail_empty: "Pick a task from the list.",
|
|
2158
|
+
list_title: "Tasks",
|
|
2159
|
+
agent_none_short: "No agent",
|
|
1623
2160
|
field_title: "Title",
|
|
1624
|
-
|
|
2161
|
+
field_description: "Description",
|
|
2162
|
+
description_hint: "What you have to do. This is what the list shows.",
|
|
2163
|
+
description_ph: "Call the accountant before Friday…",
|
|
2164
|
+
description_empty: "No description. Write what needs doing here.",
|
|
2165
|
+
field_prompt: "Agent prompt",
|
|
1625
2166
|
field_status: "Status",
|
|
1626
2167
|
field_agent: "Agent",
|
|
1627
2168
|
field_creator: "Created by",
|
|
@@ -1629,20 +2170,77 @@ export const en = {
|
|
|
1629
2170
|
field_created: "Created",
|
|
1630
2171
|
field_updated: "Updated",
|
|
1631
2172
|
field_done: "Completed",
|
|
1632
|
-
prompt_ph: "
|
|
1633
|
-
toggle_prompt: "Prompt",
|
|
2173
|
+
prompt_ph: "Only if an agent will run it…",
|
|
1634
2174
|
view_thread: "View thread",
|
|
1635
2175
|
mark_done: "Complete",
|
|
2176
|
+
edit_title: "Edit task",
|
|
2177
|
+
row_actions: "Task actions",
|
|
2178
|
+
mark_dropped: "Discard",
|
|
2179
|
+
mark_reopen: "Reopen",
|
|
2180
|
+
agent_none: "— unassigned —",
|
|
2181
|
+
agent_hint: "Who has it. It does not pick it up on its own: it works on it if you mention it in a comment, or if the task lands in a column with automation.",
|
|
2182
|
+
prompt_hint: "Only for tasks an agent runs. If it is your own to-do, leave it empty.",
|
|
2183
|
+
undo: "Undo",
|
|
2184
|
+
comments_title: "Comments",
|
|
2185
|
+
comment_owner: "You",
|
|
2186
|
+
comment_ph: "Write a comment… @agent to hand it over",
|
|
2187
|
+
comment_hint: "Mention an agent with @ and it takes the task: it works on it with its own tools and replies here.",
|
|
2188
|
+
comment_summoned: "Summoned: {who}. The reply lands in the thread when it finishes.",
|
|
2189
|
+
subtasks_title: "Subtasks",
|
|
2190
|
+
subtask_ph: "Add a subtask…",
|
|
2191
|
+
part_of: "Part of another task — open it",
|
|
2192
|
+
field_tags: "Tags",
|
|
2193
|
+
tags_hint: "Enter or comma to add. Backspace removes the last one.",
|
|
2194
|
+
tags_ph: "Urgent, client…",
|
|
2195
|
+
tag_remove: "Remove the tag {tag}",
|
|
2196
|
+
view_label: "View",
|
|
2197
|
+
view_list: "List",
|
|
2198
|
+
view_board: "Board",
|
|
2199
|
+
board_empty_col: "Nothing here",
|
|
2200
|
+
columns_title: "Columns",
|
|
2201
|
+
columns_hint: "The names are the same in every project. Each project picks which ones it shows.",
|
|
2202
|
+
columns_catalog: "Available columns",
|
|
2203
|
+
columns_pick_hint: "Tick the ones you want to see in this project.",
|
|
2204
|
+
columns_show: "Show {name} in this project",
|
|
2205
|
+
columns_remove: "Delete the column {name}",
|
|
2206
|
+
columns_add: "Add a column",
|
|
2207
|
+
columns_add_ph: "QA, Design, Waiting on client…",
|
|
2208
|
+
columns_need_one: "At least one column has to remain.",
|
|
2209
|
+
columns_done_note: "“Done” is always the last column and cannot be removed.",
|
|
2210
|
+
columns_automation: "Automation for {name}",
|
|
2211
|
+
columns_automation_hint: "When a task lands in this column, this agent picks it up: it works on it with its own tools and leaves the result in the comments.",
|
|
2212
|
+
columns_hook_agent_ph: "Agent slug (qa, dev…) — empty = no automation",
|
|
2213
|
+
columns_hook_instruction_ph: "What it should do. Empty = “do whatever applies”.",
|
|
2214
|
+
tick_done: "Mark “{title}” as done",
|
|
2215
|
+
tick_reopen: "Reopen “{title}”",
|
|
2216
|
+
confirm_drop_title: "Discard task?",
|
|
2217
|
+
confirm_drop_desc: "Discards “{title}”. It stays in history and you can reopen it.",
|
|
2218
|
+
select_row: "Select “{title}”",
|
|
2219
|
+
bulk_selected: "{count} selected",
|
|
2220
|
+
bulk_done: "Complete",
|
|
2221
|
+
bulk_drop: "Discard",
|
|
2222
|
+
bulk_clear: "Clear selection",
|
|
2223
|
+
confirm_bulk_done_title: "Complete {count} tasks?",
|
|
2224
|
+
confirm_bulk_done_desc: "Marks {count} tasks as done. You can reopen them later.",
|
|
2225
|
+
confirm_bulk_drop_title: "Discard {count} tasks?",
|
|
2226
|
+
confirm_bulk_drop_desc: "Discards {count} tasks. They stay in history and you can reopen them.",
|
|
2227
|
+
bulk_done_toast: "{count} tasks completed.",
|
|
2228
|
+
bulk_drop_toast: "{count} tasks discarded.",
|
|
1636
2229
|
},
|
|
1637
2230
|
|
|
1638
2231
|
agents_ui: {
|
|
1639
|
-
model_router_default: "
|
|
2232
|
+
model_router_default: "Model: router default",
|
|
2233
|
+
model_change_tip: "Change the agent's model",
|
|
2234
|
+
model_change_title: "Agent model",
|
|
2235
|
+
model_inherit_option: "Inherit (router default)",
|
|
2236
|
+
model_provider_default: "Default",
|
|
2237
|
+
model_no_providers: "No active providers. Configure one in Settings → Models.",
|
|
1640
2238
|
slug_kebab_hint: "kebab-case, e.g. reviewer, my-agent, content-writer",
|
|
1641
2239
|
comma_separated: "comma-separated",
|
|
1642
2240
|
body_hint: "markdown — extends the agent's system prompt",
|
|
1643
|
-
source_user: "
|
|
1644
|
-
source_override: "
|
|
1645
|
-
source_bundled: "
|
|
2241
|
+
source_user: "User",
|
|
2242
|
+
source_override: "Override",
|
|
2243
|
+
source_bundled: "Bundled",
|
|
1646
2244
|
tab_explorer: "Explorer",
|
|
1647
2245
|
type_none: "— no type —",
|
|
1648
2246
|
type_orchestrator: "Orchestrator",
|
|
@@ -1669,24 +2267,26 @@ export const en = {
|
|
|
1669
2267
|
brain_expand: "Expand brains",
|
|
1670
2268
|
brain_collapse: "Collapse",
|
|
1671
2269
|
brain_open: "Open",
|
|
2270
|
+
brain_view: "View",
|
|
2271
|
+
brain_edit: "Edit",
|
|
1672
2272
|
brain_part_of: "Part of",
|
|
1673
2273
|
brain_branches: "Branches",
|
|
1674
|
-
config_def_desc: "
|
|
2274
|
+
config_def_desc: "identity frontmatter. The system prompt lives in the Prompt tab.",
|
|
1675
2275
|
memory_durable_desc: "durable facts the agent remembers.",
|
|
1676
|
-
running: "
|
|
1677
|
-
paused: "
|
|
1678
|
-
last_error: "
|
|
2276
|
+
running: "Running",
|
|
2277
|
+
paused: "Paused",
|
|
2278
|
+
last_error: "Last: error",
|
|
1679
2279
|
field_tick: "Tick",
|
|
1680
2280
|
field_next_tick: "Next tick",
|
|
1681
2281
|
field_last_tick: "Last tick",
|
|
1682
2282
|
field_last_run: "Last run",
|
|
1683
2283
|
tools_label: "Tools",
|
|
1684
|
-
kind_agent: "
|
|
1685
|
-
kind_memory: "
|
|
1686
|
-
kind_thread: "
|
|
1687
|
-
kind_task: "
|
|
1688
|
-
kind_routine: "
|
|
1689
|
-
kind_hierarchy: "
|
|
2284
|
+
kind_agent: "Agent",
|
|
2285
|
+
kind_memory: "Memory",
|
|
2286
|
+
kind_thread: "Thread",
|
|
2287
|
+
kind_task: "Task",
|
|
2288
|
+
kind_routine: "Routine",
|
|
2289
|
+
kind_hierarchy: "Hierarchy",
|
|
1690
2290
|
nodes_drag_hint: "{n} nodes · drag to rearrange",
|
|
1691
2291
|
kind_watch: "Watcher",
|
|
1692
2292
|
kind_watch_desc: "Sweeps for things worth noticing — overdue work, promises coming due, projects gone quiet. Costs nothing when there is nothing to report.",
|
|
@@ -1707,11 +2307,11 @@ export const en = {
|
|
|
1707
2307
|
unit_days: "days",
|
|
1708
2308
|
every_n_unit: "every {n} {unit}",
|
|
1709
2309
|
every_v: "every {v}",
|
|
1710
|
-
preset_every_10m: "
|
|
1711
|
-
preset_hourly: "
|
|
1712
|
-
preset_daily_9am: "
|
|
2310
|
+
preset_every_10m: "Every 10 min",
|
|
2311
|
+
preset_hourly: "Hourly",
|
|
2312
|
+
preset_daily_9am: "Daily 9am",
|
|
1713
2313
|
sched_manual: "only when you run it",
|
|
1714
|
-
preset_weekdays_9am: "
|
|
2314
|
+
preset_weekdays_9am: "Weekdays 9am",
|
|
1715
2315
|
preset_manual: "Manual",
|
|
1716
2316
|
var_pre_output_prompt: "Text output of the pre-commands. Replaced inside the prompt/text before it is sent. Use it to inject fresh data (weather, an API) into the instruction.",
|
|
1717
2317
|
var_llm_output: "Final answer from the agent or super-agent. Available in the post-commands as an env var — e.g. forward it via Telegram.",
|
|
@@ -1735,17 +2335,22 @@ export const en = {
|
|
|
1735
2335
|
action_runs_shell: "Runs the shell command",
|
|
1736
2336
|
step_pre: "Pre",
|
|
1737
2337
|
step_post: "Post",
|
|
1738
|
-
last_label: "
|
|
2338
|
+
last_label: "Last:",
|
|
1739
2339
|
tg_chat_id_ph: "(uses the channel's)",
|
|
1740
2340
|
tg_text_ph: "message to send",
|
|
1741
2341
|
hb_message_ph: "still alive",
|
|
1742
2342
|
arg_placeholder: "--flag or value",
|
|
1743
|
-
remove_arg: "
|
|
2343
|
+
remove_arg: "Remove arg",
|
|
1744
2344
|
super_agent_label: "{persona} (super-agent)",
|
|
1745
2345
|
super_agent_badge: "super-agent",
|
|
1746
2346
|
},
|
|
1747
2347
|
|
|
1748
2348
|
modules_ui: {
|
|
2349
|
+
desktop_model: "Window model",
|
|
2350
|
+
desktop_model_desc: "Which model answers in the floating window. It is the one surface where someone waits for the reply out loud, so it is allowed a faster one than the rest.",
|
|
2351
|
+
desktop_model_hint: "Defaults to the super-agent's. Choosing another here does not change Telegram, the routines, or anything else.",
|
|
2352
|
+
desktop_model_set: "Window model: {value}.",
|
|
2353
|
+
desktop_model_inherit: "the super-agent's",
|
|
1749
2354
|
desktop_pos_left: "Left",
|
|
1750
2355
|
desktop_pos_center: "Center",
|
|
1751
2356
|
desktop_pos_right: "Right",
|
|
@@ -1755,7 +2360,7 @@ export const en = {
|
|
|
1755
2360
|
desktop_status_desc: "The window launches from the terminal or via autostart.",
|
|
1756
2361
|
desktop_running: "Running",
|
|
1757
2362
|
desktop_stopped: "Stopped",
|
|
1758
|
-
desktop_refresh: "
|
|
2363
|
+
desktop_refresh: "Refresh",
|
|
1759
2364
|
desktop_start: "Start",
|
|
1760
2365
|
desktop_stop: "Stop",
|
|
1761
2366
|
desktop_restart: "Restart",
|
|
@@ -1768,13 +2373,13 @@ export const en = {
|
|
|
1768
2373
|
desktop_stop_none: "No desktop window was running.",
|
|
1769
2374
|
desktop_from_terminal: "From terminal:",
|
|
1770
2375
|
desktop_autostart_desc: "Launches the window at user login. Equivalent to `apx desktop install` (no sudo required).",
|
|
1771
|
-
desktop_platform: "
|
|
2376
|
+
desktop_platform: "Platform: {platform}",
|
|
1772
2377
|
desktop_shortcut_desc: "Global hotkey that shows/hides the window and starts listening.",
|
|
1773
2378
|
desktop_accelerator: "Accelerator",
|
|
1774
2379
|
desktop_accelerator_hint:"Click the field and press your key combo. Restart the window to apply.",
|
|
1775
2380
|
desktop_shortcut_record: "Click to set a shortcut",
|
|
1776
2381
|
desktop_shortcut_recording: "Press your combo…",
|
|
1777
|
-
desktop_shortcut_change: "
|
|
2382
|
+
desktop_shortcut_change: "Click to change",
|
|
1778
2383
|
desktop_shortcut_esc: "Esc to cancel",
|
|
1779
2384
|
desktop_shortcut_saved: "Shortcut saved. Restart the window (apx desktop stop && start) to apply it.",
|
|
1780
2385
|
desktop_autostart_on: "Autostart enabled for the next login.",
|
|
@@ -1810,19 +2415,19 @@ export const en = {
|
|
|
1810
2415
|
deck_no_widgets: "No widgets in the manifest.",
|
|
1811
2416
|
deck_context_desc: "Information the Deck sees from the daemon.",
|
|
1812
2417
|
deck_active_project: "Active project:",
|
|
1813
|
-
deck_none: "
|
|
2418
|
+
deck_none: "None",
|
|
1814
2419
|
deck_registered_projects:"Registered projects:",
|
|
1815
2420
|
deck_active_plugins: "Active plugins:",
|
|
1816
|
-
deck_daemon_active: "
|
|
1817
|
-
deck_daemon_started: "
|
|
1818
|
-
deck_safety_no_shell: "
|
|
1819
|
-
deck_safety_no_arbitrary:"
|
|
1820
|
-
deck_safety_confirm: "
|
|
2421
|
+
deck_daemon_active: "Active · {uptime}",
|
|
2422
|
+
deck_daemon_started: "Started",
|
|
2423
|
+
deck_safety_no_shell: "No direct shell",
|
|
2424
|
+
deck_safety_no_arbitrary:"Arbitrary commands blocked",
|
|
2425
|
+
deck_safety_confirm: "Dangerous actions require confirmation",
|
|
1821
2426
|
code_copied: "Copied.",
|
|
1822
2427
|
code_saved: "Saved.",
|
|
1823
2428
|
code_file_empty: "(empty)",
|
|
1824
2429
|
code_file_error: "Error: {msg}",
|
|
1825
|
-
code_stream_error: "
|
|
2430
|
+
code_stream_error: "Error",
|
|
1826
2431
|
code_super_agent: "super-agent",
|
|
1827
2432
|
code_super_agent_desc: "Main agent with all tools",
|
|
1828
2433
|
code_chat_tab: "Chat",
|
|
@@ -1830,14 +2435,15 @@ export const en = {
|
|
|
1830
2435
|
code_panel_tree: "File tree",
|
|
1831
2436
|
code_panel_terminal: "Terminal",
|
|
1832
2437
|
code_panel_context: "Context panel",
|
|
1833
|
-
code_ctx_auto: "
|
|
2438
|
+
code_ctx_auto: "Auto",
|
|
1834
2439
|
code_ctx_mode: "Mode",
|
|
1835
2440
|
code_ctx_agent: "Agent",
|
|
2441
|
+
code_ctx_project: "Project",
|
|
1836
2442
|
code_ctx_msgs_value: "{user} user · {assistant} assistant",
|
|
1837
2443
|
code_ctx_tokens_total: "Total Tokens",
|
|
1838
2444
|
code_ctx_created: "Created",
|
|
1839
2445
|
code_ctx_activity: "Activity",
|
|
1840
|
-
code_project_fallback: "
|
|
2446
|
+
code_project_fallback: "Project {id}",
|
|
1841
2447
|
code_pick_project_ph: "Pick a project…",
|
|
1842
2448
|
code_artifact_exit_ok: "exit 0 — {ms}ms",
|
|
1843
2449
|
code_artifact_exit_fail: "exit {code}{timeout}",
|
|
@@ -1845,8 +2451,8 @@ export const en = {
|
|
|
1845
2451
|
code_artifact_view_short:"View",
|
|
1846
2452
|
code_artifact_edit_short:"Edit",
|
|
1847
2453
|
code_artifact_exit_badge:"exit {code}",
|
|
1848
|
-
code_artifact_timeout: "
|
|
1849
|
-
code_artifact_truncated: "
|
|
2454
|
+
code_artifact_timeout: "Timeout",
|
|
2455
|
+
code_artifact_truncated: "Truncated",
|
|
1850
2456
|
},
|
|
1851
2457
|
|
|
1852
2458
|
settings_ui: {
|
|
@@ -1866,18 +2472,25 @@ export const en = {
|
|
|
1866
2472
|
base_menu_view: "Base menu view (general workspace).",
|
|
1867
2473
|
coming_soon: "Coming soon",
|
|
1868
2474
|
inspector_title: "Skill Inspector (per-turn RAG)",
|
|
1869
|
-
inspector_desc: "
|
|
2475
|
+
inspector_desc: "A local RAG picks the skill(s) each message needs — full body on a strong match, a suggestion on a medium one, nothing otherwise. Re-evaluated every turn.",
|
|
2476
|
+
advanced_title: "Advanced",
|
|
2477
|
+
show: "Show",
|
|
2478
|
+
hide: "Hide",
|
|
1870
2479
|
enable_inspector: "Enable inspector",
|
|
1871
2480
|
enable_inspector_hint: "Off = classic behavior (slug list + passive suggestion). On = the RAG decides per turn.",
|
|
1872
2481
|
on: "On",
|
|
1873
2482
|
off: "Off",
|
|
1874
2483
|
index_count: "Index: {n} skills",
|
|
1875
|
-
not_indexed: "
|
|
1876
|
-
dim: "
|
|
1877
|
-
updated_at: "
|
|
2484
|
+
not_indexed: "Not indexed",
|
|
2485
|
+
dim: "Dim {dim}",
|
|
2486
|
+
updated_at: "Updated {date}",
|
|
1878
2487
|
reindex: "Reindex",
|
|
1879
2488
|
reindex_forced: "Reindex (forced)",
|
|
1880
2489
|
embedder_source: "The embedder comes from Memory (RAG). Local with Ollama, or offline if no provider is set.",
|
|
2490
|
+
embedder_shared_title: "Embedder",
|
|
2491
|
+
embedder_shared_desc: "The skill inspector uses the same embedder as Memory (RAG) — one engine for the whole daemon. Change or reorder it there.",
|
|
2492
|
+
embedder_configure: "Configure in Memory (RAG)",
|
|
2493
|
+
embedder_stale: "The index was built with '{index}' but '{active}' is active now — reindex to score with the current engine.",
|
|
1881
2494
|
thresholds_title: "Thresholds and limits",
|
|
1882
2495
|
thresholds_desc: "Tune how aggressive the inspector is. Raising the thresholds = fewer false positives but more risk of missing a skill; lowering them = the opposite.",
|
|
1883
2496
|
test_title: "Test (dry-run)",
|
|
@@ -1944,13 +2557,19 @@ export const en = {
|
|
|
1944
2557
|
source_builtin: "APX",
|
|
1945
2558
|
source_global: "Global",
|
|
1946
2559
|
source_project: "Project",
|
|
2560
|
+
origin_claude: "Claude",
|
|
2561
|
+
origin_cursor: "Cursor",
|
|
2562
|
+
origin_codex: "Codex",
|
|
2563
|
+
origin_agents: "Agents",
|
|
2564
|
+
path_label: "Path",
|
|
2565
|
+
path_apx_link: "APX link",
|
|
1947
2566
|
private_badge: "Private",
|
|
1948
2567
|
private_hint: "Built-in APX skill — always active, can't be disabled or deleted.",
|
|
1949
2568
|
overridden_badge: "Override",
|
|
1950
2569
|
inherited_hint: "Inherited from global",
|
|
1951
2570
|
reset_to_global: "Reset to global",
|
|
1952
|
-
on: "
|
|
1953
|
-
off: "
|
|
2571
|
+
on: "On",
|
|
2572
|
+
off: "Off",
|
|
1954
2573
|
toggle_failed: "Could not change state: {msg}",
|
|
1955
2574
|
add_title: "Add a skill",
|
|
1956
2575
|
add_desc: "Creates a user skill at ~/.apx/skills/<slug>/SKILL.md. Available across all scopes.",
|
|
@@ -2000,6 +2619,12 @@ export const en = {
|
|
|
2000
2619
|
|
|
2001
2620
|
shared_ui: {
|
|
2002
2621
|
skill_inspector_title: "Skill Inspector ({embedder}) chose these skills for this turn",
|
|
2622
|
+
skill_trace_loaded: "Loaded: its body went into this turn's prompt",
|
|
2623
|
+
skill_trace_hinted: "Hinted: only the name and description went in",
|
|
2624
|
+
skill_trace_considered: "Considered: matched this turn but below the bar to inject",
|
|
2625
|
+
skill_trace_sim: "Similarity {sim}",
|
|
2626
|
+
skill_trace_no_desc: "No description.",
|
|
2627
|
+
skill_trace_open: "Open skill",
|
|
2003
2628
|
tools_count: "{n} tools",
|
|
2004
2629
|
tools_failed: "{n} failed",
|
|
2005
2630
|
tool_read_file: "Read file",
|
|
@@ -2015,21 +2640,21 @@ export const en = {
|
|
|
2015
2640
|
tool_call_mcp: "Call MCP",
|
|
2016
2641
|
tool_call_runtime: "Call runtime",
|
|
2017
2642
|
tool_create_task: "Create task",
|
|
2018
|
-
dedup: "
|
|
2019
|
-
args: "
|
|
2020
|
-
result: "
|
|
2643
|
+
dedup: "Dedup",
|
|
2644
|
+
args: "Args",
|
|
2645
|
+
result: "Result",
|
|
2021
2646
|
auto: "Auto",
|
|
2022
2647
|
auto_router: "Auto (router decides)",
|
|
2023
|
-
model_filter_ph: "
|
|
2024
|
-
loading_models: "
|
|
2025
|
-
use_value: "
|
|
2026
|
-
model_combobox_ph: "
|
|
2027
|
-
search_variable_ph: "
|
|
2028
|
-
no_matches: "
|
|
2648
|
+
model_filter_ph: "Filter or type a model…",
|
|
2649
|
+
loading_models: "Loading models…",
|
|
2650
|
+
use_value: "Use “{value}”",
|
|
2651
|
+
model_combobox_ph: "Pick or type a model…",
|
|
2652
|
+
search_variable_ph: "Search variable…",
|
|
2653
|
+
no_matches: "No matches",
|
|
2029
2654
|
create_variable: "Create new variable…",
|
|
2030
2655
|
kv_key_ph: "KEY",
|
|
2031
2656
|
kv_value_ph: "value",
|
|
2032
|
-
remove_row: "
|
|
2657
|
+
remove_row: "Remove row",
|
|
2033
2658
|
add_row: "Add row",
|
|
2034
2659
|
err_chat_failed: "Chat failed.",
|
|
2035
2660
|
err_stream_failed: "Stream failed.",
|
|
@@ -2048,8 +2673,8 @@ export const en = {
|
|
|
2048
2673
|
more_soon: "More plugins coming soon…",
|
|
2049
2674
|
tools_hint: "Tools that connected plugins expose to this project's agents.",
|
|
2050
2675
|
tools_empty: "No integration tools yet. Connect a plugin to enable them.",
|
|
2051
|
-
tool_active: "
|
|
2052
|
-
tool_inactive: "
|
|
2676
|
+
tool_active: "Active",
|
|
2677
|
+
tool_inactive: "Inactive",
|
|
2053
2678
|
status_active: "Active",
|
|
2054
2679
|
status_error: "Error",
|
|
2055
2680
|
status_unconfigured: "Not configured",
|
|
@@ -2060,7 +2685,12 @@ export const en = {
|
|
|
2060
2685
|
validating: "Validating...",
|
|
2061
2686
|
verifying: "Verifying token...",
|
|
2062
2687
|
confirm: "Confirm",
|
|
2688
|
+
change: "Change",
|
|
2063
2689
|
select_placeholder: "Select...",
|
|
2690
|
+
select_none: "None selected",
|
|
2691
|
+
select_pick: "Choose",
|
|
2692
|
+
select_missing: "Nothing selected yet. Confirm one below.",
|
|
2693
|
+
select_empty: "This account has no options available.",
|
|
2064
2694
|
reveal: "Show",
|
|
2065
2695
|
hide: "Hide",
|
|
2066
2696
|
credentials: "{name} credentials",
|
|
@@ -2071,6 +2701,11 @@ export const en = {
|
|
|
2071
2701
|
err_connect: "Failed to connect",
|
|
2072
2702
|
err_generic: "Something went wrong",
|
|
2073
2703
|
action_done: "Done",
|
|
2704
|
+
copy: "Copy",
|
|
2705
|
+
connect_oauth: "Connect with Google",
|
|
2706
|
+
oauth_waiting: "Waiting for consent…",
|
|
2707
|
+
oauth_redirect_hint: "Register this URI in your Google OAuth client (Credentials → your client → \"Authorized redirect URIs\"):",
|
|
2708
|
+
oauth_reauth: "Access changed: reconnect with Google to apply it.",
|
|
2074
2709
|
asana: {
|
|
2075
2710
|
select_label: "Select the workspace to use",
|
|
2076
2711
|
connected: { user_name: "Connected as", user_email: "Email", workspace_name: "Workspace" },
|
|
@@ -2082,6 +2717,28 @@ export const en = {
|
|
|
2082
2717
|
},
|
|
2083
2718
|
},
|
|
2084
2719
|
},
|
|
2720
|
+
calendar: {
|
|
2721
|
+
connected: { account_email: "Account", calendar_name: "Calendar" },
|
|
2722
|
+
fields: {
|
|
2723
|
+
client_id: {
|
|
2724
|
+
label: "OAuth Client ID",
|
|
2725
|
+
help_label: "How do I get the OAuth client?",
|
|
2726
|
+
help_steps: "Open console.cloud.google.com and pick (or create) a project.\nEnable the Google Calendar API in that project.\nGo to APIs & Services → OAuth consent screen → External, and add your email as a test user.\nCredentials → Create credentials → OAuth client ID → type \"Desktop app\".\nCopy the Client ID and Client secret and paste them below.\nUnder \"Authorized redirect URIs\", paste the URI shown above.",
|
|
2727
|
+
},
|
|
2728
|
+
client_secret: {
|
|
2729
|
+
label: "Client secret",
|
|
2730
|
+
hint: "The secret from the same OAuth client. Stored under ~/.apx, never in the repo.",
|
|
2731
|
+
},
|
|
2732
|
+
write_access: {
|
|
2733
|
+
label: "Allow writing",
|
|
2734
|
+
hint: "Off, APX only reads your agenda. On, it can create and move events, invite people and add Meet — and it still asks before each one.",
|
|
2735
|
+
},
|
|
2736
|
+
meet: {
|
|
2737
|
+
label: "Create Meet links",
|
|
2738
|
+
hint: "When scheduling with guests, add a Google Meet link to the event.",
|
|
2739
|
+
},
|
|
2740
|
+
},
|
|
2741
|
+
},
|
|
2085
2742
|
github: {
|
|
2086
2743
|
connected: { user_login: "Connected as", user_name: "Name" },
|
|
2087
2744
|
fields: {
|