micro-models-agent 0.41.2 → 0.43.0
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/bin/mma.mjs +41 -41
- package/dist/cli/commands.js +19 -9
- package/dist/cli/completer.js +37 -36
- package/dist/cli/index.js +2 -2
- package/dist/cli/main.js +23 -48
- package/dist/cli/repl-commands.js +12 -40
- package/dist/cli/repl.js +87 -217
- package/dist/cli/security-commands.js +7 -5
- package/dist/cli/setup.js +26 -8
- package/dist/config/config.js +5 -52
- package/dist/config/defaults.js +5 -29
- package/dist/config/experts.js +1 -1
- package/dist/config/index.js +3 -3
- package/dist/config/security.js +10 -3
- package/dist/core/agent-moe.js +10 -2
- package/dist/core/agent.js +82 -273
- package/dist/core/bootstrap.js +13 -80
- package/dist/core/index.js +2 -2
- package/dist/core/prompt-builder.js +2 -23
- package/dist/core/session-logger.js +4 -46
- package/dist/i18n/en.json +2 -75
- package/dist/i18n/ru.json +1 -74
- package/dist/index.js +1 -1
- package/dist/llm/image-utils.js +5 -4
- package/dist/llm/index.js +4 -4
- package/dist/llm/model-loader.js +6 -6
- package/dist/llm/openai-compat.js +34 -40
- package/dist/llm/orchestrator.js +29 -33
- package/dist/llm/response.js +9 -9
- package/dist/logger/app-logger.js +1 -1
- package/dist/logger/index.js +1 -1
- package/dist/main.js +648 -183
- package/dist/migration/backup.js +13 -13
- package/dist/migration/detect.js +11 -11
- package/dist/migration/index.js +2 -2
- package/dist/modules/browser/actions.js +4 -34
- package/dist/modules/browser/bridge-server.mjs +202 -202
- package/dist/modules/browser/cookie-store.js +6 -6
- package/dist/modules/browser/index.js +5 -7
- package/dist/modules/browser/module.js +7 -8
- package/dist/modules/browser/session.js +84 -87
- package/dist/modules/browser/snapshot.js +58 -92
- package/dist/modules/browser/types.js +1 -4
- package/dist/modules/certification/cli.js +4 -2
- package/dist/modules/certification/fact-checker.js +3 -1
- package/dist/modules/certification/loader.js +9 -3
- package/dist/modules/certification/runner.js +4 -1
- package/dist/modules/context/index.js +1 -1
- package/dist/modules/context/manager.js +86 -160
- package/dist/modules/execution/auditor.js +25 -177
- package/dist/modules/execution/module.js +544 -201
- package/dist/modules/execution/moe-executor.js +0 -25
- package/dist/modules/execution/plan-store.js +3 -1
- package/dist/modules/execution/plan-validator.js +10 -10
- package/dist/modules/execution/planner.js +1 -6
- package/dist/modules/execution/stuck-detector.js +10 -173
- package/dist/modules/execution/verifier.js +42 -86
- package/dist/modules/hallucination/confidence.js +1 -8
- package/dist/modules/hallucination/detector.js +5 -2
- package/dist/modules/hallucination/factual.js +64 -3
- package/dist/modules/hallucination/index.js +1 -1
- package/dist/modules/hallucination/js-identifiers.js +0 -190
- package/dist/modules/hallucination/llm-judge.js +3 -1
- package/dist/modules/indexer/cache.js +7 -9
- package/dist/modules/indexer/index.js +3 -3
- package/dist/modules/indexer/module.js +42 -95
- package/dist/modules/indexer/walker.js +17 -17
- package/dist/modules/lsp/client.js +31 -74
- package/dist/modules/lsp/config.js +33 -87
- package/dist/modules/lsp/index.js +3 -3
- package/dist/modules/lsp/module.js +21 -185
- package/dist/modules/mcp/module.js +6 -2
- package/dist/modules/memory/index.js +1 -1
- package/dist/modules/memory/module.js +23 -71
- package/dist/modules/memory/search.js +9 -11
- package/dist/modules/memory/store.js +13 -13
- package/dist/modules/pipelines/engine.js +10 -10
- package/dist/modules/pipelines/index.js +3 -3
- package/dist/modules/pipelines/parser.js +14 -17
- package/dist/modules/pipelines/template.js +1 -1
- package/dist/modules/plugins/builtin/lint-on-write.js +16 -21
- package/dist/modules/plugins/builtin/notify.js +2 -3
- package/dist/modules/plugins/index.js +1 -1
- package/dist/modules/plugins/loader.js +17 -59
- package/dist/modules/plugins/manager.js +17 -73
- package/dist/modules/processes/index.js +1 -1
- package/dist/modules/processes/registry.js +46 -135
- package/dist/modules/registry.js +2 -4
- package/dist/modules/security/audit-notifier.js +39 -39
- package/dist/modules/security/command-validator.js +8 -2
- package/dist/modules/security/data-sanitizer.js +9 -1
- package/dist/modules/security/encryption.js +56 -58
- package/dist/modules/security/network-validator.js +9 -1
- package/dist/modules/security/path-validator.js +3 -1
- package/dist/modules/security/security-policies.js +19 -3
- package/dist/modules/security/session-encryption.js +1 -1
- package/dist/modules/security/session-isolation.js +8 -8
- package/dist/modules/session/index.js +3 -3
- package/dist/modules/session/module.js +5 -5
- package/dist/modules/session/store.js +9 -3
- package/dist/modules/skills/module.js +2 -1
- package/dist/modules/updater/checker.js +6 -70
- package/dist/modules/updater/index.js +1 -2
- package/dist/modules/user-profile/compressor.js +2 -2
- package/dist/modules/user-profile/index.js +1 -1
- package/dist/modules/user-profile/profile.js +9 -9
- package/dist/tools/attach-image.js +1 -1
- package/dist/tools/bash.js +19 -178
- package/dist/tools/browser.js +29 -46
- package/dist/tools/executor.js +5 -4
- package/dist/tools/file-info.js +12 -13
- package/dist/tools/filter-tools.js +2 -9
- package/dist/tools/glob-tool.js +11 -11
- package/dist/tools/grep-tool.js +3 -1
- package/dist/tools/index.js +2 -13
- package/dist/tools/list-dir.js +17 -18
- package/dist/tools/load-skill.js +3 -1
- package/dist/tools/path-utils.js +4 -4
- package/dist/tools/pipeline-run.js +25 -25
- package/dist/tools/process-kill.js +11 -11
- package/dist/tools/process-list.js +22 -20
- package/dist/tools/process-log.js +18 -22
- package/dist/tools/question.js +3 -1
- package/dist/tools/read-file.js +2 -10
- package/dist/tools/recall.js +37 -44
- package/dist/tools/registry.js +4 -15
- package/dist/tools/remember.js +29 -29
- package/dist/tools/scope-check.js +9 -9
- package/dist/tools/subagent.js +9 -54
- package/dist/tools/user-input.js +1 -1
- package/dist/tools/web-browse.js +3 -3
- package/dist/tools/web-fetch.js +3 -3
- package/dist/tools/web-search.js +3 -3
- package/dist/tools/write-file.js +3 -1
- package/dist/ui/box.js +5 -1
- package/dist/ui/index.js +6 -6
- package/dist/ui/md-formatter.js +33 -33
- package/dist/ui/output.js +5 -5
- package/dist/ui/renderer.js +10 -15
- package/dist/ui/table.js +1 -1
- package/package.json +48 -48
- package/dist/cli/plugin-commands.js +0 -36
- package/dist/cli/run-result.js +0 -22
- package/dist/core/version.js +0 -24
- package/dist/modules/artifacts/store.js +0 -61
- package/dist/modules/browser/bridge-client.js +0 -199
- package/dist/modules/browser/bridge-path.js +0 -10
- package/dist/modules/browser/driver.js +0 -136
- package/dist/modules/context/chunk-query.js +0 -100
- package/dist/modules/context/fact-extractor.js +0 -162
- package/dist/modules/context/history.js +0 -15
- package/dist/modules/execution/audit-runners.js +0 -152
- package/dist/modules/execution/execution-plugin.js +0 -272
- package/dist/modules/execution/plan-tool.js +0 -508
- package/dist/modules/execution/windows-commands.js +0 -41
- package/dist/modules/indexer/project-profile.js +0 -183
- package/dist/modules/lsp/check-tool.js +0 -58
- package/dist/modules/lsp/command.js +0 -60
- package/dist/modules/lsp/probe.js +0 -76
- package/dist/modules/lsp/project-root.js +0 -32
- package/dist/modules/lsp/startup-check.js +0 -141
- package/dist/modules/processes/detect.js +0 -34
- package/dist/modules/skills/matcher.js +0 -27
- package/dist/modules/updater/module.js +0 -116
- package/dist/tools/chunk-query.js +0 -99
- package/dist/tools/download-file.js +0 -116
- package/dist/tools/enable-tools.js +0 -58
- package/dist/tools/hidden-tools-block.js +0 -37
- package/dist/ui/line-editor.js +0 -703
- package/dist/ui/line-math.js +0 -69
- package/dist/ui/plan-view.js +0 -103
package/dist/ui/line-math.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import stringWidth from "string-width";
|
|
2
|
-
const ANSI_RE = /\x1b\[[0-9;?]*[ -/]*[@-~]/g;
|
|
3
|
-
export function stripAnsi(s) {
|
|
4
|
-
return s.replace(ANSI_RE, "");
|
|
5
|
-
}
|
|
6
|
-
export function charLen(s) {
|
|
7
|
-
return Array.from(s).length;
|
|
8
|
-
}
|
|
9
|
-
export function wrapLine(line, width) {
|
|
10
|
-
const w = width > 0 ? width : 80;
|
|
11
|
-
const chars = Array.from(line);
|
|
12
|
-
const rows = [];
|
|
13
|
-
let start = 0;
|
|
14
|
-
let cells = 0;
|
|
15
|
-
for (let i = 0; i < chars.length; i++) {
|
|
16
|
-
const ch = chars[i];
|
|
17
|
-
if (ch === "\n") {
|
|
18
|
-
rows.push({ text: chars.slice(start, i).join(""), charStart: start });
|
|
19
|
-
start = i + 1;
|
|
20
|
-
cells = 0;
|
|
21
|
-
continue;
|
|
22
|
-
}
|
|
23
|
-
const cw = stringWidth(ch);
|
|
24
|
-
if (cells + cw > w && cells > 0) {
|
|
25
|
-
rows.push({ text: chars.slice(start, i).join(""), charStart: start });
|
|
26
|
-
start = i;
|
|
27
|
-
cells = cw;
|
|
28
|
-
}
|
|
29
|
-
else {
|
|
30
|
-
cells += cw;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
rows.push({ text: chars.slice(start).join(""), charStart: start });
|
|
34
|
-
return rows;
|
|
35
|
-
}
|
|
36
|
-
export function buildLayout(lines, width) {
|
|
37
|
-
const rows = [];
|
|
38
|
-
for (let b = 0; b < lines.length; b++) {
|
|
39
|
-
for (const r of wrapLine(lines[b], width)) {
|
|
40
|
-
rows.push({ bufRow: b, charStart: r.charStart, text: r.text });
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return rows;
|
|
44
|
-
}
|
|
45
|
-
export function layoutIndexFor(rows, bufRow, col) {
|
|
46
|
-
let idx = 0;
|
|
47
|
-
for (let i = 0; i < rows.length; i++) {
|
|
48
|
-
if (rows[i].bufRow === bufRow && rows[i].charStart <= col)
|
|
49
|
-
idx = i;
|
|
50
|
-
}
|
|
51
|
-
return idx;
|
|
52
|
-
}
|
|
53
|
-
export function visualColAt(rows, idx, col) {
|
|
54
|
-
const r = rows[idx];
|
|
55
|
-
const upTo = col - r.charStart;
|
|
56
|
-
return stringWidth(Array.from(r.text).slice(0, upTo).join(""));
|
|
57
|
-
}
|
|
58
|
-
export function charOffsetFor(rows, idx, visualCol) {
|
|
59
|
-
const r = rows[idx];
|
|
60
|
-
const chars = Array.from(r.text);
|
|
61
|
-
let cells = 0;
|
|
62
|
-
for (let i = 0; i < chars.length; i++) {
|
|
63
|
-
const cw = stringWidth(chars[i]);
|
|
64
|
-
if (cells + cw > visualCol)
|
|
65
|
-
return r.charStart + i;
|
|
66
|
-
cells += cw;
|
|
67
|
-
}
|
|
68
|
-
return r.charStart + chars.length;
|
|
69
|
-
}
|
package/dist/ui/plan-view.js
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from "fs";
|
|
2
|
-
import { join } from "path";
|
|
3
|
-
import { pc } from "./colors";
|
|
4
|
-
import { extractFileLikeTokens, stripUrls } from "../modules/hallucination/js-identifiers";
|
|
5
|
-
import { t } from "../i18n/index";
|
|
6
|
-
export function readActivePlan(baseDir) {
|
|
7
|
-
const p = join(baseDir, ".mma", "plans", "active.json");
|
|
8
|
-
if (!existsSync(p))
|
|
9
|
-
return null;
|
|
10
|
-
try {
|
|
11
|
-
const raw = readFileSync(p, "utf-8");
|
|
12
|
-
if (!raw.trim())
|
|
13
|
-
return null;
|
|
14
|
-
const parsed = JSON.parse(raw);
|
|
15
|
-
if (!parsed || !Array.isArray(parsed.steps))
|
|
16
|
-
return null;
|
|
17
|
-
return {
|
|
18
|
-
id: parsed.id || "plan",
|
|
19
|
-
title: parsed.title || "Plan",
|
|
20
|
-
steps: parsed.steps,
|
|
21
|
-
createdAt: parsed.createdAt || new Date().toISOString(),
|
|
22
|
-
baseDir: parsed.baseDir || baseDir,
|
|
23
|
-
name: parsed.name,
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
export function currentStepIndex(plan) {
|
|
31
|
-
const idx = plan.steps.findIndex((s) => s.status !== "done" && s.status !== "skipped");
|
|
32
|
-
return idx === -1 ? 0 : idx;
|
|
33
|
-
}
|
|
34
|
-
function stepMark(step) {
|
|
35
|
-
switch (step.status) {
|
|
36
|
-
case "done":
|
|
37
|
-
return pc.green("[x]");
|
|
38
|
-
case "in_progress":
|
|
39
|
-
return pc.yellow("[*]");
|
|
40
|
-
case "failed":
|
|
41
|
-
return pc.red("[!]");
|
|
42
|
-
case "skipped":
|
|
43
|
-
return pc.dim("[-]");
|
|
44
|
-
default:
|
|
45
|
-
return pc.dim("[ ]");
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
export function formatPlanChecklist(plan) {
|
|
49
|
-
const done = plan.steps.filter((s) => s.status === "done" || s.status === "skipped").length;
|
|
50
|
-
const total = plan.steps.length;
|
|
51
|
-
const pct = total === 0 ? 0 : Math.round((done / total) * 100);
|
|
52
|
-
const cur = currentStepIndex(plan);
|
|
53
|
-
const barLen = 15;
|
|
54
|
-
const filled = Math.round((pct / 100) * barLen);
|
|
55
|
-
const bar = pc.green("█".repeat(filled)) + pc.dim("░".repeat(barLen - filled));
|
|
56
|
-
const title = plan.title.replace(/^\[\d+[^]]*\]\s*/, "");
|
|
57
|
-
const lines = [
|
|
58
|
-
`${pc.cyan(`[${plan.id}]`)} ${pc.bold(title)} ${bar} ${pc.dim(`${done}/${total} ${pct}%`)}`,
|
|
59
|
-
];
|
|
60
|
-
for (let i = 0; i < plan.steps.length; i++) {
|
|
61
|
-
const step = plan.steps[i];
|
|
62
|
-
const active = i === cur;
|
|
63
|
-
const desc = active ? pc.yellow(step.description) : pc.dim(step.description);
|
|
64
|
-
lines.push(` ${stepMark(step)} ${step.id}. ${desc}`);
|
|
65
|
-
for (const sub of step.subtasks ?? []) {
|
|
66
|
-
lines.push(` ${sub.done ? pc.green("[x]") : pc.dim("[ ]")} ${sub.text}`);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return lines;
|
|
70
|
-
}
|
|
71
|
-
const STRUCTURAL_TOOLS = new Set([
|
|
72
|
-
"plan",
|
|
73
|
-
"todo",
|
|
74
|
-
"verify",
|
|
75
|
-
"project_map",
|
|
76
|
-
"lsp_check",
|
|
77
|
-
"enable_tools",
|
|
78
|
-
]);
|
|
79
|
-
function truncate(s, max = 48) {
|
|
80
|
-
return s.length > max ? `${s.slice(0, max - 1)}…` : s;
|
|
81
|
-
}
|
|
82
|
-
export function stepContextForTool(plan, tool, args) {
|
|
83
|
-
if (!plan || STRUCTURAL_TOOLS.has(tool))
|
|
84
|
-
return null;
|
|
85
|
-
const argStr = JSON.stringify(args);
|
|
86
|
-
const callPaths = extractFileLikeTokens(stripUrls(argStr)).map((p) => p.toLowerCase());
|
|
87
|
-
if (callPaths.length > 0) {
|
|
88
|
-
for (const step of plan.steps) {
|
|
89
|
-
if (step.status === "done" || step.status === "skipped")
|
|
90
|
-
continue;
|
|
91
|
-
const stepPaths = extractFileLikeTokens(stripUrls(step.description)).map((p) => p.toLowerCase());
|
|
92
|
-
if (stepPaths.length > 0 &&
|
|
93
|
-
stepPaths.some((s) => callPaths.some((c) => c.includes(s) || s.includes(c)))) {
|
|
94
|
-
return t("ui.step_context", { id: step.id, desc: truncate(step.description) });
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
const cur = currentStepIndex(plan);
|
|
99
|
-
const step = plan.steps[cur];
|
|
100
|
-
if (!step)
|
|
101
|
-
return null;
|
|
102
|
-
return t("ui.step_context", { id: step.id, desc: truncate(step.description) });
|
|
103
|
-
}
|