@xopcai/xopc 0.0.219 → 0.0.221
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-slG02hSm.js → activity-store-NItGQmvR.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DZ6ETNIk.js → agent-avatar-dicebear-B8SBTGg3.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-DxaIH0Ep.js → agents-Brs2-m6t.js} +1 -1
- package/dist/gateway/static/root/assets/{api-Tz57QxiN.js → api-53ZXsuyr.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-DdR1L4LR.js → app-management-settings-panel-BtmPXaqu.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-wYbwqmee.js → appearance-settings-t7HoJyNN.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-CyWr6KyO.js → apps-page-DJ_Dsb1j.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-DKXa160O.js → archive-plugin-D8o8CP9Y.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-CzwA9g2y.js → attachment-load-CsLXzas8.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-DwAXyWAY.js → automations-page-D-zgoAKz.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-CL7ieYIt.js → automations-workspace-DehLRXfd.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-DoQ_DnT7.js → binary-plugins-B-MjP_22.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-Bj_Uxxng.js → block-editor-i4CfDqLG.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-BYa_FNC1.js → browser-settings-page-C3QIO4Ti.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-workflow-inputs-D4roXE6r.js → browser-workflow-inputs-Bi6RSSpD.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-workflows-page-CleKTAKD.js → browser-workflows-page-EEFHUm1i.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-DYG37N0k.js → capabilities-settings-panel-BHhUp7FW.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-api-wtEN6Ss6.js → capability-presets-api-pC2fno7r.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-settings-panel-C0Q4dFq-.js → capability-presets-settings-panel-DoClNVLz.js} +1 -1
- package/dist/gateway/static/root/assets/{channel-recipient-api-DhuS2RJ3.js → channel-recipient-api-B5Szgu_z.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-CpO6Xg0n.js → channels-settings-Je-9a5ZC.js} +1 -1
- package/dist/gateway/static/root/assets/channels-status-swr-ByRbxC6z.js +1 -0
- package/dist/gateway/static/root/assets/{chat-terminal-dock-ClQMDe2n.js → chat-terminal-dock-DT-OFl4r.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-BvyiPdKU.js → connectors-page-D8z9Trw4.js} +1 -1
- package/dist/gateway/static/root/assets/{cron-expression-4DvCFs-v.js → cron-expression-MZ_AJqrm.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-B6FSjt4Z.js → date-picker-Bv9hZLuD.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-Za18eMp1.js → dependency-picker-D-6oO_Vk.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-DUUf3yyJ.js → desktop-pet-CiI5caKj.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-Dwx3GfB8.js → desktop-pet-settings-DhkSOy4K.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-C6dfTCsl.js → directory-picker-path-field-C4s4Pz8I.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-Cordpg4X.js → extension-debug-page-DE7J1-6W.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-Dw0dGyMl.js → extension-page-DSnACD7E.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-B2pUMaXm.js → extension-settings-page-Dk7k2Pok.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-DAZUOEQh.js → gateway-config-api-IOA1OlHx.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-BIqRg-zo.js → gateway-config-swr-BzTbnu4O.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-ik2f-pmV.js → gateway-settings-FX7QsgSQ.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-BFjWYOCS.js → gateway-startup-retry-B2zpkNvi.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-BE81XJ8F.js → heartbeat-settings-D5CGVyci.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-BTWXJu_m.js → home-page-DzfZFZx5.js} +1 -1
- package/dist/gateway/static/root/assets/{image-generation-api-HXAWlgm6.js → image-generation-api-BXRjz-iY.js} +1 -1
- package/dist/gateway/static/root/assets/index-Dcj5KJRg.css +2 -0
- package/dist/gateway/static/root/assets/{index-B6gWYy08.js → index-EvA8c7fo.js} +11 -45
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-ROqQ_Xlo.js → keyboard-shortcuts-settings-BjYiM4xq.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-Dcaf190G.js → local-app-workbench-page-hPyTaVYU.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-Be79cyMG.js → local-apps-page-7DHvwSgA.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-DfK-Hofd.js → locale-store-iKjqemWG.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-C2pjbXno.js → logs-page-DW0xMKWP.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-CRspx0oY.js → management-settings-BSxppo9Z.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-split-G3PTpGw3.js → markdown-split-D4oDjZtl.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-D4FPJZ91.js → markdown-view-DYkxMtJA.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-DT0P7j7u.js → media-plugins-BPNTGROA.js} +1 -1
- package/dist/gateway/static/root/assets/messages-kx5W39dO.js +3 -0
- package/dist/gateway/static/root/assets/{notes-api-q7HjYO07.js → notes-api-DJizatxh.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-Cgl2h7AR.js → notes-page-DU5tKPTq.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-workbench-DFMQYyGJ.js → notes-workbench-D669d98r.js} +2 -2
- package/dist/gateway/static/root/assets/pcm-capture-worklet-uW_SEACy.js +1 -0
- package/dist/gateway/static/root/assets/{product-open-page-ComKLO4D.js → product-open-page-CPoQvD6P.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-DUFmQscH.js → project-detail-page-CpsQ9PTA.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-CTWxt3dv.js → projects-page-CitO1LMc.js} +1 -1
- package/dist/gateway/static/root/assets/{registry-api-BBoJ7khF.js → registry-api-Cx3JxXSL.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-qmG-3qjj.js → remote-access-hub-C9-bL4V6.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CXHQc53b.js → runtime-tools-settings-panel-xqnWcvIv.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-3jTDF2lJ.js → schema-form-CuIDPYu6.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-D_We4_MV.js → sessions-page-CPSARi4y.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-BxT80Fmr.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-CUDozALU.js → settings-form-section-DkAv9ncE.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-H3ZH6a6l.js → settings-loading-skeleton-BJUQiEKb.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-tx29z21o.js → settings-page-KHRbLwmw.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-VunfXpTX.js → setup-status-panel-C8jd20Db.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-MyThymEx.js → share-preview-page-WCVtJ3sX.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-DkZvY1cr.js → shares-settings-DrQ_cOXh.js} +1 -1
- package/dist/gateway/static/root/assets/skill-reload-api-C_4cG30x.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-BOOyMnno.js → skills-page-CKhR9J81.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-Bl5Yv3Cx.js → skills-page.utils-AYX-e5sD.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-DwQ3O1ta.js → system-settings-panel-IIF-K9ML.js} +1 -1
- package/dist/gateway/static/root/assets/{task-detail-page-BwOyrADL.js → task-detail-page-CYjsecEr.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-Br4BtK4x.js → theme-store-BOD2D0dJ.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-DRS3RwS9.js → use-autosave-DcktF1j1.js} +1 -1
- package/dist/gateway/static/root/assets/{user-context-page-ClV2r3Cr.js → user-context-page-Cy1D2hkt.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-CGTE5156.js → voice-api-key-field-BMkNTHHE.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-CW-HKD7h.js → work-discovery-overlay-DVoiXekA.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-Dtr9fDC8.js → workflow-run-setup-panel-Cw4LQjuM.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-CDOyNgZf.js → workflows-page-DKKH1_Yt.js} +1 -1
- package/dist/gateway/static/root/index.html +12 -12
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.js +3 -3
- 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/ipc/inbox.js +1 -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/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 +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +1 -1
- package/dist/src/cli/commands/extension.js +1 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/config/index.js +4 -4
- package/dist/src/config/loader.js +1 -1
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/connectors/connected-source-understanding.js +6 -5
- package/dist/src/connectors/learning-coordinator.js +11 -2
- package/dist/src/extensions/lockfile.js +1 -1
- package/dist/src/extensions/update.js +1 -1
- package/dist/src/gateway/agents-admin.js +1 -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/auth-registry-extensions.js +1 -1
- package/dist/src/gateway/hono/routes/models.js +1 -1
- package/dist/src/gateway/hono/routes/understanding-sources.d.ts +9 -0
- package/dist/src/gateway/hono/routes/understanding-sources.js +47 -14
- package/dist/src/gateway/hono/routes/work-discovery.js +13 -3
- package/dist/src/gateway/service/agent-runner.d.ts +4 -0
- package/dist/src/gateway/service/agent-runner.js +6 -0
- package/dist/src/gateway/service/config-coordinator.js +2 -2
- package/dist/src/gateway/service/run-gateway-agent.js +13 -8
- package/dist/src/gateway/service/sessions-api.d.ts +9 -0
- package/dist/src/gateway/service/sessions-api.js +3 -0
- package/dist/src/gateway/service.js +5 -4
- package/dist/src/infra/update-runner.js +1 -1
- package/dist/src/knowledge/connected-knowledge-pipeline.d.ts +6 -0
- package/dist/src/knowledge/connected-knowledge-pipeline.js +35 -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/retrieval/queryProfile.d.ts +2 -0
- package/dist/src/retrieval/queryProfile.js +11 -1
- package/dist/src/storage/sqlite/index.d.ts +2 -2
- package/dist/src/storage/sqlite/index.js +3 -3
- package/dist/src/storage/sqlite/knowledge-repository.d.ts +5 -1
- package/dist/src/storage/sqlite/knowledge-repository.js +16 -1
- package/dist/src/storage/sqlite/memory-records-repository.d.ts +2 -0
- package/dist/src/storage/sqlite/memory-records-repository.js +21 -1
- package/dist/src/storage/sqlite/migrations/133_archive_legacy_work_discovery_profile_facts.sql +11 -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/storage/sqlite/session-repository.js +2 -2
- package/dist/src/tasks/home-query-service.d.ts +14 -0
- package/dist/src/tasks/home-query-service.js +19 -2
- package/dist/src/tui/tui-startup-resources.js +1 -1
- package/dist/src/tui/tui.js +1 -1
- package/dist/src/user-context/consolidation.d.ts +1 -0
- package/dist/src/user-context/consolidation.js +62 -2
- package/dist/src/user-context/focus-lifecycle.d.ts +2 -0
- package/dist/src/user-context/focus-lifecycle.js +26 -0
- package/dist/src/user-context/planner.js +46 -13
- package/dist/src/work-discovery/analyzer.js +6 -4
- package/dist/src/work-discovery/index.js +2 -2
- package/dist/src/work-discovery/service.d.ts +12 -3
- package/dist/src/work-discovery/service.js +164 -83
- package/dist/src/work-discovery/source-repository.d.ts +1 -0
- package/dist/src/work-discovery/source-repository.js +10 -4
- package/dist/src/work-discovery/types.d.ts +2 -1
- package/dist/src/workflows/service/workflow-run-service.js +1 -1
- package/package.json +3 -3
- package/dist/gateway/static/root/assets/channels-status-swr-CXhPeiNj.js +0 -1
- package/dist/gateway/static/root/assets/index-CDkuz_YC.css +0 -2
- package/dist/gateway/static/root/assets/messages-B701TEZ5.js +0 -3
- package/dist/gateway/static/root/assets/settings-advanced-gate-B_QhPgU0.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DVDOh1iY.js +0 -1
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { deleteUnderstanding, listUnderstandingEvidence, listUnderstandings, setUnderstandingStatus } from "../../../storage/sqlite/user-context-repository.js";
|
|
2
|
+
import { countKnowledgeSourceItems, deleteKnowledgeSourceItems } from "../../../storage/sqlite/knowledge-repository.js";
|
|
3
|
+
import { countMemoryRecordsBySourceInstanceId, deleteMemoryRecordsBySourceInstanceId } from "../../../storage/sqlite/memory-records-repository.js";
|
|
2
4
|
import { getConnectorAccount } from "../../../storage/sqlite/connector-account-repository.js";
|
|
3
5
|
import "../../../storage/sqlite/index.js";
|
|
4
6
|
import { init_agent_scope, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
|
|
@@ -44,14 +46,33 @@ function sourceRevocationImpact(grantId) {
|
|
|
44
46
|
if ((focus.sourceRunId ? getUnderstandingSourceRun(focus.sourceRunId) : null)?.grantId !== grantId) return [];
|
|
45
47
|
return listUserFocusEvidence(focus.id).some((entry) => !belongs(entry)) ? [] : [focus];
|
|
46
48
|
});
|
|
49
|
+
const memoryRecordCount = sourceInstanceId ? countMemoryRecordsBySourceInstanceId(sourceInstanceId) : 0;
|
|
50
|
+
const boundedRawCount = sourceInstanceId ? countKnowledgeSourceItems(sourceInstanceId) : 0;
|
|
47
51
|
return {
|
|
48
52
|
grant,
|
|
53
|
+
sourceInstanceId,
|
|
49
54
|
understandingIds: understandings.map((item) => item.id),
|
|
50
55
|
focusIds: focuses.map((item) => item.id),
|
|
51
|
-
derivedCount: understandings.length + focuses.length,
|
|
56
|
+
derivedCount: understandings.length + focuses.length + memoryRecordCount,
|
|
52
57
|
understandingCount: understandings.length,
|
|
53
58
|
focusCount: focuses.length,
|
|
54
|
-
|
|
59
|
+
memoryRecordCount,
|
|
60
|
+
boundedRawCount
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function applySourceRevocationChoices(impact, options) {
|
|
64
|
+
let derivedDeleted = 0;
|
|
65
|
+
for (const id of impact.focusIds) if (options.derived === "delete") {
|
|
66
|
+
if (deleteUserFocus(id)) derivedDeleted += 1;
|
|
67
|
+
} else updateUserFocus(id, { status: "paused" });
|
|
68
|
+
for (const id of impact.understandingIds) if (options.derived === "delete") {
|
|
69
|
+
if (deleteUnderstanding(id)) derivedDeleted += 1;
|
|
70
|
+
} else setUnderstandingStatus(id, "needs_review");
|
|
71
|
+
if (options.derived === "delete" && impact.sourceInstanceId) derivedDeleted += deleteMemoryRecordsBySourceInstanceId(impact.sourceInstanceId);
|
|
72
|
+
const rawDeleted = options.raw === "delete" && impact.sourceInstanceId ? deleteKnowledgeSourceItems(impact.sourceInstanceId) : 0;
|
|
73
|
+
return {
|
|
74
|
+
derivedDeleted,
|
|
75
|
+
rawDeleted
|
|
55
76
|
};
|
|
56
77
|
}
|
|
57
78
|
function registerUnderstandingSourceRoutes(authenticated, deps) {
|
|
@@ -168,17 +189,18 @@ function registerUnderstandingSourceRoutes(authenticated, deps) {
|
|
|
168
189
|
const connectionId = accountId ? getConnectorAccount(accountId)?.currentConnectionId : void 0;
|
|
169
190
|
if (connectionId) deps.service.setConnectorLearningPaused(connectionId, true);
|
|
170
191
|
const grant = revokeUnderstandingSourceGrant(grantId);
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
192
|
+
const deleted = grant && impact ? applySourceRevocationChoices(impact, {
|
|
193
|
+
derived,
|
|
194
|
+
raw
|
|
195
|
+
}) : {
|
|
196
|
+
derivedDeleted: 0,
|
|
197
|
+
rawDeleted: 0
|
|
198
|
+
};
|
|
177
199
|
return grant ? c.json({
|
|
178
200
|
ok: true,
|
|
179
201
|
grant,
|
|
180
202
|
impact,
|
|
181
|
-
|
|
203
|
+
...deleted
|
|
182
204
|
}) : c.json({
|
|
183
205
|
ok: false,
|
|
184
206
|
error: "Source grant not found"
|
|
@@ -232,15 +254,21 @@ function registerUnderstandingSourceRoutes(authenticated, deps) {
|
|
|
232
254
|
sources: service.listDirectorySources()
|
|
233
255
|
}));
|
|
234
256
|
authenticated.post("/api/understanding/sources/work-folders", limited, async (c) => {
|
|
235
|
-
const
|
|
257
|
+
const body = await c.req.json().catch(() => null);
|
|
258
|
+
const rootPath = stringField(body, "rootPath");
|
|
259
|
+
const processingPolicy = stringField(body, "processingPolicy");
|
|
236
260
|
if (!rootPath) return c.json({
|
|
237
261
|
ok: false,
|
|
238
262
|
error: "Missing rootPath"
|
|
239
263
|
}, 400);
|
|
264
|
+
if (processingPolicy !== "local_only" && processingPolicy !== "remote_allowed") return c.json({
|
|
265
|
+
ok: false,
|
|
266
|
+
error: "Explicit processingPolicy is required"
|
|
267
|
+
}, 400);
|
|
240
268
|
try {
|
|
241
269
|
return c.json({
|
|
242
270
|
ok: true,
|
|
243
|
-
source: await service.grantDirectorySource(rootPath)
|
|
271
|
+
source: await service.grantDirectorySource(rootPath, processingPolicy)
|
|
244
272
|
}, 201);
|
|
245
273
|
} catch (error) {
|
|
246
274
|
return c.json({
|
|
@@ -268,14 +296,19 @@ function registerUnderstandingSourceRoutes(authenticated, deps) {
|
|
|
268
296
|
});
|
|
269
297
|
authenticated.post("/api/understanding/bootstrap", limited, async (c) => {
|
|
270
298
|
const body = await c.req.json().catch(() => null);
|
|
271
|
-
const items = body && typeof body === "object" && Array.isArray(body.items) ? body.items.slice(0,
|
|
299
|
+
const items = body && typeof body === "object" && Array.isArray(body.items) ? body.items.slice(0, 1200) : [];
|
|
300
|
+
const processingPolicy = stringField(body, "processingPolicy");
|
|
272
301
|
if (!items.length) return c.json({
|
|
273
302
|
ok: false,
|
|
274
303
|
error: "No understanding source items were provided"
|
|
275
304
|
}, 400);
|
|
305
|
+
if (processingPolicy !== "local_only" && processingPolicy !== "remote_allowed") return c.json({
|
|
306
|
+
ok: false,
|
|
307
|
+
error: "Explicit processingPolicy is required"
|
|
308
|
+
}, 400);
|
|
276
309
|
try {
|
|
277
310
|
const checkpoints = body && typeof body === "object" && body.sourceCheckpoints && typeof body.sourceCheckpoints === "object" ? body.sourceCheckpoints : void 0;
|
|
278
|
-
const result = await service.importUnderstandingSources(items, c.req.raw.signal, stringField(body, "workDiscoveryRunId") || void 0, checkpoints);
|
|
311
|
+
const result = await service.importUnderstandingSources(items, processingPolicy, c.req.raw.signal, stringField(body, "workDiscoveryRunId") || void 0, checkpoints);
|
|
279
312
|
return c.json({
|
|
280
313
|
ok: true,
|
|
281
314
|
...result
|
|
@@ -348,4 +381,4 @@ function registerUnderstandingSourceRoutes(authenticated, deps) {
|
|
|
348
381
|
});
|
|
349
382
|
}
|
|
350
383
|
//#endregion
|
|
351
|
-
export { registerUnderstandingSourceRoutes, sourceRevocationImpact };
|
|
384
|
+
export { applySourceRevocationChoices, registerUnderstandingSourceRoutes, sourceRevocationImpact };
|
|
@@ -86,7 +86,8 @@ function registerWorkDiscoveryRoutes(authenticated, deps) {
|
|
|
86
86
|
const candidates = await service.discoverCandidates(c.req.raw.signal);
|
|
87
87
|
return c.json({
|
|
88
88
|
ok: true,
|
|
89
|
-
candidates
|
|
89
|
+
candidates,
|
|
90
|
+
processingTarget: service.getModelProcessingTarget()
|
|
90
91
|
});
|
|
91
92
|
} catch (error) {
|
|
92
93
|
return c.json({
|
|
@@ -100,13 +101,22 @@ function registerWorkDiscoveryRoutes(authenticated, deps) {
|
|
|
100
101
|
ok: false,
|
|
101
102
|
error: "Work discovery is disabled"
|
|
102
103
|
}, 404);
|
|
103
|
-
const
|
|
104
|
+
const body = await c.req.json().catch(() => null);
|
|
105
|
+
const idempotencyKey = stringField(body, "idempotencyKey");
|
|
106
|
+
const processingPolicy = stringField(body, "processingPolicy");
|
|
104
107
|
if (!idempotencyKey) return c.json({
|
|
105
108
|
ok: false,
|
|
106
109
|
error: "Missing idempotencyKey"
|
|
107
110
|
}, 400);
|
|
111
|
+
if (processingPolicy !== "local_only" && processingPolicy !== "remote_allowed") return c.json({
|
|
112
|
+
ok: false,
|
|
113
|
+
error: "Explicit processingPolicy is required"
|
|
114
|
+
}, 400);
|
|
108
115
|
try {
|
|
109
|
-
const run = await service.startQuickRun({
|
|
116
|
+
const run = await service.startQuickRun({
|
|
117
|
+
idempotencyKey,
|
|
118
|
+
processingPolicy
|
|
119
|
+
});
|
|
110
120
|
return c.json({
|
|
111
121
|
ok: true,
|
|
112
122
|
run
|
|
@@ -57,6 +57,10 @@ export declare class GatewayAgentRunner {
|
|
|
57
57
|
/** True when a webchat agent run is currently in-flight for `sessionKey`. */
|
|
58
58
|
hasActiveRun(sessionKey: string): boolean;
|
|
59
59
|
getActiveRunId(sessionKey: string): string | undefined;
|
|
60
|
+
listActiveRuns(): Array<{
|
|
61
|
+
sessionKey: string;
|
|
62
|
+
runId: string;
|
|
63
|
+
}>;
|
|
60
64
|
getClarifyBridge(): ClarifyBridge;
|
|
61
65
|
/** Called from `GatewayService.stop()` so the bridge gets cleaned up. */
|
|
62
66
|
disposeClarifyBridge(): void;
|
|
@@ -77,6 +77,12 @@ var GatewayAgentRunner = class {
|
|
|
77
77
|
getActiveRunId(sessionKey) {
|
|
78
78
|
return this.activeWebchatRunBySession.get(sessionKey);
|
|
79
79
|
}
|
|
80
|
+
listActiveRuns() {
|
|
81
|
+
return [...this.activeWebchatRunBySession.entries()].map(([sessionKey, runId]) => ({
|
|
82
|
+
sessionKey,
|
|
83
|
+
runId
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
80
86
|
getClarifyBridge() {
|
|
81
87
|
return this.clarifyBridge;
|
|
82
88
|
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
-
import { loadConfig, saveConfig } from "../../config/loader.js";
|
|
4
3
|
import { getModelRegistry } from "../../providers/model-registry.js";
|
|
4
|
+
import { loadConfig, saveConfig } from "../../config/loader.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";
|
|
8
8
|
import "../../agent/mcp/bundle-mcp-tools.js";
|
|
9
9
|
import { ConfigHotReloader } from "../../config/reload.js";
|
|
10
10
|
import "../../config/index.js";
|
|
11
|
-
import { sanitizeTunnelConfig } from "../../tunnel/tunnel-config.js";
|
|
12
11
|
import { computeBundledExtensionExtensionsPatch } from "../../extensions/bundled-extension-activation.js";
|
|
12
|
+
import { sanitizeTunnelConfig } from "../../tunnel/tunnel-config.js";
|
|
13
13
|
//#region src/gateway/service/config-coordinator.ts
|
|
14
14
|
init_providers();
|
|
15
15
|
init_logger();
|
|
@@ -98,13 +98,7 @@ async function* runGatewayAgent(deps, message, channel, chatId, origin, attachme
|
|
|
98
98
|
const emitAndYield = function* (events) {
|
|
99
99
|
for (const event of events) {
|
|
100
100
|
if (taskRun) captureTaskEvent(event);
|
|
101
|
-
if (channel === "webchat") {
|
|
102
|
-
publishRealtime(`run:${runId}`, event.type, event);
|
|
103
|
-
if (event.type === "run_start") publishRealtime("sessions", "run.started", {
|
|
104
|
-
sessionKey: streamSessionKey,
|
|
105
|
-
runId
|
|
106
|
-
});
|
|
107
|
-
}
|
|
101
|
+
if (channel === "webchat") publishRealtime(`run:${runId}`, event.type, event);
|
|
108
102
|
yield event;
|
|
109
103
|
}
|
|
110
104
|
};
|
|
@@ -126,6 +120,10 @@ async function* runGatewayAgent(deps, message, channel, chatId, origin, attachme
|
|
|
126
120
|
if (!activeWebchatRunBySession.has(sessionKey)) {
|
|
127
121
|
activeWebchatRunBySession.set(sessionKey, runId);
|
|
128
122
|
registeredActiveWebchatRun = true;
|
|
123
|
+
publishRealtime("sessions", "run.started", {
|
|
124
|
+
sessionKey,
|
|
125
|
+
runId
|
|
126
|
+
});
|
|
129
127
|
}
|
|
130
128
|
let streamError;
|
|
131
129
|
try {
|
|
@@ -172,7 +170,14 @@ async function* runGatewayAgent(deps, message, channel, chatId, origin, attachme
|
|
|
172
170
|
summary: streamError
|
|
173
171
|
};
|
|
174
172
|
} finally {
|
|
175
|
-
if (registeredActiveWebchatRun && activeWebchatRunBySession.get(sessionKey) === runId)
|
|
173
|
+
if (registeredActiveWebchatRun && activeWebchatRunBySession.get(sessionKey) === runId) {
|
|
174
|
+
activeWebchatRunBySession.delete(sessionKey);
|
|
175
|
+
publishRealtime("sessions", "run.completed", {
|
|
176
|
+
sessionKey,
|
|
177
|
+
runId,
|
|
178
|
+
status: terminalStatus
|
|
179
|
+
});
|
|
180
|
+
}
|
|
176
181
|
runAbortControllers.delete(runId);
|
|
177
182
|
const assistantPlainText = agentService.getLastAssistantPlainText(sessionKey);
|
|
178
183
|
const reviewHint = agentService.takeTaskReviewStreamHint(sessionKey);
|
|
@@ -22,6 +22,11 @@ export interface GatewaySessionsApiOptions {
|
|
|
22
22
|
getAgentService: () => AgentService;
|
|
23
23
|
/** Read-only view of in-flight webchat runs (per session key → run id). */
|
|
24
24
|
getActiveWebchatRunId: (sessionKey: string) => string | undefined;
|
|
25
|
+
/** Snapshot of all in-flight webchat runs for workspace briefing surfaces. */
|
|
26
|
+
listActiveWebchatRuns: () => Array<{
|
|
27
|
+
sessionKey: string;
|
|
28
|
+
runId: string;
|
|
29
|
+
}>;
|
|
25
30
|
}
|
|
26
31
|
export declare class GatewaySessionsApi {
|
|
27
32
|
private readonly opts;
|
|
@@ -47,6 +52,10 @@ export declare class GatewaySessionsApi {
|
|
|
47
52
|
active: boolean;
|
|
48
53
|
runId?: string;
|
|
49
54
|
};
|
|
55
|
+
listActiveRuns(): Array<{
|
|
56
|
+
sessionKey: string;
|
|
57
|
+
runId: string;
|
|
58
|
+
}>;
|
|
50
59
|
getMessagePage(key: string, options?: {
|
|
51
60
|
offset?: number;
|
|
52
61
|
limit?: number;
|
|
@@ -9,14 +9,14 @@ import { closeXopcDatabase, openXopcDatabase } from "../storage/sqlite/connectio
|
|
|
9
9
|
import "../storage/sqlite/index.js";
|
|
10
10
|
import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
|
|
11
11
|
import { init_agent_scope, listAgentEntries, normalizeAgentId, resolveDefaultAgentId } from "../agent/agent-scope.js";
|
|
12
|
-
import { buildSessionKey, init_session_key, sanitizeSegment } from "../routing/session-key.js";
|
|
13
|
-
import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
|
|
14
12
|
import { init_paths, resolveAgentDir, resolveConfigPath, resolveExtensionsDir } from "../config/paths.js";
|
|
13
|
+
import { prewarmModelRegistry } from "../providers/model-registry.js";
|
|
15
14
|
import { areExtensionsGloballyDisabled } from "../extensions/discover-extensions.js";
|
|
16
15
|
import { buildExtensionMetadataSnapshot } from "../extensions/extension-metadata-snapshot.js";
|
|
17
16
|
import { buildChannelCatalogForConfig, buildChannelCatalogFromSnapshot, init_channel_catalog_service } from "../channels/catalog/channel-catalog-service.js";
|
|
18
17
|
import { loadConfig, saveConfig } from "../config/loader.js";
|
|
19
|
-
import {
|
|
18
|
+
import { buildSessionKey, init_session_key, sanitizeSegment } from "../routing/session-key.js";
|
|
19
|
+
import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
|
|
20
20
|
import { init_providers, providers_exports } from "../providers/index.js";
|
|
21
21
|
import { TaskRepository } from "../tasks/task-repository.js";
|
|
22
22
|
import { TaskConversationRepository } from "../tasks/task-conversation-repository.js";
|
|
@@ -405,7 +405,8 @@ var GatewayService = class {
|
|
|
405
405
|
this.sessions = new GatewaySessionsApi({
|
|
406
406
|
sessionIndex: this.sessionIndex,
|
|
407
407
|
getAgentService: () => this.ensureAgentService(),
|
|
408
|
-
getActiveWebchatRunId: (sk) => this.agentRunner.getActiveRunId(sk)
|
|
408
|
+
getActiveWebchatRunId: (sk) => this.agentRunner.getActiveRunId(sk),
|
|
409
|
+
listActiveWebchatRuns: () => this.agentRunner.listActiveRuns()
|
|
409
410
|
});
|
|
410
411
|
this.marketplace = new GatewayMarketplaceService({
|
|
411
412
|
getConfig: () => this.config,
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { runPostUpdateExtensionSync } from "../extensions/update.js";
|
|
1
2
|
import "./update-channels.js";
|
|
2
3
|
import { compareSemver, resolveNpmChannelTag } from "./update-check.js";
|
|
3
4
|
import { readPackageName, readPackageVersion } from "./package-json.js";
|
|
@@ -7,7 +8,6 @@ import { runGlobalPackageUpdateSteps } from "./package-update-steps.js";
|
|
|
7
8
|
import { resolveStableNodePath } from "./stable-node-path.js";
|
|
8
9
|
import { trimLogTail } from "./update-log.js";
|
|
9
10
|
import { maybeRestartGatewayAfterUpdate } from "./update-restart.js";
|
|
10
|
-
import { runPostUpdateExtensionSync } from "../extensions/update.js";
|
|
11
11
|
import path from "node:path";
|
|
12
12
|
import fs from "node:fs/promises";
|
|
13
13
|
//#region src/infra/update-runner.ts
|
|
@@ -11,11 +11,17 @@ export type KnowledgeSynthesisBatchResult = {
|
|
|
11
11
|
failed: number;
|
|
12
12
|
recordIds: string[];
|
|
13
13
|
};
|
|
14
|
+
export type ConnectedKnowledgePruneResult = {
|
|
15
|
+
rawDeleted: number;
|
|
16
|
+
derivedDeleted: number;
|
|
17
|
+
};
|
|
14
18
|
export declare class ConnectedKnowledgePipeline {
|
|
15
19
|
private readonly options;
|
|
16
20
|
private readonly workerId;
|
|
17
21
|
private readonly batchSize;
|
|
18
22
|
constructor(options: ConnectedKnowledgePipelineOptions);
|
|
19
23
|
processPending(sourceInstanceId?: string): Promise<KnowledgeSynthesisBatchResult>;
|
|
24
|
+
/** Remove bounded raw items and every content-bearing memory derived only from them. */
|
|
25
|
+
pruneBoundedRetention(sourceInstanceId: string, olderThanMs: number): ConnectedKnowledgePruneResult;
|
|
20
26
|
private rebuildDailySummary;
|
|
21
27
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
|
-
import { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, listKnowledgeSourceItems } from "../storage/sqlite/knowledge-repository.js";
|
|
4
|
-
import { getMemoryRecord, upsertMemoryRecord } from "../storage/sqlite/memory-records-repository.js";
|
|
3
|
+
import { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, listKnowledgeSourceItems, pruneBoundedKnowledgeSourceItems } from "../storage/sqlite/knowledge-repository.js";
|
|
4
|
+
import { deleteMemoryRecord, getMemoryRecord, upsertMemoryRecord } from "../storage/sqlite/memory-records-repository.js";
|
|
5
5
|
import "../storage/sqlite/index.js";
|
|
6
6
|
import { createHash, randomUUID } from "node:crypto";
|
|
7
7
|
//#region src/knowledge/connected-knowledge-pipeline.ts
|
|
@@ -180,13 +180,43 @@ var ConnectedKnowledgePipeline = class {
|
|
|
180
180
|
}
|
|
181
181
|
return result;
|
|
182
182
|
}
|
|
183
|
-
|
|
183
|
+
/** Remove bounded raw items and every content-bearing memory derived only from them. */
|
|
184
|
+
pruneBoundedRetention(sourceInstanceId, olderThanMs) {
|
|
185
|
+
const expired = [];
|
|
186
|
+
for (let offset = 0;; offset += 500) {
|
|
187
|
+
const page = listKnowledgeSourceItems({
|
|
188
|
+
sourceInstanceId,
|
|
189
|
+
retentionClass: "bounded",
|
|
190
|
+
retentionBeforeMs: olderThanMs,
|
|
191
|
+
includeDeleted: true,
|
|
192
|
+
limit: 500,
|
|
193
|
+
offset
|
|
194
|
+
});
|
|
195
|
+
expired.push(...page);
|
|
196
|
+
if (page.length < 500) break;
|
|
197
|
+
}
|
|
198
|
+
if (!expired.length) return {
|
|
199
|
+
rawDeleted: 0,
|
|
200
|
+
derivedDeleted: 0
|
|
201
|
+
};
|
|
202
|
+
const affectedDays = new Set(expired.map(dayFor));
|
|
203
|
+
let derivedDeleted = 0;
|
|
204
|
+
for (const item of expired) if (deleteMemoryRecord(knowledgeRecordId(item.id))) derivedDeleted += 1;
|
|
205
|
+
const rawDeleted = pruneBoundedKnowledgeSourceItems(sourceInstanceId, olderThanMs);
|
|
206
|
+
for (const day of affectedDays) if (this.rebuildDailySummary(sourceInstanceId, day, true)) derivedDeleted += 1;
|
|
207
|
+
return {
|
|
208
|
+
rawDeleted,
|
|
209
|
+
derivedDeleted
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
rebuildDailySummary(sourceInstanceId, day, deleteWhenEmpty = false) {
|
|
184
213
|
const items = listKnowledgeSourceItems({
|
|
185
214
|
sourceInstanceId,
|
|
186
215
|
limit: 500
|
|
187
216
|
}).filter((item) => dayFor(item) === day && item.synthesisStatus === "completed").slice(0, MAX_SUMMARY_ITEMS);
|
|
188
217
|
if (items.length === 0) {
|
|
189
218
|
const existing = getMemoryRecord(summaryRecordId(sourceInstanceId, day));
|
|
219
|
+
if (existing && deleteWhenEmpty) return deleteMemoryRecord(existing.id);
|
|
190
220
|
if (existing) upsertMemoryRecord({
|
|
191
221
|
id: existing.id,
|
|
192
222
|
providerId: "connected-knowledge",
|
|
@@ -210,7 +240,7 @@ var ConnectedKnowledgePipeline = class {
|
|
|
210
240
|
expiresAt: existing.expiresAt,
|
|
211
241
|
canonicalKey: existing.canonicalKey
|
|
212
242
|
});
|
|
213
|
-
return;
|
|
243
|
+
return false;
|
|
214
244
|
}
|
|
215
245
|
const sourceProvider = providerId(items[0]);
|
|
216
246
|
const lines = [`# ${sourceProvider} updates for ${day}`, ""];
|
|
@@ -263,6 +293,7 @@ var ConnectedKnowledgePipeline = class {
|
|
|
263
293
|
confidence: .72,
|
|
264
294
|
observedAt: item.occurredAt ?? item.sourceUpdatedAt
|
|
265
295
|
});
|
|
296
|
+
return false;
|
|
266
297
|
}
|
|
267
298
|
};
|
|
268
299
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { init_sync_provider_auth, resolveProviderApiKeyForAgentSync } from "../../auth/sync-provider-auth.js";
|
|
2
1
|
import { getApiKeyFromEnv, init_env_keys } from "../env-keys.js";
|
|
2
|
+
import { init_sync_provider_auth, resolveProviderApiKeyForAgentSync } from "../../auth/sync-provider-auth.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 { getOAuthProviderIds, init_registry } from "../auth/oauth/registry.js";
|
|
4
|
-
import { hasProviderAuthOnDiskSync, init_sync_provider_auth } from "../auth/sync-provider-auth.js";
|
|
5
3
|
import { PROVIDER_ENV_MAP, getApiKeyFromEnv, init_env_keys } from "./env-keys.js";
|
|
6
4
|
import { init_model_ref, splitProviderModelRef } from "./model-ref.js";
|
|
7
5
|
import { ModelRegistry, getModelRegistry, init_model_registry, prewarmModelRegistry, resetModelRegistry } from "./model-registry.js";
|
|
6
|
+
import { getOAuthProviderIds, init_registry } from "../auth/oauth/registry.js";
|
|
8
7
|
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,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 { resolveModelsJsonPath } from "../config/paths.js";
|
|
5
4
|
import { init_resolve_config_value, resolveConfigValue, resolveHeaders } from "../config/resolve-config-value.js";
|
|
5
|
+
import { resolveModelsJsonPath } from "../config/paths.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 { getOAuthProviderDefinition, init_registry } from "../auth/oauth/registry.js";
|
|
3
2
|
import { getModelCatalogStore, init_model_catalog_store } from "./model-catalog-store.js";
|
|
3
|
+
import { getOAuthProviderDefinition, init_registry } from "../auth/oauth/registry.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) {
|
|
@@ -12,6 +12,8 @@ export interface RetrievalQueryProfile {
|
|
|
12
12
|
identifiers: string[];
|
|
13
13
|
intentKinds: string[];
|
|
14
14
|
timeHints: RetrievalTimeHint[];
|
|
15
|
+
selfReview: boolean;
|
|
15
16
|
scope: RetrievalScope;
|
|
16
17
|
}
|
|
18
|
+
export declare function isSelfReviewQuery(query: string): boolean;
|
|
17
19
|
export declare function buildRetrievalQueryProfile(query: string, scope?: RetrievalScope): RetrievalQueryProfile;
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { extractCjkBigrams, extractLexicalTerms, extractRetrievalIdentifiers, normalizeRetrievalText } from "./textFeatures.js";
|
|
2
2
|
//#region src/retrieval/queryProfile.ts
|
|
3
|
+
const SELF_REVIEW_PATTERNS = [
|
|
4
|
+
/(?:你|xopc).{0,10}(?:了解|知道|认识|记得).{0,8}(?:我|用户)/i,
|
|
5
|
+
/介绍.{0,8}(?:你.{0,6})?(?:了解|知道|认识|记得).{0,4}的?我/i,
|
|
6
|
+
/\bwhat\s+(?:do\s+)?you\s+(?:know|remember)\s+about\s+me\b/i,
|
|
7
|
+
/\b(?:describe|introduce)\s+me\s+(?:from|based on)\s+(?:what|everything)\s+you\s+(?:know|remember)\b/i
|
|
8
|
+
];
|
|
9
|
+
function isSelfReviewQuery(query) {
|
|
10
|
+
return SELF_REVIEW_PATTERNS.some((pattern) => pattern.test(query.normalize("NFKC")));
|
|
11
|
+
}
|
|
3
12
|
const INTENT_RULES = [
|
|
4
13
|
{
|
|
5
14
|
kinds: ["boundary"],
|
|
@@ -67,8 +76,9 @@ function buildRetrievalQueryProfile(query, scope = {}) {
|
|
|
67
76
|
identifiers: extractRetrievalIdentifiers(normalized),
|
|
68
77
|
intentKinds: [...new Set(intentKinds)],
|
|
69
78
|
timeHints: uniqueTimeHints,
|
|
79
|
+
selfReview: isSelfReviewQuery(normalized),
|
|
70
80
|
scope: { ...scope }
|
|
71
81
|
};
|
|
72
82
|
}
|
|
73
83
|
//#endregion
|
|
74
|
-
export { buildRetrievalQueryProfile };
|
|
84
|
+
export { buildRetrievalQueryProfile, isSelfReviewQuery };
|
|
@@ -26,8 +26,8 @@ export { deleteSessionRecord, ensureSessionRecord, getCurrentSessionId, getGloba
|
|
|
26
26
|
export { appendCompactionBoundaryIfUnchanged, appendTranscriptEntry, listCompactionBoundaries, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, loadCompactionSourceSnapshot, paginateTranscriptMessages, replaceTranscriptRows, restoreBeforeCompactionBoundary, searchSessionTranscript, type CompactionSourceSnapshot, type SessionTranscriptRecallMatch, type TranscriptSourceEntry, } from './transcript-repository.js';
|
|
27
27
|
export { deleteNoteRecord, getNoteRecord, listNoteRecords, upsertNoteRecord, } from './notes-repository.js';
|
|
28
28
|
export { deleteNoteAgentContextRecord, getNoteAgentContextRecord, upsertNoteAgentContextRecord, type NoteAgentContextRecord, } from './note-agent-context-repository.js';
|
|
29
|
-
export { appendMemorySignal, appendMemoryTraceEvent, deleteMemoryRecord, getMemoryProviderState, getMemoryTurnFeedback, getMemoryRecord, hasUnresolvedMemoryConflict, listMemorySignals, listMemoryTraceEvents, listMemoryRecords, markMemoryRecordsConflicted, searchMemoryRecords, setMemoryRecordStatus, setMemoryProviderState, setMemoryTurnFeedback, summarizeMemoryRecallFeedback, upsertMemoryRecord, type AppendMemorySignalInput, type AppendMemoryTraceEventInput, type ListMemoryRecordsOptions, type MemoryRecallFeedbackSummary, type MemorySignalRowPayload, type MemoryFeedback, type MemoryFeedbackRating, type MemoryTraceEventPayload, type SearchMemoryRecordsOptions, type SetMemoryTurnFeedbackInput, type UpsertMemoryRecordInput, } from './memory-records-repository.js';
|
|
30
|
-
export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceItems, listKnowledgeSourceChanges, listKnowledgeSyncRuns, listMemoryEvidence, pruneBoundedKnowledgeSourceItems, setKnowledgeSourceItemSynthesisStatus, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, startKnowledgeSyncRun, upsertKnowledgeSourceItems, } from './knowledge-repository.js';
|
|
29
|
+
export { appendMemorySignal, appendMemoryTraceEvent, countMemoryRecordsBySourceInstanceId, deleteMemoryRecordsBySourceInstanceId, deleteMemoryRecord, getMemoryProviderState, getMemoryTurnFeedback, getMemoryRecord, hasUnresolvedMemoryConflict, listMemorySignals, listMemoryTraceEvents, listMemoryRecords, markMemoryRecordsConflicted, searchMemoryRecords, setMemoryRecordStatus, setMemoryProviderState, setMemoryTurnFeedback, summarizeMemoryRecallFeedback, upsertMemoryRecord, type AppendMemorySignalInput, type AppendMemoryTraceEventInput, type ListMemoryRecordsOptions, type MemoryRecallFeedbackSummary, type MemorySignalRowPayload, type MemoryFeedback, type MemoryFeedbackRating, type MemoryTraceEventPayload, type SearchMemoryRecordsOptions, type SetMemoryTurnFeedbackInput, type UpsertMemoryRecordInput, } from './memory-records-repository.js';
|
|
30
|
+
export { attachMemoryEvidence, claimKnowledgeSourceItems, countKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, deleteKnowledgeSourceItems, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceItems, listKnowledgeSourceChanges, listKnowledgeSyncRuns, listMemoryEvidence, pruneBoundedKnowledgeSourceItems, setKnowledgeSourceItemSynthesisStatus, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, startKnowledgeSyncRun, upsertKnowledgeSourceItems, } from './knowledge-repository.js';
|
|
31
31
|
export { deleteSessionConfig, getSessionConfig, hasSessionConfig, setSessionConfig, updateSessionConfig, } from './config-repository.js';
|
|
32
32
|
export { createObjectLinkRecord, deleteObjectLinkRecord, getActivityEventRecord, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent, } from './activity-repository.js';
|
|
33
33
|
export { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getConnectorConnection, getConnectorApproval, getConnectorInstallation, getCachedConnectorCatalogEntry, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, type CachedConnectorCatalogEntry, } from './connector-repository.js';
|
|
@@ -27,12 +27,12 @@ import { buildRelationshipPrompt, getRelationshipSettings, isProactiveSupportAll
|
|
|
27
27
|
import { appendCompactionBoundaryIfUnchanged, appendTranscriptEntry, listCompactionBoundaries, loadCompactionSourceSnapshot, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreBeforeCompactionBoundary, searchSessionTranscript } from "./transcript-repository.js";
|
|
28
28
|
import { deleteNoteRecord, getNoteRecord, listNoteRecords, upsertNoteRecord } from "./notes-repository.js";
|
|
29
29
|
import { deleteNoteAgentContextRecord, getNoteAgentContextRecord, upsertNoteAgentContextRecord } from "./note-agent-context-repository.js";
|
|
30
|
-
import { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, pruneBoundedKnowledgeSourceItems, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems } from "./knowledge-repository.js";
|
|
31
|
-
import { appendMemorySignal, appendMemoryTraceEvent, deleteMemoryRecord, getMemoryProviderState, getMemoryRecord, getMemoryTurnFeedback, hasUnresolvedMemoryConflict, listMemoryRecords, listMemorySignals, listMemoryTraceEvents, markMemoryRecordsConflicted, searchMemoryRecords, setMemoryProviderState, setMemoryRecordStatus, setMemoryTurnFeedback, summarizeMemoryRecallFeedback, upsertMemoryRecord } from "./memory-records-repository.js";
|
|
30
|
+
import { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, countKnowledgeSourceItems, deleteKnowledgeSourceItems, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, pruneBoundedKnowledgeSourceItems, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems } from "./knowledge-repository.js";
|
|
31
|
+
import { appendMemorySignal, appendMemoryTraceEvent, countMemoryRecordsBySourceInstanceId, deleteMemoryRecord, deleteMemoryRecordsBySourceInstanceId, getMemoryProviderState, getMemoryRecord, getMemoryTurnFeedback, hasUnresolvedMemoryConflict, listMemoryRecords, listMemorySignals, listMemoryTraceEvents, markMemoryRecordsConflicted, searchMemoryRecords, setMemoryProviderState, setMemoryRecordStatus, setMemoryTurnFeedback, summarizeMemoryRecallFeedback, upsertMemoryRecord } from "./memory-records-repository.js";
|
|
32
32
|
import { deleteSessionConfig, getSessionConfig, hasSessionConfig, setSessionConfig, updateSessionConfig } from "./config-repository.js";
|
|
33
33
|
import { createObjectLinkRecord, deleteObjectLinkRecord, getActivityEventRecord, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent } from "./activity-repository.js";
|
|
34
34
|
import { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getCachedConnectorCatalogEntry, getConnectorApproval, getConnectorConnection, getConnectorInstallation, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation } from "./connector-repository.js";
|
|
35
35
|
import { getConnectorAccount, listConnectorAccounts, reconcileConnectorAccount, refreshConnectorAccountCurrent } from "./connector-account-repository.js";
|
|
36
36
|
import { getConnectorSyncPolicy, getConnectorSyncPolicyForConnection, listConnectorSyncPolicies, upsertConnectorSyncPolicy } from "./connector-sync-policy-repository.js";
|
|
37
37
|
import { getUserTrustPolicy, setUserTrustPolicy } from "./user-trust-repository.js";
|
|
38
|
-
export { COMPOSER_INPUT_HISTORY_LIMIT, DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, SCHEMA_META_SCHEMA_VERSION_KEY, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_FILENAME, XOPC_DB_SCHEMA_VERSION, acknowledgeHomeAttention, appendCompactionBoundaryIfUnchanged, appendComposerInputHistory, appendConnectorExecutionAudit, appendMemorySignal, appendMemoryTraceEvent, appendTranscriptEntry, applyPendingMigrations, attachMemoryEvidence, bindEndpointPrincipal, buildDefaultSessionMetadata, buildGlobalSessionStats, buildRelationshipPrompt, cancelQueuedSessionInput, claimConnectorWebhookDelivery, claimContextExtractionRun, claimKnowledgeSourceItems, claimNextConnectorLearningJob, claimNextSessionInput, classifyStoredRow, clearComposerInputHistory, closeTemporalAssertions, closeUnderstandingValidity, closeXopcDatabase, completeConnectorWebhookDelivery, completeKnowledgeSourceItemSynthesis, consumeConnectorApproval, consumeContextConsent, createCollaborationRule, createConnectorApproval, createContextEvidence, createEndpointPrincipal, createObjectLinkRecord, createTemporalAssertion, createUnderstanding, decideConnectorApproval, decideContextConsent, deleteCollaborationRule, deleteConnectorConnection, deleteConnectorInstallation, deleteMemoryEvidenceForRecord, deleteMemoryRecord, deleteNoteAgentContextRecord, deleteNoteRecord, deleteObjectLinkRecord, deleteSessionConfig, deleteSessionRecord, deleteUnderstanding, discoverSqlMigrations, enqueueConnectorLearningJob, ensureContextConsent, ensureSessionRecord, ensureXopcDatabaseSchema, estimateTokensFromMessages, extractFtsContent, findSessionInput, findSessionKeyBySessionId, finishContextConsolidationRun, finishContextExtractionRun, finishEndpointToolInvocationAudit, finishKnowledgeSyncRun, finishSessionInputRun, getActivityEventRecord, getCachedConnectorCatalogEntry, getCollaborationRule, getConnectorAccount, getConnectorApproval, getConnectorConnection, getConnectorInstallation, getConnectorSyncPolicy, getConnectorSyncPolicyForConnection, getContextConsolidationRun, getContextExtractionRun, getCurrentSessionId, getEndpointPrincipal, getGlobalSessionStats, getInteractionState, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, getMemoryProviderState, getMemoryRecord, getMemoryTurnFeedback, getNoteAgentContextRecord, getNoteRecord, getRelationshipSettings, getSessionConfig, getSessionInputById, getSessionInputState, getSessionMetadata, getSessionPersistedLevels, getSessionTaskPlan, getSqliteDatabase, getTurnPersonalization, getUnderstanding, getUserProfile, getUserTrustPolicy, getXopcDatabase, hasContextConsent, hasIndependentExtractionOutput, hasSessionConfig, hasUnresolvedMemoryConflict, incrementSessionStatsOnAppend, insertSessionInput, inspectSchemaMigrationStatus, isHomeAttentionAcknowledged, isProactiveSupportAllowed, isUnderstandingSuppressed, isXopcDatabaseOpen, linkContextObjects, linkUnderstandingEvidence, listActivityRecords, listCachedConnectorCatalogEntries, listCollaborationRules, listCompactionBoundaries, listComposerInputHistory, listConnectorAccounts, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, listConnectorLearningJobs, listConnectorSyncPolicies, listContextConsolidationDecisions, listContextConsolidationRuns, listContextExtractionOutputs, listContextExtractionRuns, listContextObjectRelations, listEndpointPrincipals, listEndpointToolInvocationAudits, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, listMemoryRecords, listMemorySignals, listMemoryTraceEvents, listNoteRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, listRegisteredMigrationTargets, listSessionMetadata, listSessionsByAgent, listTemporalAssertions, listUnderstandingEvidence, listUnderstandings, loadCompactionSourceSnapshot, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, markMemoryRecordsConflicted, metadataToSessionInsert, mutateQueuedSessionInput, openXopcDatabase, paginateTranscriptMessages, patchSessionMetadata, pruneBoundedKnowledgeSourceItems, readSchemaVersion, readSchemaVersionForTest, reconcileConnectorAccount, recordActivityEvent, recordContextConsolidationDecision, recordContextFeedback, recordContextRun, recoverSessionInputState, recoverStaleConnectorLearningJobs, refreshConnectorAccountCurrent, rejectUnderstanding, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, replaceLatestSessionTurnAndQueueInput, replaceTranscriptRows, requireXopcDatabase, resetSessionRecord, resetXopcDatabaseSingletonForTest, resolveMigrationsDir, resolveSessionAgentId, resolveXopcDatabasePath, restoreBeforeCompactionBoundary, reviseCollaborationRule, reviseUnderstanding, revokeEndpointPrincipal, runSqliteWriteTransaction, searchActiveUnderstandings, searchMemoryRecords, searchSessionTranscript, sessionConfigRowToConfig, sessionRowToMetadata, setCollaborationRuleStatus, setConnectorLearningPaused, setInteractionState, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, setMemoryProviderState, setMemoryRecordStatus, setMemoryTurnFeedback, setSessionConfig, setSessionInputStatus, setSessionTaskPlan, setUnderstandingStatus, setUserTrustPolicy, startContextConsolidationRun, startEndpointToolInvocationAudit, startKnowledgeSyncRun, summarizeMemoryRecallFeedback, summarizeUnderstandingFeedback, summarizeUserUnderstandingQuality, touchEndpointPrincipal, transcriptEntryRowToStoredRow, updateConnectorLearningJob, updateInteractionStateFromMessage, updateRelationshipSettings, updateSessionConfig, updateSessionStats, updateUserProfile, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, upsertConnectorSyncPolicy, upsertKnowledgeSourceItems, upsertMemoryRecord, upsertNoteAgentContextRecord, upsertNoteRecord, validateLatestSessionTurnTarget };
|
|
38
|
+
export { COMPOSER_INPUT_HISTORY_LIMIT, DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, SCHEMA_META_SCHEMA_VERSION_KEY, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_FILENAME, XOPC_DB_SCHEMA_VERSION, acknowledgeHomeAttention, appendCompactionBoundaryIfUnchanged, appendComposerInputHistory, appendConnectorExecutionAudit, appendMemorySignal, appendMemoryTraceEvent, appendTranscriptEntry, applyPendingMigrations, attachMemoryEvidence, bindEndpointPrincipal, buildDefaultSessionMetadata, buildGlobalSessionStats, buildRelationshipPrompt, cancelQueuedSessionInput, claimConnectorWebhookDelivery, claimContextExtractionRun, claimKnowledgeSourceItems, claimNextConnectorLearningJob, claimNextSessionInput, classifyStoredRow, clearComposerInputHistory, closeTemporalAssertions, closeUnderstandingValidity, closeXopcDatabase, completeConnectorWebhookDelivery, completeKnowledgeSourceItemSynthesis, consumeConnectorApproval, consumeContextConsent, countKnowledgeSourceItems, countMemoryRecordsBySourceInstanceId, createCollaborationRule, createConnectorApproval, createContextEvidence, createEndpointPrincipal, createObjectLinkRecord, createTemporalAssertion, createUnderstanding, decideConnectorApproval, decideContextConsent, deleteCollaborationRule, deleteConnectorConnection, deleteConnectorInstallation, deleteKnowledgeSourceItems, deleteMemoryEvidenceForRecord, deleteMemoryRecord, deleteMemoryRecordsBySourceInstanceId, deleteNoteAgentContextRecord, deleteNoteRecord, deleteObjectLinkRecord, deleteSessionConfig, deleteSessionRecord, deleteUnderstanding, discoverSqlMigrations, enqueueConnectorLearningJob, ensureContextConsent, ensureSessionRecord, ensureXopcDatabaseSchema, estimateTokensFromMessages, extractFtsContent, findSessionInput, findSessionKeyBySessionId, finishContextConsolidationRun, finishContextExtractionRun, finishEndpointToolInvocationAudit, finishKnowledgeSyncRun, finishSessionInputRun, getActivityEventRecord, getCachedConnectorCatalogEntry, getCollaborationRule, getConnectorAccount, getConnectorApproval, getConnectorConnection, getConnectorInstallation, getConnectorSyncPolicy, getConnectorSyncPolicyForConnection, getContextConsolidationRun, getContextExtractionRun, getCurrentSessionId, getEndpointPrincipal, getGlobalSessionStats, getInteractionState, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, getMemoryProviderState, getMemoryRecord, getMemoryTurnFeedback, getNoteAgentContextRecord, getNoteRecord, getRelationshipSettings, getSessionConfig, getSessionInputById, getSessionInputState, getSessionMetadata, getSessionPersistedLevels, getSessionTaskPlan, getSqliteDatabase, getTurnPersonalization, getUnderstanding, getUserProfile, getUserTrustPolicy, getXopcDatabase, hasContextConsent, hasIndependentExtractionOutput, hasSessionConfig, hasUnresolvedMemoryConflict, incrementSessionStatsOnAppend, insertSessionInput, inspectSchemaMigrationStatus, isHomeAttentionAcknowledged, isProactiveSupportAllowed, isUnderstandingSuppressed, isXopcDatabaseOpen, linkContextObjects, linkUnderstandingEvidence, listActivityRecords, listCachedConnectorCatalogEntries, listCollaborationRules, listCompactionBoundaries, listComposerInputHistory, listConnectorAccounts, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, listConnectorLearningJobs, listConnectorSyncPolicies, listContextConsolidationDecisions, listContextConsolidationRuns, listContextExtractionOutputs, listContextExtractionRuns, listContextObjectRelations, listEndpointPrincipals, listEndpointToolInvocationAudits, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, listMemoryRecords, listMemorySignals, listMemoryTraceEvents, listNoteRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, listRegisteredMigrationTargets, listSessionMetadata, listSessionsByAgent, listTemporalAssertions, listUnderstandingEvidence, listUnderstandings, loadCompactionSourceSnapshot, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, markMemoryRecordsConflicted, metadataToSessionInsert, mutateQueuedSessionInput, openXopcDatabase, paginateTranscriptMessages, patchSessionMetadata, pruneBoundedKnowledgeSourceItems, readSchemaVersion, readSchemaVersionForTest, reconcileConnectorAccount, recordActivityEvent, recordContextConsolidationDecision, recordContextFeedback, recordContextRun, recoverSessionInputState, recoverStaleConnectorLearningJobs, refreshConnectorAccountCurrent, rejectUnderstanding, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, replaceLatestSessionTurnAndQueueInput, replaceTranscriptRows, requireXopcDatabase, resetSessionRecord, resetXopcDatabaseSingletonForTest, resolveMigrationsDir, resolveSessionAgentId, resolveXopcDatabasePath, restoreBeforeCompactionBoundary, reviseCollaborationRule, reviseUnderstanding, revokeEndpointPrincipal, runSqliteWriteTransaction, searchActiveUnderstandings, searchMemoryRecords, searchSessionTranscript, sessionConfigRowToConfig, sessionRowToMetadata, setCollaborationRuleStatus, setConnectorLearningPaused, setInteractionState, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, setMemoryProviderState, setMemoryRecordStatus, setMemoryTurnFeedback, setSessionConfig, setSessionInputStatus, setSessionTaskPlan, setUnderstandingStatus, setUserTrustPolicy, startContextConsolidationRun, startEndpointToolInvocationAudit, startKnowledgeSyncRun, summarizeMemoryRecallFeedback, summarizeUnderstandingFeedback, summarizeUserUnderstandingQuality, touchEndpointPrincipal, transcriptEntryRowToStoredRow, updateConnectorLearningJob, updateInteractionStateFromMessage, updateRelationshipSettings, updateSessionConfig, updateSessionStats, updateUserProfile, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, upsertConnectorSyncPolicy, upsertKnowledgeSourceItems, upsertMemoryRecord, upsertNoteAgentContextRecord, upsertNoteRecord, validateLatestSessionTurnTarget };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
-
import type { KnowledgeSourceChange, KnowledgeSourceItem, KnowledgeSourceItemInput, KnowledgeSyncRun, KnowledgeSyncRunStatus, KnowledgeSynthesisPipeline, KnowledgeSynthesisStatus } from '../../knowledge/types.js';
|
|
2
|
+
import type { KnowledgeSourceChange, KnowledgeSourceItem, KnowledgeSourceItemInput, KnowledgeSyncRun, KnowledgeSyncRunStatus, KnowledgeSynthesisPipeline, KnowledgeSynthesisStatus, KnowledgeRetentionClass } from '../../knowledge/types.js';
|
|
3
3
|
import type { MemoryEvidence, MemoryEvidenceRelation } from '../../agent/memory/types.js';
|
|
4
4
|
export declare function startKnowledgeSyncRun(input: {
|
|
5
5
|
sourceInstanceId: string;
|
|
@@ -44,6 +44,8 @@ export declare function listKnowledgeSourceItems(options?: {
|
|
|
44
44
|
collectionScope?: string;
|
|
45
45
|
itemType?: string;
|
|
46
46
|
synthesisStatus?: KnowledgeSynthesisStatus;
|
|
47
|
+
retentionClass?: KnowledgeRetentionClass;
|
|
48
|
+
retentionBeforeMs?: number;
|
|
47
49
|
occurredAfterMs?: number;
|
|
48
50
|
occurredBeforeMs?: number;
|
|
49
51
|
orderBy?: 'recency_desc' | 'occurred_asc';
|
|
@@ -51,6 +53,8 @@ export declare function listKnowledgeSourceItems(options?: {
|
|
|
51
53
|
limit?: number;
|
|
52
54
|
offset?: number;
|
|
53
55
|
}): KnowledgeSourceItem[];
|
|
56
|
+
export declare function countKnowledgeSourceItems(sourceInstanceId: string): number;
|
|
57
|
+
export declare function deleteKnowledgeSourceItems(sourceInstanceId: string): number;
|
|
54
58
|
export declare function pruneBoundedKnowledgeSourceItems(sourceInstanceId: string, olderThanMs: number): number;
|
|
55
59
|
export declare function setKnowledgeSourceItemSynthesisStatus(itemIds: string[], status: KnowledgeSynthesisStatus, nowMs?: number): number;
|
|
56
60
|
export declare function claimKnowledgeSourceItems(options: {
|
|
@@ -256,6 +256,14 @@ function listKnowledgeSourceItems(options = {}) {
|
|
|
256
256
|
where.push("synthesis_status = ?");
|
|
257
257
|
params.push(options.synthesisStatus);
|
|
258
258
|
}
|
|
259
|
+
if (options.retentionClass) {
|
|
260
|
+
where.push("retention_class = ?");
|
|
261
|
+
params.push(options.retentionClass);
|
|
262
|
+
}
|
|
263
|
+
if (options.retentionBeforeMs !== void 0) {
|
|
264
|
+
where.push("COALESCE(source_updated_at, occurred_at, updated_at) < ?");
|
|
265
|
+
params.push(options.retentionBeforeMs);
|
|
266
|
+
}
|
|
259
267
|
if (options.occurredAfterMs !== void 0) {
|
|
260
268
|
where.push("occurred_at > ?");
|
|
261
269
|
params.push(options.occurredAfterMs);
|
|
@@ -272,6 +280,13 @@ function listKnowledgeSourceItems(options = {}) {
|
|
|
272
280
|
ORDER BY ${options.orderBy === "occurred_asc" ? "occurred_at ASC, item_id ASC" : "COALESCE(source_updated_at, occurred_at, updated_at) DESC"}
|
|
273
281
|
LIMIT ? OFFSET ?`).all(...params, limit, offset).map(sourceItemFromRow);
|
|
274
282
|
}
|
|
283
|
+
function countKnowledgeSourceItems(sourceInstanceId) {
|
|
284
|
+
const row = getSqliteDatabase().prepare("SELECT COUNT(*) AS count FROM knowledge_source_items WHERE source_instance_id = ?").get(sourceInstanceId);
|
|
285
|
+
return Number(row.count);
|
|
286
|
+
}
|
|
287
|
+
function deleteKnowledgeSourceItems(sourceInstanceId) {
|
|
288
|
+
return runSqliteWriteTransaction((db) => Number(db.prepare("DELETE FROM knowledge_source_items WHERE source_instance_id = ?").run(sourceInstanceId).changes));
|
|
289
|
+
}
|
|
275
290
|
function pruneBoundedKnowledgeSourceItems(sourceInstanceId, olderThanMs) {
|
|
276
291
|
return runSqliteWriteTransaction((db) => Number(db.prepare(`DELETE FROM knowledge_source_items
|
|
277
292
|
WHERE source_instance_id = ? AND retention_class = 'bounded'
|
|
@@ -421,4 +436,4 @@ function listMemoryEvidenceForRecords(recordIds) {
|
|
|
421
436
|
return output;
|
|
422
437
|
}
|
|
423
438
|
//#endregion
|
|
424
|
-
export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, listMemoryEvidenceForRecords, pruneBoundedKnowledgeSourceItems, replaceMemoryEvidenceForRecord, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems };
|
|
439
|
+
export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, countKnowledgeSourceItems, deleteKnowledgeSourceItems, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, listMemoryEvidenceForRecords, pruneBoundedKnowledgeSourceItems, replaceMemoryEvidenceForRecord, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems };
|
|
@@ -173,6 +173,8 @@ export declare function hasUnresolvedMemoryConflict(conflictGroupId: string): bo
|
|
|
173
173
|
export declare function listMemoryRecords(options?: ListMemoryRecordsOptions): MemoryRecord[];
|
|
174
174
|
export declare function searchMemoryRecords(options: SearchMemoryRecordsOptions): MemorySearchResult[];
|
|
175
175
|
export declare function deleteMemoryRecord(recordId: string): boolean;
|
|
176
|
+
export declare function countMemoryRecordsBySourceInstanceId(sourceInstanceId: string): number;
|
|
177
|
+
export declare function deleteMemoryRecordsBySourceInstanceId(sourceInstanceId: string): number;
|
|
176
178
|
/** Change lifecycle status without reconstructing or weakening the record's provenance. */
|
|
177
179
|
export declare function setMemoryRecordStatus(recordId: string, status: MemoryStatus, nowMs?: number): boolean;
|
|
178
180
|
export declare function markMemoryRecordsConflicted(recordIds: string[], conflictGroupId: string): number;
|