zilmate 1.6.2 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SDK.md +320 -0
- package/agent-docs.md +12 -0
- package/dist/agents/coding.agent.d.ts +102 -0
- package/dist/agents/coding.agent.d.ts.map +1 -1
- package/dist/agents/coding.agent.js +89 -5
- package/dist/agents/coding.agent.js.map +1 -1
- package/dist/agents/image.agent.d.ts +13 -0
- package/dist/agents/image.agent.d.ts.map +1 -1
- package/dist/agents/image.agent.js +39 -3
- package/dist/agents/image.agent.js.map +1 -1
- package/dist/agents/manager.d.ts +153 -1
- package/dist/agents/manager.d.ts.map +1 -1
- package/dist/agents/manager.js +16 -4
- package/dist/agents/manager.js.map +1 -1
- package/dist/agents/security.agent.d.ts +2 -2
- package/dist/cli/composer.d.ts +3 -0
- package/dist/cli/composer.d.ts.map +1 -0
- package/dist/cli/composer.js +11 -0
- package/dist/cli/composer.js.map +1 -0
- package/dist/cli/format.d.ts.map +1 -1
- package/dist/cli/format.js +29 -3
- package/dist/cli/format.js.map +1 -1
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +65 -14
- package/dist/cli/interactive.js.map +1 -1
- package/dist/cli/models.d.ts +17 -0
- package/dist/cli/models.d.ts.map +1 -0
- package/dist/cli/models.js +116 -0
- package/dist/cli/models.js.map +1 -0
- package/dist/cli/render.d.ts +13 -0
- package/dist/cli/render.d.ts.map +1 -0
- package/dist/cli/render.js +59 -0
- package/dist/cli/render.js.map +1 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +23 -1
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/theme.d.ts +23 -0
- package/dist/cli/theme.d.ts.map +1 -0
- package/dist/cli/theme.js +34 -0
- package/dist/cli/theme.js.map +1 -0
- package/dist/cli/triggers.d.ts.map +1 -1
- package/dist/cli/triggers.js +26 -16
- package/dist/cli/triggers.js.map +1 -1
- package/dist/config/model-store.d.ts +14 -0
- package/dist/config/model-store.d.ts.map +1 -0
- package/dist/config/model-store.js +60 -0
- package/dist/config/model-store.js.map +1 -0
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +14 -11
- package/dist/config/models.js.map +1 -1
- package/dist/index.js +9 -13
- package/dist/index.js.map +1 -1
- package/dist/jobs/trigger-router.d.ts.map +1 -1
- package/dist/jobs/trigger-router.js +8 -3
- package/dist/jobs/trigger-router.js.map +1 -1
- package/dist/server.d.ts +49 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +13 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/code-intelligence.tool.d.ts +68 -0
- package/dist/tools/code-intelligence.tool.d.ts.map +1 -0
- package/dist/tools/code-intelligence.tool.js +176 -0
- package/dist/tools/code-intelligence.tool.js.map +1 -0
- package/dist/tools/computer-use.tool.d.ts +2 -2
- package/dist/tools/image-generate.tool.d.ts +10 -0
- package/dist/tools/image-generate.tool.d.ts.map +1 -1
- package/dist/tools/image-generate.tool.js +115 -22
- package/dist/tools/image-generate.tool.js.map +1 -1
- package/dist/tools/notebook.tool.js +5 -5
- package/dist/tools/notebook.tool.js.map +1 -1
- package/dist/tools/osint.tool.d.ts +4 -4
- package/dist/tools/session-continuity.tool.d.ts +25 -0
- package/dist/tools/session-continuity.tool.d.ts.map +1 -0
- package/dist/tools/session-continuity.tool.js +90 -0
- package/dist/tools/session-continuity.tool.js.map +1 -0
- package/dist/tools/situational-awareness.tool.d.ts +71 -0
- package/dist/tools/situational-awareness.tool.d.ts.map +1 -0
- package/dist/tools/situational-awareness.tool.js +90 -0
- package/dist/tools/situational-awareness.tool.js.map +1 -0
- package/dist/tools/weather.tool.d.ts +88 -0
- package/dist/tools/weather.tool.d.ts.map +1 -0
- package/dist/tools/weather.tool.js +228 -0
- package/dist/tools/weather.tool.js.map +1 -0
- package/package.json +3 -1
- package/scripts/release-github.mjs +12 -11
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { mkdir, writeFile } from 'node:fs/promises';
|
|
1
|
+
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { generateImage, generateText, tool } from 'ai';
|
|
4
4
|
import { z } from 'zod';
|
|
@@ -42,39 +42,123 @@ async function saveImageBytes(data, mediaType, outputDir, index) {
|
|
|
42
42
|
await writeFile(target, toBuffer(data));
|
|
43
43
|
return target;
|
|
44
44
|
}
|
|
45
|
-
|
|
45
|
+
function isHttpUrl(value) {
|
|
46
|
+
try {
|
|
47
|
+
const parsed = new URL(value);
|
|
48
|
+
return parsed.protocol === 'http:' || parsed.protocol === 'https:';
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async function loadRemoteImage(url) {
|
|
55
|
+
const response = await fetch(url);
|
|
56
|
+
if (!response.ok) {
|
|
57
|
+
throw new Error(`Could not load image URL ${url}: ${response.status} ${response.statusText}`);
|
|
58
|
+
}
|
|
59
|
+
return new Uint8Array(await response.arrayBuffer());
|
|
60
|
+
}
|
|
61
|
+
async function loadImageReference(reference) {
|
|
62
|
+
if (isHttpUrl(reference))
|
|
63
|
+
return loadRemoteImage(reference);
|
|
64
|
+
return readFile(path.resolve(reference));
|
|
65
|
+
}
|
|
66
|
+
async function loadEditInputs(options) {
|
|
67
|
+
const imageSources = [...(options.imagePaths || []), ...(options.imageUrls || [])].filter(Boolean);
|
|
68
|
+
const maskSource = options.maskPath || options.maskUrl;
|
|
69
|
+
if (imageSources.length === 0 && !maskSource)
|
|
70
|
+
return undefined;
|
|
71
|
+
if (imageSources.length === 0) {
|
|
72
|
+
throw new Error('Image editing needs at least one input image. Provide imagePaths or imageUrls.');
|
|
73
|
+
}
|
|
74
|
+
emitProgress({ type: 'tool:start', label: 'Loading input image references', detail: `${imageSources.length} image${imageSources.length === 1 ? '' : 's'}` });
|
|
75
|
+
const loaded = { images: [], sources: [...imageSources] };
|
|
76
|
+
for (const source of imageSources) {
|
|
77
|
+
loaded.images.push(await loadImageReference(source));
|
|
78
|
+
}
|
|
79
|
+
if (maskSource) {
|
|
80
|
+
loaded.mask = await loadImageReference(maskSource);
|
|
81
|
+
loaded.sources.push(`mask:${maskSource}`);
|
|
82
|
+
}
|
|
83
|
+
emitProgress({ type: 'tool:end', label: 'Input images loaded', detail: `${loaded.images.length} image${loaded.images.length === 1 ? '' : 's'}` });
|
|
84
|
+
return loaded;
|
|
85
|
+
}
|
|
86
|
+
function buildImagePrompt(prompt, inputs) {
|
|
87
|
+
const text = redactSensitiveText(prompt);
|
|
88
|
+
if (!inputs)
|
|
89
|
+
return text;
|
|
90
|
+
return {
|
|
91
|
+
text,
|
|
92
|
+
images: inputs.images,
|
|
93
|
+
...(inputs.mask ? { mask: inputs.mask } : {}),
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
async function saveGeneratedImages(result, outputDir) {
|
|
97
|
+
const saved = [];
|
|
98
|
+
for (const [index, image] of result.images.entries()) {
|
|
99
|
+
const value = image;
|
|
100
|
+
const data = value.uint8Array || value.data || value.base64;
|
|
101
|
+
if (!data)
|
|
102
|
+
continue;
|
|
103
|
+
saved.push(await saveImageBytes(data, value.mediaType || image.mediaType, outputDir, index));
|
|
104
|
+
}
|
|
105
|
+
return saved;
|
|
106
|
+
}
|
|
107
|
+
async function generateOpenAiImage(prompt, outputDir, size, inputs) {
|
|
46
108
|
const model = models.imageOpenai;
|
|
47
|
-
|
|
109
|
+
const operation = inputs ? 'edit' : 'generate';
|
|
110
|
+
emitProgress({ type: 'tool:start', label: `${operation === 'edit' ? 'Editing' : 'Generating'} OpenAI image`, detail: model });
|
|
48
111
|
const result = await generateImage({
|
|
49
112
|
model,
|
|
50
|
-
prompt:
|
|
113
|
+
prompt: buildImagePrompt(prompt, inputs),
|
|
51
114
|
...(size ? { size } : {}),
|
|
52
115
|
providerOptions: {
|
|
53
116
|
gateway: {
|
|
54
|
-
tags: ['zilo-manager',
|
|
117
|
+
tags: ['zilo-manager', `feature:image-${operation}`, 'model:openai'],
|
|
55
118
|
},
|
|
56
119
|
},
|
|
57
120
|
});
|
|
58
|
-
const saved =
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return { files: saved, model, provider: 'openai' };
|
|
121
|
+
const saved = await saveGeneratedImages(result, outputDir);
|
|
122
|
+
emitProgress({ type: 'tool:end', label: `OpenAI image ${operation} complete`, detail: `${saved.length} file${saved.length === 1 ? '' : 's'}` });
|
|
123
|
+
return {
|
|
124
|
+
files: saved,
|
|
125
|
+
model,
|
|
126
|
+
provider: 'openai',
|
|
127
|
+
operation,
|
|
128
|
+
...(inputs?.sources.length ? { inputImages: inputs.sources } : {}),
|
|
129
|
+
};
|
|
68
130
|
}
|
|
69
|
-
async function generateGeminiImage(prompt, outputDir) {
|
|
131
|
+
async function generateGeminiImage(prompt, outputDir, size, inputs) {
|
|
70
132
|
const model = models.imageGemini;
|
|
133
|
+
if (inputs) {
|
|
134
|
+
emitProgress({ type: 'tool:start', label: 'Editing Gemini image', detail: model });
|
|
135
|
+
const result = await generateImage({
|
|
136
|
+
model,
|
|
137
|
+
prompt: buildImagePrompt(prompt, inputs),
|
|
138
|
+
...(size ? { size } : {}),
|
|
139
|
+
providerOptions: {
|
|
140
|
+
gateway: {
|
|
141
|
+
tags: ['zilo-manager', 'feature:image-edit', 'model:gemini'],
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
const saved = await saveGeneratedImages(result, outputDir);
|
|
146
|
+
emitProgress({ type: 'tool:end', label: 'Gemini image edit complete', detail: `${saved.length} file${saved.length === 1 ? '' : 's'}` });
|
|
147
|
+
return {
|
|
148
|
+
files: saved,
|
|
149
|
+
model,
|
|
150
|
+
provider: 'gemini',
|
|
151
|
+
operation: 'edit',
|
|
152
|
+
inputImages: inputs.sources,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
71
155
|
emitProgress({ type: 'tool:start', label: 'Generating Gemini image', detail: model });
|
|
72
156
|
const result = await generateText({
|
|
73
157
|
model,
|
|
74
158
|
prompt: redactSensitiveText(prompt),
|
|
75
159
|
providerOptions: {
|
|
76
160
|
gateway: {
|
|
77
|
-
tags: ['zilo-manager', 'feature:image', 'model:gemini'],
|
|
161
|
+
tags: ['zilo-manager', 'feature:image-generate', 'model:gemini'],
|
|
78
162
|
},
|
|
79
163
|
},
|
|
80
164
|
});
|
|
@@ -88,27 +172,36 @@ async function generateGeminiImage(prompt, outputDir) {
|
|
|
88
172
|
saved.push(await saveImageBytes(data, value.mediaType || file.mediaType, outputDir, index));
|
|
89
173
|
}
|
|
90
174
|
emitProgress({ type: 'tool:end', label: 'Gemini image generation complete', detail: `${saved.length} file${saved.length === 1 ? '' : 's'}` });
|
|
91
|
-
return { text: result.text, files: saved, model, provider: 'gemini' };
|
|
175
|
+
return { text: result.text, files: saved, model, provider: 'gemini', operation: 'generate' };
|
|
92
176
|
}
|
|
93
177
|
export async function generateImageAsset(prompt, options = {}) {
|
|
94
178
|
requireGatewayAuth();
|
|
95
179
|
const outputDir = options.outputDir || getOutputDir('images');
|
|
96
180
|
await mkdir(outputDir, { recursive: true });
|
|
97
181
|
const provider = normalizeProvider(options.provider);
|
|
182
|
+
const inputs = await loadEditInputs(options);
|
|
98
183
|
if (provider === 'gemini')
|
|
99
|
-
return generateGeminiImage(prompt, outputDir);
|
|
100
|
-
return generateOpenAiImage(prompt, outputDir, options.size);
|
|
184
|
+
return generateGeminiImage(prompt, outputDir, options.size, inputs);
|
|
185
|
+
return generateOpenAiImage(prompt, outputDir, options.size, inputs);
|
|
101
186
|
}
|
|
102
187
|
export const imageGenerateTool = tool({
|
|
103
|
-
description: 'Generate
|
|
188
|
+
description: 'Generate or edit high-quality images with OpenAI GPT Image 2 or Gemini image models. Accepts local image paths, image URLs, and optional masks, then saves outputs locally.',
|
|
104
189
|
inputSchema: z.object({
|
|
105
190
|
prompt: z.string().min(5),
|
|
106
191
|
provider: z.enum(['openai', 'chatgpt', 'gemini', 'google', 'default']).optional(),
|
|
107
192
|
size: z.string().regex(/^\d+x\d+$/).optional(),
|
|
193
|
+
imagePaths: z.array(z.string().min(1)).optional().describe('Local image file paths to edit or use as visual references.'),
|
|
194
|
+
imageUrls: z.array(z.string().url()).optional().describe('Remote image URLs to edit or use as visual references.'),
|
|
195
|
+
maskPath: z.string().min(1).optional().describe('Optional local mask image path for masked edits. Requires at least one input image.'),
|
|
196
|
+
maskUrl: z.string().url().optional().describe('Optional mask image URL for masked edits. Requires at least one input image.'),
|
|
108
197
|
}),
|
|
109
|
-
execute: async ({ prompt, provider, size }) => generateImageAsset(prompt, {
|
|
198
|
+
execute: async ({ prompt, provider, size, imagePaths, imageUrls, maskPath, maskUrl }) => generateImageAsset(prompt, {
|
|
110
199
|
...(provider ? { provider } : {}),
|
|
111
200
|
...(isImageSize(size) ? { size } : {}),
|
|
201
|
+
...(imagePaths?.length ? { imagePaths } : {}),
|
|
202
|
+
...(imageUrls?.length ? { imageUrls } : {}),
|
|
203
|
+
...(maskPath ? { maskPath } : {}),
|
|
204
|
+
...(maskUrl ? { maskUrl } : {}),
|
|
112
205
|
}),
|
|
113
206
|
});
|
|
114
207
|
//# sourceMappingURL=image-generate.tool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-generate.tool.js","sourceRoot":"","sources":["../../src/tools/image-generate.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"image-generate.tool.js","sourceRoot":"","sources":["../../src/tools/image-generate.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { addNotebookEntry, appendNotebookMarkdown, listNotebookEntries, readNote
|
|
|
4
4
|
import { emitProgress } from '../runtime/progress.js';
|
|
5
5
|
export const notebookTools = {
|
|
6
6
|
readNotebook: tool({
|
|
7
|
-
description: 'Read ZilMate private notebook.md
|
|
7
|
+
description: 'Read ZilMate private notebook.md: durable project/user working notes separate from short-lived scratchpad.',
|
|
8
8
|
inputSchema: z.object({ limitChars: z.number().int().min(500).max(50_000).optional() }),
|
|
9
9
|
execute: async ({ limitChars }) => {
|
|
10
10
|
const text = await readNotebookMarkdown();
|
|
@@ -15,7 +15,7 @@ export const notebookTools = {
|
|
|
15
15
|
},
|
|
16
16
|
}),
|
|
17
17
|
appendNotebook: tool({
|
|
18
|
-
description: '
|
|
18
|
+
description: 'Save durable project memory to notebook.md and notes.json: architecture decisions, setup steps, recurring errors, commands, ports, preferences, and handoff notes.',
|
|
19
19
|
inputSchema: z.object({
|
|
20
20
|
title: z.string().min(1),
|
|
21
21
|
body: z.string().min(1),
|
|
@@ -32,17 +32,17 @@ export const notebookTools = {
|
|
|
32
32
|
},
|
|
33
33
|
}),
|
|
34
34
|
searchNotebook: tool({
|
|
35
|
-
description: 'Search structured notebook entries by keyword.',
|
|
35
|
+
description: 'Search durable structured notebook entries by keyword before asking the user to repeat prior project context.',
|
|
36
36
|
inputSchema: z.object({ query: z.string().min(2), limit: z.number().int().min(1).max(20).optional() }),
|
|
37
37
|
execute: async ({ query, limit }) => searchNotebook(query, limit ?? 10),
|
|
38
38
|
}),
|
|
39
39
|
listNotebookEntries: tool({
|
|
40
|
-
description: 'List recent
|
|
40
|
+
description: 'List recent durable notebook entries from notes.json for project/session recall.',
|
|
41
41
|
inputSchema: z.object({ limit: z.number().int().min(1).max(50).optional() }),
|
|
42
42
|
execute: async ({ limit }) => listNotebookEntries(limit ?? 15),
|
|
43
43
|
}),
|
|
44
44
|
quickNotebookNote: tool({
|
|
45
|
-
description: 'Quick append to notebook.md
|
|
45
|
+
description: 'Quick append to notebook.md for lightweight durable notes when structured metadata is unnecessary.',
|
|
46
46
|
inputSchema: z.object({ section: z.string().min(1), content: z.string().min(1) }),
|
|
47
47
|
execute: async ({ section, content }) => appendNotebookMarkdown(section, content),
|
|
48
48
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notebook.tool.js","sourceRoot":"","sources":["../../src/tools/notebook.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,YAAY,EAAE,IAAI,CAAC;QACjB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"notebook.tool.js","sourceRoot":"","sources":["../../src/tools/notebook.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,12 +28,12 @@ export declare const usernameTools: {
|
|
|
28
28
|
username: string;
|
|
29
29
|
allSites: boolean;
|
|
30
30
|
permute: boolean;
|
|
31
|
-
format: "
|
|
31
|
+
format: "json" | "csv" | "pdf" | "html" | "txt";
|
|
32
32
|
tags?: string | undefined;
|
|
33
33
|
}, {
|
|
34
34
|
username: string;
|
|
35
35
|
outputDir: string;
|
|
36
|
-
format: "
|
|
36
|
+
format: "json" | "csv" | "pdf" | "html" | "txt";
|
|
37
37
|
raw: string;
|
|
38
38
|
}>;
|
|
39
39
|
/**
|
|
@@ -391,12 +391,12 @@ export declare const osintTools: {
|
|
|
391
391
|
username: string;
|
|
392
392
|
allSites: boolean;
|
|
393
393
|
permute: boolean;
|
|
394
|
-
format: "
|
|
394
|
+
format: "json" | "csv" | "pdf" | "html" | "txt";
|
|
395
395
|
tags?: string | undefined;
|
|
396
396
|
}, {
|
|
397
397
|
username: string;
|
|
398
398
|
outputDir: string;
|
|
399
|
-
format: "
|
|
399
|
+
format: "json" | "csv" | "pdf" | "html" | "txt";
|
|
400
400
|
raw: string;
|
|
401
401
|
}>;
|
|
402
402
|
/**
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
type Handoff = {
|
|
2
|
+
sessionId: string;
|
|
3
|
+
summary: string;
|
|
4
|
+
nextActions: string[];
|
|
5
|
+
openThreads: string[];
|
|
6
|
+
updatedAt: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function loadSessionHandoff(sessionId: string): Promise<Handoff | null>;
|
|
9
|
+
export declare function saveSessionHandoff(sessionId: string, input: Omit<Handoff, 'sessionId' | 'updatedAt'>): Promise<Handoff>;
|
|
10
|
+
export declare const sessionContinuityTools: {
|
|
11
|
+
getSessionHandoff: import("ai").Tool<{
|
|
12
|
+
sessionId?: string | undefined;
|
|
13
|
+
}, Handoff | null>;
|
|
14
|
+
saveSessionHandoff: import("ai").Tool<{
|
|
15
|
+
summary: string;
|
|
16
|
+
nextActions: string[];
|
|
17
|
+
sessionId?: string | undefined;
|
|
18
|
+
openThreads?: string[] | undefined;
|
|
19
|
+
}, Handoff>;
|
|
20
|
+
generateSessionHandoff: import("ai").Tool<{
|
|
21
|
+
sessionId?: string | undefined;
|
|
22
|
+
}, Handoff>;
|
|
23
|
+
};
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=session-continuity.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-continuity.tool.d.ts","sourceRoot":"","sources":["../../src/tools/session-continuity.tool.ts"],"names":[],"mappings":"AAaA,KAAK,OAAO,GAAG;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAMF,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAQnF;AAED,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CAAC,oBAS1G;AAED,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;CAqDlC,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// src/tools/session-continuity.tool.ts
|
|
2
|
+
import { readFile, writeFile, mkdir } from 'node:fs/promises';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { tool } from 'ai';
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { generateText } from 'ai';
|
|
8
|
+
import { models } from '../config/models.js';
|
|
9
|
+
import { workspaceLayout } from '../workspace/paths.js';
|
|
10
|
+
import { loadTurns } from '../memory/history.js';
|
|
11
|
+
import { appendNotebookMarkdown } from '../memory/notebook.js';
|
|
12
|
+
import { emitProgress } from '../runtime/progress.js';
|
|
13
|
+
function handoffPath(sessionId) {
|
|
14
|
+
return path.join(workspaceLayout().config, `handoff-${sessionId}.json`);
|
|
15
|
+
}
|
|
16
|
+
export async function loadSessionHandoff(sessionId) {
|
|
17
|
+
const file = handoffPath(sessionId);
|
|
18
|
+
if (!existsSync(file))
|
|
19
|
+
return null;
|
|
20
|
+
try {
|
|
21
|
+
return JSON.parse(await readFile(file, 'utf8'));
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export async function saveSessionHandoff(sessionId, input) {
|
|
28
|
+
const payload = {
|
|
29
|
+
sessionId,
|
|
30
|
+
...input,
|
|
31
|
+
updatedAt: new Date().toISOString(),
|
|
32
|
+
};
|
|
33
|
+
await mkdir(workspaceLayout().config, { recursive: true });
|
|
34
|
+
await writeFile(handoffPath(sessionId), JSON.stringify(payload, null, 2), 'utf8');
|
|
35
|
+
return payload;
|
|
36
|
+
}
|
|
37
|
+
export const sessionContinuityTools = {
|
|
38
|
+
getSessionHandoff: tool({
|
|
39
|
+
description: 'Load the last session handoff: summary, next actions, and open threads so you can continue seamlessly.',
|
|
40
|
+
inputSchema: z.object({ sessionId: z.string().optional() }),
|
|
41
|
+
execute: async ({ sessionId = 'default' }) => loadSessionHandoff(sessionId),
|
|
42
|
+
}),
|
|
43
|
+
saveSessionHandoff: tool({
|
|
44
|
+
description: 'Save a session handoff before ending work so the next session can resume instantly.',
|
|
45
|
+
inputSchema: z.object({
|
|
46
|
+
sessionId: z.string().optional(),
|
|
47
|
+
summary: z.string().min(10),
|
|
48
|
+
nextActions: z.array(z.string()).min(1),
|
|
49
|
+
openThreads: z.array(z.string()).optional(),
|
|
50
|
+
}),
|
|
51
|
+
execute: async ({ sessionId = 'default', summary, nextActions, openThreads }) => {
|
|
52
|
+
const saved = await saveSessionHandoff(sessionId, {
|
|
53
|
+
summary,
|
|
54
|
+
nextActions,
|
|
55
|
+
openThreads: openThreads ?? [],
|
|
56
|
+
});
|
|
57
|
+
await appendNotebookMarkdown('Session handoff', `${summary}\n\nNext:\n${nextActions.map((a) => `- ${a}`).join('\n')}`);
|
|
58
|
+
return saved;
|
|
59
|
+
},
|
|
60
|
+
}),
|
|
61
|
+
generateSessionHandoff: tool({
|
|
62
|
+
description: 'Automatically synthesize a session handoff from recent chat turns.',
|
|
63
|
+
inputSchema: z.object({ sessionId: z.string().optional() }),
|
|
64
|
+
execute: async ({ sessionId = 'default' }) => {
|
|
65
|
+
emitProgress({ type: 'thinking', label: 'Generating session handoff' });
|
|
66
|
+
const turns = await loadTurns(sessionId);
|
|
67
|
+
const transcript = turns.slice(-12).map((t) => `${t.role}: ${t.content.slice(0, 400)}`).join('\n');
|
|
68
|
+
const result = await generateText({
|
|
69
|
+
model: models.manager,
|
|
70
|
+
prompt: `Create JSON only: {"summary":"...","nextActions":["..."],"openThreads":["..."]}\nFrom this session:\n${transcript || '(empty session)'}`,
|
|
71
|
+
});
|
|
72
|
+
let parsed = {};
|
|
73
|
+
try {
|
|
74
|
+
const match = result.text.match(/\{[\s\S]*\}/);
|
|
75
|
+
parsed = match ? JSON.parse(match[0]) : {};
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
parsed = { summary: result.text.trim(), nextActions: ['Continue previous task'] };
|
|
79
|
+
}
|
|
80
|
+
const saved = await saveSessionHandoff(sessionId, {
|
|
81
|
+
summary: parsed.summary || 'Session handoff',
|
|
82
|
+
nextActions: parsed.nextActions?.length ? parsed.nextActions : ['Review last conversation'],
|
|
83
|
+
openThreads: parsed.openThreads ?? [],
|
|
84
|
+
});
|
|
85
|
+
emitProgress({ type: 'done', label: 'Handoff saved' });
|
|
86
|
+
return saved;
|
|
87
|
+
},
|
|
88
|
+
}),
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=session-continuity.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-continuity.tool.js","sourceRoot":"","sources":["../../src/tools/session-continuity.tool.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAUtD,SAAS,WAAW,CAAC,SAAiB;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,WAAW,SAAS,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,SAAiB;IACxD,MAAM,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAY,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,SAAiB,EAAE,KAA+C;IACzG,MAAM,OAAO,GAAY;QACvB,SAAS;QACT,GAAG,KAAK;QACR,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IACF,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAClF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,iBAAiB,EAAE,IAAI,CAAC;QACtB,WAAW,EAAE,wGAAwG;QACrH,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC3D,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,kBAAkB,CAAC,SAAS,CAAC;KAC5E,CAAC;IAEF,kBAAkB,EAAE,IAAI,CAAC;QACvB,WAAW,EAAE,qFAAqF;QAClG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;SAC5C,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,GAAG,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;YAC9E,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE;gBAChD,OAAO;gBACP,WAAW;gBACX,WAAW,EAAE,WAAW,IAAI,EAAE;aAC/B,CAAC,CAAC;YACH,MAAM,sBAAsB,CAAC,iBAAiB,EAAE,GAAG,OAAO,cAAc,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACvH,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;IAEF,sBAAsB,EAAE,IAAI,CAAC;QAC3B,WAAW,EAAE,oEAAoE;QACjF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC3D,OAAO,EAAE,KAAK,EAAE,EAAE,SAAS,GAAG,SAAS,EAAE,EAAE,EAAE;YAC3C,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC;YACxE,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnG,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;gBAChC,KAAK,EAAE,MAAM,CAAC,OAAO;gBACrB,MAAM,EAAE,wGAAwG,UAAU,IAAI,iBAAiB,EAAE;aAClJ,CAAC,CAAC;YACH,IAAI,MAAM,GAAyE,EAAE,CAAC;YACtF,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC/C,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC;YACpF,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE;gBAChD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,iBAAiB;gBAC5C,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC;gBAC3F,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;aACtC,CAAC,CAAC;YACH,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YACvD,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
export declare function buildSituationBrief(sessionId?: string): Promise<{
|
|
2
|
+
sessionId: string;
|
|
3
|
+
cwd: string;
|
|
4
|
+
package: string;
|
|
5
|
+
platform: string;
|
|
6
|
+
workspace: string;
|
|
7
|
+
models: {
|
|
8
|
+
manager: string;
|
|
9
|
+
coding: string;
|
|
10
|
+
image: string;
|
|
11
|
+
overrides: Partial<Record<import("../config/model-store.js").ModelRole, string>>;
|
|
12
|
+
};
|
|
13
|
+
capabilities: {
|
|
14
|
+
gateway: boolean;
|
|
15
|
+
composio: boolean;
|
|
16
|
+
redis: boolean;
|
|
17
|
+
qstash: boolean;
|
|
18
|
+
jobs: boolean;
|
|
19
|
+
voice: boolean;
|
|
20
|
+
};
|
|
21
|
+
git: string;
|
|
22
|
+
recentJobs: {
|
|
23
|
+
id: string;
|
|
24
|
+
status: import("../server.js").JobStatus;
|
|
25
|
+
task: string;
|
|
26
|
+
}[];
|
|
27
|
+
memoryCount: number;
|
|
28
|
+
owner: string;
|
|
29
|
+
activeProjects: string[];
|
|
30
|
+
knowledgeNodes: number;
|
|
31
|
+
}>;
|
|
32
|
+
export declare const situationalAwarenessTools: {
|
|
33
|
+
getSituationBrief: import("ai").Tool<{
|
|
34
|
+
sessionId?: string | undefined;
|
|
35
|
+
}, {
|
|
36
|
+
sessionId: string;
|
|
37
|
+
cwd: string;
|
|
38
|
+
package: string;
|
|
39
|
+
platform: string;
|
|
40
|
+
workspace: string;
|
|
41
|
+
models: {
|
|
42
|
+
manager: string;
|
|
43
|
+
coding: string;
|
|
44
|
+
image: string;
|
|
45
|
+
overrides: Partial<Record<import("../config/model-store.js").ModelRole, string>>;
|
|
46
|
+
};
|
|
47
|
+
capabilities: {
|
|
48
|
+
gateway: boolean;
|
|
49
|
+
composio: boolean;
|
|
50
|
+
redis: boolean;
|
|
51
|
+
qstash: boolean;
|
|
52
|
+
jobs: boolean;
|
|
53
|
+
voice: boolean;
|
|
54
|
+
};
|
|
55
|
+
git: string;
|
|
56
|
+
recentJobs: {
|
|
57
|
+
id: string;
|
|
58
|
+
status: import("../server.js").JobStatus;
|
|
59
|
+
task: string;
|
|
60
|
+
}[];
|
|
61
|
+
memoryCount: number;
|
|
62
|
+
owner: string;
|
|
63
|
+
activeProjects: string[];
|
|
64
|
+
knowledgeNodes: number;
|
|
65
|
+
}>;
|
|
66
|
+
recallRelevantMemories: import("ai").Tool<{
|
|
67
|
+
query: string;
|
|
68
|
+
limit?: number | undefined;
|
|
69
|
+
}, import("../memory/long-term.js").LongTermMemory[]>;
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=situational-awareness.tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"situational-awareness.tool.d.ts","sourceRoot":"","sources":["../../src/tools/situational-awareness.tool.ts"],"names":[],"mappings":"AA0BA,wBAAsB,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8C3D;AAED,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiBrC,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// src/tools/situational-awareness.tool.ts
|
|
2
|
+
import { spawn } from 'node:child_process';
|
|
3
|
+
import { existsSync } from 'node:fs';
|
|
4
|
+
import { readFile } from 'node:fs/promises';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { tool } from 'ai';
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { env, hasComposio, hasGatewayAuth, hasQStash, hasRedis } from '../config/env.js';
|
|
9
|
+
import { models } from '../config/models.js';
|
|
10
|
+
import { listJobs } from '../jobs/store.js';
|
|
11
|
+
import { recall, listMemories } from '../memory/long-term.js';
|
|
12
|
+
import { loadPersonalContext } from '../memory/personal-context.js';
|
|
13
|
+
import { getKnowledgeGraph } from '../memory/knowledge-graph.js';
|
|
14
|
+
import { workspaceLayout } from '../workspace/paths.js';
|
|
15
|
+
import { loadModelSelections } from '../config/model-store.js';
|
|
16
|
+
import { emitProgress } from '../runtime/progress.js';
|
|
17
|
+
async function gitBrief(cwd) {
|
|
18
|
+
if (!existsSync(path.join(cwd, '.git')))
|
|
19
|
+
return 'not a git repo';
|
|
20
|
+
return new Promise((resolve) => {
|
|
21
|
+
spawn('git', ['status', '-sb'], { cwd, shell: process.platform === 'win32', windowsHide: true })
|
|
22
|
+
.stdout?.on('data', (c) => { resolve(String(c).trim().slice(0, 500)); });
|
|
23
|
+
setTimeout(() => resolve('git unavailable'), 3000);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
export async function buildSituationBrief(sessionId) {
|
|
27
|
+
const cwd = process.cwd();
|
|
28
|
+
const layout = workspaceLayout();
|
|
29
|
+
const [jobs, memories, context, graph, modelStore] = await Promise.all([
|
|
30
|
+
listJobs({ limit: 8 }),
|
|
31
|
+
listMemories(),
|
|
32
|
+
loadPersonalContext(),
|
|
33
|
+
getKnowledgeGraph(),
|
|
34
|
+
loadModelSelections(),
|
|
35
|
+
]);
|
|
36
|
+
let packageName = path.basename(cwd);
|
|
37
|
+
try {
|
|
38
|
+
const pkg = JSON.parse(await readFile(path.join(cwd, 'package.json'), 'utf8'));
|
|
39
|
+
if (pkg.name)
|
|
40
|
+
packageName = pkg.name;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// ignore
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
sessionId: sessionId || 'default',
|
|
47
|
+
cwd,
|
|
48
|
+
package: packageName,
|
|
49
|
+
platform: `${process.platform} · Node ${process.versions.node}`,
|
|
50
|
+
workspace: layout.root,
|
|
51
|
+
models: {
|
|
52
|
+
manager: models.manager,
|
|
53
|
+
coding: models.coding,
|
|
54
|
+
image: models.image,
|
|
55
|
+
overrides: modelStore.roles,
|
|
56
|
+
},
|
|
57
|
+
capabilities: {
|
|
58
|
+
gateway: hasGatewayAuth(),
|
|
59
|
+
composio: hasComposio(),
|
|
60
|
+
redis: hasRedis(),
|
|
61
|
+
qstash: hasQStash(),
|
|
62
|
+
jobs: env.zilmateJobsEnabled,
|
|
63
|
+
voice: env.zilmateVoiceEnabled,
|
|
64
|
+
},
|
|
65
|
+
git: await gitBrief(cwd),
|
|
66
|
+
recentJobs: jobs.map((j) => ({ id: j.id, status: j.status, task: j.task.slice(0, 120) })),
|
|
67
|
+
memoryCount: memories.length,
|
|
68
|
+
owner: context.ownerName || graph.ownerName || '',
|
|
69
|
+
activeProjects: context.projects.filter((p) => p.status === 'active').map((p) => p.name),
|
|
70
|
+
knowledgeNodes: graph.nodes.length,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export const situationalAwarenessTools = {
|
|
74
|
+
getSituationBrief: tool({
|
|
75
|
+
description: 'Get a rich snapshot of the user environment: cwd, git, workspace, models, jobs, memory, projects, capabilities. Call at session start or before major decisions.',
|
|
76
|
+
inputSchema: z.object({ sessionId: z.string().optional() }),
|
|
77
|
+
execute: async ({ sessionId }) => {
|
|
78
|
+
emitProgress({ type: 'fetch:start', label: 'Building situation brief' });
|
|
79
|
+
const brief = await buildSituationBrief(sessionId);
|
|
80
|
+
emitProgress({ type: 'fetch:end', label: 'Situation brief ready' });
|
|
81
|
+
return brief;
|
|
82
|
+
},
|
|
83
|
+
}),
|
|
84
|
+
recallRelevantMemories: tool({
|
|
85
|
+
description: 'Recall long-term memories relevant to the current task or topic.',
|
|
86
|
+
inputSchema: z.object({ query: z.string().min(2), limit: z.number().int().min(1).max(12).optional() }),
|
|
87
|
+
execute: async ({ query, limit }) => recall(query, limit ?? 6),
|
|
88
|
+
}),
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=situational-awareness.tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"situational-awareness.tool.js","sourceRoot":"","sources":["../../src/tools/situational-awareness.tool.ts"],"names":[],"mappings":"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"}
|