@xopcai/xopc 0.0.277 → 0.0.282
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/dist/browser-ext/_locales/en/messages.json +34 -4
- package/dist/browser-ext/_locales/zh_CN/messages.json +34 -4
- package/dist/browser-ext/dist/assets/{auth-ClQTK565.js → auth-DB30ywek.js} +18 -53
- package/dist/browser-ext/dist/assets/pcm-capture-worklet-CGN9Mlhg.js +39 -0
- package/dist/browser-ext/dist/assets/{sidepanel-CeGqObOa.css → sidepanel-BbSQr-6P.css} +40 -6
- package/dist/browser-ext/dist/background.js +1 -1
- package/dist/browser-ext/dist/sidepanel.html +2 -2
- package/dist/browser-ext/dist/sidepanel.js +1219 -191
- package/dist/browser-ext/manifest.json +2 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store-SJZ5fS17.js → activity-store-iPtG94qr.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Cavbls0E.js → agent-avatar-dicebear-Cny5rATT.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-OyQ8OVZv.js +1 -0
- package/dist/gateway/static/root/assets/{agents-DlDTItrB.js → agents-DJeh_Ewo.js} +1 -1
- package/dist/gateway/static/root/assets/{api-CnJAVHBu.js → api-KMJzMqvZ.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-5gS0_LWl.js → app-management-settings-panel-ZqQKaZEI.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-DHzZCJon.js → appearance-settings-CfXsQkKO.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-k-QnVhKW.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-Ia98yZe3.js → archive-plugin-BrW53Hap.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-DiWW88c8.js → attachment-load-DkfFWHiS.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-BuhTeGRJ.js → automations-page-e-5we6kD.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-DPnlkws1.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-DDD48cJv.js → binary-plugins-CWIswfXA.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-0AWVCD3F.js → block-editor-CfeF1OmA.js} +3 -3
- package/dist/gateway/static/root/assets/{browser-automation-inputs-DcVLoIzc.js → browser-automation-inputs-BTIufVbM.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-BKOYX5xV.js → browser-automations-page-DnsuWKRu.js} +2 -2
- package/dist/gateway/static/root/assets/browser-settings-page-C8xyhnxx.js +8 -0
- package/dist/gateway/static/root/assets/capabilities-settings-panel-CBllOLTT.js +8 -0
- package/dist/gateway/static/root/assets/channels-settings-C-A-VUE2.js +1 -0
- package/dist/gateway/static/root/assets/{channels-status-swr-BTT2sIGg.js → channels-status-swr-DMYQNs-J.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-CW9Byi8V.js → chat-terminal-dock-C_Fw1R3A.js} +2 -2
- package/dist/gateway/static/root/assets/connectors-page-CtsMo3H4.js +2 -0
- package/dist/gateway/static/root/assets/{date-picker-gdYmKC8W.js → date-picker-CPFxjTrN.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-40BYmiMc.js → dependency-picker-C_5KqzjI.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-By1z6tKE.js → desktop-pet-DLJsC5D6.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-ByjJqx9H.js → desktop-pet-settings-BdI1iSgz.js} +1 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-BnvPLhc9.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-DQO65KbM.js → extension-debug-page-BNS_TkZQ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-Db32jip6.js → extension-page-DMSDZ7Mb.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-CL8Wx8lf.js → extension-settings-page-CeGCWMt0.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-config-swr-Cpmyrr6j.js +1 -0
- package/dist/gateway/static/root/assets/gateway-settings-DKOTYUma.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-CVTa5HSS.js → gateway-startup-retry-DoiPeb65.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-CRXWu2q6.js → heartbeat-settings-gsdL_Yij.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-CbeAdS1T.js +1 -0
- package/dist/gateway/static/root/assets/{image-generation-api-DtMRG1oF.js → image-generation-api-CqjHWl2T.js} +1 -1
- package/dist/gateway/static/root/assets/index-B_Sg5BKz.css +2 -0
- package/dist/gateway/static/root/assets/index-enFXJJCU.js +74 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CjehhHPz.js → keyboard-shortcuts-settings-CCLtJ8s8.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-DzC6SrXj.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-CrIdaTrK.js → local-apps-page-3LdgP3NO.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-BkJ7g35d.js → locale-store-1urrBBCQ.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-FfSwV_VH.js → logs-page-DHClKtm6.js} +2 -2
- package/dist/gateway/static/root/assets/{management-settings-BakV5aOw.js → management-settings-BaCo9Nuo.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-DF3aJP_5.js → markdown-view-BZmcFIWa.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-Blv9U6Jp.js → media-plugins-BMjJppvG.js} +1 -1
- package/dist/gateway/static/root/assets/messages-DYFcjtmG.js +3 -0
- package/dist/gateway/static/root/assets/note-detail-panel-hYO2jNhL.js +5 -0
- package/dist/gateway/static/root/assets/notes-page-BT66x22W.js +8 -0
- package/dist/gateway/static/root/assets/{page-tabs-BQfVtLLC.js → page-tabs-BCszXX_F.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-kjHFiO81.js → preview-open-alternatives-CyM0sanh.js} +1 -1
- package/dist/gateway/static/root/assets/proactive-page-CVDGA5sB.js +1 -0
- package/dist/gateway/static/root/assets/{product-open-page-BazdmFYo.js → product-open-page-lXAbj85Z.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-Bp6TAMPM.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-UhOIiDcg.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-CTq8EECj.js → registry-api-CxQstD00.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-DJIkMFT4.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-BhJlopSW.js → runtime-tools-settings-panel-BUFCgRdZ.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-cxoO_5I1.js → schema-form-B01ksA8M.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-CQOAwPDt.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-CFuqbGI-.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-BiRTWiBi.js → settings-form-section-DvnjZBa3.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-D-Cb71pq.js → settings-page-DZRkpbCh.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-DVaEiAVY.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-DciHfTay.js → share-preview-page-vz0UK56q.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-XiCqMDAe.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-C3D8WanU.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-CxMWwR6A.js +2 -0
- package/dist/gateway/static/root/assets/{skills-page.utils-CU7PALQB.js → skills-page.utils-BryVNYll.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-GpjNbqvM.js → system-settings-panel-mKFDe6aZ.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-Cb0RZNcJ.js +1 -0
- package/dist/gateway/static/root/assets/{theme-store-mV6Cm2vj.js → theme-store-Dc5s20V3.js} +1 -1
- package/dist/gateway/static/root/assets/tunnel-api-FcI3wKy3.js +1 -0
- package/dist/gateway/static/root/assets/{use-autosave-LvCiBidm.js → use-autosave-CDgdtjTC.js} +1 -1
- package/dist/gateway/static/root/assets/user-model-page-Cnshc-Un.js +2 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-BlGysZxj.js → voice-api-key-field-Ce8cb5mN.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-D3DdcH4H.js → voice-config-api-Mk78BrpP.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-DvIQOR5x.js → work-discovery-overlay-CacFTtXe.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-JIp60bXT.js → workflow-run-setup-panel-V-5HuEUq.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-1OJimIfo.js +6 -0
- package/dist/gateway/static/root/index.html +10 -11
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/discussions.js +17 -0
- package/dist/packages/gateway-contract/src/proactive.js +4 -2
- package/dist/src/agent/agent-manager.js +4 -4
- package/dist/src/agent/background-review/run-background-review.js +1 -1
- package/dist/src/agent/commands/command-isolation.d.ts +1 -0
- package/dist/src/agent/commands/command-isolation.js +17 -1
- package/dist/src/agent/commands/commandMounts.d.ts +2 -0
- package/dist/src/agent/commands/commandMounts.js +32 -0
- package/dist/src/agent/context/project-context.d.ts +1 -0
- package/dist/src/agent/context/project-context.js +12 -4
- package/dist/src/agent/embedded/model-runtime.js +1 -1
- package/dist/src/agent/embedded/run-for-session.js +1 -1
- package/dist/src/agent/image/tool-model-config.js +1 -1
- package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +1 -1
- package/dist/src/agent/sandbox/command-validator.js +0 -20
- package/dist/src/agent/sandbox/exec-policy.d.ts +1 -0
- package/dist/src/agent/sandbox/exec-policy.js +4 -4
- package/dist/src/agent/sandbox/fileAccess.d.ts +7 -0
- package/dist/src/agent/sandbox/fileAccess.js +100 -0
- package/dist/src/agent/sandbox/path-policy.d.ts +2 -0
- package/dist/src/agent/sandbox/path-policy.js +54 -17
- package/dist/src/agent/sandbox/sanitize-env-vars.js +10 -9
- package/dist/src/agent/service.js +2 -2
- package/dist/src/agent/session/session-inspector.js +1 -1
- package/dist/src/agent/skills/hub-lock.js +1 -1
- package/dist/src/agent/source-context/task-context.d.ts +3 -0
- package/dist/src/agent/source-context/task-context.js +24 -0
- package/dist/src/agent/source-context/types.d.ts +2 -2
- package/dist/src/agent/source-context/types.js +1 -1
- package/dist/src/agent/tasks/task-judge-service.js +3 -3
- package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
- package/dist/src/agent/tool-manuals/xopc-use.js +1 -0
- package/dist/src/agent/tools/apply-patch.js +25 -38
- package/dist/src/agent/tools/create-share-tool.js +11 -3
- package/dist/src/agent/tools/exec-command.js +2 -1
- package/dist/src/agent/tools/find.js +5 -3
- package/dist/src/agent/tools/grep.js +21 -4
- package/dist/src/agent/tools/image-generate-tool.js +3 -4
- package/dist/src/agent/tools/list-dir.js +2 -1
- package/dist/src/agent/tools/managed-job-tool.js +1 -0
- package/dist/src/agent/tools/publish-artifacts.js +4 -3
- package/dist/src/agent/tools/read.js +8 -5
- package/dist/src/agent/tools/repository-search.d.ts +2 -0
- package/dist/src/agent/tools/repository-search.js +51 -7
- package/dist/src/agent/tools/review-workspace.js +76 -10
- package/dist/src/agent/tools/send-media.js +4 -3
- package/dist/src/agent/tools/tool-paths.js +3 -1
- package/dist/src/agent/tools/write.js +4 -17
- package/dist/src/agent/tools/xopc-use-tool.js +2 -2
- package/dist/src/agent-config/schema.d.ts +24 -0
- package/dist/src/agent-config/schema.js +2 -1
- package/dist/src/ai-assist/text-assist.js +1 -1
- package/dist/src/auth/credentials.js +2 -2
- package/dist/src/auth/oauth/xopc-cloud.js +1 -1
- package/dist/src/auth/profiles/store.js +1 -1
- package/dist/src/auth/sync-provider-auth.js +2 -2
- package/dist/src/browser/providers/browser-ext-install.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +21 -20
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/config/index.js +4 -4
- package/dist/src/config/loader.js +2 -2
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/config/schema.d.ts +16 -0
- package/dist/src/discussions/action-tasks.d.ts +21 -0
- package/dist/src/discussions/action-tasks.js +93 -0
- package/dist/src/discussions/analyzer.d.ts +21 -1
- package/dist/src/discussions/analyzer.js +229 -62
- package/dist/src/discussions/audio-repair.d.ts +8 -0
- package/dist/src/discussions/audio-repair.js +41 -0
- package/dist/src/discussions/edits.d.ts +22 -0
- package/dist/src/discussions/edits.js +81 -0
- package/dist/src/discussions/errors.d.ts +4 -0
- package/dist/src/discussions/errors.js +10 -0
- package/dist/src/discussions/export.d.ts +2 -0
- package/dist/src/discussions/export.js +23 -0
- package/dist/src/discussions/index.js +3 -2
- package/dist/src/discussions/live-worker.js +1 -1
- package/dist/src/discussions/organizer-worker.js +14 -5
- package/dist/src/discussions/organizer.d.ts +1 -1
- package/dist/src/discussions/organizer.js +60 -24
- package/dist/src/discussions/reconcile.d.ts +22 -0
- package/dist/src/discussions/reconcile.js +55 -0
- package/dist/src/discussions/recording.d.ts +9 -0
- package/dist/src/discussions/recording.js +219 -0
- package/dist/src/discussions/recordingJobs.d.ts +14 -0
- package/dist/src/discussions/recordingJobs.js +69 -0
- package/dist/src/discussions/repository.d.ts +4 -2
- package/dist/src/discussions/repository.js +15 -10
- package/dist/src/discussions/revisions.d.ts +12 -0
- package/dist/src/discussions/revisions.js +36 -0
- package/dist/src/discussions/sealer.d.ts +1 -0
- package/dist/src/discussions/sealer.js +61 -11
- package/dist/src/discussions/service.d.ts +16 -15
- package/dist/src/discussions/service.js +177 -91
- package/dist/src/discussions/types.d.ts +4 -139
- package/dist/src/discussions/types.js +1 -11
- package/dist/src/extensions/lockfile.js +1 -1
- package/dist/src/files/file-service.d.ts +1 -0
- package/dist/src/files/file-service.js +77 -0
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/chat-stream/mapper.js +2 -2
- package/dist/src/gateway/file-path-classifier.js +1 -1
- package/dist/src/gateway/hono/app.js +3 -2
- package/dist/src/gateway/hono/lib/config-payload.d.ts +1 -0
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/lib/static-ui.js +1 -0
- package/dist/src/gateway/hono/routes/context-sources.js +1 -2
- package/dist/src/gateway/hono/routes/discussions.js +126 -19
- package/dist/src/gateway/hono/routes/files.js +1 -22
- package/dist/src/gateway/hono/routes/index.js +0 -2
- package/dist/src/gateway/hono/routes/lazy-bundles.js +16 -0
- package/dist/src/gateway/hono/routes/models.js +1 -1
- package/dist/src/gateway/hono/routes/proactive-control.js +2 -36
- package/dist/src/gateway/hono/routes/project-understanding.d.ts +3 -0
- package/dist/src/gateway/hono/routes/project-understanding.js +65 -0
- package/dist/src/gateway/hono/routes/projects.js +20 -4
- package/dist/src/gateway/hono/routes/session-input-handler.d.ts +2 -2
- package/dist/src/gateway/hono/routes/session-input-handler.js +2 -2
- package/dist/src/gateway/hono/routes/shares.js +22 -1
- package/dist/src/gateway/hono/routes/tasks.js +2 -1
- package/dist/src/gateway/hono/routes/work-discovery.d.ts +0 -2
- package/dist/src/gateway/hono/routes/work-discovery.js +2 -16
- package/dist/src/gateway/hono/routes/workflows.js +2 -2
- package/dist/src/gateway/security/gateway-scopes.js +1 -2
- package/dist/src/gateway/service/agent-runner.js +2 -2
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service.d.ts +3 -0
- package/dist/src/gateway/service.js +28 -13
- package/dist/src/knowledge-memory/repository.d.ts +2 -0
- package/dist/src/knowledge-memory/repository.js +3 -1
- package/dist/src/media-understanding/audio-transcription-runner.d.ts +1 -0
- package/dist/src/media-understanding/audio-transcription-runner.js +1 -0
- package/dist/src/media-understanding/runner.js +1 -0
- package/dist/src/media-understanding/types.d.ts +8 -0
- package/dist/src/notes/service.d.ts +3 -1
- package/dist/src/notes/store.d.ts +3 -1
- package/dist/src/notes/store.js +5 -3
- package/dist/src/proactive/experience.d.ts +38 -21
- package/dist/src/proactive/experience.js +113 -12
- package/dist/src/proactive/inbox/cards.js +7 -1
- package/dist/src/proactive/maintenance.js +0 -1
- package/dist/src/proactive/scenarios/control.d.ts +0 -35
- package/dist/src/proactive/scenarios/control.js +7 -53
- package/dist/src/projects/project-store.js +6 -4
- package/dist/src/providers/auth-runtime/resolve-auth.js +1 -1
- package/dist/src/providers/index.js +2 -2
- package/dist/src/providers/model-registry.js +1 -1
- package/dist/src/providers/register-runtime-providers.js +1 -1
- package/dist/src/session/client-history.d.ts +1 -1
- package/dist/src/session/client-history.js +1 -1
- package/dist/src/share/share-store.js +5 -1
- package/dist/src/storage/sqlite/migrations/166_remove_proactive_previews.sql +1 -0
- package/dist/src/storage/sqlite/migrations/167_discussion_recording_chunks.sql +7 -0
- package/dist/src/storage/sqlite/migrations/168_discussion_evidence.sql +16 -0
- package/dist/src/storage/sqlite/migrations/169_discussion_action_tasks.sql +8 -0
- package/dist/src/storage/sqlite/migrations/170_discussion_edits.sql +8 -0
- package/dist/src/storage/sqlite/migrations/171_discussion_recording_jobs.sql +14 -0
- package/dist/src/storage/sqlite/migrations/172_project_understanding.sql +3 -0
- package/dist/src/storage/sqlite/migrations/173_mobile_discussion_source.sql +5 -0
- package/dist/src/storage/sqlite/migrations/__tests__/mobile-discussion-source.test.ts +20 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/tasks/home-query-service.js +2 -2
- package/dist/src/tasks/task-application-service.js +77 -3
- package/dist/src/tasks/task-context-assembler.js +1 -0
- package/dist/src/tasks/task-repository.d.ts +1 -0
- package/dist/src/tasks/task-repository.js +4 -0
- package/dist/src/tui/tui-startup-resources.js +1 -1
- package/dist/src/tui/tui.js +1 -1
- package/dist/src/voice/audio/normalize.js +28 -5
- package/dist/src/voice/stt/transcribe-core.js +1 -0
- package/dist/src/voice/stt/types.d.ts +1 -0
- package/dist/src/work-discovery/analyzer.d.ts +1 -0
- package/dist/src/work-discovery/analyzer.js +28 -22
- package/dist/src/work-discovery/index.js +3 -3
- package/dist/src/work-discovery/investigator.js +1 -1
- package/dist/src/work-discovery/project-understanding.d.ts +7 -0
- package/dist/src/work-discovery/project-understanding.js +38 -0
- package/dist/src/work-discovery/repository.d.ts +3 -1
- package/dist/src/work-discovery/repository.js +18 -5
- package/dist/src/work-discovery/service.d.ts +8 -0
- package/dist/src/work-discovery/service.js +163 -15
- package/dist/src/work-discovery/types.d.ts +2 -0
- package/dist/src/workflows/service/workflow-run-service.js +2 -2
- package/package.json +3 -3
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-DyCyuJpi.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-__yzruGu.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-DaisbmEh.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-C7zjxscU.js +0 -8
- package/dist/gateway/static/root/assets/capabilities-settings-panel-7kZMT1r6.js +0 -8
- package/dist/gateway/static/root/assets/channels-settings-BKUh6hzO.js +0 -1
- package/dist/gateway/static/root/assets/config-reload-event-Bjh2zoKp.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-m8J-F3u8.js +0 -2
- package/dist/gateway/static/root/assets/device-pairing-wizard-CfWQfz7a.js +0 -1
- package/dist/gateway/static/root/assets/gateway-config-swr-cd8owslz.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-wLly-Kc1.js +0 -1
- package/dist/gateway/static/root/assets/home-page-FqgSwpmy.js +0 -1
- package/dist/gateway/static/root/assets/index-5UchbidQ.js +0 -74
- package/dist/gateway/static/root/assets/index-CXF9-BpI.css +0 -2
- package/dist/gateway/static/root/assets/local-app-workbench-page-DtYZa4GK.js +0 -2
- package/dist/gateway/static/root/assets/messages-BGc-OJWg.js +0 -3
- package/dist/gateway/static/root/assets/note-detail-panel-JbvyGdEX.js +0 -5
- package/dist/gateway/static/root/assets/notes-page-Dm7mE2FK.js +0 -8
- package/dist/gateway/static/root/assets/proactive-card-Ap_wfos3.js +0 -1
- package/dist/gateway/static/root/assets/proactive-page-D1lEuanT.js +0 -1
- package/dist/gateway/static/root/assets/project-detail-page-h00lfcVI.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-C2Bo1FAL.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-_bZYAl49.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-F7CHsvPa.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DtZSUX4H.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-VPfBsNVv.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-BS2pnWO0.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DX344nVV.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-BhfKUsv7.js +0 -2
- package/dist/gateway/static/root/assets/task-detail-page-CElcQ9Sh.js +0 -1
- package/dist/gateway/static/root/assets/tunnel-api-Bhi_x_h4.js +0 -1
- package/dist/gateway/static/root/assets/user-model-page-BydARq2C.js +0 -2
- package/dist/gateway/static/root/assets/workflows-page-B972t6zx.js +0 -6
- package/dist/src/proactive/scenarios/preview.d.ts +0 -13
- package/dist/src/proactive/scenarios/preview.js +0 -81
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"shareSelection": { "message": "Share your current selection" },
|
|
105
105
|
"screenshot": { "message": "Screenshot" },
|
|
106
106
|
"captureVisibleTab": { "message": "Capture the visible tab" },
|
|
107
|
-
"supportedFileTypes": { "message": "
|
|
107
|
+
"supportedFileTypes": { "message": "Images, Office documents, PDF, text, and code" },
|
|
108
108
|
"liveTabAccess": { "message": "Live tab access" },
|
|
109
109
|
"controlEnabled": { "message": "Control enabled" },
|
|
110
110
|
"readEnabled": { "message": "Read enabled" },
|
|
@@ -140,8 +140,8 @@
|
|
|
140
140
|
"placeholders": { "count": { "content": "$1" } }
|
|
141
141
|
},
|
|
142
142
|
"errorNoActivePage": { "message": "No active web page" },
|
|
143
|
-
"errorAttachmentTooLarge": { "message": "
|
|
144
|
-
"errorUnsupportedAttachment": { "message": "Attach an image,
|
|
143
|
+
"errorAttachmentTooLarge": { "message": "Attachments must be 32 MiB or smaller" },
|
|
144
|
+
"errorUnsupportedAttachment": { "message": "Attach an image, Office document, PDF, text, or code file" },
|
|
145
145
|
"errorActiveTabChanged": { "message": "The active tab changed. Try the screenshot again." },
|
|
146
146
|
"errorInvalidScreenshot": { "message": "Chrome returned an invalid screenshot" },
|
|
147
147
|
"errorInvalidWebAddress": { "message": "This tab does not have a valid web address" },
|
|
@@ -211,5 +211,35 @@
|
|
|
211
211
|
"errorOpenOutbox": { "message": "Could not open the browser chat outbox" },
|
|
212
212
|
"errorOutboxRequest": { "message": "Browser chat outbox request failed" },
|
|
213
213
|
"errorOutboxTransaction": { "message": "Browser chat outbox transaction failed" },
|
|
214
|
-
"errorOutboxAborted": { "message": "Browser chat outbox transaction was aborted" }
|
|
214
|
+
"errorOutboxAborted": { "message": "Browser chat outbox transaction was aborted" },
|
|
215
|
+
"errorScreenshotPermissionRequired": {"message": "To take screenshots from the side panel, allow access to all websites when Chrome asks, then try again."},
|
|
216
|
+
"queueMessage": {"message": "Add to queue"},
|
|
217
|
+
"cancelQueuedMessage": {"message": "Cancel"},
|
|
218
|
+
"errorChatChanged": {"message": "The chat changed. Please send again."},
|
|
219
|
+
"preview": {"message": "Preview"},
|
|
220
|
+
"closePreview": {"message": "Close"},
|
|
221
|
+
"processingAttachments": {"message": "Preparing attachments…"},
|
|
222
|
+
"errorPageLimit": {"message": "Attach up to $1 pages or selections"},
|
|
223
|
+
"errorPageContextSize": {"message": "The selected pages contain too much text. Attach a selection instead."},
|
|
224
|
+
"searchModels": {"message": "Search models"},
|
|
225
|
+
"noMatchingModels": {"message": "No matching models"},
|
|
226
|
+
"commandsAndSkills": {"message": "Commands and skills"},
|
|
227
|
+
"loadingCommands": {"message": "Loading commands"},
|
|
228
|
+
"noMatchingCommands": {"message": "No matching commands or skills"},
|
|
229
|
+
"skillUnavailable": {"message": "Unavailable for this agent"},
|
|
230
|
+
"voiceInput": {"message": "Voice input"},
|
|
231
|
+
"voiceStarting": {"message": "Opening microphone…"},
|
|
232
|
+
"voiceRecording": {"message": "Recording"},
|
|
233
|
+
"voiceTranscribing": {"message": "Transcribing…"},
|
|
234
|
+
"voiceFinish": {"message": "Finish"},
|
|
235
|
+
"voiceRetry": {"message": "Retry transcription"},
|
|
236
|
+
"voiceNoSpeech": {"message": "No speech detected. Please try again."},
|
|
237
|
+
"voiceUnavailable": {"message": "Speech recognition is unavailable. Configure it in Web UI → Settings → Voice."},
|
|
238
|
+
"interruptSend": {"message": "Stop and send now (Ctrl/⌘+Enter)"},
|
|
239
|
+
"editQueuedMessage": {"message": "Edit"},
|
|
240
|
+
"saveQueuedMessage": {"message": "Save"},
|
|
241
|
+
"voicePermissionHelp": { "message": "Microphone access needs permission. Open the authorization page, then return here and retry." },
|
|
242
|
+
"voicePermissionOpen": { "message": "Authorize microphone" },
|
|
243
|
+
"voicePermissionGranted": { "message": "Microphone authorized. Close this tab and return to chat." },
|
|
244
|
+
"voicePermissionFailed": { "message": "Microphone access was denied. Allow microphone access in browser and system settings, then retry." }
|
|
215
245
|
}
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
"shareSelection": { "message": "分享当前选中的内容" },
|
|
105
105
|
"screenshot": { "message": "截图" },
|
|
106
106
|
"captureVisibleTab": { "message": "截取当前可见标签页" },
|
|
107
|
-
"supportedFileTypes": { "message": "图片、PDF
|
|
107
|
+
"supportedFileTypes": { "message": "图片、Office 文档、PDF、文本和代码" },
|
|
108
108
|
"liveTabAccess": { "message": "实时标签页访问" },
|
|
109
109
|
"controlEnabled": { "message": "已启用控制" },
|
|
110
110
|
"readEnabled": { "message": "已启用读取" },
|
|
@@ -140,8 +140,8 @@
|
|
|
140
140
|
"placeholders": { "count": { "content": "$1" } }
|
|
141
141
|
},
|
|
142
142
|
"errorNoActivePage": { "message": "没有活动网页" },
|
|
143
|
-
"errorAttachmentTooLarge": { "message": "
|
|
144
|
-
"errorUnsupportedAttachment": { "message": "请附加图片、PDF
|
|
143
|
+
"errorAttachmentTooLarge": { "message": "附件大小不能超过 32 MiB" },
|
|
144
|
+
"errorUnsupportedAttachment": { "message": "请附加图片、Office 文档、PDF、文本或代码文件" },
|
|
145
145
|
"errorActiveTabChanged": { "message": "活动标签页已更改,请重新截图。" },
|
|
146
146
|
"errorInvalidScreenshot": { "message": "Chrome 返回了无效截图" },
|
|
147
147
|
"errorInvalidWebAddress": { "message": "此标签页没有有效的网页地址" },
|
|
@@ -211,5 +211,35 @@
|
|
|
211
211
|
"errorOpenOutbox": { "message": "无法打开浏览器对话发件箱" },
|
|
212
212
|
"errorOutboxRequest": { "message": "浏览器对话发件箱请求失败" },
|
|
213
213
|
"errorOutboxTransaction": { "message": "浏览器对话发件箱事务失败" },
|
|
214
|
-
"errorOutboxAborted": { "message": "浏览器对话发件箱事务已中止" }
|
|
214
|
+
"errorOutboxAborted": { "message": "浏览器对话发件箱事务已中止" },
|
|
215
|
+
"errorScreenshotPermissionRequired": {"message": "侧栏截图需要所有网站的访问权限,请在 Chrome 提示时允许后重试。"},
|
|
216
|
+
"queueMessage": {"message": "追加到队列"},
|
|
217
|
+
"cancelQueuedMessage": {"message": "取消"},
|
|
218
|
+
"errorChatChanged": {"message": "聊天已切换,请重新发送。"},
|
|
219
|
+
"preview": {"message": "预览"},
|
|
220
|
+
"closePreview": {"message": "关闭"},
|
|
221
|
+
"processingAttachments": {"message": "正在准备附件…"},
|
|
222
|
+
"errorPageLimit": {"message": "最多附加 $1 个网页或选区"},
|
|
223
|
+
"errorPageContextSize": {"message": "所选网页文本过多,请改为附加选区。"},
|
|
224
|
+
"searchModels": {"message": "搜索模型"},
|
|
225
|
+
"noMatchingModels": {"message": "没有匹配的模型"},
|
|
226
|
+
"commandsAndSkills": {"message": "命令与技能"},
|
|
227
|
+
"loadingCommands": {"message": "正在加载命令"},
|
|
228
|
+
"noMatchingCommands": {"message": "没有匹配的命令或技能"},
|
|
229
|
+
"skillUnavailable": {"message": "当前 Agent 不可用"},
|
|
230
|
+
"voiceInput": {"message": "语音输入"},
|
|
231
|
+
"voiceStarting": {"message": "正在打开麦克风…"},
|
|
232
|
+
"voiceRecording": {"message": "录音中"},
|
|
233
|
+
"voiceTranscribing": {"message": "正在转写…"},
|
|
234
|
+
"voiceFinish": {"message": "完成"},
|
|
235
|
+
"voiceRetry": {"message": "重试转写"},
|
|
236
|
+
"voiceNoSpeech": {"message": "未识别到语音,请重试。"},
|
|
237
|
+
"voiceUnavailable": {"message": "语音识别不可用,请在 Web UI → 设置 → 语音中配置。"},
|
|
238
|
+
"interruptSend": {"message": "停止并立即发送(Ctrl/⌘+Enter)"},
|
|
239
|
+
"editQueuedMessage": {"message": "编辑"},
|
|
240
|
+
"saveQueuedMessage": {"message": "保存"},
|
|
241
|
+
"voicePermissionHelp": { "message": "需要麦克风权限。请打开授权页完成授权,然后返回聊天重试。" },
|
|
242
|
+
"voicePermissionOpen": { "message": "授权麦克风" },
|
|
243
|
+
"voicePermissionGranted": { "message": "麦克风已授权。请关闭此标签页并返回聊天。" },
|
|
244
|
+
"voicePermissionFailed": { "message": "麦克风访问被拒绝。请在浏览器及系统设置中允许麦克风访问,然后重试。" }
|
|
215
245
|
}
|
|
@@ -5776,7 +5776,7 @@ const browserPageContextInputSchema = strictObject({
|
|
|
5776
5776
|
ctx.addIssue({ code: "custom", path: ["text"], message: "Page text is too large" });
|
|
5777
5777
|
}
|
|
5778
5778
|
});
|
|
5779
|
-
array(browserPageContextInputSchema).max(MAX_BROWSER_CONTEXTS_PER_TURN).superRefine((value, ctx) => {
|
|
5779
|
+
const browserPageContextsInputSchema = array(browserPageContextInputSchema).max(MAX_BROWSER_CONTEXTS_PER_TURN).superRefine((value, ctx) => {
|
|
5780
5780
|
if (utf8Bytes(JSON.stringify(value)) > MAX_BROWSER_CONTEXT_BODY_BYTES) {
|
|
5781
5781
|
ctx.addIssue({ code: "custom", message: "Browser contexts are too large" });
|
|
5782
5782
|
}
|
|
@@ -6009,68 +6009,33 @@ ${marker.timeOrigin}`),
|
|
|
6009
6009
|
}
|
|
6010
6010
|
|
|
6011
6011
|
const DATABASE_NAME = "xopc-browser-chat-state";
|
|
6012
|
-
const DATABASE_VERSION =
|
|
6013
|
-
const OUTBOX_STORE = "outbox";
|
|
6012
|
+
const DATABASE_VERSION = 2;
|
|
6014
6013
|
function openDatabase() {
|
|
6015
6014
|
return new Promise((resolve, reject) => {
|
|
6016
6015
|
const request = indexedDB.open(DATABASE_NAME, DATABASE_VERSION);
|
|
6017
6016
|
request.onupgradeneeded = () => {
|
|
6018
|
-
if (!request.result.objectStoreNames.contains(
|
|
6019
|
-
|
|
6017
|
+
if (!request.result.objectStoreNames.contains("drafts")) request.result.createObjectStore("drafts");
|
|
6018
|
+
if (!request.result.objectStoreNames.contains("outbox")) {
|
|
6019
|
+
request.result.createObjectStore("outbox");
|
|
6020
6020
|
}
|
|
6021
6021
|
};
|
|
6022
6022
|
request.onsuccess = () => resolve(request.result);
|
|
6023
6023
|
request.onerror = () => reject(request.error ?? new Error(t("errorOpenOutbox")));
|
|
6024
6024
|
});
|
|
6025
6025
|
}
|
|
6026
|
-
function
|
|
6027
|
-
|
|
6028
|
-
const transaction = database.transaction(OUTBOX_STORE, mode);
|
|
6029
|
-
const request = createRequest(transaction.objectStore(OUTBOX_STORE));
|
|
6030
|
-
let result;
|
|
6031
|
-
request.onsuccess = () => {
|
|
6032
|
-
result = request.result;
|
|
6033
|
-
};
|
|
6034
|
-
request.onerror = () => reject(request.error ?? new Error(t("errorOutboxRequest")));
|
|
6035
|
-
transaction.oncomplete = () => resolve(result);
|
|
6036
|
-
transaction.onerror = () => reject(transaction.error ?? new Error(t("errorOutboxTransaction")));
|
|
6037
|
-
transaction.onabort = () => reject(transaction.error ?? new Error(t("errorOutboxAborted")));
|
|
6038
|
-
});
|
|
6039
|
-
}
|
|
6040
|
-
async function readBrowserOutbox(sessionKey) {
|
|
6041
|
-
const database = await openDatabase();
|
|
6042
|
-
try {
|
|
6043
|
-
return await transactionResult(
|
|
6044
|
-
database,
|
|
6045
|
-
"readonly",
|
|
6046
|
-
(store) => store.get(sessionKey)
|
|
6047
|
-
);
|
|
6048
|
-
} finally {
|
|
6049
|
-
database.close();
|
|
6050
|
-
}
|
|
6051
|
-
}
|
|
6052
|
-
async function writeBrowserOutbox(sessionKey, value) {
|
|
6053
|
-
const database = await openDatabase();
|
|
6054
|
-
try {
|
|
6055
|
-
await transactionResult(database, "readwrite", (store) => store.put(value, sessionKey));
|
|
6056
|
-
} finally {
|
|
6057
|
-
database.close();
|
|
6058
|
-
}
|
|
6059
|
-
}
|
|
6060
|
-
async function deleteBrowserOutbox(sessionKey) {
|
|
6061
|
-
const database = await openDatabase();
|
|
6026
|
+
async function clearBrowserChatState() {
|
|
6027
|
+
const db = await openDatabase();
|
|
6062
6028
|
try {
|
|
6063
|
-
await
|
|
6064
|
-
|
|
6065
|
-
|
|
6066
|
-
|
|
6067
|
-
|
|
6068
|
-
|
|
6069
|
-
|
|
6070
|
-
|
|
6071
|
-
await transactionResult(database, "readwrite", (store) => store.clear());
|
|
6029
|
+
await new Promise((resolve, reject) => {
|
|
6030
|
+
const tx = db.transaction(["outbox", "drafts"], "readwrite");
|
|
6031
|
+
tx.objectStore("outbox").clear();
|
|
6032
|
+
tx.objectStore("drafts").clear();
|
|
6033
|
+
tx.oncomplete = () => resolve();
|
|
6034
|
+
tx.onerror = () => reject(tx.error);
|
|
6035
|
+
tx.onabort = () => reject(tx.error);
|
|
6036
|
+
});
|
|
6072
6037
|
} finally {
|
|
6073
|
-
|
|
6038
|
+
db.close();
|
|
6074
6039
|
}
|
|
6075
6040
|
}
|
|
6076
6041
|
|
|
@@ -6616,7 +6581,7 @@ async function revokeAndForgetProfile() {
|
|
|
6616
6581
|
} finally {
|
|
6617
6582
|
await forgetProfile();
|
|
6618
6583
|
try {
|
|
6619
|
-
await
|
|
6584
|
+
await clearBrowserChatState();
|
|
6620
6585
|
} finally {
|
|
6621
6586
|
try {
|
|
6622
6587
|
await forgetIdentity();
|
|
@@ -6627,4 +6592,4 @@ async function revokeAndForgetProfile() {
|
|
|
6627
6592
|
}
|
|
6628
6593
|
}
|
|
6629
6594
|
|
|
6630
|
-
export { ENDPOINT_PROTOCOL_VERSION as E, PENDING_CONTEXT_KEY as P, RealtimeClient as R, TAB_BINDING_PREFIX as T, activeTabId as a,
|
|
6595
|
+
export { ENDPOINT_PROTOCOL_VERSION as E, MAX_BROWSER_CONTEXTS_PER_TURN as M, PENDING_CONTEXT_KEY as P, RealtimeClient as R, TAB_BINDING_PREFIX as T, activeTabId as a, browserPageContextsInputSchema as b, cancelPendingBrowserPairing as c, canonicalJson as d, captureTabWithPermission as e, createBrowserEndpointHello as f, currentTabDescriptor as g, discoverLocalGateway as h, endpointToolContentSchema as i, extensionLocale as j, gatewayFetch as k, getAccessProfile as l, loadExtensionLocalePreference as m, readProfile as n, openDatabase as o, pairGateway as p, registerBrowserEndpoint as q, readPendingBrowserPairing as r, revokeAndForgetProfile as s, runWithTabSiteAccess as t, saveExtensionLocalePreference as u, setAutoConnectEnabled as v, t as w };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
(function () {
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const WORKLET_NAME = "xopc-pcm-capture";
|
|
5
|
+
class XopcPcmCaptureProcessor extends AudioWorkletProcessor {
|
|
6
|
+
buffer = new Float32Array(2048);
|
|
7
|
+
offset = 0;
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
this.port.onmessage = (event) => {
|
|
11
|
+
if (event.data === "flush") {
|
|
12
|
+
this.flush();
|
|
13
|
+
this.port.postMessage({ type: "flushed" });
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
flush() {
|
|
18
|
+
if (!this.offset) return;
|
|
19
|
+
const samples = this.buffer.slice(0, this.offset);
|
|
20
|
+
this.offset = 0;
|
|
21
|
+
this.port.postMessage({ type: "samples", buffer: samples.buffer }, [samples.buffer]);
|
|
22
|
+
}
|
|
23
|
+
process(inputs) {
|
|
24
|
+
const channel = inputs[0]?.[0];
|
|
25
|
+
if (!channel) return true;
|
|
26
|
+
let sourceOffset = 0;
|
|
27
|
+
while (sourceOffset < channel.length) {
|
|
28
|
+
const count = Math.min(channel.length - sourceOffset, this.buffer.length - this.offset);
|
|
29
|
+
this.buffer.set(channel.subarray(sourceOffset, sourceOffset + count), this.offset);
|
|
30
|
+
this.offset += count;
|
|
31
|
+
sourceOffset += count;
|
|
32
|
+
if (this.offset === this.buffer.length) this.flush();
|
|
33
|
+
}
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
registerProcessor(WORKLET_NAME, XopcPcmCaptureProcessor);
|
|
38
|
+
|
|
39
|
+
})();
|
|
@@ -260,10 +260,6 @@ svg { display: block; }
|
|
|
260
260
|
.composer-state-label { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
|
|
261
261
|
.access-pill { display: inline-flex; align-items: center; gap: 3px; border-radius: 999px; padding: 2px 5px; background: var(--success-soft); color: color-mix(in srgb, var(--success) 72%, var(--fg)); font-weight: 600; }
|
|
262
262
|
.access-pill svg { width: 10px; height: 10px; }
|
|
263
|
-
.model-controls { min-width: 0; height: 32px; display: flex; align-items: center; gap: 0; border-radius: 9px; padding: 0 2px; background: var(--surface-hover); }
|
|
264
|
-
.model-controls select { min-width: 0; max-width: 118px; height: 28px; border: 0; border-radius: 7px; padding: 4px 5px; outline: none; background: transparent; color: var(--fg-muted); font-size: 10px; font-weight: 560; text-overflow: ellipsis; }
|
|
265
|
-
.model-controls select:hover, .model-controls select:focus { background: var(--surface-active); color: var(--fg); }
|
|
266
|
-
.model-controls select:last-child { max-width: 72px; color: var(--fg-subtle); }
|
|
267
263
|
|
|
268
264
|
.composer-contexts { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 6px; }
|
|
269
265
|
.context-chip, .attachment-chip { min-width: 0; max-width: 100%; display: flex; align-items: center; gap: 5px; border: 1px solid color-mix(in srgb, var(--accent) 24%, var(--edge)); border-radius: 8px; padding: 5px 6px; color: var(--accent-fg); background: var(--accent-soft); font-size: 10px; }
|
|
@@ -310,11 +306,49 @@ svg { display: block; }
|
|
|
310
306
|
.message.user { width: 92%; }
|
|
311
307
|
.composer { margin-inline: 8px; }
|
|
312
308
|
.composer-state-label { display: none; }
|
|
313
|
-
.model-controls select { max-width: 82px; }
|
|
314
|
-
.model-controls select:last-child { max-width: 58px; }
|
|
315
309
|
.quick-prompts { gap: 6px; }
|
|
316
310
|
}
|
|
317
311
|
|
|
318
312
|
@media (prefers-reduced-motion: reduce) {
|
|
319
313
|
*, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
|
|
320
314
|
}
|
|
315
|
+
|
|
316
|
+
.attachment-thumbnail { padding: 0; border: 0; background: transparent; }
|
|
317
|
+
.attachment-thumbnail img { display: block; width: 36px; height: 36px; object-fit: cover; border-radius: 5px; }
|
|
318
|
+
.composer-preview { width: calc(100vw - 24px); height: min(640px, 85vh); max-width: 640px; padding: 0; border: 1px solid var(--edge); border-radius: 12px; background: var(--surface-panel); color: var(--fg); overflow: hidden; }
|
|
319
|
+
.composer-preview[open] { display: flex; flex-direction: column; }
|
|
320
|
+
.composer-preview::backdrop { background: rgb(0 0 0 / 45%); }
|
|
321
|
+
.composer-preview header { display: flex; align-items: center; justify-content: space-between; padding: 12px; gap: 8px; }
|
|
322
|
+
.composer-preview header strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
323
|
+
.composer-preview-body { flex: 1; min-height: 0; overflow: auto; padding: 12px; }
|
|
324
|
+
.composer-preview-body img { max-width: 100%; height: auto; }
|
|
325
|
+
.composer-preview-body pre { white-space: pre-wrap; overflow-wrap: anywhere; font: inherit; }
|
|
326
|
+
.composer-notice { display: flex; gap: 8px; align-items: center; }
|
|
327
|
+
.composer-notice > span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
328
|
+
.composer-error { white-space: pre-wrap; }
|
|
329
|
+
|
|
330
|
+
.model-picker { position: static; min-width: 0; }
|
|
331
|
+
.model-picker summary { max-width: 150px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; border-radius: 8px; background: var(--surface-hover); padding: 7px; font-size: 11px; }
|
|
332
|
+
.model-picker-panel { position: absolute; bottom: calc(100% + 8px); right: 8px; width: min(290px, calc(100vw - 32px)); padding: 10px; border: 1px solid var(--edge); border-radius: 12px; background: var(--surface-panel); z-index: 20; }
|
|
333
|
+
.model-picker-panel > input { width: 100%; margin-bottom: 8px; }
|
|
334
|
+
.model-picker-list { max-height: min(240px, 35vh); overflow-y: auto; }
|
|
335
|
+
.model-picker-list button { display: flex; flex-direction: column; align-items: flex-start; width: 100%; border: 0; background: transparent; padding: 8px; text-align: left; }
|
|
336
|
+
.model-picker-list small { color: var(--fg-muted); overflow-wrap: anywhere; }
|
|
337
|
+
.model-picker-panel button[aria-pressed=true] { background: var(--accent-soft); color: var(--accent-fg); }
|
|
338
|
+
.model-picker-panel fieldset { border: 0; padding: 8px 0 0; margin: 0; display: flex; flex-wrap: wrap; gap: 4px; }
|
|
339
|
+
.model-picker-panel legend { padding-top: 8px; font-size: 11px; color: var(--fg-muted); }
|
|
340
|
+
.model-picker-panel p { font-size: 12px; }
|
|
341
|
+
.voice-input-panel { position: absolute; left: 8px; right: 8px; bottom: calc(100% + 8px); padding: 12px; display: flex; flex-wrap: wrap; gap: 8px; background: var(--surface-panel); border: 1px solid var(--edge); border-radius: 12px; z-index: 22; }
|
|
342
|
+
.voice-input-panel > span { flex: 1 1 100%; font-size: 12px; }
|
|
343
|
+
.queued-input input { min-width: 0; flex: 1; }
|
|
344
|
+
@media (max-width: 380px) { .model-picker summary { max-width: 105px; } }
|
|
345
|
+
|
|
346
|
+
.model-picker-panel > input, .queued-input input { border: 1px solid var(--edge); border-radius: 8px; padding: 8px; background: var(--surface-base); color: var(--fg); font: inherit; font-size: 12px; }
|
|
347
|
+
.model-picker-panel fieldset button, .queued-input button, .voice-input-panel button, .composer-preview header button { border: 1px solid var(--edge); border-radius: 7px; padding: 5px 8px; background: var(--surface-hover); color: var(--fg-muted); font: inherit; font-size: 11px; }
|
|
348
|
+
.model-picker-panel fieldset button:hover, .queued-input button:hover, .voice-input-panel button:hover, .composer-preview header button:hover { background: var(--surface-active); }
|
|
349
|
+
.model-picker-panel fieldset button[aria-pressed=true] { background: var(--accent-soft); color: var(--accent-fg); border-color: var(--accent-fg); }
|
|
350
|
+
.model-picker-list strong { font-size: 12px; }
|
|
351
|
+
.model-picker-list small { font-size: 10px; }
|
|
352
|
+
|
|
353
|
+
.microphone-permission { max-width: 32rem; margin: 3rem auto; padding: 1.5rem; }
|
|
354
|
+
.microphone-permission p { margin-block: 1rem; }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as endpointToolContentSchema, E as ENDPOINT_PROTOCOL_VERSION,
|
|
1
|
+
import { i as endpointToolContentSchema, E as ENDPOINT_PROTOCOL_VERSION, d as canonicalJson, T as TAB_BINDING_PREFIX, e as captureTabWithPermission, P as PENDING_CONTEXT_KEY, w as t, n as readProfile, q as registerBrowserEndpoint, l as getAccessProfile, R as RealtimeClient, f as createBrowserEndpointHello, k as gatewayFetch } from './assets/auth-DB30ywek.js';
|
|
2
2
|
|
|
3
3
|
const BROWSER_EXTENSION_PROTOCOL_VERSION = 4;
|
|
4
4
|
const BROWSER_CONTROL_ENDPOINT_TOOL_NAME = "browser.control";
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>xopc</title>
|
|
7
7
|
<script type="module" crossorigin src="./sidepanel.js"></script>
|
|
8
|
-
<link rel="modulepreload" crossorigin href="./assets/auth-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="./assets/sidepanel-
|
|
8
|
+
<link rel="modulepreload" crossorigin href="./assets/auth-DB30ywek.js">
|
|
9
|
+
<link rel="stylesheet" crossorigin href="./assets/sidepanel-BbSQr-6P.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|