@easynet/agent-common 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-UDSSVJ5F.js → chunk-D3XBAOOJ.js} +7 -101
- package/dist/chunk-D3XBAOOJ.js.map +1 -0
- package/dist/chunk-MNH7GH2B.js +1224 -0
- package/dist/chunk-MNH7GH2B.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +26 -418
- package/dist/index.js.map +1 -1
- package/dist/memory/index.d.ts +3 -0
- package/dist/memory/index.js +15 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/provider/factory.d.ts +45 -0
- package/dist/memory/provider/index.d.ts +6 -0
- package/dist/memory/provider/llamaindex-knowledge.d.ts +84 -0
- package/dist/memory/provider/mem0-long-term.d.ts +36 -0
- package/dist/memory/provider/sqlite-vec-long-term.d.ts +17 -0
- package/dist/memory/provider/types.d.ts +53 -0
- package/dist/memory/provider/universal.d.ts +6 -0
- package/dist/memory/store/factory.d.ts +2 -0
- package/dist/memory/store/in-memory-store.d.ts +16 -0
- package/dist/memory/store/index.d.ts +4 -0
- package/dist/memory/store/scoped-store.d.ts +2 -0
- package/dist/memory/store/types.d.ts +27 -0
- package/dist/model/index.d.ts +5 -5
- package/dist/npm/index.d.ts +2 -4
- package/dist/npm/index.js +3 -33
- package/package.json +29 -2
- package/dist/chunk-UDSSVJ5F.js.map +0 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { LoadYamlOptions } from "../../config/yaml.js";
|
|
2
|
+
import { type Mem0MemoryLike } from "./mem0-long-term.js";
|
|
3
|
+
import { type CreateUniversalMemoryOptions } from "./universal.js";
|
|
4
|
+
import type { UniversalMemory } from "./types.js";
|
|
5
|
+
export interface Mem0LongTermMemoryConfig {
|
|
6
|
+
type?: "mem0";
|
|
7
|
+
}
|
|
8
|
+
export interface SqliteVecLongTermMemoryConfig {
|
|
9
|
+
type: "sqlite_vec";
|
|
10
|
+
dbPath?: string;
|
|
11
|
+
dimensions?: number;
|
|
12
|
+
llmSection?: unknown;
|
|
13
|
+
embeddingBaseURL?: string;
|
|
14
|
+
embeddingApiKey?: string;
|
|
15
|
+
embeddingModel?: string;
|
|
16
|
+
embeddingTimeoutMs?: number;
|
|
17
|
+
chatTimeoutMs?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface LlamaIndexKnowledgeMemoryConfig {
|
|
20
|
+
type?: "llamaindex";
|
|
21
|
+
llmSection?: unknown;
|
|
22
|
+
embeddingBaseURL?: string;
|
|
23
|
+
embeddingApiKey?: string;
|
|
24
|
+
embeddingModel?: string;
|
|
25
|
+
embeddingTimeoutMs?: number;
|
|
26
|
+
chatTimeoutMs?: number;
|
|
27
|
+
}
|
|
28
|
+
export interface UniversalMemoryProviderConfig {
|
|
29
|
+
longTerm?: Mem0LongTermMemoryConfig | SqliteVecLongTermMemoryConfig;
|
|
30
|
+
knowledge?: LlamaIndexKnowledgeMemoryConfig;
|
|
31
|
+
}
|
|
32
|
+
export interface LoadUniversalMemoryProviderConfigOptions {
|
|
33
|
+
configDir?: string;
|
|
34
|
+
yaml?: LoadYamlOptions;
|
|
35
|
+
}
|
|
36
|
+
export interface CreateUniversalMemoryFromConfigOptions extends LoadUniversalMemoryProviderConfigOptions {
|
|
37
|
+
config: UniversalMemoryProviderConfig | string;
|
|
38
|
+
overrides?: {
|
|
39
|
+
longTerm?: CreateUniversalMemoryOptions["longTerm"];
|
|
40
|
+
knowledge?: CreateUniversalMemoryOptions["knowledge"];
|
|
41
|
+
mem0Memory?: Mem0MemoryLike;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export declare function loadUniversalMemoryProviderConfig(config: UniversalMemoryProviderConfig | string, options?: LoadUniversalMemoryProviderConfigOptions): Promise<UniversalMemoryProviderConfig>;
|
|
45
|
+
export declare function createUniversalMemoryFromConfig(options: CreateUniversalMemoryFromConfigOptions): Promise<UniversalMemory>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { createUniversalMemory, type CreateUniversalMemoryOptions } from "./universal.js";
|
|
2
|
+
export { createUniversalMemoryFromConfig, loadUniversalMemoryProviderConfig, type CreateUniversalMemoryFromConfigOptions, type LlamaIndexKnowledgeMemoryConfig, type LoadUniversalMemoryProviderConfigOptions, type Mem0LongTermMemoryConfig, type SqliteVecLongTermMemoryConfig, type UniversalMemoryProviderConfig, } from "./factory.js";
|
|
3
|
+
export { Mem0LongTermMemoryProvider, type Mem0LongTermMemoryProviderOptions, type Mem0MemoryLike, } from "./mem0-long-term.js";
|
|
4
|
+
export { SqliteVecLongTermMemoryProvider, type SqliteVecLongTermMemoryProviderOptions, } from "./sqlite-vec-long-term.js";
|
|
5
|
+
export { LlamaIndexKnowledgeMemoryProvider, type LlamaIndexKnowledgeHit, type LlamaIndexKnowledgeProviderOptions, } from "./llamaindex-knowledge.js";
|
|
6
|
+
export type { KnowledgeMemorizeRequest, KnowledgeMemoryProvider, LongTermMemorizeRequest, LongTermMemoryProvider, MemoryForgetRequest, MemoryKind, MemoryMemorizeRequest, MemoryRecallRequest, MemoryRecord, UniversalMemory, } from "./types.js";
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { KnowledgeMemorizeRequest, KnowledgeMemoryProvider, MemoryForgetRequest, MemoryRecallRequest, MemoryRecord } from "./types.js";
|
|
2
|
+
export interface LlamaIndexKnowledgeHit {
|
|
3
|
+
id: string;
|
|
4
|
+
content: string;
|
|
5
|
+
score?: number;
|
|
6
|
+
metadata?: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export interface LlamaIndexKnowledgeProviderOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Optional embedding function. When provided, used as the embedding model for
|
|
11
|
+
* LlamaIndex vector indexing instead of LlamaIndex's default.
|
|
12
|
+
* Accepts an array of texts and returns their embedding vectors.
|
|
13
|
+
*
|
|
14
|
+
* Example with ModelHub from agent-common/model:
|
|
15
|
+
* ```ts
|
|
16
|
+
* const hub = createModelHub({ llmSection });
|
|
17
|
+
* new LlamaIndexKnowledgeMemoryProvider({
|
|
18
|
+
* embed: async (texts) => (await hub.embed({ input: texts })).vectors,
|
|
19
|
+
* });
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
embed?: (input: string[]) => Promise<number[][]>;
|
|
23
|
+
/**
|
|
24
|
+
* Custom mode callbacks. If `query` is provided, provider uses these callbacks
|
|
25
|
+
* instead of built-in LlamaIndex ingestion/retrieval.
|
|
26
|
+
*/
|
|
27
|
+
ingestText?: (req: {
|
|
28
|
+
namespace: string;
|
|
29
|
+
content: string;
|
|
30
|
+
metadata?: Record<string, unknown>;
|
|
31
|
+
}) => Promise<{
|
|
32
|
+
id?: string;
|
|
33
|
+
content?: string;
|
|
34
|
+
metadata?: Record<string, unknown>;
|
|
35
|
+
}>;
|
|
36
|
+
ingestFile?: (req: {
|
|
37
|
+
namespace: string;
|
|
38
|
+
filePath: string;
|
|
39
|
+
metadata?: Record<string, unknown>;
|
|
40
|
+
}) => Promise<{
|
|
41
|
+
id?: string;
|
|
42
|
+
content?: string;
|
|
43
|
+
metadata?: Record<string, unknown>;
|
|
44
|
+
}>;
|
|
45
|
+
ingestUrl?: (req: {
|
|
46
|
+
namespace: string;
|
|
47
|
+
url: string;
|
|
48
|
+
metadata?: Record<string, unknown>;
|
|
49
|
+
}) => Promise<{
|
|
50
|
+
id?: string;
|
|
51
|
+
content?: string;
|
|
52
|
+
metadata?: Record<string, unknown>;
|
|
53
|
+
}>;
|
|
54
|
+
query?: (req: {
|
|
55
|
+
namespace: string;
|
|
56
|
+
query: string;
|
|
57
|
+
topK: number;
|
|
58
|
+
filters?: Record<string, unknown>;
|
|
59
|
+
}) => Promise<LlamaIndexKnowledgeHit[]>;
|
|
60
|
+
remove?: (req: {
|
|
61
|
+
namespace: string;
|
|
62
|
+
id: string;
|
|
63
|
+
}) => Promise<void>;
|
|
64
|
+
}
|
|
65
|
+
export declare class LlamaIndexKnowledgeMemoryProvider implements KnowledgeMemoryProvider {
|
|
66
|
+
private readonly options;
|
|
67
|
+
private readonly namespaceIndex;
|
|
68
|
+
private runtimePromise?;
|
|
69
|
+
constructor(options?: LlamaIndexKnowledgeProviderOptions);
|
|
70
|
+
remember(req: KnowledgeMemorizeRequest): Promise<MemoryRecord>;
|
|
71
|
+
recall(req: MemoryRecallRequest): Promise<MemoryRecord[]>;
|
|
72
|
+
forget(req: MemoryForgetRequest): Promise<void>;
|
|
73
|
+
private usesCustomCallbacks;
|
|
74
|
+
private rememberWithCustomCallbacks;
|
|
75
|
+
private getBucket;
|
|
76
|
+
private rebuildNamespaceIndex;
|
|
77
|
+
private attachMetadata;
|
|
78
|
+
private buildDocumentsFromRequest;
|
|
79
|
+
private loadFromFile;
|
|
80
|
+
private loadFromUrl;
|
|
81
|
+
private resolveCustomIngestPlan;
|
|
82
|
+
private withSourceMetadata;
|
|
83
|
+
private getRuntime;
|
|
84
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { LongTermMemorizeRequest, MemoryForgetRequest, MemoryRecallRequest, MemoryRecord, LongTermMemoryProvider } from "./types.js";
|
|
2
|
+
export interface Mem0MemoryLike {
|
|
3
|
+
add(messages: Array<{
|
|
4
|
+
role: string;
|
|
5
|
+
content: string;
|
|
6
|
+
}>, options?: {
|
|
7
|
+
userId?: string;
|
|
8
|
+
metadata?: Record<string, unknown>;
|
|
9
|
+
}): Promise<unknown>;
|
|
10
|
+
search(query: string, options?: {
|
|
11
|
+
userId?: string;
|
|
12
|
+
limit?: number;
|
|
13
|
+
metadata?: Record<string, unknown>;
|
|
14
|
+
}): Promise<{
|
|
15
|
+
results: Array<{
|
|
16
|
+
id: string;
|
|
17
|
+
memory: string;
|
|
18
|
+
score?: number;
|
|
19
|
+
metadata?: Record<string, unknown>;
|
|
20
|
+
userId?: string;
|
|
21
|
+
}>;
|
|
22
|
+
}>;
|
|
23
|
+
delete(memoryId: string): Promise<unknown>;
|
|
24
|
+
}
|
|
25
|
+
export interface Mem0LongTermMemoryProviderOptions {
|
|
26
|
+
memory: Mem0MemoryLike;
|
|
27
|
+
namespaceToUserId?: (namespace: string) => string;
|
|
28
|
+
}
|
|
29
|
+
export declare class Mem0LongTermMemoryProvider implements LongTermMemoryProvider {
|
|
30
|
+
private readonly memory;
|
|
31
|
+
private readonly namespaceToUserId;
|
|
32
|
+
constructor(options: Mem0LongTermMemoryProviderOptions);
|
|
33
|
+
remember(req: LongTermMemorizeRequest): Promise<MemoryRecord>;
|
|
34
|
+
recall(req: MemoryRecallRequest): Promise<MemoryRecord[]>;
|
|
35
|
+
forget(req: MemoryForgetRequest): Promise<void>;
|
|
36
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { LongTermMemorizeRequest, LongTermMemoryProvider, MemoryForgetRequest, MemoryRecallRequest, MemoryRecord } from "./types.js";
|
|
2
|
+
export interface SqliteVecLongTermMemoryProviderOptions {
|
|
3
|
+
dbPath: string;
|
|
4
|
+
dimensions: number;
|
|
5
|
+
embed: (input: string[]) => Promise<number[][]>;
|
|
6
|
+
}
|
|
7
|
+
export declare class SqliteVecLongTermMemoryProvider implements LongTermMemoryProvider {
|
|
8
|
+
private readonly db;
|
|
9
|
+
private readonly dimensions;
|
|
10
|
+
private readonly embed;
|
|
11
|
+
constructor(options: SqliteVecLongTermMemoryProviderOptions);
|
|
12
|
+
remember(req: LongTermMemorizeRequest): Promise<MemoryRecord>;
|
|
13
|
+
recall(req: MemoryRecallRequest): Promise<MemoryRecord[]>;
|
|
14
|
+
forget(req: MemoryForgetRequest): Promise<void>;
|
|
15
|
+
private initSchema;
|
|
16
|
+
private assertVector;
|
|
17
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export type MemoryKind = "long_term" | "knowledge";
|
|
2
|
+
export interface MemoryRecord {
|
|
3
|
+
id: string;
|
|
4
|
+
kind: MemoryKind;
|
|
5
|
+
namespace: string;
|
|
6
|
+
content: string;
|
|
7
|
+
score?: number;
|
|
8
|
+
metadata?: Record<string, unknown>;
|
|
9
|
+
createdAt: number;
|
|
10
|
+
updatedAt: number;
|
|
11
|
+
}
|
|
12
|
+
export interface MemoryRecallRequest {
|
|
13
|
+
kind: MemoryKind;
|
|
14
|
+
namespace: string;
|
|
15
|
+
query: string;
|
|
16
|
+
topK?: number;
|
|
17
|
+
filters?: Record<string, unknown>;
|
|
18
|
+
}
|
|
19
|
+
export interface MemoryForgetRequest {
|
|
20
|
+
kind: MemoryKind;
|
|
21
|
+
namespace: string;
|
|
22
|
+
id: string;
|
|
23
|
+
}
|
|
24
|
+
export interface LongTermMemorizeRequest {
|
|
25
|
+
kind: "long_term";
|
|
26
|
+
namespace: string;
|
|
27
|
+
content: string;
|
|
28
|
+
metadata?: Record<string, unknown>;
|
|
29
|
+
}
|
|
30
|
+
export interface KnowledgeMemorizeRequest {
|
|
31
|
+
kind: "knowledge";
|
|
32
|
+
namespace: string;
|
|
33
|
+
content?: string;
|
|
34
|
+
filePath?: string;
|
|
35
|
+
url?: string;
|
|
36
|
+
metadata?: Record<string, unknown>;
|
|
37
|
+
}
|
|
38
|
+
export type MemoryMemorizeRequest = LongTermMemorizeRequest | KnowledgeMemorizeRequest;
|
|
39
|
+
export interface LongTermMemoryProvider {
|
|
40
|
+
remember(req: LongTermMemorizeRequest): Promise<MemoryRecord>;
|
|
41
|
+
recall(req: MemoryRecallRequest): Promise<MemoryRecord[]>;
|
|
42
|
+
forget(req: MemoryForgetRequest): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
export interface KnowledgeMemoryProvider {
|
|
45
|
+
remember(req: KnowledgeMemorizeRequest): Promise<MemoryRecord>;
|
|
46
|
+
recall(req: MemoryRecallRequest): Promise<MemoryRecord[]>;
|
|
47
|
+
forget(req: MemoryForgetRequest): Promise<void>;
|
|
48
|
+
}
|
|
49
|
+
export interface UniversalMemory {
|
|
50
|
+
memorize(req: MemoryMemorizeRequest): Promise<MemoryRecord>;
|
|
51
|
+
recall(req: MemoryRecallRequest): Promise<MemoryRecord[]>;
|
|
52
|
+
forget(req: MemoryForgetRequest): Promise<void>;
|
|
53
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { KnowledgeMemoryProvider, LongTermMemoryProvider, UniversalMemory } from "./types.js";
|
|
2
|
+
export interface CreateUniversalMemoryOptions {
|
|
3
|
+
longTerm?: LongTermMemoryProvider;
|
|
4
|
+
knowledge?: KnowledgeMemoryProvider;
|
|
5
|
+
}
|
|
6
|
+
export declare function createUniversalMemory(options: CreateUniversalMemoryOptions): UniversalMemory;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { MemoryEntry, MemoryListOptions, MemorySetOptions, MemoryStore } from "./types.js";
|
|
2
|
+
export declare class InMemoryStore implements MemoryStore {
|
|
3
|
+
private readonly store;
|
|
4
|
+
set<T = unknown>(key: string, value: T, options?: MemorySetOptions): Promise<MemoryEntry<T>>;
|
|
5
|
+
get<T = unknown>(key: string): Promise<T | undefined>;
|
|
6
|
+
getEntry<T = unknown>(key: string): Promise<MemoryEntry<T> | undefined>;
|
|
7
|
+
has(key: string): Promise<boolean>;
|
|
8
|
+
delete(key: string): Promise<boolean>;
|
|
9
|
+
clear(prefix?: string): Promise<number>;
|
|
10
|
+
keys(options?: MemoryListOptions): Promise<string[]>;
|
|
11
|
+
entries<T = unknown>(options?: MemoryListOptions): Promise<Array<MemoryEntry<T>>>;
|
|
12
|
+
private filterEntries;
|
|
13
|
+
private getValidEntry;
|
|
14
|
+
private pruneExpired;
|
|
15
|
+
private isExpired;
|
|
16
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { InMemoryStore } from "./in-memory-store.js";
|
|
2
|
+
export { createMemoryStore } from "./factory.js";
|
|
3
|
+
export { createScopedMemoryStore } from "./scoped-store.js";
|
|
4
|
+
export type { CreateMemoryStoreOptions, MemoryEntry, MemoryListOptions, MemorySetOptions, MemoryStore, } from "./types.js";
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface MemorySetOptions {
|
|
2
|
+
ttlMs?: number;
|
|
3
|
+
}
|
|
4
|
+
export interface MemoryListOptions {
|
|
5
|
+
prefix?: string;
|
|
6
|
+
limit?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface MemoryEntry<T = unknown> {
|
|
9
|
+
key: string;
|
|
10
|
+
value: T;
|
|
11
|
+
createdAt: number;
|
|
12
|
+
updatedAt: number;
|
|
13
|
+
expiresAt?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface MemoryStore {
|
|
16
|
+
set<T = unknown>(key: string, value: T, options?: MemorySetOptions): Promise<MemoryEntry<T>>;
|
|
17
|
+
get<T = unknown>(key: string): Promise<T | undefined>;
|
|
18
|
+
getEntry<T = unknown>(key: string): Promise<MemoryEntry<T> | undefined>;
|
|
19
|
+
has(key: string): Promise<boolean>;
|
|
20
|
+
delete(key: string): Promise<boolean>;
|
|
21
|
+
clear(prefix?: string): Promise<number>;
|
|
22
|
+
keys(options?: MemoryListOptions): Promise<string[]>;
|
|
23
|
+
entries<T = unknown>(options?: MemoryListOptions): Promise<Array<MemoryEntry<T>>>;
|
|
24
|
+
}
|
|
25
|
+
export interface CreateMemoryStoreOptions {
|
|
26
|
+
type?: "in_memory";
|
|
27
|
+
}
|
package/dist/model/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Model
|
|
3
|
-
*
|
|
2
|
+
* Model APIs (simple surface):
|
|
3
|
+
* - parse LLM section
|
|
4
|
+
* - create model hub (generate + embed)
|
|
4
5
|
*/
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export * from "./chat/index.js";
|
|
6
|
+
export { parseLlmSection } from "./llm/parser.js";
|
|
7
|
+
export type { LLMType, LLMConfig, AgentConfigLlmSection } from "./llm/types.js";
|
|
8
8
|
export { createModelHub, type CreateModelHubOptions, type ModelHub, type ChatGenerateRequest, type ChatGenerateResult, } from "./hub/index.js";
|
package/dist/npm/index.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export { clearVersionCache, resolveNpmPackageVersion, resolveLatestVersionFromRegistry, formatProviderDisplay, getInstalledVersion, type ResolveNpmVersionOptions, } from "./version.js";
|
|
1
|
+
export { parseNpmProvider, parseNpmProviderSpec, type NpmProviderSpec, } from "./provider.js";
|
|
3
2
|
export { ensureNpmPackageInstalled, type EnsureNpmPackageInstalledOptions, } from "./install.js";
|
|
4
|
-
export { ensurePackageInCache,
|
|
5
|
-
export { runNpmCommand, assertNpmCommandSuccess, npmSearchJson, npmInstall, npmRunScript, npmPublish, npmRoot, type RunNpmCommandOptions, type NpmCommandResult, type NpmInstallOptions, type NpmPublishOptions, } from "./command.js";
|
|
3
|
+
export { ensurePackageInCache, importFromCache, type EnsurePackageInCacheOptions, } from "./cache.js";
|
package/dist/npm/index.js
CHANGED
|
@@ -1,45 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
|
-
NPM_PROTOCOL_PREFIX,
|
|
3
|
-
assertNpmCommandSuccess,
|
|
4
|
-
clearVersionCache,
|
|
5
2
|
ensureNpmPackageInstalled,
|
|
6
3
|
ensurePackageInCache,
|
|
7
|
-
formatProviderDisplay,
|
|
8
|
-
getInstalledVersion,
|
|
9
|
-
getPackageEntryPath,
|
|
10
4
|
importFromCache,
|
|
11
|
-
isNpmProviderSpec,
|
|
12
|
-
npmInstall,
|
|
13
|
-
npmPublish,
|
|
14
|
-
npmRoot,
|
|
15
|
-
npmRunScript,
|
|
16
|
-
npmSearchJson,
|
|
17
5
|
parseNpmProvider,
|
|
18
|
-
parseNpmProviderSpec
|
|
19
|
-
|
|
20
|
-
resolveNpmPackageVersion,
|
|
21
|
-
runNpmCommand
|
|
22
|
-
} from "../chunk-UDSSVJ5F.js";
|
|
6
|
+
parseNpmProviderSpec
|
|
7
|
+
} from "../chunk-D3XBAOOJ.js";
|
|
23
8
|
export {
|
|
24
|
-
NPM_PROTOCOL_PREFIX,
|
|
25
|
-
assertNpmCommandSuccess,
|
|
26
|
-
clearVersionCache,
|
|
27
9
|
ensureNpmPackageInstalled,
|
|
28
10
|
ensurePackageInCache,
|
|
29
|
-
formatProviderDisplay,
|
|
30
|
-
getInstalledVersion,
|
|
31
|
-
getPackageEntryPath,
|
|
32
11
|
importFromCache,
|
|
33
|
-
isNpmProviderSpec,
|
|
34
|
-
npmInstall,
|
|
35
|
-
npmPublish,
|
|
36
|
-
npmRoot,
|
|
37
|
-
npmRunScript,
|
|
38
|
-
npmSearchJson,
|
|
39
12
|
parseNpmProvider,
|
|
40
|
-
parseNpmProviderSpec
|
|
41
|
-
resolveLatestVersionFromRegistry,
|
|
42
|
-
resolveNpmPackageVersion,
|
|
43
|
-
runNpmCommand
|
|
13
|
+
parseNpmProviderSpec
|
|
44
14
|
};
|
|
45
15
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@easynet/agent-common",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.9",
|
|
4
4
|
"description": "Shared runtime utilities for Easynet agent projects",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -12,6 +12,9 @@
|
|
|
12
12
|
],
|
|
13
13
|
"config": [
|
|
14
14
|
"dist/config/index.d.ts"
|
|
15
|
+
],
|
|
16
|
+
"memory": [
|
|
17
|
+
"dist/memory/index.d.ts"
|
|
15
18
|
]
|
|
16
19
|
}
|
|
17
20
|
},
|
|
@@ -27,6 +30,10 @@
|
|
|
27
30
|
"./config": {
|
|
28
31
|
"types": "./dist/config/index.d.ts",
|
|
29
32
|
"import": "./dist/config/index.js"
|
|
33
|
+
},
|
|
34
|
+
"./memory": {
|
|
35
|
+
"types": "./dist/memory/index.d.ts",
|
|
36
|
+
"import": "./dist/memory/index.js"
|
|
30
37
|
}
|
|
31
38
|
},
|
|
32
39
|
"files": [
|
|
@@ -40,17 +47,37 @@
|
|
|
40
47
|
"release": "semantic-release"
|
|
41
48
|
},
|
|
42
49
|
"dependencies": {
|
|
50
|
+
"@azure/search-documents": "^12.2.0",
|
|
51
|
+
"better-sqlite3": "^12.6.2",
|
|
52
|
+
"cloudflare": "^5.2.0",
|
|
53
|
+
"mem0ai": "^2.2.2",
|
|
54
|
+
"neo4j-driver": "^6.0.1",
|
|
55
|
+
"sqlite-vec": "^0.1.7-alpha.2",
|
|
43
56
|
"yaml": "^2.8.1"
|
|
44
57
|
},
|
|
58
|
+
"peerDependencies": {
|
|
59
|
+
"@llamaindex/readers": "^3.1.21",
|
|
60
|
+
"llamaindex": "^0.12.1"
|
|
61
|
+
},
|
|
62
|
+
"peerDependenciesMeta": {
|
|
63
|
+
"llamaindex": {
|
|
64
|
+
"optional": true
|
|
65
|
+
},
|
|
66
|
+
"@llamaindex/readers": {
|
|
67
|
+
"optional": true
|
|
68
|
+
}
|
|
69
|
+
},
|
|
45
70
|
"devDependencies": {
|
|
46
71
|
"@semantic-release/commit-analyzer": "^13.0.0",
|
|
47
72
|
"@semantic-release/git": "^10.0.1",
|
|
48
73
|
"@semantic-release/npm": "^12.0.0",
|
|
49
74
|
"@semantic-release/release-notes-generator": "^14.0.0",
|
|
50
75
|
"@types/node": "^22.10.0",
|
|
76
|
+
"llamaindex": "^0.12.1",
|
|
51
77
|
"semantic-release": "^24.2.0",
|
|
52
78
|
"tsup": "^8.3.5",
|
|
53
|
-
"typescript": "^5.7.2"
|
|
79
|
+
"typescript": "^5.7.2",
|
|
80
|
+
"vitest": "^4.0.18"
|
|
54
81
|
},
|
|
55
82
|
"engines": {
|
|
56
83
|
"node": ">=18.0.0"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/npm/provider.ts","../src/npm/version.ts","../src/npm/install.ts","../src/npm/cache.ts","../src/npm/command.ts"],"sourcesContent":["export const NPM_PROTOCOL_PREFIX = \"npm:\";\n\nexport interface NpmProviderInfo {\n pkg: string;\n tag?: string;\n fragment?: string;\n}\n\nexport interface NpmProviderSpec {\n packageName: string;\n version?: string;\n provider?: string;\n}\n\nexport function isNpmProviderSpec(spec: unknown): spec is string {\n return typeof spec === \"string\" && spec.startsWith(NPM_PROTOCOL_PREFIX);\n}\n\nexport function parseNpmProvider(provider: string): NpmProviderInfo | null {\n if (!isNpmProviderSpec(provider)) return null;\n const rest = provider.slice(NPM_PROTOCOL_PREFIX.length);\n const hashIdx = rest.indexOf(\"#\");\n const fragment = hashIdx >= 0 ? rest.slice(hashIdx + 1) : undefined;\n const beforeHash = hashIdx >= 0 ? rest.slice(0, hashIdx) : rest;\n const atIdx = beforeHash.startsWith(\"@\") ? beforeHash.indexOf(\"@\", 1) : beforeHash.lastIndexOf(\"@\");\n const pkg = atIdx > 0 ? beforeHash.slice(0, atIdx) : beforeHash;\n const tag = atIdx > 0 ? beforeHash.slice(atIdx + 1) : undefined;\n return { pkg: pkg || beforeHash, tag: tag || undefined, fragment };\n}\n\nexport function parseNpmProviderSpec(spec: string): NpmProviderSpec | null {\n const parsed = parseNpmProvider(spec);\n if (!parsed) return null;\n return {\n packageName: parsed.pkg,\n version: parsed.tag,\n provider: parsed.fragment,\n };\n}\n","import { execFileSync } from \"node:child_process\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { parseNpmProvider } from \"./provider.js\";\n\ninterface VersionCacheEntry {\n version: string;\n timestamp: number;\n}\n\nconst versionCache = new Map<string, VersionCacheEntry>();\nconst CACHE_TTL = 5 * 60 * 1000;\n\nexport interface ResolveNpmVersionOptions {\n cwd?: string;\n timeoutMs?: number;\n}\n\nexport function clearVersionCache(): void {\n versionCache.clear();\n}\n\nexport function resolveNpmPackageVersion(pkg: string, tag?: string, options: ResolveNpmVersionOptions = {}): string | null {\n const cacheKey = tag ? `${pkg}@${tag}` : pkg;\n const cached = versionCache.get(cacheKey);\n if (cached && Date.now() - cached.timestamp < CACHE_TTL) {\n return cached.version;\n }\n\n try {\n const spec = tag ? `${pkg}@${tag}` : pkg;\n const out = execFileSync(\"npm\", [\"view\", spec, \"version\"], {\n cwd: options.cwd ?? process.cwd(),\n encoding: \"utf-8\",\n timeout: options.timeoutMs ?? 8000,\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n const version = out?.trim() ?? null;\n if (version) {\n versionCache.set(cacheKey, { version, timestamp: Date.now() });\n }\n return version;\n } catch {\n return null;\n }\n}\n\nexport function resolveLatestVersionFromRegistry(packageName: string, options: ResolveNpmVersionOptions = {}): string {\n const version = resolveNpmPackageVersion(packageName, undefined, options);\n if (!version) {\n throw new Error(`Failed to resolve latest version for ${packageName}`);\n }\n return version;\n}\n\nexport function formatProviderDisplay(provider: string): string {\n const parsed = parseNpmProvider(provider);\n if (parsed == null) return provider;\n\n const resolved = resolveNpmPackageVersion(parsed.pkg, parsed.tag);\n const version = resolved ?? parsed.tag ?? \"latest\";\n const frag = parsed.fragment ? `#${parsed.fragment}` : \"\";\n return `npm:${parsed.pkg}@${version}${frag}`;\n}\n\nexport function getInstalledVersion(packageName: string, options: { cwd?: string } = {}): string | null {\n let dir = path.resolve(options.cwd ?? process.cwd());\n const segs = packageName.split(\"/\");\n while (true) {\n const pkgJsonPath = path.join(dir, \"node_modules\", ...segs, \"package.json\");\n if (existsSync(pkgJsonPath)) {\n try {\n const j = JSON.parse(readFileSync(pkgJsonPath, \"utf-8\")) as { version?: string };\n return typeof j.version === \"string\" ? j.version : null;\n } catch {\n return null;\n }\n }\n const parent = path.dirname(dir);\n if (parent === dir) return null;\n dir = parent;\n }\n}\n","import { execFileSync } from \"node:child_process\";\nimport { getInstalledVersion, resolveLatestVersionFromRegistry } from \"./version.js\";\n\nconst VERSION_LATEST = \"latest\";\n\nexport interface EnsureNpmPackageInstalledOptions {\n version?: string;\n cwd?: string;\n stdio?: \"inherit\" | \"pipe\";\n noPackageLock?: boolean;\n logPrefix?: string;\n}\n\nasync function resolveInstallVersion(\n packageName: string,\n version: string | undefined,\n cwd: string,\n): Promise<string> {\n const isLatestOrEmpty =\n version === undefined ||\n version === \"\" ||\n (typeof version === \"string\" && version.toLowerCase() === VERSION_LATEST);\n if (isLatestOrEmpty) {\n return resolveLatestVersionFromRegistry(packageName, { cwd });\n }\n return version;\n}\n\nexport async function ensureNpmPackageInstalled(\n packageName: string,\n options: EnsureNpmPackageInstalledOptions = {},\n): Promise<void> {\n if (typeof packageName !== \"string\" || packageName.trim().length === 0) {\n throw new Error(\"ensureNpmPackageInstalled requires a non-empty package name\");\n }\n\n const cwd = options.cwd ?? process.cwd();\n const resolvedVersion = await resolveInstallVersion(packageName, options.version, cwd);\n const installedVersion = getInstalledVersion(packageName, { cwd });\n\n if (installedVersion === resolvedVersion) return;\n\n const installSpec = `${packageName}@${resolvedVersion}`;\n const prefix = options.logPrefix ?? \"[agent-common]\";\n if (installedVersion === null) {\n console.info(`${prefix} Installing provider: ${installSpec}`);\n } else {\n console.info(`${prefix} Updating provider: ${packageName} ${installedVersion} -> ${resolvedVersion}`);\n }\n\n const args = [\"install\", installSpec];\n if (options.noPackageLock !== false) args.push(\"--no-package-lock\");\n\n try {\n execFileSync(\"npm\", args, {\n cwd,\n stdio: options.stdio ?? \"inherit\",\n encoding: \"utf-8\",\n });\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n throw new Error(`npm install failed for ${installSpec}: ${msg}`, { cause: e });\n }\n}\n","import { execSync } from \"node:child_process\";\nimport { readFileSync, readdirSync, mkdirSync, rmSync, renameSync, existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { pathToFileURL } from \"node:url\";\nimport { resolveLatestVersionFromRegistry } from \"./version.js\";\n\nexport interface EnsurePackageInCacheOptions {\n cacheBase?: string;\n afterInstall?: (cacheDir: string, packageName: string) => void;\n}\n\nconst DEFAULT_CACHE_BASE = join(homedir(), \".agent\", \"cache\");\n\nfunction isLatestRequest(version: string): boolean {\n const v = (version ?? \"\").trim().toLowerCase();\n return v === \"\" || v === \"latest\";\n}\n\nfunction getCachedPackageVersion(cacheDir: string): string | undefined {\n const pkgPath = join(cacheDir, \"package.json\");\n if (!existsSync(pkgPath)) return undefined;\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\")) as { version?: string };\n return typeof pkg.version === \"string\" ? pkg.version : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction packagePathSegments(name: string): string[] {\n const withoutScope = name.replace(/^@/, \"\");\n return withoutScope.split(\"/\").filter(Boolean);\n}\n\nfunction resolveCacheDir(cacheBase: string, packageName: string, version: string): string {\n const segments = packagePathSegments(packageName);\n return join(cacheBase, ...segments, version);\n}\n\nexport function ensurePackageInCache(\n packageName: string,\n version: string = \"latest\",\n options: EnsurePackageInCacheOptions = {},\n): string {\n const cacheBase = options.cacheBase ?? DEFAULT_CACHE_BASE;\n const resolvedVersion = isLatestRequest(version)\n ? resolveLatestVersionFromRegistry(packageName)\n : version;\n\n const cacheDir = resolveCacheDir(cacheBase, packageName, resolvedVersion);\n const packageJsonPath = join(cacheDir, \"package.json\");\n const nodeModulesPath = join(cacheDir, \"node_modules\");\n\n if (existsSync(packageJsonPath) && existsSync(nodeModulesPath)) {\n const cachedVersion = getCachedPackageVersion(cacheDir);\n if (cachedVersion === resolvedVersion) {\n options.afterInstall?.(cacheDir, packageName);\n return cacheDir;\n }\n rmSync(cacheDir, { recursive: true, force: true });\n }\n\n const packDest = join(cacheBase, \".pack-tmp\", packageName.replace(/@/g, \"\").replace(/\\//g, \"_\"));\n mkdirSync(packDest, { recursive: true });\n\n try {\n execSync(`npm pack ${packageName}@${resolvedVersion} --pack-destination \"${packDest}\"`, {\n cwd: process.cwd(),\n stdio: \"pipe\",\n encoding: \"utf-8\",\n });\n\n const files = readdirSync(packDest);\n const tgz = files.find((f) => f.endsWith(\".tgz\"));\n if (!tgz) throw new Error(`npm pack did not produce a .tgz in ${packDest}`);\n\n const extractDir = join(packDest, \"extract\");\n mkdirSync(extractDir, { recursive: true });\n execSync(`tar -xzf \"${join(packDest, tgz)}\" -C \"${extractDir}\"`, {\n stdio: \"pipe\",\n encoding: \"utf-8\",\n });\n\n const extractedPackage = join(extractDir, \"package\");\n if (!existsSync(extractedPackage)) {\n throw new Error(`Extracted tarball did not contain \\\"package\\\" dir in ${extractDir}`);\n }\n\n mkdirSync(join(cacheDir, \"..\"), { recursive: true });\n if (existsSync(cacheDir)) rmSync(cacheDir, { recursive: true, force: true });\n renameSync(extractedPackage, cacheDir);\n\n const npmInstallTimeout = 120_000;\n const maxAttempts = 3;\n for (let attempt = 1; attempt <= maxAttempts; attempt++) {\n try {\n execSync(\"npm install --prefer-offline --no-audit --no-fund\", {\n cwd: cacheDir,\n stdio: \"pipe\",\n encoding: \"utf-8\",\n timeout: npmInstallTimeout,\n });\n break;\n } catch (err) {\n if (attempt >= maxAttempts) {\n const lastErr = err instanceof Error ? err : new Error(String(err));\n throw new Error(`npm install in cache failed after ${maxAttempts} attempts: ${lastErr.message}`);\n }\n const delayMs = 5_000 * attempt;\n const deadline = Date.now() + delayMs;\n while (Date.now() < deadline) {\n // retry delay\n }\n }\n }\n\n options.afterInstall?.(cacheDir, packageName);\n return cacheDir;\n } finally {\n if (existsSync(packDest)) rmSync(packDest, { recursive: true, force: true });\n }\n}\n\nexport function getPackageEntryPath(packageRoot: string): string {\n const pkgPath = join(packageRoot, \"package.json\");\n if (!existsSync(pkgPath)) throw new Error(`No package.json in ${packageRoot}`);\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\")) as { main?: string };\n const main = pkg.main ?? \"dist/index.js\";\n const entry = join(packageRoot, main);\n if (!existsSync(entry)) throw new Error(`Entry not found: ${entry}`);\n return entry;\n}\n\nexport async function importFromCache(packageRoot: string): Promise<unknown> {\n const entryPath = getPackageEntryPath(packageRoot);\n const fileUrl = pathToFileURL(entryPath).href;\n return import(/* @vite-ignore */ fileUrl);\n}\n","import { spawnSync } from \"node:child_process\";\n\nexport interface RunNpmCommandOptions {\n cwd?: string;\n env?: NodeJS.ProcessEnv;\n timeoutMs?: number;\n stdio?: \"pipe\" | \"inherit\";\n shell?: boolean;\n}\n\nexport interface NpmCommandResult {\n args: string[];\n status: number | null;\n stdout: string;\n stderr: string;\n signal: NodeJS.Signals | null;\n error?: Error;\n}\n\nexport interface NpmInstallOptions extends RunNpmCommandOptions {\n packages?: string[];\n global?: boolean;\n noPackageLock?: boolean;\n legacyPeerDeps?: boolean;\n registry?: string;\n}\n\nexport interface NpmPublishOptions extends RunNpmCommandOptions {\n tag?: string;\n access?: \"public\" | \"restricted\";\n registry?: string;\n}\n\nfunction normalizeOutput(v: unknown): string {\n return typeof v === \"string\" ? v : \"\";\n}\n\nexport function runNpmCommand(args: string[], options: RunNpmCommandOptions = {}): NpmCommandResult {\n const result = spawnSync(\"npm\", args, {\n cwd: options.cwd ?? process.cwd(),\n env: options.env ?? process.env,\n encoding: \"utf-8\",\n timeout: options.timeoutMs,\n stdio: options.stdio ?? \"pipe\",\n shell: options.shell ?? false,\n });\n\n return {\n args,\n status: result.status,\n stdout: normalizeOutput(result.stdout),\n stderr: normalizeOutput(result.stderr),\n signal: result.signal,\n error: result.error ?? undefined,\n };\n}\n\nexport function assertNpmCommandSuccess(result: NpmCommandResult, context: string): void {\n if (!result.error && result.status === 0) return;\n const details =\n result.error?.message ||\n result.stderr.trim() ||\n (result.status == null ? \"terminated\" : `exit code ${result.status}`);\n throw new Error(`${context} failed: npm ${result.args.join(\" \")} (${details})`);\n}\n\nexport function npmSearchJson(query: string, options: RunNpmCommandOptions = {}): unknown[] {\n const result = runNpmCommand([\"search\", query, \"--json\"], options);\n if (result.error || result.status !== 0) return [];\n const text = result.stdout.trim();\n if (!text) return [];\n try {\n const parsed = JSON.parse(text) as unknown;\n return Array.isArray(parsed) ? parsed : [];\n } catch {\n return [];\n }\n}\n\nexport function npmInstall(options: NpmInstallOptions = {}): void {\n const args: string[] = [\"install\"];\n if (options.global) args.push(\"-g\");\n if (options.registry) args.push(\"--registry\", options.registry);\n if (options.legacyPeerDeps) args.push(\"--legacy-peer-deps\");\n if (options.noPackageLock) args.push(\"--no-package-lock\");\n if (Array.isArray(options.packages) && options.packages.length > 0) {\n args.push(...options.packages);\n }\n const result = runNpmCommand(args, options);\n assertNpmCommandSuccess(result, \"npm install\");\n}\n\nexport function npmRunScript(script: string, options: RunNpmCommandOptions = {}): void {\n const result = runNpmCommand([\"run\", script], options);\n assertNpmCommandSuccess(result, `npm run ${script}`);\n}\n\nexport function npmPublish(options: NpmPublishOptions = {}): void {\n const args: string[] = [\"publish\"];\n if (options.tag) args.push(\"--tag\", options.tag);\n if (options.access) args.push(\"--access\", options.access);\n if (options.registry) args.push(\"--registry\", options.registry);\n const result = runNpmCommand(args, options);\n assertNpmCommandSuccess(result, \"npm publish\");\n}\n\nexport function npmRoot(options: RunNpmCommandOptions & { global?: boolean } = {}): string {\n const args = [\"root\", ...(options.global ? [\"-g\"] : [])];\n const result = runNpmCommand(args, options);\n assertNpmCommandSuccess(result, \"npm root\");\n return result.stdout.trim();\n}\n"],"mappings":"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","names":["execFileSync","execFileSync","readFileSync","existsSync","existsSync","readFileSync"]}
|