@wirecat/cli-memo 0.131.73 → 0.131.75
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/bin/memo.js +2 -2
- package/dist/bundle/{all-profiles-L5QBYI3V.js → all-profiles-LUGN5BHP.js} +9 -9
- package/dist/bundle/{anthropic-XXKHNCQS.js → anthropic-W7JXDZPL.js} +5 -5
- package/dist/bundle/{app-server-FDMP3IBP.js → app-server-TRRARE66.js} +50 -49
- package/dist/bundle/auto-AQAKW55Z.js +89 -0
- package/dist/bundle/{bun-VLN4HBWB.js → bun-S3JZIN4S.js} +2 -2
- package/dist/bundle/{bun-sqlite-KJCYXNMS.js → bun-sqlite-X3WQN3CV.js} +5 -5
- package/dist/bundle/{chunk-ZTONSM5X.js → chunk-2EZFUIL4.js} +2 -2
- package/dist/bundle/{chunk-HBP7AQXX.js → chunk-2QND7VJS.js} +12 -12
- package/dist/bundle/{chunk-2BH2RNFR.js → chunk-346PWQJF.js} +8 -8
- package/dist/bundle/{chunk-B7ATMWVO.js → chunk-4KDORB7C.js} +12 -37
- package/dist/bundle/{chunk-V3JOIUVB.js → chunk-4O2MYFYC.js} +4 -4
- package/dist/bundle/{chunk-I6MGDSYH.js → chunk-4QGUBKN5.js} +6 -6
- package/dist/bundle/{chunk-YDGZJK6U.js → chunk-4XI7S3PO.js} +24 -24
- package/dist/bundle/{chunk-XGXEWKR7.js → chunk-5CTOWPOL.js} +12 -12
- package/dist/bundle/{chunk-6OPZTBRR.js → chunk-5RLCKP5E.js} +59 -35
- package/dist/bundle/{chunk-VQUSPMYO.js → chunk-6AOPUQTC.js} +1 -1
- package/dist/bundle/chunk-6FTZ53TT.js +18 -0
- package/dist/bundle/{chunk-BTVND2RV.js → chunk-6I4DOBSD.js} +13 -13
- package/dist/bundle/{chunk-WJNLBQSV.js → chunk-6VMIMAZ2.js} +544 -586
- package/dist/bundle/{chunk-BBLT77AO.js → chunk-7Y4HUYI3.js} +26 -14
- package/dist/bundle/{chunk-JLC2RE4Y.js → chunk-AOHT5FNX.js} +82 -82
- package/dist/bundle/{chunk-VPR47AG4.js → chunk-BDVM5652.js} +1 -1
- package/dist/bundle/{chunk-MM3OMWST.js → chunk-C6MWOBEL.js} +24 -22
- package/dist/bundle/{chunk-LHZ4QBWB.js → chunk-E2PSOSTN.js} +2 -2
- package/dist/bundle/{chunk-J7ESMDVV.js → chunk-E74VWHZ2.js} +1 -1
- package/dist/bundle/{chunk-MLN4DPXN.js → chunk-EWRHTZD3.js} +17 -17
- package/dist/bundle/{chunk-FMSXN2N6.js → chunk-FGMFJUHR.js} +1058 -774
- package/dist/bundle/{chunk-A7QXBRUH.js → chunk-G45BLLDR.js} +4 -4
- package/dist/bundle/{chunk-KK3ZHBMI.js → chunk-GFVSZY4J.js} +26 -2
- package/dist/bundle/{chunk-IUEYR3TK.js → chunk-IQIM4UC7.js} +10 -10
- package/dist/bundle/{chunk-JABLJBXL.js → chunk-JINEHQ2T.js} +4927 -4920
- package/dist/bundle/chunk-KA5MDFLU.js +138 -0
- package/dist/bundle/{chunk-IKH4RCJO.js → chunk-KDBAY5JZ.js} +1 -1
- package/dist/bundle/{chunk-LJCT7YG6.js → chunk-KEBL3PY4.js} +4 -4
- package/dist/bundle/{chunk-C3UOKLIT.js → chunk-KUFOM3SB.js} +2 -2
- package/dist/bundle/{chunk-ZIGVDRSI.js → chunk-KYJBGCTC.js} +2 -2
- package/dist/bundle/{chunk-R3PK4Y7C.js → chunk-LPGE6ACC.js} +2 -2
- package/dist/bundle/{chunk-6ZRBQTKZ.js → chunk-LX3OSTBD.js} +4 -4
- package/dist/bundle/{chunk-NMOWIFH3.js → chunk-MPZBV5RL.js} +8 -8
- package/dist/bundle/{chunk-H74CWBSY.js → chunk-NR633L2N.js} +4 -4
- package/dist/bundle/{chunk-DSU6UR2X.js → chunk-NT5IOEEK.js} +1 -1
- package/dist/bundle/chunk-OWUEEVF6.js +177 -0
- package/dist/bundle/{chunk-L62FWN3Y.js → chunk-OYKQX4H3.js} +1 -1
- package/dist/bundle/{chunk-W6JPIP5C.js → chunk-QKWM4VK4.js} +6 -6
- package/dist/bundle/chunk-QYJJBE56.js +109 -0
- package/dist/bundle/{chunk-JPXDDRBD.js → chunk-RZS24U4N.js} +11 -11
- package/dist/bundle/{chunk-EI2P5E4C.js → chunk-SCYHDYLI.js} +3 -1
- package/dist/bundle/{chunk-OGUXOAOH.js → chunk-SIOPF2UG.js} +6 -6
- package/dist/bundle/{chunk-RB266FS6.js → chunk-SIQDO5DN.js} +4 -4
- package/dist/bundle/{chunk-O5KXCQE4.js → chunk-SJD4KTK2.js} +4 -4
- package/dist/bundle/{chunk-PAHBDQ5A.js → chunk-UIAGASGP.js} +6 -6
- package/dist/bundle/{chunk-ZI5Y2EUA.js → chunk-UU3OAPGO.js} +7 -7
- package/dist/bundle/{chunk-ON7ZROFP.js → chunk-V7BDQIZS.js} +2 -2
- package/dist/bundle/{chunk-EH7ACKFW.js → chunk-VB4OLJHK.js} +3 -3
- package/dist/bundle/{chunk-SILEPITK.js → chunk-VFKCZJFT.js} +25 -35
- package/dist/bundle/{chunk-HE2F4JII.js → chunk-VYCLOFPC.js} +24 -9
- package/dist/bundle/{chunk-UUBV5ATQ.js → chunk-W46O6RJ5.js} +20 -20
- package/dist/bundle/{chunk-QHLEMEF3.js → chunk-W64FO6DD.js} +53 -48
- package/dist/bundle/{chunk-LG5SQGNM.js → chunk-WKLF7CAM.js} +47 -45
- package/dist/bundle/{chunk-X35Q5CHE.js → chunk-WZHCQ4VZ.js} +8 -8
- package/dist/bundle/{chunk-PF6LXPK5.js → chunk-XMHWGHID.js} +4280 -4278
- package/dist/bundle/chunk-XPCTY6XV.js +116 -0
- package/dist/bundle/{chunk-E75LK7GD.js → chunk-XPSXVUZG.js} +3 -3
- package/dist/bundle/{chunk-XM6ZAPFW.js → chunk-XQ3RZU3J.js} +1 -1
- package/dist/bundle/{chunk-LOYI3STE.js → chunk-XQHOMQNZ.js} +4 -4
- package/dist/bundle/{chunk-K54MCZWM.js → chunk-YB4KGUXY.js} +3 -3
- package/dist/bundle/{chunk-US2HTCJA.js → chunk-YDTGYYOR.js} +4 -4
- package/dist/bundle/{chunk-EQLOQOIB.js → chunk-YLYZNPAZ.js} +2 -2
- package/dist/bundle/{chunk-BOZEBD3I.js → chunk-ZISVFVQU.js} +1445 -832
- package/dist/bundle/{chunk-IDCYBSML.js → chunk-ZL63GL3Y.js} +3 -3
- package/dist/bundle/{chunk-2C323QNQ.js → chunk-ZP2XI5DR.js} +9 -9
- package/dist/bundle/{chunk-3CANRF2G.js → chunk-ZTZLAGZA.js} +3 -3
- package/dist/bundle/{chunk-FSXQLNU4.js → chunk-ZXW5FPH2.js} +1 -1
- package/dist/bundle/command-contract-QQG343ZQ.js +32 -0
- package/dist/bundle/command-server-entry-XVUPTSSH.js +145 -0
- package/dist/bundle/{decode-OS6Y6ICA.js → decode-METZOSMG.js} +5 -5
- package/dist/bundle/{dispatch-VJSUBAUM.js → dispatch-PHB2Y6ZL.js} +8 -8
- package/dist/bundle/{echarts-JKGDUDYL.js → echarts-EBSP4VCK.js} +2 -2
- package/dist/bundle/{embed-UB4LH6MF.js → embed-GVVU7N7W.js} +6 -6
- package/dist/bundle/{embedder-TUQBG22Y.js → embedder-6BZOYAXV.js} +9 -9
- package/dist/bundle/entry-TBOYUMWB.js +21 -0
- package/dist/bundle/failure-EKMEAYZH.js +69 -0
- package/dist/bundle/{failure-GLF7OMMM.js → failure-OBT7CUVW.js} +2 -2
- package/dist/bundle/{first-run-VNJHZYGS.js → first-run-HQ4GA4EF.js} +11 -11
- package/dist/bundle/first-screen-6T65PQ37.js +30 -0
- package/dist/bundle/{instructions-Q6IZQUU7.js → instructions-VDKK3Y5Z.js} +1 -1
- package/dist/bundle/{mcp-H2WYFBNW.js → mcp-5275YLID.js} +2 -2
- package/dist/bundle/mcp-DEY765VA.js +90 -0
- package/dist/bundle/memo.js +16 -16
- package/dist/bundle/{node-ZSSIVKVC.js → node-HWGZYNUX.js} +2 -2
- package/dist/bundle/{node-sqlite-AUNJSQQL.js → node-sqlite-PSYENWGS.js} +6 -6
- package/dist/bundle/{oauth-2MTJFCMI.js → oauth-TQGMUJK2.js} +7 -7
- package/dist/bundle/{open-U7RC27MJ.js → open-KDDJDKCE.js} +5 -5
- package/dist/bundle/openai-QPGCUM4T.js +24 -0
- package/dist/bundle/{process-UEQX5STY.js → process-APNTXJJE.js} +1 -1
- package/dist/bundle/{program-G3F26HW7.js → program-OGDARQTX.js} +3060 -2547
- package/dist/bundle/{prompt-F23FC5PJ.js → prompt-BMBZCLGF.js} +5 -5
- package/dist/bundle/{recognize-ZVEGVD56.js → recognize-3SEY2MAR.js} +4 -4
- package/dist/bundle/{remote-CZXQS7PS.js → remote-ODH54UXO.js} +7 -7
- package/dist/bundle/{rerank-IRFXSVVO.js → rerank-JQHBNTUK.js} +7 -7
- package/dist/bundle/{serve-6CIMU5HP.js → serve-C22ZONSM.js} +9 -9
- package/dist/bundle/server-3UX245DY.js +62 -0
- package/dist/bundle/server-6G5XF3V5.js +48 -0
- package/dist/bundle/{server-H24MAUT2.js → server-ADPO4V4B.js} +70 -66
- package/dist/bundle/{state-TRWZWXB5.js → state-M3VGXSV4.js} +6 -6
- package/dist/bundle/{store-E4QUOOLX.js → store-GSZAXU3A.js} +13 -13
- package/dist/bundle/store-maintenance-command-QMTALGSQ.js +47 -0
- package/dist/bundle/update-HDJ23IV5.js +72 -0
- package/dist/context/context.d.ts.map +1 -1
- package/dist/context/context.js +4 -2
- package/dist/context/context.js.map +1 -1
- package/dist/contract-overrides/search.d.ts.map +1 -1
- package/dist/contract-overrides/search.js +6 -0
- package/dist/contract-overrides/search.js.map +1 -1
- package/dist/digest/backfill.d.ts +1 -1
- package/dist/digest/backfill.d.ts.map +1 -1
- package/dist/digest/backfill.js +71 -42
- package/dist/digest/backfill.js.map +1 -1
- package/dist/digest/brief.d.ts +14 -3
- package/dist/digest/brief.d.ts.map +1 -1
- package/dist/digest/brief.js +84 -34
- package/dist/digest/brief.js.map +1 -1
- package/dist/digest/command.d.ts +3 -0
- package/dist/digest/command.d.ts.map +1 -1
- package/dist/digest/command.js +23 -0
- package/dist/digest/command.js.map +1 -1
- package/dist/digest/digest-commands.d.ts +6 -0
- package/dist/digest/digest-commands.d.ts.map +1 -0
- package/dist/digest/digest-commands.js +241 -0
- package/dist/digest/digest-commands.js.map +1 -0
- package/dist/digest/digest.d.ts +5 -2
- package/dist/digest/digest.d.ts.map +1 -1
- package/dist/digest/digest.js +29 -8
- package/dist/digest/digest.js.map +1 -1
- package/dist/digest/digests.d.ts +72 -0
- package/dist/digest/digests.d.ts.map +1 -0
- package/dist/digest/digests.js +122 -0
- package/dist/digest/digests.js.map +1 -0
- package/dist/digest/tasks.d.ts +7 -4
- package/dist/digest/tasks.d.ts.map +1 -1
- package/dist/digest/tasks.js +13 -5
- package/dist/digest/tasks.js.map +1 -1
- package/dist/examples.d.ts.map +1 -1
- package/dist/examples.js +17 -1
- package/dist/examples.js.map +1 -1
- package/dist/people/command.d.ts +0 -1
- package/dist/people/command.d.ts.map +1 -1
- package/dist/people/command.js +114 -12
- package/dist/people/command.js.map +1 -1
- package/dist/program.d.ts +4 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +9 -5
- package/dist/program.js.map +1 -1
- package/dist/reasons.d.ts.map +1 -1
- package/dist/reasons.js +24 -0
- package/dist/reasons.js.map +1 -1
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +13 -1
- package/dist/rows.js.map +1 -1
- package/dist/schedule/command.d.ts +8 -0
- package/dist/schedule/command.d.ts.map +1 -1
- package/dist/schedule/command.js +4 -2
- package/dist/schedule/command.js.map +1 -1
- package/dist/search/answers.d.ts +6 -1
- package/dist/search/answers.d.ts.map +1 -1
- package/dist/search/answers.js +17 -1
- package/dist/search/answers.js.map +1 -1
- package/dist/search/command.d.ts.map +1 -1
- package/dist/search/command.js +13 -2
- package/dist/search/command.js.map +1 -1
- package/dist/search/lane-gates.d.ts +4 -3
- package/dist/search/lane-gates.d.ts.map +1 -1
- package/dist/search/lane-gates.js +13 -7
- package/dist/search/lane-gates.js.map +1 -1
- package/dist/search/people.d.ts +2 -0
- package/dist/search/people.d.ts.map +1 -1
- package/dist/search/people.js +11 -4
- package/dist/search/people.js.map +1 -1
- package/dist/search/search.d.ts +5 -1
- package/dist/search/search.d.ts.map +1 -1
- package/dist/search/search.js +5 -1
- package/dist/search/search.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/dist/bundle/auto-YQAECIZA.js +0 -85
- package/dist/bundle/chunk-KQTR6YA4.js +0 -262
- package/dist/bundle/command-contract-6HJ322BP.js +0 -32
- package/dist/bundle/entry-N4NCIQYH.js +0 -18
- package/dist/bundle/failure-BJEFFYH3.js +0 -65
- package/dist/bundle/first-screen-4XGF2NZ3.js +0 -30
- package/dist/bundle/mcp-REIASUJR.js +0 -90
- package/dist/bundle/openai-2SJCG6XM.js +0 -23
- package/dist/bundle/server-27KXLL4E.js +0 -61
- package/dist/bundle/server-TWMUWMFM.js +0 -48
- package/dist/bundle/store-maintenance-command-GLHRB2VZ.js +0 -47
- package/dist/bundle/update-QQEM73O5.js +0 -68
- /package/dist/bundle/{chunk-SYWHHQMC.js → chunk-G5GW3FFJ.js} +0 -0
- /package/dist/bundle/{chunk-ZOWQ5B33.js → chunk-IXSUVHW6.js} +0 -0
package/dist/digest/brief.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brief.js","sourceRoot":"","sources":["../../src/digest/brief.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACtF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"brief.js","sourceRoot":"","sources":["../../src/digest/brief.ts"],"names":[],"mappings":"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"}
|
package/dist/digest/command.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { type Streams } from "@wirecat/cli-base";
|
|
2
2
|
import type { Body } from "@wirecat/cli-core/cli";
|
|
3
3
|
import type { Command } from "commander";
|
|
4
|
+
import { type DigestSource } from "./digests.js";
|
|
5
|
+
/** `--source telegram,mail`, repeatable: what the agenda reads; each one a part it can leave out. */
|
|
6
|
+
export declare const sourcesOf: (value: string, before?: DigestSource[]) => DigestSource[];
|
|
4
7
|
export declare const sinceOf: (value: string, now?: number) => number;
|
|
5
8
|
/** A past moment, as an ISO time or a date (its local midnight); it must not be in the future. */
|
|
6
9
|
export declare const beforeOf: (value: string, now?: number) => number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/digest/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAEjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/digest/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAEjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,OAAO,EAAkB,KAAK,YAAY,EAA4B,MAAM,cAAc,CAAA;AAyB1F,qGAAqG;AACrG,eAAO,MAAM,SAAS,UAAW,MAAM,WAAU,YAAY,EAAE,KAAQ,YAAY,EAWlF,CAAA;AAED,eAAO,MAAM,OAAO,UAAW,MAAM,mBAAqB,MAOzD,CAAA;AAED,kGAAkG;AAClG,eAAO,MAAM,QAAQ,UAAW,MAAM,mBAAqB,MAW1D,CAAA;AAED,KAAK,KAAK,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;AAE5D,8GAA8G;AAC9G,eAAO,MAAM,mBAAmB,WAAY,OAAO,SAAS,KAAK,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,KAAG,IA8D7G,CAAA"}
|
package/dist/digest/command.js
CHANGED
|
@@ -2,14 +2,34 @@ import { CliError } from "@wirecat/cli-base";
|
|
|
2
2
|
import { annotate } from "@wirecat/cli-base/commands";
|
|
3
3
|
import { LOCAL_READ, parseDuration } from "@wirecat/cli-core/cli";
|
|
4
4
|
import { itemAnswer, withStore } from "../answer.js";
|
|
5
|
+
import { APP } from "../app.js";
|
|
5
6
|
import { positive } from "../options.js";
|
|
6
7
|
import { gatherDigest, WATCH_TAG } from "./digest.js";
|
|
8
|
+
import { DIGEST_SOURCES, isDigest, readDefinition } from "./digests.js";
|
|
7
9
|
import { digestText, fitDigest } from "./text.js";
|
|
8
10
|
/** Roughly 10k tokens of mixed Russian and English: Cyrillic takes two bytes a letter and fewer letters a token. */
|
|
9
11
|
const COMPACT_BYTES = 40_000;
|
|
10
12
|
const FULL_BYTES = 80_000;
|
|
11
13
|
/** An owed reply older than this is left to `tasks agenda` and `mail review`, which read further back. */
|
|
12
14
|
const OWED_WITHIN = 7 * 86_400_000;
|
|
15
|
+
/** A digest's run keeps to the digest's sources even when its agent leaves out `--source`; other schedules do not. */
|
|
16
|
+
const scheduledSources = (env) => {
|
|
17
|
+
const scheduled = env[`${APP.envPrefix}_SCHEDULED`];
|
|
18
|
+
return scheduled && isDigest(env, scheduled) ? (readDefinition(env, scheduled)?.sources ?? []) : [];
|
|
19
|
+
};
|
|
20
|
+
/** `--source telegram,mail`, repeatable: what the agenda reads; each one a part it can leave out. */
|
|
21
|
+
export const sourcesOf = (value, before = []) => {
|
|
22
|
+
const words = value
|
|
23
|
+
.split(",")
|
|
24
|
+
.map((word) => word.trim().toLowerCase())
|
|
25
|
+
.filter(Boolean);
|
|
26
|
+
const unknown = words.filter((word) => !DIGEST_SOURCES.includes(word));
|
|
27
|
+
if (unknown.length)
|
|
28
|
+
throw new CliError("validation_error", `--source takes ${DIGEST_SOURCES.join(", ")}; not ${unknown.join(", ")}`, {
|
|
29
|
+
param: "source",
|
|
30
|
+
});
|
|
31
|
+
return [...new Set([...before, ...words])];
|
|
32
|
+
};
|
|
13
33
|
export const sinceOf = (value, now = Date.now()) => {
|
|
14
34
|
const since = /^\d{4}-\d{2}-\d{2}/.test(value) ? Date.parse(value) : now - parseDuration(value, "--since-time");
|
|
15
35
|
if (Number.isNaN(since))
|
|
@@ -52,6 +72,8 @@ export const reviewAgendaCommand = (review, print, streams, env) => {
|
|
|
52
72
|
.option("--since-time <time>", "how far back: hours or days (12h, 7d) or a start date (2026-11-01)", "1d")
|
|
53
73
|
.option("--before-time <time>", "build it as of this past ISO time or date, for a past day's digest: --since-time counts back from it, and " +
|
|
54
74
|
"what came later is left out; a chat or thread answered since reads as answered")
|
|
75
|
+
.option("--source <accounts>", `only these, comma-separated or repeated: ${DIGEST_SOURCES.join(", ")}; watched items, projects and proposals stay. ` +
|
|
76
|
+
"A digest's run reads the digest's own sources without it", sourcesOf)
|
|
55
77
|
.option("--limit <n>", "items per section before the size budget", positive, 25)
|
|
56
78
|
.option("--max-output-bytes <bytes>", "the text answer's size budget in bytes; 40000 with --compact, else 80000", positive)
|
|
57
79
|
.option("--compact", "one line per item, shorter excerpts, the smaller budget: for an agent")
|
|
@@ -70,6 +92,7 @@ export const reviewAgendaCommand = (review, print, streams, env) => {
|
|
|
70
92
|
limit: given.limit,
|
|
71
93
|
excerpt: given.compact ? 100 : 200,
|
|
72
94
|
owedWithin: OWED_WITHIN,
|
|
95
|
+
sources: given.source ?? scheduledSources(env),
|
|
73
96
|
}));
|
|
74
97
|
const digest = fitDigest(gathered, given.maxOutputBytes ?? (given.compact ? COMPACT_BYTES : FULL_BYTES));
|
|
75
98
|
// Not `print` for the text: its compact renderer would draw the answer generically, without the sections.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/digest/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAEjE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAEjD,oHAAoH;AACpH,MAAM,aAAa,GAAG,MAAM,CAAA;AAC5B,MAAM,UAAU,GAAG,MAAM,CAAA;AACzB,0GAA0G;AAC1G,MAAM,WAAW,GAAG,CAAC,GAAG,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/digest/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAgB,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAErD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAEjE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,cAAc,EAAqB,QAAQ,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAEjD,oHAAoH;AACpH,MAAM,aAAa,GAAG,MAAM,CAAA;AAC5B,MAAM,UAAU,GAAG,MAAM,CAAA;AACzB,0GAA0G;AAC1G,MAAM,WAAW,GAAG,CAAC,GAAG,UAAU,CAAA;AAYlC,sHAAsH;AACtH,MAAM,gBAAgB,GAAG,CAAC,GAAsB,EAAkB,EAAE;IAClE,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,SAAS,YAAY,CAAC,CAAA;IACnD,OAAO,SAAS,IAAI,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACrG,CAAC,CAAA;AAED,qGAAqG;AACrG,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAa,EAAE,MAAM,GAAmB,EAAE,EAAkB,EAAE;IACtF,MAAM,KAAK,GAAG,KAAK;SAChB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SACxC,MAAM,CAAC,OAAO,CAAC,CAAA;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAE,cAAoC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7F,IAAI,OAAO,CAAC,MAAM;QAChB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YAC/G,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAA;IACJ,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAI,KAAwB,CAAC,CAAC,CAAC,CAAA;AAChE,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAU,EAAE;IACjE,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,aAAa,CAAC,KAAK,EAAE,cAAc,CAAC,CAAA;IAC/G,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACrB,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,8CAA8C,KAAK,GAAG,EAAE;YAC7F,KAAK,EAAE,YAAY;SACpB,CAAC,CAAA;IACJ,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,kGAAkG;AAClG,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAU,EAAE;IAClE,MAAM,EAAE,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC1G,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,mDAAmD,KAAK,GAAG,EAAE;YAClG,KAAK,EAAE,aAAa;SACrB,CAAC,CAAA;IACJ,IAAI,EAAE,GAAG,GAAG;QACV,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,sDAAsD,EAAE;YAC7F,KAAK,EAAE,aAAa;SACrB,CAAC,CAAA;IACJ,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAID,8GAA8G;AAC9G,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAe,EAAE,KAAY,EAAE,OAAgB,EAAE,GAAsB,EAAQ,EAAE;IACnH,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;SACxD,OAAO,CAAC,+EAA+E,CAAC;SACxF,WAAW,CACV,iGAAiG;QAC/F,GAAG,SAAS,6FAA6F;QACzG,2GAA2G;QAC3G,yGAAyG;QACzG,gFAAgF;QAChF,6GAA6G;QAC7G,uGAAuG;QACvG,4GAA4G;QAC5G,4GAA4G;QAC5G,2GAA2G;QAC3G,+GAA+G;QAC/G,2GAA2G;QAC3G,4GAA4G;QAC5G,gBAAgB,CACnB;SACA,MAAM,CAAC,qBAAqB,EAAE,oEAAoE,EAAE,IAAI,CAAC;SACzG,MAAM,CACL,sBAAsB,EACtB,4GAA4G;QAC1G,gFAAgF,CACnF;SACA,MAAM,CACL,qBAAqB,EACrB,4CAA4C,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,gDAAgD;QACnH,0DAA0D,EAC5D,SAAS,CACV;SACA,MAAM,CAAC,aAAa,EAAE,0CAA0C,EAAE,QAAQ,EAAE,EAAE,CAAC;SAC/E,MAAM,CACL,4BAA4B,EAC5B,0EAA0E,EAC1E,QAAQ,CACT;SACA,MAAM,CAAC,WAAW,EAAE,uEAAuE,CAAC;SAC5F,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC;SAC9B,MAAM,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;QAC/B,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI;YAC7B,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,0DAA0D,EAAE;gBACjG,MAAM,EAAE,iBAAiB;gBACzB,KAAK,EAAE,WAAW;aACnB,CAAC,CAAA;QACJ,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACrF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC7C,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAC9C,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE;YACvB,KAAK;YACL,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;YACzC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;YAClC,UAAU,EAAE,WAAW;YACvB,OAAO,EAAE,KAAK,CAAC,MAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC;SAC/C,CAAC,CACH,CAAA;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;QACxG,0GAA0G;QAC1G,IAAI,KAAK,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;;YAC1C,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;AACN,CAAC,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type Body } from "@wirecat/cli-core/cli";
|
|
2
|
+
import type { Command } from "commander";
|
|
3
|
+
type Print = (json: boolean | undefined, body: Body, text?: string) => void;
|
|
4
|
+
export declare const digestCommands: (digest: Command, print: Print, env: NodeJS.ProcessEnv) => void;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=digest-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"digest-commands.d.ts","sourceRoot":"","sources":["../../src/digest/digest-commands.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,IAAI,EAmBV,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAyBxC,KAAK,KAAK,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;AAoF3E,eAAO,MAAM,cAAc,WAAY,OAAO,SAAS,KAAK,OAAO,MAAM,CAAC,UAAU,KAAG,IAqPtF,CAAA"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { CliError } from "@wirecat/cli-base";
|
|
3
|
+
import { annotate } from "@wirecat/cli-base/commands";
|
|
4
|
+
import { thisMachine } from "@wirecat/cli-core/background";
|
|
5
|
+
import { agentSchedule, calendarOf, environmentOf, grantsAuthority, LOCAL_READ, LOCAL_WRITE, parseRoute, pauseSchedule, queryTerms, removeSchedule, routeText, runScheduleNow, scheduleName, slotsOfAt, termField, withQuery, writeSchedule, } from "@wirecat/cli-core/cli";
|
|
6
|
+
import { itemAnswer, wholeList, withStore } from "../answer.js";
|
|
7
|
+
import { APP } from "../app.js";
|
|
8
|
+
import { fromAppOption, whoRuns } from "../author.js";
|
|
9
|
+
import { scheduleLimits } from "../config.js";
|
|
10
|
+
import { agentInputOf, MAIL_CLI } from "../schedule/command.js";
|
|
11
|
+
import { checkedBrief, readBrief, refuseAgent } from "./brief.js";
|
|
12
|
+
import { sourcesOf } from "./command.js";
|
|
13
|
+
import { briefAddress, DIGEST_PROMPT, DIGEST_SOURCES, digestNames, digestOf, digestScheduleFile, dropDefinition, MORNING_DIGEST, readDefinition, runCapOf, viewOf, writeDefinition, } from "./digests.js";
|
|
14
|
+
/** `--source all` and `--deliver-to none`: an edit's way to clear what an earlier one set. */
|
|
15
|
+
const ALL = "all";
|
|
16
|
+
const NONE = "none";
|
|
17
|
+
const usdOf = (flag, least) => (value) => {
|
|
18
|
+
const usd = Number(value);
|
|
19
|
+
if (!Number.isFinite(usd) || usd < 0 || (least === "above zero" && usd === 0))
|
|
20
|
+
throw new CliError("validation_error", `${flag} takes US dollars, ${least === "zero" ? "0 or more" : "more than 0"}; not "${value}"`, {
|
|
21
|
+
param: flag,
|
|
22
|
+
});
|
|
23
|
+
return usd;
|
|
24
|
+
};
|
|
25
|
+
const routeOf = (route, routes = []) => route === NONE ? [] : [...routes, routeText(parseRoute(route))];
|
|
26
|
+
const sourceOption = (value, before = []) => value.trim().toLowerCase() === ALL ? ALL : sourcesOf(value, before === ALL ? [] : before);
|
|
27
|
+
/** The options `add` and `edit` share; an edit replaces what each given option says and keeps the rest. */
|
|
28
|
+
const withDigestOptions = (command) => fromAppOption(command
|
|
29
|
+
.option("--title <title>", "the name the digest is shown under")
|
|
30
|
+
.option("--at <HH:MM>", "when it runs: HH:MM every day, or 'mon,fri 09:00' on those days; repeat it for more times, as 08:30 and 18:00", (at, all = []) => [...all, at])
|
|
31
|
+
.option("--source <accounts>", `what it reads, comma-separated or repeated: ${DIGEST_SOURCES.join(", ")}; ${ALL} (the default) reads everything`, sourceOption)
|
|
32
|
+
.option("--deliver-to <route>", `where each run is sent: telegram-bot:<profile>/<chat> or email:<profile>/<address>; repeat it for more, ${NONE} for nowhere`, routeOf)
|
|
33
|
+
.option("--text <text>", "your brief: what to collect, what to skip, how much; at most 4000 characters")
|
|
34
|
+
.option("--max-cost <usd>", "stop a run that costs more than this, in US dollars", usdOf("--max-cost", "above zero"))
|
|
35
|
+
.option("--max-cost-per-day <usd>", "start no run for the rest of the day once its runs cost this much, in US dollars; 0 for no cap", usdOf("--max-cost-per-day", "zero"))
|
|
36
|
+
.option("--json", "print JSON"));
|
|
37
|
+
/** The harness, model and per-run cap an existing schedule's argv was made with, so an edit keeps them. */
|
|
38
|
+
const kept = (schedule) => {
|
|
39
|
+
const { argv } = schedule;
|
|
40
|
+
const model = argv.indexOf("--model");
|
|
41
|
+
const cap = runCapOf(argv);
|
|
42
|
+
return {
|
|
43
|
+
harness: argv[1] === "exec" ? "codex" : "claude",
|
|
44
|
+
...(model < 0 ? { model: "" } : { model: argv[model + 1] ?? "" }),
|
|
45
|
+
...(cap === null ? {} : { maxCost: cap }),
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
export const digestCommands = (digest, print, env) => {
|
|
49
|
+
const siteOf = (command) => ({
|
|
50
|
+
app: APP,
|
|
51
|
+
system: environmentOf(command).system ?? thisMachine(),
|
|
52
|
+
env,
|
|
53
|
+
profile: "",
|
|
54
|
+
agentRuns: [MAIL_CLI],
|
|
55
|
+
limits: scheduleLimits(env),
|
|
56
|
+
});
|
|
57
|
+
// Each of these spends the owner's money, sets his timers or sends to his chats: he does it, never an agent.
|
|
58
|
+
const owner = async (command, question) => {
|
|
59
|
+
refuseAgent(env);
|
|
60
|
+
if ((await whoRuns(command, env, { question })) !== "owner")
|
|
61
|
+
throw new CliError("permission_error", "a digest spends your money and writes to your chats; you change or run it at a terminal or in WireCat Desktop", { reason: "digest.owner-only" });
|
|
62
|
+
};
|
|
63
|
+
const shown = async (name) => viewOf(env, name, { brief: (await readBrief(env, name)) ?? null, limits: scheduleLimits(env) });
|
|
64
|
+
const say = async (json, name, line) => print(json, itemAnswer(await shown(name)), line);
|
|
65
|
+
const saveBrief = async (name, text) => {
|
|
66
|
+
if (text === undefined)
|
|
67
|
+
return;
|
|
68
|
+
const body = checkedBrief(text);
|
|
69
|
+
await withStore(env, async (store) => store.templates.save(briefAddress(name), body, "memo"));
|
|
70
|
+
};
|
|
71
|
+
const listQuery = {
|
|
72
|
+
entity: "digest",
|
|
73
|
+
backend: "native",
|
|
74
|
+
fields: [termField("name", "kw", "name:weekly")],
|
|
75
|
+
};
|
|
76
|
+
withQuery(annotate(digest.command("list"), { effects: LOCAL_READ }).summary("your digests: when each runs, what it reads, where it goes, last and next run"), listQuery)
|
|
77
|
+
.option("--json", "print JSON")
|
|
78
|
+
.action(async (words, given) => {
|
|
79
|
+
const wanted = queryTerms(words, listQuery, "digest list").get("name");
|
|
80
|
+
const names = digestNames(env).filter((name) => wanted === undefined || name === wanted);
|
|
81
|
+
const items = await Promise.all(names.map(shown));
|
|
82
|
+
print(given.json, wholeList("digest list", items), items.length === 0
|
|
83
|
+
? "No digests. `memo digest add <name> --title … --at 08:30` makes one."
|
|
84
|
+
: items
|
|
85
|
+
.map((one) => [
|
|
86
|
+
one.name,
|
|
87
|
+
one.title,
|
|
88
|
+
one.times.length
|
|
89
|
+
? `${one.weekdays.length ? one.weekdays.join(",") : "daily"} ${one.times.join(", ")}`
|
|
90
|
+
: "no set time",
|
|
91
|
+
one.scheduled ? "on" : "paused",
|
|
92
|
+
one.sources.length ? `reads ${one.sources.join(", ")}` : "reads everything",
|
|
93
|
+
one.routes.length ? `to ${one.routes.join(", ")}` : "sent nowhere",
|
|
94
|
+
one.last ? `last ${one.last.at.slice(0, 16).replace("T", " ")} ${one.last.ok ? "ok" : "failed"}` : "",
|
|
95
|
+
]
|
|
96
|
+
.filter(Boolean)
|
|
97
|
+
.join(" "))
|
|
98
|
+
.join("\n"));
|
|
99
|
+
});
|
|
100
|
+
withDigestOptions(grantsAuthority(annotate(digest.command("add"), { effects: LOCAL_WRITE }))
|
|
101
|
+
.summary("make a digest: its times, sources, routes and brief, on its timer")
|
|
102
|
+
.description("make a digest: an agent that runs memo's morning-digest skill at the given times, reading from its previous " +
|
|
103
|
+
"time (a weekly one reads the week) and only the sources given, and sends what it writes along the routes " +
|
|
104
|
+
"given. It runs read only. Each run is a paid model call; only you make one")
|
|
105
|
+
.argument("<name>", "lowercase letters, digits and dashes")
|
|
106
|
+
.option("--paused", "make it without putting it on its timer; `memo digest resume` does")).action(async (name, given, command) => {
|
|
107
|
+
const digestName = scheduleName(name);
|
|
108
|
+
if (existsSync(digestScheduleFile(env, digestName)))
|
|
109
|
+
throw new CliError("validation_error", `${digestName} already exists; \`memo digest edit ${digestName}\` changes it`, {
|
|
110
|
+
reason: "digest.exists",
|
|
111
|
+
});
|
|
112
|
+
if (!given.at?.length)
|
|
113
|
+
throw new CliError("validation_error", "say when: --at HH:MM, or --at 'mon 09:00'; repeat it for more times", {
|
|
114
|
+
param: "at",
|
|
115
|
+
});
|
|
116
|
+
const when = calendarOf(given.at.flatMap(slotsOfAt));
|
|
117
|
+
if (given.text !== undefined)
|
|
118
|
+
checkedBrief(given.text);
|
|
119
|
+
await owner(command, `make the digest ${digestName}, a paid model call at each of its times?`);
|
|
120
|
+
const site = siteOf(command);
|
|
121
|
+
const schedule = agentSchedule(site, {
|
|
122
|
+
name: digestName,
|
|
123
|
+
harness: "claude",
|
|
124
|
+
prompt: DIGEST_PROMPT,
|
|
125
|
+
when,
|
|
126
|
+
...(given.maxCost ? { maxCost: given.maxCost } : {}),
|
|
127
|
+
...(given.maxCostPerDay === undefined ? {} : { maxCostPerDay: given.maxCostPerDay }),
|
|
128
|
+
...(given.deliverTo?.length ? { to: given.deliverTo } : {}),
|
|
129
|
+
...(given.paused ? { paused: true } : {}),
|
|
130
|
+
});
|
|
131
|
+
writeDefinition(env, {
|
|
132
|
+
name: digestName,
|
|
133
|
+
title: given.title?.trim() || digestName,
|
|
134
|
+
sources: given.source === ALL || given.source === undefined ? [] : given.source,
|
|
135
|
+
createdAt: new Date().toISOString(),
|
|
136
|
+
});
|
|
137
|
+
await writeSchedule(site, schedule);
|
|
138
|
+
await saveBrief(digestName, given.text);
|
|
139
|
+
await say(given.json, digestName, `Added ${digestName}${given.paused ? ", paused" : ""}.`);
|
|
140
|
+
});
|
|
141
|
+
withDigestOptions(grantsAuthority(annotate(digest.command("edit"), { effects: LOCAL_WRITE }))
|
|
142
|
+
.summary("change a digest; each option given replaces what it says, the rest stays")
|
|
143
|
+
.description(`change a digest: each option given replaces what it set before (--at all its times, --source all its sources, ` +
|
|
144
|
+
`--deliver-to all its routes), and the rest stays as it was. --source ${ALL} reads everything again, ` +
|
|
145
|
+
`--deliver-to ${NONE} sends nowhere. A paused digest stays paused. Only you change one`)
|
|
146
|
+
.argument("<name>", "the digest's name, as `memo digest list` shows it")).action(async (name, given, command) => {
|
|
147
|
+
const { schedule } = digestOf(env, name);
|
|
148
|
+
if (!schedule.argv.includes(DIGEST_PROMPT))
|
|
149
|
+
throw new CliError("validation_error", `${name} runs a prompt of its own, made with \`memo schedule agent\`; an edit here would replace it — change it there`, { reason: "digest.own-prompt" });
|
|
150
|
+
const when = given.at?.length ? calendarOf(given.at.flatMap(slotsOfAt)) : schedule.when;
|
|
151
|
+
if (given.text !== undefined)
|
|
152
|
+
checkedBrief(given.text);
|
|
153
|
+
await owner(command, `change the digest ${name}?`);
|
|
154
|
+
const site = siteOf(command);
|
|
155
|
+
const previous = kept(schedule);
|
|
156
|
+
const maxCost = given.maxCost ?? previous.maxCost;
|
|
157
|
+
const to = given.deliverTo ?? schedule.to ?? [];
|
|
158
|
+
const maxCostPerDay = given.maxCostPerDay ?? schedule.maxCostPerDay;
|
|
159
|
+
const rebuilt = agentSchedule(site, {
|
|
160
|
+
name,
|
|
161
|
+
harness: previous.harness,
|
|
162
|
+
prompt: DIGEST_PROMPT,
|
|
163
|
+
when,
|
|
164
|
+
...(previous.model === undefined ? {} : { model: previous.model }),
|
|
165
|
+
...(maxCost ? { maxCost } : {}),
|
|
166
|
+
...(maxCostPerDay === undefined ? {} : { maxCostPerDay }),
|
|
167
|
+
...(schedule.notify ? { notify: schedule.notify } : {}),
|
|
168
|
+
...(to.length ? { to } : {}),
|
|
169
|
+
...(schedule.paused ? { paused: true } : {}),
|
|
170
|
+
});
|
|
171
|
+
const definition = readDefinition(env, name);
|
|
172
|
+
if (given.title !== undefined || given.source !== undefined || definition) {
|
|
173
|
+
writeDefinition(env, {
|
|
174
|
+
name,
|
|
175
|
+
title: given.title?.trim() || definition?.title || (name === MORNING_DIGEST ? "Morning digest" : name),
|
|
176
|
+
sources: given.source === ALL ? [] : (given.source ?? definition?.sources ?? []),
|
|
177
|
+
createdAt: definition?.createdAt || schedule.createdAt,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
await writeSchedule(site, { ...rebuilt, createdAt: schedule.createdAt });
|
|
181
|
+
await saveBrief(name, given.text);
|
|
182
|
+
await say(given.json, name, `Changed ${name}.`);
|
|
183
|
+
});
|
|
184
|
+
fromAppOption(annotate(digest.command("run"), { effects: LOCAL_WRITE }))
|
|
185
|
+
.summary("build a digest now and send it along its routes, or only some, or none")
|
|
186
|
+
.description("build a digest now, as its timer would, paused or not, and keep the run with its others; it is sent along " +
|
|
187
|
+
"its routes, only along those --deliver-to names (each one of its own), or with --no-notify nowhere. A paid " +
|
|
188
|
+
"model call: the day's cost cap holds, and only you run it")
|
|
189
|
+
.argument("<name>", "the digest's name, as `memo digest list` shows it")
|
|
190
|
+
.option("--no-notify", "keep it here: send it nowhere")
|
|
191
|
+
.option("--deliver-to <route>", "send it only along this one of the digest's routes; repeat it for more", (route, routes = []) => [...routes, routeText(parseRoute(route))])
|
|
192
|
+
.option("--json", "print JSON")
|
|
193
|
+
.action(async (name, given, command) => {
|
|
194
|
+
const { file } = digestOf(env, name);
|
|
195
|
+
if (!given.notify && given.deliverTo)
|
|
196
|
+
throw new CliError("validation_error", "--no-notify sends nothing; leave out --deliver-to, or --no-notify", {
|
|
197
|
+
param: "deliver-to",
|
|
198
|
+
});
|
|
199
|
+
await owner(command, `run the digest ${name} now, a paid model call?`);
|
|
200
|
+
const routes = given.notify ? given.deliverTo : [];
|
|
201
|
+
const last = await runScheduleNow(command, siteOf(command), file, {
|
|
202
|
+
agentInput: agentInputOf(env),
|
|
203
|
+
...(routes ? { routes } : {}),
|
|
204
|
+
});
|
|
205
|
+
if (!("exitCode" in last)) {
|
|
206
|
+
print(given.json, itemAnswer({ name, skipped: true, ...last.skipped }), `${name}: skipped — ${last.skipped.why}`);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (last.exitCode !== 0)
|
|
210
|
+
process.exitCode = 1;
|
|
211
|
+
print(given.json, itemAnswer({ name, ...last }), `${name}: ${last.exitCode === 0 ? "built" : `failed (exit ${last.exitCode})`} — ${last.output}`);
|
|
212
|
+
});
|
|
213
|
+
for (const [verb, paused] of [
|
|
214
|
+
["pause", true],
|
|
215
|
+
["resume", false],
|
|
216
|
+
])
|
|
217
|
+
fromAppOption(grantsAuthority(annotate(digest.command(verb), { effects: LOCAL_WRITE })))
|
|
218
|
+
.summary(paused
|
|
219
|
+
? "take a digest off its timer; it stays, and run still builds it"
|
|
220
|
+
: "put a paused digest back on its timer")
|
|
221
|
+
.argument("<name>", "the digest's name, as `memo digest list` shows it")
|
|
222
|
+
.option("--json", "print JSON")
|
|
223
|
+
.action(async (name, given, command) => {
|
|
224
|
+
digestOf(env, name);
|
|
225
|
+
await owner(command, `${verb} the digest ${name}?`);
|
|
226
|
+
await pauseSchedule(siteOf(command), name, paused);
|
|
227
|
+
await say(given.json, name, paused ? `Paused ${name}.` : `Resumed ${name}.`);
|
|
228
|
+
});
|
|
229
|
+
fromAppOption(grantsAuthority(annotate(digest.command("remove"), { effects: LOCAL_WRITE })))
|
|
230
|
+
.summary("remove a digest and its timer; its past runs, brief and templates stay")
|
|
231
|
+
.argument("<name>", "the digest's name, as `memo digest list` shows it")
|
|
232
|
+
.option("--json", "print JSON")
|
|
233
|
+
.action(async (name, given, command) => {
|
|
234
|
+
digestOf(env, name);
|
|
235
|
+
await owner(command, `remove the digest ${name}?`);
|
|
236
|
+
await removeSchedule(siteOf(command), name);
|
|
237
|
+
dropDefinition(env, name);
|
|
238
|
+
print(given.json, itemAnswer({ name, removed: true }), `Removed ${name}; its past runs stay.`);
|
|
239
|
+
});
|
|
240
|
+
};
|
|
241
|
+
//# sourceMappingURL=digest-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"digest-commands.js","sourceRoot":"","sources":["../../src/digest/digest-commands.ts"],"names":[],"mappings":"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"}
|
package/dist/digest/digest.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type MessageStore } from "@wirecat/cli-core/store";
|
|
2
|
+
import type { DigestSource } from "./digests.js";
|
|
2
3
|
import { type Health } from "./sync-health.js";
|
|
3
4
|
import { type TaskCounts } from "./tasks.js";
|
|
4
5
|
/** The tag that puts a chat, mail thread, person, project or meeting series on the owner's watch list. */
|
|
@@ -80,13 +81,15 @@ export interface DigestOptions {
|
|
|
80
81
|
excerpt: number;
|
|
81
82
|
/** ms: an owed reply older than this is left to `tasks agenda` and `mail review`. */
|
|
82
83
|
owedWithin: number;
|
|
83
|
-
/** Tasks created after this are new; the previous
|
|
84
|
+
/** Tasks created after this are new; the previous run of the running digest when left out. */
|
|
84
85
|
newSince?: string;
|
|
86
|
+
/** Only these parts: messengers by provider, mail, meetings, tasks. Empty or absent: all of them. */
|
|
87
|
+
sources?: readonly DigestSource[];
|
|
85
88
|
}
|
|
86
89
|
/**
|
|
87
90
|
* What the morning needs from the store alone, no model call and no network: the watch list, replies owed, new
|
|
88
91
|
* personal mail, meetings that ended, tasks due, projects that moved, proposals waiting. Every item names its
|
|
89
92
|
* reference, so an agent reads further only where it points.
|
|
90
93
|
*/
|
|
91
|
-
export declare const gatherDigest: (store: MessageStore, env: NodeJS.ProcessEnv, { since, now: clock, until, limit, excerpt, owedWithin, newSince }: DigestOptions) => Promise<Digest>;
|
|
94
|
+
export declare const gatherDigest: (store: MessageStore, env: NodeJS.ProcessEnv, { since, now: clock, until, limit, excerpt, owedWithin, newSince, sources: only }: DigestOptions) => Promise<Digest>;
|
|
92
95
|
//# sourceMappingURL=digest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digest.d.ts","sourceRoot":"","sources":["../../src/digest/digest.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmB,KAAK,YAAY,EAAsB,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"digest.d.ts","sourceRoot":"","sources":["../../src/digest/digest.ts"],"names":[],"mappings":"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"}
|
package/dist/digest/digest.js
CHANGED
|
@@ -13,6 +13,14 @@ import { digestRunBefore, gatherTasks, previousDigestAt } from "./tasks.js";
|
|
|
13
13
|
export const WATCH_TAG = "watch";
|
|
14
14
|
export const SECTIONS = ["watch", "owed", "mail", "meetings", "tasks", "projects", "sources", "proposals"];
|
|
15
15
|
export const SCOPE_KINDS = ["telegram", "max", "whatsapp", "mail", "meeting", "task"];
|
|
16
|
+
/** The digest source an account belongs to; one that is none of them (a CRM) stays in. */
|
|
17
|
+
const sourceOf = (provider) => MESSENGERS.has(provider)
|
|
18
|
+
? provider
|
|
19
|
+
: provider === "email"
|
|
20
|
+
? "mail"
|
|
21
|
+
: kindOf(provider) === "meetings"
|
|
22
|
+
? "meetings"
|
|
23
|
+
: undefined;
|
|
16
24
|
const DAY = 86_400_000;
|
|
17
25
|
const MESSENGERS = new Set(["telegram", "max", "whatsapp"]);
|
|
18
26
|
const HEALTH_ORDER = HEALTH_REASONS;
|
|
@@ -111,13 +119,18 @@ const personal = (newest) => !newest.bulk && !newest.list && !newest.envelope &&
|
|
|
111
119
|
* personal mail, meetings that ended, tasks due, projects that moved, proposals waiting. Every item names its
|
|
112
120
|
* reference, so an agent reads further only where it points.
|
|
113
121
|
*/
|
|
114
|
-
export const gatherDigest = async (store, env, { since, now: clock = Date.now(), until, limit, excerpt, owedWithin, newSince }) => {
|
|
122
|
+
export const gatherDigest = async (store, env, { since, now: clock = Date.now(), until, limit, excerpt, owedWithin, newSince, sources: only = [] }) => {
|
|
115
123
|
const now = until ?? clock;
|
|
116
124
|
const by = (at) => until === undefined || at <= until;
|
|
117
125
|
const upTo = (found) => found.filter((one) => by(Date.parse(one.item.at)));
|
|
118
126
|
const window = (now - since) / DAY;
|
|
119
127
|
const days = `${Math.max(1, Math.ceil(window))}d`;
|
|
120
|
-
const
|
|
128
|
+
const reads = (source) => only.length === 0 || only.includes(source);
|
|
129
|
+
const scoped = await scopedAccounts(store, env);
|
|
130
|
+
const accounts = scoped.filter((key) => {
|
|
131
|
+
const source = sourceOf(key.provider);
|
|
132
|
+
return source === undefined || reads(source);
|
|
133
|
+
});
|
|
121
134
|
const messengers = accounts.filter((key) => MESSENGERS.has(key.provider));
|
|
122
135
|
const mailboxes = accounts.filter((key) => key.provider === "email");
|
|
123
136
|
const owedSince = Math.min(since, now - owedWithin);
|
|
@@ -320,7 +333,7 @@ export const gatherDigest = async (store, env, { since, now: clock = Date.now(),
|
|
|
320
333
|
}
|
|
321
334
|
}
|
|
322
335
|
const meetings = [];
|
|
323
|
-
for (const meeting of await store.meetings.meetings({ since, limit: 100 })) {
|
|
336
|
+
for (const meeting of reads("meetings") ? await store.meetings.meetings({ since, limit: 100 }) : []) {
|
|
324
337
|
const ended = meeting.endedAt ?? meeting.startedAt;
|
|
325
338
|
if (ended === null || ended < since || meeting.deletedAt !== null)
|
|
326
339
|
continue;
|
|
@@ -346,11 +359,19 @@ export const gatherDigest = async (store, env, { since, now: clock = Date.now(),
|
|
|
346
359
|
},
|
|
347
360
|
});
|
|
348
361
|
}
|
|
349
|
-
const
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
362
|
+
const tasksSince = newSince ?? (until === undefined ? previousDigestAt(env, now) : digestRunBefore(env, until));
|
|
363
|
+
const hot = reads("tasks")
|
|
364
|
+
? // Tasks taken from chats and mail count under tasks, read or not their source.
|
|
365
|
+
await gatherTasks(store, scoped.filter((key) => MESSENGERS.has(key.provider) || key.provider === "email"), {
|
|
366
|
+
now,
|
|
367
|
+
newSince: tasksSince,
|
|
368
|
+
...(until === undefined ? {} : { until }),
|
|
369
|
+
})
|
|
370
|
+
: {
|
|
371
|
+
tasks: [],
|
|
372
|
+
counts: { overdue: 0, today: 0, tomorrow: 0, new: 0, newSince: tasksSince, undated: 0 },
|
|
373
|
+
accounts: 0,
|
|
374
|
+
};
|
|
354
375
|
const tasks = hot.tasks.map(({ task, groups, askedBy, for: doer }) => ({
|
|
355
376
|
item: {
|
|
356
377
|
ref: task.ref,
|