feat: initial public release (MAESTRO v0.1.0)
Open-source release of MAESTRO, an agent orchestration platform that runs LLM-driven tasks through sandboxed tools, with a web UI. Apache-2.0. See README.md and docs/ (getting-started, configuration, architecture).
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
||||
---
|
||||
description: E2E click+read fixture for the Playwright runtime
|
||||
params:
|
||||
- name: title
|
||||
type: string
|
||||
---
|
||||
/**
|
||||
* Loads a data: URL (no network), clicks a button, and returns the textContent
|
||||
* the click revealed. Exercises the full chromium spin-up + main({ context })
|
||||
* dispatch path without needing a real HTTP server.
|
||||
*/
|
||||
async function main({ context, params }) {
|
||||
const html = `data:text/html,${encodeURIComponent(`
|
||||
<!doctype html>
|
||||
<html><body>
|
||||
<h1 id="title">${params.title}</h1>
|
||||
<button id="reveal" onclick="document.getElementById('out').textContent='revealed:' + document.getElementById('title').textContent">Reveal</button>
|
||||
<span id="out"></span>
|
||||
</body></html>
|
||||
`)}`;
|
||||
|
||||
const page = await context.newPage();
|
||||
try {
|
||||
await page.goto(html);
|
||||
await page.locator('#reveal').click();
|
||||
return await page.locator('#out').textContent();
|
||||
} finally {
|
||||
await page.close();
|
||||
}
|
||||
}
|
||||
module.exports = main;
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
/**
|
||||
* Browser-macro without frontmatter. Verifies the playwright runtime doesn't
|
||||
* insist on session_profile_id when the script doesn't ask for one.
|
||||
*/
|
||||
async function main({ context }) {
|
||||
const page = await context.newPage();
|
||||
try {
|
||||
await page.goto('data:text/html,<title>hello</title><body>no-session</body>');
|
||||
return await page.title();
|
||||
} finally {
|
||||
await page.close();
|
||||
}
|
||||
}
|
||||
module.exports = main;
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
/**
|
||||
* Returns a circular object — tests that the runner handles JSON.stringify failure
|
||||
* gracefully (reports serializationError instead of crashing the child process).
|
||||
*/
|
||||
async function main() {
|
||||
const o = { a: 1 };
|
||||
o.self = o;
|
||||
return o;
|
||||
}
|
||||
module.exports = main;
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
---
|
||||
description: Log in and grab the dashboard table
|
||||
params:
|
||||
- name: user
|
||||
type: string
|
||||
- name: pass
|
||||
type: string
|
||||
session_profile_id: 7
|
||||
recording_source: rec-test.json
|
||||
---
|
||||
|
||||
async function main({ context, params }) {
|
||||
const page = await context.newPage();
|
||||
try {
|
||||
await page.goto('https://example.com/login');
|
||||
await page.locator('[data-testid="username"]').fill(params.user);
|
||||
await page.locator('[data-testid="password"]').fill(params.pass);
|
||||
await page.locator('button[type="submit"]').click();
|
||||
const __text = await page.locator('[data-testid="dashboard"]').textContent();
|
||||
return __text;
|
||||
} finally {
|
||||
await page.close();
|
||||
}
|
||||
}
|
||||
module.exports = main;
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
async function main() {
|
||||
console.error('hello from stderr');
|
||||
console.error('second line');
|
||||
return 'done';
|
||||
}
|
||||
module.exports = main;
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
async function main() { return 42; }
|
||||
module.exports = main;
|
||||
Vendored
+2
@@ -0,0 +1,2 @@
|
||||
async function main() { throw new Error('boom from user script'); }
|
||||
module.exports = main;
|
||||
Vendored
+7
@@ -0,0 +1,7 @@
|
||||
// Hangs forever — keeps the event loop alive so the parent's timeout fires.
|
||||
async function main() {
|
||||
await new Promise((_resolve) => {
|
||||
setInterval(() => {}, 1_000_000);
|
||||
});
|
||||
}
|
||||
module.exports = main;
|
||||
Reference in New Issue
Block a user