memax-cli 0.2.0 → 0.2.1
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/dist/commands/agent-configs-discovery.d.ts +38 -0
- package/dist/commands/agent-configs-discovery.d.ts.map +1 -0
- package/dist/commands/agent-configs-discovery.js +389 -0
- package/dist/commands/agent-configs-discovery.js.map +1 -0
- package/dist/commands/agent-configs.d.ts +2 -16
- package/dist/commands/agent-configs.d.ts.map +1 -1
- package/dist/commands/agent-configs.js +16 -268
- package/dist/commands/agent-configs.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +70 -0
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/setup-mcp.d.ts +39 -0
- package/dist/commands/setup-mcp.d.ts.map +1 -1
- package/dist/commands/setup-mcp.js +247 -35
- package/dist/commands/setup-mcp.js.map +1 -1
- package/dist/commands/setup-types.d.ts +1 -1
- package/dist/commands/setup-types.d.ts.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +23 -1
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/topic-archive.d.ts +12 -0
- package/dist/commands/topic-archive.d.ts.map +1 -0
- package/dist/commands/topic-archive.js +113 -0
- package/dist/commands/topic-archive.js.map +1 -0
- package/dist/commands/topic-shared.d.ts +7 -0
- package/dist/commands/topic-shared.d.ts.map +1 -0
- package/dist/commands/topic-shared.js +45 -0
- package/dist/commands/topic-shared.js.map +1 -0
- package/dist/commands/topic.d.ts +2 -7
- package/dist/commands/topic.d.ts.map +1 -1
- package/dist/commands/topic.js +23 -41
- package/dist/commands/topic.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type ProjectScope } from "../lib/project-context.js";
|
|
2
|
+
import type { AgentConfigClass, Scope } from "memax-sdk";
|
|
3
|
+
/**
|
|
4
|
+
* Agent config discovery + write-path resolution — the single registry of
|
|
5
|
+
* which on-disk files each agent owns. Detection is existence-based: every
|
|
6
|
+
* candidate location is listed here and the sync engine filters to files
|
|
7
|
+
* that actually exist.
|
|
8
|
+
*
|
|
9
|
+
* Two kinds of agents live in this registry:
|
|
10
|
+
* - Coding agents (Claude Code, Cursor, Codex, …) — configs are project
|
|
11
|
+
* conventions and rules files, mostly project-scoped.
|
|
12
|
+
* - Personal agents (OpenClaw, Hermes) — configs are identity (SOUL.md)
|
|
13
|
+
* and accumulated memory. These are irreplaceable, so coverage errs
|
|
14
|
+
* toward inclusion — but NEVER settings files (.env, *.json, *.yaml
|
|
15
|
+
* at the agent root): they routinely hold tokens and secrets.
|
|
16
|
+
*/
|
|
17
|
+
/** Files larger than this are skipped by sync — configs are stored inline
|
|
18
|
+
* in Postgres, not object storage. */
|
|
19
|
+
export declare const MAX_AGENT_CONFIG_BYTES: number;
|
|
20
|
+
export interface AgentConfigLocation {
|
|
21
|
+
agent: string;
|
|
22
|
+
label: string;
|
|
23
|
+
path: string;
|
|
24
|
+
filePath: string;
|
|
25
|
+
scope: Scope;
|
|
26
|
+
configClass: AgentConfigClass;
|
|
27
|
+
}
|
|
28
|
+
export interface ResolveAgentConfigWritePathOptions {
|
|
29
|
+
cwd?: string;
|
|
30
|
+
home?: string;
|
|
31
|
+
currentProjectScope?: ProjectScope;
|
|
32
|
+
findClaudeProjectDir?: (scope: Scope) => string | null;
|
|
33
|
+
}
|
|
34
|
+
export declare function findClaudeProjectDir(scope: Scope): string | null;
|
|
35
|
+
export declare function resolveAgentConfigWritePath(agent: string, filePath: string, scope: Scope, options?: ResolveAgentConfigWritePathOptions): string | null;
|
|
36
|
+
export declare function discoverAgentConfigs(): AgentConfigLocation[];
|
|
37
|
+
export declare function formatAgentName(id: string): string;
|
|
38
|
+
//# sourceMappingURL=agent-configs-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-configs-discovery.d.ts","sourceRoot":"","sources":["../../src/commands/agent-configs-discovery.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAEzD;;;;;;;;;;;;;GAaG;AAEH;sCACsC;AACtC,eAAO,MAAM,sBAAsB,QAAa,CAAC;AAEjD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,gBAAgB,CAAC;CAC/B;AAED,MAAM,WAAW,kCAAkC;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,YAAY,CAAC;IACnC,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,GAAG,IAAI,CAAC;CACxD;AAsBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,CAehE;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,kCAAuC,GAC/C,MAAM,GAAG,IAAI,CA0Hf;AAcD,wBAAgB,oBAAoB,IAAI,mBAAmB,EAAE,CAqW5D;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAclD"}
|
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
import { existsSync, readdirSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { getProjectScope, resolveClaudeProjectFolder, normalizeFilePath, isCanonicalProjectScope, } from "../lib/project-context.js";
|
|
5
|
+
import { classifyAgentConfigFile } from "memax-sdk";
|
|
6
|
+
/**
|
|
7
|
+
* Agent config discovery + write-path resolution — the single registry of
|
|
8
|
+
* which on-disk files each agent owns. Detection is existence-based: every
|
|
9
|
+
* candidate location is listed here and the sync engine filters to files
|
|
10
|
+
* that actually exist.
|
|
11
|
+
*
|
|
12
|
+
* Two kinds of agents live in this registry:
|
|
13
|
+
* - Coding agents (Claude Code, Cursor, Codex, …) — configs are project
|
|
14
|
+
* conventions and rules files, mostly project-scoped.
|
|
15
|
+
* - Personal agents (OpenClaw, Hermes) — configs are identity (SOUL.md)
|
|
16
|
+
* and accumulated memory. These are irreplaceable, so coverage errs
|
|
17
|
+
* toward inclusion — but NEVER settings files (.env, *.json, *.yaml
|
|
18
|
+
* at the agent root): they routinely hold tokens and secrets.
|
|
19
|
+
*/
|
|
20
|
+
/** Files larger than this are skipped by sync — configs are stored inline
|
|
21
|
+
* in Postgres, not object storage. */
|
|
22
|
+
export const MAX_AGENT_CONFIG_BYTES = 512 * 1024;
|
|
23
|
+
/** Profile names come from cloud-supplied scope strings — restrict to a
|
|
24
|
+
* conservative charset so they can never traverse out of the profiles dir. */
|
|
25
|
+
const SAFE_PROFILE_NAME = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
|
|
26
|
+
function profileNameFromScope(scope) {
|
|
27
|
+
if (!scope.startsWith("profile:"))
|
|
28
|
+
return null;
|
|
29
|
+
const name = scope.slice("profile:".length);
|
|
30
|
+
// SAFE_PROFILE_NAME forbids "/" and a leading dot, so traversal is
|
|
31
|
+
// impossible; keep this the single rule (mirrored in discovery below
|
|
32
|
+
// and in the server's safeProfileName) rather than layering ad-hoc
|
|
33
|
+
// extra checks that drift apart.
|
|
34
|
+
if (!SAFE_PROFILE_NAME.test(name))
|
|
35
|
+
return null;
|
|
36
|
+
return name;
|
|
37
|
+
}
|
|
38
|
+
/** Cloud-supplied file paths must never escape the agent's root directory. */
|
|
39
|
+
function hasPathTraversal(filePath) {
|
|
40
|
+
return filePath.split("/").some((segment) => segment === "..");
|
|
41
|
+
}
|
|
42
|
+
export function findClaudeProjectDir(scope) {
|
|
43
|
+
const home = homedir();
|
|
44
|
+
const claudeProjectsDir = join(home, ".claude", "projects");
|
|
45
|
+
if (!existsSync(claudeProjectsDir))
|
|
46
|
+
return null;
|
|
47
|
+
try {
|
|
48
|
+
for (const project of readdirSync(claudeProjectsDir)) {
|
|
49
|
+
const repoUrl = resolveClaudeProjectFolder(project);
|
|
50
|
+
if (repoUrl && scope === `project:${repoUrl}`) {
|
|
51
|
+
return join(claudeProjectsDir, project);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// Permission denied — skip
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
export function resolveAgentConfigWritePath(agent, filePath, scope, options = {}) {
|
|
61
|
+
const cwd = options.cwd ?? process.cwd();
|
|
62
|
+
const home = options.home ?? homedir();
|
|
63
|
+
const currentProjectScope = options.currentProjectScope ?? getProjectScope(cwd);
|
|
64
|
+
const normalizedFilePath = normalizeFilePath(filePath);
|
|
65
|
+
if (hasPathTraversal(normalizedFilePath))
|
|
66
|
+
return null;
|
|
67
|
+
if (scope === "global") {
|
|
68
|
+
switch (agent) {
|
|
69
|
+
case "claude-code":
|
|
70
|
+
return join(home, ".claude", normalizedFilePath);
|
|
71
|
+
case "codex":
|
|
72
|
+
return join(home, ".codex", normalizedFilePath);
|
|
73
|
+
case "gemini":
|
|
74
|
+
return join(home, ".gemini", normalizedFilePath);
|
|
75
|
+
case "openclaw":
|
|
76
|
+
return join(home, ".openclaw", normalizedFilePath);
|
|
77
|
+
case "opencode":
|
|
78
|
+
return join(home, ".opencode", normalizedFilePath);
|
|
79
|
+
case "hermes":
|
|
80
|
+
return join(home, ".hermes", normalizedFilePath);
|
|
81
|
+
default:
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (scope.startsWith("profile:")) {
|
|
86
|
+
const profile = profileNameFromScope(scope);
|
|
87
|
+
if (!profile)
|
|
88
|
+
return null;
|
|
89
|
+
switch (agent) {
|
|
90
|
+
case "hermes":
|
|
91
|
+
return join(home, ".hermes", "profiles", profile, normalizedFilePath);
|
|
92
|
+
default:
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (!scope.startsWith("project:") || scope !== currentProjectScope) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
switch (agent) {
|
|
100
|
+
case "claude-code":
|
|
101
|
+
if (normalizedFilePath === "CLAUDE.md" ||
|
|
102
|
+
normalizedFilePath === "MEMORY.md") {
|
|
103
|
+
return join(cwd, ".claude", normalizedFilePath);
|
|
104
|
+
}
|
|
105
|
+
if (normalizedFilePath.startsWith(".claude/")) {
|
|
106
|
+
return join(cwd, normalizedFilePath);
|
|
107
|
+
}
|
|
108
|
+
if (normalizedFilePath.startsWith("memory/")) {
|
|
109
|
+
const projectDir = options.findClaudeProjectDir?.(scope);
|
|
110
|
+
if (projectDir) {
|
|
111
|
+
return join(projectDir, normalizedFilePath);
|
|
112
|
+
}
|
|
113
|
+
const mangledCwd = cwd.replace(/\//g, "-");
|
|
114
|
+
return join(home, ".claude", "projects", mangledCwd, normalizedFilePath);
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
case "cursor":
|
|
118
|
+
if (normalizedFilePath === ".cursorrules" ||
|
|
119
|
+
normalizedFilePath.startsWith(".cursor/")) {
|
|
120
|
+
return join(cwd, normalizedFilePath);
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
123
|
+
case "codex":
|
|
124
|
+
if (normalizedFilePath === "instructions.md") {
|
|
125
|
+
return join(cwd, ".codex", "instructions.md");
|
|
126
|
+
}
|
|
127
|
+
if (normalizedFilePath.startsWith(".codex/")) {
|
|
128
|
+
return join(cwd, normalizedFilePath);
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
case "gemini":
|
|
132
|
+
if (normalizedFilePath === "GEMINI.md") {
|
|
133
|
+
return join(cwd, "GEMINI.md");
|
|
134
|
+
}
|
|
135
|
+
return null;
|
|
136
|
+
case "copilot":
|
|
137
|
+
if (normalizedFilePath === "copilot-instructions.md") {
|
|
138
|
+
return join(cwd, ".github", "copilot-instructions.md");
|
|
139
|
+
}
|
|
140
|
+
if (normalizedFilePath.startsWith(".github/")) {
|
|
141
|
+
return join(cwd, normalizedFilePath);
|
|
142
|
+
}
|
|
143
|
+
return null;
|
|
144
|
+
case "windsurf":
|
|
145
|
+
if (normalizedFilePath === ".windsurfrules" ||
|
|
146
|
+
normalizedFilePath.startsWith(".windsurf/")) {
|
|
147
|
+
return join(cwd, normalizedFilePath);
|
|
148
|
+
}
|
|
149
|
+
return null;
|
|
150
|
+
case "opencode":
|
|
151
|
+
if (normalizedFilePath.startsWith(".opencode/")) {
|
|
152
|
+
return join(cwd, normalizedFilePath);
|
|
153
|
+
}
|
|
154
|
+
return join(cwd, ".opencode", normalizedFilePath);
|
|
155
|
+
case "generic":
|
|
156
|
+
if (normalizedFilePath === "AGENTS.md" ||
|
|
157
|
+
normalizedFilePath === "CLAUDE.md" ||
|
|
158
|
+
normalizedFilePath === "GEMINI.md") {
|
|
159
|
+
return join(cwd, normalizedFilePath);
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
default:
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/** OpenClaw/Hermes bootstrap markdown files — identity + memory surfaces.
|
|
167
|
+
* Settings (openclaw.json, config.yaml, .env) are deliberately absent. */
|
|
168
|
+
const OPENCLAW_BOOTSTRAP_FILES = [
|
|
169
|
+
"SOUL.md",
|
|
170
|
+
"IDENTITY.md",
|
|
171
|
+
"USER.md",
|
|
172
|
+
"AGENTS.md",
|
|
173
|
+
"TOOLS.md",
|
|
174
|
+
"MEMORY.md",
|
|
175
|
+
];
|
|
176
|
+
const HERMES_BOOTSTRAP_FILES = ["SOUL.md", "MEMORY.md", "AGENTS.md"];
|
|
177
|
+
export function discoverAgentConfigs() {
|
|
178
|
+
const home = homedir();
|
|
179
|
+
const cwd = process.cwd();
|
|
180
|
+
const projectScope = getProjectScope(cwd);
|
|
181
|
+
const canonicalProjectScope = isCanonicalProjectScope(projectScope)
|
|
182
|
+
? projectScope
|
|
183
|
+
: null;
|
|
184
|
+
const locations = [];
|
|
185
|
+
const add = (agent, label, path, filePath, scope = "global") => {
|
|
186
|
+
const normalized = normalizeFilePath(filePath);
|
|
187
|
+
locations.push({
|
|
188
|
+
agent,
|
|
189
|
+
label,
|
|
190
|
+
path,
|
|
191
|
+
filePath: normalized,
|
|
192
|
+
scope,
|
|
193
|
+
configClass: classifyAgentConfigFile(agent, normalized),
|
|
194
|
+
});
|
|
195
|
+
};
|
|
196
|
+
/** Scan a directory for markdown files and register each one. */
|
|
197
|
+
const addMarkdownDir = (agent, labelPrefix, dir, filePathPrefix, scope = "global", extraExtensions = []) => {
|
|
198
|
+
if (!existsSync(dir))
|
|
199
|
+
return;
|
|
200
|
+
try {
|
|
201
|
+
for (const file of readdirSync(dir)) {
|
|
202
|
+
const keep = file.endsWith(".md") || extraExtensions.some((e) => file.endsWith(e));
|
|
203
|
+
if (!keep)
|
|
204
|
+
continue;
|
|
205
|
+
add(agent, `${labelPrefix}/${file}`, join(dir, file), `${filePathPrefix}/${file}`, scope);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
/* Permission denied — skip */
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
// Claude Code — global
|
|
213
|
+
add("claude-code", "~/.claude/CLAUDE.md", join(home, ".claude", "CLAUDE.md"), "CLAUDE.md");
|
|
214
|
+
add("claude-code", "~/.claude/MEMORY.md", join(home, ".claude", "MEMORY.md"), "MEMORY.md");
|
|
215
|
+
// Claude Code — per-project memories: ~/.claude/projects/*/memory/*.md
|
|
216
|
+
// The folder name is the absolute project path with "/" replaced by "-"
|
|
217
|
+
// (e.g., "-workspaces-memax"). We resolve it to a git repo URL so the
|
|
218
|
+
// same project's memories match across machines regardless of clone path.
|
|
219
|
+
const claudeProjectsDir = join(home, ".claude", "projects");
|
|
220
|
+
if (existsSync(claudeProjectsDir)) {
|
|
221
|
+
try {
|
|
222
|
+
for (const project of readdirSync(claudeProjectsDir)) {
|
|
223
|
+
const memoryDir = join(claudeProjectsDir, project, "memory");
|
|
224
|
+
if (!existsSync(memoryDir))
|
|
225
|
+
continue;
|
|
226
|
+
// Try to resolve mangled folder → git repo → canonical scope
|
|
227
|
+
const repoUrl = resolveClaudeProjectFolder(project);
|
|
228
|
+
const memoryScope = repoUrl
|
|
229
|
+
? `project:${repoUrl}`
|
|
230
|
+
: undefined;
|
|
231
|
+
try {
|
|
232
|
+
for (const file of readdirSync(memoryDir)) {
|
|
233
|
+
if (!file.endsWith(".md"))
|
|
234
|
+
continue;
|
|
235
|
+
if (memoryScope) {
|
|
236
|
+
// Canonical: filePath is just "memory/<file>", scope identifies the project
|
|
237
|
+
add("claude-code", `~/.claude/projects/${project}/memory/${file}`, join(memoryDir, file), `memory/${file}`, memoryScope);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
// Fallback: can't resolve project → keep legacy format with folder name
|
|
241
|
+
add("claude-code", `~/.claude/projects/${project}/memory/${file}`, join(memoryDir, file), `projects/${project}/memory/${file}`);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
// Permission denied — skip
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// Permission denied — skip
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// --- Project-scoped configs (only when inside a git repo) ---
|
|
255
|
+
if (canonicalProjectScope) {
|
|
256
|
+
// Claude Code — project-level
|
|
257
|
+
add("claude-code", "./.claude/CLAUDE.md", join(cwd, ".claude", "CLAUDE.md"), "CLAUDE.md", canonicalProjectScope);
|
|
258
|
+
// Cursor (project-level)
|
|
259
|
+
add("cursor", "./.cursorrules", join(cwd, ".cursorrules"), ".cursorrules", canonicalProjectScope);
|
|
260
|
+
const cursorRulesDir = join(cwd, ".cursor", "rules");
|
|
261
|
+
if (existsSync(cursorRulesDir)) {
|
|
262
|
+
try {
|
|
263
|
+
for (const file of readdirSync(cursorRulesDir)) {
|
|
264
|
+
if (file.endsWith(".mdc")) {
|
|
265
|
+
add("cursor", `./.cursor/rules/${file}`, join(cursorRulesDir, file), `.cursor/rules/${file}`, canonicalProjectScope);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
catch {
|
|
270
|
+
/* skip */
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// Codex (project-level)
|
|
274
|
+
add("codex", "./.codex/instructions.md", join(cwd, ".codex", "instructions.md"), "instructions.md", canonicalProjectScope);
|
|
275
|
+
}
|
|
276
|
+
add("codex", "~/.codex/AGENTS.md", join(home, ".codex", "AGENTS.md"), "AGENTS.md");
|
|
277
|
+
// Gemini CLI — global
|
|
278
|
+
add("gemini", "~/.gemini/GEMINI.md", join(home, ".gemini", "GEMINI.md"), "GEMINI.md");
|
|
279
|
+
if (canonicalProjectScope) {
|
|
280
|
+
// Gemini CLI — project-level
|
|
281
|
+
add("gemini", "./GEMINI.md", join(cwd, "GEMINI.md"), "GEMINI.md", canonicalProjectScope);
|
|
282
|
+
// GitHub Copilot
|
|
283
|
+
add("copilot", "./.github/copilot-instructions.md", join(cwd, ".github", "copilot-instructions.md"), "copilot-instructions.md", canonicalProjectScope);
|
|
284
|
+
// Windsurf
|
|
285
|
+
add("windsurf", "./.windsurfrules", join(cwd, ".windsurfrules"), ".windsurfrules", canonicalProjectScope);
|
|
286
|
+
const windsurfRulesDir = join(cwd, ".windsurf", "rules");
|
|
287
|
+
if (existsSync(windsurfRulesDir)) {
|
|
288
|
+
try {
|
|
289
|
+
for (const file of readdirSync(windsurfRulesDir)) {
|
|
290
|
+
if (file.endsWith(".md")) {
|
|
291
|
+
add("windsurf", `./.windsurf/rules/${file}`, join(windsurfRulesDir, file), `.windsurf/rules/${file}`, canonicalProjectScope);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
catch {
|
|
296
|
+
/* skip */
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
// OpenClaw — personal agent. Identity + memory markdown at the state root
|
|
301
|
+
// and inside the workspace, plus skills. The agent's accumulated identity
|
|
302
|
+
// is irreplaceable, so coverage is broad — but settings JSON stays out.
|
|
303
|
+
const openclawDir = join(home, ".openclaw");
|
|
304
|
+
for (const file of OPENCLAW_BOOTSTRAP_FILES) {
|
|
305
|
+
add("openclaw", `~/.openclaw/${file}`, join(openclawDir, file), file);
|
|
306
|
+
add("openclaw", `~/.openclaw/workspace/${file}`, join(openclawDir, "workspace", file), `workspace/${file}`);
|
|
307
|
+
}
|
|
308
|
+
// Legacy memory dir (kept for existing users — includes .json memory state)
|
|
309
|
+
addMarkdownDir("openclaw", "~/.openclaw/memory", join(openclawDir, "memory"), "memory", "global", [".json"]);
|
|
310
|
+
addMarkdownDir("openclaw", "~/.openclaw/workspace/memory", join(openclawDir, "workspace", "memory"), "workspace/memory");
|
|
311
|
+
// Skills — one SKILL.md per skill directory
|
|
312
|
+
const openclawSkillsDir = join(openclawDir, "skills");
|
|
313
|
+
if (existsSync(openclawSkillsDir)) {
|
|
314
|
+
try {
|
|
315
|
+
for (const skill of readdirSync(openclawSkillsDir)) {
|
|
316
|
+
const skillFile = join(openclawSkillsDir, skill, "SKILL.md");
|
|
317
|
+
if (existsSync(skillFile)) {
|
|
318
|
+
add("openclaw", `~/.openclaw/skills/${skill}/SKILL.md`, skillFile, `skills/${skill}/SKILL.md`);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
catch {
|
|
323
|
+
/* skip */
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
// Hermes — personal agent with named profiles. The default (root) profile
|
|
327
|
+
// syncs as global scope; each ~/.hermes/profiles/<name>/ syncs under
|
|
328
|
+
// profile:<name> so every device restores the same profile set.
|
|
329
|
+
// config.yaml and .env are settings/secrets — never synced.
|
|
330
|
+
const hermesDir = join(home, ".hermes");
|
|
331
|
+
for (const file of HERMES_BOOTSTRAP_FILES) {
|
|
332
|
+
add("hermes", `~/.hermes/${file}`, join(hermesDir, file), file);
|
|
333
|
+
}
|
|
334
|
+
addMarkdownDir("hermes", "~/.hermes/memory", join(hermesDir, "memory"), "memory");
|
|
335
|
+
const hermesProfilesDir = join(hermesDir, "profiles");
|
|
336
|
+
if (existsSync(hermesProfilesDir)) {
|
|
337
|
+
try {
|
|
338
|
+
for (const profile of readdirSync(hermesProfilesDir)) {
|
|
339
|
+
if (!SAFE_PROFILE_NAME.test(profile))
|
|
340
|
+
continue;
|
|
341
|
+
const profileDir = join(hermesProfilesDir, profile);
|
|
342
|
+
const scope = `profile:${profile}`;
|
|
343
|
+
for (const file of HERMES_BOOTSTRAP_FILES) {
|
|
344
|
+
add("hermes", `~/.hermes/profiles/${profile}/${file}`, join(profileDir, file), file, scope);
|
|
345
|
+
}
|
|
346
|
+
addMarkdownDir("hermes", `~/.hermes/profiles/${profile}/memory`, join(profileDir, "memory"), "memory", scope);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
catch {
|
|
350
|
+
/* skip */
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
if (canonicalProjectScope) {
|
|
354
|
+
// OpenCode (project-level)
|
|
355
|
+
const opencodePath = join(cwd, ".opencode");
|
|
356
|
+
if (existsSync(opencodePath)) {
|
|
357
|
+
try {
|
|
358
|
+
for (const file of readdirSync(opencodePath)) {
|
|
359
|
+
if (file.endsWith(".md")) {
|
|
360
|
+
add("opencode", `./.opencode/${file}`, join(opencodePath, file), file, canonicalProjectScope);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
catch {
|
|
365
|
+
/* skip */
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
// Generic project-level agent files
|
|
369
|
+
add("generic", "./AGENTS.md", join(cwd, "AGENTS.md"), "AGENTS.md", canonicalProjectScope);
|
|
370
|
+
add("generic", "./CLAUDE.md", join(cwd, "CLAUDE.md"), "CLAUDE.md", canonicalProjectScope);
|
|
371
|
+
}
|
|
372
|
+
return locations;
|
|
373
|
+
}
|
|
374
|
+
export function formatAgentName(id) {
|
|
375
|
+
const names = {
|
|
376
|
+
"claude-code": "Claude Code",
|
|
377
|
+
cursor: "Cursor",
|
|
378
|
+
codex: "Codex",
|
|
379
|
+
gemini: "Gemini CLI",
|
|
380
|
+
copilot: "GitHub Copilot",
|
|
381
|
+
windsurf: "Windsurf",
|
|
382
|
+
openclaw: "OpenClaw",
|
|
383
|
+
hermes: "Hermes",
|
|
384
|
+
opencode: "OpenCode",
|
|
385
|
+
generic: "Generic",
|
|
386
|
+
};
|
|
387
|
+
return names[id] ?? id;
|
|
388
|
+
}
|
|
389
|
+
//# sourceMappingURL=agent-configs-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-configs-discovery.js","sourceRoot":"","sources":["../../src/commands/agent-configs-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import { type ProjectScope } from "../lib/project-context.js";
|
|
3
2
|
import type { Scope } from "memax-sdk";
|
|
3
|
+
import { type AgentConfigLocation, type ResolveAgentConfigWritePathOptions } from "./agent-configs-discovery.js";
|
|
4
|
+
export { resolveAgentConfigWritePath } from "./agent-configs-discovery.js";
|
|
4
5
|
export declare function syncAgentMemoryCommand(options?: SyncAgentOptions): Promise<void>;
|
|
5
6
|
export declare function listAgentConfigsCommand(): Promise<void>;
|
|
6
7
|
export declare function listDeletedAgentConfigsCommand(): Promise<void>;
|
|
@@ -17,25 +18,10 @@ export declare function classifyAgentConfigPlacement(agent: string, filePath: st
|
|
|
17
18
|
export declare function doctorAgentConfigsCommand(): Promise<void>;
|
|
18
19
|
export declare function registerAgentConfigCommands(agentsCmd: Command): void;
|
|
19
20
|
export declare function deleteAgentConfigsCommand(): Promise<void>;
|
|
20
|
-
interface AgentConfigLocation {
|
|
21
|
-
agent: string;
|
|
22
|
-
label: string;
|
|
23
|
-
path: string;
|
|
24
|
-
filePath: string;
|
|
25
|
-
scope: Scope;
|
|
26
|
-
}
|
|
27
|
-
interface ResolveAgentConfigWritePathOptions {
|
|
28
|
-
cwd?: string;
|
|
29
|
-
home?: string;
|
|
30
|
-
currentProjectScope?: ProjectScope;
|
|
31
|
-
findClaudeProjectDir?: (scope: Scope) => string | null;
|
|
32
|
-
}
|
|
33
|
-
export declare function resolveAgentConfigWritePath(agent: string, filePath: string, scope: Scope, options?: ResolveAgentConfigWritePathOptions): string | null;
|
|
34
21
|
interface SyncAgentOptions {
|
|
35
22
|
push?: boolean;
|
|
36
23
|
pull?: boolean;
|
|
37
24
|
/** Skip conflicts silently (used by setup — conflicts can be resolved later via `memax agents sync`). */
|
|
38
25
|
skipConflicts?: boolean;
|
|
39
26
|
}
|
|
40
|
-
export {};
|
|
41
27
|
//# sourceMappingURL=agent-configs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-configs.d.ts","sourceRoot":"","sources":["../../src/commands/agent-configs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-configs.d.ts","sourceRoot":"","sources":["../../src/commands/agent-configs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0BpC,OAAO,KAAK,EAAe,KAAK,EAAkB,MAAM,WAAW,CAAC;AAEpE,OAAO,EAML,KAAK,mBAAmB,EACxB,KAAK,kCAAkC,EACxC,MAAM,8BAA8B,CAAC;AAItC,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAE3E,wBAAsB,sBAAsB,CAC1C,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAwD7D;AAED,wBAAsB,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC,CAkCpE;AAED,wBAAsB,iCAAiC,IAAI,OAAO,CAAC,IAAI,CAAC,CAgHvE;AAED,UAAU,oBAAoB;IAC5B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,mBAAmB,GAAG,YAAY,CAAC;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,mCAAoC,SAAQ,kCAAkC;IACtF,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC/C;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,mCAAwC,GAChD,oBAAoB,CAkCtB;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiK/D;AAED,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,CAsCpE;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsP/D;AA4CD,UAAU,gBAAgB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yGAAyG;IACzG,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB"}
|