@agentprojectcontext/apx 1.81.0 → 1.89.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +9 -8
- package/skills/apc-context/SKILL.md +14 -7
- package/skills/apx/SKILL.md +62 -2
- package/skills/apx-mcp/SKILL.md +42 -15
- package/src/core/agent/a2a/peers.js +161 -0
- package/src/core/agent/a2a/reply.js +379 -27
- package/src/core/agent/abort.js +25 -0
- package/src/core/agent/agent-model.js +58 -0
- package/src/core/agent/agent-tools.js +101 -0
- package/src/core/agent/author-line.js +110 -0
- package/src/core/agent/build-agent-system.js +52 -18
- package/src/core/agent/channels/voice-context.js +17 -2
- package/src/core/agent/closing-floor.js +117 -0
- package/src/core/agent/constants.js +119 -11
- package/src/core/agent/engine-call.js +56 -0
- package/src/core/agent/group/run-group-turn.js +218 -0
- package/src/core/agent/group/turn-resolver.js +165 -0
- package/src/core/agent/judge.js +138 -11
- package/src/core/agent/loop/side-effects.js +106 -3
- package/src/core/agent/memory.js +31 -18
- package/src/core/agent/model-capabilities.js +47 -0
- package/src/core/agent/model-router.js +11 -40
- package/src/core/agent/prompt-builder.js +47 -0
- package/src/core/agent/prompts/channels/a2a.md +12 -0
- package/src/core/agent/prompts/channels/code.md +3 -1
- package/src/core/agent/prompts/channels/telegram.md +2 -0
- package/src/core/agent/prompts/channels/web_code.md +1 -1
- package/src/core/agent/prompts/channels/whatsapp.md +37 -0
- package/src/core/agent/prompts/core/agent-base.md +2 -0
- package/src/core/agent/prompts/discipline/action.md +1 -0
- package/src/core/agent/prompts/discipline/two-segment.md +2 -1
- package/src/core/agent/prompts/modes/mobility.md +36 -0
- package/src/core/agent/retry.js +42 -0
- package/src/core/agent/run-agent.js +322 -25
- package/src/core/agent/run-turn.js +253 -0
- package/src/core/agent/self-memory.js +18 -52
- package/src/core/agent/skills/agent-skills.js +118 -0
- package/src/core/agent/skills/catalog.js +1 -1
- package/src/core/agent/skills/declared.js +13 -0
- package/src/core/agent/skills/index-store.js +8 -1
- package/src/core/agent/skills/inspector.js +20 -3
- package/src/core/agent/skills/loader.js +18 -3
- package/src/core/agent/skills/media.js +121 -0
- package/src/core/agent/skills/origin.js +61 -0
- package/src/core/agent/skills/sections.js +136 -0
- package/src/core/agent/super-agent.js +54 -14
- package/src/core/agent/tools/handlers/_calendar.js +50 -0
- package/src/core/agent/tools/handlers/add-mcp.js +103 -0
- package/src/core/agent/tools/handlers/asana-create-task.js +3 -1
- package/src/core/agent/tools/handlers/attach-media.js +56 -0
- package/src/core/agent/tools/handlers/calendar-create-event.js +38 -0
- package/src/core/agent/tools/handlers/calendar-find-slot.js +39 -0
- package/src/core/agent/tools/handlers/calendar-list-events.js +39 -0
- package/src/core/agent/tools/handlers/calendar-update-event.js +35 -0
- package/src/core/agent/tools/handlers/call-agent.js +14 -6
- package/src/core/agent/tools/handlers/call-runtime.js +27 -49
- package/src/core/agent/tools/handlers/comment-task.js +78 -0
- package/src/core/agent/tools/handlers/complete-task.js +60 -0
- package/src/core/agent/tools/handlers/configure-agent.js +70 -0
- package/src/core/agent/tools/handlers/create-agent.js +68 -0
- package/src/core/agent/tools/handlers/create-task.js +41 -3
- package/src/core/agent/tools/handlers/import-agent.js +5 -5
- package/src/core/agent/tools/handlers/list-mcp-tools.js +83 -0
- package/src/core/agent/tools/handlers/list-routines.js +46 -0
- package/src/core/agent/tools/handlers/list-tasks.js +8 -1
- package/src/core/agent/tools/handlers/mark-commitment.js +57 -0
- package/src/core/agent/tools/handlers/read-skill.js +64 -0
- package/src/core/agent/tools/handlers/remember-routine.js +2 -8
- package/src/core/agent/tools/handlers/remember.js +82 -6
- package/src/core/agent/tools/handlers/remove-agent.js +42 -0
- package/src/core/agent/tools/handlers/run-routine.js +94 -0
- package/src/core/agent/tools/handlers/run-shell.js +44 -2
- package/src/core/agent/tools/handlers/send-telegram.js +41 -19
- package/src/core/agent/tools/handlers/set-agent-prompt.js +44 -0
- package/src/core/agent/tools/handlers/view-media.js +69 -0
- package/src/core/agent/tools/handlers/write-agent-memory.js +52 -0
- package/src/core/agent/tools/helpers.js +36 -4
- package/src/core/agent/tools/names.js +64 -0
- package/src/core/agent/tools/registry-bridge.js +24 -1
- package/src/core/agent/tools/registry.js +79 -0
- package/src/core/agent/tools/tool-call-parser.js +136 -13
- package/src/core/agent/vision-bridge.js +69 -0
- package/src/core/apc/agent-identity.js +74 -0
- package/src/core/apc/agent-rename-refs.js +187 -0
- package/src/core/apc/agent-write.js +312 -0
- package/src/core/apc/agents-vault.js +1 -1
- package/src/core/apc/blob-keys.js +42 -0
- package/src/core/apc/frontmatter.js +166 -10
- package/src/core/apc/parser.js +33 -83
- package/src/core/apc/paths.js +4 -6
- package/src/core/apc/project-memory.js +44 -0
- package/src/core/apc/projects-helpers.js +33 -0
- package/src/core/apc/scaffold.js +36 -16
- package/src/core/channels/telegram/ask-callbacks.js +103 -0
- package/src/core/channels/telegram/dispatch.js +154 -30
- package/src/core/channels/telegram/helpers.js +59 -7
- package/src/core/channels/telegram/inbound/audio.js +26 -30
- package/src/core/channels/telegram/inbound/file.js +22 -32
- package/src/core/channels/telegram/inbound/photo.js +24 -28
- package/src/core/channels/telegram/progress-gate.js +76 -0
- package/src/core/channels/telegram/reply.js +151 -43
- package/src/core/channels/telegram/voice-note.js +150 -0
- package/src/core/config/index.js +53 -54
- package/src/core/config/paths.js +117 -31
- package/src/core/config/redact.js +89 -4
- package/src/core/config/secret-values.js +2 -4
- package/src/core/constants/actors.js +5 -0
- package/src/core/constants/channels.js +3 -1
- package/src/core/constants/task-categories.js +73 -0
- package/src/core/constants/task-fields.js +28 -0
- package/src/core/engines/_globs.js +33 -0
- package/src/core/engines/anthropic.js +19 -1
- package/src/core/engines/catalog.js +20 -0
- package/src/core/engines/gemini.js +84 -16
- package/src/core/engines/index.js +19 -3
- package/src/core/engines/mock.js +145 -1
- package/src/core/engines/openai-compatible.js +150 -15
- package/src/core/engines/presets.js +36 -9
- package/src/core/engines/zen.js +131 -0
- package/src/core/events/bus.js +140 -0
- package/src/core/events/mascot-notify.js +156 -0
- package/src/core/http-tools/browser.js +366 -36
- package/src/core/http-tools/catalog.js +206 -22
- package/src/core/http-tools/grep.js +62 -7
- package/src/core/http-tools/registry.js +3 -1
- package/src/core/i18n/en.js +34 -3
- package/src/core/i18n/es.js +36 -4
- package/src/core/i18n/index.js +5 -5
- package/src/core/i18n/pt.js +32 -3
- package/src/core/identity/self.js +14 -1
- package/src/core/images/engines/a1111.js +219 -0
- package/src/core/images/engines/index.js +187 -0
- package/src/core/images/engines/mock.js +74 -0
- package/src/core/images/engines/openai.js +130 -0
- package/src/core/images/engines/sdcpp.js +204 -0
- package/src/core/images/engines/shared.js +218 -0
- package/src/core/images/generate.js +260 -0
- package/src/core/integrations/catalog.js +8 -3
- package/src/core/integrations/plugins/_google-oauth.js +179 -0
- package/src/core/integrations/plugins/asana.js +7 -3
- package/src/core/integrations/plugins/calendar.js +404 -0
- package/src/core/integrations/store.js +2 -0
- package/src/core/memory/broker.js +16 -1
- package/src/core/memory/compactor.js +19 -3
- package/src/core/memory/consolidate.js +2 -2
- package/src/core/memory/dated-log.js +66 -0
- package/src/core/memory/embed-engines/custom.js +59 -0
- package/src/core/memory/embed-engines/gemini.js +9 -3
- package/src/core/memory/embed-engines/index.js +87 -15
- package/src/core/memory/embeddings.js +52 -24
- package/src/core/memory/index.js +13 -3
- package/src/core/memory/indexer.js +83 -27
- package/src/core/memory/prune.js +182 -0
- package/src/core/memory/store.js +22 -0
- package/src/core/memory/summarizer.js +72 -8
- package/src/core/mobility/answer.js +80 -0
- package/src/core/mobility/geofence.js +667 -0
- package/src/core/mobility/osm-route.js +282 -0
- package/src/core/mobility/preferences.js +91 -0
- package/src/core/mobility/state.js +245 -0
- package/src/core/mobility/trip-event.js +384 -0
- package/src/core/net/tailscale.js +168 -0
- package/src/core/profiles/bundled/secretary/PROFILE.md +32 -42
- package/src/core/profiles/bundled/secretary/config.schema.es.json +68 -0
- package/src/core/profiles/bundled/secretary/config.schema.json +30 -2
- package/src/core/profiles/bundled/secretary/profile.json +3 -1
- package/src/core/profiles/bundled/secretary/routines/a2a-sweep.json +20 -0
- package/src/core/profiles/bundled/secretary/routines/day-close.json +4 -1
- package/src/core/profiles/bundled/secretary/routines/day-open.json +7 -1
- package/src/core/profiles/bundled/secretary/routines/watch.json +13 -2
- package/src/core/profiles/lifecycle.js +243 -19
- package/src/core/profiles/paths.js +12 -0
- package/src/core/profiles/store.js +47 -0
- package/src/core/routines/active-runs.js +213 -0
- package/src/core/routines/delivery.js +612 -0
- package/src/core/routines/header.js +88 -0
- package/src/core/routines/index.js +26 -0
- package/src/core/routines/run-log.js +78 -0
- package/src/core/routines/runner.js +629 -66
- package/src/core/routines/signals.js +75 -0
- package/src/core/runtime-skills/apc-context/SKILL.md +14 -7
- package/src/core/runtime-skills/apx/SKILL.md +93 -1
- package/src/core/runtime-skills/apx-agency-agents/SKILL.md +2 -2
- package/src/core/runtime-skills/apx-agent/SKILL.md +134 -19
- package/src/core/runtime-skills/apx-commitment/SKILL.md +21 -11
- package/src/core/runtime-skills/apx-image/SKILL.md +60 -0
- package/src/core/runtime-skills/apx-integrations/SKILL.md +82 -0
- package/src/core/runtime-skills/apx-mcp/SKILL.md +45 -14
- package/src/core/runtime-skills/apx-mcp-builder/SKILL.md +4 -4
- package/src/core/runtime-skills/apx-profile/SKILL.md +27 -2
- package/src/core/runtime-skills/apx-project/SKILL.md +23 -2
- package/src/core/runtime-skills/apx-routine/SKILL.md +40 -17
- package/src/core/runtime-skills/apx-runtime/SKILL.md +124 -14
- package/src/core/runtime-skills/apx-sessions/SKILL.md +7 -6
- package/src/core/runtime-skills/apx-skill-builder/SKILL.md +15 -13
- package/src/core/runtime-skills/apx-task/SKILL.md +79 -26
- package/src/core/runtime-skills/apx-telegram/SKILL.md +12 -12
- package/src/core/runtime-skills/apx-transcribe/SKILL.md +56 -0
- package/src/core/runtime-skills/apx-voice/SKILL.md +27 -8
- package/src/core/runtime-skills/claude-code/SKILL.md +8 -0
- package/src/core/runtime-skills/openrouter/SKILL.md +8 -2
- package/src/core/runtimes/_spawn.js +9 -1
- package/src/core/runtimes/claude-code.js +11 -2
- package/src/core/runtimes/codex.js +44 -10
- package/src/core/runtimes/index.js +17 -2
- package/src/core/runtimes/opencode.js +88 -9
- package/src/core/runtimes/outcome.js +119 -0
- package/src/core/sessions/index.js +193 -1
- package/src/core/stores/agent-inbox.js +109 -23
- package/src/core/stores/code-sessions.js +21 -0
- package/src/core/stores/commitments.js +27 -3
- package/src/core/stores/conversations.js +220 -20
- package/src/core/stores/deliveries.js +177 -0
- package/src/core/stores/media-archive.js +228 -0
- package/src/core/stores/messages.js +1096 -112
- package/src/core/stores/organization.js +34 -0
- package/src/core/stores/project-memory.js +71 -0
- package/src/core/stores/routine-memory.js +16 -8
- package/src/core/stores/routines.js +27 -49
- package/src/core/stores/sessions.js +4 -8
- package/src/core/stores/tasks.js +212 -18
- package/src/core/stores/turn-record.js +209 -0
- package/src/core/tasks/columns.js +136 -0
- package/src/core/tasks/comment-turn.js +258 -0
- package/src/core/util/time.js +13 -0
- package/src/core/voice/engines/index.js +54 -1
- package/src/core/voice/engines/openai.js +50 -4
- package/src/core/voice/opus.js +67 -0
- package/src/core/voice/pronounceable.js +43 -0
- package/src/core/voice/transcription.js +4 -0
- package/src/core/voice/tts.js +114 -24
- package/src/host/daemon/active-turns.js +188 -0
- package/src/host/daemon/api/admin-config.js +9 -0
- package/src/host/daemon/api/agents.js +99 -90
- package/src/host/daemon/api/artifact-preview.js +7 -6
- package/src/host/daemon/api/artifacts.js +3 -2
- package/src/host/daemon/api/code.js +55 -9
- package/src/host/daemon/api/commitments.js +11 -0
- package/src/host/daemon/api/confirm.js +3 -2
- package/src/host/daemon/api/conversations.js +543 -35
- package/src/host/daemon/api/deck.js +9 -8
- package/src/host/daemon/api/deliveries.js +33 -0
- package/src/host/daemon/api/desktop.js +5 -4
- package/src/host/daemon/api/embeddings.js +15 -6
- package/src/host/daemon/api/engines.js +59 -8
- package/src/host/daemon/api/exec.js +437 -121
- package/src/host/daemon/api/groups.js +215 -0
- package/src/host/daemon/api/images.js +107 -0
- package/src/host/daemon/api/inbox.js +123 -2
- package/src/host/daemon/api/integrations.js +64 -2
- package/src/host/daemon/api/mcps.js +7 -6
- package/src/host/daemon/api/media.js +283 -0
- package/src/host/daemon/api/mobility.js +177 -0
- package/src/host/daemon/api/net.js +182 -0
- package/src/host/daemon/api/pairing.js +38 -5
- package/src/host/daemon/api/profiles.js +30 -2
- package/src/host/daemon/api/routines.js +36 -4
- package/src/host/daemon/api/runtimes.js +74 -39
- package/src/host/daemon/api/sessions-search.js +7 -2
- package/src/host/daemon/api/sessions.js +44 -2
- package/src/host/daemon/api/shared.js +127 -20
- package/src/host/daemon/api/skills.js +11 -4
- package/src/host/daemon/api/super-agent.js +384 -53
- package/src/host/daemon/api/tasks.js +180 -10
- package/src/host/daemon/api/telegram.js +11 -10
- package/src/host/daemon/api/thread-faces.js +159 -0
- package/src/host/daemon/api/top-level.js +3 -3
- package/src/host/daemon/api/transcribe.js +11 -10
- package/src/host/daemon/api/tts.js +97 -4
- package/src/host/daemon/api/turn-abort.js +23 -0
- package/src/host/daemon/api/turns.js +49 -0
- package/src/host/daemon/api/voice.js +5 -4
- package/src/host/daemon/api/web.js +98 -0
- package/src/host/daemon/api.js +39 -0
- package/src/host/daemon/delivery-sweep.js +58 -0
- package/src/host/daemon/desktop-ws.js +5 -23
- package/src/host/daemon/events-ws.js +273 -0
- package/src/host/daemon/index.js +59 -15
- package/src/host/daemon/plugins/desktop/index.js +17 -4
- package/src/host/daemon/plugins/telegram/index.js +78 -40
- package/src/host/daemon/pty-bridge.py +99 -0
- package/src/host/daemon/routines-scheduler.js +1 -0
- package/src/host/daemon/smoke.js +1 -2
- package/src/host/daemon/terminal-ws.js +132 -0
- package/src/host/daemon/tts-keepwarm.js +87 -0
- package/src/host/daemon/wakeup.js +11 -6
- package/src/host/daemon/whisper-server.js +44 -0
- package/src/host/daemon/whisper-server.py +70 -13
- package/src/host/daemon/ws-auth.js +28 -0
- package/src/interfaces/android/app/build.gradle +42 -0
- package/src/interfaces/android/app/proguard-rules.pro +4 -0
- package/src/interfaces/android/app/src/main/AndroidManifest.xml +139 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/AlertScreen.java +139 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/AndroidAutoDetector.java +106 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/ApxCarAppService.java +57 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/ApxPreferences.java +165 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/CarAlertStore.java +84 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/CarMessageActionReceiver.java +47 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/CarMessageNotification.java +152 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/DaemonAddress.java +35 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/DaemonClient.java +339 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/DeviceLocation.java +38 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/ErrandScreen.java +127 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MainActivity.java +872 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MapsNavigationDetector.java +63 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MapsNavigationListenerService.java +453 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MapsShareIntentParser.java +93 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MascotBlobCatalog.java +66 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MascotOverlayService.java +448 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MascotView.java +249 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/MessageFrameParser.java +240 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/NotifyChannels.java +69 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/ProximityActionReceiver.java +78 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/ProximityNotification.java +161 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/StartupReceiver.java +57 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/TravelEventGate.java +62 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/TravelStatusBanner.java +116 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/TripLocationService.java +272 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/TripPlacesSheet.java +203 -0
- package/src/interfaces/android/app/src/main/java/dev/agentprojectcontext/apx/TripScreen.java +182 -0
- package/src/interfaces/android/app/src/main/res/drawable/app_background.xml +12 -0
- package/src/interfaces/android/app/src/main/res/drawable/ic_apx_app.xml +10 -0
- package/src/interfaces/android/app/src/main/res/drawable/ic_apx_launcher_foreground.xml +12 -0
- package/src/interfaces/android/app/src/main/res/drawable/ic_apx_notification.xml +22 -0
- package/src/interfaces/android/app/src/main/res/drawable/ic_trip_car.xml +37 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/apx_logo.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_amatista.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_aqua.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_brasa.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_campana.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_caracol.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_carbon.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_cobalto.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_cometa.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_coral.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_cubi.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_eclipse.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_faro.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_gajo.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_iris.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_kiwi.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_laguna.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_lila.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_menta.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_nimbo.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_noche.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_onyx.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_orbita.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_ovni.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_papa.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_parche.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_peon.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_perla.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_pino.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_quad.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_rubi.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_saturno.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_trebol.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_trino.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_volcan.png +0 -0
- package/src/interfaces/android/app/src/main/res/drawable-nodpi/mascot_zafiro.png +0 -0
- package/src/interfaces/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +5 -0
- package/src/interfaces/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +5 -0
- package/src/interfaces/android/app/src/main/res/raw/apx_notification.mp3 +0 -0
- package/src/interfaces/android/app/src/main/res/values/colors.xml +4 -0
- package/src/interfaces/android/app/src/main/res/values/strings.xml +25 -0
- package/src/interfaces/android/app/src/main/res/values/styles.xml +10 -0
- package/src/interfaces/android/app/src/main/res/values-v31/styles.xml +14 -0
- package/src/interfaces/android/app/src/main/res/xml/automotive_app_desc.xml +9 -0
- package/src/interfaces/android/app/src/main/res/xml/network_security_config.xml +10 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/AndroidAutoDetectorTest.java +85 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/CarAlertStoreTest.java +104 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/DaemonAddressTest.java +23 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/MapsNavigationDetectorTest.java +69 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/MapsShareIntentParserTest.java +31 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/MessageFrameParserTest.java +180 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/TravelEventGateTest.java +64 -0
- package/src/interfaces/android/app/src/test/java/dev/agentprojectcontext/apx/TripPlacesSheetTest.java +66 -0
- package/src/interfaces/android/build.gradle +3 -0
- package/src/interfaces/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/src/interfaces/android/gradle/wrapper/gradle-wrapper.properties +9 -0
- package/src/interfaces/android/gradle.properties +3 -0
- package/src/interfaces/android/gradlew +248 -0
- package/src/interfaces/android/gradlew.bat +82 -0
- package/src/interfaces/android/settings.gradle +18 -0
- package/src/interfaces/cli/commands/a2a.js +145 -4
- package/src/interfaces/cli/commands/agent.js +247 -22
- package/src/interfaces/cli/commands/code.js +1 -1
- package/src/interfaces/cli/commands/commitment.js +5 -0
- package/src/interfaces/cli/commands/config.js +85 -6
- package/src/interfaces/cli/commands/exec.js +90 -1
- package/src/interfaces/cli/commands/image.js +314 -0
- package/src/interfaces/cli/commands/mcp.js +87 -23
- package/src/interfaces/cli/commands/memory.js +35 -22
- package/src/interfaces/cli/commands/panel.js +94 -0
- package/src/interfaces/cli/commands/profile.js +14 -0
- package/src/interfaces/cli/commands/project.js +29 -0
- package/src/interfaces/cli/commands/routine.js +45 -10
- package/src/interfaces/cli/commands/runtime.js +30 -7
- package/src/interfaces/cli/commands/session.js +90 -38
- package/src/interfaces/cli/commands/sessions.js +35 -2
- package/src/interfaces/cli/commands/skills.js +15 -9
- package/src/interfaces/cli/commands/status.js +2 -3
- package/src/interfaces/cli/commands/task.js +54 -5
- package/src/interfaces/cli/commands/telegram.js +12 -4
- package/src/interfaces/cli/commands/transcribe.js +177 -0
- package/src/interfaces/cli/help/index.js +311 -72
- package/src/interfaces/cli/http.js +61 -13
- package/src/interfaces/cli/index.js +1 -1
- package/src/interfaces/cli/routes/agent.js +5 -4
- package/src/interfaces/cli/routes/commitment.js +3 -2
- package/src/interfaces/cli/routes/config.js +7 -2
- package/src/interfaces/cli/routes/image.js +11 -0
- package/src/interfaces/cli/routes/index.js +2 -0
- package/src/interfaces/cli/routes/log.js +1 -1
- package/src/interfaces/cli/routes/memory.js +3 -2
- package/src/interfaces/cli/routes/panel.js +15 -2
- package/src/interfaces/cli/routes/profile.js +3 -2
- package/src/interfaces/cli/routes/transcribe.js +10 -0
- package/src/interfaces/cli/stdin.js +29 -0
- package/src/interfaces/desktop/assets/blobs/amatista.png +0 -0
- package/src/interfaces/desktop/assets/blobs/aqua.png +0 -0
- package/src/interfaces/desktop/assets/blobs/brasa.png +0 -0
- package/src/interfaces/desktop/assets/blobs/campana.png +0 -0
- package/src/interfaces/desktop/assets/blobs/caracol.png +0 -0
- package/src/interfaces/desktop/assets/blobs/carbon.png +0 -0
- package/src/interfaces/desktop/assets/blobs/cobalto.png +0 -0
- package/src/interfaces/desktop/assets/blobs/cometa.png +0 -0
- package/src/interfaces/desktop/assets/blobs/coral.png +0 -0
- package/src/interfaces/desktop/assets/blobs/cubi.png +0 -0
- package/src/interfaces/desktop/assets/blobs/eclipse.png +0 -0
- package/src/interfaces/desktop/assets/blobs/faro.png +0 -0
- package/src/interfaces/desktop/assets/blobs/gajo.png +0 -0
- package/src/interfaces/desktop/assets/blobs/iris.png +0 -0
- package/src/interfaces/desktop/assets/blobs/kiwi.png +0 -0
- package/src/interfaces/desktop/assets/blobs/laguna.png +0 -0
- package/src/interfaces/desktop/assets/blobs/lila.png +0 -0
- package/src/interfaces/desktop/assets/blobs/menta.png +0 -0
- package/src/interfaces/desktop/assets/blobs/nimbo.png +0 -0
- package/src/interfaces/desktop/assets/blobs/noche.png +0 -0
- package/src/interfaces/desktop/assets/blobs/onyx.png +0 -0
- package/src/interfaces/desktop/assets/blobs/orbita.png +0 -0
- package/src/interfaces/desktop/assets/blobs/ovni.png +0 -0
- package/src/interfaces/desktop/assets/blobs/papa.png +0 -0
- package/src/interfaces/desktop/assets/blobs/parche.png +0 -0
- package/src/interfaces/desktop/assets/blobs/peon.png +0 -0
- package/src/interfaces/desktop/assets/blobs/perla.png +0 -0
- package/src/interfaces/desktop/assets/blobs/pino.png +0 -0
- package/src/interfaces/desktop/assets/blobs/quad.png +0 -0
- package/src/interfaces/desktop/assets/blobs/rubi.png +0 -0
- package/src/interfaces/desktop/assets/blobs/saturno.png +0 -0
- package/src/interfaces/desktop/assets/blobs/trebol.png +0 -0
- package/src/interfaces/desktop/assets/blobs/trino.png +0 -0
- package/src/interfaces/desktop/assets/blobs/volcan.png +0 -0
- package/src/interfaces/desktop/assets/blobs/zafiro.png +0 -0
- package/src/interfaces/desktop/assets/notification.mp3 +0 -0
- package/src/interfaces/desktop/main.js +473 -29
- package/src/interfaces/desktop/mascot-blobs.js +41 -0
- package/src/interfaces/desktop/mascot-preload.js +32 -0
- package/src/interfaces/desktop/mascot.css +186 -0
- package/src/interfaces/desktop/mascot.html +40 -0
- package/src/interfaces/desktop/mascot.js +163 -0
- package/src/interfaces/desktop/preload.js +10 -0
- package/src/interfaces/desktop/renderer.js +308 -48
- package/src/interfaces/desktop/style.css +34 -0
- package/src/interfaces/mcp-server/index.js +87 -0
- package/src/interfaces/tui/_shims/util-locale.ts +0 -2
- package/src/interfaces/tui/app.tsx +0 -6
- package/src/interfaces/tui/attach.ts +0 -1
- package/src/interfaces/tui/context/sdk-apx.tsx +0 -4
- package/src/interfaces/tui/plugin/api.tsx +0 -3
- package/src/interfaces/tui/plugin/runtime.ts +0 -3
- package/src/interfaces/tui/thread.ts +0 -16
- package/src/interfaces/web/README.md +22 -14
- package/src/interfaces/web/dist/assets/claude-XtpLmGtF.webp +0 -0
- package/src/interfaces/web/dist/assets/codex-DExPUgvh.webp +0 -0
- package/src/interfaces/web/dist/assets/index-BEoRgIqd.css +32 -0
- package/src/interfaces/web/dist/assets/index-BEoRgIqd.css.br +0 -0
- package/src/interfaces/web/dist/assets/index-BEoRgIqd.css.gz +0 -0
- package/src/interfaces/web/dist/assets/index-C6fXHc1p.js +1074 -0
- package/src/interfaces/web/dist/assets/index-C6fXHc1p.js.br +0 -0
- package/src/interfaces/web/dist/assets/index-C6fXHc1p.js.gz +0 -0
- package/src/interfaces/web/dist/assets/index-C6fXHc1p.js.map +1 -0
- package/src/interfaces/web/dist/assets/index-C6fXHc1p.js.map.br +0 -0
- package/src/interfaces/web/dist/assets/index-C6fXHc1p.js.map.gz +0 -0
- package/src/interfaces/web/dist/favicon/dark/site.webmanifest +12 -6
- package/src/interfaces/web/dist/favicon/white/site.webmanifest +12 -6
- package/src/interfaces/web/dist/index.html +22 -6
- package/src/interfaces/web/dist/index.html.br +0 -0
- package/src/interfaces/web/dist/index.html.gz +0 -0
- package/src/interfaces/web/dist/manifest.webmanifest +25 -0
- package/src/interfaces/web/dist/modules/blobs/amatista.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/aqua.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/brasa.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/campana.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/caracol.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/carbon.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/cobalto.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/cometa.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/coral.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/cubi.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/eclipse.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/faro.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/gajo.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/iris.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/kiwi.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/laguna.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/lila.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/menta.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/nimbo.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/noche.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/onyx.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/orbita.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/ovni.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/papa.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/parche.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/peon.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/perla.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/pino.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/quad.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/rubi.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/saturno.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/trebol.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/trino.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/volcan.png +0 -0
- package/src/interfaces/web/dist/modules/blobs/zafiro.png +0 -0
- package/src/interfaces/web/dist/sw.js +106 -0
- package/src/interfaces/web/dist/sw.js.br +0 -0
- package/src/interfaces/web/dist/sw.js.gz +0 -0
- package/src/interfaces/web/eslint.config.js +83 -0
- package/src/interfaces/web/index.html +20 -4
- package/src/interfaces/web/package-lock.json +1651 -1280
- package/src/interfaces/web/package.json +9 -10
- package/src/interfaces/web/pnpm-lock.yaml +867 -869
- package/src/interfaces/web/public/favicon/dark/site.webmanifest +12 -6
- package/src/interfaces/web/public/favicon/white/site.webmanifest +12 -6
- package/src/interfaces/web/public/manifest.webmanifest +25 -0
- package/src/interfaces/web/public/modules/blobs/amatista.png +0 -0
- package/src/interfaces/web/public/modules/blobs/aqua.png +0 -0
- package/src/interfaces/web/public/modules/blobs/brasa.png +0 -0
- package/src/interfaces/web/public/modules/blobs/campana.png +0 -0
- package/src/interfaces/web/public/modules/blobs/caracol.png +0 -0
- package/src/interfaces/web/public/modules/blobs/carbon.png +0 -0
- package/src/interfaces/web/public/modules/blobs/cobalto.png +0 -0
- package/src/interfaces/web/public/modules/blobs/cometa.png +0 -0
- package/src/interfaces/web/public/modules/blobs/coral.png +0 -0
- package/src/interfaces/web/public/modules/blobs/cubi.png +0 -0
- package/src/interfaces/web/public/modules/blobs/eclipse.png +0 -0
- package/src/interfaces/web/public/modules/blobs/faro.png +0 -0
- package/src/interfaces/web/public/modules/blobs/gajo.png +0 -0
- package/src/interfaces/web/public/modules/blobs/iris.png +0 -0
- package/src/interfaces/web/public/modules/blobs/kiwi.png +0 -0
- package/src/interfaces/web/public/modules/blobs/laguna.png +0 -0
- package/src/interfaces/web/public/modules/blobs/lila.png +0 -0
- package/src/interfaces/web/public/modules/blobs/menta.png +0 -0
- package/src/interfaces/web/public/modules/blobs/nimbo.png +0 -0
- package/src/interfaces/web/public/modules/blobs/noche.png +0 -0
- package/src/interfaces/web/public/modules/blobs/onyx.png +0 -0
- package/src/interfaces/web/public/modules/blobs/orbita.png +0 -0
- package/src/interfaces/web/public/modules/blobs/ovni.png +0 -0
- package/src/interfaces/web/public/modules/blobs/papa.png +0 -0
- package/src/interfaces/web/public/modules/blobs/parche.png +0 -0
- package/src/interfaces/web/public/modules/blobs/peon.png +0 -0
- package/src/interfaces/web/public/modules/blobs/perla.png +0 -0
- package/src/interfaces/web/public/modules/blobs/pino.png +0 -0
- package/src/interfaces/web/public/modules/blobs/quad.png +0 -0
- package/src/interfaces/web/public/modules/blobs/rubi.png +0 -0
- package/src/interfaces/web/public/modules/blobs/saturno.png +0 -0
- package/src/interfaces/web/public/modules/blobs/trebol.png +0 -0
- package/src/interfaces/web/public/modules/blobs/trino.png +0 -0
- package/src/interfaces/web/public/modules/blobs/volcan.png +0 -0
- package/src/interfaces/web/public/modules/blobs/zafiro.png +0 -0
- package/src/interfaces/web/public/sw.js +106 -0
- package/src/interfaces/web/src/App.tsx +106 -10
- package/src/interfaces/web/src/assets/cli/claude.webp +0 -0
- package/src/interfaces/web/src/assets/cli/codex.webp +0 -0
- package/src/interfaces/web/src/assets/cli/cursor.svg +1 -0
- package/src/interfaces/web/src/assets/cli/opencode.png +0 -0
- package/src/interfaces/web/src/components/Combobox.tsx +201 -0
- package/src/interfaces/web/src/components/MobileHint.tsx +95 -0
- package/src/interfaces/web/src/components/MobileLinkDialog.tsx +156 -0
- package/src/interfaces/web/src/components/ModelCombobox.tsx +21 -113
- package/src/interfaces/web/src/components/{routines/ReadOnlyBlock.tsx → ReadOnlyBlock.tsx} +13 -4
- package/src/interfaces/web/src/components/Roby.tsx +5 -3
- package/src/interfaces/web/src/components/RobyBubble.tsx +23 -5
- package/src/interfaces/web/src/components/RowMenu.tsx +46 -0
- package/src/interfaces/web/src/components/TimezoneSelect.tsx +4 -1
- package/src/interfaces/web/src/components/Toast.tsx +50 -14
- package/src/interfaces/web/src/components/UiSelect.tsx +12 -5
- package/src/interfaces/web/src/components/agents/AgentAvatar.tsx +171 -0
- package/src/interfaces/web/src/components/agents/AgentFormFields.tsx +42 -11
- package/src/interfaces/web/src/components/agents/AgentModelBadge.tsx +157 -0
- package/src/interfaces/web/src/components/agents/AgentModelSelect.tsx +57 -0
- package/src/interfaces/web/src/components/agents/AgentSkillsPicker.tsx +115 -0
- package/src/interfaces/web/src/components/agents/BlobAvatar.tsx +50 -0
- package/src/interfaces/web/src/components/agents/blobPresets.ts +50 -0
- package/src/interfaces/web/src/components/agents/modelCatalog.ts +66 -0
- package/src/interfaces/web/src/components/chat/ActionGroup.tsx +162 -0
- package/src/interfaces/web/src/components/chat/AskAnswersCard.tsx +4 -3
- package/src/interfaces/web/src/components/chat/AskQuestionsCard.tsx +1 -1
- package/src/interfaces/web/src/components/chat/Attachment.tsx +220 -0
- package/src/interfaces/web/src/components/chat/ChatList.tsx +226 -51
- package/src/interfaces/web/src/components/chat/ChatRowActivity.tsx +45 -0
- package/src/interfaces/web/src/components/chat/Composer.tsx +672 -23
- package/src/interfaces/web/src/components/chat/ComposerCommands.tsx +175 -0
- package/src/interfaces/web/src/components/chat/ComposerSuggest.tsx +215 -0
- package/src/interfaces/web/src/components/chat/ContextBar.tsx +133 -65
- package/src/interfaces/web/src/components/chat/InlineAskPanel.tsx +107 -47
- package/src/interfaces/web/src/components/chat/MessageBubble.tsx +460 -119
- package/src/interfaces/web/src/components/chat/MessageList.tsx +165 -18
- package/src/interfaces/web/src/components/chat/ReasoningBlock.tsx +58 -0
- package/src/interfaces/web/src/components/chat/SessionPicker.tsx +182 -0
- package/src/interfaces/web/src/components/chat/SkillTrace.tsx +183 -0
- package/src/interfaces/web/src/components/chat/ToolCall.tsx +11 -11
- package/src/interfaces/web/src/components/code/CodeContextTab.tsx +87 -53
- package/src/interfaces/web/src/components/code/CodeFileTree.tsx +11 -52
- package/src/interfaces/web/src/components/code/CodeFileViewer.tsx +5 -4
- package/src/interfaces/web/src/components/code/CodeProjectPicker.tsx +31 -7
- package/src/interfaces/web/src/components/code/CodeSessionList.tsx +32 -11
- package/src/interfaces/web/src/components/code/CodeSidePanel.tsx +33 -3
- package/src/interfaces/web/src/components/code/CodeTerminal.tsx +5 -4
- package/src/interfaces/web/src/components/code/NewCodeSessionDialog.tsx +164 -0
- package/src/interfaces/web/src/components/commitments/CommitmentDetail.tsx +162 -0
- package/src/interfaces/web/src/components/commitments/CommitmentFormDialog.tsx +158 -0
- package/src/interfaces/web/src/components/commitments/CommitmentList.tsx +194 -0
- package/src/interfaces/web/src/components/commitments/commitmentState.tsx +46 -0
- package/src/interfaces/web/src/components/common/BulkActionBar.tsx +60 -0
- package/src/interfaces/web/src/components/common/ConfirmDialog.tsx +4 -1
- package/src/interfaces/web/src/components/common/SelectCheckbox.tsx +40 -0
- package/src/interfaces/web/src/components/common/TabNav.tsx +1 -1
- package/src/interfaces/web/src/components/cron/CronPicker.tsx +1 -1
- package/src/interfaces/web/src/components/files/FileBrowser.tsx +1 -1
- package/src/interfaces/web/src/components/files/FileTree.tsx +6 -4
- package/src/interfaces/web/src/components/files/FileViewer.tsx +9 -5
- package/src/interfaces/web/src/components/files/MarkdownPreview.tsx +45 -9
- package/src/interfaces/web/src/components/images/ImageDefaultsCard.tsx +93 -0
- package/src/interfaces/web/src/components/images/ImageProviderList.tsx +142 -0
- package/src/interfaces/web/src/components/images/ImageProviderModal.tsx +263 -0
- package/src/interfaces/web/src/components/images/ImageTestCard.tsx +142 -0
- package/src/interfaces/web/src/components/inbox/ChannelFilter.tsx +178 -0
- package/src/interfaces/web/src/components/inbox/InboxList.tsx +77 -81
- package/src/interfaces/web/src/components/inbox/InboxRowItem.tsx +140 -0
- package/src/interfaces/web/src/components/integrations/ComingSoonPlugin.tsx +2 -2
- package/src/interfaces/web/src/components/integrations/PluginConnect.tsx +208 -30
- package/src/interfaces/web/src/components/integrations/PluginToolsSection.tsx +1 -1
- package/src/interfaces/web/src/components/layout/ProjectAvatar.tsx +39 -24
- package/src/interfaces/web/src/components/layout/ProjectSidebar.tsx +253 -58
- package/src/interfaces/web/src/components/memory/MemoryBrowser.tsx +94 -47
- package/src/interfaces/web/src/components/routines/ExecutionsList.tsx +202 -90
- package/src/interfaces/web/src/components/routines/RoutineDetail.tsx +28 -6
- package/src/interfaces/web/src/components/routines/RoutineEditor.tsx +16 -5
- package/src/interfaces/web/src/components/routines/RoutineList.tsx +49 -9
- package/src/interfaces/web/src/components/routines/VarTextarea.tsx +1 -1
- package/src/interfaces/web/src/components/routines/runChat.ts +121 -0
- package/src/interfaces/web/src/components/sessions/SessionDetail.tsx +148 -0
- package/src/interfaces/web/src/components/sessions/SessionTerminal.tsx +98 -0
- package/src/interfaces/web/src/components/settings/AccessPanel.tsx +205 -0
- package/src/interfaces/web/src/components/settings/DefaultRouterCard.tsx +246 -101
- package/src/interfaces/web/src/components/settings/DesktopSettingsPanel.tsx +36 -2
- package/src/interfaces/web/src/components/settings/DevicesPanel.tsx +19 -6
- package/src/interfaces/web/src/components/settings/EmbedProviderList.tsx +274 -0
- package/src/interfaces/web/src/components/settings/EnginesPanel.tsx +26 -6
- package/src/interfaces/web/src/components/settings/MemoryPanel.tsx +118 -119
- package/src/interfaces/web/src/components/settings/NudgePanel.tsx +4 -3
- package/src/interfaces/web/src/components/settings/PairDeviceDialog.tsx +15 -4
- package/src/interfaces/web/src/components/settings/PanelPrefs.tsx +374 -0
- package/src/interfaces/web/src/components/settings/ProfilePanel.tsx +70 -2
- package/src/interfaces/web/src/components/settings/RoutingPanel.tsx +2 -1
- package/src/interfaces/web/src/components/settings/SkillsInspectorPanel.tsx +102 -43
- package/src/interfaces/web/src/components/settings/SkillsManager.tsx +76 -21
- package/src/interfaces/web/src/components/settings/SkillsSettings.tsx +10 -3
- package/src/interfaces/web/src/components/settings/SuperAgentPanel.tsx +8 -0
- package/src/interfaces/web/src/components/settings/TelegramChannelsPanel.tsx +11 -2
- package/src/interfaces/web/src/components/settings/TelegramContactsPanel.tsx +19 -8
- package/src/interfaces/web/src/components/settings/TelegramRolesPanel.tsx +12 -2
- package/src/interfaces/web/src/components/settings/WebPanel.tsx +22 -31
- package/src/interfaces/web/src/components/settings/providers/ProviderCard.tsx +15 -3
- package/src/interfaces/web/src/components/settings/providers/ProviderModal.tsx +97 -66
- package/src/interfaces/web/src/components/settings/providers/ProviderTestDialog.tsx +150 -0
- package/src/interfaces/web/src/components/settings/providers/typeStyles.ts +67 -25
- package/src/interfaces/web/src/components/settings/providers/types.ts +3 -0
- package/src/interfaces/web/src/components/tasks/TaskBoard.tsx +201 -0
- package/src/interfaces/web/src/components/tasks/TaskColumnsDialog.tsx +243 -0
- package/src/interfaces/web/src/components/tasks/TaskComments.tsx +167 -0
- package/src/interfaces/web/src/components/tasks/TaskDetail.tsx +335 -0
- package/src/interfaces/web/src/components/tasks/TaskFormDialog.tsx +406 -0
- package/src/interfaces/web/src/components/tasks/TaskList.tsx +258 -0
- package/src/interfaces/web/src/components/tasks/TaskSubtasks.tsx +126 -0
- package/src/interfaces/web/src/components/tasks/columns.ts +51 -0
- package/src/interfaces/web/src/components/tasks/taskStatus.tsx +159 -34
- package/src/interfaces/web/src/components/tasks/taskViewPrefs.ts +73 -0
- package/src/interfaces/web/src/components/tasks/useTaskColumns.ts +31 -0
- package/src/interfaces/web/src/components/ui/chat-input.tsx +136 -12
- package/src/interfaces/web/src/components/ui/context-menu.tsx +15 -198
- package/src/interfaces/web/src/components/ui/dialog.tsx +3 -2
- package/src/interfaces/web/src/components/ui/filter-chips.tsx +4 -0
- package/src/interfaces/web/src/components/ui/popover.tsx +14 -49
- package/src/interfaces/web/src/components/ui/sheet.tsx +2 -1
- package/src/interfaces/web/src/components/ui/spinner.tsx +2 -1
- package/src/interfaces/web/src/components/ui.tsx +62 -23
- package/src/interfaces/web/src/components/voice/VoiceProviderList.tsx +2 -1
- package/src/interfaces/web/src/components/voice/VoiceProviderModal.tsx +66 -8
- package/src/interfaces/web/src/components/voice/VoiceQvoxInstallCard.tsx +63 -0
- package/src/interfaces/web/src/components/voice/VoiceQvoxStatusCard.tsx +51 -0
- package/src/interfaces/web/src/components/voice/VoiceSttCard.tsx +4 -3
- package/src/interfaces/web/src/components/voice/VoiceTestCard.tsx +38 -4
- package/src/interfaces/web/src/constants/index.ts +1 -0
- package/src/interfaces/web/src/hooks/useChannelPrefs.ts +39 -0
- package/src/interfaces/web/src/hooks/useChat.ts +1092 -85
- package/src/interfaces/web/src/hooks/useChatActivity.ts +24 -0
- package/src/interfaces/web/src/hooks/useInbox.ts +26 -4
- package/src/interfaces/web/src/hooks/useLiveMessages.ts +16 -0
- package/src/interfaces/web/src/hooks/useOllamaModels.ts +79 -0
- package/src/interfaces/web/src/hooks/useRecorder.ts +198 -0
- package/src/interfaces/web/src/hooks/useTokenBootstrap.ts +23 -6
- package/src/interfaces/web/src/i18n/en.ts +832 -175
- package/src/interfaces/web/src/i18n/es.ts +841 -188
- package/src/interfaces/web/src/lib/api/agents.ts +23 -4
- package/src/interfaces/web/src/lib/api/code.ts +17 -0
- package/src/interfaces/web/src/lib/api/commitments.ts +7 -1
- package/src/interfaces/web/src/lib/api/conversations.ts +38 -11
- package/src/interfaces/web/src/lib/api/embeddings.ts +3 -0
- package/src/interfaces/web/src/lib/api/engines.ts +14 -0
- package/src/interfaces/web/src/lib/api/groups.ts +93 -0
- package/src/interfaces/web/src/lib/api/images.ts +193 -0
- package/src/interfaces/web/src/lib/api/inbox.ts +29 -5
- package/src/interfaces/web/src/lib/api/integrations.ts +9 -0
- package/src/interfaces/web/src/lib/api/media.ts +126 -0
- package/src/interfaces/web/src/lib/api/net.ts +44 -0
- package/src/interfaces/web/src/lib/api/profiles.ts +12 -0
- package/src/interfaces/web/src/lib/api/projects.ts +9 -1
- package/src/interfaces/web/src/lib/api/routines.ts +9 -1
- package/src/interfaces/web/src/lib/api/sessions.ts +18 -0
- package/src/interfaces/web/src/lib/api/skills.ts +8 -0
- package/src/interfaces/web/src/lib/api/super_agent.ts +3 -0
- package/src/interfaces/web/src/lib/api/tasks.ts +46 -6
- package/src/interfaces/web/src/lib/api/tools.ts +2 -0
- package/src/interfaces/web/src/lib/api/transcribe.ts +31 -0
- package/src/interfaces/web/src/lib/api/turns.ts +20 -0
- package/src/interfaces/web/src/lib/api/voice.ts +72 -2
- package/src/interfaces/web/src/lib/api.ts +3 -0
- package/src/interfaces/web/src/lib/channels.ts +214 -0
- package/src/interfaces/web/src/lib/chat-activity.ts +175 -0
- package/src/interfaces/web/src/lib/chat-prefs.ts +48 -0
- package/src/interfaces/web/src/lib/code-context.ts +0 -2
- package/src/interfaces/web/src/lib/http.ts +51 -17
- package/src/interfaces/web/src/lib/inbox-selection.ts +29 -0
- package/src/interfaces/web/src/lib/live.ts +252 -0
- package/src/interfaces/web/src/lib/net.ts +211 -0
- package/src/interfaces/web/src/lib/notify.ts +331 -0
- package/src/interfaces/web/src/lib/projectNav.ts +40 -0
- package/src/interfaces/web/src/lib/pwa.ts +115 -0
- package/src/interfaces/web/src/lib/qvox.ts +24 -0
- package/src/interfaces/web/src/lib/slug.ts +3 -0
- package/src/interfaces/web/src/lib/tone.ts +150 -0
- package/src/interfaces/web/src/main.tsx +15 -4
- package/src/interfaces/web/src/screens/ApxAdminScreen.tsx +33 -11
- package/src/interfaces/web/src/screens/InboxScreen.tsx +126 -71
- package/src/interfaces/web/src/screens/ProjectScreen.tsx +8 -4
- package/src/interfaces/web/src/screens/SettingsScreen.tsx +7 -4
- package/src/interfaces/web/src/screens/base/AgentDefaultsTab.tsx +30 -9
- package/src/interfaces/web/src/screens/base/CommitmentsTab.tsx +150 -168
- package/src/interfaces/web/src/screens/base/LogsTab.tsx +8 -7
- package/src/interfaces/web/src/screens/base/SessionsTab.tsx +99 -37
- package/src/interfaces/web/src/screens/base/WorkspacesTab.tsx +1 -1
- package/src/interfaces/web/src/screens/mobile/MobileChat.tsx +85 -0
- package/src/interfaces/web/src/screens/mobile/MobileChatList.tsx +244 -0
- package/src/interfaces/web/src/screens/mobile/MobileCommitments.tsx +350 -0
- package/src/interfaces/web/src/screens/mobile/MobileScreen.tsx +138 -0
- package/src/interfaces/web/src/screens/mobile/MobileTabBar.tsx +105 -0
- package/src/interfaces/web/src/screens/mobile/MobileTasks.tsx +407 -0
- package/src/interfaces/web/src/screens/mobile/NewChatSheet.tsx +313 -0
- package/src/interfaces/web/src/screens/mobile/mobileList.tsx +194 -0
- package/src/interfaces/web/src/screens/mobile/routes.ts +239 -0
- package/src/interfaces/web/src/screens/modules/CodeScreen.tsx +135 -64
- package/src/interfaces/web/src/screens/modules/DeckScreen.tsx +0 -1
- package/src/interfaces/web/src/screens/modules/ImagesScreen.tsx +172 -0
- package/src/interfaces/web/src/screens/modules/VoiceScreen.tsx +36 -4
- package/src/interfaces/web/src/screens/project/AgentBrainGraph.tsx +117 -30
- package/src/interfaces/web/src/screens/project/AgentDetailScreen.tsx +537 -92
- package/src/interfaces/web/src/screens/project/AgentsTab.tsx +344 -93
- package/src/interfaces/web/src/screens/project/ArtifactsTab.tsx +1 -1
- package/src/interfaces/web/src/screens/project/ChatTab.tsx +1160 -94
- package/src/interfaces/web/src/screens/project/IntegrationsTab.tsx +3 -2
- package/src/interfaces/web/src/screens/project/McpsTab.tsx +62 -14
- package/src/interfaces/web/src/screens/project/Overview.tsx +36 -15
- package/src/interfaces/web/src/screens/project/RoutinesTab.tsx +93 -8
- package/src/interfaces/web/src/screens/project/SkillsTab.tsx +4 -1
- package/src/interfaces/web/src/screens/project/StructureTab.tsx +5 -4
- package/src/interfaces/web/src/screens/project/TasksTab.tsx +351 -129
- package/src/interfaces/web/src/screens/project/VarsTab.tsx +17 -5
- package/src/interfaces/web/src/styles.css +106 -31
- package/src/interfaces/web/src/types/daemon.ts +246 -2
- package/src/interfaces/web/src/vite-env.d.ts +20 -0
- package/src/interfaces/tui/plugin/command-shim.ts +0 -109
- package/src/interfaces/web/components.json +0 -25
- package/src/interfaces/web/dist/assets/index-CvEoGtTf.js +0 -849
- package/src/interfaces/web/dist/assets/index-CvEoGtTf.js.map +0 -1
- package/src/interfaces/web/dist/assets/index-DzBBXFaO.css +0 -1
- package/src/interfaces/web/src/components/tasks/TaskDetailPanel.tsx +0 -142
- package/src/interfaces/web/src/components/ui/accordion.tsx +0 -72
- package/src/interfaces/web/src/components/ui/alert-dialog.tsx +0 -187
- package/src/interfaces/web/src/components/ui/alert.tsx +0 -76
- package/src/interfaces/web/src/components/ui/aspect-ratio.tsx +0 -22
- package/src/interfaces/web/src/components/ui/avatar.tsx +0 -107
- package/src/interfaces/web/src/components/ui/breadcrumb.tsx +0 -125
- package/src/interfaces/web/src/components/ui/button-group.tsx +0 -87
- package/src/interfaces/web/src/components/ui/calendar.tsx +0 -221
- package/src/interfaces/web/src/components/ui/card.tsx +0 -103
- package/src/interfaces/web/src/components/ui/carousel.tsx +0 -242
- package/src/interfaces/web/src/components/ui/chart.tsx +0 -371
- package/src/interfaces/web/src/components/ui/checkbox.tsx +0 -29
- package/src/interfaces/web/src/components/ui/collapsible.tsx +0 -19
- package/src/interfaces/web/src/components/ui/combobox.tsx +0 -295
- package/src/interfaces/web/src/components/ui/command.tsx +0 -196
- package/src/interfaces/web/src/components/ui/direction.tsx +0 -4
- package/src/interfaces/web/src/components/ui/drawer.tsx +0 -134
- package/src/interfaces/web/src/components/ui/empty.tsx +0 -104
- package/src/interfaces/web/src/components/ui/field.tsx +0 -236
- package/src/interfaces/web/src/components/ui/hover-card.tsx +0 -51
- package/src/interfaces/web/src/components/ui/input-otp.tsx +0 -85
- package/src/interfaces/web/src/components/ui/item.tsx +0 -201
- package/src/interfaces/web/src/components/ui/menubar.tsx +0 -280
- package/src/interfaces/web/src/components/ui/native-select.tsx +0 -61
- package/src/interfaces/web/src/components/ui/navigation-menu.tsx +0 -168
- package/src/interfaces/web/src/components/ui/pagination.tsx +0 -130
- package/src/interfaces/web/src/components/ui/progress.tsx +0 -83
- package/src/interfaces/web/src/components/ui/radio-group.tsx +0 -36
- package/src/interfaces/web/src/components/ui/resizable.tsx +0 -50
- package/src/interfaces/web/src/components/ui/scroll-area.tsx +0 -53
- package/src/interfaces/web/src/components/ui/sidebar.tsx +0 -726
- package/src/interfaces/web/src/components/ui/slider.tsx +0 -52
- package/src/interfaces/web/src/components/ui/sonner.tsx +0 -49
- package/src/interfaces/web/src/components/ui/table.tsx +0 -116
- package/src/interfaces/web/src/components/ui/toggle-group.tsx +0 -87
- package/src/interfaces/web/src/components/ui/toggle.tsx +0 -45
- package/src/interfaces/web/src/hooks/use-mobile.ts +0 -19
- package/src/interfaces/web/src/screens/base/GlobalTasksTab.tsx +0 -161
|
@@ -64,6 +64,26 @@ export const TOOL_DEFINITIONS = Object.freeze([
|
|
|
64
64
|
},
|
|
65
65
|
examples: [{ path: "src" }],
|
|
66
66
|
},
|
|
67
|
+
{
|
|
68
|
+
// Native loop tool. Listed so the agent picker can toggle it; HTTP /call
|
|
69
|
+
// is 501 — the exec_agent loop runs the in-process handler.
|
|
70
|
+
name: "edit_file",
|
|
71
|
+
category: "file",
|
|
72
|
+
description: "Replace one exact string with another inside a project file. Prefer this over write_file for small edits.",
|
|
73
|
+
endpoint: null,
|
|
74
|
+
parameters: {
|
|
75
|
+
type: "object",
|
|
76
|
+
properties: {
|
|
77
|
+
path: { type: "string", description: "Relative path inside the project" },
|
|
78
|
+
search: { type: "string", description: "Exact text to replace" },
|
|
79
|
+
replace: { type: "string", description: "Replacement text" },
|
|
80
|
+
all: { type: "boolean", description: "Replace every match; default false" },
|
|
81
|
+
project: { type: "string" },
|
|
82
|
+
},
|
|
83
|
+
required: ["path", "search", "replace"],
|
|
84
|
+
},
|
|
85
|
+
examples: [{ path: "README.md", search: "old", replace: "new" }],
|
|
86
|
+
},
|
|
67
87
|
|
|
68
88
|
// ── shell ─────────────────────────────────────────────────────────────────
|
|
69
89
|
{
|
|
@@ -339,7 +359,7 @@ export const TOOL_DEFINITIONS = Object.freeze([
|
|
|
339
359
|
{
|
|
340
360
|
name: "browser_navigate",
|
|
341
361
|
category: "browser",
|
|
342
|
-
description: "Navigate the headless browser to a URL. Launches Chromium lazily on first call. Auto-retries and falls back to a more permissive wait strategy on redirect-heavy sites.",
|
|
362
|
+
description: "Navigate the headless browser to a URL. Launches Chromium lazily on first call. Auto-retries and falls back to a more permissive wait strategy on redirect-heavy sites. Pass snapshot:true to get the page's accessibility tree back in the same call — that is the normal way to drive a page: navigate → read refs → act on refs.",
|
|
343
363
|
endpoint: { method: "POST", path: "/api/tools/browser/navigate" },
|
|
344
364
|
parameters: {
|
|
345
365
|
type: "object",
|
|
@@ -350,12 +370,28 @@ export const TOOL_DEFINITIONS = Object.freeze([
|
|
|
350
370
|
enum: ["load", "domcontentloaded", "networkidle0", "networkidle2"],
|
|
351
371
|
description: "Puppeteer wait strategy (default networkidle2). Use 'domcontentloaded' for slow/redirect-heavy sites; navigate auto-falls back to it on failure anyway.",
|
|
352
372
|
},
|
|
373
|
+
snapshot: { type: "boolean", description: "Also return the accessibility snapshot (with refs) after the page settles. Saves a round trip." },
|
|
353
374
|
launch_options: { type: "object", description: "Puppeteer launch overrides (headless, args, defaultViewport, etc.)." },
|
|
354
375
|
allow_dangerous: { type: "boolean", description: "Allow dangerous launch args (--no-sandbox, --single-process, etc.)." },
|
|
355
376
|
},
|
|
356
377
|
required: ["url"],
|
|
357
378
|
},
|
|
358
|
-
examples: [{ url: "https://example.com" }],
|
|
379
|
+
examples: [{ url: "https://example.com", snapshot: true }],
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
name: "browser_snapshot",
|
|
383
|
+
category: "browser",
|
|
384
|
+
description: "Read the current page as an accessibility tree: role, accessible name, state, one line per element, with every interactive control stamped [ref_N]. THIS is how you see a page — call it after navigating and after any action that changes the DOM, then pass a ref to browser_click / browser_type / browser_select / browser_hover instead of guessing a CSS selector from HTML. Refs are invalidated by navigation or re-render; take a fresh snapshot when an action reports a stale ref.",
|
|
385
|
+
endpoint: { method: "POST", path: "/api/tools/browser/snapshot" },
|
|
386
|
+
parameters: {
|
|
387
|
+
type: "object",
|
|
388
|
+
properties: {
|
|
389
|
+
selector: { type: "string", description: "Limit the snapshot to a subtree (e.g. \"main\", \"#results\"). Use it on big pages." },
|
|
390
|
+
interactive_only: { type: "boolean", description: "Only controls — drop headings and page copy. Smallest output.", default: false },
|
|
391
|
+
max_nodes: { type: "number", description: "Node cap before truncation (default 400, max 1500).", default: 400 },
|
|
392
|
+
},
|
|
393
|
+
},
|
|
394
|
+
examples: [{}, { selector: "form" }, { interactive_only: true }],
|
|
359
395
|
},
|
|
360
396
|
{
|
|
361
397
|
name: "browser_screenshot",
|
|
@@ -366,6 +402,7 @@ export const TOOL_DEFINITIONS = Object.freeze([
|
|
|
366
402
|
type: "object",
|
|
367
403
|
properties: {
|
|
368
404
|
selector: { type: "string", description: "CSS selector of element to capture. Omit for full viewport/page." },
|
|
405
|
+
ref: { type: "string", description: "Snapshot ref (e.g. \"ref_12\") of the element to capture. Wins over selector." },
|
|
369
406
|
full_page: { type: "boolean", default: false },
|
|
370
407
|
width: { type: "number", description: "Viewport width (capped at 1920)." },
|
|
371
408
|
height: { type: "number", description: "Viewport height (capped at 1080)." },
|
|
@@ -379,57 +416,66 @@ export const TOOL_DEFINITIONS = Object.freeze([
|
|
|
379
416
|
{
|
|
380
417
|
name: "browser_click",
|
|
381
418
|
category: "browser",
|
|
382
|
-
description: "Click
|
|
419
|
+
description: "Click an element on the current browser page. Prefer `ref` from browser_snapshot — a CSS selector guessed from HTML is what makes browsing brittle.",
|
|
383
420
|
endpoint: { method: "POST", path: "/api/tools/browser/click" },
|
|
384
421
|
parameters: {
|
|
385
422
|
type: "object",
|
|
386
|
-
properties: {
|
|
387
|
-
|
|
423
|
+
properties: {
|
|
424
|
+
ref: { type: "string", description: "Snapshot ref (e.g. \"ref_12\"). Preferred." },
|
|
425
|
+
selector: { type: "string", description: "CSS selector, when no snapshot ref applies." },
|
|
426
|
+
snapshot: { type: "boolean", description: "Return the accessibility snapshot after the click. Saves a round trip." },
|
|
427
|
+
},
|
|
388
428
|
},
|
|
389
|
-
examples: [{ selector: "button#submit" }],
|
|
429
|
+
examples: [{ ref: "ref_12" }, { ref: "ref_12", snapshot: true }, { selector: "button#submit" }],
|
|
390
430
|
},
|
|
391
431
|
{
|
|
392
432
|
name: "browser_type",
|
|
393
433
|
category: "browser",
|
|
394
|
-
description: "Type text into a
|
|
434
|
+
description: "Type text into a field. Prefer `ref` from browser_snapshot. Uses focus + Ctrl+A + Backspace to clear, then types with realistic delay.",
|
|
395
435
|
endpoint: { method: "POST", path: "/api/tools/browser/type" },
|
|
396
436
|
parameters: {
|
|
397
437
|
type: "object",
|
|
398
438
|
properties: {
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
439
|
+
ref: { type: "string", description: "Snapshot ref (e.g. \"ref_3\"). Preferred." },
|
|
440
|
+
selector: { type: "string", description: "CSS selector, when no snapshot ref applies." },
|
|
441
|
+
text: { type: "string" },
|
|
442
|
+
clear: { type: "boolean", default: true },
|
|
443
|
+
snapshot: { type: "boolean", description: "Return the accessibility snapshot after typing." },
|
|
402
444
|
},
|
|
403
|
-
required: ["
|
|
445
|
+
required: ["text"],
|
|
404
446
|
},
|
|
405
|
-
examples: [{ selector: "input#search", text: "hello world" }],
|
|
447
|
+
examples: [{ ref: "ref_3", text: "hello world" }, { selector: "input#search", text: "hello world" }],
|
|
406
448
|
},
|
|
407
449
|
{
|
|
408
450
|
name: "browser_select",
|
|
409
451
|
category: "browser",
|
|
410
|
-
description: "Choose an option in a <select> element by its value.",
|
|
452
|
+
description: "Choose an option in a <select> element by its value. Prefer `ref` from browser_snapshot.",
|
|
411
453
|
endpoint: { method: "POST", path: "/api/tools/browser/select" },
|
|
412
454
|
parameters: {
|
|
413
455
|
type: "object",
|
|
414
456
|
properties: {
|
|
415
|
-
|
|
416
|
-
|
|
457
|
+
ref: { type: "string", description: "Snapshot ref of the <select>. Preferred." },
|
|
458
|
+
selector: { type: "string", description: "CSS selector, when no snapshot ref applies." },
|
|
459
|
+
value: { type: "string" },
|
|
460
|
+
snapshot: { type: "boolean", description: "Return the accessibility snapshot after selecting." },
|
|
417
461
|
},
|
|
418
|
-
required: ["
|
|
462
|
+
required: ["value"],
|
|
419
463
|
},
|
|
420
|
-
examples: [{ selector: "select#country", value: "AR" }],
|
|
464
|
+
examples: [{ ref: "ref_7", value: "AR" }, { selector: "select#country", value: "AR" }],
|
|
421
465
|
},
|
|
422
466
|
{
|
|
423
467
|
name: "browser_hover",
|
|
424
468
|
category: "browser",
|
|
425
|
-
description: "Hover the cursor over an element (triggers tooltips, dropdowns, hover states).",
|
|
469
|
+
description: "Hover the cursor over an element (triggers tooltips, dropdowns, hover states). Prefer `ref` from browser_snapshot.",
|
|
426
470
|
endpoint: { method: "POST", path: "/api/tools/browser/hover" },
|
|
427
471
|
parameters: {
|
|
428
472
|
type: "object",
|
|
429
|
-
properties: {
|
|
430
|
-
|
|
473
|
+
properties: {
|
|
474
|
+
ref: { type: "string", description: "Snapshot ref. Preferred." },
|
|
475
|
+
selector: { type: "string", description: "CSS selector, when no snapshot ref applies." },
|
|
476
|
+
},
|
|
431
477
|
},
|
|
432
|
-
examples: [{ selector: "nav .menu-item" }],
|
|
478
|
+
examples: [{ ref: "ref_5" }, { selector: "nav .menu-item" }],
|
|
433
479
|
},
|
|
434
480
|
{
|
|
435
481
|
name: "browser_evaluate",
|
|
@@ -457,7 +503,7 @@ export const TOOL_DEFINITIONS = Object.freeze([
|
|
|
457
503
|
{
|
|
458
504
|
name: "browser_get_content",
|
|
459
505
|
category: "browser",
|
|
460
|
-
description: "Return raw innerHTML of the page or a single element (truncated at 1MB).",
|
|
506
|
+
description: "Return raw innerHTML of the page or a single element (truncated at 1MB). Expensive — prefer browser_snapshot to find elements and browser_get_text to read copy; reach for raw HTML only when you need the markup itself.",
|
|
461
507
|
endpoint: { method: "POST", path: "/api/tools/browser/get_content" },
|
|
462
508
|
parameters: {
|
|
463
509
|
type: "object",
|
|
@@ -548,4 +594,142 @@ export const TOOL_DEFINITIONS = Object.freeze([
|
|
|
548
594
|
parameters: { type: "object", properties: {} },
|
|
549
595
|
examples: [{}],
|
|
550
596
|
},
|
|
597
|
+
|
|
598
|
+
// ── skills (native) ───────────────────────────────────────────────────────
|
|
599
|
+
{
|
|
600
|
+
name: "list_skills",
|
|
601
|
+
category: "skill",
|
|
602
|
+
description: "List available skills (slug + one-line description). Call load_skill to fetch a body.",
|
|
603
|
+
endpoint: null,
|
|
604
|
+
parameters: {
|
|
605
|
+
type: "object",
|
|
606
|
+
properties: {
|
|
607
|
+
project_path: { type: "string", description: "Optional project root to also scan .apc/skills" },
|
|
608
|
+
},
|
|
609
|
+
},
|
|
610
|
+
examples: [{}],
|
|
611
|
+
},
|
|
612
|
+
{
|
|
613
|
+
name: "load_skill",
|
|
614
|
+
category: "skill",
|
|
615
|
+
description: "Load the full body of a named skill into this turn.",
|
|
616
|
+
endpoint: null,
|
|
617
|
+
parameters: {
|
|
618
|
+
type: "object",
|
|
619
|
+
properties: {
|
|
620
|
+
slug: { type: "string", description: "Skill slug from list_skills" },
|
|
621
|
+
project_path: { type: "string" },
|
|
622
|
+
},
|
|
623
|
+
required: ["slug"],
|
|
624
|
+
},
|
|
625
|
+
examples: [{ slug: "apx-routine" }],
|
|
626
|
+
},
|
|
627
|
+
|
|
628
|
+
// ── telegram (native) ─────────────────────────────────────────────────────
|
|
629
|
+
{
|
|
630
|
+
name: "send_telegram",
|
|
631
|
+
category: "telegram",
|
|
632
|
+
description: "Send a Telegram message (text; optional photo/document). Dangerous — confirm or run under total.",
|
|
633
|
+
endpoint: null,
|
|
634
|
+
parameters: {
|
|
635
|
+
type: "object",
|
|
636
|
+
properties: {
|
|
637
|
+
text: { type: "string" },
|
|
638
|
+
chat_id: { type: "string" },
|
|
639
|
+
},
|
|
640
|
+
required: ["text"],
|
|
641
|
+
},
|
|
642
|
+
examples: [{ text: "Magui: listo el lote de ideas." }],
|
|
643
|
+
},
|
|
644
|
+
|
|
645
|
+
// ── asana (native plugin) ─────────────────────────────────────────────────
|
|
646
|
+
{
|
|
647
|
+
name: "asana_list_projects",
|
|
648
|
+
category: "integrations",
|
|
649
|
+
description: "List Asana projects visible to the configured token.",
|
|
650
|
+
endpoint: null,
|
|
651
|
+
parameters: { type: "object", properties: { project: { type: "string" } } },
|
|
652
|
+
examples: [{}],
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
name: "asana_list_tasks",
|
|
656
|
+
category: "integrations",
|
|
657
|
+
description: "List tasks in an Asana project.",
|
|
658
|
+
endpoint: null,
|
|
659
|
+
parameters: {
|
|
660
|
+
type: "object",
|
|
661
|
+
properties: {
|
|
662
|
+
project_gid: { type: "string" },
|
|
663
|
+
completed: { type: "boolean" },
|
|
664
|
+
project: { type: "string" },
|
|
665
|
+
},
|
|
666
|
+
required: ["project_gid"],
|
|
667
|
+
},
|
|
668
|
+
examples: [{ project_gid: "123" }],
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
name: "asana_create_task",
|
|
672
|
+
category: "integrations",
|
|
673
|
+
description: "Create a task in an Asana project.",
|
|
674
|
+
endpoint: null,
|
|
675
|
+
parameters: {
|
|
676
|
+
type: "object",
|
|
677
|
+
properties: {
|
|
678
|
+
project_gid: { type: "string" },
|
|
679
|
+
name: { type: "string" },
|
|
680
|
+
notes: { type: "string" },
|
|
681
|
+
project: { type: "string" },
|
|
682
|
+
},
|
|
683
|
+
required: ["project_gid", "name"],
|
|
684
|
+
},
|
|
685
|
+
examples: [{ project_gid: "123", name: "Reel agro" }],
|
|
686
|
+
},
|
|
687
|
+
{
|
|
688
|
+
name: "asana_update_task",
|
|
689
|
+
category: "integrations",
|
|
690
|
+
description: "Update an Asana task (name, notes, completed, section).",
|
|
691
|
+
endpoint: null,
|
|
692
|
+
parameters: {
|
|
693
|
+
type: "object",
|
|
694
|
+
properties: {
|
|
695
|
+
task_gid: { type: "string" },
|
|
696
|
+
name: { type: "string" },
|
|
697
|
+
completed: { type: "boolean" },
|
|
698
|
+
project: { type: "string" },
|
|
699
|
+
},
|
|
700
|
+
required: ["task_gid"],
|
|
701
|
+
},
|
|
702
|
+
examples: [{ task_gid: "456", completed: true }],
|
|
703
|
+
},
|
|
704
|
+
]);
|
|
705
|
+
|
|
706
|
+
// Tools a freshly created agent gets out of the box. Read/search the project,
|
|
707
|
+
// keep its own memory, and look itself up in the org — everything with a side
|
|
708
|
+
// effect (shell, write, browser, MCP, network) stays opt-in per agent.
|
|
709
|
+
// One source of truth: the daemon applies these on create, and the web
|
|
710
|
+
// preselects them so the create dialog needs no tool picker at all.
|
|
711
|
+
export const DEFAULT_AGENT_TOOLS = Object.freeze([
|
|
712
|
+
"read_file",
|
|
713
|
+
"list_files",
|
|
714
|
+
"glob",
|
|
715
|
+
"grep",
|
|
716
|
+
"memory_get",
|
|
717
|
+
"memory_set",
|
|
718
|
+
"memory_append",
|
|
719
|
+
"memory_list",
|
|
720
|
+
"agent_list",
|
|
721
|
+
"agent_get",
|
|
722
|
+
"project_info",
|
|
723
|
+
]);
|
|
724
|
+
|
|
725
|
+
// Worker / editor agents (Magui and friends): the safe default PLUS write,
|
|
726
|
+
// surgical edit, shell, and on-demand skills. Browser, HTTP, MCP, and
|
|
727
|
+
// session tools stay opt-in. Asana / Telegram are extra per-agent.
|
|
728
|
+
export const EDITOR_AGENT_TOOLS = Object.freeze([
|
|
729
|
+
...DEFAULT_AGENT_TOOLS,
|
|
730
|
+
"write_file",
|
|
731
|
+
"edit_file",
|
|
732
|
+
"run_command",
|
|
733
|
+
"list_skills",
|
|
734
|
+
"load_skill",
|
|
551
735
|
]);
|
|
@@ -15,7 +15,19 @@ const execFileAsync = promisify(execFile);
|
|
|
15
15
|
// ripgrep backend
|
|
16
16
|
// ---------------------------------------------------------------------------
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
/**
|
|
19
|
+
* What to call a hit, relative to what was searched.
|
|
20
|
+
*
|
|
21
|
+
* `path.relative(searchPath, file)` is the answer for a directory search and
|
|
22
|
+
* the empty string when the search path IS the file — which is how a grep of
|
|
23
|
+
* one file reported its match against a file named "". A single file is still
|
|
24
|
+
* a file, so it gets its name.
|
|
25
|
+
*/
|
|
26
|
+
function fileLabel(searchPath, file, searchPathIsFile) {
|
|
27
|
+
return searchPathIsFile ? path.basename(file) : path.relative(searchPath, file);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
async function grepWithRg({ pattern, searchPath, searchPathIsFile, glob, caseSensitive, context = 0, limit }) {
|
|
19
31
|
const fullArgs = [
|
|
20
32
|
"--json",
|
|
21
33
|
"--max-filesize", "1M",
|
|
@@ -45,10 +57,20 @@ async function grepWithRg({ pattern, searchPath, glob, caseSensitive, context =
|
|
|
45
57
|
const lineNum = obj.data?.line_number;
|
|
46
58
|
const text = obj.data?.lines?.text?.replace(/\n$/, "") || "";
|
|
47
59
|
const last = matches[matches.length - 1];
|
|
48
|
-
|
|
60
|
+
// Grouped on the ABSOLUTE path, which is what `file` holds. Comparing it
|
|
61
|
+
// to `last.file` — the RELATIVE label stored below — never matched, so
|
|
62
|
+
// every hit opened a new group and `files_with_matches` was really a
|
|
63
|
+
// second copy of `total_matches`: four hits in two files reported four
|
|
64
|
+
// files. rg emits a file's matches consecutively, so comparing against
|
|
65
|
+
// the last group is enough.
|
|
66
|
+
if (last && last.absolute === file) {
|
|
49
67
|
last.matches.push({ line: lineNum, text });
|
|
50
68
|
} else {
|
|
51
|
-
matches.push({
|
|
69
|
+
matches.push({
|
|
70
|
+
file: fileLabel(searchPath, file, searchPathIsFile),
|
|
71
|
+
absolute: file,
|
|
72
|
+
matches: [{ line: lineNum, text }],
|
|
73
|
+
});
|
|
52
74
|
}
|
|
53
75
|
if (matches.reduce((s, m) => s + m.matches.length, 0) >= limit) break;
|
|
54
76
|
}
|
|
@@ -72,9 +94,28 @@ function globToRegex(g) {
|
|
|
72
94
|
);
|
|
73
95
|
}
|
|
74
96
|
|
|
97
|
+
/**
|
|
98
|
+
* Every file under `dir` — or `dir` itself when it IS a file.
|
|
99
|
+
*
|
|
100
|
+
* That second case is not an edge: `grep(path: "work/marketing/magui/brain.md")`
|
|
101
|
+
* is how an agent reads one known file, and it is what ripgrep does without
|
|
102
|
+
* being asked. Here the walk began with `readdirSync` on the path, which throws
|
|
103
|
+
* ENOTDIR for a file; the catch below swallowed it, the queue emptied, and the
|
|
104
|
+
* search returned NO MATCHES — not an error, an empty answer, to a question
|
|
105
|
+
* about a file sitting right there with the word in it.
|
|
106
|
+
*
|
|
107
|
+
* It only ever happened without ripgrep installed, which is why it survived: a
|
|
108
|
+
* dev machine with `brew install ripgrep` never reaches this backend, and the
|
|
109
|
+
* CI runner reaches nothing else.
|
|
110
|
+
*/
|
|
75
111
|
function walkFiles(dir, { globPattern, dot = false, maxFiles = 2000 } = {}) {
|
|
76
112
|
const globRe = globPattern ? globToRegex(globPattern) : null;
|
|
77
113
|
const result = [];
|
|
114
|
+
try {
|
|
115
|
+
if (fs.statSync(dir).isFile()) return [dir];
|
|
116
|
+
} catch {
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
78
119
|
const queue = [dir];
|
|
79
120
|
while (queue.length && result.length < maxFiles) {
|
|
80
121
|
const current = queue.shift();
|
|
@@ -93,7 +134,7 @@ function walkFiles(dir, { globPattern, dot = false, maxFiles = 2000 } = {}) {
|
|
|
93
134
|
return result;
|
|
94
135
|
}
|
|
95
136
|
|
|
96
|
-
async function grepWithNode({ pattern, searchPath, glob, caseSensitive, context = 0, limit }) {
|
|
137
|
+
async function grepWithNode({ pattern, searchPath, searchPathIsFile, glob, caseSensitive, context = 0, limit }) {
|
|
97
138
|
const re = new RegExp(pattern, caseSensitive ? "" : "i");
|
|
98
139
|
const files = walkFiles(searchPath, { globPattern: glob, dot: false });
|
|
99
140
|
const matches = [];
|
|
@@ -121,7 +162,7 @@ async function grepWithNode({ pattern, searchPath, glob, caseSensitive, context
|
|
|
121
162
|
|
|
122
163
|
if (fileMatches.length > 0) {
|
|
123
164
|
matches.push({
|
|
124
|
-
file:
|
|
165
|
+
file: fileLabel(searchPath, file, searchPathIsFile),
|
|
125
166
|
absolute: file,
|
|
126
167
|
matches: fileMatches,
|
|
127
168
|
});
|
|
@@ -144,8 +185,20 @@ export async function grepFiles({
|
|
|
144
185
|
cwd,
|
|
145
186
|
}) {
|
|
146
187
|
if (!pattern) throw new Error("pattern required");
|
|
147
|
-
|
|
148
|
-
|
|
188
|
+
// A relative `path` is relative TO `cwd` — the caller's project, when one was
|
|
189
|
+
// sent. It used to be `path.resolve(searchPathArg || cwd || …)`, where any
|
|
190
|
+
// path at all short-circuited `cwd` and the relative one then resolved against
|
|
191
|
+
// the DAEMON's own directory: an agent searching `work/marketing/…` in its
|
|
192
|
+
// project was answered "path does not exist" with the apx checkout prefixed to
|
|
193
|
+
// it. An absolute path is unaffected — path.resolve ignores the base then.
|
|
194
|
+
const basePath = path.resolve(cwd || process.cwd(), searchPathArg || ".");
|
|
195
|
+
// Answers "does it exist" and "is it one file" in a single stat, and both
|
|
196
|
+
// backends are told: searching ONE file is a normal thing to ask for, and
|
|
197
|
+
// each of them gets it wrong in its own way without being told. See
|
|
198
|
+
// walkFiles() and fileLabel().
|
|
199
|
+
let baseStat;
|
|
200
|
+
try { baseStat = fs.statSync(basePath); } catch { throw new Error(`path does not exist: ${basePath}`); }
|
|
201
|
+
const baseIsFile = baseStat.isFile();
|
|
149
202
|
|
|
150
203
|
const lim = Math.min(parseInt(limit, 10) || 100, 1000);
|
|
151
204
|
const ctx = Math.min(parseInt(context, 10) || 0, 10);
|
|
@@ -158,6 +211,7 @@ export async function grepFiles({
|
|
|
158
211
|
result = await grepWithRg({
|
|
159
212
|
pattern,
|
|
160
213
|
searchPath: basePath,
|
|
214
|
+
searchPathIsFile: baseIsFile,
|
|
161
215
|
glob,
|
|
162
216
|
caseSensitive: !!case_sensitive,
|
|
163
217
|
context: ctx,
|
|
@@ -167,6 +221,7 @@ export async function grepFiles({
|
|
|
167
221
|
result = await grepWithNode({
|
|
168
222
|
pattern,
|
|
169
223
|
searchPath: basePath,
|
|
224
|
+
searchPathIsFile: baseIsFile,
|
|
170
225
|
glob,
|
|
171
226
|
caseSensitive: !!case_sensitive,
|
|
172
227
|
context: ctx,
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
//
|
|
8
8
|
// The catalog itself lives in ./catalog.js and the in-process executors in
|
|
9
9
|
// ./inline-handlers.js. This module only indexes and serves them.
|
|
10
|
-
import { TOOL_DEFINITIONS } from "./catalog.js";
|
|
10
|
+
import { TOOL_DEFINITIONS, DEFAULT_AGENT_TOOLS } from "./catalog.js";
|
|
11
11
|
import { makeInlineHandlers } from "./inline-handlers.js";
|
|
12
12
|
|
|
13
13
|
|
|
@@ -22,6 +22,8 @@ function listTools() {
|
|
|
22
22
|
name,
|
|
23
23
|
description,
|
|
24
24
|
category,
|
|
25
|
+
// Whether a new agent gets this tool by default (see DEFAULT_AGENT_TOOLS).
|
|
26
|
+
default_for_agents: DEFAULT_AGENT_TOOLS.includes(name),
|
|
25
27
|
schema_url: `/api/tools/${name}`,
|
|
26
28
|
endpoint_method: endpoint?.method || "inline",
|
|
27
29
|
endpoint_path: endpoint?.path || null,
|
package/src/core/i18n/en.js
CHANGED
|
@@ -1,11 +1,42 @@
|
|
|
1
1
|
// Backend strings — English (en). This is also the default fallback locale.
|
|
2
2
|
export default {
|
|
3
|
-
|
|
3
|
+
// Floors, not copy: the model writes the ack and the closing itself
|
|
4
|
+
// (core/agent/author-line.js); these go out only when it couldn't. The two
|
|
5
|
+
// `reply.*` ones are every surface's floor, not just Telegram's — see
|
|
6
|
+
// core/agent/closing-floor.js.
|
|
4
7
|
"telegram.reset_ack": "Done, context cleared. Starting fresh. What do you need?",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
8
|
+
"reply.fallback_done": "Done.",
|
|
9
|
+
"reply.fallback_continue": "Made some headway. Want me to keep going?",
|
|
7
10
|
// Host-emitted error floors (the model itself failed, so it can't author
|
|
8
11
|
// these — they stay templated, but at least follow the user's language).
|
|
9
12
|
"telegram.error_agent": "⚠️ The agent hit an error ({error}).",
|
|
10
13
|
"telegram.error_generic": "⚠️ Couldn't reply right now ({error}).",
|
|
14
|
+
// Mobility — the buttons and one-line reminders the DAEMON sends while a trip
|
|
15
|
+
// is running (core/mobility/geofence.js). Host-emitted, not model-authored:
|
|
16
|
+
// a driver reads these at a glance, so they stay fixed and short.
|
|
17
|
+
"mobility.near": "You're near {place}, {distance} away.",
|
|
18
|
+
"mobility.near_bare": "You're {distance} away.",
|
|
19
|
+
"mobility.unit_m": "metres",
|
|
20
|
+
"mobility.unit_km": "kilometres",
|
|
21
|
+
"mobility.task": "Task",
|
|
22
|
+
"mobility.address": "Address",
|
|
23
|
+
// The native card's four answers, in the order they are offered. No emoji:
|
|
24
|
+
// Android Auto hands the card to Assistant, which reads it out loud.
|
|
25
|
+
"mobility.navigate": "Navigate now",
|
|
26
|
+
"mobility.add_stop": "Add to route",
|
|
27
|
+
"mobility.later": "Later",
|
|
28
|
+
"mobility.dismiss": "Not now",
|
|
29
|
+
"mobility.ack_dismissed": "Fine — nothing more about this one on this trip.",
|
|
30
|
+
"mobility.going": "I'll go",
|
|
31
|
+
"mobility.not_today": "Not today",
|
|
32
|
+
"mobility.alert_next": "Tell me at the next one",
|
|
33
|
+
"mobility.followup": "Did you make it to {place}?",
|
|
34
|
+
"mobility.done": "Done",
|
|
35
|
+
"mobility.still_open": "Not yet",
|
|
36
|
+
"mobility.ack_going": "Noted — you're going.",
|
|
37
|
+
"mobility.ack_skipped": "Fine, not today.",
|
|
38
|
+
"mobility.ack_next": "Fine, I'll tell you at the next one.",
|
|
39
|
+
"mobility.ack_done": "Closed the task.",
|
|
40
|
+
"mobility.ack_still_open": "Leaving it open.",
|
|
41
|
+
"mobility.transcript": "[Transcript]",
|
|
11
42
|
};
|
package/src/core/i18n/es.js
CHANGED
|
@@ -1,13 +1,45 @@
|
|
|
1
1
|
// Backend strings — Spanish (es). Keep this file flat dot-paths only; the
|
|
2
2
|
// web admin has its own i18n tree.
|
|
3
3
|
export default {
|
|
4
|
-
//
|
|
5
|
-
|
|
4
|
+
// Pisos, no copy: el ack y los cierres los escribe el modelo
|
|
5
|
+
// (core/agent/author-line.js) y estos textos salen solo si no pudo. Los dos
|
|
6
|
+
// `reply.*` son el piso de TODAS las superficies, no solo el de Telegram —
|
|
7
|
+
// ver core/agent/closing-floor.js.
|
|
6
8
|
"telegram.reset_ack": "Listo, contexto borrado. Arranco un hilo nuevo, ¿qué necesitás?",
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
+
"reply.fallback_done": "Listo.",
|
|
10
|
+
"reply.fallback_continue": "Avancé con eso. ¿Querés que siga?",
|
|
9
11
|
// Pisos de error emitidos por el host (el modelo falló, no puede redactarlos
|
|
10
12
|
// él mismo — quedan fijos, pero al menos respetan el idioma del usuario).
|
|
11
13
|
"telegram.error_agent": "⚠️ El agente tuvo un error ({error}).",
|
|
12
14
|
"telegram.error_generic": "⚠️ No pude responder ahora mismo ({error}).",
|
|
15
|
+
// Movilidad — los botones y recordatorios de una línea que manda el DAEMON
|
|
16
|
+
// durante un viaje (core/mobility/geofence.js). Los emite el host, no el
|
|
17
|
+
// modelo: se leen manejando, así que quedan fijos y cortos.
|
|
18
|
+
"mobility.near": "Estás cerca de {place}, a {distance}.",
|
|
19
|
+
// Sin lugar con nombre propio: el título ya lo dijo, así que la línea sólo
|
|
20
|
+
// aporta la distancia.
|
|
21
|
+
"mobility.near_bare": "Estás a {distance}.",
|
|
22
|
+
"mobility.unit_m": "metros",
|
|
23
|
+
"mobility.unit_km": "kilómetros",
|
|
24
|
+
"mobility.task": "Tarea",
|
|
25
|
+
"mobility.address": "Dirección",
|
|
26
|
+
// Las cuatro respuestas de la tarjeta nativa, en el orden en que se ofrecen.
|
|
27
|
+
// Sin emojis: Android Auto se las da al Assistant y las lee en voz alta.
|
|
28
|
+
"mobility.navigate": "Navegar ahora",
|
|
29
|
+
"mobility.add_stop": "Sumar a la ruta",
|
|
30
|
+
"mobility.later": "Para después",
|
|
31
|
+
"mobility.dismiss": "No ahora",
|
|
32
|
+
"mobility.ack_dismissed": "Listo, no te aviso más de esta en este viaje.",
|
|
33
|
+
"mobility.going": "Voy",
|
|
34
|
+
"mobility.not_today": "Hoy no",
|
|
35
|
+
"mobility.alert_next": "Avisar en la siguiente",
|
|
36
|
+
"mobility.followup": "¿Pasaste por {place}?",
|
|
37
|
+
"mobility.done": "Hecho",
|
|
38
|
+
"mobility.still_open": "Todavía no",
|
|
39
|
+
"mobility.ack_going": "Anotado: vas.",
|
|
40
|
+
"mobility.ack_skipped": "Listo, hoy no.",
|
|
41
|
+
"mobility.ack_next": "Listo, te aviso en la siguiente.",
|
|
42
|
+
"mobility.ack_done": "Cerré la tarea.",
|
|
43
|
+
"mobility.ack_still_open": "La dejo abierta.",
|
|
44
|
+
"mobility.transcript": "[Transcripción]",
|
|
13
45
|
};
|
package/src/core/i18n/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
// Backend i18n for daemon-side messages (
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
1
|
+
// Backend i18n for daemon-side messages (command acks, error floors, any other
|
|
2
|
+
// user-facing string emitted from the host/core layer). The web admin has its
|
|
3
|
+
// own dict tree under src/interfaces/web/src/i18n/ — that one stays separate,
|
|
4
|
+
// this is for what the daemon sends back.
|
|
5
5
|
//
|
|
6
6
|
// Usage:
|
|
7
7
|
// import { t, resolveLang } from "#core/i18n/index.js";
|
|
8
8
|
// const lang = resolveLang(globalConfig);
|
|
9
|
-
// await sendTelegram(t("telegram.
|
|
9
|
+
// await sendTelegram(t("telegram.reset_ack", { lang }));
|
|
10
10
|
//
|
|
11
11
|
// Adding a key: pick a clear dotted path, add it to every locale dict, and
|
|
12
12
|
// the unit test in tests/i18n.test.js will assert parity (no missing
|
package/src/core/i18n/pt.js
CHANGED
|
@@ -1,11 +1,40 @@
|
|
|
1
1
|
// Backend strings — Portuguese (pt).
|
|
2
2
|
export default {
|
|
3
|
-
|
|
3
|
+
// Pisos, não copy: o ack e o fecho são escritos pelo modelo
|
|
4
|
+
// (core/agent/author-line.js); estes só saem quando ele não conseguiu. Os
|
|
5
|
+
// dois `reply.*` são o piso de todas as superfícies, não só o do Telegram —
|
|
6
|
+
// ver core/agent/closing-floor.js.
|
|
4
7
|
"telegram.reset_ack": "Pronto, contexto limpo. Começando do zero — do que você precisa?",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
8
|
+
"reply.fallback_done": "Pronto.",
|
|
9
|
+
"reply.fallback_continue": "Avancei com isso. Quer que eu continue?",
|
|
7
10
|
// Pisos de erro emitidos pelo host (o modelo falhou, não pode redigi-los —
|
|
8
11
|
// ficam fixos, mas ao menos seguem o idioma do usuário).
|
|
9
12
|
"telegram.error_agent": "⚠️ O agente encontrou um erro ({error}).",
|
|
10
13
|
"telegram.error_generic": "⚠️ Não consegui responder agora ({error}).",
|
|
14
|
+
// Mobilidade — os botões e lembretes de uma linha que o DAEMON envia durante
|
|
15
|
+
// uma viagem (core/mobility/geofence.js). Emitidos pelo host, não pelo
|
|
16
|
+
// modelo: são lidos dirigindo, então ficam fixos e curtos.
|
|
17
|
+
"mobility.near": "Você está perto de {place}, a {distance}.",
|
|
18
|
+
"mobility.near_bare": "Você está a {distance}.",
|
|
19
|
+
"mobility.unit_m": "metros",
|
|
20
|
+
"mobility.unit_km": "quilômetros",
|
|
21
|
+
"mobility.task": "Tarefa",
|
|
22
|
+
"mobility.address": "Endereço",
|
|
23
|
+
"mobility.navigate": "Navegar agora",
|
|
24
|
+
"mobility.add_stop": "Adicionar parada",
|
|
25
|
+
"mobility.later": "Mais tarde",
|
|
26
|
+
"mobility.dismiss": "Agora não",
|
|
27
|
+
"mobility.ack_dismissed": "Certo, não aviso mais sobre esta nesta viagem.",
|
|
28
|
+
"mobility.going": "Vou",
|
|
29
|
+
"mobility.not_today": "Hoje não",
|
|
30
|
+
"mobility.alert_next": "Avisar na próxima",
|
|
31
|
+
"mobility.followup": "Você passou em {place}?",
|
|
32
|
+
"mobility.done": "Feito",
|
|
33
|
+
"mobility.still_open": "Ainda não",
|
|
34
|
+
"mobility.ack_going": "Anotado: você vai.",
|
|
35
|
+
"mobility.ack_skipped": "Certo, hoje não.",
|
|
36
|
+
"mobility.ack_next": "Certo, aviso na próxima.",
|
|
37
|
+
"mobility.ack_done": "Fechei a tarefa.",
|
|
38
|
+
"mobility.ack_still_open": "Deixo em aberto.",
|
|
39
|
+
"mobility.transcript": "[Transcrição]",
|
|
11
40
|
};
|
|
@@ -20,7 +20,7 @@ export function readIdentity() {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
// Resolve the super-agent's DISPLAY name (the persona shown to users). Order:
|
|
23
|
-
// identity.json
|
|
23
|
+
// identity.json agent_name → super_agent.name → "APX". This is the single
|
|
24
24
|
// source of truth for "what is the super-agent called"; callers must not read
|
|
25
25
|
// super_agent.name directly. The stable id for storage is SUPERAGENT_ACTOR_ID.
|
|
26
26
|
export function resolveAgentName(globalConfig = {}) {
|
|
@@ -32,6 +32,19 @@ export function resolveAgentName(globalConfig = {}) {
|
|
|
32
32
|
);
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
// Shown when the owner has not told the agent their name. Neutral on purpose:
|
|
36
|
+
// a name written into a shipped prompt is ONE install's owner introducing
|
|
37
|
+
// himself in everybody else's.
|
|
38
|
+
export const OWNER_DISPLAY_FALLBACK = "the owner";
|
|
39
|
+
|
|
40
|
+
// Resolve the OWNER's display name — the person the super-agent works for —
|
|
41
|
+
// from identity.json (`owner_name`, written by `set_identity`). Every prompt
|
|
42
|
+
// that addresses the owner by name goes through here; none may hardcode one.
|
|
43
|
+
export function resolveOwnerName() {
|
|
44
|
+
const identity = readIdentity();
|
|
45
|
+
return identity?.owner_name || OWNER_DISPLAY_FALLBACK;
|
|
46
|
+
}
|
|
47
|
+
|
|
35
48
|
export function writeIdentity(fields) {
|
|
36
49
|
const existing = readIdentity() || {};
|
|
37
50
|
const now = new Date().toISOString();
|