@askexenow/exe-os 0.9.204 → 0.9.205
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/{active-agent-EFWC3HGP.js → active-agent-4RUP4VYK.js} +2 -2
- package/dist/{active-agent-NXX5Z3LX.js → active-agent-VEML3XMS.js} +2 -2
- package/dist/{agentic-ontology-JS6DPKQB.js → agentic-ontology-FNJAKZF5.js} +1 -1
- package/dist/{backfill-metadata-U4KABXKR.js → backfill-metadata-BT4RLVMZ.js} +3 -3
- package/dist/{behaviors-WDIKLZA3.js → behaviors-LCPNHP5Q.js} +2 -2
- package/dist/bin/agentic-ontology-backfill.js +4 -4
- package/dist/bin/agentic-reflection-backfill.js +5 -5
- package/dist/bin/agentic-semantic-label.js +4 -4
- package/dist/bin/backfill-conversations.js +3 -3
- package/dist/bin/backfill-responses.js +3 -3
- package/dist/bin/backfill-vectors.js +4 -4
- package/dist/bin/bulk-sync-postgres.js +5 -5
- package/dist/bin/cleanup-stale-review-tasks.js +8 -8
- package/dist/bin/cli.js +12 -12
- package/dist/bin/exe-agent-config.js +1 -1
- package/dist/bin/exe-agent.js +3 -3
- package/dist/bin/exe-assign.js +4 -4
- package/dist/bin/exe-boot.js +15 -15
- package/dist/bin/exe-call.js +3 -3
- package/dist/bin/exe-cloud.js +3 -3
- package/dist/bin/exe-dispatch.js +8 -8
- package/dist/bin/exe-doctor.js +1 -1
- package/dist/bin/exe-export-behaviors.js +6 -6
- package/dist/bin/exe-forget.js +5 -5
- package/dist/bin/exe-gateway.js +5 -5
- package/dist/bin/exe-heartbeat.js +8 -8
- package/dist/bin/exe-kill.js +11 -11
- package/dist/bin/exe-launch-agent.js +9 -9
- package/dist/bin/exe-new-employee.js +5 -5
- package/dist/bin/exe-pending-messages.js +9 -9
- package/dist/bin/exe-pending-notifications.js +8 -8
- package/dist/bin/exe-pending-reviews.js +8 -8
- package/dist/bin/exe-rename.js +3 -3
- package/dist/bin/exe-review.js +10 -10
- package/dist/bin/exe-search.js +4 -4
- package/dist/bin/exe-session-cleanup.js +13 -13
- package/dist/bin/exe-settings.js +3 -3
- package/dist/bin/exe-start-codex.js +10 -10
- package/dist/bin/exe-start-opencode.js +7 -7
- package/dist/bin/exe-status.js +9 -9
- package/dist/bin/exe-team.js +2 -2
- package/dist/bin/git-sweep.js +8 -8
- package/dist/bin/graph-backfill.js +3 -3
- package/dist/bin/graph-export.js +4 -4
- package/dist/bin/import-history.js +4 -4
- package/dist/bin/install.js +5 -5
- package/dist/bin/intercom-check.js +4 -4
- package/dist/bin/orchestration-metrics.js +4 -3
- package/dist/bin/postgres-agentic-reflection-backfill.js +2 -2
- package/dist/bin/postgres-agentic-semantic-backfill.js +1 -1
- package/dist/bin/scan-tasks.js +8 -8
- package/dist/bin/setup.js +1 -1
- package/dist/bin/shard-migrate.js +3 -3
- package/dist/{capacity-monitor-AXBGVDJ5.js → capacity-monitor-EPHJTSKF.js} +9 -9
- package/dist/{catchup-brief-TX4ODBPO.js → catchup-brief-HVITENL5.js} +10 -10
- package/dist/{chunk-WGRHKPVG.js → chunk-22GPB6FO.js} +7 -7
- package/dist/chunk-2THPPZF2.js +81 -0
- package/dist/{chunk-K3O4MWMS.js → chunk-3MHKTBHZ.js} +1 -0
- package/dist/{chunk-UY6RQK5F.js → chunk-3N4ZEPZI.js} +1 -1
- package/dist/{chunk-SN6Z3CBF.js → chunk-3PDZQICZ.js} +1 -1
- package/dist/{chunk-CGM6BIK3.js → chunk-3S3ERUUH.js} +1 -1
- package/dist/{chunk-5EW4GKGZ.js → chunk-434A3L6O.js} +1 -1
- package/dist/{chunk-BQ4U2SYC.js → chunk-4FNJPA5O.js} +1 -1
- package/dist/{chunk-O5RJH6GU.js → chunk-4RJD3GXL.js} +1 -1
- package/dist/{chunk-U2QASWL6.js → chunk-5HTEMMOJ.js} +5 -5
- package/dist/{chunk-SZDSQ3AW.js → chunk-6JORPKMR.js} +3 -3
- package/dist/{chunk-3KHQUA5W.js → chunk-6MOFCQFH.js} +80 -63
- package/dist/{chunk-N5GVXBX2.js → chunk-6VVSXO3M.js} +4 -4
- package/dist/{chunk-SPMVTZ7Z.js → chunk-723DSUG3.js} +3 -3
- package/dist/{chunk-E4NC3YVQ.js → chunk-7DTEJAIC.js} +2 -2
- package/dist/{chunk-E66FQ7IN.js → chunk-7HIWJLXK.js} +1 -1
- package/dist/{chunk-IGRQE5Y5.js → chunk-BGLXECHT.js} +2 -2
- package/dist/{chunk-BYHFW5CT.js → chunk-COOX4FXM.js} +1 -1
- package/dist/{chunk-GZLGB72W.js → chunk-CXBLK3ZA.js} +1 -1
- package/dist/{chunk-MJNI3S5H.js → chunk-EDQ4GH2D.js} +2 -2
- package/dist/{chunk-GPK2WJXA.js → chunk-EF57I73W.js} +1 -1
- package/dist/{chunk-O5PFOMQC.js → chunk-EUMLEWXO.js} +2 -2
- package/dist/{chunk-KW6NZNGB.js → chunk-FMKD6N33.js} +10 -10
- package/dist/{chunk-NLXNO5OH.js → chunk-FYJCMGTD.js} +1 -1
- package/dist/{chunk-25AH7NZ3.js → chunk-H7U7FPQF.js} +8 -8
- package/dist/{chunk-EAE6ZMDU.js → chunk-HLYNKMAG.js} +1 -1
- package/dist/{chunk-GMWKV22N.js → chunk-HMGIQNME.js} +3 -3
- package/dist/{chunk-6UZKN2QW.js → chunk-IR4L6K5L.js} +30 -20
- package/dist/{chunk-6LMP2A62.js → chunk-ITYWLFYC.js} +54 -6
- package/dist/{chunk-ILZSBMC3.js → chunk-JUB74GFQ.js} +2 -2
- package/dist/{chunk-D4B6SVEC.js → chunk-MKOW4EXB.js} +1 -1
- package/dist/{chunk-JXOJL72T.js → chunk-MQX47XMP.js} +2 -2
- package/dist/{chunk-E2HLBCC4.js → chunk-MZ2BL3JP.js} +2 -2
- package/dist/{chunk-4NT6K4Y3.js → chunk-O2JGR7EU.js} +5 -5
- package/dist/{chunk-BV3L2S54.js → chunk-P2ZIM765.js} +1 -1
- package/dist/{chunk-XTTLF54S.js → chunk-PHCK4KQW.js} +3 -3
- package/dist/{chunk-WKM3BSNL.js → chunk-PXDR3UTB.js} +8 -8
- package/dist/{chunk-ETHQJXO3.js → chunk-PYLNOBNW.js} +1 -1
- package/dist/{chunk-HXNTQP4B.js → chunk-RN6DEMC7.js} +1 -1
- package/dist/{chunk-3WMXVABU.js → chunk-S4AXKNPT.js} +1 -1
- package/dist/{chunk-X2BTDYHZ.js → chunk-SEAFDIKF.js} +13 -1
- package/dist/{chunk-Q3SJ6VIB.js → chunk-TCBUBBTL.js} +8 -8
- package/dist/{chunk-N3JRT57X.js → chunk-THFFC43M.js} +1 -1
- package/dist/{chunk-7DJW7POW.js → chunk-VG3VVFF5.js} +1 -1
- package/dist/{chunk-Z6SH44AM.js → chunk-VH6WU3GK.js} +2 -2
- package/dist/{chunk-2Y6WKJGO.js → chunk-W4BFBCZA.js} +3 -3
- package/dist/{chunk-XS2VAJCH.js → chunk-XSOKVFQ6.js} +3 -3
- package/dist/{chunk-JUTI2DXY.js → chunk-YCL4RHFY.js} +1 -1
- package/dist/{chunk-UXD5KOND.js → chunk-YGUWCJN2.js} +2 -2
- package/dist/{chunk-YIHUUNNV.js → chunk-YOXXZAOR.js} +2 -2
- package/dist/{chunk-PZRIFSHY.js → chunk-YXHY5F34.js} +2 -2
- package/dist/{chunk-PTY37LIC.js → chunk-ZDK3M72Z.js} +1 -1
- package/dist/{chunk-6H6Q4MJC.js → chunk-ZIBSTUGU.js} +1 -1
- package/dist/{chunk-LIHR5DQF.js → chunk-ZXZJLVGD.js} +1 -1
- package/dist/{co-occurrence-A2SJL5AH.js → co-occurrence-TJRQ5V7W.js} +1 -1
- package/dist/{crdt-sync-SGAW6DJQ.js → crdt-sync-RI7XPXTI.js} +1 -1
- package/dist/{crm-webhook-BD5AUIZB.js → crm-webhook-AVG4F2NB.js} +2 -2
- package/dist/{cto-delegation-gate-3H77F7FY.js → cto-delegation-gate-ZTNJLSPO.js} +7 -7
- package/dist/{daemon-orchestration-C7HD7UZT.js → daemon-orchestration-AKICH7C5.js} +10 -10
- package/dist/{exe-drift-3OUOHWAI.js → exe-drift-BPVS4MOJ.js} +2 -2
- package/dist/{exe-export-LIHHQVOV.js → exe-export-LL4CXNLT.js} +4 -4
- package/dist/{exe-import-3SOERMSY.js → exe-import-JNKAAJ5T.js} +4 -4
- package/dist/{exe-key-DKNILIT6.js → exe-key-C5UQ77AT.js} +1 -1
- package/dist/{fast-db-init-5W2GJH7H.js → fast-db-init-UNK4BEEO.js} +1 -1
- package/dist/gateway/index.js +6 -6
- package/dist/{git-staleness-DBFCOX65.js → git-staleness-WTJFIPHH.js} +1 -1
- package/dist/{git-task-sweep-T5MVS6C4.js → git-task-sweep-PT3RIE6W.js} +8 -8
- package/dist/{global-procedures-SL2TTCED.js → global-procedures-ZPN7KZH5.js} +2 -2
- package/dist/{graph-auto-extract-JGNJ3BB7.js → graph-auto-extract-4M4J42NA.js} +1 -1
- package/dist/hooks/bug-report-worker.js +9 -9
- package/dist/hooks/codex-stop-task-finalizer.js +9 -9
- package/dist/hooks/commit-complete.js +10 -10
- package/dist/hooks/error-recall.js +5 -5
- package/dist/hooks/exe-heartbeat-hook.js +2 -2
- package/dist/hooks/ingest.js +5 -5
- package/dist/hooks/instructions-loaded.js +3 -3
- package/dist/hooks/manifest.json +19 -19
- package/dist/hooks/notification.js +3 -3
- package/dist/hooks/post-compact.js +9 -9
- package/dist/hooks/post-tool-combined.js +4 -4
- package/dist/hooks/pre-compact.js +10 -10
- package/dist/hooks/pre-tool-use.js +13 -13
- package/dist/hooks/prompt-submit.js +19 -19
- package/dist/hooks/session-end.js +13 -13
- package/dist/hooks/session-start.js +9 -9
- package/dist/hooks/stop.js +13 -13
- package/dist/hooks/subagent-stop.js +9 -9
- package/dist/hooks/summary-worker.js +13 -13
- package/dist/index.js +15 -15
- package/dist/{installer-TAPAEWRV.js → installer-3DE2IDUZ.js} +4 -4
- package/dist/{installer-5FI6CX62.js → installer-IYELX3KG.js} +4 -4
- package/dist/{installer-HNOVAUW6.js → installer-SCWIMZT7.js} +4 -4
- package/dist/lib/cloud-sync.js +3 -3
- package/dist/lib/consolidation.js +4 -4
- package/dist/lib/database.js +1 -1
- package/dist/lib/db.js +1 -1
- package/dist/lib/employee-templates.js +3 -3
- package/dist/lib/employees.js +1 -1
- package/dist/lib/exe-daemon.js +54 -27
- package/dist/lib/hybrid-search.js +4 -4
- package/dist/lib/identity.js +1 -1
- package/dist/lib/messaging.js +8 -8
- package/dist/lib/reminders.js +2 -2
- package/dist/lib/schedules.js +4 -4
- package/dist/lib/session-registry.js +3 -3
- package/dist/lib/skill-learning.js +3 -3
- package/dist/lib/store.js +3 -3
- package/dist/lib/task-router.js +2 -2
- package/dist/lib/tasks.js +8 -8
- package/dist/lib/tmux-routing.js +7 -7
- package/dist/lib/token-spend.js +2 -2
- package/dist/mcp/register-tools.js +46 -46
- package/dist/mcp/server.js +47 -47
- package/dist/mcp/tools/complete-reminder.js +3 -3
- package/dist/mcp/tools/create-reminder.js +3 -3
- package/dist/mcp/tools/create-task.js +10 -10
- package/dist/mcp/tools/deactivate-behavior.js +4 -4
- package/dist/mcp/tools/list-reminders.js +3 -3
- package/dist/mcp/tools/list-tasks.js +10 -10
- package/dist/mcp/tools/send-message.js +10 -10
- package/dist/mcp/tools/update-task.js +9 -9
- package/dist/{mcp-http-config-6UAI2FAV.js → mcp-http-config-EWIT2DEN.js} +2 -2
- package/dist/{memory-cards-PVPUQ7MX.js → memory-cards-W4VTTFYM.js} +1 -1
- package/dist/{memory-graph-extractor-RP7ZXDTE.js → memory-graph-extractor-A3HRDXY6.js} +2 -2
- package/dist/{memory-poisoning-defense-DDBUHHGB.js → memory-poisoning-defense-MH6QBXVT.js} +1 -1
- package/dist/{memory-reflection-HLR26FXG.js → memory-reflection-RUCTWMQ5.js} +1 -1
- package/dist/{notifications-RJDXR4QD.js → notifications-6GRSVIP6.js} +7 -7
- package/dist/{orchestration-events-HWP5PNAO.js → orchestration-events-MSJVUR4T.js} +2 -2
- package/dist/{orchestrator-FAEMTK23.js → orchestrator-QQKU4VM2.js} +9 -9
- package/dist/{plan-limits-QBNFIU45.js → plan-limits-NKUSDF3I.js} +2 -2
- package/dist/{projection-worker-B7HHFYEG.js → projection-worker-UEG6I5DV.js} +1 -1
- package/dist/{reranker-H4UNQZZW.js → reranker-JTDM3MV2.js} +1 -1
- package/dist/{review-polling-NQQMIRJJ.js → review-polling-MWBVXHG3.js} +8 -8
- package/dist/runtime/index.js +10 -10
- package/dist/{session-events-Z3TESQCV.js → session-events-FRB3UYJG.js} +8 -8
- package/dist/{session-kill-telemetry-OGFLFTYX.js → session-kill-telemetry-GPZUHBCT.js} +2 -2
- package/dist/{session-scope-6JGI2SG7.js → session-scope-7BZTNB2X.js} +7 -7
- package/dist/{setup-wizard-M6ZZ2VNM.js → setup-wizard-2INM4CSL.js} +1 -1
- package/dist/{skill-refinement-HYEGUXAX.js → skill-refinement-7C7X42Z5.js} +1 -1
- package/dist/{task-enforcement-DGH4LSEM.js → task-enforcement-VB5P45ZM.js} +7 -7
- package/dist/{task-scope-2BQEKJ75.js → task-scope-ULC62J6G.js} +7 -7
- package/dist/{tasks-crud-VOHJZCDP.js → tasks-crud-IBSTM6ID.js} +7 -7
- package/dist/{tasks-review-5ZKFYZSG.js → tasks-review-P4MCKBDT.js} +7 -7
- package/dist/{telemetry-upload-ZLPFXJSB.js → telemetry-upload-Y3CPHI7M.js} +102 -7
- package/dist/{token-budget-XU2QZEWX.js → token-budget-CO74EBTY.js} +1 -1
- package/dist/{tool-telemetry-OE57ERK7.js → tool-telemetry-5PX7A6TX.js} +3 -1
- package/dist/tui/App.js +15 -15
- package/dist/{tui-data-IP3B6E26.js → tui-data-YAT6A36V.js} +7 -7
- package/dist/{worker-gate-K64XRRCJ.js → worker-gate-27O2WEYU.js} +1 -1
- package/dist/{workflow-engine-GFFMXXKF.js → workflow-engine-4T36KCTQ.js} +2 -2
- package/dist/{worktree-37F624QU.js → worktree-QTCOX6RV.js} +3 -3
- package/package.json +1 -1
- package/release-notes.json +60 -60
- package/dist/chunk-IWHGEUPC.js +0 -69
- /package/dist/{chunk-OLYRY66P.js → chunk-AF7A5IQ5.js} +0 -0
- /package/dist/{chunk-7SY5JOLR.js → chunk-ATKMIQXP.js} +0 -0
- /package/dist/{chunk-OMJHJQQK.js → chunk-GONOOIFL.js} +0 -0
- /package/dist/{chunk-XBRGHHIY.js → chunk-ONCFSN5C.js} +0 -0
- /package/dist/{chunk-Q3MRTJLA.js → chunk-WVNWAV36.js} +0 -0
- /package/dist/{chunk-RH5NYRQH.js → chunk-XJQASQPO.js} +0 -0
- /package/dist/{chunk-LJA6RQ3L.js → chunk-YKCH4T4T.js} +0 -0
- /package/dist/{core-memory-PMQ5PJ4U.js → core-memory-3QGHBERR.js} +0 -0
- /package/dist/{wiki-acl-NUUPHYWC.js → wiki-acl-WCBKBLGQ.js} +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ensureWorktree
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FYJCMGTD.js";
|
|
4
4
|
import {
|
|
5
5
|
queueIntercom
|
|
6
6
|
} from "./chunk-QI4IXJN7.js";
|
|
7
7
|
import {
|
|
8
8
|
registerSession
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-IR4L6K5L.js";
|
|
10
10
|
import {
|
|
11
11
|
getTransport
|
|
12
12
|
} from "./chunk-5YDHBZCO.js";
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from "./chunk-GZIAQYGI.js";
|
|
16
16
|
import {
|
|
17
17
|
recordOrchestrationEventBestEffort
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-ITYWLFYC.js";
|
|
19
19
|
import {
|
|
20
20
|
DEFAULT_PROVIDER,
|
|
21
21
|
PROVIDER_TABLE,
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
import {
|
|
34
34
|
PlanLimitError,
|
|
35
35
|
assertEmployeeLimitSync
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-3PDZQICZ.js";
|
|
37
37
|
import {
|
|
38
38
|
getSessionKey
|
|
39
39
|
} from "./chunk-CVYC6DUW.js";
|
|
@@ -48,7 +48,7 @@ import {
|
|
|
48
48
|
} from "./chunk-MP2AFCGL.js";
|
|
49
49
|
import {
|
|
50
50
|
ensureAgentSymlink
|
|
51
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-RN6DEMC7.js";
|
|
52
52
|
import {
|
|
53
53
|
expandDualPrefixTools
|
|
54
54
|
} from "./chunk-HYZV25LY.js";
|
|
@@ -60,7 +60,7 @@ import {
|
|
|
60
60
|
isCoordinatorName,
|
|
61
61
|
loadEmployees,
|
|
62
62
|
loadEmployeesSync
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-3MHKTBHZ.js";
|
|
64
64
|
import {
|
|
65
65
|
loadDeviceId
|
|
66
66
|
} from "./chunk-72DJ42IE.js";
|
|
@@ -374,7 +374,7 @@ async function createTaskCore(input) {
|
|
|
374
374
|
if (isCoordinatorSession) {
|
|
375
375
|
earlySessionScope = resolved;
|
|
376
376
|
} else {
|
|
377
|
-
const { getSessionProject } = await import("./session-scope-
|
|
377
|
+
const { getSessionProject } = await import("./session-scope-7BZTNB2X.js");
|
|
378
378
|
const sessionProject = getSessionProject(resolved);
|
|
379
379
|
if (sessionProject && sessionProject !== input.projectName) {
|
|
380
380
|
scopeMismatchWarning = `session/project mismatch: session "${resolved}" owns "${sessionProject}" but task targets "${input.projectName}". Routed to default scope.`;
|
|
@@ -823,7 +823,7 @@ async function updateTaskStatus(input) {
|
|
|
823
823
|
} catch {
|
|
824
824
|
}
|
|
825
825
|
try {
|
|
826
|
-
const { writeNotification: writeNotification2 } = await import("./notifications-
|
|
826
|
+
const { writeNotification: writeNotification2 } = await import("./notifications-6GRSVIP6.js");
|
|
827
827
|
await writeNotification2({
|
|
828
828
|
agentId: reviewer,
|
|
829
829
|
agentRole: isCoordinatorName(reviewer) ? "COO" : "manager",
|
|
@@ -1175,7 +1175,7 @@ ${input.result}` : `\u26A0\uFE0F ${warning}`;
|
|
|
1175
1175
|
}
|
|
1176
1176
|
if (input.status === "done" || input.status === "needs_review") {
|
|
1177
1177
|
try {
|
|
1178
|
-
const { incrementSkillSuccess } = await import("./skill-refinement-
|
|
1178
|
+
const { incrementSkillSuccess } = await import("./skill-refinement-7C7X42Z5.js");
|
|
1179
1179
|
await incrementSkillSuccess(
|
|
1180
1180
|
String(row.assigned_to),
|
|
1181
1181
|
row.project_name ? String(row.project_name) : null
|
|
@@ -2304,7 +2304,7 @@ async function verifyPaneAtCapacity(sessionName) {
|
|
|
2304
2304
|
reason: `capture-pane failed: ${err instanceof Error ? err.message : String(err)}`
|
|
2305
2305
|
};
|
|
2306
2306
|
}
|
|
2307
|
-
const { isAtCapacity } = await import("./capacity-monitor-
|
|
2307
|
+
const { isAtCapacity } = await import("./capacity-monitor-EPHJTSKF.js");
|
|
2308
2308
|
if (!isAtCapacity(pane)) {
|
|
2309
2309
|
return {
|
|
2310
2310
|
atCapacity: false,
|
|
@@ -3,30 +3,30 @@ import {
|
|
|
3
3
|
} from "./chunk-MLXJ5EZG.js";
|
|
4
4
|
import {
|
|
5
5
|
createTask
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-O2JGR7EU.js";
|
|
7
7
|
import {
|
|
8
8
|
getActiveAgent
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-3N4ZEPZI.js";
|
|
10
10
|
import {
|
|
11
11
|
ensureEmployee,
|
|
12
12
|
logTaskDispatch,
|
|
13
13
|
resolveExeSession
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-FMKD6N33.js";
|
|
15
15
|
import {
|
|
16
16
|
recordOrchestrationEventBestEffort
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-ITYWLFYC.js";
|
|
18
18
|
import {
|
|
19
19
|
getAgentRuntime
|
|
20
20
|
} from "./chunk-6RX2XEET.js";
|
|
21
21
|
import {
|
|
22
22
|
getLicenseSync
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-3PDZQICZ.js";
|
|
24
24
|
import {
|
|
25
25
|
getAgentContext
|
|
26
26
|
} from "./chunk-GJV3WDWM.js";
|
|
27
27
|
import {
|
|
28
28
|
isCoordinatorName
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-3MHKTBHZ.js";
|
|
30
30
|
|
|
31
31
|
// src/mcp/tools/create-task.ts
|
|
32
32
|
import { z } from "zod";
|
|
@@ -211,7 +211,7 @@ function registerCreateTask(server) {
|
|
|
211
211
|
session_scope: sessionScope,
|
|
212
212
|
created_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
213
213
|
}), "utf-8");
|
|
214
|
-
const { recordOrchestrationEventBestEffort: recordOE } = await import("./orchestration-events-
|
|
214
|
+
const { recordOrchestrationEventBestEffort: recordOE } = await import("./orchestration-events-MSJVUR4T.js");
|
|
215
215
|
recordOE({
|
|
216
216
|
eventType: "signal.created",
|
|
217
217
|
source: "create-task.mcp",
|
|
@@ -243,7 +243,7 @@ function registerCreateTask(server) {
|
|
|
243
243
|
let projectConflictOpts = {};
|
|
244
244
|
try {
|
|
245
245
|
const { getClient } = await import("./lib/database.js");
|
|
246
|
-
const { sessionScopeFilter } = await import("./task-scope-
|
|
246
|
+
const { sessionScopeFilter } = await import("./task-scope-ULC62J6G.js");
|
|
247
247
|
const client = getClient();
|
|
248
248
|
const scope = sessionScopeFilter();
|
|
249
249
|
const existing = await client.execute({
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
fastDbInit
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-2THPPZF2.js";
|
|
4
4
|
import {
|
|
5
5
|
sessionScopeFilter
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-FMKD6N33.js";
|
|
7
7
|
import {
|
|
8
8
|
formatStatusAll,
|
|
9
9
|
formatStatusDeep,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
getClient,
|
|
15
15
|
isCoordinatorRole,
|
|
16
16
|
loadEmployees
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-3MHKTBHZ.js";
|
|
18
18
|
import {
|
|
19
19
|
isMainModule
|
|
20
20
|
} from "./chunk-6Y4B3QF6.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
recordOrchestrationEventBestEffort
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ITYWLFYC.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/session-registry.ts
|
|
6
6
|
import { readFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
|
|
@@ -61,16 +61,17 @@ function pruneStaleSessions() {
|
|
|
61
61
|
}
|
|
62
62
|
const liveSet = new Set(liveSessions);
|
|
63
63
|
const alive = sessions.filter((s) => liveSet.has(s.windowName));
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
const staleSessions = sessions.filter((s) => !liveSet.has(s.windowName));
|
|
65
|
+
if (staleSessions.length > 0) {
|
|
66
66
|
recordOrchestrationEventBestEffort({
|
|
67
67
|
eventType: "registry.missing_tmux",
|
|
68
68
|
source: "session-registry.pruneStaleSessions",
|
|
69
69
|
severity: "warn",
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
attempt: staleSessions.length,
|
|
71
|
+
payload: {
|
|
72
|
+
count: staleSessions.length,
|
|
73
|
+
examples: staleSessions.slice(0, 5).map((s) => s.windowName)
|
|
74
|
+
}
|
|
74
75
|
});
|
|
75
76
|
}
|
|
76
77
|
const pruned = sessions.length - alive.length;
|
|
@@ -94,32 +95,41 @@ function checkSessionRegistryConsistency(liveSessionsOverride) {
|
|
|
94
95
|
}
|
|
95
96
|
const liveSet = new Set(liveSessions);
|
|
96
97
|
const registeredSet = new Set(sessions.map((s) => s.windowName));
|
|
98
|
+
const missingTmuxExamples = [];
|
|
99
|
+
const missingRegistryExamples = [];
|
|
97
100
|
for (const entry of sessions) {
|
|
98
101
|
if (liveSet.has(entry.windowName)) continue;
|
|
99
102
|
result.missingTmux++;
|
|
103
|
+
if (missingTmuxExamples.length < 5) missingTmuxExamples.push(entry.windowName);
|
|
104
|
+
}
|
|
105
|
+
for (const live of liveSessions) {
|
|
106
|
+
if (registeredSet.has(live)) continue;
|
|
107
|
+
if (!looksLikeExeOsSession(live)) continue;
|
|
108
|
+
result.missingRegistry++;
|
|
109
|
+
if (missingRegistryExamples.length < 5) missingRegistryExamples.push(live);
|
|
110
|
+
}
|
|
111
|
+
if (result.missingTmux > 0) {
|
|
100
112
|
recordOrchestrationEventBestEffort({
|
|
101
113
|
eventType: "registry.missing_tmux",
|
|
102
114
|
source: "session-registry.checkSessionRegistryConsistency",
|
|
103
115
|
severity: "warn",
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
116
|
+
attempt: result.missingTmux,
|
|
117
|
+
payload: {
|
|
118
|
+
count: result.missingTmux,
|
|
119
|
+
examples: missingTmuxExamples
|
|
120
|
+
}
|
|
108
121
|
});
|
|
109
122
|
}
|
|
110
|
-
|
|
111
|
-
if (registeredSet.has(live)) continue;
|
|
112
|
-
if (!looksLikeExeOsSession(live)) continue;
|
|
113
|
-
result.missingRegistry++;
|
|
114
|
-
const agentPart = live.includes("-") ? live.split("-")[0] : live;
|
|
115
|
-
const parentExe = live.includes("-") ? live.slice(live.indexOf("-") + 1) : live;
|
|
123
|
+
if (result.missingRegistry > 0) {
|
|
116
124
|
recordOrchestrationEventBestEffort({
|
|
117
125
|
eventType: "registry.missing_entry",
|
|
118
126
|
source: "session-registry.checkSessionRegistryConsistency",
|
|
119
127
|
severity: "warn",
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
128
|
+
attempt: result.missingRegistry,
|
|
129
|
+
payload: {
|
|
130
|
+
count: result.missingRegistry,
|
|
131
|
+
examples: missingRegistryExamples
|
|
132
|
+
}
|
|
123
133
|
});
|
|
124
134
|
}
|
|
125
135
|
return result;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getClient
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-3MHKTBHZ.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/orchestration-events.ts
|
|
6
6
|
import crypto from "crypto";
|
|
@@ -65,7 +65,26 @@ var ORCHESTRATION_LATENCY_METRIC_KEYS = [
|
|
|
65
65
|
"daemonTickMs"
|
|
66
66
|
];
|
|
67
67
|
var SENSITIVE_PAYLOAD_KEY = /(context|prompt|secret|token|password|passphrase|recovery|raw|key)/i;
|
|
68
|
+
var BEST_EFFORT_QUEUE_LIMIT = 200;
|
|
69
|
+
var schemaInitializedClients = /* @__PURE__ */ new WeakSet();
|
|
70
|
+
var schemaInitializingClients = /* @__PURE__ */ new WeakMap();
|
|
71
|
+
var bestEffortQueue = Promise.resolve();
|
|
72
|
+
var bestEffortPending = 0;
|
|
68
73
|
async function ensureOrchestrationEventsSchema(client = getClient()) {
|
|
74
|
+
if (schemaInitializedClients.has(client)) return;
|
|
75
|
+
const existing = schemaInitializingClients.get(client);
|
|
76
|
+
if (existing) return existing;
|
|
77
|
+
const initialization = createOrchestrationEventsSchema(client).then(() => {
|
|
78
|
+
schemaInitializedClients.add(client);
|
|
79
|
+
schemaInitializingClients.delete(client);
|
|
80
|
+
}).catch((err) => {
|
|
81
|
+
schemaInitializingClients.delete(client);
|
|
82
|
+
throw err;
|
|
83
|
+
});
|
|
84
|
+
schemaInitializingClients.set(client, initialization);
|
|
85
|
+
return initialization;
|
|
86
|
+
}
|
|
87
|
+
async function createOrchestrationEventsSchema(client) {
|
|
69
88
|
await client.execute({
|
|
70
89
|
sql: `CREATE TABLE IF NOT EXISTS orchestration_events (
|
|
71
90
|
id TEXT PRIMARY KEY,
|
|
@@ -142,20 +161,43 @@ async function recordOrchestrationEvent(input) {
|
|
|
142
161
|
}
|
|
143
162
|
}
|
|
144
163
|
function recordOrchestrationEventBestEffort(input) {
|
|
145
|
-
|
|
164
|
+
if (bestEffortPending >= BEST_EFFORT_QUEUE_LIMIT) {
|
|
165
|
+
if (process.env.EXE_DEBUG === "1") {
|
|
166
|
+
process.stderr.write(
|
|
167
|
+
`[orchestration-events] best-effort queue saturated; dropped ${input.eventType}
|
|
168
|
+
`
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
bestEffortPending++;
|
|
174
|
+
bestEffortQueue = bestEffortQueue.then(async () => {
|
|
175
|
+
try {
|
|
176
|
+
await recordOrchestrationEvent(input);
|
|
177
|
+
} finally {
|
|
178
|
+
bestEffortPending = Math.max(0, bestEffortPending - 1);
|
|
179
|
+
}
|
|
180
|
+
}).catch((err) => {
|
|
181
|
+
if (process.env.EXE_DEBUG === "1") {
|
|
182
|
+
process.stderr.write(
|
|
183
|
+
`[orchestration-events] best-effort write skipped: ${err instanceof Error ? err.message : String(err)}
|
|
184
|
+
`
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
146
188
|
}
|
|
147
189
|
async function getOrchestrationMetrics(input = {}) {
|
|
148
190
|
const client = getClient();
|
|
149
191
|
await ensureOrchestrationEventsSchema(client);
|
|
150
192
|
const sinceIso = input.sinceIso ?? null;
|
|
151
193
|
const result = sinceIso ? await client.execute({
|
|
152
|
-
sql: `SELECT event_type, ts, task_id, tmux_session, agent_id, reviewer, duration_ms, result, error_code
|
|
194
|
+
sql: `SELECT event_type, ts, task_id, tmux_session, agent_id, reviewer, attempt, duration_ms, result, error_code
|
|
153
195
|
FROM orchestration_events
|
|
154
196
|
WHERE ts >= ?
|
|
155
197
|
ORDER BY ts ASC`,
|
|
156
198
|
args: [sinceIso]
|
|
157
199
|
}) : await client.execute({
|
|
158
|
-
sql: `SELECT event_type, ts, task_id, tmux_session, agent_id, reviewer, duration_ms, result, error_code
|
|
200
|
+
sql: `SELECT event_type, ts, task_id, tmux_session, agent_id, reviewer, attempt, duration_ms, result, error_code
|
|
159
201
|
FROM orchestration_events
|
|
160
202
|
ORDER BY ts ASC`,
|
|
161
203
|
args: []
|
|
@@ -219,6 +261,7 @@ async function getOrchestrationMetrics(input = {}) {
|
|
|
219
261
|
const type = String(row.event_type ?? "");
|
|
220
262
|
const taskId = row.task_id == null ? "" : String(row.task_id);
|
|
221
263
|
const ts = Date.parse(String(row.ts ?? ""));
|
|
264
|
+
const eventCount = eventWeight(row);
|
|
222
265
|
if (type === "nudge.duplicate") counts.duplicateNudges++;
|
|
223
266
|
if (type === "review.missed") counts.missedReviews++;
|
|
224
267
|
if (type === "tmux.command.timeout") counts.tmuxCommandTimeouts++;
|
|
@@ -267,8 +310,8 @@ async function getOrchestrationMetrics(input = {}) {
|
|
|
267
310
|
if (type === "worktree.failed") counts.worktreeFailed++;
|
|
268
311
|
if (type === "worktree.pruned") counts.worktreePruned++;
|
|
269
312
|
if (type === "worktree.skipped") counts.worktreeSkipped++;
|
|
270
|
-
if (type === "registry.missing_tmux") counts.registryMissingTmux
|
|
271
|
-
if (type === "registry.missing_entry") counts.registryMissingEntry
|
|
313
|
+
if (type === "registry.missing_tmux") counts.registryMissingTmux += eventCount;
|
|
314
|
+
if (type === "registry.missing_entry") counts.registryMissingEntry += eventCount;
|
|
272
315
|
if (type.startsWith("tmux.") && String(row.error_code ?? "").toLowerCase().includes("timeout")) {
|
|
273
316
|
counts.tmuxCommandTimeouts++;
|
|
274
317
|
}
|
|
@@ -540,6 +583,11 @@ function percentile(sorted, percentileValue) {
|
|
|
540
583
|
const rank = Math.ceil(percentileValue / 100 * sorted.length) - 1;
|
|
541
584
|
return sorted[Math.min(sorted.length - 1, Math.max(0, rank))] ?? 0;
|
|
542
585
|
}
|
|
586
|
+
function eventWeight(row) {
|
|
587
|
+
const value = Number(row.attempt ?? 1);
|
|
588
|
+
if (!Number.isFinite(value) || value < 1) return 1;
|
|
589
|
+
return Math.floor(value);
|
|
590
|
+
}
|
|
543
591
|
function formatMetric(metric) {
|
|
544
592
|
if (metric.count === 0) return "n=0";
|
|
545
593
|
return `n=${metric.count}, p50=${formatMs(metric.p50)}, p95=${formatMs(metric.p95)}, p99=${formatMs(metric.p99)}`;
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
createCRMWebhookHandler,
|
|
6
6
|
parseTwentyWebhook
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-HLYNKMAG.js";
|
|
8
8
|
import {
|
|
9
9
|
WhatsAppAdapter
|
|
10
10
|
} from "./chunk-ECSNSHZ7.js";
|
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
retryWithBackoff,
|
|
43
43
|
routeMessage,
|
|
44
44
|
validateGatewayConfig
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-MZ2BL3JP.js";
|
|
46
46
|
import {
|
|
47
47
|
OllamaProvider
|
|
48
48
|
} from "./chunk-FWFFZGSC.js";
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
listWorkflowDefinitions,
|
|
3
3
|
runWorkflow,
|
|
4
4
|
startWorkflow
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-VG3VVFF5.js";
|
|
6
6
|
import {
|
|
7
7
|
initCRMBridge
|
|
8
8
|
} from "./chunk-ONKIWA3R.js";
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
} from "./chunk-MP2AFCGL.js";
|
|
12
12
|
import {
|
|
13
13
|
getClient
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-3MHKTBHZ.js";
|
|
15
15
|
|
|
16
16
|
// src/gateway/router.ts
|
|
17
17
|
function matchesPlatform(msgPlatform, matchPlatform) {
|
|
@@ -11,13 +11,13 @@ import {
|
|
|
11
11
|
sessionScopeFilter,
|
|
12
12
|
updateTaskStatus,
|
|
13
13
|
writeNotification
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-FMKD6N33.js";
|
|
15
15
|
import {
|
|
16
16
|
getTransport
|
|
17
17
|
} from "./chunk-5YDHBZCO.js";
|
|
18
18
|
import {
|
|
19
19
|
recordOrchestrationEventBestEffort
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-ITYWLFYC.js";
|
|
21
21
|
import {
|
|
22
22
|
getAgentRuntime
|
|
23
23
|
} from "./chunk-6RX2XEET.js";
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
isCoordinatorName,
|
|
34
34
|
isMultiInstance,
|
|
35
35
|
shouldAutoInstance
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-3MHKTBHZ.js";
|
|
37
37
|
import {
|
|
38
38
|
EXE_AI_DIR
|
|
39
39
|
} from "./chunk-WXW3XGWX.js";
|
|
@@ -159,7 +159,7 @@ async function dispatchTaskToEmployee(input) {
|
|
|
159
159
|
let crossProject = false;
|
|
160
160
|
if (input.projectName) {
|
|
161
161
|
try {
|
|
162
|
-
const { assertSessionScope } = await import("./session-scope-
|
|
162
|
+
const { assertSessionScope } = await import("./session-scope-7BZTNB2X.js");
|
|
163
163
|
const check = assertSessionScope("dispatch_task", input.projectName);
|
|
164
164
|
if (check.reason === "cross_session_denied") {
|
|
165
165
|
crossProject = true;
|
|
@@ -500,7 +500,7 @@ async function updateTask(input) {
|
|
|
500
500
|
await markTaskNotificationsRead(taskFile);
|
|
501
501
|
if (input.status === "needs_review" && !isCoordinator) {
|
|
502
502
|
try {
|
|
503
|
-
const { writeNotification: writeNotification2 } = await import("./notifications-
|
|
503
|
+
const { writeNotification: writeNotification2 } = await import("./notifications-6GRSVIP6.js");
|
|
504
504
|
await writeNotification2({
|
|
505
505
|
agentId: String(row.assigned_to),
|
|
506
506
|
agentRole: String(row.assigned_to),
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
updateTask
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-O2JGR7EU.js";
|
|
4
4
|
import {
|
|
5
5
|
TASK_ALREADY_CLAIMED_PREFIX
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-FMKD6N33.js";
|
|
7
7
|
|
|
8
8
|
// src/mcp/tools/update-task.ts
|
|
9
9
|
import { z } from "zod";
|
|
@@ -23,7 +23,7 @@ function registerUpdateTask(server) {
|
|
|
23
23
|
const status = rawStatus;
|
|
24
24
|
let callerAgentId;
|
|
25
25
|
try {
|
|
26
|
-
const { getActiveAgent: getAgent } = await import("./active-agent-
|
|
26
|
+
const { getActiveAgent: getAgent } = await import("./active-agent-4RUP4VYK.js");
|
|
27
27
|
callerAgentId = getAgent().agentId;
|
|
28
28
|
} catch {
|
|
29
29
|
}
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
buildRawVisibilityFilter,
|
|
4
4
|
buildWikiScopeFilter,
|
|
5
5
|
searchMemories
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-TCBUBBTL.js";
|
|
7
7
|
import {
|
|
8
8
|
getClient
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-3MHKTBHZ.js";
|
|
10
10
|
|
|
11
11
|
// src/lib/hybrid-search.ts
|
|
12
12
|
var RRF_K = 60;
|
|
@@ -233,7 +233,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
233
233
|
let rerankerAvailable = false;
|
|
234
234
|
if (process.env.EXE_IS_DAEMON === "1") {
|
|
235
235
|
try {
|
|
236
|
-
const { isRerankerAvailable } = await import("./reranker-
|
|
236
|
+
const { isRerankerAvailable } = await import("./reranker-JTDM3MV2.js");
|
|
237
237
|
rerankerAvailable = isRerankerAvailable();
|
|
238
238
|
} catch {
|
|
239
239
|
}
|
|
@@ -288,7 +288,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
288
288
|
]).catch(() => []),
|
|
289
289
|
includeStructuredCards ? (async () => {
|
|
290
290
|
try {
|
|
291
|
-
const { searchMemoryCards } = await import("./memory-cards-
|
|
291
|
+
const { searchMemoryCards } = await import("./memory-cards-W4VTTFYM.js");
|
|
292
292
|
return await searchMemoryCards(effectiveQuery, agentId, fetchOptions);
|
|
293
293
|
} catch {
|
|
294
294
|
return [];
|
|
@@ -297,7 +297,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
297
297
|
// Reflection insights: patterns, contradictions, summaries across sessions
|
|
298
298
|
includeStructuredCards ? (async () => {
|
|
299
299
|
try {
|
|
300
|
-
const { searchReflections } = await import("./memory-reflection-
|
|
300
|
+
const { searchReflections } = await import("./memory-reflection-RUCTWMQ5.js");
|
|
301
301
|
const insights = await searchReflections(effectiveQuery, agentId, 5);
|
|
302
302
|
return insights.map((ins) => ({
|
|
303
303
|
id: ins.id,
|
|
@@ -397,7 +397,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
397
397
|
try {
|
|
398
398
|
let rerankedRecords;
|
|
399
399
|
if (graphContextMap.size > 0) {
|
|
400
|
-
const { rerankWithContext } = await import("./reranker-
|
|
400
|
+
const { rerankWithContext } = await import("./reranker-JTDM3MV2.js");
|
|
401
401
|
const candidates = merged.map((m) => ({
|
|
402
402
|
text: m.raw_text,
|
|
403
403
|
context: graphContextMap.get(m.id)
|
|
@@ -405,7 +405,7 @@ async function hybridSearch(queryText, agentId, options) {
|
|
|
405
405
|
const scored = await rerankWithContext(effectiveQuery, candidates, rerankReturnLimit);
|
|
406
406
|
rerankedRecords = scored.map((s) => merged[s.index]);
|
|
407
407
|
} else {
|
|
408
|
-
const { rerank } = await import("./reranker-
|
|
408
|
+
const { rerank } = await import("./reranker-JTDM3MV2.js");
|
|
409
409
|
rerankedRecords = await rerank(effectiveQuery, merged, rerankReturnLimit);
|
|
410
410
|
}
|
|
411
411
|
if (rerankedRecords.length > 0) {
|
|
@@ -722,7 +722,7 @@ async function lightweightSearch(queryText, agentId, options) {
|
|
|
722
722
|
}
|
|
723
723
|
if (options?.includeStructuredCards !== true) return results;
|
|
724
724
|
try {
|
|
725
|
-
const { searchMemoryCards } = await import("./memory-cards-
|
|
725
|
+
const { searchMemoryCards } = await import("./memory-cards-W4VTTFYM.js");
|
|
726
726
|
const cardResults = await searchMemoryCards(queryText, agentId, options);
|
|
727
727
|
if (cardResults.length > 0) {
|
|
728
728
|
return rrfMergeMulti([results, cardResults], limit, RRF_K, [1, 0.85]);
|
|
@@ -106,11 +106,23 @@ async function stopToolTelemetryFlush() {
|
|
|
106
106
|
}
|
|
107
107
|
await flushToMemory();
|
|
108
108
|
}
|
|
109
|
+
function getToolUsageSummary() {
|
|
110
|
+
const summary = {};
|
|
111
|
+
for (const [tool, record] of _toolCalls) {
|
|
112
|
+
summary[tool] = {
|
|
113
|
+
count: record.count,
|
|
114
|
+
errors: record.errors,
|
|
115
|
+
actions: Object.fromEntries(record.actions)
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return summary;
|
|
119
|
+
}
|
|
109
120
|
|
|
110
121
|
export {
|
|
111
122
|
wrapServerWithTelemetry,
|
|
112
123
|
getToolUsageStats,
|
|
113
124
|
resetToolUsageStats,
|
|
114
125
|
startToolTelemetryFlush,
|
|
115
|
-
stopToolTelemetryFlush
|
|
126
|
+
stopToolTelemetryFlush,
|
|
127
|
+
getToolUsageSummary
|
|
116
128
|
};
|