magi-code 0.105.1

Repository-aware CLI coding agent for terminal work
Documentation
(readBatchSize, maxBatchCalls) => {
    const nativeBridge = globalThis.__bridge;
    const stringify = JSON.stringify, parse = JSON.parse;
    const isArray = Array.isArray, toString = String;
    const trim = Function.prototype.call.bind(String.prototype.trim);
    const ArgumentError = TypeError, floor = Math.floor;
    const fail = message => { throw new ArgumentError(message); };
    const bridge = (...args) => parse(nativeBridge(...args));
    delete globalThis.__bridge;
    const readMany = ({paths, intent}) => {
        if (!isArray(paths) || paths.length > readBatchSize * maxBatchCalls)
            fail(`readMany requires at most ${readBatchSize * maxBatchCalls} paths`);
        if (typeof intent !== 'string' || !trim(intent))
            fail('readMany requires a nonblank intent');
        const calls = [];
        for (let i = 0; i < paths.length; i++) {
            const path = paths[i];
            if (typeof path !== 'string' || !trim(path))
                fail('readMany paths must be nonblank strings');
            const group = floor(i / readBatchSize);
            if (i % readBatchSize === 0) calls[group] = {name: 'read', args: {paths: [], intent}};
            calls[group].args.paths[i % readBatchSize] = path;
        }
        const results = bridge('call_all', '', stringify(calls));
        const files = [];
        let success = true, complete = true, requestComplete = true, anySuccess = false;
        for (let group = 0; group < calls.length; group++) {
            const result = results[group];
            const entries = result?.content?.files;
            success = success && result?.success === true;
            for (let index = 0; index < calls[group].args.paths.length; index++) {
                const path = calls[group].args.paths[index];
                const entry = isArray(entries) ? entries[index] : undefined;
                const file = entry?.path === path ? entry : {
                    path, text: '', success: false, complete: false, request_complete: false,
                    omitted: true, error: result?.error ?? 'Read result omitted requested path'
                };
                files[files.length] = file;
                success = success && file.success === true;
                complete = complete && file.success === true && file.complete === true;
                requestComplete = requestComplete && result?.success === true &&
                    file.success === true && file.request_complete === true;
                anySuccess = anySuccess || file.success === true;
            }
        }
        return {success, content: {files, complete, request_complete: requestComplete,
            outcome: requestComplete ? 'complete' : anySuccess ? 'partial' : 'failed'}};
    };
    Object.defineProperty(globalThis, 'tools', {value: Object.freeze({
        list: () => bridge('list', '', '{}'),
        search: query => bridge('search', toString(query), '{}'),
        describe: name => bridge('describe', toString(name), '{}'),
        budget: () => bridge('budget', '', '{}'),
        call: (name, args) => bridge('call', toString(name), stringify(args)),
        callAll: calls => bridge('call_all', '', stringify(calls)),
        readMany
    }), writable: false, configurable: false});
}