From 4c3acfa468e26608493698ec04b80c40c7298bd4 Mon Sep 17 00:00:00 2001 From: EndlessCCL Date: Fri, 23 Oct 2026 11:44:33 +0800 Subject: [PATCH] fix(inbox): improve agent reliability and image handling Signed-off-by: EndlessCCL --- .env.example | 3 + .../WidgetEmbed/WidgetEmbedChat.vue | 250 +++++++++++++----- app/composables/useApiFetch.ts | 4 +- app/composables/useDashboardAccess.ts | 20 ++ app/composables/useDashboardNav.ts | 3 +- app/composables/usePermission.ts | 6 +- app/composables/useWidgetEmbed.ts | 27 +- app/composables/useWidgetResume.ts | 2 +- app/layouts/dashboard.vue | 19 +- app/lib/auth-client.ts | 3 +- app/middleware/admin.ts | 11 +- app/pages/dashboard/inbox.vue | 10 +- app/pages/dashboard/index.vue | 8 +- app/pages/widget/embed.vue | 2 + app/utils/chat-image.ts | 111 ++++++++ app/utils/permission-error.ts | 12 + app/workers/heic.ts | 8 + docs/configuration.md | 117 +++++++- i18n/locales/en.json | 25 +- i18n/locales/zh.json | 25 +- package.json | 1 + pnpm-lock.yaml | 24 +- scripts/test-agent-reply-timeout-browser.mjs | 50 ++++ scripts/test-agent-upload-browser.mjs | 61 +++++ scripts/test-handoff-refresh-browser.mjs | 54 ++++ scripts/test-inbox-reliability-browser.mjs | 129 +++++++++ scripts/test-svg-upload-browser.mjs | 56 ++++ server/api/admin/posts/index.get.ts | 2 +- server/api/upload.post.ts | 26 +- server/api/widget/config.get.ts | 3 + server/lib/agent/agent.ts | 112 ++++++-- server/lib/agent/chat.ts | 178 ++++++++++--- server/lib/agent/conversations.ts | 21 +- server/lib/agent/dependency-timeout.ts | 18 ++ server/lib/agent/errors.ts | 16 ++ server/lib/agent/handoff-protocol.ts | 47 ++++ server/lib/agent/help-search.ts | 8 +- server/lib/agent/history.ts | 3 +- server/lib/agent/image-batch-limits.ts | 16 ++ server/lib/agent/image-batches.ts | 114 ++++++++ server/lib/agent/image-references.ts | 29 ++ server/lib/agent/images.ts | 14 + server/lib/agent/memory-store.ts | 52 ++++ server/lib/agent/run-activity.ts | 28 ++ server/lib/agent/run-monitor.ts | 41 +++ server/lib/agent/runtime.ts | 15 +- server/lib/agent/stream-heartbeat.ts | 19 ++ server/lib/agent/stream.ts | 6 +- server/lib/agent/timing.ts | 4 + server/lib/agent/tools.ts | 37 ++- server/lib/inbox/email-context.ts | 20 ++ server/lib/inbox/handoff-email.ts | 91 +++++++ server/lib/inbox/http.ts | 2 +- server/lib/inbox/service.ts | 20 +- server/lib/inbox/tasks.ts | 8 +- server/lib/inbox/tick.ts | 6 + server/utils/auth.ts | 2 +- server/utils/email-templates.ts | 20 ++ server/utils/embedding.ts | 7 +- server/utils/similar.ts | 3 +- shared/agent/content.ts | 10 +- shared/agent/images.ts | 19 ++ shared/agent/sse.ts | 13 +- shared/auth/dashboard.ts | 22 ++ shared/auth/permissions.ts | 7 +- shared/inbox/state.ts | 20 +- tests/agent-core.test.ts | 41 +++ tests/agent-v1.test.ts | 4 +- tests/chat-images.test.ts | 39 +++ tests/dependency-timeout.test.ts | 24 ++ tests/handoff-email-template.test.ts | 23 ++ tests/handoff-protocol.test.ts | 36 +++ tests/handoff-recovery.test.ts | 46 ++++ tests/handoff-summary.test.ts | 40 +++ tests/handoff-visibility.test.ts | 39 +++ tests/image-batches-provider.test.ts | 95 +++++++ tests/image-batches.test.ts | 51 ++++ tests/image-message-budget.test.ts | 91 +++++++ tests/image-upload-budget.test.ts | 13 + tests/inbox-access.test.ts | 22 ++ tests/inbox-handoff-email.test.ts | 108 ++++++++ tests/inbox.test.ts | 69 ++++- tests/run-activity.test.ts | 65 +++++ tests/run-monitor.test.ts | 17 ++ tests/stream-heartbeat.test.ts | 51 ++++ 85 files changed, 2736 insertions(+), 258 deletions(-) create mode 100644 app/composables/useDashboardAccess.ts create mode 100644 app/utils/chat-image.ts create mode 100644 app/utils/permission-error.ts create mode 100644 app/workers/heic.ts create mode 100644 scripts/test-agent-reply-timeout-browser.mjs create mode 100644 scripts/test-agent-upload-browser.mjs create mode 100644 scripts/test-handoff-refresh-browser.mjs create mode 100644 scripts/test-inbox-reliability-browser.mjs create mode 100644 scripts/test-svg-upload-browser.mjs create mode 100644 server/lib/agent/dependency-timeout.ts create mode 100644 server/lib/agent/errors.ts create mode 100644 server/lib/agent/handoff-protocol.ts create mode 100644 server/lib/agent/image-batch-limits.ts create mode 100644 server/lib/agent/image-batches.ts create mode 100644 server/lib/agent/image-references.ts create mode 100644 server/lib/agent/images.ts create mode 100644 server/lib/agent/memory-store.ts create mode 100644 server/lib/agent/run-activity.ts create mode 100644 server/lib/agent/run-monitor.ts create mode 100644 server/lib/agent/stream-heartbeat.ts create mode 100644 server/lib/agent/timing.ts create mode 100644 server/lib/inbox/handoff-email.ts create mode 100644 shared/agent/images.ts create mode 100644 shared/auth/dashboard.ts create mode 100644 tests/chat-images.test.ts create mode 100644 tests/dependency-timeout.test.ts create mode 100644 tests/handoff-email-template.test.ts create mode 100644 tests/handoff-protocol.test.ts create mode 100644 tests/handoff-recovery.test.ts create mode 100644 tests/handoff-summary.test.ts create mode 100644 tests/handoff-visibility.test.ts create mode 100644 tests/image-batches-provider.test.ts create mode 100644 tests/image-batches.test.ts create mode 100644 tests/image-message-budget.test.ts create mode 100644 tests/image-upload-budget.test.ts create mode 100644 tests/inbox-access.test.ts create mode 100644 tests/inbox-handoff-email.test.ts create mode 100644 tests/run-activity.test.ts create mode 100644 tests/run-monitor.test.ts create mode 100644 tests/stream-heartbeat.test.ts diff --git a/.env.example b/.env.example index 778a09d8..c01a9dec 100644 --- a/.env.example +++ b/.env.example @@ -136,3 +136,6 @@ SYSTEM_ADMIN_EMAILS=admin@example.com # Requires pgvector migrations and OPENAI_API_KEY. Reuses the existing Inbox # delayed-delivery adapters and recovery schedule; no extra queue/cron/secret. HELP_VECTOR_SEARCH=false + +# Optional sanitized agent stage timings (no image/message/prompt bodies). +AGENT_TIMING=false diff --git a/app/components/WidgetEmbed/WidgetEmbedChat.vue b/app/components/WidgetEmbed/WidgetEmbedChat.vue index 2a317eb6..a3d12c6c 100644 --- a/app/components/WidgetEmbed/WidgetEmbedChat.vue +++ b/app/components/WidgetEmbed/WidgetEmbedChat.vue @@ -1,5 +1,7 @@