@struktoai/mirage-core
Version:
A Unified Virtual Filesystem For AI Agents
55 lines (52 loc) • 2.7 kB
JavaScript
// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========
/**
* The default system prompt: how the Mirage filesystem differs from a plain one.
*
* `buildSystemPrompt` starts from it; use it as the agent's instructions
* when no mount description is needed.
*/
export const MIRAGE_SYSTEM_PROMPT = `Your filesystem is powered by Mirage — a virtual filesystem that mounts cloud storage, local files, and in-memory data as a unified file tree.
Capabilities beyond standard filesystem:
- head -n 5 on data files returns the first 5 rows
- grep works on structured text such as CSV and JSON, not just plain text
- Pipes work: cat data.csv | grep error | sort | uniq | wc -l
- head, tail, cut, wc, sort, uniq, tee, xargs are all available
- Start a recursive grep or rg inside the mount you mean, not at /: a mount searches with its own index only when the search starts inside it
You can write Python code and execute it. The workspace is pre-configured with your data sources mounted at their respective paths.
Use the shell tool for complex operations. Use read/write/edit for simple file operations.
`;
/**
* Returns `MIRAGE_SYSTEM_PROMPT` followed by a description of the mounted
* paths and any extra instructions, ready to use as an agent's system prompt.
*/
export async function buildSystemPrompt(opts = {}) {
const parts = [MIRAGE_SYSTEM_PROMPT];
if (opts.workspace !== undefined) {
parts.push('Mounted data sources:\n' +
(await opts.workspace.vfsMd(undefined, { sessionId: opts.sessionId })));
}
else if (opts.mountInfo !== undefined && Object.keys(opts.mountInfo).length > 0) {
parts.push('\nMounted data sources:');
for (const [prefix, description] of Object.entries(opts.mountInfo)) {
parts.push(`- ${prefix} — ${description}`);
}
parts.push('');
}
if (opts.extraInstructions !== undefined && opts.extraInstructions.length > 0) {
parts.push(opts.extraInstructions);
}
return parts.join('\n');
}
//# sourceMappingURL=prompt.js.map