@byted-las/contextlake-openclaw 1.0.2 → 1.0.4

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 (64) hide show
  1. package/README.md +45 -23
  2. package/dist/src/client/lancedb.js +1 -1
  3. package/dist/src/commands/cli.d.ts +2 -1
  4. package/dist/src/commands/cli.js +33 -8
  5. package/dist/src/commands/index.js +31 -6
  6. package/dist/src/commands/slashcmd.d.ts +6 -0
  7. package/dist/src/commands/slashcmd.js +90 -6
  8. package/dist/src/commands/tools.d.ts +5 -0
  9. package/dist/src/commands/tools.js +134 -39
  10. package/dist/src/lib/actions/ingest-source.d.ts +15 -0
  11. package/dist/src/lib/actions/ingest-source.js +193 -0
  12. package/dist/src/lib/actions/ingest.d.ts +13 -7
  13. package/dist/src/lib/actions/ingest.js +133 -58
  14. package/dist/src/lib/actions/lance-tools.d.ts +6 -0
  15. package/dist/src/lib/actions/lance-tools.js +51 -0
  16. package/dist/src/lib/actions/las-api.d.ts +13 -0
  17. package/dist/src/lib/actions/las-api.js +105 -0
  18. package/dist/src/lib/actions/las-tools.d.ts +3 -0
  19. package/dist/src/lib/actions/las-tools.js +194 -0
  20. package/dist/src/lib/actions/las.d.ts +64 -0
  21. package/dist/src/lib/actions/las.js +72 -0
  22. package/dist/src/lib/actions/profiler.d.ts +3 -0
  23. package/dist/src/lib/actions/profiler.js +135 -140
  24. package/dist/src/lib/actions/retrieve.js +2 -8
  25. package/dist/src/lib/actions/s3-tools.d.ts +18 -0
  26. package/dist/src/lib/actions/s3-tools.js +167 -0
  27. package/dist/src/lib/scripts/s3_catalog.py +10 -1
  28. package/dist/src/service/embedding/factory.js +1 -10
  29. package/dist/src/service/embedding/interface.d.ts +5 -0
  30. package/dist/src/service/embedding/remote.d.ts +1 -0
  31. package/dist/src/service/embedding/remote.js +31 -0
  32. package/dist/src/service/metadata/interface.d.ts +1 -0
  33. package/dist/src/service/metadata/local.d.ts +1 -0
  34. package/dist/src/service/metadata/local.js +6 -0
  35. package/dist/src/skills/SKILL.md +14 -151
  36. package/dist/src/skills/las-data-profiler/SKILL.md +14 -151
  37. package/dist/src/utils/config.js +13 -3
  38. package/dist/src/utils/credentials.d.ts +12 -0
  39. package/dist/src/utils/credentials.js +77 -0
  40. package/openclaw.plugin.json +1 -1
  41. package/package.json +2 -5
  42. package/src/client/lancedb.ts +1 -1
  43. package/src/commands/cli.ts +37 -9
  44. package/src/commands/index.ts +39 -6
  45. package/src/commands/slashcmd.ts +67 -7
  46. package/src/commands/tools.ts +140 -45
  47. package/src/lib/actions/ingest.ts +151 -71
  48. package/src/lib/actions/lance-tools.ts +23 -0
  49. package/src/lib/actions/las-api.ts +119 -0
  50. package/src/lib/actions/las-tools.ts +196 -0
  51. package/src/lib/actions/profiler.ts +134 -161
  52. package/src/lib/actions/retrieve.ts +2 -10
  53. package/src/lib/actions/s3-tools.ts +148 -0
  54. package/src/service/embedding/factory.ts +1 -8
  55. package/src/service/embedding/interface.ts +6 -0
  56. package/src/service/embedding/remote.ts +36 -0
  57. package/src/service/metadata/interface.ts +1 -0
  58. package/src/service/metadata/local.ts +7 -0
  59. package/src/skills/las-data-profiler/SKILL.md +14 -151
  60. package/src/utils/config.ts +15 -3
  61. package/src/utils/credentials.ts +56 -0
  62. package/bin/contextlake-openclaw.js +0 -5
  63. package/src/lib/scripts/s3_catalog.py +0 -608
  64. package/src/service/embedding/local.ts +0 -121
@@ -1,121 +0,0 @@
1
- import { EmbeddingProvider, EmbeddingConfig } from './interface';
2
- // import type { Llama, LlamaEmbeddingContext, LlamaModel } from 'node-llama-cpp';
3
-
4
- const DEFAULT_LOCAL_MODEL = 'hf:CompendiumLabs/bge-small-zh-v1.5-gguf/bge-small-zh-v1.5-f16.gguf';
5
-
6
- let nodeLlamaImportPromise: Promise<any> | null = null;
7
-
8
- export const setNodeLlamaCppImporter = (importer: () => Promise<any>) => {
9
- nodeLlamaImportPromise = importer();
10
- };
11
-
12
- const importNodeLlamaCpp = async (): Promise<any> => {
13
- if (!nodeLlamaImportPromise) {
14
- nodeLlamaImportPromise = import('node-llama-cpp');
15
- }
16
- return nodeLlamaImportPromise;
17
- };
18
-
19
- export class LocalEmbeddingProvider implements EmbeddingProvider {
20
- private llama: any = null;
21
- private model: any = null;
22
- private context: any = null;
23
- private initPromise: Promise<void> | null = null;
24
- private modelPath: string;
25
-
26
- constructor(config: EmbeddingConfig) {
27
- // Override transformers.js default with node-llama-cpp default
28
- this.modelPath = config.model_name === 'Xenova/all-MiniLM-L6-v2'
29
- ? DEFAULT_LOCAL_MODEL
30
- : (config.model_name || DEFAULT_LOCAL_MODEL);
31
- }
32
-
33
- private async ensureInitialized(): Promise<void> {
34
- if (this.context) {
35
- return;
36
- }
37
- if (this.initPromise) {
38
- return this.initPromise;
39
- }
40
-
41
- this.initPromise = this.doInitialize().catch((err) => {
42
- this.initPromise = null;
43
- this.context = null;
44
- this.model = null;
45
- this.llama = null;
46
- throw err;
47
- });
48
- return this.initPromise;
49
- }
50
-
51
- private async doInitialize(): Promise<void> {
52
- try {
53
- const { getLlama, resolveModelFile, LlamaLogLevel } = await importNodeLlamaCpp();
54
-
55
- if (!this.llama) {
56
- this.llama = await getLlama({ logLevel: LlamaLogLevel.error });
57
- }
58
-
59
- if (!this.model) {
60
- const resolved = await resolveModelFile(this.modelPath);
61
- this.model = await this.llama.loadModel({ modelPath: resolved });
62
- }
63
-
64
- if (!this.context) {
65
- this.context = await this.model.createEmbeddingContext();
66
- }
67
- } catch (err) {
68
- const detail = err instanceof Error ? err.message : String(err);
69
- throw new Error(`Local embeddings unavailable. Reason: ${detail}`, {
70
- cause: err,
71
- });
72
- }
73
- }
74
-
75
- async generateEmbedding(text: string): Promise<number[]> {
76
- if (!text || !text.trim()) {
77
- throw new Error('Embedding input text must be a non-empty string');
78
- }
79
-
80
- await this.ensureInitialized();
81
-
82
- const embedding = await this.context!.getEmbeddingFor(text);
83
- const vector = embedding.vector; // TypedArray
84
-
85
- // Optimized normalization loop
86
- let sumSq = 0;
87
- const len = vector.length;
88
-
89
- for (let i = 0; i < len; i++) {
90
- const val = vector[i];
91
- if (Number.isFinite(val)) {
92
- sumSq += val * val;
93
- } else {
94
- vector[i] = 0;
95
- }
96
- }
97
-
98
- const magnitude = Math.sqrt(sumSq);
99
- const result = new Array(len);
100
-
101
- if (magnitude > 0) {
102
- const scale = 1.0 / magnitude;
103
- for (let i = 0; i < len; i++) {
104
- result[i] = vector[i] * scale;
105
- }
106
- } else {
107
- for (let i = 0; i < len; i++) {
108
- result[i] = vector[i];
109
- }
110
- }
111
-
112
- return result;
113
- }
114
-
115
- async generateEmbeddings(texts: string[]): Promise<number[][]> {
116
- if (!Array.isArray(texts)) {
117
- throw new Error('Embedding input must be an array of strings');
118
- }
119
- return Promise.all(texts.map(text => this.generateEmbedding(text)));
120
- }
121
- }