@leemour/cli-messaging 0.59.0 → 0.61.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/dist/cli/messenger/messages-command.js +2 -2
- package/dist/cli/messenger/messages-command.js.map +1 -1
- package/dist/cli/messenger/messages-edit-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-edit-command.js +1 -2
- package/dist/cli/messenger/messages-edit-command.js.map +1 -1
- package/dist/cli/messenger/messages-forward-command.d.ts.map +1 -1
- package/dist/cli/messenger/messages-forward-command.js +1 -2
- package/dist/cli/messenger/messages-forward-command.js.map +1 -1
- package/dist/cli/messenger/observed.d.ts.map +1 -1
- package/dist/cli/messenger/observed.js +6 -2
- package/dist/cli/messenger/observed.js.map +1 -1
- package/dist/cli/messenger/polls-command.d.ts +8 -3
- package/dist/cli/messenger/polls-command.d.ts.map +1 -1
- package/dist/cli/messenger/polls-command.js +10 -5
- package/dist/cli/messenger/polls-command.js.map +1 -1
- package/dist/mcp/tools/messages-actions.d.ts.map +1 -1
- package/dist/mcp/tools/messages-actions.js +6 -10
- package/dist/mcp/tools/messages-actions.js.map +1 -1
- package/dist/mcp/tools/messages-send.d.ts.map +1 -1
- package/dist/mcp/tools/messages-send.js +6 -1
- package/dist/mcp/tools/messages-send.js.map +1 -1
- package/dist/mcp/tools/polls.js +1 -1
- package/dist/mcp/tools/polls.js.map +1 -1
- package/dist/sends/guard.d.ts +1 -0
- package/dist/sends/guard.d.ts.map +1 -1
- package/dist/sends/guard.js +2 -1
- package/dist/sends/guard.js.map +1 -1
- package/dist/sends/guarded.d.ts +12 -4
- package/dist/sends/guarded.d.ts.map +1 -1
- package/dist/sends/guarded.js +8 -4
- package/dist/sends/guarded.js.map +1 -1
- package/dist/sends/index.d.ts +2 -2
- package/dist/sends/index.d.ts.map +1 -1
- package/dist/sends/index.js +2 -2
- package/dist/sends/index.js.map +1 -1
- package/dist/sends/journal.d.ts +7 -2
- package/dist/sends/journal.d.ts.map +1 -1
- package/dist/sends/journal.js.map +1 -1
- package/dist/sends/permissions.d.ts.map +1 -1
- package/dist/sends/permissions.js +3 -0
- package/dist/sends/permissions.js.map +1 -1
- package/dist/sends/send-id.d.ts +2 -0
- package/dist/sends/send-id.d.ts.map +1 -1
- package/dist/sends/send-id.js +2 -0
- package/dist/sends/send-id.js.map +1 -1
- package/dist/services/chats.d.ts +2 -1
- package/dist/services/chats.d.ts.map +1 -1
- package/dist/services/chats.js +4 -2
- package/dist/services/chats.js.map +1 -1
- package/dist/services/messages.d.ts +12 -7
- package/dist/services/messages.d.ts.map +1 -1
- package/dist/services/messages.js +24 -29
- package/dist/services/messages.js.map +1 -1
- package/dist/speech/recognize.d.ts +16 -0
- package/dist/speech/recognize.d.ts.map +1 -1
- package/dist/speech/recognize.js +19 -17
- package/dist/speech/recognize.js.map +1 -1
- package/dist/store/sqlite/drizzle/bun.d.ts +2 -0
- package/dist/store/sqlite/drizzle/bun.d.ts.map +1 -0
- package/dist/store/sqlite/drizzle/bun.js +113 -0
- package/dist/store/sqlite/drizzle/bun.js.map +7 -0
- package/dist/store/sqlite/drizzle/core.d.ts +3 -0
- package/dist/store/sqlite/drizzle/core.d.ts.map +1 -0
- package/dist/store/sqlite/drizzle/core.js +25 -0
- package/dist/store/sqlite/drizzle/core.js.map +7 -0
- package/dist/store/sqlite/drizzle/node.d.ts +2 -0
- package/dist/store/sqlite/drizzle/node.d.ts.map +1 -0
- package/dist/store/sqlite/drizzle/node.js +120 -0
- package/dist/store/sqlite/drizzle/node.js.map +7 -0
- package/dist/store/sqlite/drizzle/shared-ZF3LACGD.js +4830 -0
- package/dist/store/sqlite/drizzle/shared-ZF3LACGD.js.map +7 -0
- package/dist/store/sqlite/open.d.ts +1 -1
- package/dist/store/sqlite/open.d.ts.map +1 -1
- package/dist/store/sqlite/open.js +3 -4
- package/dist/store/sqlite/open.js.map +1 -1
- package/dist/store/sqlite/schema.d.ts.map +1 -1
- package/dist/store/sqlite/schema.js +1 -2
- package/dist/store/sqlite/schema.js.map +1 -1
- package/package.json +5 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sends/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,QAAQ,EACR,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,SAAS,EACT,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sends/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,QAAQ,EACR,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,SAAS,EACT,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5E,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,WAAW,EACX,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,YAAY,GACb,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC9E,OAAO,EAAE,KAAK,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAClF,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAA"}
|
package/dist/sends/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { guardFor, sendGuard, sharedJournal, } from "./guard.js";
|
|
2
|
-
export { guardedWrite } from "./guarded.js";
|
|
2
|
+
export { currentOperation, guardedWrite } from "./guarded.js";
|
|
3
3
|
export { SendJournal, sendsPathFor, } from "./journal.js";
|
|
4
4
|
export { PERMISSIONS, permissionFor } from "./permissions.js";
|
|
5
5
|
export { RecipientList, recipientsPathFor } from "./recipients.js";
|
|
6
|
-
export { newSendId } from "./send-id.js";
|
|
6
|
+
export { newOperationId, newSendId } from "./send-id.js";
|
|
7
7
|
export { readUpload } from "./upload.js";
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
package/dist/sends/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sends/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAGR,SAAS,EACT,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sends/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAGR,SAAS,EACT,aAAa,GACd,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAiB,MAAM,cAAc,CAAA;AAC5E,OAAO,EAIL,WAAW,EAGX,YAAY,GACb,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,WAAW,EAAmB,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC9E,OAAO,EAAkB,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAClF,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,UAAU,EAAgC,MAAM,aAAa,CAAA"}
|
package/dist/sends/journal.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export type SendKind = "message" | "reaction" | "edit" | "forward" | "pin" | "re
|
|
|
7
7
|
/** What a `chat` entry did. Never a title, a description or a link — only which action. */
|
|
8
8
|
export type ChatAction = "create" | "join" | "leave" | "members.add" | "members.remove" | "admins.add" | "admins.remove" | "update" | "settings" | "requests.accept" | "requests.decline" | "link.reset";
|
|
9
9
|
/** What an `account` entry changed. Never the value it changed it to — no name, number or title. */
|
|
10
|
-
export type AccountAction = "contact-add" | "contact-remove" | "contact-import" | "profile" | "folder-create" | "folder-update" | "folder-delete" | "sessions-end";
|
|
10
|
+
export type AccountAction = "contact-add" | "contact-remove" | "contact-import" | "contact-rename" | "contact-block" | "contact-unblock" | "profile" | "folder-create" | "folder-update" | "folder-delete" | "sessions-end";
|
|
11
11
|
/** One attempt to send. **Never the text** — only its length. */
|
|
12
12
|
export interface SendEntry {
|
|
13
13
|
at: string;
|
|
@@ -28,12 +28,17 @@ export interface SendEntry {
|
|
|
28
28
|
* string: Telegram's is 64-bit. A retry repeats it, and the provider delivers one message for both.
|
|
29
29
|
*/
|
|
30
30
|
sendId?: string;
|
|
31
|
+
/**
|
|
32
|
+
* One write's id — in its answer, on each of its lines here and in its run events. A send's is its
|
|
33
|
+
* `sendId`. Absent on lines written before writes had one.
|
|
34
|
+
*/
|
|
35
|
+
operationId?: string;
|
|
31
36
|
/** The message a reply answers. */
|
|
32
37
|
replyTo?: Id;
|
|
33
38
|
length?: number;
|
|
34
39
|
/** What was attached, by kind and size — never a file name. */
|
|
35
40
|
attachments?: {
|
|
36
|
-
kind: "photo" | "file";
|
|
41
|
+
kind: "photo" | "file" | "video" | "voice";
|
|
37
42
|
bytes: number;
|
|
38
43
|
}[];
|
|
39
44
|
/** When the provider will send it; it counts toward the limit of that hour, not of the hour it was queued. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../src/sends/journal.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAA;AAE7C,0GAA0G;AAC1G,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAA;AAExF,uGAAuG;AACvG,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;AAEnH,2FAA2F;AAC3F,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,MAAM,GACN,OAAO,GACP,aAAa,GACb,gBAAgB,GAChB,YAAY,GACZ,eAAe,GACf,QAAQ,GACR,UAAU,GACV,iBAAiB,GACjB,kBAAkB,GAClB,YAAY,CAAA;AAEhB,oGAAoG;AACpG,MAAM,MAAM,aAAa,GACrB,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,SAAS,GACT,eAAe,GACf,eAAe,GACf,eAAe,GACf,cAAc,CAAA;AAElB,iEAAiE;AACjE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,oHAAoH;IACpH,MAAM,EAAE,EAAE,GAAG,IAAI,CAAA;IACjB,OAAO,EAAE,WAAW,CAAA;IACpB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,MAAM,CAAC,EAAE,UAAU,GAAG,aAAa,CAAA;IACnC,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,EAAE,CAAA;IACd,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mCAAmC;IACnC,OAAO,CAAC,EAAE,EAAE,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../src/sends/journal.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAA;AAE7C,0GAA0G;AAC1G,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAA;AAExF,uGAAuG;AACvG,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;AAEnH,2FAA2F;AAC3F,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,MAAM,GACN,OAAO,GACP,aAAa,GACb,gBAAgB,GAChB,YAAY,GACZ,eAAe,GACf,QAAQ,GACR,UAAU,GACV,iBAAiB,GACjB,kBAAkB,GAClB,YAAY,CAAA;AAEhB,oGAAoG;AACpG,MAAM,MAAM,aAAa,GACrB,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,eAAe,GACf,iBAAiB,GACjB,SAAS,GACT,eAAe,GACf,eAAe,GACf,eAAe,GACf,cAAc,CAAA;AAElB,iEAAiE;AACjE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,oHAAoH;IACpH,MAAM,EAAE,EAAE,GAAG,IAAI,CAAA;IACjB,OAAO,EAAE,WAAW,CAAA;IACpB,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,MAAM,CAAC,EAAE,UAAU,GAAG,aAAa,CAAA;IACnC,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,EAAE,CAAA;IACd,0FAA0F;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mCAAmC;IACnC,OAAO,CAAC,EAAE,EAAE,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC7E,8GAA8G;IAC9G,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sCAAsC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAS,WAAW,WAAW,MAAM,QAAO,MAAM,CAAC,UAAU,KAAiB,MACM,CAAA;AAO7G,qBAAa,WAAW;;IACV,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAjC,YAAqB,IAAI,EAAE,MAAM,EAAI;IAErC;;;OAGG;IACH,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CA4B1B;IAED,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAG7B;IAED;;;OAGG;IACH,OAAO,IAAI,SAAS,EAAE,CAOrB;CAoBF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"journal.js","sourceRoot":"","sources":["../../src/sends/journal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC5G,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"journal.js","sourceRoot":"","sources":["../../src/sends/journal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/sends/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE3D;;;;;GAKG;AACH,eAAO,MAAM,WAAW,YACtB,MAAM,EACN,SAAS,EACT,UAAU,EACV,MAAM,EACN,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,CACF,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/sends/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE3D;;;;;GAKG;AACH,eAAO,MAAM,WAAW,YACtB,MAAM,EACN,SAAS,EACT,UAAU,EACV,MAAM,EACN,KAAK,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,CACF,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AAgBrD,eAAO,MAAM,aAAa,SAAU,QAAQ,WAAW,MAAM,KAAG,UAc/D,CAAA"}
|
|
@@ -22,6 +22,9 @@ const ACCOUNT = {
|
|
|
22
22
|
"contact-add": "contacts",
|
|
23
23
|
"contact-remove": "contacts",
|
|
24
24
|
"contact-import": "contacts",
|
|
25
|
+
"contact-rename": "contacts",
|
|
26
|
+
"contact-block": "contacts",
|
|
27
|
+
"contact-unblock": "contacts",
|
|
25
28
|
profile: "profile",
|
|
26
29
|
"folder-create": "folders",
|
|
27
30
|
"folder-update": "folders",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/sends/permissions.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,SAAS;IACT,UAAU;IACV,MAAM;IACN,KAAK;IACL,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,SAAS;IACT,SAAS;IACT,UAAU;CACF,CAAA;AAIV,MAAM,OAAO,GAAsC;IACjD,aAAa,EAAE,UAAU;IACzB,gBAAgB,EAAE,UAAU;IAC5B,gBAAgB,EAAE,UAAU;IAC5B,OAAO,EAAE,SAAS;IAClB,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,cAAc,EAAE,UAAU;CAC3B,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAc,EAAE,MAAe,EAAc,EAAE;IAC3E,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,MAAM,CAAA;QACf,KAAK,MAAM;YACT,OAAO,QAAQ,CAAA;QACjB,KAAK,SAAS,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,OAAO,CAAC,MAAuB,CAAC,CAAA;YACnD,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,MAAM,EAAE,CAAC,CAAA;YACvF,OAAO,UAAU,CAAA;QACnB,CAAC;QACD;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/sends/permissions.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,SAAS;IACT,UAAU;IACV,MAAM;IACN,KAAK;IACL,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,SAAS;IACT,SAAS;IACT,UAAU;CACF,CAAA;AAIV,MAAM,OAAO,GAAsC;IACjD,aAAa,EAAE,UAAU;IACzB,gBAAgB,EAAE,UAAU;IAC5B,gBAAgB,EAAE,UAAU;IAC5B,gBAAgB,EAAE,UAAU;IAC5B,eAAe,EAAE,UAAU;IAC3B,iBAAiB,EAAE,UAAU;IAC7B,OAAO,EAAE,SAAS;IAClB,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,cAAc,EAAE,UAAU;CAC3B,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAc,EAAE,MAAe,EAAc,EAAE;IAC3E,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,MAAM,CAAA;QACf,KAAK,MAAM;YACT,OAAO,QAAQ,CAAA;QACjB,KAAK,SAAS,EAAE,CAAC;YACf,MAAM,UAAU,GAAG,OAAO,CAAC,MAAuB,CAAC,CAAA;YACnD,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,MAAM,EAAE,CAAC,CAAA;YACvF,OAAO,UAAU,CAAA;QACnB,CAAC;QACD;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC,CAAA"}
|
package/dist/sends/send-id.d.ts
CHANGED
|
@@ -3,4 +3,6 @@
|
|
|
3
3
|
* 64-bit integer as a string, which is what Telegram's `random_id` takes and what fits MAX's `cid`.
|
|
4
4
|
*/
|
|
5
5
|
export declare const newSendId: () => string;
|
|
6
|
+
/** One write's identity, for every write the guard sees. A send's is its send id, so a retry keeps it. */
|
|
7
|
+
export declare const newOperationId: typeof newSendId;
|
|
6
8
|
//# sourceMappingURL=send-id.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-id.d.ts","sourceRoot":"","sources":["../../src/sends/send-id.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,SAAS,QAAO,MAAoD,CAAA"}
|
|
1
|
+
{"version":3,"file":"send-id.d.ts","sourceRoot":"","sources":["../../src/sends/send-id.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,SAAS,QAAO,MAAoD,CAAA;AAEjF,0GAA0G;AAC1G,eAAO,MAAM,cAAc,kBAAY,CAAA"}
|
package/dist/sends/send-id.js
CHANGED
|
@@ -4,4 +4,6 @@ import { randomBytes } from "node:crypto";
|
|
|
4
4
|
* 64-bit integer as a string, which is what Telegram's `random_id` takes and what fits MAX's `cid`.
|
|
5
5
|
*/
|
|
6
6
|
export const newSendId = () => randomBytes(8).readBigInt64BE().toString();
|
|
7
|
+
/** One write's identity, for every write the guard sees. A send's is its send id, so a retry keeps it. */
|
|
8
|
+
export const newOperationId = newSendId;
|
|
7
9
|
//# sourceMappingURL=send-id.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-id.js","sourceRoot":"","sources":["../../src/sends/send-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"send-id.js","sourceRoot":"","sources":["../../src/sends/send-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAA;AAEjF,0GAA0G;AAC1G,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAA"}
|
package/dist/services/chats.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Chat, ChatCard, ChatEvents, GroupMember, Id, LinkTarget, Page } from "../domain/models.js";
|
|
2
|
+
import { type Operated } from "../sends/guarded.js";
|
|
2
3
|
import type { ServiceDeps } from "./deps.js";
|
|
3
4
|
/** How far back `events` looks without `since`, as in max-cli. */
|
|
4
5
|
export declare const EVENTS_DAYS = 7;
|
|
@@ -41,7 +42,7 @@ export interface ChatsService {
|
|
|
41
42
|
markRead(request: {
|
|
42
43
|
chat: string;
|
|
43
44
|
until?: string;
|
|
44
|
-
}): Promise<MarkedRead
|
|
45
|
+
}): Promise<Operated<MarkedRead>>;
|
|
45
46
|
}
|
|
46
47
|
export declare const chatsService: (deps: ServiceDeps) => ChatsService;
|
|
47
48
|
//# sourceMappingURL=chats.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../src/services/chats.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../src/services/chats.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AACxG,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAE5C,kEAAkE;AAClE,eAAO,MAAM,WAAW,IAAI,CAAA;AAE5B,oHAAoH;AACpH,eAAO,MAAM,SAAS,MAAM,CAAA;AAE5B,iEAAiE;AACjE,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,EAAE,CAAA;IACV,wCAAwC;IACxC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IACxF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACrC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG;QAAE,MAAM,EAAE,EAAE,CAAA;KAAE,CAAC,CAAA;IACtF,oGAAoG;IACpG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IACrF,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAC1C,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;CACnF;AAED,eAAO,MAAM,YAAY,SAAU,WAAW,KAAG,YAyD/C,CAAA"}
|
package/dist/services/chats.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CliError } from "@leemour/cli-core";
|
|
2
2
|
import { capability } from "../cli/messenger/port.js";
|
|
3
3
|
import { guardedWrite } from "../sends/guarded.js";
|
|
4
|
+
import { newOperationId } from "../sends/send-id.js";
|
|
4
5
|
/** How far back `events` looks without `since`, as in max-cli. */
|
|
5
6
|
export const EVENTS_DAYS = 7;
|
|
6
7
|
/** A filtered list searches the newest this many: paging through every dialog hit FLOOD_WAIT (tg handoff §4.14). */
|
|
@@ -44,8 +45,9 @@ export const chatsService = (deps) => ({
|
|
|
44
45
|
const connection = await deps.connection();
|
|
45
46
|
const markRead = capability(connection, "markRead", "mark a chat read");
|
|
46
47
|
const { id: chatId } = await connection.resolve(chat);
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
const operationId = newOperationId();
|
|
49
|
+
await guardedWrite(deps.guard, { operationId, chatId, kind: "read", ...(until === undefined ? {} : { messageId: until }) }, () => markRead(chatId, until));
|
|
50
|
+
return { operationId, chatId, until: until ?? null };
|
|
49
51
|
},
|
|
50
52
|
});
|
|
51
53
|
const matches = ({ search, kind, unread }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chats.js","sourceRoot":"","sources":["../../src/services/chats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"chats.js","sourceRoot":"","sources":["../../src/services/chats.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Messenger } from "../cli/messenger/context.js";
|
|
2
2
|
import { type After, type Sent } from "../cli/messenger/port.js";
|
|
3
3
|
import type { Deletion, Id, Message, Page, WindowedMessage } from "../domain/models.js";
|
|
4
|
+
import { type Operated } from "../sends/guarded.js";
|
|
4
5
|
import type { Upload } from "../sends/upload.js";
|
|
5
6
|
import type { AccountKey, MessageStore, StoredHit } from "../store/store.js";
|
|
6
7
|
import type { ServiceDeps } from "./deps.js";
|
|
@@ -58,30 +59,34 @@ export interface MessagesService {
|
|
|
58
59
|
/** From the local store only; never asks the messenger. */
|
|
59
60
|
search(query: SearchQuery): Promise<Page<StoredHit>>;
|
|
60
61
|
/** A reply is a send with `replyTo`. */
|
|
61
|
-
send(request: SendRequest): Promise<Sent
|
|
62
|
+
send(request: SendRequest): Promise<Operated<Sent>>;
|
|
62
63
|
edit(target: MessageTarget & {
|
|
63
64
|
text: string;
|
|
64
|
-
}): Promise<
|
|
65
|
+
}): Promise<Operated<{
|
|
66
|
+
message: Message;
|
|
67
|
+
}>>;
|
|
65
68
|
/** Each message counts toward the hourly limit. */
|
|
66
69
|
delete(request: {
|
|
67
70
|
chat: string;
|
|
68
71
|
messages: string[];
|
|
69
72
|
forEveryone: boolean;
|
|
70
|
-
}): Promise<Deletion
|
|
73
|
+
}): Promise<Operated<Deletion>>;
|
|
71
74
|
/** Guarded against the chat it goes to: that is where somebody new reads it. */
|
|
72
75
|
forward(target: MessageTarget & {
|
|
73
76
|
to: string;
|
|
74
77
|
silent: boolean;
|
|
75
|
-
}): Promise<
|
|
78
|
+
}): Promise<Operated<{
|
|
79
|
+
message: Message;
|
|
80
|
+
}>>;
|
|
76
81
|
/** Counts toward the hourly limit only when it notifies. */
|
|
77
82
|
pin(target: MessageTarget & {
|
|
78
83
|
notify: boolean;
|
|
79
|
-
}): Promise<Pinned
|
|
80
|
-
unpin(target: MessageTarget): Promise<Pinned
|
|
84
|
+
}): Promise<Operated<Pinned>>;
|
|
85
|
+
unpin(target: MessageTarget): Promise<Operated<Pinned>>;
|
|
81
86
|
/** `null` takes the reaction off. A reaction never counts toward the hourly limit. */
|
|
82
87
|
react(target: MessageTarget & {
|
|
83
88
|
emoji: string | null;
|
|
84
|
-
}): Promise<Reacted
|
|
89
|
+
}): Promise<Operated<Reacted>>;
|
|
85
90
|
}
|
|
86
91
|
export declare const messagesService: (deps: ServiceDeps) => MessagesService;
|
|
87
92
|
/** A chat as typed, found among the stored chats the way an adapter finds it among its own. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/services/messages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,KAAK,KAAK,EAAc,KAAK,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAE5E,OAAO,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/services/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { capability } from "../cli/messenger/port.js";
|
|
|
3
3
|
import { parseMarkdown } from "../domain/markdown.js";
|
|
4
4
|
import { pickChat } from "../resolve.js";
|
|
5
5
|
import { codeOf, guardedWrite } from "../sends/guarded.js";
|
|
6
|
-
import { newSendId } from "../sends/send-id.js";
|
|
6
|
+
import { newOperationId, newSendId } from "../sends/send-id.js";
|
|
7
7
|
/** max-cli's: many at once is what a ban for automation looks like. */
|
|
8
8
|
export const DELETE_AT_ONCE = 10;
|
|
9
9
|
export const messagesService = (deps) => {
|
|
@@ -15,8 +15,9 @@ export const messagesService = (deps) => {
|
|
|
15
15
|
? capability(connection, "pin", "pin a message")
|
|
16
16
|
: capability(connection, "unpin", "unpin a message");
|
|
17
17
|
const { id: chatId } = await connection.resolve(chat);
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
const operationId = newOperationId();
|
|
19
|
+
await guardedWrite(guard, { operationId, chatId, kind: "pin", messageId: message, notify }, () => act(chatId, message, { notify }));
|
|
20
|
+
return { operationId, chatId, messageId: message, pinned };
|
|
20
21
|
};
|
|
21
22
|
return {
|
|
22
23
|
list: async (chat, { limit, before, after }) => {
|
|
@@ -54,10 +55,12 @@ export const messagesService = (deps) => {
|
|
|
54
55
|
throw new CliError("validation_error", "nothing to send — the marks leave no text");
|
|
55
56
|
}
|
|
56
57
|
const { id: chatId } = await connection.resolve(chat);
|
|
58
|
+
const id = sendId ?? newSendId();
|
|
57
59
|
const attempt = {
|
|
58
60
|
chatId,
|
|
59
61
|
kind: "message",
|
|
60
|
-
sendId:
|
|
62
|
+
sendId: id,
|
|
63
|
+
operationId: id,
|
|
61
64
|
length: text.length,
|
|
62
65
|
...(replyTo === undefined ? {} : { replyTo }),
|
|
63
66
|
...(at === undefined ? {} : { scheduledFor: at }),
|
|
@@ -66,33 +69,19 @@ export const messagesService = (deps) => {
|
|
|
66
69
|
: { attachments: attachments.map(({ kind, bytes }) => ({ kind, bytes: bytes.byteLength })) }),
|
|
67
70
|
};
|
|
68
71
|
try {
|
|
69
|
-
guard.
|
|
70
|
-
|
|
71
|
-
catch (error) {
|
|
72
|
-
guard.record({ ...attempt, outcome: "refused", errorCode: codeOf(error) });
|
|
73
|
-
throw error;
|
|
74
|
-
}
|
|
75
|
-
try {
|
|
76
|
-
const done = await connection.send(chatId, text, {
|
|
77
|
-
sendId: attempt.sendId,
|
|
72
|
+
const done = await guardedWrite(guard, attempt, () => connection.send(chatId, text, {
|
|
73
|
+
sendId: id,
|
|
78
74
|
...(replyTo === undefined ? {} : { replyTo }),
|
|
79
75
|
...(silent ? { silent } : {}),
|
|
80
76
|
...(noPreview ? { noPreview } : {}),
|
|
81
77
|
...(markup.length > 0 ? { markup } : {}),
|
|
82
78
|
...(at === undefined ? {} : { at }),
|
|
83
79
|
...(attachments.length === 0 ? {} : { attachments }),
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
return done;
|
|
80
|
+
}), (sent) => ({ messageId: sent.message.id }));
|
|
81
|
+
return { ...done, operationId: id };
|
|
87
82
|
}
|
|
88
83
|
catch (error) {
|
|
89
|
-
|
|
90
|
-
guard.record({
|
|
91
|
-
...attempt,
|
|
92
|
-
outcome: code === "outcome_unknown" ? "outcome_unknown" : "failed",
|
|
93
|
-
errorCode: code,
|
|
94
|
-
});
|
|
95
|
-
if (at !== undefined && code === "outcome_unknown") {
|
|
84
|
+
if (at !== undefined && codeOf(error) === "outcome_unknown") {
|
|
96
85
|
throw new CliError("outcome_unknown", "no answer — the message may have been scheduled. Look in `messages scheduled` before anything else; " +
|
|
97
86
|
"never send it again with --send-id", { scheduledFor: at });
|
|
98
87
|
}
|
|
@@ -103,7 +92,9 @@ export const messagesService = (deps) => {
|
|
|
103
92
|
const connection = await deps.connection();
|
|
104
93
|
const edit = capability(connection, "edit", "edit a message");
|
|
105
94
|
const { id: chatId } = await connection.resolve(chat);
|
|
106
|
-
|
|
95
|
+
const operationId = newOperationId();
|
|
96
|
+
const edited = await guardedWrite(guard, { operationId, chatId, kind: "edit", messageId: message, length: text.length }, () => edit(chatId, message, text));
|
|
97
|
+
return { operationId, message: edited };
|
|
107
98
|
},
|
|
108
99
|
delete: async ({ chat, messages, forEveryone }) => {
|
|
109
100
|
const connection = await deps.connection();
|
|
@@ -112,15 +103,18 @@ export const messagesService = (deps) => {
|
|
|
112
103
|
}
|
|
113
104
|
const remove = capability(connection, "delete", "delete messages");
|
|
114
105
|
const { id: chatId } = await connection.resolve(chat);
|
|
115
|
-
|
|
116
|
-
|
|
106
|
+
const operationId = newOperationId();
|
|
107
|
+
await guardedWrite(guard, { operationId, chatId, kind: "delete", count: messages.length, forEveryone }, () => remove(chatId, messages, { forEveryone }));
|
|
108
|
+
return { operationId, chatId, deleted: messages, forEveryone };
|
|
117
109
|
},
|
|
118
110
|
forward: async ({ chat, message, to, silent }) => {
|
|
119
111
|
const connection = await deps.connection();
|
|
120
112
|
const forward = capability(connection, "forward", "forward a message");
|
|
121
113
|
const { id: fromChatId } = await connection.resolve(chat);
|
|
122
114
|
const { id: toChatId } = await connection.resolve(to);
|
|
123
|
-
|
|
115
|
+
const operationId = newOperationId();
|
|
116
|
+
const forwarded = await guardedWrite(guard, { operationId, chatId: toChatId, kind: "forward" }, () => forward(fromChatId, message, toChatId, silent ? { silent } : {}), (done) => ({ messageId: done.id }));
|
|
117
|
+
return { operationId, message: forwarded };
|
|
124
118
|
},
|
|
125
119
|
pin: ({ notify, ...target }) => pinning(target, true, notify),
|
|
126
120
|
unpin: (target) => pinning(target, false, false),
|
|
@@ -130,8 +124,9 @@ export const messagesService = (deps) => {
|
|
|
130
124
|
throw new CliError("validation_error", "which emoji? give one, for example 👍");
|
|
131
125
|
const react = capability(connection, "react", "react to a message");
|
|
132
126
|
const { id: chatId } = await connection.resolve(chat);
|
|
133
|
-
|
|
134
|
-
|
|
127
|
+
const operationId = newOperationId();
|
|
128
|
+
await guardedWrite(guard, { operationId, chatId, kind: "reaction", messageId: message }, () => react(chatId, message, emoji));
|
|
129
|
+
return { operationId, chatId, messageId: message, reaction: emoji };
|
|
135
130
|
},
|
|
136
131
|
};
|
|
137
132
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/services/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAc,UAAU,EAAa,MAAM,0BAA0B,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/services/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,22 @@ export declare const decodeOgg: (bytes: Uint8Array) => Promise<{
|
|
|
14
14
|
samples: Float32Array;
|
|
15
15
|
rate: number;
|
|
16
16
|
}>;
|
|
17
|
+
/** Where the voice detector cuts. Tested on a recording with a quiet stretch in the middle (`speech.test.ts`). */
|
|
18
|
+
export declare const detector: (vadModel: string) => {
|
|
19
|
+
sileroVad: {
|
|
20
|
+
model: string;
|
|
21
|
+
threshold: number;
|
|
22
|
+
minSilenceDuration: number;
|
|
23
|
+
minSpeechDuration: number;
|
|
24
|
+
maxSpeechDuration: number;
|
|
25
|
+
windowSize: number;
|
|
26
|
+
};
|
|
27
|
+
sampleRate: number;
|
|
28
|
+
numThreads: number;
|
|
29
|
+
provider: string;
|
|
30
|
+
debug: number;
|
|
31
|
+
bufferSizeInSeconds: number;
|
|
32
|
+
};
|
|
17
33
|
/**
|
|
18
34
|
* The model, and a voice detector that cuts the audio at pauses into pieces of at most 20 seconds.
|
|
19
35
|
* The cutting is not optional: five minutes in one piece crash the WebAssembly build (measured).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recognize.d.ts","sourceRoot":"","sources":["../../src/speech/recognize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,kGAAkG;AAClG,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAA;IACpC,IAAI,IAAI,IAAI,CAAA;CACb;AAED,eAAO,MAAM,WAAW,QAAS,CAAA;AAQjC;;;GAGG;AACH,eAAO,MAAM,WAAW,YAAa,YAAY,QAAQ,MAAM,KAAG,YAYjE,CAAA;AAED,eAAO,MAAM,SAAS,UAAiB,UAAU,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAYlG,CAAA;AA0BD;;;;;GAKG;AACH,eAAO,MAAM,cAAc,UAAW,WAAW,QAAQ,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,YAAY,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"recognize.d.ts","sourceRoot":"","sources":["../../src/speech/recognize.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,kGAAkG;AAClG,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAAA;IACpC,IAAI,IAAI,IAAI,CAAA;CACb;AAED,eAAO,MAAM,WAAW,QAAS,CAAA;AAQjC;;;GAGG;AACH,eAAO,MAAM,WAAW,YAAa,YAAY,QAAQ,MAAM,KAAG,YAYjE,CAAA;AAED,eAAO,MAAM,SAAS,UAAiB,UAAU,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAYlG,CAAA;AA0BD,kHAAkH;AAClH,eAAO,MAAM,QAAQ,aAAc,MAAM;;;;;;;;;;;;;;CAgBvC,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,UAAW,WAAW,QAAQ,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,YAAY,MAAM,KAAG,UA4CrG,CAAA"}
|
package/dist/speech/recognize.js
CHANGED
|
@@ -39,6 +39,24 @@ export const decodeOgg = async (bytes) => {
|
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
41
|
const WINDOW = 512;
|
|
42
|
+
/** Where the voice detector cuts. Tested on a recording with a quiet stretch in the middle (`speech.test.ts`). */
|
|
43
|
+
export const detector = (vadModel) => ({
|
|
44
|
+
sileroVad: {
|
|
45
|
+
model: vadModel,
|
|
46
|
+
// At the default 0.5 a quietly spoken stretch in the middle of a voice message never counted as
|
|
47
|
+
// speech and was lost; 0.3 keeps it for both models and changes nothing on clear speech (126508, 2026-09-30).
|
|
48
|
+
threshold: 0.3,
|
|
49
|
+
minSilenceDuration: 0.5,
|
|
50
|
+
minSpeechDuration: 0.25,
|
|
51
|
+
maxSpeechDuration: 20,
|
|
52
|
+
windowSize: WINDOW,
|
|
53
|
+
},
|
|
54
|
+
sampleRate: SAMPLE_RATE,
|
|
55
|
+
numThreads: 1,
|
|
56
|
+
provider: "cpu",
|
|
57
|
+
debug: 0,
|
|
58
|
+
bufferSizeInSeconds: 30,
|
|
59
|
+
});
|
|
42
60
|
/**
|
|
43
61
|
* The model, and a voice detector that cuts the audio at pauses into pieces of at most 20 seconds.
|
|
44
62
|
* The cutting is not optional: five minutes in one piece crash the WebAssembly build (measured).
|
|
@@ -52,23 +70,7 @@ export const openRecognizer = (model, path, vadModel) => {
|
|
|
52
70
|
modelConfig: { ...model.config(path), numThreads: 1, provider: "cpu", debug: 0 },
|
|
53
71
|
decodingMethod: "greedy_search",
|
|
54
72
|
});
|
|
55
|
-
const vad = sherpa.createVad(
|
|
56
|
-
sileroVad: {
|
|
57
|
-
model: vadModel,
|
|
58
|
-
// At the default 0.5 a quietly spoken stretch in the middle of a voice message never counted as
|
|
59
|
-
// speech and was lost; 0.3 keeps it for both models and changes nothing on clear speech (126508, 2026-09-30).
|
|
60
|
-
threshold: 0.3,
|
|
61
|
-
minSilenceDuration: 0.5,
|
|
62
|
-
minSpeechDuration: 0.25,
|
|
63
|
-
maxSpeechDuration: 20,
|
|
64
|
-
windowSize: WINDOW,
|
|
65
|
-
},
|
|
66
|
-
sampleRate: SAMPLE_RATE,
|
|
67
|
-
numThreads: 1,
|
|
68
|
-
provider: "cpu",
|
|
69
|
-
debug: 0,
|
|
70
|
-
bufferSizeInSeconds: 30,
|
|
71
|
-
});
|
|
73
|
+
const vad = sherpa.createVad(detector(vadModel));
|
|
72
74
|
const piece = (samples) => {
|
|
73
75
|
const stream = engine.createStream();
|
|
74
76
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recognize.js","sourceRoot":"","sources":["../../src/speech/recognize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAS3C,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAA;AAEjC;;;GAGG;AACH,MAAM,IAAI,GAAG,WAAW,GAAG,CAAC,CAAA;AAE5B;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,OAAqB,EAAE,IAAY,EAAgB,EAAE;IAC/E,MAAM,IAAI,GAAG,IAAI,GAAG,WAAW,CAAA;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAChD,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,GAAG,MAAM,CAAC,CAAA;IAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QACzD,IAAI,GAAG,GAAG,CAAC,CAAA;QACX,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACtD,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,KAAiB,EAAoD,EAAE;IACrG,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC3D,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAA;IACpC,MAAM,OAAO,CAAC,KAAK,CAAA;IACnB,IAAI,CAAC;QACH,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QACnF,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;QAC9B,IAAI,CAAC,OAAO,IAAI,cAAc,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAChF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;IACtC,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,IAAI,EAAE,CAAA;IAChB,CAAC;AACH,CAAC,CAAA;AAwBD,MAAM,MAAM,GAAG,GAAG,CAAA;AAElB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAkB,EAAE,IAA8B,EAAE,QAAgB,EAAc,EAAE;IACjH,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,aAAa,CAAW,CAAA;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,uBAAuB,CAAC;QAC5C,UAAU,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE;QACrE,WAAW,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;QAChF,cAAc,EAAE,eAAe;KAChC,CAAC,CAAA;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC
|
|
1
|
+
{"version":3,"file":"recognize.js","sourceRoot":"","sources":["../../src/speech/recognize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bun.d.ts","sourceRoot":"","sources":["../../../../src/store/sqlite/drizzle/bun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA"}
|