@wirecat/drive-cli 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/dist/api-contract.d.ts.map +1 -1
- package/dist/api-contract.js +4 -2
- package/dist/api-contract.js.map +1 -1
- package/dist/bin/drive.js +16 -20
- package/dist/bin/drive.js.map +1 -1
- package/dist/catalog-commands.d.ts +13 -0
- package/dist/catalog-commands.d.ts.map +1 -0
- package/dist/catalog-commands.js +111 -0
- package/dist/catalog-commands.js.map +1 -0
- package/dist/catalog.d.ts +43 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +107 -0
- package/dist/catalog.js.map +1 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -4
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +13 -5
- package/dist/errors.js.map +1 -1
- package/dist/extraction.d.ts +1 -1
- package/dist/extraction.d.ts.map +1 -1
- package/dist/extraction.js +9 -5
- package/dist/extraction.js.map +1 -1
- package/dist/failure.d.ts +65 -0
- package/dist/failure.d.ts.map +1 -0
- package/dist/failure.js +86 -0
- package/dist/failure.js.map +1 -0
- package/dist/google-api.d.ts.map +1 -1
- package/dist/google-api.js +3 -1
- package/dist/google-api.js.map +1 -1
- package/dist/google.d.ts +4 -0
- package/dist/google.d.ts.map +1 -1
- package/dist/google.js +23 -9
- package/dist/google.js.map +1 -1
- package/dist/knowledge-commands.d.ts.map +1 -1
- package/dist/knowledge-commands.js +9 -5
- package/dist/knowledge-commands.js.map +1 -1
- package/dist/knowledge.d.ts +1 -1
- package/dist/knowledge.d.ts.map +1 -1
- package/dist/knowledge.js +10 -4
- package/dist/knowledge.js.map +1 -1
- package/dist/login.d.ts +1 -1
- package/dist/login.d.ts.map +1 -1
- package/dist/login.js +11 -5
- package/dist/login.js.map +1 -1
- package/dist/mcp.d.ts +22 -4
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +7 -15
- package/dist/mcp.js.map +1 -1
- package/dist/model.d.ts +55 -0
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +16 -0
- package/dist/model.js.map +1 -1
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +6 -3
- package/dist/policy.js.map +1 -1
- package/dist/profile-lock.d.ts.map +1 -1
- package/dist/profile-lock.js +4 -2
- package/dist/profile-lock.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +90 -35
- package/dist/program.js.map +1 -1
- package/dist/registry.d.ts +4 -34
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +9 -14
- package/dist/registry.js.map +1 -1
- package/dist/remote-commands.d.ts.map +1 -1
- package/dist/remote-commands.js +9 -5
- package/dist/remote-commands.js.map +1 -1
- package/dist/scope.d.ts +3 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +15 -0
- package/dist/scope.js.map +1 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +17 -4
- package/dist/state.js.map +1 -1
- package/dist/store.d.ts +4 -2
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +90 -10
- package/dist/store.js.map +1 -1
- package/dist/sync.d.ts +6 -2
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +91 -44
- package/dist/sync.js.map +1 -1
- package/dist/tokens.d.ts.map +1 -1
- package/dist/tokens.js +8 -4
- package/dist/tokens.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -111,8 +111,9 @@ Search covers body text, nested tables and footnotes from all tabs. Images, head
|
|
|
111
111
|
comments and suggested edits are excluded. Image assets are not downloaded. Search text and Google’s native Markdown export are separate representations; inspect the export
|
|
112
112
|
when layout or tab coverage matters.
|
|
113
113
|
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
One sync reads at most 10,000 entries under the chosen folders, and at most 10,000 changes from
|
|
115
|
+
Google's change feed; past either, it stops with nothing lost and says what to do. Text caps at
|
|
116
|
+
200,000 characters and snapshots at 50 MiB, with bounded pagination. Oversized input is refused rather than truncated. Google's native export
|
|
116
117
|
also has its own 10 MB limit. Documents changing during export remain pending for retry.
|
|
117
118
|
|
|
118
119
|
## Development
|
|
@@ -167,7 +168,7 @@ isolated sources and mocked provider requests; see the [testing guide](docs/dev/
|
|
|
167
168
|
## Shared CLI conventions
|
|
168
169
|
|
|
169
170
|
Drive now uses MAX's API generation approach: committed Google Discovery snapshots feed a
|
|
170
|
-
provider adapter into cli-base's shared code generators. cli-
|
|
171
|
+
provider adapter into cli-base's shared code generators. cli-core builds the generated
|
|
171
172
|
commands and validates their input; Google's SDK remains the transport. `pnpm generate` rebuilds
|
|
172
173
|
types, validators, the operation manifest, coverage and [command reference](docs/commands.md).
|
|
173
174
|
`pnpm generate:check` checks freshness offline. Only `pnpm spec:sync` fetches a new public specification.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-contract.d.ts","sourceRoot":"","sources":["../src/api-contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;AAC9B,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,
|
|
1
|
+
{"version":3,"file":"api-contract.d.ts","sourceRoot":"","sources":["../src/api-contract.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;AAC9B,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,iBAO1C,CAAA;AACD,eAAO,MAAM,eAAe,SAAU,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SA6B5G,CAAA"}
|
package/dist/api-contract.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { CliError } from "@wirecat/cli-base";
|
|
2
|
-
import { apiJson, checkApiBody, checkApiParameter } from "@wirecat/cli-
|
|
2
|
+
import { apiJson, checkApiBody, checkApiParameter } from "@wirecat/cli-core/cli";
|
|
3
3
|
import { operations } from "./generated/manifest.js";
|
|
4
4
|
import { schemas } from "./generated/schemas.js";
|
|
5
5
|
export { operations, schemas };
|
|
6
6
|
export const operationOf = (name) => {
|
|
7
7
|
const operation = operations.find((item) => item.id === name);
|
|
8
8
|
if (!operation)
|
|
9
|
-
throw new CliError("validation_error", "unknown Google method; run drive api list"
|
|
9
|
+
throw new CliError("validation_error", "unknown Google method; run drive api list", {
|
|
10
|
+
reason: "api.unknown-method",
|
|
11
|
+
});
|
|
10
12
|
return operation;
|
|
11
13
|
};
|
|
12
14
|
export const validateRequest = (name, params, body) => {
|
package/dist/api-contract.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-contract.js","sourceRoot":"","sources":["../src/api-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE5C,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"api-contract.js","sourceRoot":"","sources":["../src/api-contract.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/drive.js
CHANGED
|
@@ -1,41 +1,37 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { execFile } from "node:child_process";
|
|
3
|
-
import { CliError,
|
|
3
|
+
import { CliError, catchCrashes, processStreams } from "@wirecat/cli-base";
|
|
4
4
|
import { CommanderError } from "commander";
|
|
5
|
+
import { interactiveOf, REASONS, reportFailure } from "../failure.js";
|
|
5
6
|
import { createProgram } from "../program.js";
|
|
7
|
+
const args = process.argv.slice(2);
|
|
8
|
+
const tty = process.stdout.isTTY === true;
|
|
9
|
+
const release = catchCrashes({ cli: "drive", interactive: interactiveOf(args, tty), reasons: REASONS });
|
|
6
10
|
const controller = new AbortController();
|
|
7
11
|
const cancelled = () => controller.abort();
|
|
8
12
|
process.once("SIGINT", cancelled);
|
|
9
13
|
process.once("SIGTERM", cancelled);
|
|
14
|
+
let program;
|
|
10
15
|
try {
|
|
11
|
-
|
|
16
|
+
program = createProgram({
|
|
12
17
|
signal: controller.signal,
|
|
13
18
|
openBrowser: (url) => new Promise((resolve, reject) => {
|
|
14
19
|
const command = process.platform === "darwin" ? "open" : process.platform === "win32" ? "rundll32.exe" : "xdg-open";
|
|
15
|
-
const
|
|
16
|
-
execFile(command,
|
|
20
|
+
const browserArgs = process.platform === "win32" ? ["url.dll,FileProtocolHandler", url] : [url];
|
|
21
|
+
execFile(command, browserArgs, { timeout: 10000, windowsHide: true }, (error) => error ? reject(new CliError("configuration_error", "open the printed Google sign-in URL")) : resolve());
|
|
17
22
|
}),
|
|
18
|
-
})
|
|
23
|
+
});
|
|
24
|
+
await program.parseAsync(process.argv);
|
|
19
25
|
}
|
|
20
26
|
catch (error) {
|
|
21
|
-
if (error instanceof CommanderError)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
process.stderr.write(`${JSON.stringify({ error: { code: "validation_error", message: "invalid command arguments; use drive --help" } })}\n`);
|
|
26
|
-
process.exitCode = exitCodeFor("validation_error");
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
const safe = isCliError(error)
|
|
31
|
-
? error
|
|
32
|
-
: new CliError("provider_error", "operation failed; credential and provider details were not logged");
|
|
33
|
-
process.stderr.write(`${JSON.stringify({ error: { code: safe.code, message: safe.message, ...safe.details } })}\n`);
|
|
34
|
-
process.exitCode = exitCodeFor(safe.code);
|
|
35
|
-
}
|
|
27
|
+
if (error instanceof CommanderError && error.exitCode === 0)
|
|
28
|
+
process.exitCode = 0;
|
|
29
|
+
else
|
|
30
|
+
process.exitCode = reportFailure(error, { args, program, streams: processStreams, tty });
|
|
36
31
|
}
|
|
37
32
|
finally {
|
|
38
33
|
process.removeListener("SIGINT", cancelled);
|
|
39
34
|
process.removeListener("SIGTERM", cancelled);
|
|
35
|
+
release();
|
|
40
36
|
}
|
|
41
37
|
//# sourceMappingURL=drive.js.map
|
package/dist/bin/drive.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/bin/drive.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/bin/drive.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAgB,cAAc,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAClC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAA;AACzC,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;AACvG,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;AACxC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;AAC1C,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;AAClC,IAAI,OAA4B,CAAA;AAChC,IAAI,CAAC;IACH,OAAO,GAAG,aAAa,CAAC;QACtB,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CACnB,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpC,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU,CAAA;YACrG,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;YAC/F,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAC9E,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,qBAAqB,EAAE,qCAAqC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CACvG,CAAA;QACH,CAAC,CAAC;KACL,CAAC,CAAA;IACF,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AACxC,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,IAAI,KAAK,YAAY,cAAc,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;;QAC5E,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAA;AAC/F,CAAC;QAAS,CAAC;IACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAC3C,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAC5C,OAAO,EAAE,CAAA;AACX,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Command } from "commander";
|
|
2
|
+
import type { DocumentIndex } from "./model.js";
|
|
3
|
+
interface Helpers {
|
|
4
|
+
env: NodeJS.ProcessEnv;
|
|
5
|
+
selected(): string;
|
|
6
|
+
output(value: unknown): void;
|
|
7
|
+
positive(input: string): number;
|
|
8
|
+
offset(input: string): number;
|
|
9
|
+
withIndex<T>(fn: (index: DocumentIndex) => Promise<T>): Promise<T>;
|
|
10
|
+
}
|
|
11
|
+
export declare const installCatalogCommands: (program: Command, helpers: Helpers) => void;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=catalog-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-commands.d.ts","sourceRoot":"","sources":["../src/catalog-commands.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAK/C,UAAU,OAAO;IACf,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,QAAQ,IAAI,MAAM,CAAA;IAClB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IAC/B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IAC7B,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;CACnE;AACD,eAAO,MAAM,sBAAsB,YAAa,OAAO,WAAW,OAAO,SA0IxE,CAAA"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
|
+
import { annotate } from "@wirecat/cli-base/commands";
|
|
3
|
+
import { parseLucene, validateQuery } from "@wirecat/cli-base/query";
|
|
4
|
+
import { CATALOG_QUERY } from "@wirecat/cli-core/store";
|
|
5
|
+
import { catalogFiles, catalogOutput, catalogTree } from "./catalog.js";
|
|
6
|
+
import { activeProfile, fileId } from "./config.js";
|
|
7
|
+
import { lockProfile } from "./profile-lock.js";
|
|
8
|
+
import { examples } from "./registry.js";
|
|
9
|
+
import { readState } from "./state.js";
|
|
10
|
+
export const installCatalogCommands = (program, helpers) => {
|
|
11
|
+
const { env, selected, output, positive, offset, withIndex } = helpers;
|
|
12
|
+
const catalog = program.command("catalog").description("browse stored Drive files and folders offline");
|
|
13
|
+
const run = async (fn, write = false) => {
|
|
14
|
+
const profile = activeProfile(env, selected());
|
|
15
|
+
const lock = write ? await lockProfile(env, selected()) : undefined;
|
|
16
|
+
try {
|
|
17
|
+
return await withIndex(async (index) => {
|
|
18
|
+
if (!index.catalog)
|
|
19
|
+
throw new CliError("configuration_error", "index has no shared catalog adapter", {
|
|
20
|
+
reason: "catalog.unavailable",
|
|
21
|
+
});
|
|
22
|
+
lock?.assertHeld();
|
|
23
|
+
const value = await fn({ ...index, catalog: index.catalog }, profile.principal);
|
|
24
|
+
lock?.assertHeld();
|
|
25
|
+
return value;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
finally {
|
|
29
|
+
await lock?.release();
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const entry = async (index, principal, id) => {
|
|
33
|
+
const found = await index.catalog?.get(principal, fileId(id));
|
|
34
|
+
if (!found)
|
|
35
|
+
throw new CliError("not_found", "file or folder is not in the active local catalog; run catalog import or sync", {
|
|
36
|
+
reason: "catalog.not-found",
|
|
37
|
+
});
|
|
38
|
+
return found;
|
|
39
|
+
};
|
|
40
|
+
const local = (command, mutates = false) => {
|
|
41
|
+
annotate(command, { local: true, mutates });
|
|
42
|
+
return command;
|
|
43
|
+
};
|
|
44
|
+
examples(local(catalog.command("import").description("put cached file and folder metadata into the shared database"), true), ["drive personal catalog import --offline"]).action(async () => output(await run(async (index, principal) => {
|
|
45
|
+
const state = readState(env, selected(), principal);
|
|
46
|
+
return index.catalog.import(principal, catalogFiles(state, activeProfile(env, selected()).roots));
|
|
47
|
+
}, true)));
|
|
48
|
+
examples(local(catalog.command("show").description("show stored metadata and the stable file or folder reference")), [
|
|
49
|
+
"drive personal catalog show FILE_ID --offline",
|
|
50
|
+
])
|
|
51
|
+
.argument("<file>", "Google file or folder id, or its Drive URL")
|
|
52
|
+
.action(async (id) => output(await run(async (index, principal) => catalogOutput(await entry(index, principal, id)))));
|
|
53
|
+
const list = async (words, args, search) => {
|
|
54
|
+
const ast = words.length
|
|
55
|
+
? validateQuery(parseLucene(words.join(" "), { defaultField: search ? "text" : "none" }), CATALOG_QUERY)
|
|
56
|
+
: undefined;
|
|
57
|
+
output(await run(async (index, principal) => {
|
|
58
|
+
const result = await index.catalog.list(principal, {
|
|
59
|
+
ast,
|
|
60
|
+
limit: args.limit,
|
|
61
|
+
offset: (args.page - 1) * args.limit,
|
|
62
|
+
});
|
|
63
|
+
return { items: result.items.map(catalogOutput), has_more: result.hasMore };
|
|
64
|
+
}));
|
|
65
|
+
};
|
|
66
|
+
for (const action of ["list", "search"]) {
|
|
67
|
+
const command = examples(local(catalog
|
|
68
|
+
.command(action)
|
|
69
|
+
.description(action === "list"
|
|
70
|
+
? "list cached files and folders using metadata queries"
|
|
71
|
+
: "search cached names, descriptions, types and observed people")), [
|
|
72
|
+
action === "list"
|
|
73
|
+
? 'drive personal catalog list "parent:FOLDER_ID AND kind:file" --offline'
|
|
74
|
+
: 'drive personal catalog search "budget AND person:Rin*" --offline',
|
|
75
|
+
])
|
|
76
|
+
.argument(action === "list" ? "[query...]" : "<query...>", "metadata query: kind, mime, name, parent, person, tag; AND, OR, NOT")
|
|
77
|
+
.option("--limit <n>", "how many entries to return (at most 1000)", positive, 50)
|
|
78
|
+
.option("--page <n>", "which page to return", positive, 1)
|
|
79
|
+
.action(async (words, args) => list(words, args, action === "search"));
|
|
80
|
+
annotate(command, { query: CATALOG_QUERY, output: { entity: "document" } });
|
|
81
|
+
}
|
|
82
|
+
examples(local(catalog.command("tree").description("show the cached hierarchy below a folder or all selected roots")), ["drive personal catalog tree --offline", "drive personal catalog tree FOLDER_ID --depth 3 --offline"])
|
|
83
|
+
.argument("[folder]", "Google folder id or URL; defaults to the explicitly selected profile's roots")
|
|
84
|
+
.option("--depth <n>", "maximum descendant depth, from 0 to 50", offset, 5)
|
|
85
|
+
.action(async (id, args) => output(await run(async (index, principal) => {
|
|
86
|
+
const items = [];
|
|
87
|
+
for (let skip = 0; skip < 10000; skip += 1000) {
|
|
88
|
+
const page = await index.catalog.list(principal, { limit: 1000, offset: skip });
|
|
89
|
+
items.push(...page.items);
|
|
90
|
+
if (!page.hasMore)
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
const roots = id ? [fileId(id)] : activeProfile(env, selected()).roots;
|
|
94
|
+
return {
|
|
95
|
+
items: catalogTree(items, roots.map((root) => `${root}.md`), args.depth),
|
|
96
|
+
};
|
|
97
|
+
})));
|
|
98
|
+
const tags = catalog.command("tags").description("add owner tags to cached files or folders");
|
|
99
|
+
for (const action of ["list", "add", "remove"]) {
|
|
100
|
+
const command = examples(local(tags.command(action).description(`${action} local tags on a cached file or folder`), action !== "list"), [`drive personal catalog tags ${action} FOLDER_ID${action === "list" ? "" : " project"} --offline`]).argument("<file>", "Google file or folder id, or its Drive URL");
|
|
101
|
+
if (action !== "list")
|
|
102
|
+
command.argument("<tags...>", "local tag names");
|
|
103
|
+
command.action(async (id, values) => output(await run(async (index, principal) => {
|
|
104
|
+
const found = await entry(index, principal, id);
|
|
105
|
+
if (!index.knowledge)
|
|
106
|
+
throw new CliError("configuration_error", "index has no shared knowledge adapter");
|
|
107
|
+
return index.knowledge.tags(principal, found.ref, action, action === "list" ? undefined : values);
|
|
108
|
+
}, action !== "list")));
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=catalog-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-commands.js","sourceRoot":"","sources":["../src/catalog-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { CatalogEntry, CatalogInput, CatalogQuery } from "@wirecat/cli-core/store";
|
|
2
|
+
import { type FileMetadata, type SyncState } from "./model.js";
|
|
3
|
+
export declare const catalogInput: (file: FileMetadata) => CatalogInput;
|
|
4
|
+
export interface SourceCatalog {
|
|
5
|
+
import(principal: string, files: FileMetadata[]): Promise<{
|
|
6
|
+
entries: number;
|
|
7
|
+
retired: number;
|
|
8
|
+
}>;
|
|
9
|
+
get(principal: string, id: string): Promise<CatalogEntry | undefined>;
|
|
10
|
+
list(principal: string, query?: CatalogQuery): Promise<{
|
|
11
|
+
items: CatalogEntry[];
|
|
12
|
+
hasMore: boolean;
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
export declare const catalogFiles: (state: SyncState, roots: string[]) => FileMetadata[];
|
|
16
|
+
export interface CatalogTree {
|
|
17
|
+
item: Pick<CatalogEntry, "ref" | "name" | "kind" | "url" | "content"> & {
|
|
18
|
+
id: string;
|
|
19
|
+
};
|
|
20
|
+
children: CatalogTree[];
|
|
21
|
+
truncated: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare const catalogTree: (entries: CatalogEntry[], roots: string[], depth: number) => CatalogTree[];
|
|
24
|
+
export declare const catalogId: (entry: CatalogEntry) => string;
|
|
25
|
+
export declare const catalogOutput: (entry: CatalogEntry) => {
|
|
26
|
+
id: string;
|
|
27
|
+
ref: string;
|
|
28
|
+
kind: "file" | "folder";
|
|
29
|
+
name: string;
|
|
30
|
+
parents: string[];
|
|
31
|
+
url: string | undefined;
|
|
32
|
+
mime: string | undefined;
|
|
33
|
+
size: number | undefined;
|
|
34
|
+
created_at: string | undefined;
|
|
35
|
+
modified_at: string | undefined;
|
|
36
|
+
observed_at: string;
|
|
37
|
+
description: string | undefined;
|
|
38
|
+
actors: import("@wirecat/cli-core/store").CatalogActor[] | undefined;
|
|
39
|
+
provider_metadata: unknown;
|
|
40
|
+
active: boolean;
|
|
41
|
+
content: "indexed" | "metadata" | "unreadable";
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACvF,OAAO,EAAE,KAAK,YAAY,EAAU,KAAK,SAAS,EAAE,MAAM,YAAY,CAAA;AAGtE,eAAO,MAAM,YAAY,SAAU,YAAY,KAAG,YAwBhD,CAAA;AACF,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC/F,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAAA;IACrE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CACpG;AACD,eAAO,MAAM,YAAY,UAAW,SAAS,SAAS,MAAM,EAAE,KAAG,YAAY,EAY5E,CAAA;AACD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IACtF,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,SAAS,EAAE,OAAO,CAAA;CACnB;AACD,eAAO,MAAM,WAAW,YAAa,YAAY,EAAE,SAAS,MAAM,EAAE,SAAS,MAAM,KAAG,WAAW,EA0ChG,CAAA;AACD,eAAO,MAAM,SAAS,UAAW,YAAY,KAAG,MAA+C,CAAA;AAC/F,eAAO,MAAM,aAAa,UAAW,YAAY;IAC/C,EAAE;IACF,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,OAAO;IACP,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,UAAU;IACV,WAAW;IACX,WAAW;IACX,WAAW;IACX,MAAM;IACN,iBAAiB;IACjB,MAAM;IACN,OAAO;CACP,CAAA"}
|
package/dist/catalog.js
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { CliError } from "@wirecat/cli-base";
|
|
2
|
+
import { FOLDER } from "./model.js";
|
|
3
|
+
import { within } from "./scope.js";
|
|
4
|
+
export const catalogInput = (file) => ({
|
|
5
|
+
externalId: `${file.id}.md`,
|
|
6
|
+
kind: file.mime === FOLDER ? "folder" : "file",
|
|
7
|
+
name: file.name,
|
|
8
|
+
parents: file.parents.map((id) => `${id}.md`),
|
|
9
|
+
url: file.url,
|
|
10
|
+
mime: file.mime,
|
|
11
|
+
size: file.size,
|
|
12
|
+
createdAt: file.createdAt,
|
|
13
|
+
modifiedAt: file.modifiedAt,
|
|
14
|
+
description: file.description,
|
|
15
|
+
actors: [
|
|
16
|
+
...(file.owners ?? []).map((actor) => ({ ...actor, role: "owner" })),
|
|
17
|
+
...(file.lastModifiedBy ? [{ ...file.lastModifiedBy, role: "editor" }] : []),
|
|
18
|
+
],
|
|
19
|
+
metadata: file.providerMetadata ?? file,
|
|
20
|
+
frontMatter: {
|
|
21
|
+
source: "google-drive",
|
|
22
|
+
sourceUrl: file.url,
|
|
23
|
+
fileId: file.id,
|
|
24
|
+
mime: file.mime,
|
|
25
|
+
owners: file.owners ?? [],
|
|
26
|
+
lastModifiedBy: file.lastModifiedBy ?? null,
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
export const catalogFiles = (state, roots) => {
|
|
30
|
+
const folders = state.pending?.folders ?? state.folders;
|
|
31
|
+
const files = new Map(Object.values(state.documents).map((doc) => [doc.metadata.id, doc.metadata]));
|
|
32
|
+
for (const skip of state.skipped)
|
|
33
|
+
if (skip.file)
|
|
34
|
+
files.set(skip.id, skip.file);
|
|
35
|
+
for (const file of Object.values(folders))
|
|
36
|
+
files.set(file.id, file);
|
|
37
|
+
for (const job of state.pending?.jobs ?? []) {
|
|
38
|
+
if (job.kind === "remove")
|
|
39
|
+
files.delete(job.id);
|
|
40
|
+
else if (job.file)
|
|
41
|
+
files.set(job.id, job.file);
|
|
42
|
+
}
|
|
43
|
+
return [...files.values()].filter((file) => within(file, roots, folders));
|
|
44
|
+
};
|
|
45
|
+
export const catalogTree = (entries, roots, depth) => {
|
|
46
|
+
if (!Number.isSafeInteger(depth) || depth < 0 || depth > 50)
|
|
47
|
+
throw new CliError("validation_error", "tree depth must be between 0 and 50", { reason: "catalog.depth-invalid" });
|
|
48
|
+
const byId = new Map(entries.map((entry) => [entry.externalId, entry]));
|
|
49
|
+
const children = new Map();
|
|
50
|
+
for (const entry of entries)
|
|
51
|
+
for (const parent of entry.parents) {
|
|
52
|
+
const list = children.get(parent) ?? [];
|
|
53
|
+
list.push(entry);
|
|
54
|
+
children.set(parent, list);
|
|
55
|
+
}
|
|
56
|
+
let count = 0;
|
|
57
|
+
const node = (item, level, ancestors) => {
|
|
58
|
+
if (ancestors.has(item.externalId))
|
|
59
|
+
throw new CliError("invalid_response", "local folder ancestry contains a cycle", { reason: "catalog.cycle" });
|
|
60
|
+
if (++count > 10000)
|
|
61
|
+
throw new CliError("validation_error", "tree output exceeds 10000 nodes; choose a smaller folder", {
|
|
62
|
+
reason: "catalog.tree-limit",
|
|
63
|
+
});
|
|
64
|
+
const found = children.get(item.externalId) ?? [];
|
|
65
|
+
const next = new Set([...ancestors, item.externalId]);
|
|
66
|
+
return {
|
|
67
|
+
item: {
|
|
68
|
+
id: catalogId(item),
|
|
69
|
+
ref: item.ref,
|
|
70
|
+
name: item.name,
|
|
71
|
+
kind: item.kind,
|
|
72
|
+
url: item.url,
|
|
73
|
+
content: item.content,
|
|
74
|
+
},
|
|
75
|
+
children: level >= depth ? [] : found.map((child) => node(child, level + 1, next)),
|
|
76
|
+
truncated: level >= depth && found.length > 0,
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
return roots.map((id) => {
|
|
80
|
+
const entry = byId.get(id);
|
|
81
|
+
if (entry?.kind !== "folder")
|
|
82
|
+
throw new CliError("not_found", "folder is not in the active local catalog; run catalog import or sync", {
|
|
83
|
+
reason: "catalog.not-found",
|
|
84
|
+
});
|
|
85
|
+
return node(entry, 0, new Set());
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
export const catalogId = (entry) => entry.externalId.replace(/\.md$/, "");
|
|
89
|
+
export const catalogOutput = (entry) => ({
|
|
90
|
+
id: catalogId(entry),
|
|
91
|
+
ref: entry.ref,
|
|
92
|
+
kind: entry.kind,
|
|
93
|
+
name: entry.name,
|
|
94
|
+
parents: entry.parents.map((id) => id.replace(/\.md$/, "")),
|
|
95
|
+
url: entry.url,
|
|
96
|
+
mime: entry.mime,
|
|
97
|
+
size: entry.size,
|
|
98
|
+
created_at: entry.createdAt,
|
|
99
|
+
modified_at: entry.modifiedAt,
|
|
100
|
+
observed_at: entry.observedAt,
|
|
101
|
+
description: entry.description,
|
|
102
|
+
actors: entry.actors,
|
|
103
|
+
provider_metadata: entry.metadata,
|
|
104
|
+
active: entry.active,
|
|
105
|
+
content: entry.content,
|
|
106
|
+
});
|
|
107
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export declare const ConfigSchema: v.StrictObjectSchema<{
|
|
|
19
19
|
readonly principal: v.StringSchema<undefined>;
|
|
20
20
|
readonly roots: v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>]>, undefined>;
|
|
21
21
|
readonly storage: v.PicklistSchema<["keyring", "file"], undefined>;
|
|
22
|
+
readonly pictureSearch: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
22
23
|
}, undefined>, undefined>;
|
|
23
24
|
readonly defaults: v.OptionalSchema<v.StrictObjectSchema<{
|
|
24
25
|
embeddingProvider: v.OptionalSchema<v.PicklistSchema<["local", "openai"], undefined>, undefined>;
|
|
@@ -68,6 +69,7 @@ export declare const activeProfile: (env: NodeJS.ProcessEnv, name: string) => {
|
|
|
68
69
|
principal: string;
|
|
69
70
|
roots: string[];
|
|
70
71
|
storage: "file" | "keyring";
|
|
72
|
+
pictureSearch?: boolean | undefined;
|
|
71
73
|
};
|
|
72
74
|
export interface OAuthApplication {
|
|
73
75
|
clientId: string;
|
|
@@ -75,5 +77,6 @@ export interface OAuthApplication {
|
|
|
75
77
|
}
|
|
76
78
|
export declare const checkTextLimit: (value: unknown) => number;
|
|
77
79
|
export declare const textLimit: (env: NodeJS.ProcessEnv, name: string) => number;
|
|
80
|
+
export declare const pictureSearch: (env: NodeJS.ProcessEnv, name: string) => boolean;
|
|
78
81
|
export declare const application: (env: NodeJS.ProcessEnv, file?: string) => OAuthApplication;
|
|
79
82
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAgB5B,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAIvB,CAAA;AACF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,YAAY,CAAC,CAAA;AACvD,eAAO,MAAM,KAAK,QAAS,MAAM,CAAC,UAAU,sCAAiE,CAAA;AAC7G,eAAO,MAAM,UAAU,QAAS,MAAM,CAAC,UAAU,KAAG,MAMnD,CAAA;AACD,eAAO,MAAM,WAAW,QAAS,MAAM,CAAC,UAAU,UAAU,MAAM,SAIjE,CAAA;AACD,eAAO,MAAM,WAAW,6BAAoB,CAAA;AAC5C,eAAO,MAAM,MAAM,UAAW,MAAM,KAAG,MAUtC,CAAA;AACD,eAAO,MAAM,aAAa,QAAS,MAAM,CAAC,UAAU,QAAQ,MAAM;;;;;;;;;;;;;;;;;;;;;;;;CAOjE,CAAA;AACD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AACD,eAAO,MAAM,cAAc,UAAW,OAAO,KAAG,MAS/C,CAAA;AACD,eAAO,MAAM,SAAS,QAAS,MAAM,CAAC,UAAU,QAAQ,MAAM,KAAG,MACkC,CAAA;AACnG,eAAO,MAAM,aAAa,QAAS,MAAM,CAAC,UAAU,QAAQ,MAAM,KAAG,OACpB,CAAA;AACjD,eAAO,MAAM,WAAW,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,gBA6BnE,CAAA"}
|
package/dist/config.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { CliError, loadConfigFile, resolvePaths, saveConfigFile } from "@wirecat/cli-base";
|
|
4
|
-
import { AI_ENTRIES, usableProfileName } from "@wirecat/cli-
|
|
5
|
-
import { MAX_TEXT_CHARS } from "@wirecat/cli-
|
|
6
|
-
import { LEVELS } from "@wirecat/cli-
|
|
4
|
+
import { AI_ENTRIES, usableProfileName } from "@wirecat/cli-core/cli";
|
|
5
|
+
import { MAX_TEXT_CHARS } from "@wirecat/cli-core/documents";
|
|
6
|
+
import { LEVELS } from "@wirecat/cli-core/sends";
|
|
7
7
|
import * as v from "valibot";
|
|
8
8
|
import { WIRECAT_APPLICATION } from "./oauth-application.js";
|
|
9
9
|
const Common = {
|
|
@@ -16,6 +16,7 @@ const Profile = v.strictObject({
|
|
|
16
16
|
principal: v.string(),
|
|
17
17
|
roots: v.array(v.pipe(v.string(), v.regex(/^[A-Za-z0-9_-]{1,200}$/))),
|
|
18
18
|
storage: v.picklist(["keyring", "file"]),
|
|
19
|
+
pictureSearch: v.optional(v.boolean()),
|
|
19
20
|
...Common,
|
|
20
21
|
});
|
|
21
22
|
export const ConfigSchema = v.strictObject({
|
|
@@ -54,7 +55,9 @@ export const fileId = (input) => {
|
|
|
54
55
|
export const activeProfile = (env, name) => {
|
|
55
56
|
const profile = readConfig(env).profiles[profileName(name)];
|
|
56
57
|
if (!profile)
|
|
57
|
-
throw new CliError("authentication_error", `profile ${name} is not signed in — drive ${name} session start
|
|
58
|
+
throw new CliError("authentication_error", `profile ${name} is not signed in — drive ${name} session start`, {
|
|
59
|
+
reason: "profile.not-signed-in",
|
|
60
|
+
});
|
|
58
61
|
return profile;
|
|
59
62
|
};
|
|
60
63
|
export const checkTextLimit = (value) => {
|
|
@@ -65,6 +68,7 @@ export const checkTextLimit = (value) => {
|
|
|
65
68
|
return value;
|
|
66
69
|
};
|
|
67
70
|
export const textLimit = (env, name) => activeProfile(env, name).maxTextChars ?? readConfig(env).defaults?.maxTextChars ?? MAX_TEXT_CHARS;
|
|
71
|
+
export const pictureSearch = (env, name) => activeProfile(env, name).pictureSearch ?? false;
|
|
68
72
|
export const application = (env, file) => {
|
|
69
73
|
if (!file) {
|
|
70
74
|
if (!env.DRIVE_GOOGLE_CLIENT_ID) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAE5D,MAAM,MAAM,GAAG;IACb,GAAG,UAAU;IACb,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACjC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC;CACrG,CAAA;AACD,MAAM,OAAO,GAAG,CAAC,CAAC,YAAY,CAAC;IAC7B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACrE,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACtC,GAAG,MAAM;CACV,CAAC,CAAA;AACF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC;IACvC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5C,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACvC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAsB,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAA;AAC7G,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAsB,EAAU,EAAE;IAC3D,IAAI,CAAC;QACH,OAAO,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IACvG,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,QAAQ,CAAC,qBAAqB,EAAE,qEAAqE,CAAC,CAAA;IAClH,CAAC;AACH,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAsB,EAAE,MAAc,EAAE,EAAE;IACpE,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;IACjD,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,MAAM,IAAI,QAAQ,CAAC,qBAAqB,EAAE,mDAAmD,CAAC,CAAA;IACpH,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;AACxE,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAA;AAC5C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAa,EAAU,EAAE;IAC9C,IAAI,EAAE,GAAG,KAAK,CAAA;IACd,IAAI,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,GAAG,CAAC,QAAQ,KAAK,kBAAkB,IAAI,GAAG,CAAC,QAAQ,KAAK,iBAAiB;YAC3E,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,wCAAwC,CAAC,CAAA;QAClF,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAChE,CAAC;IACD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,CAAC,CAAA;IACxG,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAsB,EAAE,IAAY,EAAE,EAAE;IACpE,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;IAC3D,IAAI,CAAC,OAAO;QACV,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,WAAW,IAAI,6BAA6B,IAAI,gBAAgB,EAAE;YAC3G,MAAM,EAAE,uBAAuB;SAChC,CAAC,CAAA;IACJ,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAKD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAc,EAAU,EAAE;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QACpE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,4DAA4D,CAAC,CAAA;IACtG,IAAI,KAAK,GAAG,cAAc;QACxB,MAAM,IAAI,QAAQ,CAChB,kBAAkB,EAClB,+BAA+B,cAAc,4DAA4D,CAC1G,CAAA;IACH,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAsB,EAAE,IAAY,EAAU,EAAE,CACxE,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,YAAY,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,IAAI,cAAc,CAAA;AACnG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAsB,EAAE,IAAY,EAAW,EAAE,CAC7E,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,aAAa,IAAI,KAAK,CAAA;AACjD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAsB,EAAE,IAAa,EAAoB,EAAE;IACrF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,0BAA0B;gBAChC,MAAM,IAAI,QAAQ,CAAC,qBAAqB,EAAE,4DAA4D,CAAC,CAAA;YACzG,OAAO,EAAE,GAAG,mBAAmB,EAAE,CAAA;QACnC,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,GAAG,CAAC,sBAAsB;YACpC,GAAG,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5F,CAAA;IACH,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAClB,CAAC,CAAC,MAAM,CAAC;YACP,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;SAC9G,CAAC,EACF,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CACvC,CAAA;QACD,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS;YAClC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxF,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,QAAQ,CAChB,qBAAqB,EACrB,iFAAiF,CAClF,CAAA;IACH,CAAC;AACH,CAAC,CAAA"}
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,mBAAmB,CAAA;AAGxD,eAAO,MAAM,WAAW,UAAW,OAAO,KAAG,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAc,MAAM,mBAAmB,CAAA;AAGxD,eAAO,MAAM,WAAW,UAAW,OAAO,KAAG,QAkD5C,CAAA"}
|
package/dist/errors.js
CHANGED
|
@@ -5,23 +5,31 @@ export const googleError = (error) => {
|
|
|
5
5
|
return error;
|
|
6
6
|
const value = error;
|
|
7
7
|
if (value?.name === "AbortError" || value?.code === "ERR_CANCELED")
|
|
8
|
-
return new CliError("cancelled", "Google operation was cancelled");
|
|
8
|
+
return new CliError("cancelled", "Google operation was cancelled", { reason: "command.cancelled" });
|
|
9
9
|
const status = value?.status ?? value?.response?.status;
|
|
10
10
|
const payload = value?.response?.data?.error;
|
|
11
11
|
const reason = typeof payload === "string" ? payload : payload?.errors?.[0]?.reason;
|
|
12
12
|
if (reason === "invalid_grant" || reason === "invalid_token")
|
|
13
|
-
return new CliError("authentication_error", "Google sign-in is no longer valid — run drive session start again"
|
|
13
|
+
return new CliError("authentication_error", "Google sign-in is no longer valid — run drive session start again", {
|
|
14
|
+
reason: "sign-in.expired",
|
|
15
|
+
});
|
|
14
16
|
if (reason === "invalid_client")
|
|
15
|
-
return new CliError("configuration_error", "Google rejected the OAuth application; check its Desktop client setup"
|
|
17
|
+
return new CliError("configuration_error", "Google rejected the OAuth application; check its Desktop client setup", {
|
|
18
|
+
reason: "oauth-client.rejected",
|
|
19
|
+
});
|
|
16
20
|
if (reason === "rateLimitExceeded" || reason === "userRateLimitExceeded")
|
|
17
21
|
return new CliError("rate_limited", "Google rate limit reached; retry the command", {
|
|
18
22
|
retryable: true,
|
|
19
23
|
...(status ? { status } : {}),
|
|
20
24
|
});
|
|
21
25
|
if (reason === "exportSizeLimitExceeded")
|
|
22
|
-
return new CliError("validation_error", "Google exports at most 10 MB of a native file; this one is larger"
|
|
26
|
+
return new CliError("validation_error", "Google exports at most 10 MB of a native file; this one is larger", {
|
|
27
|
+
reason: "export.too-large",
|
|
28
|
+
});
|
|
23
29
|
if (status === 401)
|
|
24
|
-
return new CliError("authentication_error", "Google sign-in expired — run drive session start again"
|
|
30
|
+
return new CliError("authentication_error", "Google sign-in expired — run drive session start again", {
|
|
31
|
+
reason: "sign-in.expired",
|
|
32
|
+
});
|
|
25
33
|
if (status === 403)
|
|
26
34
|
return new CliError("permission_error", "Google denied this operation; check access and OAuth permissions", {
|
|
27
35
|
status,
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAExD,mGAAmG;AACnG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAY,EAAE;IACtD,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACnC,MAAM,KAAK,GAAG,KAKb,CAAA;IACD,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY,IAAI,KAAK,EAAE,IAAI,KAAK,cAAc;QAChE,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE,gCAAgC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAExD,mGAAmG;AACnG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAY,EAAE;IACtD,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACnC,MAAM,KAAK,GAAG,KAKb,CAAA;IACD,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY,IAAI,KAAK,EAAE,IAAI,KAAK,cAAc;QAChE,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE,gCAAgC,EAAE,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACrG,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAA;IACvD,MAAM,OAAO,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAA;IAC5C,MAAM,MAAM,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAA;IACnF,IAAI,MAAM,KAAK,eAAe,IAAI,MAAM,KAAK,eAAe;QAC1D,OAAO,IAAI,QAAQ,CAAC,sBAAsB,EAAE,mEAAmE,EAAE;YAC/G,MAAM,EAAE,iBAAiB;SAC1B,CAAC,CAAA;IACJ,IAAI,MAAM,KAAK,gBAAgB;QAC7B,OAAO,IAAI,QAAQ,CACjB,qBAAqB,EACrB,uEAAuE,EACvE;YACE,MAAM,EAAE,uBAAuB;SAChC,CACF,CAAA;IACH,IAAI,MAAM,KAAK,mBAAmB,IAAI,MAAM,KAAK,uBAAuB;QACtE,OAAO,IAAI,QAAQ,CAAC,cAAc,EAAE,8CAA8C,EAAE;YAClF,SAAS,EAAE,IAAI;YACf,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9B,CAAC,CAAA;IACJ,IAAI,MAAM,KAAK,yBAAyB;QACtC,OAAO,IAAI,QAAQ,CAAC,kBAAkB,EAAE,mEAAmE,EAAE;YAC3G,MAAM,EAAE,kBAAkB;SAC3B,CAAC,CAAA;IACJ,IAAI,MAAM,KAAK,GAAG;QAChB,OAAO,IAAI,QAAQ,CAAC,sBAAsB,EAAE,wDAAwD,EAAE;YACpG,MAAM,EAAE,iBAAiB;SAC1B,CAAC,CAAA;IACJ,IAAI,MAAM,KAAK,GAAG;QAChB,OAAO,IAAI,QAAQ,CAAC,kBAAkB,EAAE,kEAAkE,EAAE;YAC1G,MAAM;SACP,CAAC,CAAA;IACJ,IAAI,MAAM,KAAK,GAAG;QAChB,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE,sDAAsD,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IACtG,IAAI,MAAM,KAAK,GAAG;QAChB,OAAO,IAAI,QAAQ,CAAC,cAAc,EAAE,8CAA8C,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAClH,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,IAAI,QAAQ,CAAC,gBAAgB,EAAE,+BAA+B,MAAM,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;IACrH,OAAO,IAAI,QAAQ,CAAC,sBAAsB,EAAE,qEAAqE,EAAE;QACjH,SAAS,EAAE,IAAI;KAChB,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
package/dist/extraction.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type ModelAnswer, type ModelRequest } from "@wirecat/cli-
|
|
1
|
+
import { type ModelAnswer, type ModelRequest } from "@wirecat/cli-core/models";
|
|
2
2
|
export type Complete = (request: ModelRequest) => Promise<ModelAnswer>;
|
|
3
3
|
export declare const memoryModel: (env: NodeJS.ProcessEnv, profile: string, signal?: AbortSignal) => Complete;
|
|
4
4
|
export declare const extractMemories: (text: string, complete: Complete) => Promise<{
|
package/dist/extraction.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../src/extraction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAA6B,MAAM
|
|
1
|
+
{"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../src/extraction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAA6B,MAAM,0BAA0B,CAAA;AAIzG,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA;AAOtE,eAAO,MAAM,WAAW,QAAS,MAAM,CAAC,UAAU,WAAW,MAAM,WAAW,WAAW,KAAG,QAiB3F,CAAA;AACD,eAAO,MAAM,eAAe,SAAgB,MAAM,YAAY,QAAQ;;;;;;;;;EA6BrE,CAAA"}
|