omniharness-cli 0.1.18 → 0.1.19
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/cli.cjs +9 -0
- package/dist/agent/mastraEngine.js +15 -18
- package/dist/agent/mastraEngine.js.map +1 -1
- package/dist/cli.js +6 -8
- package/dist/cli.js.map +1 -1
- package/dist/config/omniRoute.js +2 -7
- package/dist/config/omniRoute.js.map +1 -1
- package/dist/tools/systemTools.js +21 -27
- package/dist/tools/systemTools.js.map +1 -1
- package/dist/types/index.js +1 -2
- package/dist/ui/terminalInterface.js +16 -22
- package/dist/ui/terminalInterface.js.map +1 -1
- package/package.json +4 -3
- package/cli.js +0 -15
package/cli.cjs
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
const path = require('node:path');
|
|
5
|
+
|
|
6
|
+
import(path.join(__dirname, 'dist', 'cli.js')).catch((error) => {
|
|
7
|
+
console.error(`omniharness-cli: failed to launch: ${error instanceof Error ? error.message : String(error)}`);
|
|
8
|
+
process.exitCode = 1;
|
|
9
|
+
});
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const zod_1 = require("zod");
|
|
7
|
-
const omniRoute_js_1 = require("../config/omniRoute.js");
|
|
8
|
-
const systemTools_js_1 = require("../tools/systemTools.js");
|
|
1
|
+
import { Agent } from '@mastra/core/agent';
|
|
2
|
+
import { createTool } from '@mastra/core/tools';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { OmniRouteClient } from '../config/omniRoute.js';
|
|
5
|
+
import { createSystemTools } from '../tools/systemTools.js';
|
|
9
6
|
function mastraTool(tool, inputSchema, outputSchema) {
|
|
10
|
-
return
|
|
7
|
+
return createTool({
|
|
11
8
|
id: tool.name,
|
|
12
9
|
description: tool.description,
|
|
13
10
|
inputSchema,
|
|
@@ -47,20 +44,20 @@ function omniRouteModel(client, model) {
|
|
|
47
44
|
doStream: async () => { throw new Error('streaming is not enabled by this adapter'); },
|
|
48
45
|
};
|
|
49
46
|
}
|
|
50
|
-
function createMastraEngine(config) {
|
|
51
|
-
const client = new
|
|
52
|
-
const tools =
|
|
47
|
+
export function createMastraEngine(config) {
|
|
48
|
+
const client = new OmniRouteClient({ endpoint: config.endpoint, apiKey: config.apiKey });
|
|
49
|
+
const tools = createSystemTools(config.workspaceRoot, config.shellAllowed ?? false);
|
|
53
50
|
const activeModel = config.model ?? 'auto/best-coding';
|
|
54
|
-
const agent = new
|
|
51
|
+
const agent = new Agent({
|
|
55
52
|
name: 'omniharness-developer',
|
|
56
53
|
instructions: 'You are a careful autonomous developer. Inspect context before editing. Explain actions briefly, use tools only inside the workspace, and never claim verification without running it.',
|
|
57
54
|
model: omniRouteModel(client, activeModel),
|
|
58
55
|
tools: {
|
|
59
|
-
read_file: mastraTool(tools.readFile,
|
|
60
|
-
write_file: mastraTool(tools.writeFile,
|
|
61
|
-
run_command: mastraTool(tools.runCommand,
|
|
62
|
-
index_workspace: mastraTool(tools.indexWorkspace,
|
|
63
|
-
git_diff: mastraTool(tools.gitDiff,
|
|
56
|
+
read_file: mastraTool(tools.readFile, z.object({ path: z.string().min(1) }), z.object({ path: z.string(), content: z.string() })),
|
|
57
|
+
write_file: mastraTool(tools.writeFile, z.object({ path: z.string().min(1), content: z.string() }), z.object({ path: z.string(), bytes: z.number() })),
|
|
58
|
+
run_command: mastraTool(tools.runCommand, z.object({ command: z.string().min(1), args: z.array(z.string()).optional() }), z.object({ stdout: z.string(), stderr: z.string(), code: z.number() })),
|
|
59
|
+
index_workspace: mastraTool(tools.indexWorkspace, z.void(), z.object({ root: z.string(), indexedAt: z.string().nullable(), files: z.array(z.unknown()).readonly(), contextLocked: z.boolean() })),
|
|
60
|
+
git_diff: mastraTool(tools.gitDiff, z.void(), z.string()),
|
|
64
61
|
},
|
|
65
62
|
});
|
|
66
63
|
const state = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mastraEngine.js","sourceRoot":"","sources":["../../src/agent/mastraEngine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mastraEngine.js","sourceRoot":"","sources":["../../src/agent/mastraEngine.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
const engine = (0, mastraEngine_js_1.createMastraEngine)({ workspaceRoot: process.cwd() });
|
|
9
|
-
(0, ink_1.render)((0, jsx_runtime_1.jsx)(terminalInterface_js_1.TerminalInterface, { engine: engine }));
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { render } from 'ink';
|
|
4
|
+
import { createMastraEngine } from './agent/mastraEngine.js';
|
|
5
|
+
import { TerminalInterface } from './ui/terminalInterface.js';
|
|
6
|
+
const engine = createMastraEngine({ workspaceRoot: process.cwd() });
|
|
7
|
+
render(_jsx(TerminalInterface, { engine: engine }));
|
|
10
8
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":";;AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACpE,MAAM,CAAC,KAAC,iBAAiB,IAAC,MAAM,EAAE,MAAM,GAAI,CAAC,CAAC"}
|
package/dist/config/omniRoute.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OmniRouteClient = exports.OmniRouteError = void 0;
|
|
4
|
-
class OmniRouteError extends Error {
|
|
1
|
+
export class OmniRouteError extends Error {
|
|
5
2
|
status;
|
|
6
3
|
constructor(status, message) {
|
|
7
4
|
super(`OmniRoute ${status}: ${message}`);
|
|
@@ -9,9 +6,8 @@ class OmniRouteError extends Error {
|
|
|
9
6
|
this.name = 'OmniRouteError';
|
|
10
7
|
}
|
|
11
8
|
}
|
|
12
|
-
exports.OmniRouteError = OmniRouteError;
|
|
13
9
|
const DEFAULT_ENDPOINT = 'http://localhost:20128';
|
|
14
|
-
class OmniRouteClient {
|
|
10
|
+
export class OmniRouteClient {
|
|
15
11
|
endpoint;
|
|
16
12
|
timeoutMs;
|
|
17
13
|
apiKey;
|
|
@@ -139,5 +135,4 @@ class OmniRouteClient {
|
|
|
139
135
|
return controller.signal;
|
|
140
136
|
}
|
|
141
137
|
}
|
|
142
|
-
exports.OmniRouteClient = OmniRouteClient;
|
|
143
138
|
//# sourceMappingURL=omniRoute.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omniRoute.js","sourceRoot":"","sources":["../../src/config/omniRoute.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"omniRoute.js","sourceRoot":"","sources":["../../src/config/omniRoute.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const node_child_process_1 = require("node:child_process");
|
|
8
|
-
const node_fs_1 = require("node:fs");
|
|
9
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
-
const node_util_1 = require("node:util");
|
|
11
|
-
const zod_1 = require("zod");
|
|
12
|
-
const execFileAsync = (0, node_util_1.promisify)(node_child_process_1.execFile);
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { promises as fs } from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { promisify } from 'node:util';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
const execFileAsync = promisify(execFile);
|
|
13
7
|
const MAX_OUTPUT = 32_000;
|
|
14
|
-
const relativePath =
|
|
8
|
+
const relativePath = z.string().min(1).refine((value) => !path.isAbsolute(value) && value !== '..' && !value.startsWith(`..${path.sep}`));
|
|
15
9
|
function within(root, target) {
|
|
16
|
-
const absoluteRoot =
|
|
17
|
-
const absoluteTarget =
|
|
18
|
-
const relative =
|
|
19
|
-
if (relative.startsWith('..') ||
|
|
10
|
+
const absoluteRoot = path.resolve(root);
|
|
11
|
+
const absoluteTarget = path.resolve(root, target);
|
|
12
|
+
const relative = path.relative(absoluteRoot, absoluteTarget);
|
|
13
|
+
if (relative.startsWith('..') || path.isAbsolute(relative))
|
|
20
14
|
throw new Error('path escapes workspace root');
|
|
21
15
|
return absoluteTarget;
|
|
22
16
|
}
|
|
23
|
-
function createSystemTools(workspaceRoot, shellAllowed = false) {
|
|
24
|
-
const root =
|
|
17
|
+
export function createSystemTools(workspaceRoot, shellAllowed = false) {
|
|
18
|
+
const root = path.resolve(workspaceRoot);
|
|
25
19
|
const readFile = {
|
|
26
20
|
name: 'read_file', description: 'Read a UTF-8 file inside the workspace.', risk: 'low', inputSchema: { path: 'relative file path' },
|
|
27
21
|
async execute(input) {
|
|
28
22
|
const parsed = relativePath.parse(input.path);
|
|
29
23
|
const target = within(root, parsed);
|
|
30
|
-
return { path: parsed, content: await
|
|
24
|
+
return { path: parsed, content: await fs.readFile(target, 'utf8') };
|
|
31
25
|
},
|
|
32
26
|
};
|
|
33
27
|
const writeFile = {
|
|
@@ -35,8 +29,8 @@ function createSystemTools(workspaceRoot, shellAllowed = false) {
|
|
|
35
29
|
async execute(input) {
|
|
36
30
|
const parsed = relativePath.parse(input.path);
|
|
37
31
|
const target = within(root, parsed);
|
|
38
|
-
await
|
|
39
|
-
await
|
|
32
|
+
await fs.mkdir(path.dirname(target), { recursive: true });
|
|
33
|
+
await fs.writeFile(target, input.content, 'utf8');
|
|
40
34
|
return { path: parsed, bytes: Buffer.byteLength(input.content) };
|
|
41
35
|
},
|
|
42
36
|
};
|
|
@@ -61,17 +55,17 @@ function createSystemTools(workspaceRoot, shellAllowed = false) {
|
|
|
61
55
|
async execute() {
|
|
62
56
|
const files = [];
|
|
63
57
|
async function walk(directory) {
|
|
64
|
-
for (const entry of await
|
|
58
|
+
for (const entry of await fs.readdir(directory, { withFileTypes: true })) {
|
|
65
59
|
if (entry.name.startsWith('.') || entry.name === 'node_modules')
|
|
66
60
|
continue;
|
|
67
|
-
const target =
|
|
61
|
+
const target = path.join(directory, entry.name);
|
|
68
62
|
if (entry.isDirectory()) {
|
|
69
|
-
files.push({ path:
|
|
63
|
+
files.push({ path: path.relative(root, target), bytes: 0, kind: 'directory' });
|
|
70
64
|
await walk(target);
|
|
71
65
|
}
|
|
72
66
|
else if (entry.isFile()) {
|
|
73
|
-
const stat = await
|
|
74
|
-
files.push({ path:
|
|
67
|
+
const stat = await fs.stat(target);
|
|
68
|
+
files.push({ path: path.relative(root, target), bytes: stat.size, kind: 'file', extension: path.extname(entry.name) || undefined });
|
|
75
69
|
}
|
|
76
70
|
}
|
|
77
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"systemTools.js","sourceRoot":"","sources":["../../src/tools/systemTools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"systemTools.js","sourceRoot":"","sources":["../../src/tools/systemTools.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js
CHANGED
|
@@ -1,33 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.TerminalInterface = TerminalInterface;
|
|
7
|
-
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
-
const react_1 = require("react");
|
|
9
|
-
const ink_1 = require("ink");
|
|
10
|
-
const ink_spinner_1 = __importDefault(require("ink-spinner"));
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import { Box, Text, useApp, useInput, useStdout } from 'ink';
|
|
4
|
+
import Spinner from 'ink-spinner';
|
|
11
5
|
function widthOf(stdout) {
|
|
12
6
|
return Math.max(48, stdout.columns ?? 80);
|
|
13
7
|
}
|
|
14
8
|
function clip(text, width) {
|
|
15
9
|
return text.length <= width ? text : `${text.slice(0, Math.max(0, width - 1))}…`;
|
|
16
10
|
}
|
|
17
|
-
function TerminalInterface({ engine }) {
|
|
18
|
-
const { exit } =
|
|
19
|
-
const { stdout } =
|
|
20
|
-
const [width, setWidth] =
|
|
21
|
-
const [input, setInput] =
|
|
22
|
-
const [lines, setLines] =
|
|
23
|
-
const [busy, setBusy] =
|
|
24
|
-
const [error, setError] =
|
|
25
|
-
|
|
11
|
+
export function TerminalInterface({ engine }) {
|
|
12
|
+
const { exit } = useApp();
|
|
13
|
+
const { stdout } = useStdout();
|
|
14
|
+
const [width, setWidth] = useState(() => widthOf(stdout));
|
|
15
|
+
const [input, setInput] = useState('');
|
|
16
|
+
const [lines, setLines] = useState([]);
|
|
17
|
+
const [busy, setBusy] = useState(false);
|
|
18
|
+
const [error, setError] = useState();
|
|
19
|
+
useEffect(() => {
|
|
26
20
|
const onResize = () => setWidth(widthOf(stdout));
|
|
27
21
|
stdout.on('resize', onResize);
|
|
28
22
|
return () => { stdout.off('resize', onResize); };
|
|
29
23
|
}, [stdout]);
|
|
30
|
-
|
|
24
|
+
useInput((value, key) => {
|
|
31
25
|
if (key.ctrl && value === 'c') {
|
|
32
26
|
exit();
|
|
33
27
|
return;
|
|
@@ -59,7 +53,7 @@ function TerminalInterface({ engine }) {
|
|
|
59
53
|
const contentWidth = Math.max(20, width - 6);
|
|
60
54
|
const metrics = engine.client.snapshotMetrics();
|
|
61
55
|
const compression = metrics.compression.inputTokens > 0 ? `${Math.round((1 - metrics.compression.ratio) * 100)}% via ${metrics.compression.strategy.toUpperCase()}` : 'pending';
|
|
62
|
-
const visibleLines =
|
|
63
|
-
return (
|
|
56
|
+
const visibleLines = useMemo(() => lines.slice(-Math.max(3, (stdout.rows ?? 24) - 9)), [lines, stdout.rows]);
|
|
57
|
+
return _jsxs(Box, { flexDirection: "column", width: width, paddingX: 1, children: [_jsxs(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1, justifyContent: "space-between", children: [_jsx(Text, { bold: true, color: "cyan", children: "OmniHarness v2.0" }), _jsx(Text, { dimColor: true, children: "OmniRoute Local :20128" })] }), _jsxs(Box, { marginTop: 1, flexDirection: "row", children: [_jsxs(Box, { flexDirection: "column", width: Math.max(24, Math.floor(width * 0.27)), borderStyle: "single", borderColor: "gray", paddingX: 1, children: [_jsx(Text, { bold: true, children: "ROUTE" }), _jsxs(Text, { children: ["provider: ", metrics.fallback.activeProvider ?? 'auto'] }), _jsxs(Text, { children: ["compression: ", compression] }), _jsxs(Text, { children: ["cooldown: ", metrics.fallback.cooldownUntil ?? 'none'] }), _jsxs(Text, { children: ["requests: ", metrics.requestCount] })] }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, marginLeft: 1, borderStyle: "single", borderColor: "gray", paddingX: 1, children: [visibleLines.length === 0 && _jsx(Text, { dimColor: true, children: "Describe a task to begin." }), visibleLines.map((line, index) => _jsxs(Text, { color: line.role === 'user' ? 'blue' : line.role === 'error' ? 'red' : undefined, children: [line.role === 'user' ? 'YOU ' : line.role === 'error' ? 'ERR ' : 'AGENT', " ", clip(line.text, contentWidth)] }, `${index}-${line.role}`)), busy && _jsxs(Text, { color: "cyan", children: [_jsx(Spinner, { type: "dots" }), " working through OmniRoute\u2026"] })] })] }), _jsxs(Box, { marginTop: 1, borderStyle: "round", borderColor: error ? 'red' : 'cyan', paddingX: 1, children: [_jsx(Text, { color: "cyan", children: "\u203A " }), _jsx(Text, { children: clip(input || 'type a task and press enter', contentWidth) })] }), _jsxs(Text, { dimColor: true, children: ["Ctrl+C quit \u00B7 model ", engine.state.activeModel] })] });
|
|
64
58
|
}
|
|
65
59
|
//# sourceMappingURL=terminalInterface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminalInterface.js","sourceRoot":"","sources":["../../src/ui/terminalInterface.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"terminalInterface.js","sourceRoot":"","sources":["../../src/ui/terminalInterface.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "omniharness-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.19",
|
|
4
4
|
"description": "OmniHarness — local-first agent orchestration harness for OmniRoute.",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
6
7
|
"repository": {
|
|
7
8
|
"type": "git",
|
|
8
9
|
"url": "https://github.com/mattycigemp-crypto/omniharness.git"
|
|
9
10
|
},
|
|
10
11
|
"bin": {
|
|
11
|
-
"omniharness": "cli.
|
|
12
|
+
"omniharness": "cli.cjs"
|
|
12
13
|
},
|
|
13
14
|
"files": [
|
|
14
|
-
"cli.
|
|
15
|
+
"cli.cjs",
|
|
15
16
|
"dist/",
|
|
16
17
|
"README.md"
|
|
17
18
|
],
|
package/cli.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
const { spawnSync } = require('node:child_process');
|
|
5
|
-
const path = require('node:path');
|
|
6
|
-
|
|
7
|
-
const result = spawnSync(process.execPath, [path.join(__dirname, 'dist', 'cli.js'), ...process.argv.slice(2)], {
|
|
8
|
-
stdio: 'inherit',
|
|
9
|
-
});
|
|
10
|
-
|
|
11
|
-
if (result.error) {
|
|
12
|
-
console.error(`omniharness-cli: failed to launch: ${result.error.message}`);
|
|
13
|
-
process.exit(1);
|
|
14
|
-
}
|
|
15
|
-
process.exit(result.status ?? 1);
|