@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.
Files changed (90) hide show
  1. package/README.md +4 -3
  2. package/dist/api-contract.d.ts.map +1 -1
  3. package/dist/api-contract.js +4 -2
  4. package/dist/api-contract.js.map +1 -1
  5. package/dist/bin/drive.js +16 -20
  6. package/dist/bin/drive.js.map +1 -1
  7. package/dist/catalog-commands.d.ts +13 -0
  8. package/dist/catalog-commands.d.ts.map +1 -0
  9. package/dist/catalog-commands.js +111 -0
  10. package/dist/catalog-commands.js.map +1 -0
  11. package/dist/catalog.d.ts +43 -0
  12. package/dist/catalog.d.ts.map +1 -0
  13. package/dist/catalog.js +107 -0
  14. package/dist/catalog.js.map +1 -0
  15. package/dist/config.d.ts +3 -0
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/config.js +8 -4
  18. package/dist/config.js.map +1 -1
  19. package/dist/errors.d.ts.map +1 -1
  20. package/dist/errors.js +13 -5
  21. package/dist/errors.js.map +1 -1
  22. package/dist/extraction.d.ts +1 -1
  23. package/dist/extraction.d.ts.map +1 -1
  24. package/dist/extraction.js +9 -5
  25. package/dist/extraction.js.map +1 -1
  26. package/dist/failure.d.ts +65 -0
  27. package/dist/failure.d.ts.map +1 -0
  28. package/dist/failure.js +86 -0
  29. package/dist/failure.js.map +1 -0
  30. package/dist/google-api.d.ts.map +1 -1
  31. package/dist/google-api.js +3 -1
  32. package/dist/google-api.js.map +1 -1
  33. package/dist/google.d.ts +4 -0
  34. package/dist/google.d.ts.map +1 -1
  35. package/dist/google.js +23 -9
  36. package/dist/google.js.map +1 -1
  37. package/dist/knowledge-commands.d.ts.map +1 -1
  38. package/dist/knowledge-commands.js +9 -5
  39. package/dist/knowledge-commands.js.map +1 -1
  40. package/dist/knowledge.d.ts +1 -1
  41. package/dist/knowledge.d.ts.map +1 -1
  42. package/dist/knowledge.js +10 -4
  43. package/dist/knowledge.js.map +1 -1
  44. package/dist/login.d.ts +1 -1
  45. package/dist/login.d.ts.map +1 -1
  46. package/dist/login.js +11 -5
  47. package/dist/login.js.map +1 -1
  48. package/dist/mcp.d.ts +22 -4
  49. package/dist/mcp.d.ts.map +1 -1
  50. package/dist/mcp.js +7 -15
  51. package/dist/mcp.js.map +1 -1
  52. package/dist/model.d.ts +55 -0
  53. package/dist/model.d.ts.map +1 -1
  54. package/dist/model.js +16 -0
  55. package/dist/model.js.map +1 -1
  56. package/dist/policy.d.ts.map +1 -1
  57. package/dist/policy.js +6 -3
  58. package/dist/policy.js.map +1 -1
  59. package/dist/profile-lock.d.ts.map +1 -1
  60. package/dist/profile-lock.js +4 -2
  61. package/dist/profile-lock.js.map +1 -1
  62. package/dist/program.d.ts.map +1 -1
  63. package/dist/program.js +90 -35
  64. package/dist/program.js.map +1 -1
  65. package/dist/registry.d.ts +4 -34
  66. package/dist/registry.d.ts.map +1 -1
  67. package/dist/registry.js +9 -14
  68. package/dist/registry.js.map +1 -1
  69. package/dist/remote-commands.d.ts.map +1 -1
  70. package/dist/remote-commands.js +9 -5
  71. package/dist/remote-commands.js.map +1 -1
  72. package/dist/scope.d.ts +3 -0
  73. package/dist/scope.d.ts.map +1 -0
  74. package/dist/scope.js +15 -0
  75. package/dist/scope.js.map +1 -0
  76. package/dist/state.d.ts.map +1 -1
  77. package/dist/state.js +17 -4
  78. package/dist/state.js.map +1 -1
  79. package/dist/store.d.ts +4 -2
  80. package/dist/store.d.ts.map +1 -1
  81. package/dist/store.js +90 -10
  82. package/dist/store.js.map +1 -1
  83. package/dist/sync.d.ts +6 -2
  84. package/dist/sync.d.ts.map +1 -1
  85. package/dist/sync.js +91 -44
  86. package/dist/sync.js.map +1 -1
  87. package/dist/tokens.d.ts.map +1 -1
  88. package/dist/tokens.js +8 -4
  89. package/dist/tokens.js.map +1 -1
  90. 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
- Folder scans cap at 10,000 entries. Text caps at 200,000 characters and snapshots at 50 MiB, with
115
- bounded pagination. Oversized input is refused rather than truncated. Google's native export
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-messaging builds the generated
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,iBAI1C,CAAA;AACD,eAAO,MAAM,eAAe,SAAU,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SA6B5G,CAAA"}
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"}
@@ -1,12 +1,14 @@
1
1
  import { CliError } from "@wirecat/cli-base";
2
- import { apiJson, checkApiBody, checkApiParameter } from "@wirecat/cli-messaging/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) => {
@@ -1 +1 @@
1
- {"version":3,"file":"api-contract.js","sourceRoot":"","sources":["../src/api-contract.ts"],"names":[],"mappings":"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"}
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, exitCodeFor, isCliError } from "@wirecat/cli-base";
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
- await createProgram({
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 args = process.platform === "win32" ? ["url.dll,FileProtocolHandler", url] : [url];
16
- execFile(command, args, { timeout: 10000, windowsHide: true }, (error) => error ? reject(new CliError("configuration_error", "open the printed Google sign-in URL")) : resolve());
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
- }).parseAsync(process.argv);
23
+ });
24
+ await program.parseAsync(process.argv);
19
25
  }
20
26
  catch (error) {
21
- if (error instanceof CommanderError) {
22
- if (error.exitCode === 0)
23
- process.exitCode = 0;
24
- else {
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
@@ -1 +1 @@
1
- {"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/bin/drive.ts"],"names":[],"mappings":"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"}
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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAe5B,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;;;;;;;;;;;;;;;;;;;;;;;CAKjE,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,WAAW,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,gBA6BnE,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-messaging/cli";
5
- import { MAX_TEXT_CHARS } from "@wirecat/cli-messaging/documents";
6
- import { LEVELS } from "@wirecat/cli-messaging/sends";
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) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -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,QAsC5C,CAAA"}
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,
@@ -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;IACpE,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,CAAC,CAAA;IAClH,IAAI,MAAM,KAAK,gBAAgB;QAC7B,OAAO,IAAI,QAAQ,CAAC,qBAAqB,EAAE,uEAAuE,CAAC,CAAA;IACrH,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,CAAC,CAAA;IAC9G,IAAI,MAAM,KAAK,GAAG;QAChB,OAAO,IAAI,QAAQ,CAAC,sBAAsB,EAAE,wDAAwD,CAAC,CAAA;IACvG,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"}
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"}
@@ -1,4 +1,4 @@
1
- import { type ModelAnswer, type ModelRequest } from "@wirecat/cli-messaging/models";
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<{
@@ -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,+BAA+B,CAAA;AAI9G,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;;;;;;;;;EAqBrE,CAAA"}
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"}