@xopcai/xopc 0.0.298 → 0.0.301
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/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store-C-DSdak3.js → activity-store-sCQ2ErNm.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DQx3cICI.js → agent-avatar-dicebear-L6Vh9fL1.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-defaults-settings-panel-BdAFy0gE.js → agent-defaults-settings-panel-C22DdeJ6.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-9Q_62jYG.js → agents-CjwnFadx.js} +1 -1
- package/dist/gateway/static/root/assets/api-BjlN9GPQ.js +1 -0
- package/dist/gateway/static/root/assets/{api-DS4w0i5N.js → api-pwK0DxZJ.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-rZk3-w6S.js → app-management-settings-panel-BPanjQB6.js} +1 -1
- package/dist/gateway/static/root/assets/appearance-settings-CUWA2E_f.js +1 -0
- package/dist/gateway/static/root/assets/{apps-page-BeNbZ2aw.js → apps-page-D8hP1XhF.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-CNi0DDvL.js → archive-plugin-BT7OnQyy.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-CThmC7i6.js → attachment-load-CQGhCfVn.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-BGe-cTjn.js → automations-page-CHeFkkKk.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-B_-VM4Va.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-Cv_aLtBz.js → binary-plugins-D_8pZaqQ.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-BkS6rDLR.js → block-editor-m48cnmng.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automation-inputs-DvwCwLOp.js → browser-automation-inputs-jciex8-r.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-D93HlJH4.js → browser-automations-page-ct9dHGJF.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-BdHYYHIv.js → browser-settings-page-DNX0BZFM.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-BJ5gZB8e.js → capabilities-settings-panel-nvCpR13B.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-CikNo086.js → channels-settings-BeDwuVtH.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-status-swr-CgtFOwNh.js → channels-status-swr-Cz3X8Gfa.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-Dr3iyWHW.js → chat-terminal-dock-Bn_th7oe.js} +1 -1
- package/dist/gateway/static/root/assets/{computer-model-settings-CgDUQ9On.js → computer-model-settings-BOObauzH.js} +1 -1
- package/dist/gateway/static/root/assets/{computer-settings-page-unz5J8oW.js → computer-settings-page-BicG-IvN.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-EdtkQUqf.js → connectors-page-D9xCnhbY.js} +1 -1
- package/dist/gateway/static/root/assets/{cron-expression-DU3E4CbL.js → cron-expression-C0ogAVG7.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-BjGxRWfE.js → date-picker-HtU776kx.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-B9Fsdq_j.js → dependency-picker-DvDdN4Xu.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-BVIdx2PC.js → desktop-pet-BWi5FE7D.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-CjTgpDfw.js → desktop-pet-settings-CptAwdZd.js} +1 -1
- package/dist/gateway/static/root/assets/{device-pairing-wizard-CaSz5VAr.js → device-pairing-wizard-C8BiZYwP.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-CMjMKdg0.js → extension-debug-page-nRRdMurF.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-Dm4ohyoF.js → extension-page-DxotmtcG.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-jsjKLZ_n.js → extension-settings-page-BK2t7aFl.js} +1 -1
- package/dist/gateway/static/root/assets/figtree-latin-ext-wght-normal-DCwSJGxG.woff2 +0 -0
- package/dist/gateway/static/root/assets/figtree-latin-wght-normal-D_ZTVpCC.woff2 +0 -0
- package/dist/gateway/static/root/assets/{gateway-config-swr-B2xVR9gt.js → gateway-config-swr-COJzzscc.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-CnMgDQVJ.js → gateway-settings-rIGo_jeB.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-c7s8h7px.js → gateway-startup-retry-211-jptU.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-CJNc9fVz.js → heartbeat-settings-DAHqGRKZ.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-X0TcW6Fs.js → home-page-BU59mAGQ.js} +1 -1
- package/dist/gateway/static/root/assets/{image-generation-api-DUjbV88R.js → image-generation-api-sO31fQr_.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-BaQmVh_d.js → imports-page-BQ4HTIVc.js} +1 -1
- package/dist/gateway/static/root/assets/{index-BwqBcOv1.js → index-54o0AGdj.js} +39 -41
- package/dist/gateway/static/root/assets/index-R89i_XYi.css +1 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-7eX6_wx-.js → keyboard-shortcuts-settings-BSgsIe7E.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-C5Q12itI.js → local-app-workbench-page-BtEQDQeQ.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-C9L4Hlw5.js → local-apps-page-BrEO9hz5.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-CwuCkjo7.js → locale-store-DuG-kbsP.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-BC131pzE.js → logs-page-DhXIIoc0.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-CeDBuLQg.js → management-settings-DC67VTpr.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-3YQc6QFV.js → markdown-view-B1q2w6W_.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-DWfT8oeo.js → media-plugins-DdoSox1I.js} +1 -1
- package/dist/gateway/static/root/assets/messages-BYbx4OuI.js +3 -0
- package/dist/gateway/static/root/assets/{note-detail-panel-DkN6faxv.js → note-detail-panel-CCIA4VbP.js} +3 -3
- package/dist/gateway/static/root/assets/{notes-page-C4hKdQdj.js → notes-page-C8JeFMSH.js} +1 -1
- package/dist/gateway/static/root/assets/{page-tabs-BcTjkR5o.js → page-tabs-B_I0YuTK.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-DYH10UsL.js → preview-open-alternatives--5Zt1oSs.js} +1 -1
- package/dist/gateway/static/root/assets/{proactive-page-LEG1kQFJ.js → proactive-page-BBJZB2RV.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-DLm3cUhY.js → product-open-page-CKFPKr0A.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-HxD09IfH.js → project-detail-page-DeTeDel1.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-D2fC38bE.js → projects-page-BUsI5G7U.js} +1 -1
- package/dist/gateway/static/root/assets/{registry-api-Cxx1-pCg.js → registry-api-BDgFNu05.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-DvXeZ98_.js → remote-access-hub-DSGwCc4h.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CXpFgOci.js → runtime-tools-settings-panel-BY9oD7eN.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-DaT4vD2j.js → schema-form-CuIDQtYN.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-zAeJa1Ae.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-BG4EILeB.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-B6ZUcWOA.js → settings-form-section-C4D1p0xR.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-Chvn3lRv.js → settings-page-BBG4jliE.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-BS51qtzu.js → setup-status-panel-DXqDeXNi.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-Brta3iG6.js → share-preview-page-DbE7gsDd.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-oSqDaSSF.js → shares-settings-BN_O6Dwt.js} +1 -1
- package/dist/gateway/static/root/assets/skill-reload-api-Sq-IWawl.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-cxh7-L-8.js → skills-page-Dh33NKoP.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-CM_4-WWk.js → skills-page.utils-BNz7GQvw.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-CCv2jppr.js → system-settings-panel-C3L8_KEq.js} +1 -1
- package/dist/gateway/static/root/assets/{task-detail-page-Dip4NJ1W.js → task-detail-page-CJ1WpRpN.js} +1 -1
- package/dist/gateway/static/root/assets/theme-store-JzZVUvEh.js +1 -0
- package/dist/gateway/static/root/assets/{tunnel-api-B0z39eec.js → tunnel-api-GLzwLaUZ.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-B2Vitgh0.js → use-autosave-DSrlXbBg.js} +1 -1
- package/dist/gateway/static/root/assets/{user-model-page-DARb0_C4.js → user-model-page-CX9eizCN.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-XsHsCfWR.js → voice-api-key-field-9P97T0CT.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-De1DTzxK.js → voice-config-api-DJvwbFbz.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-B5mnI1IB.js → work-discovery-overlay-CoVHgrQY.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DcFMhxC_.js → workflow-run-setup-panel-BR-S_IGS.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-CaaEc_f1.js → workflows-page-ea-j18xi.js} +1 -1
- package/dist/gateway/static/root/index.html +10 -10
- package/dist/package.js +1 -1
- 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/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/memory/compaction.js +1 -1
- package/dist/src/agent/service/direct-turn-helpers.js +11 -4
- package/dist/src/agent/service/process-direct-one-shot.js +1 -0
- package/dist/src/agent/service/process-direct-streaming.js +2 -1
- 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/tasks/task-judge-service.js +3 -3
- 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/chat-commands/agent-edit.js +1 -1
- package/dist/src/chat-commands/builtins/config.d.ts +1 -0
- package/dist/src/chat-commands/builtins/config.js +13 -9
- package/dist/src/chat-commands/builtins/model.js +2 -1
- package/dist/src/chat-commands/builtins/session.js +10 -7
- package/dist/src/chat-commands/builtins/skill.js +0 -1
- package/dist/src/chat-commands/builtins/thinking.js +12 -8
- package/dist/src/chat-commands/builtins/tts.js +7 -7
- package/dist/src/chat-commands/builtins/understanding.js +2 -1
- package/dist/src/chat-commands/command-parse.js +5 -6
- package/dist/src/chat-commands/context.js +19 -16
- package/dist/src/cli/commands/agent.js +1 -1
- package/dist/src/cli/commands/connectors.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +3 -3
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/computer/runtime.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 +2 -2
- package/dist/src/connectors/auth-provider-registry.js +1 -1
- package/dist/src/connectors/connected-source-ingestion.js +1 -1
- package/dist/src/connectors/connection-recovery-service.js +1 -1
- package/dist/src/connectors/health.js +1 -1
- package/dist/src/extensions/lockfile.js +1 -1
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/automation-agent-session.js +4 -1
- package/dist/src/gateway/chat-stream/mapper.js +1 -0
- package/dist/src/gateway/chat-stream/protocol.d.ts +2 -1
- package/dist/src/gateway/file-path-classifier.js +1 -1
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/routes/capabilities.js +1 -1
- package/dist/src/gateway/hono/routes/connectors.js +3 -3
- package/dist/src/gateway/hono/routes/mcp.js +1 -1
- package/dist/src/gateway/hono/routes/models.js +1 -1
- package/dist/src/gateway/hono/routes/session-input-handler.d.ts +3 -1
- package/dist/src/gateway/hono/routes/session-input-handler.js +21 -1
- package/dist/src/gateway/hono/routes/tasks.js +1 -1
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service/run-gateway-agent.js +2 -3
- package/dist/src/gateway/service.js +5 -5
- package/dist/src/notifications/plain-text.d.ts +1 -0
- package/dist/src/notifications/plain-text.js +14 -0
- package/dist/src/notifications/planner.js +2 -1
- package/dist/src/providers/auth-runtime/resolve-auth.js +1 -1
- package/dist/src/providers/index.js +2 -2
- package/dist/src/providers/model-catalog-persistence.js +1 -1
- package/dist/src/providers/model-registry.js +1 -1
- package/dist/src/providers/register-runtime-providers.js +1 -1
- package/dist/src/session/reset-triggers.d.ts +2 -0
- package/dist/src/session/reset-triggers.js +11 -1
- package/dist/src/storage/sqlite/session-repository.js +12 -1
- package/dist/src/storage/sqlite/transcript-repository.js +11 -2
- package/dist/src/tui/backends/embedded-backend.js +1 -1
- package/dist/src/tui/tui-commands.js +1 -1
- package/dist/src/tui/tui-startup-resources.js +2 -2
- package/dist/src/tui/tui.js +2 -2
- package/dist/src/user-context/config.js +2 -2
- package/dist/src/work-discovery/service.js +2 -2
- package/dist/src/workflows/service/workflow-run-service.js +1 -1
- package/dist/src/workflows/service/workflow-session-bridge.js +5 -1
- package/package.json +3 -3
- package/dist/gateway/static/root/assets/api-BhJmc8E-.js +0 -1
- package/dist/gateway/static/root/assets/appearance-settings-CbIWkXlh.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-rHXrY_xk.js +0 -6
- package/dist/gateway/static/root/assets/index-Bt6a_Yxc.css +0 -2
- package/dist/gateway/static/root/assets/messages-D6CRVWtT.js +0 -3
- package/dist/gateway/static/root/assets/sessions-page-T5S0FTQJ.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-Bi3puKV6.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-CITITcjJ.js +0 -1
- package/dist/gateway/static/root/assets/theme-store-Dt7ob2wD.js +0 -1
|
@@ -86,13 +86,6 @@ var CommandContextImpl = class {
|
|
|
86
86
|
await this.clearSession();
|
|
87
87
|
return;
|
|
88
88
|
}
|
|
89
|
-
await this.deps.bus.publishOutbound({
|
|
90
|
-
channel: this.source,
|
|
91
|
-
chat_id: this.chatId,
|
|
92
|
-
content: "✅ New session started. Previous transcript archived; model and session overrides kept.",
|
|
93
|
-
type: "message",
|
|
94
|
-
metadata: this.outboundMetadata()
|
|
95
|
-
});
|
|
96
89
|
log.info({ conversationId: this.conversationId }, "Session reset");
|
|
97
90
|
}
|
|
98
91
|
async clearSession() {
|
|
@@ -120,15 +113,25 @@ var CommandContextImpl = class {
|
|
|
120
113
|
log.info({ conversationId: this.conversationId }, "Session archived");
|
|
121
114
|
}
|
|
122
115
|
async listSessions() {
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
116
|
+
const { items } = await this.deps.sessionStore.list({
|
|
117
|
+
channel: this.channelId,
|
|
118
|
+
limit: 100,
|
|
119
|
+
sortBy: "updatedAt",
|
|
120
|
+
sortOrder: "desc"
|
|
121
|
+
});
|
|
122
|
+
return items.filter((item) => {
|
|
123
|
+
if (this.channelId === "webchat") return true;
|
|
124
|
+
const routing = item.routing;
|
|
125
|
+
if (!routing) return item.key === this.conversationId;
|
|
126
|
+
return routing.peerId === this.chatId && (!this.accountId || routing.accountId === this.accountId) && (!this.threadId || routing.threadId === this.threadId);
|
|
127
|
+
}).map((item) => ({
|
|
128
|
+
key: item.key,
|
|
129
|
+
name: item.name ?? getSessionDisplayName(item.key),
|
|
130
|
+
messageCount: item.messageCount,
|
|
131
|
+
createdAt: new Date(item.createdAt),
|
|
132
|
+
updatedAt: new Date(item.updatedAt),
|
|
133
|
+
isActive: item.key === this.conversationId
|
|
134
|
+
}));
|
|
132
135
|
}
|
|
133
136
|
async switchSession(conversationId) {
|
|
134
137
|
log.info({
|
|
@@ -2,8 +2,8 @@ import { createLogger } from "../../utils/logger/index.js";
|
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
3
|
import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
|
|
4
4
|
import { init_agent_scope, resolveDefaultAgentId } from "../../agent/agent-scope.js";
|
|
5
|
-
import { loadConfig } from "../../config/loader.js";
|
|
6
5
|
import { init_agent_session_key, resolveAgentMainConversationId } from "../../routing/agent-session-key.js";
|
|
6
|
+
import { loadConfig } from "../../config/loader.js";
|
|
7
7
|
import { ExtensionLoader } from "../../extensions/loader.js";
|
|
8
8
|
import "../../extensions/index.js";
|
|
9
9
|
import { MessageBus, MessageBusShutdownError } from "../../infra/bus/queue.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { init_loader, loadConfig, saveConfig } from "../../config/loader.js";
|
|
2
|
-
import { getStoreConnectorInstallPlan, installStoreConnector, listStoreConnectors } from "../../capabilities/store-connector.js";
|
|
3
2
|
import { register } from "../registry.js";
|
|
3
|
+
import { getStoreConnectorInstallPlan, installStoreConnector, listStoreConnectors } from "../../capabilities/store-connector.js";
|
|
4
4
|
import { confirm } from "@inquirer/prompts";
|
|
5
5
|
import { Command } from "commander";
|
|
6
6
|
//#region src/cli/commands/connectors.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { getAgentDefaultModelRef, init_schema, parseModelRef } from "../../../../config/schema.js";
|
|
2
|
-
import {
|
|
2
|
+
import { getDefaultAgentId, init_resolve_route } from "../../../../routing/resolve-route.js";
|
|
3
|
+
import { init_loader, loadConfig } from "../../../../config/loader.js";
|
|
3
4
|
import { getModelOAuthProviderIds, init_registry } from "../../../../auth/oauth/registry.js";
|
|
5
|
+
import { PROVIDER_ENV_MAP, init_env_keys } from "../../../../providers/env-keys.js";
|
|
4
6
|
import { CredentialResolver, init_credentials } from "../../../../auth/credentials.js";
|
|
5
|
-
import { init_loader, loadConfig } from "../../../../config/loader.js";
|
|
6
|
-
import { getDefaultAgentId, init_resolve_route } from "../../../../routing/resolve-route.js";
|
|
7
7
|
import { existsSync } from "node:fs";
|
|
8
8
|
//#region src/cli/commands/doctor/checks/provider-auth.ts
|
|
9
9
|
init_credentials();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
|
|
2
|
-
import { CredentialResolver, init_credentials } from "../../auth/credentials.js";
|
|
3
2
|
import { loadConfig, saveConfig } from "../../config/loader.js";
|
|
3
|
+
import { CredentialResolver, init_credentials } from "../../auth/credentials.js";
|
|
4
4
|
import { getAllModels, getAvailableModels, getConfiguredProviders, getProviderAuthState, getProviderDisplayName, init_providers, isProviderConfigured, providerSupportsApiKey, providerSupportsOAuth, resolveModel } from "../../providers/index.js";
|
|
5
5
|
import { formatExamples, register } from "../registry.js";
|
|
6
6
|
import { getContextWithOpts } from "../context.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
|
+
import { resolveEffectiveAgentConfigForSession } from "../config/agent-profile.js";
|
|
3
4
|
import { COMPUTER_CONTROL_TOOL, ComputerAppSchema, ComputerObservationSchema, ComputerWindowSchema, init_src } from "../../packages/computer-control-contract/src/index.js";
|
|
4
5
|
import { ComputerServiceLimitsSchema, computerModelProfile, init_model_policy } from "./model-policy.js";
|
|
5
6
|
import { getApiKey, init_providers, resolveModel } from "../providers/index.js";
|
|
6
|
-
import { resolveEffectiveAgentConfigForSession } from "../config/agent-profile.js";
|
|
7
7
|
import { enterComputerControl, leaveComputerControl } from "./control-guard.js";
|
|
8
8
|
import { ComputerDiagnosticSchema, ComputerOperationError, computerDiagnostic, computerRecovery } from "./errors.js";
|
|
9
9
|
import { ComputerModelAdapter, predictComputerStep, readComputerJson } from "./model-adapter.js";
|
package/dist/src/config/index.js
CHANGED
|
@@ -2,15 +2,15 @@ import { ENV_VARS, XOPC_DB_FILENAME, resolveHomeDir, resolveStateDir, resolveXop
|
|
|
2
2
|
import { TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema } from "../../extensions/telegram/src/config-schema.js";
|
|
3
3
|
import { WeixinAccountConfigSchema, WeixinConfigSchema } from "../../extensions/weixin/src/config-schema.js";
|
|
4
4
|
import { AgentImageGenerationModelSchema, AgentModelRefSchema, AgentModelsSchema, AgentsConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, BrowserConfigSchema, ChannelsConfigSchema, CommandsConfigSchema, ConfigSchema, ConnectorsConfigSchema, ExperimentalConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayBindModeSchema, GatewayChannelConnectDeferModeSchema, GatewayConfigSchema, GatewayModeSchema, GatewayRemoteSchema, GatewaySecuritySchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayTlsSchema, GatewayTrustedProxySchema, GatewayWebchatConfigSchema, HeartbeatConfigSchema, McpConfigSchema, McpOAuthConfigSchema, McpServerSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, MessagesConfigSchema, ModelCatalogConfigSchema, ModelsDevConfigSchema, ProviderAuthConfigSchema, ProviderAzureConfigSchema, ProviderRequestOverridesSchema, ProvidersConfigSchema, RuntimeToolsConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionResetByTypeSchema, SessionResetConfigSchema, SessionResetModeSchema, SessionScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, ToolsConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, TuiConfigSchema, TunnelConfigSchema, TunnelConsentSchema, UpdateAutoConfigSchema, UpdateConfigSchema, VoiceConfigSchema, VoiceRefinementConfigSchema, WebSearchConfigSchema, WebToolsConfigSchema, WebsiteBlocklistSchema, WorkspaceConfigSchema, WorkspaceImportConfigSchema, getAgentDefaultImageGenerationModelConfig, getAgentDefaultImageModelConfig, getAgentDefaultModelRef, init_schema, parseModelRef } from "./schema.js";
|
|
5
|
-
import {
|
|
5
|
+
import { applyConfigOverrides, getConfigOverrides, resetConfigOverrides, setConfigOverride, unsetConfigOverride } from "./runtime-overrides.js";
|
|
6
6
|
import { expandWorkspacePathString, init_workspace_path, normalizeWorkspaceDir, resolveWorkspaceRoot } from "./workspace-path.js";
|
|
7
7
|
import { resolveDefaultAgentWorkspaceDir } from "./workspace-defaults.js";
|
|
8
8
|
import { resolveAgentDir as resolveAgentDir$1, resolveAgentHomeDir as resolveAgentHomeDir$1, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
|
|
9
|
+
import { extractProfileAgentId, resolveEffectiveAgentConfigForAgent, resolveEffectiveAgentConfigForSession, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession } from "./agent-profile.js";
|
|
9
10
|
import { FILENAMES, WORKSPACE_FILES, existsSync, hasBundledExtensionManifest, init_paths, resolveAgentAuthProfilesPath, resolveAgentDir, resolveAgentHomeDir, resolveAgentProfileDir, resolveAgentProfileMarkdownPath, resolveAuthProfilesPath, resolveBinDir, resolveBundledExtensionsDir, resolveBundledSkillsDir, resolveConfigPath, resolveCredentialsDir, resolveExtensionSdkPath, resolveExtensionsDir, resolveExtensionsLockPath, resolveInboxDir, resolveInboxMessagePath, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogPath, resolveLogsDir, resolveMcpOAuthPath, resolveModelsJsonPath, resolveNodeBinDir, resolveNodeBinPath, resolveNodeToolsDir, resolveNpmBinPath, resolveOAuthPath, resolvePidPath, resolveSkillPath, resolveSkillsCachePath, resolveSkillsDir, resolveSkillsLockPath, resolveSocketPath, resolveStatusPath, resolveToolsDir, resolveWorkspaceExtensionsDir, resolveWorkspaceFile, resolveWorkspaceStateDir, resolveWorkspaceStatePath, resolveXopcBinPath } from "./paths.js";
|
|
10
|
-
import { CustomModelSchema, ImageGenerationCapabilitiesSchema, ImageGenerationModelSchema, ImageGenerationProviderSchema, ModelOverrideSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProviderConfigSchema, VercelGatewayRoutingSchema, getDefaultModelValues, init_models_json, loadModelsJson, modelsJsonExists, saveModelsJson, validateModelsConfig } from "./models-json.js";
|
|
11
11
|
import { init_loader, loadConfig, saveConfig } from "./loader.js";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
12
|
+
import { clearConfigValueCache, getAllowedCommands, getCacheStats, init_resolve_config_value, resolveConfigValue, resolveHeaders, testApiKeyResolution } from "./resolve-config-value.js";
|
|
13
|
+
import { CustomModelSchema, ImageGenerationCapabilitiesSchema, ImageGenerationModelSchema, ImageGenerationProviderSchema, ModelOverrideSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProviderConfigSchema, VercelGatewayRoutingSchema, getDefaultModelValues, init_models_json, loadModelsJson, modelsJsonExists, saveModelsJson, validateModelsConfig } from "./models-json.js";
|
|
14
14
|
import { canonicalizeConfiguredMcpServer, isKnownCliMcpTypeAlias, normalizeConfiguredMcpServers, resolveXopcMcpTransportAlias } from "./mcp-config-normalize.js";
|
|
15
15
|
import { formatThinkingLevels, listThinkingLevels, normalizeElevatedMode, normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel, thinkLevelToNumber } from "../agent/transcript/thinking-types.js";
|
|
16
16
|
import { getWorkspacePath } from "./workspace-path-helpers.js";
|
|
@@ -2,10 +2,10 @@ import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
|
2
2
|
import { createLogger } from "../utils/logger/index.js";
|
|
3
3
|
import { init_logger } from "../utils/logger.js";
|
|
4
4
|
import { ConfigSchema, init_schema } from "./schema.js";
|
|
5
|
-
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
6
5
|
import { init_paths, resolveConfigPath } from "./paths.js";
|
|
7
|
-
import {
|
|
6
|
+
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
8
7
|
import { assertChannelPluginConfigs, init_validate_channel_configs } from "./validate-channel-configs.js";
|
|
8
|
+
import { init_resolution, setActivePlatformDiscovery } from "../platform/resolution.js";
|
|
9
9
|
import { dirname } from "path";
|
|
10
10
|
import { existsSync, mkdirSync, promises, readFileSync } from "fs";
|
|
11
11
|
import { config } from "dotenv";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { ComputerProfileSchema, init_src } from "../../packages/computer-control-contract/src/index.js";
|
|
3
|
-
import { init_write_file_atomic, writeTextAtomicSync } from "../infra/write-file-atomic.js";
|
|
4
2
|
import { init_paths, resolveModelsJsonPath } from "./paths.js";
|
|
3
|
+
import { init_write_file_atomic, writeTextAtomicSync } from "../infra/write-file-atomic.js";
|
|
4
|
+
import { ComputerProfileSchema, init_src } from "../../packages/computer-control-contract/src/index.js";
|
|
5
5
|
import { init_model_policy, isComputerModel } from "../computer/model-policy.js";
|
|
6
6
|
import { existsSync, readFileSync } from "fs";
|
|
7
7
|
import { z } from "zod";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { startComposioAuthorize } from "./composio.js";
|
|
2
|
+
import { getMcpOAuthManager } from "../agent/mcp/oauth/mcp-oauth-manager.js";
|
|
2
3
|
import { isManagedConnectorServer } from "./materialize.js";
|
|
3
4
|
import { getConnectorInstance } from "./instances.js";
|
|
4
|
-
import { getMcpOAuthManager } from "../agent/mcp/oauth/mcp-oauth-manager.js";
|
|
5
5
|
//#region src/connectors/auth-provider-registry.ts
|
|
6
6
|
async function startConnectorAuthorization(definition, config, instanceId) {
|
|
7
7
|
if (definition.auth.mode !== "oauth") throw new Error(`Connector "${definition.id}" does not use OAuth.`);
|
|
@@ -6,8 +6,8 @@ import { ComposioSessionsAdapter } from "./composio-sessions.js";
|
|
|
6
6
|
import { decodeConnectedSourceCursor, encodeConnectedSourceCursor } from "./connected-source-cursor.js";
|
|
7
7
|
import { scopeForComposioAction } from "./composio.js";
|
|
8
8
|
import { getConnectorDefinition } from "./catalog.js";
|
|
9
|
-
import { getConnectorInstance } from "./instances.js";
|
|
10
9
|
import { getWorkspacePath } from "../config/workspace-path-helpers.js";
|
|
10
|
+
import { getConnectorInstance } from "./instances.js";
|
|
11
11
|
import { KnowledgeIngestionService } from "../knowledge/ingestion-service.js";
|
|
12
12
|
import { ConnectedKnowledgePipeline } from "../knowledge/connected-knowledge-pipeline.js";
|
|
13
13
|
import { LocalFolderKnowledgeSourceAdapter } from "../knowledge/local-folder-adapter.js";
|
|
@@ -13,9 +13,9 @@ import { getConnectorDefinition } from "./catalog.js";
|
|
|
13
13
|
import { capabilityActions, isToolInputSchema, missingConnectionCapabilities } from "./connection-capabilities.js";
|
|
14
14
|
import { connectorPrincipalForSession } from "./principal.js";
|
|
15
15
|
import { resolveConnectionCandidate } from "./connection-candidates.js";
|
|
16
|
+
import { persistConfigMutation } from "../config/config-mutation.js";
|
|
16
17
|
import { listConnectorInstances } from "./instances.js";
|
|
17
18
|
import { installConnector } from "./install.js";
|
|
18
|
-
import { persistConfigMutation } from "../config/config-mutation.js";
|
|
19
19
|
import { randomUUID } from "node:crypto";
|
|
20
20
|
//#region src/connectors/connection-recovery-service.ts
|
|
21
21
|
init_transaction();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { getWorkspacePath } from "../config/workspace-path-helpers.js";
|
|
1
2
|
import { materializeConnectorMcpServer } from "./materialize.js";
|
|
2
3
|
import { getConnectorInstance } from "./instances.js";
|
|
3
|
-
import { getWorkspacePath } from "../config/workspace-path-helpers.js";
|
|
4
4
|
import { listBundleMcpServerCapabilitiesForGateway } from "../agent/mcp/bundle-mcp-gateway.js";
|
|
5
5
|
//#region src/connectors/health.ts
|
|
6
6
|
function classifyConnectorHealthError(error) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
|
-
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
4
3
|
import { init_paths, resolveExtensionsDir, resolveExtensionsLockPath } from "../config/paths.js";
|
|
4
|
+
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
5
5
|
import { dirname, join } from "path";
|
|
6
6
|
import { existsSync } from "fs";
|
|
7
7
|
import { mkdir, readFile } from "fs/promises";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { init_agent_scope, listAgentEntries, normalizeAgentId, resolveAgentDir, resolveAgentProfileDir, resolveAgentWorkspaceDir, resolveDefaultAgentId, resolveUserPath, validateAgentIdForNewAgent } from "../agent/agent-scope.js";
|
|
2
|
-
import { WORKSPACE_FILES, init_paths } from "../config/paths.js";
|
|
3
2
|
import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
|
|
3
|
+
import { WORKSPACE_FILES, init_paths } from "../config/paths.js";
|
|
4
4
|
import { AGENT_PROFILE_MARKDOWN_SYSTEM_FILES, REQUIRED_AGENT_PROFILE_MARKDOWN_FILE_SET } from "../agent/context/workspace.js";
|
|
5
5
|
import { isPathUnderWorkspace, resolveWorkspaceSafePath } from "./workspace-editor-path.js";
|
|
6
6
|
import { seedAgentProfileMarkdownFiles } from "../agent/context/workspace-seed.js";
|
|
@@ -3,7 +3,10 @@ async function prepareAutomationAgentSession(store, projects, input) {
|
|
|
3
3
|
await store.resolveTranscriptPath(input.conversationId, { metadata: {
|
|
4
4
|
hiddenFromSessionList: true,
|
|
5
5
|
name: input.automationName,
|
|
6
|
-
customData: {
|
|
6
|
+
customData: {
|
|
7
|
+
titleSource: "provisional",
|
|
8
|
+
deferVisibilityUntilOutput: true
|
|
9
|
+
},
|
|
7
10
|
projectId: input.projectId,
|
|
8
11
|
sourceChannel: "automation",
|
|
9
12
|
sourceChatId: `default:dm:${input.peerId}`,
|
|
@@ -110,6 +110,7 @@ var ChatStreamMapper = class {
|
|
|
110
110
|
const outcome = parseTurnOutcome(event.outcome);
|
|
111
111
|
return outcome ? [this.make("turn_outcome", outcome)] : [];
|
|
112
112
|
}
|
|
113
|
+
case "session_config_updated": return [this.make("session_config_updated", {})];
|
|
113
114
|
case "error": return [this.make("error", {
|
|
114
115
|
code: "AGENT_RUN_ERROR",
|
|
115
116
|
message: String(event.content ?? event.message ?? "Unknown error"),
|
|
@@ -143,6 +143,7 @@ export type TurnDiffEvent = ChatStreamEnvelope<'turn_diff', {
|
|
|
143
143
|
removed: number;
|
|
144
144
|
}>;
|
|
145
145
|
export type TurnOutcomeEvent = ChatStreamEnvelope<'turn_outcome', TurnOutcome>;
|
|
146
|
+
export type SessionConfigUpdatedEvent = ChatStreamEnvelope<'session_config_updated', Record<string, never>>;
|
|
146
147
|
export type ReviewStartEvent = ChatStreamEnvelope<'review_start', {
|
|
147
148
|
messageId: string;
|
|
148
149
|
reviewId: string;
|
|
@@ -220,4 +221,4 @@ export type StreamErrorEvent = ChatStreamEnvelope<'error', {
|
|
|
220
221
|
recoverable?: boolean;
|
|
221
222
|
petFeedback: PetFeedback;
|
|
222
223
|
}>;
|
|
223
|
-
export type ChatStreamEvent = RunStartEvent | UserMessageEvent | UserTranscriptEvent | AssistantMessageStartEvent | AssistantDeltaEvent | ThinkingDeltaEvent | ThinkingEndEvent | ToolStartEvent | ToolUpdateEvent | ToolEndEvent | CommandStartedEvent | CommandOutputDeltaEvent | CommandCompletedEvent | PatchAppliedEvent | TurnPlanUpdatedEvent | TaskPlanUpdatedEvent | TurnDiffEvent | TurnOutcomeEvent | ReviewStartEvent | ReviewDeltaEvent | ReviewEndEvent | ReviewEvent | AssistantMessageEndEvent | ProgressEvent | CompactionEvent | TtsAudioEvent | ClarifyRequestEvent | RunEndEvent | StreamErrorEvent;
|
|
224
|
+
export type ChatStreamEvent = RunStartEvent | UserMessageEvent | UserTranscriptEvent | AssistantMessageStartEvent | AssistantDeltaEvent | ThinkingDeltaEvent | ThinkingEndEvent | ToolStartEvent | ToolUpdateEvent | ToolEndEvent | CommandStartedEvent | CommandOutputDeltaEvent | CommandCompletedEvent | PatchAppliedEvent | TurnPlanUpdatedEvent | TaskPlanUpdatedEvent | TurnDiffEvent | TurnOutcomeEvent | SessionConfigUpdatedEvent | ReviewStartEvent | ReviewDeltaEvent | ReviewEndEvent | ReviewEvent | AssistantMessageEndEvent | ProgressEvent | CompactionEvent | TtsAudioEvent | ClarifyRequestEvent | RunEndEvent | StreamErrorEvent;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { init_paths_state, resolveStateDir } from "../config/paths-state.js";
|
|
2
2
|
import { init_agent_scope, resolveAgentProfileDir } from "../agent/agent-scope.js";
|
|
3
|
-
import { init_paths, resolveConfigPath, resolveSkillsDir } from "../config/paths.js";
|
|
4
3
|
import { extractProfileAgentId } from "../config/agent-profile.js";
|
|
4
|
+
import { init_paths, resolveConfigPath, resolveSkillsDir } from "../config/paths.js";
|
|
5
5
|
import { isBareProfileMarkdownFileName, resolveProfileMarkdownPathIfBareName } from "../agent/tools/tool-paths.js";
|
|
6
6
|
import { isPathUnderWorkspace, resolveWorkspaceSafePath } from "./workspace-editor-path.js";
|
|
7
7
|
import { basename, isAbsolute, resolve } from "node:path";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { ContextPlanningConfigSchema, KnowledgeMemoryConfigSchema, UserModelConfigSchema, init_config } from "../../../user-context/config.js";
|
|
2
2
|
import { init_agent_scope, listAgentEntries, normalizeAgentId, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
|
|
3
3
|
import { resolveModelsJsonPath } from "../../../config/paths.js";
|
|
4
|
+
import { buildChannelCatalogForConfig, buildChannelCatalogFromSnapshot, getChannelSetupStatus, init_channel_catalog_service } from "../../../channels/catalog/channel-catalog-service.js";
|
|
4
5
|
import { init_models_json, loadModelsJson } from "../../../config/models-json.js";
|
|
5
6
|
import { CredentialResolver, init_credentials } from "../../../auth/credentials.js";
|
|
6
|
-
import { buildChannelCatalogForConfig, buildChannelCatalogFromSnapshot, getChannelSetupStatus, init_channel_catalog_service } from "../../../channels/catalog/channel-catalog-service.js";
|
|
7
7
|
import { getProviderRegistry, init_plugin_registry } from "../../../providers/plugin-registry.js";
|
|
8
8
|
import { getAllProviders, init_providers, isProviderConfigured } from "../../../providers/index.js";
|
|
9
9
|
import { normalizeConfiguredMcpServers } from "../../../config/mcp-config-normalize.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getStoreConnectorInstallPlan, installStoreConnector, listStoreConnectors } from "../../../capabilities/store-connector.js";
|
|
2
1
|
import { ConfigPersistenceError, persistConfigMutation } from "../../../config/config-mutation.js";
|
|
2
|
+
import { getStoreConnectorInstallPlan, installStoreConnector, listStoreConnectors } from "../../../capabilities/store-connector.js";
|
|
3
3
|
//#region src/gateway/hono/routes/capabilities.ts
|
|
4
4
|
function errorMessage(error) {
|
|
5
5
|
return error instanceof Error ? error.message : String(error);
|
|
@@ -12,16 +12,16 @@ import { createConnectorSetupSecretRequest, submitConnectorSetupSecret } from ".
|
|
|
12
12
|
import { configureComposioApiKey, executeComposioTool, getComposioInstallationPolicy, getComposioToolkitAuthState, getComposioToolkitScope, inspectComposioConnectorHealth, listComposioConnections, listComposioTools, refreshComposioConnection, revokeComposioConnection, setComposioToolkitScope, updateComposioConnection, updateComposioInstallationPolicy } from "../../../connectors/composio.js";
|
|
13
13
|
import { listConnectorProviders } from "../../../connectors/providers.js";
|
|
14
14
|
import { getConnectorDefinition, listConnectorCatalog } from "../../../connectors/catalog.js";
|
|
15
|
+
import { ConfigPersistenceError, persistConfigMutation } from "../../../config/config-mutation.js";
|
|
16
|
+
import { getMcpOAuthManager } from "../../../agent/mcp/oauth/mcp-oauth-manager.js";
|
|
15
17
|
import { recordConnectorHealthUsage } from "../../../connectors/usage.js";
|
|
16
18
|
import { getConnectorInstance, getInstalledConnectorDefinition, listConnectorInstances } from "../../../connectors/instances.js";
|
|
17
|
-
import { installConnector, installConnectorDefinition, uninstallConnector, updateConnectorConfig } from "../../../connectors/install.js";
|
|
18
|
-
import { getMcpOAuthManager } from "../../../agent/mcp/oauth/mcp-oauth-manager.js";
|
|
19
19
|
import { startConnectorAuthorization } from "../../../connectors/auth-provider-registry.js";
|
|
20
20
|
import { composioLogoResponse } from "../../../connectors/composio-logo.js";
|
|
21
21
|
import { inspectManagedComposioStatus } from "../../../connectors/composio-managed-client.js";
|
|
22
22
|
import { appendComposioTriggerEvent, listComposioTriggerEvents } from "../../../connectors/composio-triggers.js";
|
|
23
23
|
import { ingestLocalFolderSource } from "../../../connectors/connected-source-ingestion.js";
|
|
24
|
-
import {
|
|
24
|
+
import { installConnector, installConnectorDefinition, uninstallConnector, updateConnectorConfig } from "../../../connectors/install.js";
|
|
25
25
|
import { previewConnectorDefinition, testConnectorInstance } from "../../../connectors/health.js";
|
|
26
26
|
import { listUnderstandingSourceGrants, revokeUnderstandingSourceGrant } from "../../../user-context/sources/repository.js";
|
|
27
27
|
import { setConnectorEnabled } from "../../../connectors/lifecycle.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { canonicalizeConfiguredMcpServer, normalizeConfiguredMcpServers } from "../../../config/mcp-config-normalize.js";
|
|
2
2
|
import { loadMergedBundleMcpConfig } from "../../../agent/mcp/bundle-mcp-config.js";
|
|
3
|
-
import { isManagedConnectorServer } from "../../../connectors/materialize.js";
|
|
4
3
|
import { getWorkspacePath } from "../../../config/workspace-path-helpers.js";
|
|
5
4
|
import { getMcpOAuthManager } from "../../../agent/mcp/oauth/mcp-oauth-manager.js";
|
|
5
|
+
import { isManagedConnectorServer } from "../../../connectors/materialize.js";
|
|
6
6
|
import { listBundleMcpServerCapabilitiesForGateway, listBundleMcpServerToolsForGateway } from "../../../agent/mcp/bundle-mcp-gateway.js";
|
|
7
7
|
//#region src/gateway/hono/routes/mcp.ts
|
|
8
8
|
function registerMcpRoutes(authenticated, deps) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { init_resolve_config_value, testApiKeyResolution } from "../../../config/resolve-config-value.js";
|
|
2
1
|
import { resolveModelsJsonPath } from "../../../config/paths.js";
|
|
2
|
+
import { init_resolve_config_value, testApiKeyResolution } from "../../../config/resolve-config-value.js";
|
|
3
3
|
import { computerModelProfile, init_model_policy } from "../../../computer/model-policy.js";
|
|
4
4
|
import { init_models_json, loadModelsJson, saveModelsJson, validateModelsConfig } from "../../../config/models-json.js";
|
|
5
5
|
import { getModelCatalogStore, init_model_catalog_store } from "../../../providers/model-catalog-store.js";
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import type { Context } from 'hono';
|
|
2
2
|
import type { AuthenticatedRouteDeps } from './deps.js';
|
|
3
|
-
export declare function submitSessionInput(c: Context, deps: AuthenticatedRouteDeps, conversationId: string
|
|
3
|
+
export declare function submitSessionInput(c: Context, deps: AuthenticatedRouteDeps, conversationId: string, options?: {
|
|
4
|
+
taskConversation?: boolean;
|
|
5
|
+
}): Promise<(Response & import("hono").TypedResponse<{
|
|
4
6
|
ok: false;
|
|
5
7
|
error: {
|
|
6
8
|
code: string;
|
|
@@ -3,6 +3,11 @@ import { init_src } from "../../../../packages/gateway-contract/src/index.js";
|
|
|
3
3
|
import { endpointTurnClaimSchema, init_src as init_src$1 } from "../../../../packages/endpoint-tools-protocol/src/index.js";
|
|
4
4
|
import { init_providers, resolveModel } from "../../../providers/index.js";
|
|
5
5
|
import { validateWebchatAttachments, validateWebchatContent } from "../../chat-limits.js";
|
|
6
|
+
import { isTaskDestructiveCommand } from "../../../session/reset-triggers.js";
|
|
7
|
+
import { parseSlashCommand } from "../../../chat-commands/command-parse.js";
|
|
8
|
+
import { commandRegistry } from "../../../chat-commands/registry.js";
|
|
9
|
+
import "../../../chat-commands/index.js";
|
|
10
|
+
import { isVoiceLikeAttachment } from "../../../channels/attachments/voice-stt-webchat.js";
|
|
6
11
|
import { parseTurnContextRefs } from "../../../agent/source-context/types.js";
|
|
7
12
|
import { getModelThinking } from "../../../providers/model-thinking.js";
|
|
8
13
|
import { withModelConfigLock } from "../../../session/model-config-lock.js";
|
|
@@ -12,7 +17,7 @@ init_src();
|
|
|
12
17
|
init_src$1();
|
|
13
18
|
init_providers();
|
|
14
19
|
const MAX_TURN_CONTEXTS = 5;
|
|
15
|
-
async function submitSessionInput(c, deps, conversationId) {
|
|
20
|
+
async function submitSessionInput(c, deps, conversationId, options) {
|
|
16
21
|
const body = await c.req.json().catch(() => null);
|
|
17
22
|
if (!body || !conversationId) return c.json({
|
|
18
23
|
ok: false,
|
|
@@ -39,6 +44,21 @@ async function submitSessionInput(c, deps, conversationId) {
|
|
|
39
44
|
}
|
|
40
45
|
}, 400);
|
|
41
46
|
const content = typeof body.content === "string" ? body.content : "";
|
|
47
|
+
if (options?.taskConversation && isTaskDestructiveCommand(content)) return c.json({
|
|
48
|
+
ok: false,
|
|
49
|
+
error: {
|
|
50
|
+
code: "BAD_REQUEST",
|
|
51
|
+
message: "A task has one continuous conversation."
|
|
52
|
+
}
|
|
53
|
+
}, 400);
|
|
54
|
+
const parsedCommand = parseSlashCommand(content);
|
|
55
|
+
if (parsedCommand && commandRegistry.has(parsedCommand.command) && attachments?.some((attachment) => !isVoiceLikeAttachment(attachment))) return c.json({
|
|
56
|
+
ok: false,
|
|
57
|
+
error: {
|
|
58
|
+
code: "BAD_REQUEST",
|
|
59
|
+
message: "Slash commands do not accept file or image attachments."
|
|
60
|
+
}
|
|
61
|
+
}, 400);
|
|
42
62
|
const contentError = validateWebchatContent(content);
|
|
43
63
|
if (contentError) return c.json({
|
|
44
64
|
ok: false,
|
|
@@ -222,7 +222,7 @@ function registerTaskRoutes(authenticated, deps) {
|
|
|
222
222
|
message: "Task executor changed; refresh the conversation"
|
|
223
223
|
}
|
|
224
224
|
}, 409);
|
|
225
|
-
return submitSessionInput(c, deps, active.conversationId);
|
|
225
|
+
return submitSessionInput(c, deps, active.conversationId, { taskConversation: true });
|
|
226
226
|
});
|
|
227
227
|
authenticated.patch("/api/tasks/:id/conversation/config", taskRateLimit, async (c) => {
|
|
228
228
|
const body = await c.req.json().catch(() => null);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
-
import { getModelRegistry } from "../../providers/model-registry.js";
|
|
4
3
|
import { loadConfig, saveConfig } from "../../config/loader.js";
|
|
4
|
+
import { getModelRegistry } from "../../providers/model-registry.js";
|
|
5
5
|
import { init_providers } from "../../providers/index.js";
|
|
6
6
|
import { disposeAllSessionMcpRuntimes } from "../../agent/mcp/bundle-mcp-runtime.js";
|
|
7
7
|
import { reloadImageGenerationProviders } from "../../agent/image/generation/provider-registry.js";
|
|
@@ -12,6 +12,7 @@ import { TaskRunCoordinator } from "../../tasks/task-run-coordinator.js";
|
|
|
12
12
|
import { formatAgentRunErrorForClient } from "../../agent/client-error-format.js";
|
|
13
13
|
import "../chat-limits.js";
|
|
14
14
|
import { prependEnvelopeTimestamp } from "../../channels/envelope-timestamp.js";
|
|
15
|
+
import { markdownNotificationPreview } from "../../notifications/plain-text.js";
|
|
15
16
|
import { ChatStreamMapper } from "../chat-stream/mapper.js";
|
|
16
17
|
import { resolveWebchatConversationId } from "../resolve-webchat-session-key.js";
|
|
17
18
|
import { recordExplicitRelationshipFollowUp } from "../../user-context/relationship-continuity.js";
|
|
@@ -326,9 +327,7 @@ async function* runGatewayAgent(deps, message, channel, chatId, origin, attachme
|
|
|
326
327
|
}
|
|
327
328
|
if (webchatConversationId) {
|
|
328
329
|
const metaAfter = await sessionIndex.getSessionMetadata(webchatConversationId).catch(() => void 0);
|
|
329
|
-
const
|
|
330
|
-
const responseCharacters = Array.from(normalizedResponse);
|
|
331
|
-
const responsePreview = responseCharacters.length > 180 ? `${responseCharacters.slice(0, 179).join("")}…` : normalizedResponse;
|
|
330
|
+
const responsePreview = terminalStatus === "success" ? markdownNotificationPreview(mapper.getLastAssistantText(), 180) : "";
|
|
332
331
|
if (metaAfter?.name) emit("session.updated", {
|
|
333
332
|
key: webchatConversationId,
|
|
334
333
|
name: metaAfter.name
|
|
@@ -13,17 +13,17 @@ import { getSessionConfig } from "../storage/sqlite/config-repository.js";
|
|
|
13
13
|
import "../storage/sqlite/index.js";
|
|
14
14
|
import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
|
|
15
15
|
import { init_agent_scope, listAgentEntries, normalizeAgentId, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent/agent-scope.js";
|
|
16
|
+
import { init_agent_session_key, resolveAgentMainConversationId } from "../routing/agent-session-key.js";
|
|
17
|
+
import { init_session_key, resolveConversationId, sanitizeSegment } from "../routing/session-key.js";
|
|
18
|
+
import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
|
|
19
|
+
import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
|
|
16
20
|
import { init_paths, resolveConfigPath, resolveExtensionsDir } from "../config/paths.js";
|
|
17
|
-
import { prewarmModelRegistry } from "../providers/model-registry.js";
|
|
18
21
|
import { areExtensionsGloballyDisabled } from "../extensions/discover-extensions.js";
|
|
19
22
|
import { buildExtensionMetadataSnapshot } from "../extensions/extension-metadata-snapshot.js";
|
|
20
23
|
import { buildChannelCatalogForConfig, buildChannelCatalogFromSnapshot, init_channel_catalog_service } from "../channels/catalog/channel-catalog-service.js";
|
|
21
24
|
import { loadConfig, saveConfig } from "../config/loader.js";
|
|
22
|
-
import {
|
|
23
|
-
import { init_session_key, resolveConversationId, sanitizeSegment } from "../routing/session-key.js";
|
|
24
|
-
import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
|
|
25
|
+
import { prewarmModelRegistry } from "../providers/model-registry.js";
|
|
25
26
|
import { init_providers, providers_exports } from "../providers/index.js";
|
|
26
|
-
import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
|
|
27
27
|
import { TaskRepository } from "../tasks/task-repository.js";
|
|
28
28
|
import { TaskConversationRepository } from "../tasks/task-conversation-repository.js";
|
|
29
29
|
import { getEmbeddedExecutionSession } from "../agent/embedded/execution-context.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function markdownNotificationPreview(markdown: string, maxCharacters: number): string;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { markdownToIR } from "../markdown/ir.js";
|
|
2
|
+
import "../markdown/index.js";
|
|
3
|
+
//#region src/notifications/plain-text.ts
|
|
4
|
+
function markdownNotificationPreview(markdown, maxCharacters) {
|
|
5
|
+
const plainText = markdownToIR(markdown, {
|
|
6
|
+
enableSpoilers: true,
|
|
7
|
+
linkify: true,
|
|
8
|
+
tableMode: "bullets"
|
|
9
|
+
}).text.replace(/\s+/g, " ").trim();
|
|
10
|
+
const characters = Array.from(plainText);
|
|
11
|
+
return characters.length > maxCharacters ? `${characters.slice(0, Math.max(0, maxCharacters - 1)).join("")}…` : plainText;
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { markdownNotificationPreview };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { NotificationTargetSchema } from "../../packages/gateway-contract/src/notifications.js";
|
|
2
2
|
import { init_src } from "../../packages/gateway-contract/src/index.js";
|
|
3
|
+
import { markdownNotificationPreview } from "./plain-text.js";
|
|
3
4
|
//#region src/notifications/planner.ts
|
|
4
5
|
init_src();
|
|
5
6
|
function chatPlan(payload) {
|
|
@@ -16,7 +17,7 @@ function chatPlan(payload) {
|
|
|
16
17
|
zh: "打开对话查看结果。"
|
|
17
18
|
};
|
|
18
19
|
const sessionTitle = typeof event.sessionTitle === "string" ? event.sessionTitle.trim().slice(0, 120) : "";
|
|
19
|
-
const responsePreview = completed && typeof event.responsePreview === "string" ?
|
|
20
|
+
const responsePreview = completed && typeof event.responsePreview === "string" ? markdownNotificationPreview(event.responsePreview, 180) : "";
|
|
20
21
|
return {
|
|
21
22
|
dedupeKey: `${type}:${event.runId}`,
|
|
22
23
|
notification: {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { getApiKeyFromEnv, init_env_keys } from "../env-keys.js";
|
|
2
1
|
import { init_sync_provider_auth, resolveProviderApiKeyForAgentSync } from "../../auth/sync-provider-auth.js";
|
|
2
|
+
import { getApiKeyFromEnv, init_env_keys } from "../env-keys.js";
|
|
3
3
|
import { getDefaultAuthProfileStore } from "./auth-profile-store.js";
|
|
4
4
|
//#region src/providers/auth-runtime/resolve-auth.ts
|
|
5
5
|
init_env_keys();
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { __esmMin, __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
|
|
3
|
+
import { getModelOAuthProviderIds, init_registry } from "../auth/oauth/registry.js";
|
|
4
|
+
import { hasProviderAuthOnDiskSync, init_sync_provider_auth } from "../auth/sync-provider-auth.js";
|
|
3
5
|
import { PROVIDER_ENV_MAP, getApiKeyFromEnv, init_env_keys } from "./env-keys.js";
|
|
4
6
|
import { init_model_ref, splitProviderModelRef } from "./model-ref.js";
|
|
5
7
|
import { ModelRegistry, getModelRegistry, init_model_registry, prewarmModelRegistry, resetModelRegistry } from "./model-registry.js";
|
|
6
|
-
import { getModelOAuthProviderIds, init_registry } from "../auth/oauth/registry.js";
|
|
7
8
|
import { CredentialResolver, hasCredentials, init_credentials } from "../auth/credentials.js";
|
|
8
|
-
import { hasProviderAuthOnDiskSync, init_sync_provider_auth } from "../auth/sync-provider-auth.js";
|
|
9
9
|
import { EXTENSION_PROVIDER_BASE_URL, init_constants } from "./constants.js";
|
|
10
10
|
import { applyOfficialModelMetadataCorrections, getSupplementalModels, init_model_supplements } from "./model-supplements.js";
|
|
11
11
|
import { getProviderRegistry, init_plugin_registry } from "./plugin-registry.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { init_paths_state, resolveXopcCloudCatalogCachePath } from "../config/paths-state.js";
|
|
3
|
-
import { ComputerProfileSchema, init_src } from "../../packages/computer-control-contract/src/index.js";
|
|
4
3
|
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
4
|
+
import { ComputerProfileSchema, init_src } from "../../packages/computer-control-contract/src/index.js";
|
|
5
5
|
import { voiceManifestSchema } from "../../packages/realtime-protocol/src/voice-catalog.js";
|
|
6
6
|
import { init_voice } from "../../packages/realtime-protocol/src/voice.js";
|
|
7
7
|
import { readFileSync, rmSync } from "node:fs";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { createLogger } from "../utils/logger/index.js";
|
|
3
3
|
import { init_logger } from "../utils/logger.js";
|
|
4
|
-
import { init_resolve_config_value, resolveConfigValue, resolveHeaders } from "../config/resolve-config-value.js";
|
|
5
4
|
import { resolveModelsJsonPath } from "../config/paths.js";
|
|
5
|
+
import { init_resolve_config_value, resolveConfigValue, resolveHeaders } from "../config/resolve-config-value.js";
|
|
6
6
|
import { getDefaultModelValues, init_models_json, validateModelsConfig } from "../config/models-json.js";
|
|
7
7
|
import { getApiKeyFromEnv, init_env_keys } from "./env-keys.js";
|
|
8
8
|
import { getModelCatalogStore, init_model_catalog_store } from "./model-catalog-store.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { getModelCatalogStore, init_model_catalog_store } from "./model-catalog-store.js";
|
|
3
2
|
import { getOAuthProviderDefinition, init_registry } from "../auth/oauth/registry.js";
|
|
3
|
+
import { getModelCatalogStore, init_model_catalog_store } from "./model-catalog-store.js";
|
|
4
4
|
import { XOPC_CLOUD_PROVIDER_ID, init_xopc_cloud_config, resolveXopcModelRouterUrl } from "./xopc-cloud-config.js";
|
|
5
5
|
//#region src/providers/register-runtime-providers.ts
|
|
6
6
|
function registerRuntimeProvider(modelRuntime, source) {
|
|
@@ -17,4 +17,6 @@ export declare function resolveResetTriggers(configured?: string[]): readonly st
|
|
|
17
17
|
export declare function bareResetAckMessage(matchedTrigger?: string): string;
|
|
18
18
|
/** Slash command names that overlap reset triggers — skip when init already reset. */
|
|
19
19
|
export declare const RESET_OVERLAP_COMMANDS: Set<string>;
|
|
20
|
+
export declare const TASK_DESTRUCTIVE_COMMANDS: Set<string>;
|
|
21
|
+
export declare function isTaskDestructiveCommand(body: string): boolean;
|
|
20
22
|
export declare function shouldSkipResetOverlapCommand(command: string | undefined, resetTriggered: boolean): boolean;
|
|
@@ -53,9 +53,19 @@ const RESET_OVERLAP_COMMANDS = new Set([
|
|
|
53
53
|
"reset",
|
|
54
54
|
"restart"
|
|
55
55
|
]);
|
|
56
|
+
const TASK_DESTRUCTIVE_COMMANDS = new Set([
|
|
57
|
+
...RESET_OVERLAP_COMMANDS,
|
|
58
|
+
"clear",
|
|
59
|
+
"archive"
|
|
60
|
+
]);
|
|
61
|
+
function isTaskDestructiveCommand(body) {
|
|
62
|
+
const normalized = stripLeadingEnvelopeTimestamp(body.trim());
|
|
63
|
+
const match = /^\/([^\s@]+)(?:@[^\s]+)?(?:\s|$)/.exec(normalized);
|
|
64
|
+
return Boolean(match && TASK_DESTRUCTIVE_COMMANDS.has(match[1].toLowerCase()));
|
|
65
|
+
}
|
|
56
66
|
function shouldSkipResetOverlapCommand(command, resetTriggered) {
|
|
57
67
|
if (!resetTriggered || !command) return false;
|
|
58
68
|
return RESET_OVERLAP_COMMANDS.has(command.toLowerCase());
|
|
59
69
|
}
|
|
60
70
|
//#endregion
|
|
61
|
-
export { DEFAULT_RESET_TRIGGERS, RESET_OVERLAP_COMMANDS, bareResetAckMessage, matchResetTriggers, resolveResetTriggers, shouldSkipResetOverlapCommand, stripLeadingEnvelopeTimestamp };
|
|
71
|
+
export { DEFAULT_RESET_TRIGGERS, RESET_OVERLAP_COMMANDS, TASK_DESTRUCTIVE_COMMANDS, bareResetAckMessage, isTaskDestructiveCommand, matchResetTriggers, resolveResetTriggers, shouldSkipResetOverlapCommand, stripLeadingEnvelopeTimestamp };
|
|
@@ -71,7 +71,18 @@ function listSessionMetadata(query = {}) {
|
|
|
71
71
|
const db = getSqliteDatabase();
|
|
72
72
|
const conditions = [];
|
|
73
73
|
const params = [];
|
|
74
|
-
if (!query.includeHidden)
|
|
74
|
+
if (!query.includeHidden) {
|
|
75
|
+
conditions.push(`s.hidden_from_session_list = 0`);
|
|
76
|
+
conditions.push(`(
|
|
77
|
+
s.source_channel NOT IN ('automation', 'workflow')
|
|
78
|
+
OR COALESCE(TRIM(s.name), '') != ''
|
|
79
|
+
OR EXISTS (
|
|
80
|
+
SELECT 1 FROM transcript_entries visible_output
|
|
81
|
+
WHERE visible_output.transcript_id = s.active_transcript_id
|
|
82
|
+
AND visible_output.role IN ('assistant', 'toolResult')
|
|
83
|
+
)
|
|
84
|
+
)`);
|
|
85
|
+
}
|
|
75
86
|
if (query.sessionTypes?.length) {
|
|
76
87
|
conditions.push(`s.session_type IN (${query.sessionTypes.map(() => "?").join(", ")})`);
|
|
77
88
|
params.push(...query.sessionTypes);
|