@wirecat/zoom-cli 0.56.0 → 0.57.0
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/README.md +1 -1
- package/dist/bin/zm.js +35 -5
- package/dist/bundle/all-profiles-EKHWTGOY.js +25 -0
- package/dist/bundle/answer-policy-KH2IFXPN.js +96 -0
- package/dist/bundle/anthropic-VL54IUGF.js +70 -0
- package/dist/bundle/bun-ADJVI4HY.js +169 -0
- package/dist/bundle/bun-sqlite-2SDA3YOT.js +69 -0
- package/dist/bundle/chunk-2IKY7VBH.js +9 -0
- package/dist/bundle/chunk-2WOGZDZG.js +431 -0
- package/dist/bundle/chunk-4R7HYNZS.js +73 -0
- package/dist/bundle/chunk-4VCA7QU3.js +538 -0
- package/dist/bundle/chunk-4YLS4YLS.js +29 -0
- package/dist/bundle/chunk-5D4AEUVA.js +24783 -0
- package/dist/bundle/chunk-5F7IOESV.js +281 -0
- package/dist/bundle/chunk-5QESMCQK.js +122 -0
- package/dist/bundle/chunk-6M6FJV5D.js +138 -0
- package/dist/bundle/chunk-6MX5T6AQ.js +17 -0
- package/dist/bundle/chunk-6P3YHT54.js +385 -0
- package/dist/bundle/chunk-7A6PZUDR.js +938 -0
- package/dist/bundle/chunk-7GUG6UZS.js +884 -0
- package/dist/bundle/chunk-7JZJMHQY.js +487 -0
- package/dist/bundle/chunk-A4ETXPMZ.js +98 -0
- package/dist/bundle/chunk-ADLS6FVG.js +24600 -0
- package/dist/bundle/chunk-AE4BOXH7.js +5292 -0
- package/dist/bundle/chunk-AN3GVZTU.js +76 -0
- package/dist/bundle/chunk-BAYNCCNM.js +215 -0
- package/dist/bundle/chunk-BW2WPOXP.js +166 -0
- package/dist/bundle/chunk-BW52AJ4R.js +3387 -0
- package/dist/bundle/chunk-CB5UTASG.js +18 -0
- package/dist/bundle/chunk-CLMXBW53.js +1028 -0
- package/dist/bundle/chunk-DCTXOMOR.js +35 -0
- package/dist/bundle/chunk-DFDN6AUB.js +21 -0
- package/dist/bundle/chunk-EOQFWJJD.js +1095 -0
- package/dist/bundle/chunk-G4R4ZIGD.js +3569 -0
- package/dist/bundle/chunk-G4VZDINN.js +161 -0
- package/dist/bundle/chunk-GARCOIB6.js +409 -0
- package/dist/bundle/chunk-GKMGS7G5.js +1938 -0
- package/dist/bundle/chunk-HCNMFFG3.js +82 -0
- package/dist/bundle/chunk-HG5KRV55.js +1970 -0
- package/dist/bundle/chunk-HKYLSIZ2.js +82 -0
- package/dist/bundle/chunk-HTQTIKWP.js +928 -0
- package/dist/bundle/chunk-I4VQDXFR.js +100 -0
- package/dist/bundle/chunk-ICSKEDPI.js +36139 -0
- package/dist/bundle/chunk-IP4OK7RQ.js +24 -0
- package/dist/bundle/chunk-IVQ6342B.js +2 -0
- package/dist/bundle/chunk-K72SEMYI.js +160 -0
- package/dist/bundle/chunk-LHRCJYFC.js +19 -0
- package/dist/bundle/chunk-LPTIQLDW.js +192 -0
- package/dist/bundle/chunk-LQ3T2ZIX.js +124 -0
- package/dist/bundle/chunk-LSVI3A5X.js +836 -0
- package/dist/bundle/chunk-LW2G4U6W.js +570 -0
- package/dist/bundle/chunk-LXB6ONWC.js +3517 -0
- package/dist/bundle/chunk-LY26NW3I.js +6848 -0
- package/dist/bundle/chunk-MAEFLDHG.js +6092 -0
- package/dist/bundle/chunk-MZH4GDR4.js +45 -0
- package/dist/bundle/chunk-NN5B24KP.js +1109 -0
- package/dist/bundle/chunk-NO7CJEYV.js +22 -0
- package/dist/bundle/chunk-NTDWAAGL.js +18435 -0
- package/dist/bundle/chunk-NW3X3G5X.js +264 -0
- package/dist/bundle/chunk-O66V2WHK.js +48 -0
- package/dist/bundle/chunk-OCGPZHXW.js +25 -0
- package/dist/bundle/chunk-OIHDCGV4.js +151 -0
- package/dist/bundle/chunk-OVSWVPXL.js +8190 -0
- package/dist/bundle/chunk-PIN5RZ3D.js +63 -0
- package/dist/bundle/chunk-QLIB3PEC.js +1146 -0
- package/dist/bundle/chunk-QTR6D5HT.js +58 -0
- package/dist/bundle/chunk-QUJPQMHJ.js +2315 -0
- package/dist/bundle/chunk-R3HPOCZD.js +188 -0
- package/dist/bundle/chunk-RMV4C2YL.js +482 -0
- package/dist/bundle/chunk-RRRBMQ2E.js +844 -0
- package/dist/bundle/chunk-S4S7E54J.js +60 -0
- package/dist/bundle/chunk-SB6WOSHG.js +1109 -0
- package/dist/bundle/chunk-SE75DPBY.js +31 -0
- package/dist/bundle/chunk-SQJ7EH2D.js +97 -0
- package/dist/bundle/chunk-TKCHUT2H.js +422 -0
- package/dist/bundle/chunk-TLQUKHEM.js +193 -0
- package/dist/bundle/chunk-TZ2MKETI.js +100 -0
- package/dist/bundle/chunk-UC44ZMQV.js +78 -0
- package/dist/bundle/chunk-UI5UTMSZ.js +275 -0
- package/dist/bundle/chunk-VPPYYWOH.js +630 -0
- package/dist/bundle/chunk-WJHK5D7Z.js +35612 -0
- package/dist/bundle/chunk-WQ24UC44.js +239 -0
- package/dist/bundle/chunk-X5DFDGWS.js +2 -0
- package/dist/bundle/chunk-Y5E2WNWB.js +35 -0
- package/dist/bundle/chunk-YB4DMKYX.js +119 -0
- package/dist/bundle/chunk-Z4TZ6TAF.js +288 -0
- package/dist/bundle/chunk-ZVVMGPBJ.js +50 -0
- package/dist/bundle/cli-72EQATJF.js +825 -0
- package/dist/bundle/command-contract-4MHSZUN3.js +38 -0
- package/dist/bundle/config-GFIJK6G2.js +79 -0
- package/dist/bundle/dist-IBNHCQXT.js +136 -0
- package/dist/bundle/dist-XUFQCJXW.js +7577 -0
- package/dist/bundle/echarts-RFTK737T.js +42501 -0
- package/dist/bundle/embed-7QYA2ZZE.js +35 -0
- package/dist/bundle/embedder-YNN6PCHG.js +108 -0
- package/dist/bundle/first-run-EVSRQKZJ.js +23 -0
- package/dist/bundle/first-screen-RG4GUKW7.js +36 -0
- package/dist/bundle/folders-JEPOMYM4.js +13 -0
- package/dist/bundle/instructions-FHNL7CMW.js +9 -0
- package/dist/bundle/main-NYGJXPH7.js +130 -0
- package/dist/bundle/mcp-IXFC2VVR.js +165 -0
- package/dist/bundle/mcp-VGSZDCKK.js +189 -0
- package/dist/bundle/mcp-XKP2PXLS.js +92 -0
- package/dist/bundle/meetings-IBPI4MM4.js +215 -0
- package/dist/bundle/node-P4E63KXA.js +2340 -0
- package/dist/bundle/node-TLZSIHIJ.js +21 -0
- package/dist/bundle/node-ZMCACJVS.js +176 -0
- package/dist/bundle/node-sqlite-ZNGOBA5Q.js +45 -0
- package/dist/bundle/oauth-Q6LKF7DB.js +17 -0
- package/dist/bundle/open-LJ332Y5O.js +19 -0
- package/dist/bundle/output-file-RYQZ3RTE.js +63 -0
- package/dist/bundle/process-ZPTLNVQS.js +91 -0
- package/dist/bundle/program-IBRQBQ6W.js +5845 -0
- package/dist/bundle/prompt-RT7GUUXH.js +12 -0
- package/dist/bundle/recognize-QXGE7YJH.js +190 -0
- package/dist/bundle/remote-FD4MZQV3.js +26 -0
- package/dist/bundle/rerank-V6AVV755.js +49 -0
- package/dist/bundle/run-log-RE2EI3UU.js +111 -0
- package/dist/bundle/serve-HIJTFAW7.js +19 -0
- package/dist/bundle/server-3QOXOYYL.js +53 -0
- package/dist/bundle/server-WLJCU7KK.js +812 -0
- package/dist/bundle/services-KC5KQFBS.js +330 -0
- package/dist/bundle/speech-5JOXLYDA.js +44 -0
- package/dist/bundle/state-PPGRB3T6.js +33 -0
- package/dist/bundle/store-LODVDPK3.js +141 -0
- package/dist/bundle/store-WB5BICTG.js +124 -0
- package/dist/bundle/store-connection-EG6Z5ITP.js +76 -0
- package/dist/bundle/store-maintenance-command-Q5WMFUZ2.js +54 -0
- package/dist/bundle/streaming-UGFFNOXL.js +15 -0
- package/dist/bundle/tokens-AF5CPY2F.js +17 -0
- package/dist/bundle/zm.js +8 -0
- package/dist/contract-overrides.d.ts.map +1 -1
- package/dist/contract-overrides.js +18 -16
- package/dist/contract-overrides.js.map +1 -1
- package/dist/mcp-command.d.ts +3 -2
- package/dist/mcp-command.d.ts.map +1 -1
- package/dist/mcp-command.js +62 -10
- package/dist/mcp-command.js.map +1 -1
- package/dist/program-bindings.d.ts.map +1 -1
- package/dist/program-bindings.js +1 -0
- package/dist/program-bindings.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +7 -5
- package/skills/zoom-cli/SKILL.md +2 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { createRequire as __bundleRequire } from "node:module";
|
|
2
|
+
const require = __bundleRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
holdLock,
|
|
5
|
+
readLock,
|
|
6
|
+
releaseLock,
|
|
7
|
+
takeLock
|
|
8
|
+
} from "./chunk-4R7HYNZS.js";
|
|
9
|
+
import {
|
|
10
|
+
__name
|
|
11
|
+
} from "./chunk-ZVVMGPBJ.js";
|
|
12
|
+
|
|
13
|
+
// node_modules/.pnpm/@wirecat+cli-core@0.469.0_@wirecat+cli-base@0.65.0_commander@15.0.0_typescript@7.0.2_vi_80b586dbc8b099637a6e461856c2ee6b/node_modules/@wirecat/cli-core/dist/mcp/http/state.js
|
|
14
|
+
import { existsSync as existsSync2, readFileSync as readFileSync2 } from "node:fs";
|
|
15
|
+
|
|
16
|
+
// node_modules/.pnpm/@wirecat+cli-core@0.469.0_@wirecat+cli-base@0.65.0_commander@15.0.0_typescript@7.0.2_vi_80b586dbc8b099637a6e461856c2ee6b/node_modules/@wirecat/cli-core/dist/mcp/http/activity.js
|
|
17
|
+
import { randomBytes } from "node:crypto";
|
|
18
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
19
|
+
import { dirname } from "node:path";
|
|
20
|
+
var WRITE_EVERY_MS = 2e3;
|
|
21
|
+
var TOOL_NAME = /^[A-Za-z0-9_.-]{1,64}$/;
|
|
22
|
+
var httpActivityFile = /* @__PURE__ */ __name((tokenFile) => `${tokenFile.replace(/\.json$/, "")}.activity.json`, "httpActivityFile");
|
|
23
|
+
var localDay = /* @__PURE__ */ __name((ms) => {
|
|
24
|
+
const d = new Date(ms);
|
|
25
|
+
return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
|
|
26
|
+
}, "localDay");
|
|
27
|
+
var readActivity = /* @__PURE__ */ __name((path) => {
|
|
28
|
+
if (!existsSync(path))
|
|
29
|
+
return {};
|
|
30
|
+
try {
|
|
31
|
+
const parsed = JSON.parse(readFileSync(path, "utf8"));
|
|
32
|
+
return parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {};
|
|
33
|
+
} catch {
|
|
34
|
+
return {};
|
|
35
|
+
}
|
|
36
|
+
}, "readActivity");
|
|
37
|
+
var calledTools = /* @__PURE__ */ __name((body) => (Array.isArray(body) ? body : [body]).flatMap((message) => {
|
|
38
|
+
if (!message || typeof message !== "object")
|
|
39
|
+
return [];
|
|
40
|
+
const { method, params } = message;
|
|
41
|
+
const name = params?.name;
|
|
42
|
+
return method === "tools/call" && typeof name === "string" && TOOL_NAME.test(name) ? [name] : [];
|
|
43
|
+
}), "calledTools");
|
|
44
|
+
var activityRecorder = /* @__PURE__ */ __name((path, now = Date.now) => {
|
|
45
|
+
const activity = readActivity(path);
|
|
46
|
+
let timer;
|
|
47
|
+
const write = /* @__PURE__ */ __name(() => {
|
|
48
|
+
timer = void 0;
|
|
49
|
+
try {
|
|
50
|
+
mkdirSync(dirname(path), { recursive: true, mode: 448 });
|
|
51
|
+
const temporary = `${path}.${randomBytes(8).toString("hex")}.tmp`;
|
|
52
|
+
writeFileSync(temporary, JSON.stringify(activity), { mode: 384, flag: "wx" });
|
|
53
|
+
chmodSync(temporary, 384);
|
|
54
|
+
renameSync(temporary, path);
|
|
55
|
+
} catch {
|
|
56
|
+
}
|
|
57
|
+
}, "write");
|
|
58
|
+
return {
|
|
59
|
+
record: /* @__PURE__ */ __name((clientId, tools) => {
|
|
60
|
+
const at = now();
|
|
61
|
+
const iso = new Date(at).toISOString();
|
|
62
|
+
const day = localDay(at);
|
|
63
|
+
const before = activity[clientId];
|
|
64
|
+
const counted = before?.day === day ? before.toolCalls : 0;
|
|
65
|
+
const last = tools.at(-1);
|
|
66
|
+
activity[clientId] = {
|
|
67
|
+
lastRequestAt: iso,
|
|
68
|
+
day,
|
|
69
|
+
toolCalls: counted + tools.length,
|
|
70
|
+
...last ? { lastTool: last, lastToolAt: iso } : before?.lastTool ? { lastTool: before.lastTool, ...before.lastToolAt ? { lastToolAt: before.lastToolAt } : {} } : {}
|
|
71
|
+
};
|
|
72
|
+
if (last) {
|
|
73
|
+
clearTimeout(timer);
|
|
74
|
+
write();
|
|
75
|
+
} else if (!timer) {
|
|
76
|
+
timer = setTimeout(write, WRITE_EVERY_MS);
|
|
77
|
+
timer.unref();
|
|
78
|
+
}
|
|
79
|
+
}, "record"),
|
|
80
|
+
flush: /* @__PURE__ */ __name(() => {
|
|
81
|
+
if (!timer)
|
|
82
|
+
return;
|
|
83
|
+
clearTimeout(timer);
|
|
84
|
+
write();
|
|
85
|
+
}, "flush")
|
|
86
|
+
};
|
|
87
|
+
}, "activityRecorder");
|
|
88
|
+
|
|
89
|
+
// node_modules/.pnpm/@wirecat+cli-core@0.469.0_@wirecat+cli-base@0.65.0_commander@15.0.0_typescript@7.0.2_vi_80b586dbc8b099637a6e461856c2ee6b/node_modules/@wirecat/cli-core/dist/mcp/http/state.js
|
|
90
|
+
var ACCESS_SECONDS = 60 * 60;
|
|
91
|
+
var REFRESH_SECONDS = 30 * 24 * 60 * 60;
|
|
92
|
+
var readStored = /* @__PURE__ */ __name((path) => existsSync2(path) ? JSON.parse(readFileSync2(path, "utf8")) : { clients: [], tokens: [] }, "readStored");
|
|
93
|
+
var mcpHttpMarker = /* @__PURE__ */ __name((envPrefix) => `${envPrefix}_MCP_HTTP`, "mcpHttpMarker");
|
|
94
|
+
var httpLogFile = /* @__PURE__ */ __name((tokenFile) => `${tokenFile.replace(/\.json$/, "")}.log`, "httpLogFile");
|
|
95
|
+
var httpLockFile = /* @__PURE__ */ __name((tokenFile) => `${tokenFile.replace(/\.json$/, "")}.lock`, "httpLockFile");
|
|
96
|
+
var httpLaunchFile = /* @__PURE__ */ __name((lockFile) => `${lockFile.replace(/\.lock$/, "")}.launch.json`, "httpLaunchFile");
|
|
97
|
+
var readHttpLaunch = /* @__PURE__ */ __name((path) => {
|
|
98
|
+
try {
|
|
99
|
+
const launch = JSON.parse(readFileSync2(path, "utf8"));
|
|
100
|
+
return typeof launch.invocation === "string" && Array.isArray(launch.argv) && launch.argv.every((word) => typeof word === "string") && typeof launch.env === "object" && launch.env !== null ? launch : void 0;
|
|
101
|
+
} catch {
|
|
102
|
+
return void 0;
|
|
103
|
+
}
|
|
104
|
+
}, "readHttpLaunch");
|
|
105
|
+
var readHttpLock = /* @__PURE__ */ __name((path) => {
|
|
106
|
+
const lock = readLock(path);
|
|
107
|
+
return lock && typeof lock.port === "number" && typeof lock.publicUrl === "string" ? lock : void 0;
|
|
108
|
+
}, "readHttpLock");
|
|
109
|
+
var httpLock = /* @__PURE__ */ __name((path, first) => {
|
|
110
|
+
let current = first;
|
|
111
|
+
const held = takeLock(path, current);
|
|
112
|
+
return {
|
|
113
|
+
held,
|
|
114
|
+
update: /* @__PURE__ */ __name((change) => {
|
|
115
|
+
current = { ...current, ...change };
|
|
116
|
+
holdLock(path, current);
|
|
117
|
+
}, "update"),
|
|
118
|
+
release: /* @__PURE__ */ __name(() => releaseLock(path), "release")
|
|
119
|
+
};
|
|
120
|
+
}, "httpLock");
|
|
121
|
+
var signedInClients = /* @__PURE__ */ __name((tokenFile, now = Date.now()) => {
|
|
122
|
+
const seconds = Math.floor(now / 1e3);
|
|
123
|
+
const { clients, tokens } = readStored(tokenFile);
|
|
124
|
+
const activity = readActivity(httpActivityFile(tokenFile));
|
|
125
|
+
const today = localDay(now);
|
|
126
|
+
const last = /* @__PURE__ */ new Map();
|
|
127
|
+
for (const token of tokens) {
|
|
128
|
+
if (token.expiresAt <= seconds)
|
|
129
|
+
continue;
|
|
130
|
+
const issued = token.expiresAt - (token.kind === "access" ? ACCESS_SECONDS : REFRESH_SECONDS);
|
|
131
|
+
last.set(token.clientId, Math.max(last.get(token.clientId) ?? 0, issued));
|
|
132
|
+
}
|
|
133
|
+
return clients.filter((client) => last.has(client.id)).map((client) => {
|
|
134
|
+
const did = activity[client.id];
|
|
135
|
+
return {
|
|
136
|
+
claimedName: client.name ?? null,
|
|
137
|
+
lastLoginAt: new Date((last.get(client.id) ?? 0) * 1e3).toISOString(),
|
|
138
|
+
lastRequestAt: did?.lastRequestAt ?? null,
|
|
139
|
+
lastTool: did?.lastTool ?? null,
|
|
140
|
+
lastToolAt: did?.lastToolAt ?? null,
|
|
141
|
+
toolCallsToday: did?.day === today ? did.toolCalls : 0
|
|
142
|
+
};
|
|
143
|
+
}).sort((a, b) => b.lastLoginAt.localeCompare(a.lastLoginAt));
|
|
144
|
+
}, "signedInClients");
|
|
145
|
+
|
|
146
|
+
export {
|
|
147
|
+
httpActivityFile,
|
|
148
|
+
calledTools,
|
|
149
|
+
activityRecorder,
|
|
150
|
+
ACCESS_SECONDS,
|
|
151
|
+
REFRESH_SECONDS,
|
|
152
|
+
readStored,
|
|
153
|
+
mcpHttpMarker,
|
|
154
|
+
httpLogFile,
|
|
155
|
+
httpLockFile,
|
|
156
|
+
httpLaunchFile,
|
|
157
|
+
readHttpLaunch,
|
|
158
|
+
readHttpLock,
|
|
159
|
+
httpLock,
|
|
160
|
+
signedInClients
|
|
161
|
+
};
|
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
import { createRequire as __bundleRequire } from "node:module";
|
|
2
|
+
const require = __bundleRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
CliError,
|
|
5
|
+
singleLine
|
|
6
|
+
} from "./chunk-AE4BOXH7.js";
|
|
7
|
+
import {
|
|
8
|
+
__name
|
|
9
|
+
} from "./chunk-ZVVMGPBJ.js";
|
|
10
|
+
|
|
11
|
+
// node_modules/.pnpm/@wirecat+cli-core@0.469.0_@wirecat+cli-base@0.65.0_commander@15.0.0_typescript@7.0.2_vi_80b586dbc8b099637a6e461856c2ee6b/node_modules/@wirecat/cli-core/dist/domain/providers.js
|
|
12
|
+
var KINDS = ["messages", "mail", "notes", "documents", "meetings", "events"];
|
|
13
|
+
var PROVIDERS = [
|
|
14
|
+
{ name: "telegram", kind: "messages", aliases: ["tg"] },
|
|
15
|
+
{ name: "telegram-bot", kind: "messages", aliases: ["tg-bot"] },
|
|
16
|
+
{ name: "max", kind: "messages", aliases: [] },
|
|
17
|
+
{ name: "max-bot", kind: "messages", aliases: [] },
|
|
18
|
+
{ name: "whatsapp", kind: "messages", aliases: ["wa"] },
|
|
19
|
+
{ name: "whatsapp-bot", kind: "messages", aliases: ["wa-bot"] },
|
|
20
|
+
{ name: "email", kind: "mail", aliases: [] },
|
|
21
|
+
{ name: "notes", kind: "notes", aliases: [] },
|
|
22
|
+
{ name: "local", kind: "notes", aliases: [] },
|
|
23
|
+
{ name: "obsidian", kind: "notes", aliases: [] },
|
|
24
|
+
{ name: "zoom", kind: "meetings", aliases: [] }
|
|
25
|
+
];
|
|
26
|
+
var FOLDER_PROVIDERS = ["local", "obsidian", "folder"];
|
|
27
|
+
var isFolderProvider = /* @__PURE__ */ __name((provider) => FOLDER_PROVIDERS.includes(provider), "isFolderProvider");
|
|
28
|
+
var folderProviderSql = /* @__PURE__ */ __name((column = "provider") => `${column} IN (${FOLDER_PROVIDERS.map((name) => `'${name}'`).join(", ")})`, "folderProviderSql");
|
|
29
|
+
var folderProviderOf = /* @__PURE__ */ __name((format) => format === "markdown" ? "local" : "obsidian", "folderProviderOf");
|
|
30
|
+
var DOCUMENT_ACCOUNT_PROVIDERS = ["google-drive"];
|
|
31
|
+
var isDocumentAccountProvider = /* @__PURE__ */ __name((provider) => DOCUMENT_ACCOUNT_PROVIDERS.includes(provider), "isDocumentAccountProvider");
|
|
32
|
+
var filesAccountSql = /* @__PURE__ */ __name((column = "provider") => `${column} IN (${[...FOLDER_PROVIDERS, ...DOCUMENT_ACCOUNT_PROVIDERS].map((name) => `'${name}'`).join(", ")})`, "filesAccountSql");
|
|
33
|
+
var INTERNAL_NOTES = "internal";
|
|
34
|
+
var UNKNOWN_PROVIDER = "unknown provider \u2014 run its CLI once";
|
|
35
|
+
var WORD = /^[a-z0-9][a-z0-9_-]*$/;
|
|
36
|
+
var invalid = /* @__PURE__ */ __name((message) => {
|
|
37
|
+
throw new CliError("validation_error", message);
|
|
38
|
+
}, "invalid");
|
|
39
|
+
var wordOf = /* @__PURE__ */ __name((value, what) => typeof value === "string" && WORD.test(value) ? value : invalid(`${what} is lowercase letters, digits, - and _ \u2014 not ${JSON.stringify(value)}`), "wordOf");
|
|
40
|
+
var providerEntryOf = /* @__PURE__ */ __name((value) => {
|
|
41
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
42
|
+
return invalid("a provider entry is an object");
|
|
43
|
+
const { name, kind, aliases = [], command } = value;
|
|
44
|
+
const named = wordOf(name, "a provider's name");
|
|
45
|
+
if (typeof kind !== "string" || !KINDS.includes(kind))
|
|
46
|
+
invalid(`provider ${named}'s kind is one of ${KINDS.join(", ")} \u2014 not ${JSON.stringify(kind)}`);
|
|
47
|
+
if (!Array.isArray(aliases))
|
|
48
|
+
invalid(`provider ${named}'s aliases are a list`);
|
|
49
|
+
return {
|
|
50
|
+
name: named,
|
|
51
|
+
kind,
|
|
52
|
+
aliases: [...new Set(aliases.map((alias) => wordOf(alias, `an alias of ${named}`)))],
|
|
53
|
+
...command === void 0 ? {} : { command: wordOf(command, `the command of ${named}`) }
|
|
54
|
+
};
|
|
55
|
+
}, "providerEntryOf");
|
|
56
|
+
var describe = /* @__PURE__ */ __name(({ name, kind, command }) => `${name} (${kind}${command ? `, from ${command}` : ""})`, "describe");
|
|
57
|
+
var wordsOf = /* @__PURE__ */ __name(({ name, aliases }) => [name, ...aliases], "wordsOf");
|
|
58
|
+
var joined = /* @__PURE__ */ __name((known, entry) => {
|
|
59
|
+
const same = known.find(({ name }) => name === entry.name);
|
|
60
|
+
if (same && same.kind !== entry.kind)
|
|
61
|
+
invalid(`two provider entries disagree on the kind: ${describe(same)} and ${describe(entry)}`);
|
|
62
|
+
const merged = same ? {
|
|
63
|
+
...same,
|
|
64
|
+
aliases: [.../* @__PURE__ */ new Set([...same.aliases, ...entry.aliases])],
|
|
65
|
+
...entry.command ? { command: entry.command } : {}
|
|
66
|
+
} : entry;
|
|
67
|
+
const others = known.filter((one) => one !== same);
|
|
68
|
+
for (const word of wordsOf(merged)) {
|
|
69
|
+
const owner = others.find((one) => wordsOf(one).includes(word));
|
|
70
|
+
if (owner)
|
|
71
|
+
invalid(`"${word}" names two providers: ${describe(owner)} and ${describe(merged)}`);
|
|
72
|
+
}
|
|
73
|
+
return same ? known.map((one) => one === same ? merged : one) : [...known, merged];
|
|
74
|
+
}, "joined");
|
|
75
|
+
var registry = PROVIDERS;
|
|
76
|
+
var providers = /* @__PURE__ */ __name(() => registry, "providers");
|
|
77
|
+
var useProviders = /* @__PURE__ */ __name((entries) => {
|
|
78
|
+
registry = entries.map(providerEntryOf).reduce(joined, PROVIDERS);
|
|
79
|
+
}, "useProviders");
|
|
80
|
+
var useStoredProviders = /* @__PURE__ */ __name((entries) => {
|
|
81
|
+
const left = [];
|
|
82
|
+
registry = entries.reduce((known, entry) => {
|
|
83
|
+
try {
|
|
84
|
+
return joined(known, providerEntryOf(entry));
|
|
85
|
+
} catch (error) {
|
|
86
|
+
if (!(error instanceof CliError))
|
|
87
|
+
throw error;
|
|
88
|
+
left.push(entry);
|
|
89
|
+
return known;
|
|
90
|
+
}
|
|
91
|
+
}, PROVIDERS);
|
|
92
|
+
return left;
|
|
93
|
+
}, "useStoredProviders");
|
|
94
|
+
var addProvider = /* @__PURE__ */ __name((entry) => {
|
|
95
|
+
registry = joined(registry, providerEntryOf(entry));
|
|
96
|
+
}, "addProvider");
|
|
97
|
+
var isKind = /* @__PURE__ */ __name((word) => KINDS.includes(word.toLowerCase()), "isKind");
|
|
98
|
+
var providerNamed = /* @__PURE__ */ __name((word) => {
|
|
99
|
+
const wanted = word.toLowerCase();
|
|
100
|
+
return registry.find((entry) => wordsOf(entry).includes(wanted));
|
|
101
|
+
}, "providerNamed");
|
|
102
|
+
var kindIn = /* @__PURE__ */ __name((provider) => isFolderProvider(provider) ? "notes" : registry.find(({ name }) => name === provider)?.kind, "kindIn");
|
|
103
|
+
var kindOf = /* @__PURE__ */ __name((provider) => kindIn(provider) ?? "messages", "kindOf");
|
|
104
|
+
|
|
105
|
+
// node_modules/.pnpm/@wirecat+cli-core@0.469.0_@wirecat+cli-base@0.65.0_commander@15.0.0_typescript@7.0.2_vi_80b586dbc8b099637a6e461856c2ee6b/node_modules/@wirecat/cli-core/dist/domain/locator.js
|
|
106
|
+
var SCHEME = "msg:";
|
|
107
|
+
var formatLocator = /* @__PURE__ */ __name(({ provider, account, chat, message }) => SCHEME + [provider, account, chat, message].map(encodeURIComponent).join("/"), "formatLocator");
|
|
108
|
+
var isLocator = /* @__PURE__ */ __name((reference) => reference.trim().startsWith(SCHEME), "isLocator");
|
|
109
|
+
var parseLocator = /* @__PURE__ */ __name((reference) => {
|
|
110
|
+
const trimmed = reference.trim();
|
|
111
|
+
const parts2 = trimmed.startsWith(SCHEME) ? trimmed.slice(SCHEME.length).split("/") : [];
|
|
112
|
+
if (parts2.length !== 4 || parts2.some((part) => part === "")) {
|
|
113
|
+
throw new CliError("validation_error", `"${singleLine(reference)}" is not a message locator \u2014 expected msg:<provider>/<account>/<chat>/<message>`);
|
|
114
|
+
}
|
|
115
|
+
const [provider, account, chat, message] = parts2.map(decodeURIComponent);
|
|
116
|
+
return { provider, account, chat, message };
|
|
117
|
+
}, "parseLocator");
|
|
118
|
+
|
|
119
|
+
// node_modules/.pnpm/@wirecat+cli-core@0.469.0_@wirecat+cli-base@0.65.0_commander@15.0.0_typescript@7.0.2_vi_80b586dbc8b099637a6e461856c2ee6b/node_modules/@wirecat/cli-core/dist/domain/references.js
|
|
120
|
+
var SIMPLE_REFERENCES = [
|
|
121
|
+
"note",
|
|
122
|
+
"document",
|
|
123
|
+
"person",
|
|
124
|
+
"organization",
|
|
125
|
+
"project",
|
|
126
|
+
"task",
|
|
127
|
+
"memory",
|
|
128
|
+
"fact",
|
|
129
|
+
"bot",
|
|
130
|
+
"entity"
|
|
131
|
+
];
|
|
132
|
+
var parts = /* @__PURE__ */ __name((rest, count, reference, shape) => {
|
|
133
|
+
const split = rest.split("/");
|
|
134
|
+
if (split.length !== count || split.some((part) => part === ""))
|
|
135
|
+
throw new CliError("validation_error", `"${singleLine(reference)}" is not a reference \u2014 expected ${shape}`);
|
|
136
|
+
return split.map(decodeURIComponent);
|
|
137
|
+
}, "parts");
|
|
138
|
+
var formatReference = /* @__PURE__ */ __name((reference) => {
|
|
139
|
+
switch (reference.type) {
|
|
140
|
+
case "message":
|
|
141
|
+
return formatLocator(reference);
|
|
142
|
+
case "chat":
|
|
143
|
+
return `chat:${[reference.provider, reference.account, reference.chat].map(encodeURIComponent).join("/")}`;
|
|
144
|
+
case "contact":
|
|
145
|
+
return `contact:${[reference.provider, reference.id].map(encodeURIComponent).join("/")}`;
|
|
146
|
+
case "folder":
|
|
147
|
+
return reference.path === null ? `folder:${encodeURIComponent(reference.id)}` : `folder:${encodeURIComponent(reference.id)}/${encodeURIComponent(reference.path)}`;
|
|
148
|
+
default:
|
|
149
|
+
return `${reference.type}:${reference.id}`;
|
|
150
|
+
}
|
|
151
|
+
}, "formatReference");
|
|
152
|
+
var parseReference = /* @__PURE__ */ __name((text) => {
|
|
153
|
+
const reference = text.trim();
|
|
154
|
+
const colon = reference.indexOf(":");
|
|
155
|
+
const prefix = colon < 0 ? "" : reference.slice(0, colon);
|
|
156
|
+
const rest = reference.slice(colon + 1);
|
|
157
|
+
switch (prefix) {
|
|
158
|
+
case "msg":
|
|
159
|
+
return { type: "message", ...parseLocator(reference) };
|
|
160
|
+
case "chat": {
|
|
161
|
+
const [provider, account, chat] = parts(rest, 3, reference, "chat:<provider>/<account>/<chat>");
|
|
162
|
+
return { type: "chat", provider, account, chat };
|
|
163
|
+
}
|
|
164
|
+
case "contact": {
|
|
165
|
+
const [provider, id] = parts(rest, 2, reference, "contact:<provider>/<id>");
|
|
166
|
+
return { type: "contact", provider, id };
|
|
167
|
+
}
|
|
168
|
+
case "folder": {
|
|
169
|
+
const slash = rest.indexOf("/");
|
|
170
|
+
const id = decodeURIComponent(slash < 0 ? rest : rest.slice(0, slash));
|
|
171
|
+
const path = slash < 0 ? null : folderPath(decodeURIComponent(rest.slice(slash + 1)));
|
|
172
|
+
if (!id.trim() || path === "")
|
|
173
|
+
throw new CliError("validation_error", `"${singleLine(reference)}" is not a reference \u2014 expected folder:<id>[/<path>]`);
|
|
174
|
+
return { type: "folder", id, path };
|
|
175
|
+
}
|
|
176
|
+
default:
|
|
177
|
+
if (SIMPLE_REFERENCES.includes(prefix)) {
|
|
178
|
+
if (!rest.trim())
|
|
179
|
+
throw new CliError("validation_error", `"${singleLine(reference)}" names no ${prefix}`);
|
|
180
|
+
return { type: prefix, id: rest };
|
|
181
|
+
}
|
|
182
|
+
throw new CliError("validation_error", `"${singleLine(reference)}" is not a reference \u2014 expected msg:, chat:, contact:, folder:, ${SIMPLE_REFERENCES.filter((one) => one !== "entity").join(":, ")}:`);
|
|
183
|
+
}
|
|
184
|
+
}, "parseReference");
|
|
185
|
+
var folderPath = /* @__PURE__ */ __name((path) => {
|
|
186
|
+
const clean = path.split("/").filter((part) => part !== "" && part !== ".").join("/");
|
|
187
|
+
return clean === "" ? path.trim() === "" ? "" : null : clean;
|
|
188
|
+
}, "folderPath");
|
|
189
|
+
var canonicalReference = /* @__PURE__ */ __name((text) => formatReference(parseReference(text)), "canonicalReference");
|
|
190
|
+
|
|
191
|
+
// node_modules/.pnpm/@wirecat+cli-core@0.469.0_@wirecat+cli-base@0.65.0_commander@15.0.0_typescript@7.0.2_vi_80b586dbc8b099637a6e461856c2ee6b/node_modules/@wirecat/cli-core/dist/domain/counters.js
|
|
192
|
+
var COUNTER_FIELDS = ["views", "reactions", "comments"];
|
|
193
|
+
var validCounter = /* @__PURE__ */ __name((value) => typeof value === "number" && Number.isFinite(value) && value >= 0, "validCounter");
|
|
194
|
+
var counterValue = /* @__PURE__ */ __name((message, field) => {
|
|
195
|
+
const value = field === "reactions" ? message.reactions?.total : message.providerMetadata?.[field];
|
|
196
|
+
return validCounter(value) ? value : null;
|
|
197
|
+
}, "counterValue");
|
|
198
|
+
var counterObservationTime = /* @__PURE__ */ __name((observation, now) => {
|
|
199
|
+
const at = Date.parse(observation.observedAt);
|
|
200
|
+
if (!validCounter(observation.value) || !Number.isSafeInteger(at) || at < 0 || at > now || !["remote_fetch", "remote_update"].includes(observation.source))
|
|
201
|
+
throw new CliError("validation_error", "counter observation needs a valid value, source and nonfuture observation time");
|
|
202
|
+
if (observation.reactions && (!validCounter(observation.reactions.total) || observation.reactions.total !== observation.value))
|
|
203
|
+
throw new CliError("validation_error", "reaction observation payload and total disagree");
|
|
204
|
+
return at;
|
|
205
|
+
}, "counterObservationTime");
|
|
206
|
+
var observedCounters = /* @__PURE__ */ __name((message, observedAt, fields, source = "remote_fetch") => {
|
|
207
|
+
const observations = {};
|
|
208
|
+
for (const field of fields) {
|
|
209
|
+
const value = counterValue(message, field);
|
|
210
|
+
if (value !== null)
|
|
211
|
+
observations[field] = {
|
|
212
|
+
value,
|
|
213
|
+
observedAt,
|
|
214
|
+
source,
|
|
215
|
+
...field === "reactions" && message.reactions ? { reactions: message.reactions } : {}
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
return { ...message, counterObservations: observations };
|
|
219
|
+
}, "observedCounters");
|
|
220
|
+
var counterFreshness = /* @__PURE__ */ __name((states) => {
|
|
221
|
+
if (!states.length || states.every((one) => one.freshness === "unknown"))
|
|
222
|
+
return "unknown";
|
|
223
|
+
if (states.some((one) => one.freshness === "unknown"))
|
|
224
|
+
return "partial";
|
|
225
|
+
return states.some((one) => one.freshness === "stale") ? "stale" : "fresh";
|
|
226
|
+
}, "counterFreshness");
|
|
227
|
+
|
|
228
|
+
// node_modules/.pnpm/@wirecat+cli-core@0.469.0_@wirecat+cli-base@0.65.0_commander@15.0.0_typescript@7.0.2_vi_80b586dbc8b099637a6e461856c2ee6b/node_modules/@wirecat/cli-core/dist/domain/rankings-options.js
|
|
229
|
+
var MESSAGE_MEASURES = ["views", "reactions", "forwards", "comments", "replies", "thread-size"];
|
|
230
|
+
var AUTHOR_MEASURES = [
|
|
231
|
+
"messages",
|
|
232
|
+
"words",
|
|
233
|
+
"reactions",
|
|
234
|
+
"replies",
|
|
235
|
+
"answers",
|
|
236
|
+
"answer-time",
|
|
237
|
+
"threads",
|
|
238
|
+
"active-days"
|
|
239
|
+
];
|
|
240
|
+
var CONTEXT = /* @__PURE__ */ new Set([
|
|
241
|
+
"replies",
|
|
242
|
+
"replies-from-others",
|
|
243
|
+
"replies-from-others-per-message",
|
|
244
|
+
"thread-size",
|
|
245
|
+
"threads",
|
|
246
|
+
"answers",
|
|
247
|
+
"answer-time"
|
|
248
|
+
]);
|
|
249
|
+
var needsRankingContext = /* @__PURE__ */ __name((options) => options.components.some((name) => CONTEXT.has(name)), "needsRankingContext");
|
|
250
|
+
var presets = {
|
|
251
|
+
helpful: { answers: 0.5, "replies-from-others": 0.25, reactions: 0.25 },
|
|
252
|
+
active: { "active-days": 0.6, messages: 0.4 },
|
|
253
|
+
engaging: { "reactions-per-message": 0.5, "replies-from-others-per-message": 0.5 }
|
|
254
|
+
};
|
|
255
|
+
function invalid2(message) {
|
|
256
|
+
throw new CliError("validation_error", message, { reason: "ranking.invalid" });
|
|
257
|
+
}
|
|
258
|
+
__name(invalid2, "invalid");
|
|
259
|
+
var rankingOptions = /* @__PURE__ */ __name((target, input) => {
|
|
260
|
+
const measures = target === "messages" ? MESSAGE_MEASURES : AUTHOR_MEASURES;
|
|
261
|
+
const { measure, score, weights: given, minMessages } = input;
|
|
262
|
+
const messageKind = input.messageKind ?? "all";
|
|
263
|
+
if (!["all", "posts", "comments"].includes(messageKind))
|
|
264
|
+
invalid2("message_kind takes all, posts or comments");
|
|
265
|
+
if (target === "messages" && minMessages !== void 0)
|
|
266
|
+
invalid2("min_messages applies to stats contacts top");
|
|
267
|
+
if (minMessages !== void 0 && (!Number.isSafeInteger(minMessages) || minMessages < 1))
|
|
268
|
+
invalid2("min_messages takes a positive integer");
|
|
269
|
+
if (measure !== void 0 && !measures.includes(measure))
|
|
270
|
+
invalid2(`--measure takes ${measures.join(", ")}`);
|
|
271
|
+
if (measure !== void 0 && (score !== void 0 || given !== void 0))
|
|
272
|
+
invalid2("--measure cannot be combined with --score or --weights");
|
|
273
|
+
if (score !== void 0 && !["helpful", "active", "engaging"].includes(score))
|
|
274
|
+
invalid2("--score takes helpful, active or engaging");
|
|
275
|
+
if (target === "messages" && score !== void 0 && score !== "engaging")
|
|
276
|
+
invalid2("helpful and active scores apply to authors only");
|
|
277
|
+
const scoring = score !== void 0 || given !== void 0;
|
|
278
|
+
const preset = score;
|
|
279
|
+
let weights = null;
|
|
280
|
+
if (scoring) {
|
|
281
|
+
let raw = given !== void 0 ? given : target === "messages" ? { reactions: 0.5, "replies-from-others": 0.5 } : presets[preset];
|
|
282
|
+
if (typeof raw === "string") {
|
|
283
|
+
try {
|
|
284
|
+
raw = JSON.parse(raw);
|
|
285
|
+
} catch {
|
|
286
|
+
invalid2("--weights takes a JSON object of component weights");
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw))
|
|
290
|
+
invalid2("--weights takes a JSON object of component weights");
|
|
291
|
+
const allowed = target === "messages" ? [...MESSAGE_MEASURES, "replies-from-others"] : [
|
|
292
|
+
...AUTHOR_MEASURES.filter((name) => name !== "answer-time"),
|
|
293
|
+
"replies-from-others",
|
|
294
|
+
"reactions-per-message",
|
|
295
|
+
"replies-from-others-per-message"
|
|
296
|
+
];
|
|
297
|
+
const entries = Object.entries(raw);
|
|
298
|
+
for (const [name, weight] of entries) {
|
|
299
|
+
if (!allowed.includes(name))
|
|
300
|
+
invalid2(`unknown ${target} score component: ${name}`);
|
|
301
|
+
if (typeof weight !== "number" || !Number.isFinite(weight) || weight < 0)
|
|
302
|
+
invalid2(`weight for ${name} must be a finite nonnegative number`);
|
|
303
|
+
}
|
|
304
|
+
if (!entries.some(([, weight]) => weight > 0))
|
|
305
|
+
invalid2("--weights needs at least one positive weight");
|
|
306
|
+
weights = Object.fromEntries(entries);
|
|
307
|
+
}
|
|
308
|
+
const selected = measure ?? (target === "messages" ? "reactions" : "messages");
|
|
309
|
+
return {
|
|
310
|
+
target,
|
|
311
|
+
messageKind,
|
|
312
|
+
minMessages: minMessages ?? (target === "contacts" && score === "engaging" ? 5 : 1),
|
|
313
|
+
measure: scoring ? "score" : selected,
|
|
314
|
+
order: !scoring && selected === "answer-time" ? "ascending" : "descending",
|
|
315
|
+
weights,
|
|
316
|
+
preset: scoring ? preset ?? "custom" : null,
|
|
317
|
+
components: weights === null ? [selected] : Object.entries(weights).filter(([, weight]) => weight > 0).map(([name]) => name)
|
|
318
|
+
};
|
|
319
|
+
}, "rankingOptions");
|
|
320
|
+
var rankingScore = /* @__PURE__ */ __name((raw, maxima, weights) => {
|
|
321
|
+
const entries = Object.entries(weights).filter(([, weight]) => weight > 0);
|
|
322
|
+
const scale = Math.max(...entries.map(([, weight]) => weight));
|
|
323
|
+
const denominator = entries.reduce((sum2, [, weight]) => sum2 + weight / scale, 0);
|
|
324
|
+
if (!Number.isFinite(scale) || scale <= 0 || !Number.isFinite(denominator) || denominator <= 0)
|
|
325
|
+
return null;
|
|
326
|
+
const normalized = {};
|
|
327
|
+
const contributions = {};
|
|
328
|
+
let sum = 0;
|
|
329
|
+
for (const [name, weight] of entries) {
|
|
330
|
+
const value = raw[name];
|
|
331
|
+
const maximum = maxima[name];
|
|
332
|
+
if (value == null || !Number.isFinite(value) || value < 0 || maximum === void 0 || !Number.isFinite(maximum) || maximum < value)
|
|
333
|
+
return null;
|
|
334
|
+
const part = maximum === 0 ? 0 : value / maximum;
|
|
335
|
+
normalized[name] = part;
|
|
336
|
+
contributions[name] = 100 * part * (weight / scale) / denominator;
|
|
337
|
+
sum += contributions[name];
|
|
338
|
+
}
|
|
339
|
+
return { score: Math.min(100, sum), normalized, contributions };
|
|
340
|
+
}, "rankingScore");
|
|
341
|
+
var RANKING_TOKENIZER_VERSION = 1;
|
|
342
|
+
var withoutUrls = /* @__PURE__ */ __name((text) => text.replace(/\S+/gu, (token) => {
|
|
343
|
+
for (let offset = 0; ; ) {
|
|
344
|
+
const marker = token.indexOf("://", offset);
|
|
345
|
+
if (marker < 0)
|
|
346
|
+
break;
|
|
347
|
+
let start = marker;
|
|
348
|
+
while (start > 0 && /[a-z0-9+.-]/iu.test(token[start - 1]))
|
|
349
|
+
start--;
|
|
350
|
+
if (/^[a-z][a-z0-9+.-]*$/iu.test(token.slice(start, marker)) && (start === 0 || !/\w/u.test(token[start - 1])))
|
|
351
|
+
return token.slice(0, start);
|
|
352
|
+
offset = marker + 3;
|
|
353
|
+
}
|
|
354
|
+
const folded = token.toLowerCase();
|
|
355
|
+
for (let offset = 0; ; ) {
|
|
356
|
+
const start = folded.indexOf("www.", offset);
|
|
357
|
+
if (start < 0)
|
|
358
|
+
break;
|
|
359
|
+
if (start === 0 || !/\w/u.test(token[start - 1]))
|
|
360
|
+
return token.slice(0, start);
|
|
361
|
+
offset = start + 4;
|
|
362
|
+
}
|
|
363
|
+
return token;
|
|
364
|
+
}), "withoutUrls");
|
|
365
|
+
var rankingWords = /* @__PURE__ */ __name((text) => withoutUrls(text).match(/[\p{L}\p{N}]+/gu)?.length ?? 0, "rankingWords");
|
|
366
|
+
var rankingQuestion = /* @__PURE__ */ __name((text) => withoutUrls(text).includes("?"), "rankingQuestion");
|
|
367
|
+
|
|
368
|
+
export {
|
|
369
|
+
KINDS,
|
|
370
|
+
PROVIDERS,
|
|
371
|
+
FOLDER_PROVIDERS,
|
|
372
|
+
isFolderProvider,
|
|
373
|
+
folderProviderSql,
|
|
374
|
+
folderProviderOf,
|
|
375
|
+
DOCUMENT_ACCOUNT_PROVIDERS,
|
|
376
|
+
isDocumentAccountProvider,
|
|
377
|
+
filesAccountSql,
|
|
378
|
+
INTERNAL_NOTES,
|
|
379
|
+
UNKNOWN_PROVIDER,
|
|
380
|
+
providerEntryOf,
|
|
381
|
+
providers,
|
|
382
|
+
useProviders,
|
|
383
|
+
useStoredProviders,
|
|
384
|
+
addProvider,
|
|
385
|
+
isKind,
|
|
386
|
+
providerNamed,
|
|
387
|
+
kindIn,
|
|
388
|
+
kindOf,
|
|
389
|
+
formatLocator,
|
|
390
|
+
isLocator,
|
|
391
|
+
parseLocator,
|
|
392
|
+
formatReference,
|
|
393
|
+
parseReference,
|
|
394
|
+
canonicalReference,
|
|
395
|
+
COUNTER_FIELDS,
|
|
396
|
+
validCounter,
|
|
397
|
+
counterValue,
|
|
398
|
+
counterObservationTime,
|
|
399
|
+
observedCounters,
|
|
400
|
+
counterFreshness,
|
|
401
|
+
MESSAGE_MEASURES,
|
|
402
|
+
AUTHOR_MEASURES,
|
|
403
|
+
needsRankingContext,
|
|
404
|
+
rankingOptions,
|
|
405
|
+
rankingScore,
|
|
406
|
+
RANKING_TOKENIZER_VERSION,
|
|
407
|
+
rankingWords,
|
|
408
|
+
rankingQuestion
|
|
409
|
+
};
|