@brainpilot/app 0.0.4 → 0.0.6
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 +85 -0
- package/dist/bin.js +2 -0
- package/dist/bin.js.map +1 -1
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +19 -5
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +10 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +7 -3
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/template.d.ts +43 -0
- package/dist/commands/template.d.ts.map +1 -0
- package/dist/commands/template.js +300 -0
- package/dist/commands/template.js.map +1 -0
- package/dist/commands/up.d.ts +10 -5
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +51 -14
- package/dist/commands/up.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/paths.d.ts +3 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +2 -0
- package/dist/paths.js.map +1 -1
- package/dist/process-control.d.ts +17 -0
- package/dist/process-control.d.ts.map +1 -1
- package/dist/process-control.js +26 -0
- package/dist/process-control.js.map +1 -1
- package/dist/program.d.ts +4 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +31 -0
- package/dist/program.js.map +1 -1
- package/dist/repo-mode.d.ts +21 -0
- package/dist/repo-mode.d.ts.map +1 -0
- package/dist/repo-mode.js +89 -0
- package/dist/repo-mode.js.map +1 -0
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +137 -83
- package/dist/scaffold.js.map +1 -1
- package/package.json +11 -6
package/dist/scaffold.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvD,8EAA8E;AAC9E,eAAO,MAAM,YAAY,OAAO,CAAC;AA+KjC,MAAM,WAAW,eAAe;IAC9B,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,uDAAuD;IACvD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CAwDzB;AAED,kFAAkF;AAClF,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEpE"}
|
package/dist/scaffold.js
CHANGED
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* scaffold.ts — materialize the `./brainpilot/` launch directory tree
|
|
3
|
-
* (TS_PI_REFACTOR_DESIGN §11A.2).
|
|
4
|
-
* (agents prompts + example settings/mcp config) and a default
|
|
5
|
-
* `brainpilot.config.json`.
|
|
3
|
+
* (TS_PI_REFACTOR_DESIGN §11A.2).
|
|
6
4
|
*
|
|
7
|
-
*
|
|
8
|
-
* (
|
|
5
|
+
* What gets written (idempotent — existing files are never overwritten):
|
|
6
|
+
* - directory skeleton (bp_template/, bp_template/agents/, bp_template/skills/,
|
|
7
|
+
* .bp/, workspaces/, .runtime/logs/)
|
|
8
|
+
* - providers.json + providers.example.json
|
|
9
|
+
* - mcp_servers.json + mcp_servers.example.json
|
|
10
|
+
* - skills/README.md + skills/example.md
|
|
11
|
+
* - brainpilot.config.json
|
|
12
|
+
*
|
|
13
|
+
* What is INTENTIONALLY NOT written (#102 fix):
|
|
14
|
+
* - Per-agent prompt.md / manifest.json / settings.json under
|
|
15
|
+
* bp_template/agents/<name>/. These used to be scaffolded as
|
|
16
|
+
* user-editable copies of the built-in PERSONAS, but the writeIfAbsent
|
|
17
|
+
* guard meant they never picked up upstream prompt updates after a user
|
|
18
|
+
* ran `init` once — anyone who pulled new code kept silently running on
|
|
19
|
+
* stale prompts. The runtime's `loadPersona` already falls back to the
|
|
20
|
+
* in-code PERSONAS when the on-disk file is absent, so leaving the dir
|
|
21
|
+
* empty by default is the correct behaviour. Users who want to override
|
|
22
|
+
* a prompt can materialise one with `brainpilot template reset <agent>`.
|
|
9
23
|
*/
|
|
10
24
|
import { mkdir, writeFile, access } from "node:fs/promises";
|
|
11
25
|
import { constants as FS } from "node:fs";
|
|
12
26
|
import { join } from "node:path";
|
|
13
|
-
import {
|
|
27
|
+
import { materializeSkills } from "@brainpilot/runtime";
|
|
14
28
|
import { dataPaths } from "./paths.js";
|
|
15
29
|
/** Default backend port (§11A.5 决策 D). Runtime uses port+1 (stride-2 §16). */
|
|
16
30
|
export const DEFAULT_PORT = 9001;
|
|
@@ -30,56 +44,56 @@ async function writeIfAbsent(path, content) {
|
|
|
30
44
|
await writeFile(path, content, "utf8");
|
|
31
45
|
return true;
|
|
32
46
|
}
|
|
47
|
+
/** Empty provider registry (the SSOT). Users add profiles via the Settings UI
|
|
48
|
+
* or `brainpilot init --api-key …`. An empty registry is valid: resolveProvider
|
|
49
|
+
* falls back to env until a profile exists. */
|
|
50
|
+
const TEMPLATE_PROVIDERS_DEFAULT = JSON.stringify({ profiles: [] }, null, 2);
|
|
51
|
+
/** Annotated example showing a filled-in provider profile to copy from. */
|
|
52
|
+
const TEMPLATE_PROVIDERS_EXAMPLE = JSON.stringify({
|
|
53
|
+
profiles: [
|
|
54
|
+
{
|
|
55
|
+
id: "example",
|
|
56
|
+
name: "Example Gateway",
|
|
57
|
+
baseUrl: "https://your-gateway.example.com",
|
|
58
|
+
apiKey: "sk-...",
|
|
59
|
+
models: ["claude-sonnet-4-6"],
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
selectedProfileId: "example",
|
|
63
|
+
}, null, 2);
|
|
33
64
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
65
|
+
* Default `mcp_servers.json` written into `bp_template/` (§11A.2).
|
|
66
|
+
*
|
|
67
|
+
* Starts empty — users add their own MCP servers (http/sse/stdio) as needed.
|
|
68
|
+
* The built-in skills library is NOT an MCP server — it is loaded through Pi's
|
|
69
|
+
* native skill pipeline from `bp_template/skills/`, so it needs no entry here.
|
|
37
70
|
*/
|
|
38
|
-
const
|
|
39
|
-
|
|
40
|
-
function roleForName(name) {
|
|
41
|
-
if (name === "principal")
|
|
42
|
-
return "principal";
|
|
43
|
-
if (name === "trace")
|
|
44
|
-
return "trace";
|
|
45
|
-
return "expert";
|
|
46
|
-
}
|
|
47
|
-
/** Full tool allowlist (system + builtin) an agent is granted, for the manifest. */
|
|
48
|
-
function allowedToolsForName(name) {
|
|
49
|
-
const role = roleForName(name);
|
|
50
|
-
const sys = role === "principal"
|
|
51
|
-
? AGENT_TOOL_CONFIG.principal
|
|
52
|
-
: role === "trace"
|
|
53
|
-
? AGENT_TOOL_CONFIG.trace
|
|
54
|
-
: (AGENT_TOOL_CONFIG[name] ?? AGENT_TOOL_CONFIG.expert);
|
|
55
|
-
const builtin = role === "expert"
|
|
56
|
-
? (BUILTIN_TOOL_CONFIG_BY_NAME[name] ?? BUILTIN_TOOL_CONFIG.expert)
|
|
57
|
-
: (BUILTIN_TOOL_CONFIG[role] ?? BUILTIN_TOOL_CONFIG._default);
|
|
58
|
-
return [...sys, ...builtin];
|
|
59
|
-
}
|
|
60
|
-
function agentManifest(name) {
|
|
61
|
-
return JSON.stringify({
|
|
62
|
-
role: roleForName(name),
|
|
63
|
-
parent: name === "principal" ? null : "principal",
|
|
64
|
-
allowedTools: allowedToolsForName(name),
|
|
65
|
-
}, null, 2);
|
|
66
|
-
}
|
|
67
|
-
const PRINCIPAL_SETTINGS = JSON.stringify({
|
|
68
|
-
provider: "anthropic",
|
|
69
|
-
model: "claude-sonnet-4-6",
|
|
70
|
-
timeoutMs: 120000,
|
|
71
|
-
maxRetries: 2,
|
|
72
|
-
}, null, 2);
|
|
73
|
-
/** session-level default Pi SDK settings template (§11A.2). */
|
|
74
|
-
const TEMPLATE_SETTINGS_EXAMPLE = JSON.stringify({
|
|
75
|
-
provider: "anthropic",
|
|
76
|
-
model: "claude-sonnet-4-6",
|
|
77
|
-
apiKey: "",
|
|
78
|
-
baseUrl: "",
|
|
71
|
+
const TEMPLATE_MCP_DEFAULT = JSON.stringify({
|
|
72
|
+
mcpServers: {},
|
|
79
73
|
}, null, 2);
|
|
80
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Annotated `mcp_servers.example.json` — shows every supported transport
|
|
76
|
+
* (stdio / streamable-http / sse) with a filled-in shape to copy from.
|
|
77
|
+
*/
|
|
81
78
|
const TEMPLATE_MCP_EXAMPLE = JSON.stringify({
|
|
82
|
-
mcpServers: {
|
|
79
|
+
mcpServers: {
|
|
80
|
+
"fs-stdio": {
|
|
81
|
+
type: "stdio",
|
|
82
|
+
command: "npx",
|
|
83
|
+
args: ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"],
|
|
84
|
+
env: {},
|
|
85
|
+
},
|
|
86
|
+
"remote-http": {
|
|
87
|
+
type: "http",
|
|
88
|
+
url: "https://your-mcp-host.example.com/mcp",
|
|
89
|
+
headers: { Authorization: "Bearer <token>" },
|
|
90
|
+
},
|
|
91
|
+
"remote-sse": {
|
|
92
|
+
type: "sse",
|
|
93
|
+
url: "https://your-mcp-host.example.com/sse",
|
|
94
|
+
headers: { Authorization: "Bearer <token>" },
|
|
95
|
+
},
|
|
96
|
+
},
|
|
83
97
|
}, null, 2);
|
|
84
98
|
/**
|
|
85
99
|
* README for `bp_template/skills/` — explains the app-controlled skill dir.
|
|
@@ -133,6 +147,41 @@ To create your own skill, copy this file, rename it, write a clear
|
|
|
133
147
|
\`description:\` (the model reads it to decide when to use the skill), drop the
|
|
134
148
|
\`disable-model-invocation\` line, and put the instructions below the frontmatter.
|
|
135
149
|
`;
|
|
150
|
+
/**
|
|
151
|
+
* README dropped into the empty `bp_template/agents/` dir so users understand
|
|
152
|
+
* why it isn't pre-populated — and how to materialise an override when they
|
|
153
|
+
* actually want one.
|
|
154
|
+
*/
|
|
155
|
+
const AGENTS_README = `# Agent prompt overrides
|
|
156
|
+
|
|
157
|
+
This directory is intentionally **empty by default** — BrainPilot loads agent
|
|
158
|
+
system prompts from its built-in \`PERSONAS\` registry that ships with the
|
|
159
|
+
runtime package, so a fresh install always uses the latest prompts after
|
|
160
|
+
\`git pull\` without any extra step.
|
|
161
|
+
|
|
162
|
+
Drop a file at \`agents/<name>/prompt.md\` to **override** a built-in agent's
|
|
163
|
+
prompt. The runtime reads the on-disk file first and falls back to the built-in
|
|
164
|
+
when the file is absent or empty.
|
|
165
|
+
|
|
166
|
+
Easiest way to start customising an agent: materialise the current built-in
|
|
167
|
+
prompt as a starting point, then edit it.
|
|
168
|
+
|
|
169
|
+
\`\`\`bash
|
|
170
|
+
npm run bp -- template reset <agent> # writes built-in prompt to disk
|
|
171
|
+
# now edit bp_template/agents/<agent>/prompt.md
|
|
172
|
+
\`\`\`
|
|
173
|
+
|
|
174
|
+
Other useful subcommands:
|
|
175
|
+
|
|
176
|
+
\`\`\`bash
|
|
177
|
+
npm run bp -- template list # show drift status for every agent
|
|
178
|
+
npm run bp -- template diff [<agent>] # show local vs built-in diff
|
|
179
|
+
npm run bp -- template reset [<agent>] # overwrite local with built-in (backs up)
|
|
180
|
+
\`\`\`
|
|
181
|
+
|
|
182
|
+
Built-in agent names: principal, librarian, experimentalist, engineer, writer,
|
|
183
|
+
auditor, trace.
|
|
184
|
+
`;
|
|
136
185
|
/**
|
|
137
186
|
* Create the launch directory tree under `dataDir`. Idempotent — only writes
|
|
138
187
|
* files that don't yet exist. Returns the list of newly created files so the
|
|
@@ -141,47 +190,52 @@ To create your own skill, copy this file, rename it, write a clear
|
|
|
141
190
|
export async function scaffold(dataDir, options = {}) {
|
|
142
191
|
const p = dataPaths(dataDir);
|
|
143
192
|
const created = [];
|
|
144
|
-
// ① Directory skeleton
|
|
193
|
+
// ① Directory skeleton — bp_template/agents/ is created (empty) so users
|
|
194
|
+
// have an obvious place to drop overrides; see AGENTS_README below.
|
|
145
195
|
await mkdir(p.dataDir, { recursive: true });
|
|
146
196
|
await mkdir(p.bpTemplateAgents, { recursive: true });
|
|
147
197
|
await mkdir(p.bpTemplateSkills, { recursive: true });
|
|
148
198
|
await mkdir(p.bp, { recursive: true });
|
|
149
199
|
await mkdir(p.workspaces, { recursive: true });
|
|
150
200
|
await mkdir(p.logsDir, { recursive: true });
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
//
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
p.brainpilotConfig,
|
|
174
|
-
JSON.stringify({
|
|
175
|
-
port: options.port ?? DEFAULT_PORT,
|
|
176
|
-
dataDir: ".",
|
|
177
|
-
provider: { name: options.provider ?? "anthropic" },
|
|
178
|
-
logLevel: "info",
|
|
179
|
-
}, null, 2),
|
|
180
|
-
]);
|
|
201
|
+
const writes = [
|
|
202
|
+
// ② provider registry (SSOT) + an annotated example to copy from.
|
|
203
|
+
[p.bpTemplateProviders, TEMPLATE_PROVIDERS_DEFAULT],
|
|
204
|
+
[join(p.bpTemplate, "providers.example.json"), TEMPLATE_PROVIDERS_EXAMPLE],
|
|
205
|
+
[p.bpTemplateMcpServers, TEMPLATE_MCP_DEFAULT],
|
|
206
|
+
[join(p.bpTemplate, "mcp_servers.example.json"), TEMPLATE_MCP_EXAMPLE],
|
|
207
|
+
// ③ app-controlled skills (loaded instead of host-global ~/.pi/agent/skills).
|
|
208
|
+
[join(p.bpTemplateSkills, "README.md"), SKILLS_README],
|
|
209
|
+
[join(p.bpTemplateSkills, "example.md"), EXAMPLE_SKILL],
|
|
210
|
+
// ④ agents dir README — empty by design (#102 fix).
|
|
211
|
+
[join(p.bpTemplateAgents, "README.md"), AGENTS_README],
|
|
212
|
+
// ⑤ CLI global config.
|
|
213
|
+
[
|
|
214
|
+
p.brainpilotConfig,
|
|
215
|
+
JSON.stringify({
|
|
216
|
+
port: options.port ?? DEFAULT_PORT,
|
|
217
|
+
dataDir: ".",
|
|
218
|
+
provider: { name: options.provider ?? "anthropic" },
|
|
219
|
+
logLevel: "info",
|
|
220
|
+
}, null, 2),
|
|
221
|
+
],
|
|
222
|
+
];
|
|
181
223
|
for (const [path, content] of writes) {
|
|
182
224
|
if (await writeIfAbsent(path, content))
|
|
183
225
|
created.push(path);
|
|
184
226
|
}
|
|
227
|
+
// ⑥ Materialize the built-in skills content (@brainpilot/skills) into
|
|
228
|
+
// bp_template/skills/ for Pi's native skill pipeline. Skip-if-exists at the
|
|
229
|
+
// file level, so user edits and the README/example above are preserved.
|
|
230
|
+
// Best-effort: a missing skills package never fails the scaffold.
|
|
231
|
+
try {
|
|
232
|
+
const res = await materializeSkills(p.dataDir);
|
|
233
|
+
if (res.copied > 0)
|
|
234
|
+
created.push(`${p.bpTemplateSkills} (+${res.copied} skill files)`);
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
/* skills are a convenience — never block scaffolding on them */
|
|
238
|
+
}
|
|
185
239
|
return { paths: p, created };
|
|
186
240
|
}
|
|
187
241
|
/** Whether the data dir already has a `bp_template/` (used by `up` to decide). */
|
package/dist/scaffold.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brainpilot/app",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
|
+
"engines": {
|
|
5
|
+
"node": ">=22"
|
|
6
|
+
},
|
|
4
7
|
"license": "Apache-2.0",
|
|
5
8
|
"type": "module",
|
|
6
9
|
"description": "BrainPilot CLI — Docker-free local one-click launch (bin: brainpilot / bnpt)",
|
|
10
|
+
"homepage": "https://github.com/NeuroAIHub/BrainPilot#readme",
|
|
7
11
|
"main": "./dist/index.js",
|
|
8
12
|
"types": "./dist/index.d.ts",
|
|
9
13
|
"files": [
|
|
10
|
-
"dist"
|
|
14
|
+
"dist",
|
|
15
|
+
"README.md"
|
|
11
16
|
],
|
|
12
17
|
"repository": {
|
|
13
18
|
"type": "git",
|
|
@@ -27,10 +32,10 @@
|
|
|
27
32
|
"test": "vitest run"
|
|
28
33
|
},
|
|
29
34
|
"dependencies": {
|
|
30
|
-
"@brainpilot/backend-core": "^0.0.
|
|
31
|
-
"@brainpilot/protocol": "^0.0.
|
|
32
|
-
"@brainpilot/runtime": "^0.0.
|
|
33
|
-
"@brainpilot/web": "^0.0.
|
|
35
|
+
"@brainpilot/backend-core": "^0.0.6",
|
|
36
|
+
"@brainpilot/protocol": "^0.0.6",
|
|
37
|
+
"@brainpilot/runtime": "^0.0.6",
|
|
38
|
+
"@brainpilot/web": "^0.0.6",
|
|
34
39
|
"commander": "^12.1.0",
|
|
35
40
|
"picocolors": "^1.1.0"
|
|
36
41
|
}
|