nomoreide 0.1.72 → 0.1.73
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 +48 -0
- package/dist/cli/agents.d.ts +2 -0
- package/dist/cli/agents.js +43 -0
- package/dist/cli/agents.js.map +1 -0
- package/dist/cli/commands.js +9 -1
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/profile.d.ts +2 -0
- package/dist/cli/profile.js +167 -0
- package/dist/cli/profile.js.map +1 -0
- package/dist/index.js +13 -2
- package/dist/index.js.map +1 -1
- package/dist/web/client/assets/{code-editor-fZ2dpXfw.js → code-editor-DetFymBD.js} +1 -1
- package/dist/web/client/assets/{index-CraqLFuO.js → index-ZEkxfpgl.js} +2 -2
- package/dist/web/client/index.html +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -212,6 +212,9 @@ graph TD
|
|
|
212
212
|
| Database browse and SQL query | | | ✓ | ✓ |
|
|
213
213
|
| Human-approved SQL writes | | | ✓ | |
|
|
214
214
|
| Agent tools, hooks, plugins, usage | | | ✓ | |
|
|
215
|
+
| Agent environments (live MCPs & skills) | ✓ | | ✓ | ✓ |
|
|
216
|
+
| Agent profiles (snapshot / apply / share) | ✓ | | ✓ | ✓ |
|
|
217
|
+
| Hosted profile registry (publish / install) | ✓ | | ✓ | ✓ |
|
|
215
218
|
| Safe Git (no force-push, no reset) | ✓ | ✓ | ✓ | ✓ |
|
|
216
219
|
|
|
217
220
|
---
|
|
@@ -316,6 +319,36 @@ nomoreide git add-repo app --path /path/to/repo
|
|
|
316
319
|
nomoreide git select-repo app
|
|
317
320
|
```
|
|
318
321
|
|
|
322
|
+
### Agent Environments & Profiles
|
|
323
|
+
|
|
324
|
+
Inspect and manage your coding agents' MCP servers and skills (Claude Code,
|
|
325
|
+
Codex CLI, Antigravity), and bundle them into portable profiles. Formerly the
|
|
326
|
+
standalone `brainctl` package — see the
|
|
327
|
+
[migration guide](docs/brainctl-migration.md).
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
# Live agent configuration (read-only)
|
|
331
|
+
nomoreide agents status # per-agent install state, MCP + skill counts
|
|
332
|
+
nomoreide agents doctor # config sanity checks
|
|
333
|
+
nomoreide agents read claude # dump one agent's live config as JSON
|
|
334
|
+
|
|
335
|
+
# Profiles: named bundles of MCP servers + skills
|
|
336
|
+
nomoreide profile list
|
|
337
|
+
nomoreide profile snapshot claude my-setup # capture an agent's live config
|
|
338
|
+
nomoreide profile apply my-setup codex --dry-run
|
|
339
|
+
nomoreide profile apply my-setup codex # backs up the config first
|
|
340
|
+
nomoreide profile export my-setup # credential-redacted .tar.gz
|
|
341
|
+
nomoreide profile import my-setup.tar.gz --as teammate-setup
|
|
342
|
+
|
|
343
|
+
# Hosted registry (sign in via the web UI, or set BRAINCTL_API_TOKEN)
|
|
344
|
+
nomoreide profile publish my-setup --slug my-setup --title "My Setup"
|
|
345
|
+
nomoreide profile install my-setup
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Exports and published packages never contain raw secrets — secret-looking
|
|
349
|
+
values are redacted to `${credentials.*}` placeholders that importers fill
|
|
350
|
+
from their own environment.
|
|
351
|
+
|
|
319
352
|
---
|
|
320
353
|
|
|
321
354
|
## MCP Tools
|
|
@@ -383,6 +416,21 @@ All tools are prefixed with `nomoreide_` and are available to any connected MCP
|
|
|
383
416
|
| `nomoreide_github_get_commit_ci` | Inspect commit check status |
|
|
384
417
|
| `nomoreide_github_list_workflow_runs` | List recent GitHub Actions workflow runs |
|
|
385
418
|
|
|
419
|
+
### Agent Environment & Profile Tools
|
|
420
|
+
|
|
421
|
+
| Tool | Description |
|
|
422
|
+
|---|---|
|
|
423
|
+
| `nomoreide_agents_status` / `nomoreide_agents_read_configs` | Live agent install state and MCP/skill configuration |
|
|
424
|
+
| `nomoreide_agents_doctor` | Agent config sanity checks |
|
|
425
|
+
| `nomoreide_agents_add_mcp` / `nomoreide_agents_remove_mcp` | Add or remove an MCP server (config backed up first) |
|
|
426
|
+
| `nomoreide_agents_move_mcp_scope` / `nomoreide_agents_move_skill_scope` | Copy/move MCPs and skills between agents and scopes |
|
|
427
|
+
| `nomoreide_agents_snapshot_agent` | Back up an agent's config files |
|
|
428
|
+
| `nomoreide_profiles_list` / `get` / `create` / `update` / `delete` | Profile CRUD |
|
|
429
|
+
| `nomoreide_profiles_snapshot` / `nomoreide_profiles_apply` | Capture a live agent into a profile / apply one (dry-run preview) |
|
|
430
|
+
| `nomoreide_profiles_export` / `nomoreide_profiles_import` | Credential-redacted portable archives |
|
|
431
|
+
| `nomoreide_profiles_publish` / `nomoreide_profiles_install_from_registry` | Share profiles through the hosted registry |
|
|
432
|
+
| `nomoreide_profiles_register_github` | Register a GitHub repo as a registry profile |
|
|
433
|
+
|
|
386
434
|
---
|
|
387
435
|
|
|
388
436
|
## Example Configurations
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getAgentAvailability, readAllAgentConfigs, runAgentDoctor, AGENT_NAMES, } from "../core/agent-env/index.js";
|
|
2
|
+
import { UsageError } from "./errors.js";
|
|
3
|
+
const USAGE = "Usage: nomoreide agents [status|doctor|read [claude|codex|antigravity]]";
|
|
4
|
+
/** Agent Environments on the CLI (ROR-64) — read-only, same core as UI/MCP. */
|
|
5
|
+
export async function runAgentsCli(subcommand, args, stdout) {
|
|
6
|
+
const cwd = process.cwd();
|
|
7
|
+
if (subcommand === undefined || subcommand === "status") {
|
|
8
|
+
const [availability, configs] = await Promise.all([
|
|
9
|
+
getAgentAvailability(),
|
|
10
|
+
readAllAgentConfigs({ cwd }),
|
|
11
|
+
]);
|
|
12
|
+
const byAgent = new Map(availability.map((entry) => [entry.agent, entry]));
|
|
13
|
+
stdout("Agent\tInstalled\tMCPs\tSkills\tConfig");
|
|
14
|
+
for (const config of configs) {
|
|
15
|
+
const installed = byAgent.get(config.agent)?.available ? "yes" : "no";
|
|
16
|
+
const mcpCount = Object.keys(config.mcpServers).length +
|
|
17
|
+
Object.keys(config.remoteMcpServers).length +
|
|
18
|
+
Object.keys(config.projectMcpServers).length +
|
|
19
|
+
Object.keys(config.projectRemoteMcpServers).length;
|
|
20
|
+
stdout(`${config.agent}\t${installed}\t${mcpCount}\t${config.skills.length}\t${config.exists ? config.configPath : "(none)"}`);
|
|
21
|
+
}
|
|
22
|
+
return 0;
|
|
23
|
+
}
|
|
24
|
+
if (subcommand === "doctor") {
|
|
25
|
+
const result = await runAgentDoctor({ cwd });
|
|
26
|
+
for (const check of result.checks) {
|
|
27
|
+
stdout(`${check.status === "ok" ? "ok" : "warn"}\t${check.label}\t${check.message}`);
|
|
28
|
+
}
|
|
29
|
+
return result.hasIssues ? 1 : 0;
|
|
30
|
+
}
|
|
31
|
+
if (subcommand === "read") {
|
|
32
|
+
const agent = args.find((arg) => !arg.startsWith("--"));
|
|
33
|
+
if (agent && !AGENT_NAMES.includes(agent)) {
|
|
34
|
+
throw new UsageError(`Unknown agent "${agent}". Use one of: ${AGENT_NAMES.join(", ")}`);
|
|
35
|
+
}
|
|
36
|
+
const configs = await readAllAgentConfigs({ cwd });
|
|
37
|
+
const selected = agent ? configs.filter((config) => config.agent === agent) : configs;
|
|
38
|
+
stdout(JSON.stringify(agent ? selected[0] : selected, null, 2));
|
|
39
|
+
return 0;
|
|
40
|
+
}
|
|
41
|
+
throw new UsageError(USAGE);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/cli/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,WAAW,GAEZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,KAAK,GAAG,yEAAyE,CAAC;AAExF,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAA8B,EAC9B,IAAc,EACd,MAA8B;IAE9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QACxD,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAChD,oBAAoB,EAAE;YACtB,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC;SAC7B,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,CAAC,wCAAwC,CAAC,CAAC;QACjD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YACtE,MAAM,QAAQ,GACZ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM;gBACrC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM;gBAC3C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM;gBAC5C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC;YACrD,MAAM,CACJ,GAAG,MAAM,CAAC,KAAK,KAAK,SAAS,KAAK,QAAQ,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CACvH,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAkB,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,UAAU,CAAC,kBAAkB,KAAK,kBAAkB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACtF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/cli/commands.js
CHANGED
|
@@ -2,10 +2,12 @@ import { resolve } from "node:path";
|
|
|
2
2
|
import { ConfigStore, ConfigValidationError, defaultGlobalConfigPath, } from "../core/config-store.js";
|
|
3
3
|
import { LogStore } from "../core/log-store.js";
|
|
4
4
|
import { ProcessManager } from "../core/process-manager.js";
|
|
5
|
+
import { runAgentsCli } from "./agents.js";
|
|
5
6
|
import { UsageError } from "./errors.js";
|
|
6
7
|
import { parseFlags } from "./flags.js";
|
|
7
8
|
import { runGitCli } from "./git.js";
|
|
8
|
-
|
|
9
|
+
import { runProfileCli } from "./profile.js";
|
|
10
|
+
const USAGE = "Usage: nomoreide [mcp|setup|tui|web|git|agents|profile|list|logs|start|stop|restart|add]";
|
|
9
11
|
const MCP_SETUP_LINES = [
|
|
10
12
|
"NoMoreIDE MCP setup",
|
|
11
13
|
"",
|
|
@@ -44,6 +46,12 @@ export async function runCli(args, options = {}) {
|
|
|
44
46
|
if (command === "git") {
|
|
45
47
|
return await runGitCli(subcommand, rest, stdout, configStore);
|
|
46
48
|
}
|
|
49
|
+
if (command === "agents") {
|
|
50
|
+
return await runAgentsCli(subcommand, rest, stdout);
|
|
51
|
+
}
|
|
52
|
+
if (command === "profile") {
|
|
53
|
+
return await runProfileCli(subcommand, rest, stdout);
|
|
54
|
+
}
|
|
47
55
|
if (command === "add" && subcommand === "service") {
|
|
48
56
|
const name = rest[0];
|
|
49
57
|
const flags = parseFlags(rest.slice(1));
|
package/dist/cli/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/cli/commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { applyProfile, createRegistryTokenManager, deleteProfile, exportProfile, getProfile, importProfile, installProfileFromRegistry, listProfiles, previewProfileApply, publishProfileToRegistry, resolveRegistryApiBaseUrl, resolveRegistryApiToken, snapshotProfileFromAgent, } from "../core/agent-profiles/index.js";
|
|
2
|
+
import { AGENT_NAMES } from "../core/agent-env/index.js";
|
|
3
|
+
import { UsageError } from "./errors.js";
|
|
4
|
+
import { parseFlags } from "./flags.js";
|
|
5
|
+
const USAGE = [
|
|
6
|
+
"Usage: nomoreide profile <subcommand>",
|
|
7
|
+
" list saved profiles",
|
|
8
|
+
" show <name> full profile JSON",
|
|
9
|
+
" snapshot <agent> <name> [--description <text>]",
|
|
10
|
+
" apply <name> <agent> [--dry-run] [--skip-mcps a,b] [--skip-skills x,y]",
|
|
11
|
+
" export <name> [--output <path>] credential-redacted .tar.gz",
|
|
12
|
+
" import <archive> [--force] [--as <name>]",
|
|
13
|
+
" delete <name>",
|
|
14
|
+
" publish <name> --slug <slug> --title <title> [--version <v>] [--summary <text>]",
|
|
15
|
+
" install <slug> [--force] [--as <name>] install from the hosted registry",
|
|
16
|
+
].join("\n");
|
|
17
|
+
/** Agent profiles on the CLI (ROR-64) — same core as the UI and MCP tools. */
|
|
18
|
+
export async function runProfileCli(subcommand, args, stdout) {
|
|
19
|
+
const cwd = process.cwd();
|
|
20
|
+
const flags = parseFlags(args);
|
|
21
|
+
const positional = args.filter((arg, index) => {
|
|
22
|
+
if (arg.startsWith("--"))
|
|
23
|
+
return false;
|
|
24
|
+
const previous = args[index - 1];
|
|
25
|
+
return !(previous?.startsWith("--") && !previous.includes("="));
|
|
26
|
+
});
|
|
27
|
+
const has = (flag) => args.includes(flag);
|
|
28
|
+
if (subcommand === undefined || subcommand === "list") {
|
|
29
|
+
const profiles = await listProfiles();
|
|
30
|
+
if (profiles.length === 0) {
|
|
31
|
+
stdout("No profiles yet. Create one with: nomoreide profile snapshot <agent> <name>");
|
|
32
|
+
return 0;
|
|
33
|
+
}
|
|
34
|
+
stdout("Name\tMCPs\tSkills\tUpdated\tDescription");
|
|
35
|
+
for (const profile of profiles) {
|
|
36
|
+
stdout(`${profile.name}\t${profile.mcpCount}\t${profile.skillCount}\t${profile.updatedAt}\t${profile.description ?? ""}`);
|
|
37
|
+
}
|
|
38
|
+
return 0;
|
|
39
|
+
}
|
|
40
|
+
if (subcommand === "show") {
|
|
41
|
+
const name = requirePositional(positional[0], "profile name");
|
|
42
|
+
stdout(JSON.stringify(await getProfile(name), null, 2));
|
|
43
|
+
return 0;
|
|
44
|
+
}
|
|
45
|
+
if (subcommand === "snapshot") {
|
|
46
|
+
const agent = requireAgent(positional[0]);
|
|
47
|
+
const name = requirePositional(positional[1], "profile name");
|
|
48
|
+
const profile = await snapshotProfileFromAgent({
|
|
49
|
+
agent,
|
|
50
|
+
name,
|
|
51
|
+
description: flags.description,
|
|
52
|
+
cwd,
|
|
53
|
+
});
|
|
54
|
+
stdout(`Snapshotted ${agent} into "${profile.name}" (${Object.keys(profile.mcps).length} MCPs, ${profile.skills.length} skills)`);
|
|
55
|
+
return 0;
|
|
56
|
+
}
|
|
57
|
+
if (subcommand === "apply") {
|
|
58
|
+
const name = requirePositional(positional[0], "profile name");
|
|
59
|
+
const agent = requireAgent(positional[1]);
|
|
60
|
+
if (has("--dry-run")) {
|
|
61
|
+
const preview = await previewProfileApply({ cwd, name, agent });
|
|
62
|
+
stdout("Item\tStatus");
|
|
63
|
+
for (const item of preview.items) {
|
|
64
|
+
const warnings = item.warnings.length > 0 ? ` (${item.warnings.join("; ")})` : "";
|
|
65
|
+
stdout(`${item.category} ${item.name}\t${item.status}${warnings}`);
|
|
66
|
+
}
|
|
67
|
+
if (preview.unresolvedCredentials.length > 0) {
|
|
68
|
+
stdout(`Unresolved credentials: ${preview.unresolvedCredentials.join(", ")}`);
|
|
69
|
+
}
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
const result = await applyProfile({
|
|
73
|
+
cwd,
|
|
74
|
+
name,
|
|
75
|
+
agent,
|
|
76
|
+
skip: { mcps: splitList(flags.skipMcps), skills: splitList(flags.skipSkills) },
|
|
77
|
+
});
|
|
78
|
+
stdout(`Applied "${result.profile}" to ${result.agent}: ${result.mcpsApplied.length} MCPs, ${result.skillsApplied.length} skills` +
|
|
79
|
+
(result.skipped.length > 0 ? `, skipped ${result.skipped.join(", ")}` : ""));
|
|
80
|
+
for (const backup of result.backups)
|
|
81
|
+
stdout(`Backup: ${backup}`);
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
if (subcommand === "export") {
|
|
85
|
+
const name = requirePositional(positional[0], "profile name");
|
|
86
|
+
const result = await exportProfile({ name, outputPath: flags.output, cwd });
|
|
87
|
+
stdout(`Exported to ${result.archivePath} (credentials redacted)`);
|
|
88
|
+
if (result.credentials.length > 0) {
|
|
89
|
+
stdout(`Importers must supply: ${result.credentials.map((spec) => spec.key).join(", ")}`);
|
|
90
|
+
}
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
if (subcommand === "import") {
|
|
94
|
+
const archivePath = requirePositional(positional[0], "archive path");
|
|
95
|
+
const result = await importProfile({ archivePath, force: has("--force"), as: flags.as });
|
|
96
|
+
stdout(`Imported "${result.name}" (${result.mcpCount} MCPs, ${result.skillCount} skills)`);
|
|
97
|
+
reportMissingCredentials(result.missingCredentials, stdout);
|
|
98
|
+
return 0;
|
|
99
|
+
}
|
|
100
|
+
if (subcommand === "delete") {
|
|
101
|
+
const name = requirePositional(positional[0], "profile name");
|
|
102
|
+
await deleteProfile(name);
|
|
103
|
+
stdout(`Deleted profile "${name}"`);
|
|
104
|
+
return 0;
|
|
105
|
+
}
|
|
106
|
+
if (subcommand === "publish") {
|
|
107
|
+
const name = requirePositional(positional[0], "profile name");
|
|
108
|
+
if (!flags.slug || !flags.title)
|
|
109
|
+
throw new UsageError("--slug and --title are required");
|
|
110
|
+
const tokenManager = createRegistryTokenManager();
|
|
111
|
+
if ((await tokenManager.getAccessToken()) === null) {
|
|
112
|
+
throw new UsageError("Not signed in to the registry. Sign in from the web UI (Agent Environments) or set BRAINCTL_API_TOKEN.");
|
|
113
|
+
}
|
|
114
|
+
const result = await publishProfileToRegistry({
|
|
115
|
+
name,
|
|
116
|
+
slug: flags.slug,
|
|
117
|
+
title: flags.title,
|
|
118
|
+
summary: flags.summary,
|
|
119
|
+
version: flags.version,
|
|
120
|
+
cwd,
|
|
121
|
+
apiBaseUrl: await resolveRegistryApiBaseUrl(),
|
|
122
|
+
fetch: (input, init) => tokenManager.authenticatedFetch(typeof input === "string" ? input : input.toString(), init),
|
|
123
|
+
});
|
|
124
|
+
stdout(`Published "${result.slug}" v${result.version} to the registry (credentials redacted)`);
|
|
125
|
+
return 0;
|
|
126
|
+
}
|
|
127
|
+
if (subcommand === "install") {
|
|
128
|
+
const slug = requirePositional(positional[0], "registry slug");
|
|
129
|
+
const result = await installProfileFromRegistry({
|
|
130
|
+
slug,
|
|
131
|
+
force: has("--force"),
|
|
132
|
+
as: flags.as,
|
|
133
|
+
apiBaseUrl: await resolveRegistryApiBaseUrl(),
|
|
134
|
+
token: (await resolveRegistryApiToken())?.token,
|
|
135
|
+
});
|
|
136
|
+
stdout(`Installed "${result.name}" v${result.version} (${result.mcpCount} MCPs, ${result.skillCount} skills)`);
|
|
137
|
+
reportMissingCredentials(result.missingCredentials, stdout);
|
|
138
|
+
return 0;
|
|
139
|
+
}
|
|
140
|
+
throw new UsageError(USAGE);
|
|
141
|
+
}
|
|
142
|
+
function requirePositional(value, label) {
|
|
143
|
+
if (!value)
|
|
144
|
+
throw new UsageError(`${label} is required`);
|
|
145
|
+
return value;
|
|
146
|
+
}
|
|
147
|
+
function requireAgent(value) {
|
|
148
|
+
if (!value || !AGENT_NAMES.includes(value)) {
|
|
149
|
+
throw new UsageError(`agent is required (one of: ${AGENT_NAMES.join(", ")})`);
|
|
150
|
+
}
|
|
151
|
+
return value;
|
|
152
|
+
}
|
|
153
|
+
function splitList(value) {
|
|
154
|
+
if (!value)
|
|
155
|
+
return undefined;
|
|
156
|
+
const items = value
|
|
157
|
+
.split(",")
|
|
158
|
+
.map((item) => item.trim())
|
|
159
|
+
.filter(Boolean);
|
|
160
|
+
return items.length > 0 ? items : undefined;
|
|
161
|
+
}
|
|
162
|
+
function reportMissingCredentials(missing, stdout) {
|
|
163
|
+
if (missing.length === 0)
|
|
164
|
+
return;
|
|
165
|
+
stdout(`Credentials still needed (placeholders kept): ${missing.map((spec) => spec.key).join(", ")}`);
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/cli/profile.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -16,11 +16,22 @@ else if (command === "web") {
|
|
|
16
16
|
const server = await createWebServer({ port }).start();
|
|
17
17
|
console.error(`NoMoreIDE web UI: ${server.url}`);
|
|
18
18
|
}
|
|
19
|
-
else if ([
|
|
19
|
+
else if ([
|
|
20
|
+
"add",
|
|
21
|
+
"agents",
|
|
22
|
+
"git",
|
|
23
|
+
"list",
|
|
24
|
+
"logs",
|
|
25
|
+
"profile",
|
|
26
|
+
"setup",
|
|
27
|
+
"start",
|
|
28
|
+
"stop",
|
|
29
|
+
"restart",
|
|
30
|
+
].includes(command)) {
|
|
20
31
|
process.exitCode = await runCli(process.argv.slice(2));
|
|
21
32
|
}
|
|
22
33
|
else {
|
|
23
|
-
console.error("Usage: nomoreide [mcp|setup|tui|web|git|list|logs|start|stop|restart|add]");
|
|
34
|
+
console.error("Usage: nomoreide [mcp|setup|tui|web|git|agents|profile|list|logs|start|stop|restart|add]");
|
|
24
35
|
process.exitCode = 1;
|
|
25
36
|
}
|
|
26
37
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AAEzC,IAAI,OAAO,KAAK,KAAK,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,uBAAuB,EAAE,CAAC;AAClC,CAAC;KAAM,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;IAC7B,MAAM,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC;KAAM,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,OAAO,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACnD,CAAC;KAAM,IACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;AAEzC,IAAI,OAAO,KAAK,KAAK,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;IAC3E,MAAM,uBAAuB,EAAE,CAAC;AAClC,CAAC;KAAM,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;IAC7B,MAAM,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC;KAAM,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,OAAO,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;AACnD,CAAC;KAAM,IACL;IACE,KAAK;IACL,QAAQ;IACR,KAAK;IACL,MAAM;IACN,MAAM;IACN,SAAS;IACT,OAAO;IACP,OAAO;IACP,MAAM;IACN,SAAS;CACV,CAAC,QAAQ,CAAC,OAAO,CAAC,EACnB,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,CACX,0FAA0F,CAC3F,CAAC;IACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC"}
|