@yuihub/server 1.0.0-beta.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.
- package/LICENSE +21 -0
- package/dist/api/text-process.d.ts +2 -0
- package/dist/api/text-process.d.ts.map +1 -0
- package/dist/api/text-process.js +48 -0
- package/dist/api/text-process.js.map +1 -0
- package/dist/auth.d.ts +30 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +71 -0
- package/dist/auth.js.map +1 -0
- package/dist/cli/setup.d.ts +2 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +120 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/config/schema.d.ts +334 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +45 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/service.d.ts +12 -0
- package/dist/config/service.d.ts.map +1 -0
- package/dist/config/service.js +81 -0
- package/dist/config/service.js.map +1 -0
- package/dist/engine/agent/context.d.ts +35 -0
- package/dist/engine/agent/context.d.ts.map +1 -0
- package/dist/engine/agent/context.js +72 -0
- package/dist/engine/agent/context.js.map +1 -0
- package/dist/engine/agent/core.d.ts +19 -0
- package/dist/engine/agent/core.d.ts.map +1 -0
- package/dist/engine/agent/core.js +67 -0
- package/dist/engine/agent/core.js.map +1 -0
- package/dist/engine/agent/live-context.d.ts +8 -0
- package/dist/engine/agent/live-context.d.ts.map +1 -0
- package/dist/engine/agent/live-context.js +19 -0
- package/dist/engine/agent/live-context.js.map +1 -0
- package/dist/engine/agent/tools/fs.d.ts +16 -0
- package/dist/engine/agent/tools/fs.d.ts.map +1 -0
- package/dist/engine/agent/tools/fs.js +78 -0
- package/dist/engine/agent/tools/fs.js.map +1 -0
- package/dist/engine/agent/tools/memory.d.ts +18 -0
- package/dist/engine/agent/tools/memory.d.ts.map +1 -0
- package/dist/engine/agent/tools/memory.js +51 -0
- package/dist/engine/agent/tools/memory.js.map +1 -0
- package/dist/engine/ai/local-genai-service.d.ts +22 -0
- package/dist/engine/ai/local-genai-service.d.ts.map +1 -0
- package/dist/engine/ai/local-genai-service.js +158 -0
- package/dist/engine/ai/local-genai-service.js.map +1 -0
- package/dist/engine/ai/registry.d.ts +16 -0
- package/dist/engine/ai/registry.d.ts.map +1 -0
- package/dist/engine/ai/registry.js +78 -0
- package/dist/engine/ai/registry.js.map +1 -0
- package/dist/engine/ai/tools.d.ts +7 -0
- package/dist/engine/ai/tools.d.ts.map +1 -0
- package/dist/engine/ai/tools.js +2 -0
- package/dist/engine/ai/tools.js.map +1 -0
- package/dist/engine/ai/types.d.ts +21 -0
- package/dist/engine/ai/types.d.ts.map +1 -0
- package/dist/engine/ai/types.js +2 -0
- package/dist/engine/ai/types.js.map +1 -0
- package/dist/engine/ai/vertex-genai-service.d.ts +13 -0
- package/dist/engine/ai/vertex-genai-service.d.ts.map +1 -0
- package/dist/engine/ai/vertex-genai-service.js +93 -0
- package/dist/engine/ai/vertex-genai-service.js.map +1 -0
- package/dist/engine/chunker.d.ts +19 -0
- package/dist/engine/chunker.d.ts.map +1 -0
- package/dist/engine/chunker.js +79 -0
- package/dist/engine/chunker.js.map +1 -0
- package/dist/engine/composite-vector-store.d.ts +21 -0
- package/dist/engine/composite-vector-store.d.ts.map +1 -0
- package/dist/engine/composite-vector-store.js +69 -0
- package/dist/engine/composite-vector-store.js.map +1 -0
- package/dist/engine/embeddings/local-service.d.ts +10 -0
- package/dist/engine/embeddings/local-service.d.ts.map +1 -0
- package/dist/engine/embeddings/local-service.js +37 -0
- package/dist/engine/embeddings/local-service.js.map +1 -0
- package/dist/engine/embeddings/types.d.ts +10 -0
- package/dist/engine/embeddings/types.d.ts.map +1 -0
- package/dist/engine/embeddings/types.js +2 -0
- package/dist/engine/embeddings/types.js.map +1 -0
- package/dist/engine/embeddings/vertex-service.d.ts +11 -0
- package/dist/engine/embeddings/vertex-service.d.ts.map +1 -0
- package/dist/engine/embeddings/vertex-service.js +45 -0
- package/dist/engine/embeddings/vertex-service.js.map +1 -0
- package/dist/engine/indexer.d.ts +12 -0
- package/dist/engine/indexer.d.ts.map +1 -0
- package/dist/engine/indexer.js +74 -0
- package/dist/engine/indexer.js.map +1 -0
- package/dist/engine/lock.d.ts +24 -0
- package/dist/engine/lock.d.ts.map +1 -0
- package/dist/engine/lock.js +58 -0
- package/dist/engine/lock.js.map +1 -0
- package/dist/engine/schema.d.ts +19 -0
- package/dist/engine/schema.d.ts.map +1 -0
- package/dist/engine/schema.js +18 -0
- package/dist/engine/schema.js.map +1 -0
- package/dist/engine/vector-store-types.d.ts +24 -0
- package/dist/engine/vector-store-types.d.ts.map +1 -0
- package/dist/engine/vector-store-types.js +2 -0
- package/dist/engine/vector-store-types.js.map +1 -0
- package/dist/engine/vector-store.d.ts +21 -0
- package/dist/engine/vector-store.d.ts.map +1 -0
- package/dist/engine/vector-store.js +105 -0
- package/dist/engine/vector-store.js.map +1 -0
- package/dist/engine/watcher.d.ts +16 -0
- package/dist/engine/watcher.d.ts.map +1 -0
- package/dist/engine/watcher.js +94 -0
- package/dist/engine/watcher.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +360 -0
- package/dist/server.js.map +1 -0
- package/dist/sync/github-provider.d.ts +20 -0
- package/dist/sync/github-provider.d.ts.map +1 -0
- package/dist/sync/github-provider.js +80 -0
- package/dist/sync/github-provider.js.map +1 -0
- package/dist/sync/scheduler.d.ts +18 -0
- package/dist/sync/scheduler.d.ts.map +1 -0
- package/dist/sync/scheduler.js +67 -0
- package/dist/sync/scheduler.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
export const AppConfigSchema = z.object({
|
|
3
|
+
server: z.object({
|
|
4
|
+
port: z.number().default(4182),
|
|
5
|
+
host: z.string().default('0.0.0.0'),
|
|
6
|
+
}),
|
|
7
|
+
sync: z.object({
|
|
8
|
+
enabled: z.boolean().default(false),
|
|
9
|
+
remoteUrl: z.string().optional(),
|
|
10
|
+
interval: z.string().default('*/5 * * * *'), // Cron syntax
|
|
11
|
+
branch: z.string().default('main'),
|
|
12
|
+
}),
|
|
13
|
+
ai: z.object({
|
|
14
|
+
providers: z.record(z.string(), z.union([
|
|
15
|
+
z.object({
|
|
16
|
+
type: z.literal('local'),
|
|
17
|
+
embeddingModel: z.string().default('Xenova/bge-m3'),
|
|
18
|
+
}),
|
|
19
|
+
z.object({
|
|
20
|
+
type: z.literal('vertex'),
|
|
21
|
+
projectId: z.string().optional(), // Optional (ADC)
|
|
22
|
+
location: z.string().optional(), // e.g. 'us-central1'
|
|
23
|
+
embeddingModel: z.string().default('gemini-embedding-001'),
|
|
24
|
+
chatModel: z.string().default('gemini-2.5-flash'),
|
|
25
|
+
})
|
|
26
|
+
])).default({
|
|
27
|
+
'local': { type: 'local', embeddingModel: 'Xenova/bge-m3' }
|
|
28
|
+
}),
|
|
29
|
+
defaults: z.object({
|
|
30
|
+
embedding: z.array(z.string()).default(['local']),
|
|
31
|
+
agent: z.string().default('local'),
|
|
32
|
+
}).default({
|
|
33
|
+
embedding: ['local'],
|
|
34
|
+
agent: 'local'
|
|
35
|
+
}),
|
|
36
|
+
}),
|
|
37
|
+
// System managed paths, not in json usually but resolved at runtime
|
|
38
|
+
storage: z.object({
|
|
39
|
+
dataDir: z.string(),
|
|
40
|
+
}).optional(),
|
|
41
|
+
});
|
|
42
|
+
// Export Partial type for updates
|
|
43
|
+
// Note: Using .partial() as deepPartial() is not available in all Zod versions.
|
|
44
|
+
export const AppConfigUpdateSchema = AppConfigSchema.partial();
|
|
45
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;KACpC,CAAC;IACF,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,cAAc;QAC3D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;KACnC,CAAC;IACF,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;QACX,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;YACtC,CAAC,CAAC,MAAM,CAAC;gBACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;gBACxB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC;aACpD,CAAC;YACF,CAAC,CAAC,MAAM,CAAC;gBACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,iBAAiB;gBACnD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAG,qBAAqB;gBACvD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC;gBAC1D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC;aAClD,CAAC;SACH,CAAC,CAAC,CAAC,OAAO,CAAC;YACV,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE;SAC5D,CAAC;QACF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;YACjD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;SACnC,CAAC,CAAC,OAAO,CAAC;YACT,SAAS,EAAE,CAAC,OAAO,CAAC;YACpB,KAAK,EAAE,OAAO;SACf,CAAC;KACH,CAAC;IACF,oEAAoE;IACpE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CAAC,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,kCAAkC;AAClC,gFAAgF;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AppConfig, AppConfigUpdate } from './schema.js';
|
|
2
|
+
export declare class ConfigService {
|
|
3
|
+
private config;
|
|
4
|
+
private configPath;
|
|
5
|
+
private dataDir;
|
|
6
|
+
constructor(dataDir: string);
|
|
7
|
+
private loadConfig;
|
|
8
|
+
get(): AppConfig;
|
|
9
|
+
update(newConfig: AppConfigUpdate): Promise<AppConfig>;
|
|
10
|
+
getConfigPath(): string;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/config/service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAmB,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1E,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM;IAM3B,OAAO,CAAC,UAAU;IAoClB,GAAG,IAAI,SAAS;IAIV,MAAM,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IA6B5D,aAAa,IAAI,MAAM;CAGxB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { AppConfigSchema } from './schema.js';
|
|
4
|
+
export class ConfigService {
|
|
5
|
+
config;
|
|
6
|
+
configPath;
|
|
7
|
+
dataDir;
|
|
8
|
+
constructor(dataDir) {
|
|
9
|
+
this.dataDir = dataDir;
|
|
10
|
+
this.configPath = path.join(dataDir, 'yuihub.config.json');
|
|
11
|
+
this.config = this.loadConfig();
|
|
12
|
+
}
|
|
13
|
+
loadConfig() {
|
|
14
|
+
// 1. Defaults
|
|
15
|
+
let config = AppConfigSchema.parse({
|
|
16
|
+
server: {},
|
|
17
|
+
sync: {},
|
|
18
|
+
ai: {},
|
|
19
|
+
storage: { dataDir: this.dataDir }
|
|
20
|
+
});
|
|
21
|
+
// 2. Load from JSON
|
|
22
|
+
if (fs.existsSync(this.configPath)) {
|
|
23
|
+
try {
|
|
24
|
+
const fileContent = fs.readJsonSync(this.configPath);
|
|
25
|
+
// Merge file content with defaults.
|
|
26
|
+
const merged = {
|
|
27
|
+
...config,
|
|
28
|
+
...fileContent,
|
|
29
|
+
server: { ...config.server, ...fileContent.server },
|
|
30
|
+
sync: { ...config.sync, ...fileContent.sync },
|
|
31
|
+
ai: { ...config.ai, ...fileContent.ai },
|
|
32
|
+
};
|
|
33
|
+
config = AppConfigSchema.parse(merged);
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
console.warn('[Config] Failed to load config file:', e);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// 3. Env Vars Override (Priority)
|
|
40
|
+
if (process.env.YUIHUB_PORT)
|
|
41
|
+
config.server.port = parseInt(process.env.YUIHUB_PORT);
|
|
42
|
+
if (process.env.YUIHUB_HOST)
|
|
43
|
+
config.server.host = process.env.YUIHUB_HOST;
|
|
44
|
+
if (process.env.GIT_REMOTE)
|
|
45
|
+
config.sync.remoteUrl = process.env.GIT_REMOTE;
|
|
46
|
+
if (process.env.ENABLE_SYNC)
|
|
47
|
+
config.sync.enabled = process.env.ENABLE_SYNC === 'true';
|
|
48
|
+
return config;
|
|
49
|
+
}
|
|
50
|
+
get() {
|
|
51
|
+
return this.config;
|
|
52
|
+
}
|
|
53
|
+
async update(newConfig) {
|
|
54
|
+
// Deep merge for update
|
|
55
|
+
const current = this.config;
|
|
56
|
+
const merged = {
|
|
57
|
+
...current,
|
|
58
|
+
...newConfig,
|
|
59
|
+
server: { ...current.server, ...(newConfig.server || {}) },
|
|
60
|
+
sync: { ...current.sync, ...(newConfig.sync || {}) },
|
|
61
|
+
ai: { ...current.ai, ...(newConfig.ai || {}) },
|
|
62
|
+
// Storage is system managed, usually not updated via API but if passed...
|
|
63
|
+
storage: { ...current.storage, ...(newConfig.storage || {}) }
|
|
64
|
+
};
|
|
65
|
+
// Validate
|
|
66
|
+
const validated = AppConfigSchema.parse(merged);
|
|
67
|
+
this.config = validated;
|
|
68
|
+
// Save to Disk (only persistence parts)
|
|
69
|
+
const toSave = {
|
|
70
|
+
server: validated.server,
|
|
71
|
+
sync: validated.sync,
|
|
72
|
+
ai: validated.ai
|
|
73
|
+
};
|
|
74
|
+
await fs.writeJson(this.configPath, toSave, { spaces: 2 });
|
|
75
|
+
return this.config;
|
|
76
|
+
}
|
|
77
|
+
getConfigPath() {
|
|
78
|
+
return this.configPath;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/config/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentContext - Manages working memory and session state for the Agent loop
|
|
3
|
+
*/
|
|
4
|
+
import { Checkpoint } from '@yuihub/core';
|
|
5
|
+
export interface ContextPacket {
|
|
6
|
+
session_id: string;
|
|
7
|
+
intent: string;
|
|
8
|
+
working_memory: Record<string, unknown>;
|
|
9
|
+
checkpoints: Checkpoint[];
|
|
10
|
+
created_at: string;
|
|
11
|
+
updated_at: string;
|
|
12
|
+
}
|
|
13
|
+
export interface IAgentContext {
|
|
14
|
+
getPacket(): ContextPacket;
|
|
15
|
+
getIntent(): string;
|
|
16
|
+
setIntent(intent: string): void;
|
|
17
|
+
getWorkingMemory(): Record<string, unknown>;
|
|
18
|
+
setWorkingMemory(key: string, value: unknown): void;
|
|
19
|
+
createCheckpoint(summary: string, intent: string): Promise<Checkpoint>;
|
|
20
|
+
save(): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
export declare class AgentContext implements IAgentContext {
|
|
23
|
+
private packet;
|
|
24
|
+
private dataDir;
|
|
25
|
+
constructor(sessionId: string, dataDir: string);
|
|
26
|
+
getPacket(): ContextPacket;
|
|
27
|
+
getIntent(): string;
|
|
28
|
+
setIntent(intent: string): void;
|
|
29
|
+
getWorkingMemory(): Record<string, unknown>;
|
|
30
|
+
setWorkingMemory(key: string, value: unknown): void;
|
|
31
|
+
createCheckpoint(summary: string, intent: string): Promise<Checkpoint>;
|
|
32
|
+
static loadOrCreate(sessionId: string, dataDir: string): Promise<AgentContext>;
|
|
33
|
+
save(): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/engine/agent/context.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,IAAI,aAAa,CAAC;IAC3B,SAAS,IAAI,MAAM,CAAC;IACpB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACpD,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACvE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB;AAED,qBAAa,YAAa,YAAW,aAAa;IAChD,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAS;gBAEZ,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAY9C,SAAS,IAAI,aAAa;IAI1B,SAAS,IAAI,MAAM;IAInB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK/B,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI3C,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAK7C,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;WAyB/D,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAY9E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAM5B"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { ulid } from 'ulid';
|
|
4
|
+
export class AgentContext {
|
|
5
|
+
packet;
|
|
6
|
+
dataDir;
|
|
7
|
+
constructor(sessionId, dataDir) {
|
|
8
|
+
this.dataDir = dataDir;
|
|
9
|
+
this.packet = {
|
|
10
|
+
session_id: sessionId,
|
|
11
|
+
intent: '',
|
|
12
|
+
working_memory: {},
|
|
13
|
+
checkpoints: [],
|
|
14
|
+
created_at: new Date().toISOString(),
|
|
15
|
+
updated_at: new Date().toISOString(),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
getPacket() {
|
|
19
|
+
return { ...this.packet };
|
|
20
|
+
}
|
|
21
|
+
getIntent() {
|
|
22
|
+
return this.packet.intent;
|
|
23
|
+
}
|
|
24
|
+
setIntent(intent) {
|
|
25
|
+
this.packet.intent = intent;
|
|
26
|
+
this.packet.updated_at = new Date().toISOString();
|
|
27
|
+
}
|
|
28
|
+
getWorkingMemory() {
|
|
29
|
+
return { ...this.packet.working_memory };
|
|
30
|
+
}
|
|
31
|
+
setWorkingMemory(key, value) {
|
|
32
|
+
this.packet.working_memory[key] = value;
|
|
33
|
+
this.packet.updated_at = new Date().toISOString();
|
|
34
|
+
}
|
|
35
|
+
async createCheckpoint(summary, intent) {
|
|
36
|
+
const checkpoint = {
|
|
37
|
+
id: ulid(),
|
|
38
|
+
entry_id: '', // No linked entry for agent-created checkpoints
|
|
39
|
+
snapshot: {
|
|
40
|
+
working_memory: JSON.stringify(this.packet.working_memory),
|
|
41
|
+
decision_rationale: summary,
|
|
42
|
+
},
|
|
43
|
+
created_at: new Date().toISOString(),
|
|
44
|
+
};
|
|
45
|
+
this.packet.checkpoints.push(checkpoint);
|
|
46
|
+
this.packet.intent = intent;
|
|
47
|
+
this.packet.updated_at = new Date().toISOString();
|
|
48
|
+
// Persist checkpoint to file
|
|
49
|
+
const checkpointDir = path.join(this.dataDir, 'checkpoints');
|
|
50
|
+
await fs.ensureDir(checkpointDir);
|
|
51
|
+
const checkpointFile = path.join(checkpointDir, `${checkpoint.id}.json`);
|
|
52
|
+
await fs.writeJson(checkpointFile, checkpoint, { spaces: 2 });
|
|
53
|
+
return checkpoint;
|
|
54
|
+
}
|
|
55
|
+
// Static factory to load existing context from session
|
|
56
|
+
static async loadOrCreate(sessionId, dataDir) {
|
|
57
|
+
const contextFile = path.join(dataDir, 'contexts', `${sessionId}.json`);
|
|
58
|
+
const context = new AgentContext(sessionId, dataDir);
|
|
59
|
+
if (await fs.pathExists(contextFile)) {
|
|
60
|
+
const savedPacket = await fs.readJson(contextFile);
|
|
61
|
+
context.packet = { ...context.packet, ...savedPacket };
|
|
62
|
+
}
|
|
63
|
+
return context;
|
|
64
|
+
}
|
|
65
|
+
async save() {
|
|
66
|
+
const contextDir = path.join(this.dataDir, 'contexts');
|
|
67
|
+
await fs.ensureDir(contextDir);
|
|
68
|
+
const contextFile = path.join(contextDir, `${this.packet.session_id}.json`);
|
|
69
|
+
await fs.writeJson(contextFile, this.packet, { spaces: 2 });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/engine/agent/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IGenAIService } from '../ai/types.js';
|
|
2
|
+
export interface AgentConfig {
|
|
3
|
+
genAI: IGenAIService;
|
|
4
|
+
rootDir: string;
|
|
5
|
+
dataDir: string;
|
|
6
|
+
sessionId?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class Agent {
|
|
9
|
+
private genAI;
|
|
10
|
+
private rootDir;
|
|
11
|
+
private dataDir;
|
|
12
|
+
private sessionId;
|
|
13
|
+
private maxTurns;
|
|
14
|
+
private context;
|
|
15
|
+
constructor(config: AgentConfig);
|
|
16
|
+
run(prompt: string, contextStr?: string): Promise<string>;
|
|
17
|
+
private executeTool;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/engine/agent/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAyB,MAAM,gBAAgB,CAAC;AAMtE,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,qBAAa,KAAK;IACd,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,OAAO,CAA8B;gBAEjC,MAAM,EAAE,WAAW;IAOzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YA2CjD,WAAW;CAiB5B"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { FSTools, FSToolImplementations } from './tools/fs.js';
|
|
2
|
+
import { MemoryTools, MemoryToolImplementations } from './tools/memory.js';
|
|
3
|
+
import { AgentContext } from './context.js';
|
|
4
|
+
export class Agent {
|
|
5
|
+
genAI;
|
|
6
|
+
rootDir;
|
|
7
|
+
dataDir;
|
|
8
|
+
sessionId;
|
|
9
|
+
maxTurns = 10;
|
|
10
|
+
context = null;
|
|
11
|
+
constructor(config) {
|
|
12
|
+
this.genAI = config.genAI;
|
|
13
|
+
this.rootDir = config.rootDir;
|
|
14
|
+
this.dataDir = config.dataDir;
|
|
15
|
+
this.sessionId = config.sessionId || `agent-${Date.now()}`;
|
|
16
|
+
}
|
|
17
|
+
async run(prompt, contextStr) {
|
|
18
|
+
// Initialize AgentContext for this session
|
|
19
|
+
this.context = await AgentContext.loadOrCreate(this.sessionId, this.dataDir);
|
|
20
|
+
// Construct system prompt with tools and context
|
|
21
|
+
let messages = [
|
|
22
|
+
`System: You are YuiHub Autonomous Agent. You have access to the file system and memory tools.`,
|
|
23
|
+
`Context: ${contextStr || 'No additional context provided.'}`,
|
|
24
|
+
`User: ${prompt}`
|
|
25
|
+
];
|
|
26
|
+
let currentPrompt = messages.join('\n\n');
|
|
27
|
+
const tools = [...FSTools, ...MemoryTools];
|
|
28
|
+
for (let i = 0; i < this.maxTurns; i++) {
|
|
29
|
+
console.log(`[Agent] Turn ${i + 1}/${this.maxTurns}`);
|
|
30
|
+
const result = await this.genAI.generate(currentPrompt, tools);
|
|
31
|
+
if (result.toolCalls && result.toolCalls.length > 0) {
|
|
32
|
+
// Execute tools
|
|
33
|
+
let toolOutputs = "";
|
|
34
|
+
for (const call of result.toolCalls) {
|
|
35
|
+
console.log(`[Agent] Tool Call: ${call.name}`);
|
|
36
|
+
const output = await this.executeTool(call);
|
|
37
|
+
toolOutputs += `\nTool Output (${call.name}): ${output}\n`;
|
|
38
|
+
}
|
|
39
|
+
// Append result text (thought) and tool outputs to prompt for next turn
|
|
40
|
+
currentPrompt += `\n${result.text || ''}\n${toolOutputs}`;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
// Final answer - save context before returning
|
|
44
|
+
await this.context.save();
|
|
45
|
+
return result.text;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Save context even on max turns
|
|
49
|
+
await this.context.save();
|
|
50
|
+
return "Agent max turns reached.";
|
|
51
|
+
}
|
|
52
|
+
async executeTool(call) {
|
|
53
|
+
const { name, args } = call;
|
|
54
|
+
// FS Tools dispatch
|
|
55
|
+
if (name in FSToolImplementations) {
|
|
56
|
+
const fn = FSToolImplementations[name];
|
|
57
|
+
return fn(args, this.rootDir);
|
|
58
|
+
}
|
|
59
|
+
// Memory Tools dispatch - requires context
|
|
60
|
+
if (name in MemoryToolImplementations && this.context) {
|
|
61
|
+
const fn = MemoryToolImplementations[name];
|
|
62
|
+
return fn(args, this.context);
|
|
63
|
+
}
|
|
64
|
+
return `Error: Tool ${name} not found.`;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/engine/agent/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-context.d.ts","sourceRoot":"","sources":["../../../src/engine/agent/live-context.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,SAAS,CAAc;;IAI/B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IASnC,WAAW,IAAI,MAAM;CAIxB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export class LiveContextService {
|
|
2
|
+
events = [];
|
|
3
|
+
maxEvents = 50;
|
|
4
|
+
constructor() { }
|
|
5
|
+
addEvent(type, path) {
|
|
6
|
+
const timestamp = new Date().toISOString();
|
|
7
|
+
const event = `[${timestamp}] ${type}: ${path}`;
|
|
8
|
+
this.events.push(event);
|
|
9
|
+
if (this.events.length > this.maxEvents) {
|
|
10
|
+
this.events.shift();
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
getSnapshot() {
|
|
14
|
+
if (this.events.length === 0)
|
|
15
|
+
return "No recent file changes.";
|
|
16
|
+
return "Recent File Changes:\n" + this.events.join('\n');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=live-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-context.js","sourceRoot":"","sources":["../../../src/engine/agent/live-context.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,kBAAkB;IACnB,MAAM,GAAa,EAAE,CAAC;IACtB,SAAS,GAAW,EAAE,CAAC;IAE/B,gBAAe,CAAC;IAEhB,QAAQ,CAAC,IAAY,EAAE,IAAY;QAC/B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,SAAS,KAAK,IAAI,KAAK,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;IACL,CAAC;IAED,WAAW;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,yBAAyB,CAAC;QAC/D,OAAO,wBAAwB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;CACJ"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ToolDef } from '../../ai/tools.js';
|
|
2
|
+
export declare const FSTools: ToolDef[];
|
|
3
|
+
export declare const FSToolImplementations: {
|
|
4
|
+
list_files: (args: {
|
|
5
|
+
path: string;
|
|
6
|
+
depth?: number;
|
|
7
|
+
}, rootDir: string) => Promise<string>;
|
|
8
|
+
read_file: (args: {
|
|
9
|
+
path: string;
|
|
10
|
+
}, rootDir: string) => Promise<string>;
|
|
11
|
+
grep_search: (args: {
|
|
12
|
+
query: string;
|
|
13
|
+
path?: string;
|
|
14
|
+
}, rootDir: string) => Promise<string>;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=fs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../../src/engine/agent/tools/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAS5C,eAAO,MAAM,OAAO,EAAE,OAAO,EAwB5B,CAAC;AAEF,eAAO,MAAM,qBAAqB;uBACP;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,WAAW,MAAM;sBAgBlD;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,WAAW,MAAM;wBAa/B;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,WAAW,MAAM;CAe5E,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
import fs from 'fs-extra';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import { exec } from 'child_process';
|
|
5
|
+
import util from 'util';
|
|
6
|
+
const execAsync = util.promisify(exec);
|
|
7
|
+
export const FSTools = [
|
|
8
|
+
{
|
|
9
|
+
name: 'list_files',
|
|
10
|
+
description: 'List files in a directory recursively. Respects .gitignore via fd or find if possible, otherwise simple scan.',
|
|
11
|
+
parameters: z.object({
|
|
12
|
+
path: z.string().describe('Relative path to list from root'),
|
|
13
|
+
depth: z.number().optional().describe('Depth to traverse'),
|
|
14
|
+
}),
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'read_file',
|
|
18
|
+
description: 'Read the contents of a file.',
|
|
19
|
+
parameters: z.object({
|
|
20
|
+
path: z.string().describe('Path to the file to read'),
|
|
21
|
+
}),
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
name: 'grep_search',
|
|
25
|
+
description: 'Search for a string or pattern in files.',
|
|
26
|
+
parameters: z.object({
|
|
27
|
+
query: z.string().describe('Search query (regex or text)'),
|
|
28
|
+
path: z.string().optional().describe('Path to search in'),
|
|
29
|
+
}),
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
export const FSToolImplementations = {
|
|
33
|
+
list_files: async (args, rootDir) => {
|
|
34
|
+
const targetPath = path.resolve(rootDir, args.path || '.');
|
|
35
|
+
// Security check
|
|
36
|
+
if (!targetPath.startsWith(rootDir)) {
|
|
37
|
+
throw new Error('Access denied: Path outside root');
|
|
38
|
+
}
|
|
39
|
+
// Quick implementation using fs readdir recursive or find
|
|
40
|
+
try {
|
|
41
|
+
const result = await execAsync(`find "${targetPath}" -maxdepth ${args.depth || 2} -not -path '*/.*'`);
|
|
42
|
+
return result.stdout;
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
return `Error listing files: ${e.message}`;
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
read_file: async (args, rootDir) => {
|
|
49
|
+
const targetPath = path.resolve(rootDir, args.path);
|
|
50
|
+
if (!targetPath.startsWith(rootDir)) {
|
|
51
|
+
throw new Error('Access denied: Path outside root');
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const content = await fs.readFile(targetPath, 'utf-8');
|
|
55
|
+
return content;
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
return `Error reading file: ${e.message}`;
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
grep_search: async (args, rootDir) => {
|
|
62
|
+
const targetPath = path.resolve(rootDir, args.path || '.');
|
|
63
|
+
if (!targetPath.startsWith(rootDir)) {
|
|
64
|
+
throw new Error('Access denied: Path outside root');
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
// Simple grep
|
|
68
|
+
const command = `grep -r "${args.query}" "${targetPath}" | head -n 20`;
|
|
69
|
+
const result = await execAsync(command);
|
|
70
|
+
return result.stdout || 'No matches found';
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
// grep returns non-zero if no matches
|
|
74
|
+
return 'No matches found';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=fs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../../src/engine/agent/tools/fs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ToolDef } from '../../ai/tools.js';
|
|
2
|
+
import { IAgentContext } from '../context.js';
|
|
3
|
+
export declare const MemoryTools: ToolDef[];
|
|
4
|
+
export declare const MemoryToolImplementations: {
|
|
5
|
+
create_checkpoint: (args: {
|
|
6
|
+
summary: string;
|
|
7
|
+
intent: string;
|
|
8
|
+
}, context: IAgentContext) => Promise<string>;
|
|
9
|
+
upsert_intent: (args: {
|
|
10
|
+
intent: string;
|
|
11
|
+
}, context: IAgentContext) => Promise<string>;
|
|
12
|
+
update_working_memory: (args: {
|
|
13
|
+
key: string;
|
|
14
|
+
value: unknown;
|
|
15
|
+
}, context: IAgentContext) => Promise<string>;
|
|
16
|
+
get_current_packet: (_args: Record<string, never>, context: IAgentContext) => Promise<string>;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../src/engine/agent/tools/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,eAAO,MAAM,WAAW,EAAE,OAAO,EA6BhC,CAAC;AAGF,eAAO,MAAM,yBAAyB;8BACF;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,WAAW,aAAa;0BAI/D;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,WAAW,aAAa;kCAIlC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,WAAW,aAAa;gCAIzD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,aAAa;CAIlF,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import z from 'zod';
|
|
2
|
+
export const MemoryTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'create_checkpoint',
|
|
5
|
+
description: 'Create a decision anchor (checkpoint) to save the current state and intent.',
|
|
6
|
+
parameters: z.object({
|
|
7
|
+
summary: z.string().describe('Short summary of what was achieved'),
|
|
8
|
+
intent: z.string().describe('The intent or goal capable of being resumed later'),
|
|
9
|
+
}),
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
name: 'upsert_intent',
|
|
13
|
+
description: 'Update the current working intent or goal.',
|
|
14
|
+
parameters: z.object({
|
|
15
|
+
intent: z.string(),
|
|
16
|
+
}),
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'update_working_memory',
|
|
20
|
+
description: 'Update the short-term working memory (scratchpad).',
|
|
21
|
+
parameters: z.object({
|
|
22
|
+
key: z.string(),
|
|
23
|
+
value: z.any(),
|
|
24
|
+
})
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'get_current_packet',
|
|
28
|
+
description: 'Retrieve the full current context packet.',
|
|
29
|
+
parameters: z.object({}),
|
|
30
|
+
}
|
|
31
|
+
];
|
|
32
|
+
// Memory tool implementations - require IAgentContext
|
|
33
|
+
export const MemoryToolImplementations = {
|
|
34
|
+
create_checkpoint: async (args, context) => {
|
|
35
|
+
const checkpoint = await context.createCheckpoint(args.summary, args.intent);
|
|
36
|
+
return `Checkpoint created: ${checkpoint.id} | Intent: ${args.intent}`;
|
|
37
|
+
},
|
|
38
|
+
upsert_intent: async (args, context) => {
|
|
39
|
+
context.setIntent(args.intent);
|
|
40
|
+
return `Intent updated to: ${args.intent}`;
|
|
41
|
+
},
|
|
42
|
+
update_working_memory: async (args, context) => {
|
|
43
|
+
context.setWorkingMemory(args.key, args.value);
|
|
44
|
+
return `Working memory updated: ${args.key} = ${JSON.stringify(args.value)}`;
|
|
45
|
+
},
|
|
46
|
+
get_current_packet: async (_args, context) => {
|
|
47
|
+
const packet = context.getPacket();
|
|
48
|
+
return JSON.stringify(packet, null, 2);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../../src/engine/agent/tools/memory.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,KAAK,CAAC;AAGpB,MAAM,CAAC,MAAM,WAAW,GAAc;IACpC;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,6EAA6E;QAC1F,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAClE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;SACjF,CAAC;KACH;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,4CAA4C;QACzD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACnB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB,CAAC;KACH;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,oDAAoD;QACjE,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;YACf,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE;SACjB,CAAC;KACH;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,2CAA2C;QACxD,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;KACzB;CACF,CAAC;AAEF,sDAAsD;AACtD,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACrC,iBAAiB,EAAE,KAAK,EAAE,IAAyC,EAAE,OAAsB,EAAE,EAAE;QAC3F,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7E,OAAO,uBAAuB,UAAU,CAAC,EAAE,cAAc,IAAI,CAAC,MAAM,EAAE,CAAC;IAC3E,CAAC;IACD,aAAa,EAAE,KAAK,EAAE,IAAwB,EAAE,OAAsB,EAAE,EAAE;QACtE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,OAAO,sBAAsB,IAAI,CAAC,MAAM,EAAE,CAAC;IAC/C,CAAC;IACD,qBAAqB,EAAE,KAAK,EAAE,IAAqC,EAAE,OAAsB,EAAE,EAAE;QAC3F,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,2BAA2B,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACjF,CAAC;IACD,kBAAkB,EAAE,KAAK,EAAE,KAA4B,EAAE,OAAsB,EAAE,EAAE;QAC/E,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;CACJ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LocalGenAIService - Ollama-based Local GenAI Service
|
|
3
|
+
* Implements IGenAIService interface for local model inference
|
|
4
|
+
*/
|
|
5
|
+
import { IGenAIService, GenAIResult } from './types.js';
|
|
6
|
+
import { ToolDef } from './tools.js';
|
|
7
|
+
export declare class LocalGenAIService implements IGenAIService {
|
|
8
|
+
private baseUrl;
|
|
9
|
+
private modelName;
|
|
10
|
+
constructor(config?: {
|
|
11
|
+
baseUrl?: string;
|
|
12
|
+
model?: string;
|
|
13
|
+
});
|
|
14
|
+
init(): Promise<void>;
|
|
15
|
+
getModelName(): string;
|
|
16
|
+
generate(prompt: string, tools?: ToolDef[]): Promise<GenAIResult>;
|
|
17
|
+
stream(prompt: string, _tools?: ToolDef[]): AsyncGenerator<string>;
|
|
18
|
+
private zodToSimpleSchema;
|
|
19
|
+
private getZodType;
|
|
20
|
+
private getRequiredFields;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=local-genai-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-genai-service.d.ts","sourceRoot":"","sources":["../../../src/engine/ai/local-genai-service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAqBrC,qBAAa,iBAAkB,YAAW,aAAa;IACrD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;IAKvD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B,YAAY,IAAI,MAAM;IAIhB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAwDhE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC;IAuCzE,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,iBAAiB;CAe1B"}
|