@replit/agent-substrate
v0.0.3
Published
[API docs](https://agent-substrate.util.repl.co/modules.html)
Downloads
30
Readme
CodeName: Replit Agent Execution
Docs
import { getSubstrate } from '@replit/agent-substrate';
async function main() {
const substrate = await getSubstrate(process.env.TEST_SECRET);
/** File System */
const createDirResult = await substrate.fs.createDir('demo');
console.log('Create dir success? ', createDirResult.ok);
const writeResult = await substrate.fs.writeFile('demo/hi.txt', 'hi');
console.log('Write file success? ', writeResult.ok);
const readFileResult = await substrate.fs.readFile('demo/hi.txt', {
encoding: 'utf8',
}); // remove encoding to get a buffer for reading binary files
console.log(
'Read file success? ',
readFileResult.ok,
' result:',
readFileResult.ok ? readFileResult.value : readFileResult.error,
);
const readDirResult = await substrate.fs.readDir('demo');
console.log(
'Read dir success? ',
readDirResult.ok,
' result:',
readDirResult.ok ? readDirResult.value : readDirResult.error,
);
const deleteNodeResult = await substrate.fs.deleteNode('demo/hi.txt');
console.log('Delete node success? ', deleteNodeResult.ok);
/** Packager */
const addPackages = await substrate.packager.addPackages('javascript', [
{ name: 'lodash', version: '4.17.21' },
{ name: 'left-pad' },
]);
console.log('Add packages success? ', addPackages.ok);
const removePackages = await substrate.packager.removePackages('javascript', [
{ name: 'left-pad' },
]);
console.log('Remove packages success? ', removePackages.ok);
// This is not so self-explanatory. Basically what it does is that it crawls the files for the language
// you specify then it tries to install the packages. Usually you just want to use `substrate.simpleRun`
// with the guessAndInstallPackages boolean flag set to true
await substrate.fs.writeFile('demo/index.js', 'require("moment")');
const guessAndInstallPackages =
await substrate.packager.guessAndInstallPackages('javascript');
console.log(
'Guess and install packages success? ',
guessAndInstallPackages.ok,
' result:',
guessAndInstallPackages.ok
? guessAndInstallPackages.value
: guessAndInstallPackages.error,
);
/** RUN */
await substrate.fs.writeFile(
'add.py',
`
import numpy
print(numpy.add(1, 2))
`,
);
const runResult = await substrate.simpleRun({
language: 'python',
filePath: 'add.py',
guessAndInstallPackages: true, // guessing slows things down a bit
});
console.log(
'Run success? ',
runResult.ok,
' result:',
runResult.ok ? runResult.value : runResult.error,
);
/** Secrets */
const addSecretRes = await substrate.secrets.addSecret('MY_SECRET', 'supersecret');
console.log('Secret write success? ', addSecretRes.ok);
const getSecretsRes = await substrate.secrets.getSecrets();
console.log('Secrets read success? ', getSecretsRes.ok ? getSecretsRes.value : getSecretsRes.error);
/** EXEC */
const execResult = await substrate.simpleExec({
env: { USER: '360NoScope' },
args: ['printenv', 'USER', 'MY_SECRET'],
});
console.log(
'Exec success? ',
execResult.ok,
' result:',
execResult.ok ? execResult.value : execResult.error,
);
/** Make sure to close the substrate after you're done so that you're not hitting limits */
substrate.close()
}
main();