min-agent 0.5.1 → 0.6.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/README.md +18 -18
- package/dist/cli.js +538 -12
- package/docs/API.md +6 -6
- package/package.json +6 -6
- package/skills/self-config/SKILL.md +4 -2
- package/skills/self-config/reference.md +4 -1
- package/dist/agent.js +0 -1388
- package/dist/assistant-stream.js +0 -131
- package/dist/cli/commands/chat.js +0 -13
- package/dist/cli/commands/ctx.js +0 -7
- package/dist/cli/commands/exec.js +0 -35
- package/dist/cli/commands/history.js +0 -58
- package/dist/cli/commands/index.js +0 -249
- package/dist/cli/commands/init.js +0 -18
- package/dist/cli/commands/mcp.js +0 -173
- package/dist/cli/commands/memory.js +0 -87
- package/dist/cli/commands/models.js +0 -21
- package/dist/cli/commands/permission.js +0 -12
- package/dist/cli/commands/rules.js +0 -33
- package/dist/cli/commands/sandbox.js +0 -13
- package/dist/cli/commands/serve.js +0 -9
- package/dist/cli/commands/setup.js +0 -56
- package/dist/cli/commands/shared.js +0 -25
- package/dist/cli/commands/skills.js +0 -119
- package/dist/cli/commands/think.js +0 -12
- package/dist/cli/commands/update.js +0 -7
- package/dist/cli/commands/write-config.js +0 -52
- package/dist/cli/errors.js +0 -36
- package/dist/cli/exec-prompt.js +0 -26
- package/dist/cli/option-helpers.js +0 -65
- package/dist/cli/program.js +0 -223
- package/dist/cli/setup/detect.js +0 -17
- package/dist/cli/setup/flags.js +0 -12
- package/dist/cli/setup/flow.js +0 -108
- package/dist/cli/setup/provider-form.js +0 -102
- package/dist/cli/setup/ui.js +0 -534
- package/dist/clipboard.js +0 -142
- package/dist/code-mode.js +0 -184
- package/dist/compaction.js +0 -644
- package/dist/config.js +0 -363
- package/dist/confirm.js +0 -172
- package/dist/context-window.js +0 -256
- package/dist/ctx-cli.js +0 -30
- package/dist/ctx.js +0 -80
- package/dist/doom-loop.js +0 -278
- package/dist/fetch-timeout.js +0 -152
- package/dist/http-approvals.js +0 -60
- package/dist/http.js +0 -119
- package/dist/instructions.js +0 -196
- package/dist/logger.js +0 -95
- package/dist/markdown.js +0 -259
- package/dist/mcp.js +0 -1036
- package/dist/memory-cli.js +0 -33
- package/dist/memory.js +0 -295
- package/dist/model-catalog.js +0 -285
- package/dist/ollama-model.js +0 -234
- package/dist/ollama-openai-bridge.js +0 -383
- package/dist/output.js +0 -76
- package/dist/paste-handler.js +0 -41
- package/dist/permission-cli.js +0 -40
- package/dist/plugins.js +0 -131
- package/dist/pricing.js +0 -119
- package/dist/provider.js +0 -63
- package/dist/question-format.js +0 -60
- package/dist/reasoning-stream.js +0 -158
- package/dist/sandbox-cli.js +0 -79
- package/dist/sandbox.js +0 -403
- package/dist/save-throttle.js +0 -45
- package/dist/scope.js +0 -23
- package/dist/serve/common.js +0 -425
- package/dist/serve/routes-chat.js +0 -367
- package/dist/serve/routes-mcp.js +0 -212
- package/dist/serve/routes-memory.js +0 -95
- package/dist/serve/routes-meta.js +0 -268
- package/dist/serve/routes-sessions.js +0 -61
- package/dist/serve/routes-skills.js +0 -70
- package/dist/serve.js +0 -138
- package/dist/sessions.js +0 -265
- package/dist/skills.js +0 -599
- package/dist/structured-output.js +0 -29
- package/dist/synthetic.js +0 -7
- package/dist/think-cli.js +0 -36
- package/dist/thinking-wire.js +0 -239
- package/dist/thinking.js +0 -166
- package/dist/title-gen.js +0 -55
- package/dist/token-display.js +0 -39
- package/dist/tool-display.js +0 -178
- package/dist/tool-output.js +0 -126
- package/dist/tools/apply_patch.js +0 -265
- package/dist/tools/atomic-file.js +0 -35
- package/dist/tools/backend.js +0 -61
- package/dist/tools/bash.js +0 -231
- package/dist/tools/code_search.js +0 -98
- package/dist/tools/edit.js +0 -68
- package/dist/tools/explore.js +0 -232
- package/dist/tools/glob.js +0 -40
- package/dist/tools/grep.js +0 -174
- package/dist/tools/index.js +0 -34
- package/dist/tools/question.js +0 -54
- package/dist/tools/read.js +0 -109
- package/dist/tools/search-searxng.js +0 -223
- package/dist/tools/search-serper.js +0 -189
- package/dist/tools/task.js +0 -165
- package/dist/tools/todo.js +0 -213
- package/dist/tools/web_fetch.js +0 -195
- package/dist/tools/web_search.js +0 -228
- package/dist/tools/write.js +0 -55
- package/dist/tui/App.js +0 -138
- package/dist/tui/ConfirmBar.js +0 -66
- package/dist/tui/CtxPicker.js +0 -68
- package/dist/tui/InputBar.js +0 -618
- package/dist/tui/MessageList.js +0 -718
- package/dist/tui/ModelPicker.js +0 -113
- package/dist/tui/QuestionBar.js +0 -136
- package/dist/tui/SessionPicker.js +0 -79
- package/dist/tui/Spinner.js +0 -6
- package/dist/tui/StatusBar.js +0 -22
- package/dist/tui/ThinkPicker.js +0 -75
- package/dist/tui/agent-runner.js +0 -223
- package/dist/tui/bracketed-paste.js +0 -37
- package/dist/tui/caret-pos.js +0 -179
- package/dist/tui/caret.js +0 -69
- package/dist/tui/click-count.js +0 -13
- package/dist/tui/diff-view.js +0 -61
- package/dist/tui/drag-state.js +0 -49
- package/dist/tui/hydrate.js +0 -129
- package/dist/tui/index.js +0 -264
- package/dist/tui/input-history.js +0 -125
- package/dist/tui/layout.js +0 -105
- package/dist/tui/mouse.js +0 -46
- package/dist/tui/overlay-input.js +0 -12
- package/dist/tui/paste-draft.js +0 -173
- package/dist/tui/prompt-queue.js +0 -24
- package/dist/tui/selection.js +0 -232
- package/dist/tui/session-switch.js +0 -28
- package/dist/tui/slash-commands.js +0 -129
- package/dist/tui/slash-handler.js +0 -615
- package/dist/tui/text-width.js +0 -113
- package/dist/tui/theme.js +0 -12
- package/dist/tui/token-info.js +0 -7
- package/dist/tui/tool-children.js +0 -19
- package/dist/tui/types.js +0 -1
- package/dist/tui/undo-stack.js +0 -14
- package/dist/tui/use-sgr-mouse.js +0 -29
- package/dist/tui-chat.js +0 -478
- package/dist/updater.js +0 -116
- package/dist/xml-search.js +0 -194
- package/docs/superpowers/plans/2026-08-16-batch1-tui-improvements.md +0 -1510
- package/docs/superpowers/plans/2026-08-16-batch2-cli-tools-api.md +0 -2105
- package/docs/superpowers/plans/2026-08-16-batch3-config-engineering.md +0 -1595
- package/docs/superpowers/plans/2026-08-16-input-caret.md +0 -782
- package/docs/superpowers/plans/2026-08-20-tui-completeness.md +0 -873
- package/docs/superpowers/plans/2026-08-20-unified-tui-default.md +0 -631
- package/docs/superpowers/plans/2026-08-23-cli-setup.md +0 -501
- package/docs/superpowers/plans/2026-08-23-input-paste-attachments.md +0 -475
- package/docs/superpowers/plans/2026-08-23-thinking-wire-profile.md +0 -450
- package/docs/superpowers/specs/2026-08-16-batch1-tui-improvements-design.md +0 -183
- package/docs/superpowers/specs/2026-08-16-batch2-cli-tools-api-design.md +0 -220
- package/docs/superpowers/specs/2026-08-16-batch3-config-engineering-design.md +0 -196
- package/docs/superpowers/specs/2026-08-16-input-caret-design.md +0 -63
- package/docs/superpowers/specs/2026-08-17-mouse-selection-design.md +0 -116
- package/docs/superpowers/specs/2026-08-20-config-http-alignment-design.md +0 -47
- package/docs/superpowers/specs/2026-08-20-mcp-plugins-alignment-design.md +0 -37
- package/docs/superpowers/specs/2026-08-20-sandbox-permissions-design.md +0 -68
- package/docs/superpowers/specs/2026-08-20-tui-completeness-design.md +0 -273
- package/docs/superpowers/specs/2026-08-20-unified-tui-default-design.md +0 -165
- package/docs/superpowers/specs/2026-08-23-cli-setup-design.md +0 -282
- package/docs/superpowers/specs/2026-08-23-input-paste-attachments-design.md +0 -174
- package/docs/superpowers/specs/2026-08-23-thinking-wire-profile-design.md +0 -140
package/dist/code-mode.js
DELETED
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import { execSync } from "child_process";
|
|
2
|
-
import { existsSync, readFileSync, readdirSync, statSync } from "fs";
|
|
3
|
-
import path from "path";
|
|
4
|
-
export function scanProject() {
|
|
5
|
-
const cwd = process.cwd();
|
|
6
|
-
const isGitRepo = existsSync(path.join(cwd, ".git"));
|
|
7
|
-
let branch;
|
|
8
|
-
if (isGitRepo) {
|
|
9
|
-
try {
|
|
10
|
-
branch = execSync("git branch --show-current", { encoding: "utf-8", cwd, timeout: 5000 }).trim();
|
|
11
|
-
}
|
|
12
|
-
catch { }
|
|
13
|
-
}
|
|
14
|
-
const languages = [];
|
|
15
|
-
const configFiles = [];
|
|
16
|
-
const entryFiles = [];
|
|
17
|
-
// Detect by config files (lockfiles first so they win over package.json)
|
|
18
|
-
const checks = [
|
|
19
|
-
{ file: "bun.lock", lang: "TypeScript/JavaScript", pm: "bun" },
|
|
20
|
-
{ file: "yarn.lock", lang: "TypeScript/JavaScript", pm: "yarn" },
|
|
21
|
-
{ file: "pnpm-lock.yaml", lang: "TypeScript/JavaScript", pm: "pnpm" },
|
|
22
|
-
{ file: "package.json", lang: "TypeScript/JavaScript", pm: "npm" },
|
|
23
|
-
{ file: "tsconfig.json", lang: "TypeScript" },
|
|
24
|
-
{ file: "Cargo.toml", lang: "Rust", pm: "cargo" },
|
|
25
|
-
{ file: "go.mod", lang: "Go" },
|
|
26
|
-
{ file: "pyproject.toml", lang: "Python", pm: "pip/uv" },
|
|
27
|
-
{ file: "requirements.txt", lang: "Python", pm: "pip" },
|
|
28
|
-
{ file: "Gemfile", lang: "Ruby", pm: "bundler" },
|
|
29
|
-
{ file: "pom.xml", lang: "Java", pm: "maven" },
|
|
30
|
-
{ file: "build.gradle", lang: "Java/Kotlin", pm: "gradle" },
|
|
31
|
-
{ file: "composer.json", lang: "PHP", pm: "composer" },
|
|
32
|
-
{ file: "Makefile", lang: "" },
|
|
33
|
-
{ file: "Dockerfile", lang: "" },
|
|
34
|
-
];
|
|
35
|
-
let packageManager;
|
|
36
|
-
let framework;
|
|
37
|
-
for (const check of checks) {
|
|
38
|
-
if (existsSync(path.join(cwd, check.file))) {
|
|
39
|
-
configFiles.push(check.file);
|
|
40
|
-
if (check.lang && !languages.includes(check.lang))
|
|
41
|
-
languages.push(check.lang);
|
|
42
|
-
if (check.pm && !packageManager)
|
|
43
|
-
packageManager = check.pm;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// Detect framework from package.json
|
|
47
|
-
if (existsSync(path.join(cwd, "package.json"))) {
|
|
48
|
-
try {
|
|
49
|
-
const pkg = JSON.parse(readFileSync(path.join(cwd, "package.json"), "utf-8"));
|
|
50
|
-
const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
51
|
-
if (allDeps.next)
|
|
52
|
-
framework = "Next.js";
|
|
53
|
-
else if (allDeps.nuxt)
|
|
54
|
-
framework = "Nuxt";
|
|
55
|
-
else if (allDeps["@angular/core"])
|
|
56
|
-
framework = "Angular";
|
|
57
|
-
else if (allDeps.vue)
|
|
58
|
-
framework = "Vue";
|
|
59
|
-
else if (allDeps.react)
|
|
60
|
-
framework = "React";
|
|
61
|
-
else if (allDeps.svelte)
|
|
62
|
-
framework = "Svelte";
|
|
63
|
-
else if (allDeps.express)
|
|
64
|
-
framework = "Express";
|
|
65
|
-
else if (allDeps.fastify)
|
|
66
|
-
framework = "Fastify";
|
|
67
|
-
else if (allDeps.hono)
|
|
68
|
-
framework = "Hono";
|
|
69
|
-
else if (allDeps.effect)
|
|
70
|
-
framework = "Effect";
|
|
71
|
-
}
|
|
72
|
-
catch { }
|
|
73
|
-
}
|
|
74
|
-
// Find entry files
|
|
75
|
-
const entryPatterns = [
|
|
76
|
-
"src/index.ts",
|
|
77
|
-
"src/index.js",
|
|
78
|
-
"src/main.ts",
|
|
79
|
-
"src/main.js",
|
|
80
|
-
"src/app.ts",
|
|
81
|
-
"src/app.js",
|
|
82
|
-
"index.ts",
|
|
83
|
-
"index.js",
|
|
84
|
-
"main.ts",
|
|
85
|
-
"main.js",
|
|
86
|
-
"app.ts",
|
|
87
|
-
"app.js",
|
|
88
|
-
"src/lib.rs",
|
|
89
|
-
"main.go",
|
|
90
|
-
"main.py",
|
|
91
|
-
"app.py",
|
|
92
|
-
];
|
|
93
|
-
for (const p of entryPatterns) {
|
|
94
|
-
if (existsSync(path.join(cwd, p)))
|
|
95
|
-
entryFiles.push(p);
|
|
96
|
-
}
|
|
97
|
-
// Build summary
|
|
98
|
-
const parts = [];
|
|
99
|
-
parts.push(`Directory: ${cwd}`);
|
|
100
|
-
if (isGitRepo)
|
|
101
|
-
parts.push(`Git: yes (branch: ${branch ?? "unknown"})`);
|
|
102
|
-
if (languages.length)
|
|
103
|
-
parts.push(`Languages: ${languages.join(", ")}`);
|
|
104
|
-
if (framework)
|
|
105
|
-
parts.push(`Framework: ${framework}`);
|
|
106
|
-
if (packageManager)
|
|
107
|
-
parts.push(`Package manager: ${packageManager}`);
|
|
108
|
-
if (configFiles.length)
|
|
109
|
-
parts.push(`Config files: ${configFiles.join(", ")}`);
|
|
110
|
-
if (entryFiles.length)
|
|
111
|
-
parts.push(`Entry points: ${entryFiles.join(", ")}`);
|
|
112
|
-
// List top-level directory structure
|
|
113
|
-
try {
|
|
114
|
-
const items = readdirSync(cwd)
|
|
115
|
-
.filter((f) => !f.startsWith(".") || f === ".env.example")
|
|
116
|
-
.filter((f) => f !== "node_modules" && f !== ".git")
|
|
117
|
-
.slice(0, 30)
|
|
118
|
-
.map((f) => {
|
|
119
|
-
const stat = statSync(path.join(cwd, f));
|
|
120
|
-
return stat.isDirectory() ? `${f}/` : f;
|
|
121
|
-
});
|
|
122
|
-
parts.push(`Structure: ${items.join(", ")}`);
|
|
123
|
-
}
|
|
124
|
-
catch { }
|
|
125
|
-
return {
|
|
126
|
-
directory: cwd,
|
|
127
|
-
isGitRepo,
|
|
128
|
-
branch,
|
|
129
|
-
languages,
|
|
130
|
-
framework,
|
|
131
|
-
packageManager,
|
|
132
|
-
entryFiles,
|
|
133
|
-
configFiles,
|
|
134
|
-
summary: parts.join("\n"),
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
export function buildCodeSystemPrompt(project, instructions) {
|
|
138
|
-
const parts = [
|
|
139
|
-
"You are an expert AI coding assistant. You help users with software engineering tasks including writing code, debugging, refactoring, and architecture decisions.",
|
|
140
|
-
"",
|
|
141
|
-
"# Principles",
|
|
142
|
-
"- Be concise and direct. Minimize output tokens while maintaining quality.",
|
|
143
|
-
"- NEVER add comments to code unless asked. Write self-documenting code.",
|
|
144
|
-
"- Follow existing code conventions in the project. Mimic style, libraries, and patterns.",
|
|
145
|
-
"- NEVER assume a library is available — check package.json/Cargo.toml/etc first.",
|
|
146
|
-
"- Prefer editing existing files over creating new ones.",
|
|
147
|
-
"- After making changes, run lint/typecheck/build if available.",
|
|
148
|
-
"- NEVER commit unless explicitly asked.",
|
|
149
|
-
"- When the user asks to configure, install, or manage MCP servers, skills, rules, memory, permission, sandbox, providers, plugins, or other min-agent settings, follow the built-in `self-config` skill (already loaded). If its instructions are missing, load it with the skill tool before making changes.",
|
|
150
|
-
"",
|
|
151
|
-
"# Workflow",
|
|
152
|
-
"- For greetings, thanks, or general chat with no concrete task, reply directly — do not call any tools. Memories and session state are not a reason to start work; only the current user message is. The Project Structure below already covers the basics; do not re-explore the codebase just to answer a greeting.",
|
|
153
|
-
"- Use search tools (grep, glob) to understand the codebase before making changes, only once the user gives a concrete task.",
|
|
154
|
-
"- Use the search_web tool for live web search. Never emit XML tags such as <web_search>.",
|
|
155
|
-
"- After a few targeted web searches and fetching the best sources, stop researching and produce the requested output.",
|
|
156
|
-
"- Do not keep searching for completeness, extra models, or slightly better numbers. Mark uncertain dates or scores as estimates and move on.",
|
|
157
|
-
"- If the user asked for a file or other artifact, write it as soon as the required fields can be filled. Then stop.",
|
|
158
|
-
"- Use the edit tool for precise changes instead of rewriting entire files.",
|
|
159
|
-
"- When fixing bugs: read the relevant code, understand the issue, fix it, verify.",
|
|
160
|
-
"- When adding features: explore existing patterns first, then implement consistently.",
|
|
161
|
-
"- Run tests after changes when a test command is available.",
|
|
162
|
-
"",
|
|
163
|
-
"# Environment",
|
|
164
|
-
`<env>`,
|
|
165
|
-
` Working directory: ${project.directory}`,
|
|
166
|
-
` Git repo: ${project.isGitRepo ? `yes (branch: ${project.branch ?? "unknown"})` : "no"}`,
|
|
167
|
-
` Platform: ${process.platform}`,
|
|
168
|
-
` Date: ${new Date().toDateString()}`,
|
|
169
|
-
project.languages.length ? ` Languages: ${project.languages.join(", ")}` : "",
|
|
170
|
-
project.framework ? ` Framework: ${project.framework}` : "",
|
|
171
|
-
project.packageManager ? ` Package manager: ${project.packageManager}` : "",
|
|
172
|
-
`</env>`,
|
|
173
|
-
"",
|
|
174
|
-
"# Project Structure",
|
|
175
|
-
"```",
|
|
176
|
-
project.summary,
|
|
177
|
-
"```",
|
|
178
|
-
].filter(Boolean);
|
|
179
|
-
if (instructions.length > 0) {
|
|
180
|
-
parts.push("", "# User Instructions", "");
|
|
181
|
-
parts.push(...instructions);
|
|
182
|
-
}
|
|
183
|
-
return parts.join("\n");
|
|
184
|
-
}
|