@wirecat/cli-memo 0.20.0 → 0.22.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/actions/actions.js +1 -1
- package/dist/actions/command.d.ts +1 -1
- package/dist/agents/command.d.ts +1 -1
- package/dist/answers/command.d.ts +1 -1
- package/dist/answers/command.js +3 -3
- package/dist/answers/command.js.map +1 -1
- package/dist/bin/memo.js +1 -1
- package/dist/config.js +1 -1
- package/dist/context/command.d.ts +1 -1
- package/dist/context/command.js +1 -1
- package/dist/context/context.js +1 -1
- package/dist/discovery/command.d.ts +1 -1
- package/dist/discovery/command.js +2 -2
- package/dist/facts/command.d.ts +1 -1
- package/dist/knowledge/command.d.ts +1 -1
- package/dist/knowledge/command.d.ts.map +1 -1
- package/dist/knowledge/command.js +8 -4
- package/dist/knowledge/command.js.map +1 -1
- package/dist/knowledge/meeting-projects-command.d.ts +1 -1
- package/dist/knowledge/meeting-projects-command.js +1 -1
- package/dist/mail/command.d.ts +1 -1
- package/dist/mail/command.d.ts.map +1 -1
- package/dist/mail/command.js +33 -6
- package/dist/mail/command.js.map +1 -1
- package/dist/mail/gmail.js +1 -1
- package/dist/mail/himalaya.js +1 -1
- package/dist/mail/parse.js +2 -2
- package/dist/mail/parse.js.map +1 -1
- package/dist/mcp/command.d.ts +1 -1
- package/dist/mcp/knowledge.d.ts +9 -0
- package/dist/mcp/knowledge.d.ts.map +1 -0
- package/dist/mcp/knowledge.js +59 -0
- package/dist/mcp/knowledge.js.map +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +7 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool.d.ts +2 -2
- package/dist/mcp/tool.d.ts.map +1 -1
- package/dist/memories/command.d.ts +1 -1
- package/dist/notes/bound.js +1 -1
- package/dist/notes/command.d.ts +1 -1
- package/dist/notes/command.js +1 -1
- package/dist/notes/embed.js +1 -1
- package/dist/notes/folders-command.d.ts +1 -1
- package/dist/notes/folders-command.js +1 -1
- package/dist/notes/folders.js +1 -1
- package/dist/notes/internal.js +1 -1
- package/dist/notes/state.js +1 -1
- package/dist/options.d.ts +1 -0
- package/dist/options.d.ts.map +1 -1
- package/dist/options.js +6 -0
- package/dist/options.js.map +1 -1
- package/dist/people/command.d.ts +1 -1
- package/dist/people/command.js +1 -1
- package/dist/people/identity.js +1 -1
- package/dist/people/notes-map.js +1 -1
- package/dist/program.d.ts +1 -1
- package/dist/program.js +1 -1
- package/dist/records/run.d.ts +1 -1
- package/dist/records/run.js +1 -1
- package/dist/run/auto.d.ts +1 -1
- package/dist/run/auto.js +1 -1
- package/dist/run/import.d.ts +1 -1
- package/dist/run/import.js +1 -1
- package/dist/run/lock.js +1 -1
- package/dist/search/command.d.ts +40 -1
- package/dist/search/command.d.ts.map +1 -1
- package/dist/search/command.js +120 -60
- package/dist/search/command.js.map +1 -1
- package/dist/store/scope.js +1 -1
- package/dist/store/source-target.js +1 -1
- package/dist/tags/command.d.ts +1 -1
- package/dist/tags/command.js +1 -1
- package/dist/tasks/command.d.ts +1 -1
- package/dist/tasks/command.js +1 -1
- package/dist/tasks/relations-command.d.ts +1 -1
- package/dist/tasks/relations-command.js +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/vocabulary/command.d.ts +1 -1
- package/dist/vocabulary/command.js +1 -1
- package/dist/vocabulary/project.js +1 -1
- package/package.json +3 -3
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,SAAS,EACT,iBAAiB,GAClB,MAAM,8BAA8B,CAAA;AACrC,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,MAAM,EAAiB,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,gFAAgF;AAChF,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAA;AAC/B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAA;AAEzB,MAAM,SAAS,GAAG,iDAAiD,CAAA;AAEnE,4FAA4F;AAC5F,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,sHAAsH;IACtH,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/tool.d.ts
CHANGED
|
@@ -5,13 +5,13 @@ export interface MemoTool {
|
|
|
5
5
|
description: string;
|
|
6
6
|
writes: boolean;
|
|
7
7
|
input: v.ObjectSchema<v.ObjectEntries, undefined>;
|
|
8
|
-
run: (store: MessageStore, args: never) => Promise<object>;
|
|
8
|
+
run: (store: MessageStore, args: never, env: NodeJS.ProcessEnv) => Promise<object>;
|
|
9
9
|
}
|
|
10
10
|
export declare const define: <S extends v.ObjectSchema<v.ObjectEntries, undefined>>(tool: {
|
|
11
11
|
title: string;
|
|
12
12
|
description: string;
|
|
13
13
|
writes: boolean;
|
|
14
14
|
input: S;
|
|
15
|
-
run: (store: MessageStore, args: v.InferOutput<S
|
|
15
|
+
run: (store: MessageStore, args: v.InferOutput<S>, env: NodeJS.ProcessEnv) => Promise<object>;
|
|
16
16
|
}) => MemoTool;
|
|
17
17
|
//# sourceMappingURL=tool.d.ts.map
|
package/dist/mcp/tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/mcp/tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,KAAK,KAAK,CAAC,MAAM,SAAS,CAAA;AAEjC,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;IACjD,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/mcp/tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,KAAK,KAAK,CAAC,MAAM,SAAS,CAAA;AAEjC,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;IACjD,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CACnF;AAED,eAAO,MAAM,MAAM,GAAI,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,QAAQ;IACjF,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,CAAC,CAAA;IACR,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAC9F,KAAG,QAAuC,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Streams } from "@wirecat/cli-
|
|
1
|
+
import type { Streams } from "@wirecat/cli-base";
|
|
2
2
|
import type { Command } from "commander";
|
|
3
3
|
export declare const memoriesCommand: (program: Command, streams: Streams, env: NodeJS.ProcessEnv) => void;
|
|
4
4
|
//# sourceMappingURL=command.d.ts.map
|
package/dist/notes/bound.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
|
-
import { CliError } from "@wirecat/cli-
|
|
2
|
+
import { CliError } from "@wirecat/cli-base";
|
|
3
3
|
import { loadConfig } from "../config.js";
|
|
4
4
|
import { noteFolders } from "./folders.js";
|
|
5
5
|
const unbound = (path) => new CliError("configuration_error", `${path} has no folder id — memo folders add ${path}, or memo folders attach <id> ${path} if another computer made one`);
|
package/dist/notes/command.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Streams } from "@wirecat/cli-
|
|
1
|
+
import { type Streams } from "@wirecat/cli-base";
|
|
2
2
|
import { type Command } from "commander";
|
|
3
3
|
export declare const notesCommand: (program: Command, streams: Streams, env: NodeJS.ProcessEnv) => void;
|
|
4
4
|
//# sourceMappingURL=command.d.ts.map
|
package/dist/notes/command.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
|
-
import { CliError, createRenderer } from "@wirecat/cli-
|
|
2
|
+
import { CliError, createRenderer } from "@wirecat/cli-base";
|
|
3
3
|
import { openStore } from "@wirecat/cli-messaging/store";
|
|
4
4
|
import { InvalidArgumentError } from "commander";
|
|
5
5
|
import { loadConfig } from "../config.js";
|
package/dist/notes/embed.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CliError } from "@wirecat/cli-
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { conversationsService, embeddingsService, embedMail as embedMailChunksOf, embedNotes as embedNoteChunksOf, storeOnlyDeps, } from "@wirecat/cli-messaging/services";
|
|
3
3
|
import { APP } from "../app.js";
|
|
4
4
|
/** About three chunks a second with e5-small on this laptop (2026-10-06): a run stays near three minutes, under a five-minute timer, and the next resumes. */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Streams } from "@wirecat/cli-
|
|
1
|
+
import { type Streams } from "@wirecat/cli-base";
|
|
2
2
|
import { type Command } from "commander";
|
|
3
3
|
export declare const foldersCommand: (program: Command, streams: Streams, env: NodeJS.ProcessEnv) => void;
|
|
4
4
|
//# sourceMappingURL=folders-command.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { statSync } from "node:fs";
|
|
2
2
|
import { basename, resolve } from "node:path";
|
|
3
|
-
import { CliError, createRenderer } from "@wirecat/cli-
|
|
3
|
+
import { CliError, createRenderer } from "@wirecat/cli-base";
|
|
4
4
|
import { openStore } from "@wirecat/cli-messaging/store";
|
|
5
5
|
import { InvalidArgumentError } from "commander";
|
|
6
6
|
import { loadConfig, updateConfig } from "../config.js";
|
package/dist/notes/folders.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolve } from "node:path";
|
|
2
|
-
import { CliError } from "@wirecat/cli-
|
|
2
|
+
import { CliError } from "@wirecat/cli-base";
|
|
3
3
|
const entryOf = (entry) => typeof entry === "string"
|
|
4
4
|
? { id: null, path: resolve(entry), format: "obsidian" }
|
|
5
5
|
: { id: entry.id, path: resolve(entry.path), format: entry.format ?? "obsidian" };
|
package/dist/notes/internal.js
CHANGED
package/dist/notes/state.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import { resolvePaths } from "@wirecat/cli-
|
|
3
|
+
import { resolvePaths } from "@wirecat/cli-base";
|
|
4
4
|
const empty = () => ({ files: {}, documents: {} });
|
|
5
5
|
const fileOf = (env, id) => join(resolvePaths({ appName: "cli-memo", prefix: "MEMO", env }).state, "folders", `${id}.json`);
|
|
6
6
|
/** `undefined` before this computer's first import of the folder. */
|
package/dist/options.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type Command } from "commander";
|
|
2
2
|
export declare const positive: (value: string) => number;
|
|
3
|
+
export declare const whole: (value: string) => number;
|
|
3
4
|
export declare const oneOf: <T extends string>(values: readonly T[]) => (value: string) => T;
|
|
4
5
|
export declare const accountOptions: (command: Command) => Command;
|
|
5
6
|
//# sourceMappingURL=options.d.ts.map
|
package/dist/options.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAwB,MAAM,WAAW,CAAA;AAE9D,eAAO,MAAM,QAAQ,UAAW,MAAM,KAAG,MAIxC,CAAA;AAED,eAAO,MAAM,KAAK,GACf,CAAC,SAAS,MAAM,UAAU,SAAS,CAAC,EAAE,aAC/B,MAAM,KAAG,CAGhB,CAAA;AAEH,eAAO,MAAM,cAAc,YAAa,OAAO,YAIZ,CAAA"}
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAwB,MAAM,WAAW,CAAA;AAE9D,eAAO,MAAM,QAAQ,UAAW,MAAM,KAAG,MAIxC,CAAA;AAED,eAAO,MAAM,KAAK,UAAW,MAAM,KAAG,MAKrC,CAAA;AAED,eAAO,MAAM,KAAK,GACf,CAAC,SAAS,MAAM,UAAU,SAAS,CAAC,EAAE,aAC/B,MAAM,KAAG,CAGhB,CAAA;AAEH,eAAO,MAAM,cAAc,YAAa,OAAO,YAIZ,CAAA"}
|
package/dist/options.js
CHANGED
|
@@ -5,6 +5,12 @@ export const positive = (value) => {
|
|
|
5
5
|
throw new InvalidArgumentError("a whole number above zero");
|
|
6
6
|
return number;
|
|
7
7
|
};
|
|
8
|
+
export const whole = (value) => {
|
|
9
|
+
const number = Number(value);
|
|
10
|
+
if (!Number.isInteger(number) || number < 0 || number > 100)
|
|
11
|
+
throw new InvalidArgumentError("a whole number, 0 to 100");
|
|
12
|
+
return number;
|
|
13
|
+
};
|
|
8
14
|
export const oneOf = (values) => (value) => {
|
|
9
15
|
if (!values.includes(value))
|
|
10
16
|
throw new InvalidArgumentError(`choose ${values.join(", ")}`);
|
package/dist/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAE9D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAU,EAAE;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,oBAAoB,CAAC,2BAA2B,CAAC,CAAA;IACxG,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAChB,CAAmB,MAAoB,EAAE,EAAE,CAC3C,CAAC,KAAa,EAAK,EAAE;IACnB,IAAI,CAAE,MAA4B,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,oBAAoB,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACjH,OAAO,KAAU,CAAA;AACnB,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,EAAE,CACjD,OAAO;KACJ,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../src/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAE9D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAU,EAAE;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,oBAAoB,CAAC,2BAA2B,CAAC,CAAA;IACxG,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAU,EAAE;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,GAAG;QACzD,MAAM,IAAI,oBAAoB,CAAC,0BAA0B,CAAC,CAAA;IAC5D,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAChB,CAAmB,MAAoB,EAAE,EAAE,CAC3C,CAAC,KAAa,EAAK,EAAE;IACnB,IAAI,CAAE,MAA4B,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,oBAAoB,CAAC,UAAU,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACjH,OAAO,KAAU,CAAA;AACnB,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,EAAE,CACjD,OAAO;KACJ,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA"}
|
package/dist/people/command.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Streams } from "@wirecat/cli-
|
|
1
|
+
import { type Streams } from "@wirecat/cli-base";
|
|
2
2
|
import type { Command } from "commander";
|
|
3
3
|
/** Who is who is linked in messaging (`tg contacts link`); the note about a person is an `about` link. */
|
|
4
4
|
export declare const noteCommand: (program: Command, streams: Streams, env: NodeJS.ProcessEnv) => void;
|
package/dist/people/command.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
|
-
import { CliError } from "@wirecat/cli-
|
|
2
|
+
import { CliError } from "@wirecat/cli-base";
|
|
3
3
|
import { openStore } from "@wirecat/cli-messaging/store";
|
|
4
4
|
import { boundFolders, folderOfFile } from "../notes/bound.js";
|
|
5
5
|
import { folderNotes } from "../notes/import.js";
|
package/dist/people/identity.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CliError } from "@wirecat/cli-
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
2
|
import { pickPerson } from "@wirecat/cli-messaging";
|
|
3
3
|
/** `telegram:Ana`, `max:12345`, `email:ana@example.com` — the messenger is always named. */
|
|
4
4
|
export const identityOf = async (store, reference) => {
|
package/dist/people/notes-map.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import { loadConfigFile, resolvePaths } from "@wirecat/cli-
|
|
3
|
+
import { loadConfigFile, resolvePaths } from "@wirecat/cli-base";
|
|
4
4
|
import * as v from "valibot";
|
|
5
5
|
import { folderOfFile } from "../notes/bound.js";
|
|
6
6
|
import { folderNotes } from "../notes/import.js";
|
package/dist/program.d.ts
CHANGED
package/dist/program.js
CHANGED
package/dist/records/run.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Streams } from "@wirecat/cli-
|
|
1
|
+
import { type Streams } from "@wirecat/cli-base";
|
|
2
2
|
import { type MessageStore } from "@wirecat/cli-messaging/store";
|
|
3
3
|
/** Opens the store for one command, prints its answer as JSON or as indented text, and closes the store. */
|
|
4
4
|
export declare const answering: (streams: Streams, env: NodeJS.ProcessEnv) => (json: boolean | undefined, work: (store: MessageStore) => Promise<unknown>) => Promise<void>;
|
package/dist/records/run.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createRenderer } from "@wirecat/cli-
|
|
1
|
+
import { createRenderer } from "@wirecat/cli-base";
|
|
2
2
|
import { openStore } from "@wirecat/cli-messaging/store";
|
|
3
3
|
/** Opens the store for one command, prints its answer as JSON or as indented text, and closes the store. */
|
|
4
4
|
export const answering = (streams, env) => async (json, work) => {
|
package/dist/run/auto.d.ts
CHANGED
package/dist/run/auto.js
CHANGED
|
@@ -3,7 +3,7 @@ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node
|
|
|
3
3
|
import { homedir } from "node:os";
|
|
4
4
|
import { dirname, join, resolve } from "node:path";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
|
-
import { CliError, createRenderer } from "@wirecat/cli-
|
|
6
|
+
import { CliError, createRenderer } from "@wirecat/cli-base";
|
|
7
7
|
import { InvalidArgumentError } from "commander";
|
|
8
8
|
import { loadConfig, updateConfig } from "../config.js";
|
|
9
9
|
export const DEFAULT_EVERY = "5m";
|
package/dist/run/import.d.ts
CHANGED
package/dist/run/import.js
CHANGED
package/dist/run/lock.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { join } from "node:path";
|
|
2
|
-
import { CliError, resolvePaths } from "@wirecat/cli-
|
|
2
|
+
import { CliError, resolvePaths } from "@wirecat/cli-base";
|
|
3
3
|
import { releaseLock, takeLock } from "@wirecat/cli-messaging/background";
|
|
4
4
|
/** Runs one import at a time: `memo import`, the timer and `memo mail <account> import` share this lock. */
|
|
5
5
|
export const withImportLock = async (env, work) => {
|
package/dist/search/command.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type Streams } from "@wirecat/cli-
|
|
1
|
+
import { type Streams } from "@wirecat/cli-base";
|
|
2
|
+
import { type SearchedResource, type SearchFound } from "@wirecat/cli-messaging/services";
|
|
2
3
|
import type { AccountKey, MessageStore } from "@wirecat/cli-messaging/store";
|
|
3
4
|
import { type Command } from "commander";
|
|
4
5
|
import { type AccountScope } from "../store/scope.js";
|
|
@@ -34,5 +35,43 @@ export declare const searchAccounts: (store: MessageStore, options: AccountScope
|
|
|
34
35
|
keys: AccountKey[];
|
|
35
36
|
notes: boolean;
|
|
36
37
|
}>;
|
|
38
|
+
export type Level = "brief" | "full";
|
|
39
|
+
/**
|
|
40
|
+
* A found message or email for a reader: its reference first, then when and from whom, who else it went to and
|
|
41
|
+
* where it is filed, its subject or chat, and an excerpt — the whole text only with --full.
|
|
42
|
+
*/
|
|
43
|
+
export declare const found: (item: SearchFound["items"][number], level: Level | undefined) => string;
|
|
44
|
+
export interface QueryInput {
|
|
45
|
+
text: string;
|
|
46
|
+
limit: number;
|
|
47
|
+
exact?: boolean;
|
|
48
|
+
timezone?: string;
|
|
49
|
+
}
|
|
50
|
+
/** Messages, mail and notes ranked together, with the open tasks that point at a hit. */
|
|
51
|
+
export declare const searchEverywhere: (store: MessageStore, env: NodeJS.ProcessEnv, { text, limit, only, exact, timezone }: QueryInput & {
|
|
52
|
+
only?: SearchedResource[];
|
|
53
|
+
}) => Promise<{
|
|
54
|
+
query: string;
|
|
55
|
+
items: import("@wirecat/cli-messaging/services").SearchAllItem[];
|
|
56
|
+
hasMore: boolean;
|
|
57
|
+
nextOffset?: number;
|
|
58
|
+
searched: SearchedResource[];
|
|
59
|
+
skipped: {
|
|
60
|
+
resource: SearchedResource;
|
|
61
|
+
reason: string;
|
|
62
|
+
}[];
|
|
63
|
+
notes?: {
|
|
64
|
+
by: "words" | "words and meaning";
|
|
65
|
+
meaningSkipped?: string;
|
|
66
|
+
};
|
|
67
|
+
server?: import("@wirecat/cli-messaging/services").ServerSearched;
|
|
68
|
+
tasks: import("@wirecat/cli-messaging/services").TaskView[];
|
|
69
|
+
tasksIncomplete: boolean;
|
|
70
|
+
}>;
|
|
71
|
+
/** One kind with all its fields: messenger messages from every messenger, or imported mail. */
|
|
72
|
+
export declare const searchKind: (store: MessageStore, kind: "messages" | "mail", { text, limit, type, account, exact, timezone }: QueryInput & {
|
|
73
|
+
type?: "text" | "voice" | "file";
|
|
74
|
+
account?: string;
|
|
75
|
+
}) => Promise<SearchFound>;
|
|
37
76
|
export declare const searchCommand: (program: Command, streams: Streams, env: NodeJS.ProcessEnv) => void;
|
|
38
77
|
//# sourceMappingURL=command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/search/command.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/search/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAKjB,MAAM,iCAAiC,CAAA;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAQ,MAAM,8BAA8B,CAAA;AAElF,OAAO,EAAE,KAAK,OAAO,EAAwB,MAAM,WAAW,CAAA;AAM9D,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,mBAAmB,CAAA;AAGpE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;IAC3C,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,kBAAkB,GAAG,WAAW,GAAG,aAAa,CAAA;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAID,eAAO,MAAM,aAAa,UACjB,YAAY,SACZ,MAAM,WACJ;IAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,KACnG,OAAO,CAAC;IACT,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,UAAU,EAAE,CAAA;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB,CAyHA,CAAA;AAED,+FAA+F;AAC/F,eAAO,MAAM,cAAc,UAClB,YAAY,WACV,YAAY,GAAG;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,KACxC,OAAO,CAAC;IAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAMhD,CAAA;AAgCD,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;AASpC;;;GAGG;AACH,eAAO,MAAM,KAAK,SAAU,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,KAAK,GAAG,SAAS,KAAG,MAqBpF,CAAA;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,yFAAyF;AACzF,eAAO,MAAM,gBAAgB,UACpB,YAAY,OACd,MAAM,CAAC,UAAU,0CACkB,UAAU,GAAG;IAAE,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAAE;;;;;;;;;;;;;;;;;EA2BnF,CAAA;AAED,+FAA+F;AAC/F,eAAO,MAAM,UAAU,UACd,YAAY,QACb,UAAU,GAAG,MAAM,mDACwB,UAAU,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,yBA6BrH,CAAA;AAED,eAAO,MAAM,aAAa,YAAa,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,SA0JvF,CAAA"}
|
package/dist/search/command.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CliError
|
|
2
|
-
import { parseLocator } from "@wirecat/cli-messaging";
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
|
+
import { parseLocator, resolveOutput } from "@wirecat/cli-messaging";
|
|
3
3
|
import { parseLucene, searchAll, searchNotes, searchNotesQuery, searchStore, } from "@wirecat/cli-messaging/services";
|
|
4
4
|
import { openStore } from "@wirecat/cli-messaging/store";
|
|
5
5
|
import { InvalidArgumentError } from "commander";
|
|
@@ -10,6 +10,7 @@ import { positive } from "../options.js";
|
|
|
10
10
|
import { SAVE_HELP } from "../save-help.js";
|
|
11
11
|
import { selectAccount } from "../store/scope.js";
|
|
12
12
|
import { taskPage } from "../tasks/context.js";
|
|
13
|
+
const CHATS_CHECKED = 500;
|
|
13
14
|
export const unifiedSearch = async (store, query, options) => {
|
|
14
15
|
const limit = options.limit ?? 20, offset = options.offset ?? 0;
|
|
15
16
|
if (!Number.isInteger(limit) || limit < 1 || limit > 100 || !Number.isInteger(offset) || offset < 0 || offset > 1000)
|
|
@@ -94,11 +95,26 @@ export const unifiedSearch = async (store, query, options) => {
|
|
|
94
95
|
match: "task-source",
|
|
95
96
|
});
|
|
96
97
|
}
|
|
97
|
-
|
|
98
|
-
...key,
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
if (key.provider === "email")
|
|
99
|
+
coverage.push({ ...key, mail: (await store.syncState(key, "mail_coverage"))?.value ?? null });
|
|
100
|
+
else {
|
|
101
|
+
// Counts, not one row per chat: an account of hundreds of chats made the rows most of an answer.
|
|
102
|
+
const chats = await store.chats(key, { limit: CHATS_CHECKED });
|
|
103
|
+
const archives = await store.chatCompleteness(key, chats.items.map((chat) => chat.id));
|
|
104
|
+
const count = (test) => archives.filter(test).length;
|
|
105
|
+
coverage.push({
|
|
106
|
+
...key,
|
|
107
|
+
chats: {
|
|
108
|
+
checked: archives.length,
|
|
109
|
+
more: chats.hasMore,
|
|
110
|
+
complete: count(({ state }) => state === "complete"),
|
|
111
|
+
partial: count(({ state }) => state === "partial"),
|
|
112
|
+
neverFetched: count(({ state }) => state === "unknown"),
|
|
113
|
+
behind: count(({ upToDate }) => upToDate === false),
|
|
114
|
+
withGaps: count(({ gaps }) => gaps),
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
}
|
|
102
118
|
}
|
|
103
119
|
items.sort((a, b) => b.timestamp.localeCompare(a.timestamp) || a.kind.localeCompare(b.kind) || a.locator.localeCompare(b.locator));
|
|
104
120
|
const unique = [...new Map(items.map((item) => [item.locator, item])).values()];
|
|
@@ -147,6 +163,80 @@ const searchFolderIds = async (store, env, selected) => {
|
|
|
147
163
|
const bound = paths.length ? await boundFolders(store, env, { only: paths }) : [];
|
|
148
164
|
return [...new Set([...selected.filter((value) => known.has(value)), ...bound.map(({ id }) => id)])];
|
|
149
165
|
};
|
|
166
|
+
const levelOf = ({ brief, full }) => {
|
|
167
|
+
if (brief && full)
|
|
168
|
+
throw new CliError("validation_error", "--brief and --full ask for opposite things — pick one");
|
|
169
|
+
return brief ? "brief" : full ? "full" : undefined;
|
|
170
|
+
};
|
|
171
|
+
const line = (text) => text.replace(/\s+/g, " ").trim();
|
|
172
|
+
/**
|
|
173
|
+
* A found message or email for a reader: its reference first, then when and from whom, who else it went to and
|
|
174
|
+
* where it is filed, its subject or chat, and an excerpt — the whole text only with --full.
|
|
175
|
+
*/
|
|
176
|
+
export const found = (item, level) => {
|
|
177
|
+
const mail = item.email;
|
|
178
|
+
const names = (people) => people.map(({ name, address }) => line(name ?? address)).join(", ");
|
|
179
|
+
const between = mail
|
|
180
|
+
? [
|
|
181
|
+
mail.to.length ? `to ${names(mail.to)}` : "",
|
|
182
|
+
mail.cc.length ? `cc ${names(mail.cc)}` : "",
|
|
183
|
+
mail.labels.join(", "),
|
|
184
|
+
]
|
|
185
|
+
.filter(Boolean)
|
|
186
|
+
.join(" · ")
|
|
187
|
+
: "";
|
|
188
|
+
const who = line(item.senderName ?? item.senderId ?? "unknown");
|
|
189
|
+
const lines = [
|
|
190
|
+
item.locator,
|
|
191
|
+
` ${item.timestamp} ${who}${level === "brief" || !between ? "" : ` ${between}`}`,
|
|
192
|
+
...(level === "brief" || !item.chatTitle ? [] : [` ${line(item.chatTitle)}`]),
|
|
193
|
+
` ${level === "full" ? item.text.replace(/\n/g, "\n ") : line(item.excerpt ?? item.text)}`,
|
|
194
|
+
];
|
|
195
|
+
return lines.join("\n");
|
|
196
|
+
};
|
|
197
|
+
/** Messages, mail and notes ranked together, with the open tasks that point at a hit. */
|
|
198
|
+
export const searchEverywhere = async (store, env, { text, limit, only, exact, timezone }) => {
|
|
199
|
+
const accounts = await store.accounts();
|
|
200
|
+
const key = accounts.find(({ provider }) => provider !== "notes") ?? { provider: "notes", account: "internal" };
|
|
201
|
+
const found = await searchAll(store, key, {
|
|
202
|
+
text,
|
|
203
|
+
limit,
|
|
204
|
+
env,
|
|
205
|
+
...(only === undefined ? {} : { only }),
|
|
206
|
+
...(exact ? { exact: true } : {}),
|
|
207
|
+
...(timezone === undefined ? {} : { timezone }),
|
|
208
|
+
},
|
|
209
|
+
// The shared search names this command only in the model hint, and the model comes from tg.
|
|
210
|
+
{ app: { ...APP, command: "tg" } });
|
|
211
|
+
const tasks = [];
|
|
212
|
+
let tasksIncomplete = false;
|
|
213
|
+
const sources = found.items.map((item) => item.ref);
|
|
214
|
+
for (const account of accounts) {
|
|
215
|
+
const page = await taskPage(store, account, { state: "open", sources, limit: Math.min(limit, 500) });
|
|
216
|
+
tasks.push(...page.items);
|
|
217
|
+
tasksIncomplete ||= page.hasMore;
|
|
218
|
+
}
|
|
219
|
+
return { ...found, tasks: tasks.slice(0, limit), tasksIncomplete: tasksIncomplete || tasks.length > limit };
|
|
220
|
+
};
|
|
221
|
+
/** One kind with all its fields: messenger messages from every messenger, or imported mail. */
|
|
222
|
+
export const searchKind = async (store, kind, { text, limit, type, account, exact, timezone }) => {
|
|
223
|
+
const [runsAs] = (await store.accounts()).filter(({ provider }) => provider !== "notes" && (kind === "mail" ? provider === "email" : provider !== "email"));
|
|
224
|
+
if (runsAs === undefined)
|
|
225
|
+
throw new CliError("not_found", kind === "mail" ? "no imported mail; run memo mail <account> import" : "no stored messenger messages");
|
|
226
|
+
// The store needs an account to run as; the kind, the query and the mail account choose what it reads.
|
|
227
|
+
return searchStore(store, runsAs, {
|
|
228
|
+
text: type === undefined
|
|
229
|
+
? text
|
|
230
|
+
: `(${text}) AND ${{ text: "NOT has:attachment", voice: "has:voice", file: "has:file" }[type]}`,
|
|
231
|
+
language: "lucene",
|
|
232
|
+
kind,
|
|
233
|
+
...(kind === "messages" && !hasSource(parseLucene(text).root) ? { source: "all" } : {}),
|
|
234
|
+
limit,
|
|
235
|
+
...(account === undefined ? {} : { mailAccount: account }),
|
|
236
|
+
...(exact ? { exact: true } : {}),
|
|
237
|
+
...(timezone === undefined ? {} : { timezone }),
|
|
238
|
+
}, { app: APP });
|
|
239
|
+
};
|
|
150
240
|
export const searchCommand = (program, streams, env) => {
|
|
151
241
|
const group = program
|
|
152
242
|
.command("search")
|
|
@@ -160,9 +250,9 @@ export const searchCommand = (program, streams, env) => {
|
|
|
160
250
|
await store.close();
|
|
161
251
|
}
|
|
162
252
|
};
|
|
163
|
-
const print = (json, answer, text) => {
|
|
253
|
+
const print = (json, answer, text, level) => {
|
|
164
254
|
if (json)
|
|
165
|
-
|
|
255
|
+
resolveOutput({ json: true, streams, ...(level === undefined ? {} : { hitDetail: level }) }).renderer.result(answer);
|
|
166
256
|
else
|
|
167
257
|
streams.data(`${text}\n`);
|
|
168
258
|
};
|
|
@@ -177,41 +267,22 @@ export const searchCommand = (program, streams, env) => {
|
|
|
177
267
|
}, 20)
|
|
178
268
|
.option("--exact", "words as written; skip meaning search")
|
|
179
269
|
.option("--timezone <zone>", "IANA timezone for calendar date boundaries")
|
|
180
|
-
.option("--json", "print JSON")
|
|
270
|
+
.option("--json", "print JSON")
|
|
271
|
+
.option("--brief", "each message or email as reference, time, sender and excerpt only")
|
|
272
|
+
.option("--full", "each message or email with its whole text and every field");
|
|
181
273
|
queryOptions(group
|
|
182
274
|
.command("all")
|
|
183
275
|
.description("Messages, mail and notes ranked together; not people, memories, projects or decisions. A kind you know " +
|
|
184
276
|
"reads better with its own search, with all its fields"))
|
|
185
277
|
.option("--only <resources>", "messages,mail,notes, separated by commas", onlyOf)
|
|
186
278
|
.action(async (words, options) => {
|
|
187
|
-
const answer = await withStore(
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
text: words.join(" "),
|
|
195
|
-
limit: options.limit,
|
|
196
|
-
env,
|
|
197
|
-
...(options.only === undefined ? {} : { only: options.only }),
|
|
198
|
-
...(options.exact ? { exact: true } : {}),
|
|
199
|
-
...(options.timezone === undefined ? {} : { timezone: options.timezone }),
|
|
200
|
-
}, { app: APP });
|
|
201
|
-
const tasks = [];
|
|
202
|
-
let tasksIncomplete = false;
|
|
203
|
-
const sources = found.items.map((item) => item.ref);
|
|
204
|
-
for (const account of accounts) {
|
|
205
|
-
const page = await taskPage(store, account, { state: "open", sources, limit: Math.min(options.limit, 500) });
|
|
206
|
-
tasks.push(...page.items);
|
|
207
|
-
tasksIncomplete ||= page.hasMore;
|
|
208
|
-
}
|
|
209
|
-
return {
|
|
210
|
-
...found,
|
|
211
|
-
tasks: tasks.slice(0, options.limit),
|
|
212
|
-
tasksIncomplete: tasksIncomplete || tasks.length > options.limit,
|
|
213
|
-
};
|
|
214
|
-
});
|
|
279
|
+
const answer = await withStore((store) => searchEverywhere(store, env, {
|
|
280
|
+
text: words.join(" "),
|
|
281
|
+
limit: options.limit,
|
|
282
|
+
...(options.only === undefined ? {} : { only: options.only }),
|
|
283
|
+
...(options.exact ? { exact: true } : {}),
|
|
284
|
+
...(options.timezone === undefined ? {} : { timezone: options.timezone }),
|
|
285
|
+
}));
|
|
215
286
|
if (!options.json) {
|
|
216
287
|
for (const skipped of answer.skipped)
|
|
217
288
|
streams.diagnostic(`${skipped.resource} not searched: ${skipped.reason}\n`);
|
|
@@ -230,27 +301,16 @@ export const searchCommand = (program, streams, env) => {
|
|
|
230
301
|
else
|
|
231
302
|
leaf.option("--account <address>", "only this mail account, by its address (default: every mail account)");
|
|
232
303
|
leaf.action(async (words, options) => {
|
|
233
|
-
const
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
kind,
|
|
244
|
-
...(kind === "messages" && !hasSource(parseLucene(words.join(" ")).root)
|
|
245
|
-
? { source: "all" }
|
|
246
|
-
: {}),
|
|
247
|
-
limit: options.limit,
|
|
248
|
-
...(options.account === undefined ? {} : { mailAccount: options.account }),
|
|
249
|
-
...(options.exact ? { exact: true } : {}),
|
|
250
|
-
...(options.timezone === undefined ? {} : { timezone: options.timezone }),
|
|
251
|
-
}, { app: APP });
|
|
252
|
-
});
|
|
253
|
-
print(options.json, answer, answer.items.map((item) => `${item.locator}\n ${item.text}`).join("\n"));
|
|
304
|
+
const level = levelOf(options);
|
|
305
|
+
const answer = await withStore((store) => searchKind(store, kind, {
|
|
306
|
+
text: words.join(" "),
|
|
307
|
+
limit: options.limit,
|
|
308
|
+
...(options.type === undefined ? {} : { type: options.type }),
|
|
309
|
+
...(options.account === undefined ? {} : { account: options.account }),
|
|
310
|
+
...(options.exact ? { exact: true } : {}),
|
|
311
|
+
...(options.timezone === undefined ? {} : { timezone: options.timezone }),
|
|
312
|
+
}));
|
|
313
|
+
print(options.json, answer, answer.items.map((item) => found(item, level)).join("\n"), level);
|
|
254
314
|
});
|
|
255
315
|
}
|
|
256
316
|
queryOptions(group.command("notes").description("Native notes by words and, with the local model, meaning"))
|
|
@@ -264,7 +324,7 @@ export const searchCommand = (program, streams, env) => {
|
|
|
264
324
|
limit: options.limit,
|
|
265
325
|
offset: options.offset,
|
|
266
326
|
env,
|
|
267
|
-
command: "
|
|
327
|
+
command: "tg",
|
|
268
328
|
...(options.type === undefined ? {} : { source: options.type }),
|
|
269
329
|
...(options.tag === undefined ? {} : { tag: options.tag }),
|
|
270
330
|
...(options.filter === undefined ? {} : { filter: options.filter }),
|