@brainpilot/app 0.0.5 → 0.0.7
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/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 -1
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +46 -4
- package/dist/commands/up.js.map +1 -1
- package/dist/paths.d.ts +2 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +1 -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 +29 -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 +95 -95
- package/dist/scaffold.js.map +1 -1
- package/package.json +12 -7
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,46 +44,6 @@ async function writeIfAbsent(path, content) {
|
|
|
30
44
|
await writeFile(path, content, "utf8");
|
|
31
45
|
return true;
|
|
32
46
|
}
|
|
33
|
-
/**
|
|
34
|
-
* Per-agent persona text, sourced from the runtime's single-source-of-truth
|
|
35
|
-
* `PERSONAS` registry so the scaffolded, user-editable copies never drift from
|
|
36
|
-
* the built-in defaults the runtime falls back to.
|
|
37
|
-
*/
|
|
38
|
-
const AGENT_PROMPTS = PERSONAS;
|
|
39
|
-
/** Roles by agent name (mirrors `roleFor` in the runtime). */
|
|
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
47
|
/** Empty provider registry (the SSOT). Users add profiles via the Settings UI
|
|
74
48
|
* or `brainpilot init --api-key …`. An empty registry is valid: resolveProvider
|
|
75
49
|
* falls back to env until a profile exists. */
|
|
@@ -90,26 +64,12 @@ const TEMPLATE_PROVIDERS_EXAMPLE = JSON.stringify({
|
|
|
90
64
|
/**
|
|
91
65
|
* Default `mcp_servers.json` written into `bp_template/` (§11A.2).
|
|
92
66
|
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* unconfigured placeholder and skipped at startup.
|
|
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.
|
|
97
70
|
*/
|
|
98
71
|
const TEMPLATE_MCP_DEFAULT = JSON.stringify({
|
|
99
|
-
mcpServers: {
|
|
100
|
-
bp_KB: {
|
|
101
|
-
type: "http",
|
|
102
|
-
url: "http://8.145.42.208:8005/mcp",
|
|
103
|
-
},
|
|
104
|
-
bp_skills: {
|
|
105
|
-
type: "http",
|
|
106
|
-
url: "http://8.145.42.208:8006/mcp",
|
|
107
|
-
},
|
|
108
|
-
bp_papersearch: {
|
|
109
|
-
type: "http",
|
|
110
|
-
url: "http://8.145.42.208:8007/mcp",
|
|
111
|
-
},
|
|
112
|
-
},
|
|
72
|
+
mcpServers: {},
|
|
113
73
|
}, null, 2);
|
|
114
74
|
/**
|
|
115
75
|
* Annotated `mcp_servers.example.json` — shows every supported transport
|
|
@@ -187,6 +147,41 @@ To create your own skill, copy this file, rename it, write a clear
|
|
|
187
147
|
\`description:\` (the model reads it to decide when to use the skill), drop the
|
|
188
148
|
\`disable-model-invocation\` line, and put the instructions below the frontmatter.
|
|
189
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
|
+
`;
|
|
190
185
|
/**
|
|
191
186
|
* Create the launch directory tree under `dataDir`. Idempotent — only writes
|
|
192
187
|
* files that don't yet exist. Returns the list of newly created files so the
|
|
@@ -195,47 +190,52 @@ To create your own skill, copy this file, rename it, write a clear
|
|
|
195
190
|
export async function scaffold(dataDir, options = {}) {
|
|
196
191
|
const p = dataPaths(dataDir);
|
|
197
192
|
const created = [];
|
|
198
|
-
// ① 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.
|
|
199
195
|
await mkdir(p.dataDir, { recursive: true });
|
|
200
196
|
await mkdir(p.bpTemplateAgents, { recursive: true });
|
|
201
197
|
await mkdir(p.bpTemplateSkills, { recursive: true });
|
|
202
198
|
await mkdir(p.bp, { recursive: true });
|
|
203
199
|
await mkdir(p.workspaces, { recursive: true });
|
|
204
200
|
await mkdir(p.logsDir, { recursive: true });
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
//
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
p.brainpilotConfig,
|
|
228
|
-
JSON.stringify({
|
|
229
|
-
port: options.port ?? DEFAULT_PORT,
|
|
230
|
-
dataDir: ".",
|
|
231
|
-
provider: { name: options.provider ?? "anthropic" },
|
|
232
|
-
logLevel: "info",
|
|
233
|
-
}, null, 2),
|
|
234
|
-
]);
|
|
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
|
+
];
|
|
235
223
|
for (const [path, content] of writes) {
|
|
236
224
|
if (await writeIfAbsent(path, content))
|
|
237
225
|
created.push(path);
|
|
238
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
|
+
}
|
|
239
239
|
return { paths: p, created };
|
|
240
240
|
}
|
|
241
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,SAAS,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAkB,MAAM,YAAY,CAAC;AAEvD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC;AAEjC,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,OAAe;IACxD,IAAI,MAAM,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;+CAE+C;AAC/C,MAAM,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAE7E,2EAA2E;AAC3E,MAAM,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAC/C;IACE,QAAQ,EAAE;QACR;YACE,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,kCAAkC;YAC3C,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,CAAC,mBAAmB,CAAC;SAC9B;KACF;IACD,iBAAiB,EAAE,SAAS;CAC7B,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CACzC;IACE,UAAU,EAAE,EAAE;CACf,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CACzC;IACE,UAAU,EAAE;QACV,UAAU,EAAE;YACV,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,CAAC,IAAI,EAAE,yCAAyC,EAAE,cAAc,CAAC;YACvE,GAAG,EAAE,EAAE;SACR;QACD,aAAa,EAAE;YACb,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,uCAAuC;YAC5C,OAAO,EAAE,EAAE,aAAa,EAAE,gBAAgB,EAAE;SAC7C;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,KAAK;YACX,GAAG,EAAE,uCAAuC;YAC5C,OAAO,EAAE,EAAE,aAAa,EAAE,gBAAgB,EAAE;SAC7C;KACF;CACF,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BrB,CAAC;AAEF,mFAAmF;AACnF,MAAM,aAAa,GAAG;;;;;;;;;;;;;;CAcrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BrB,CAAC;AAeF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAe,EACf,UAA2B,EAAE;IAE7B,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,KAAK,CAAC,CAAC,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,KAAK,CAAC,CAAC,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,MAAM,GAA4B;QACtC,kEAAkE;QAClE,CAAC,CAAC,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;QACnD,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,wBAAwB,CAAC,EAAE,0BAA0B,CAAC;QAC1E,CAAC,CAAC,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;QAC9C,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,0BAA0B,CAAC,EAAE,oBAAoB,CAAC;QACtE,8EAA8E;QAC9E,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC;QACtD,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC;QACvD,oDAAoD;QACpD,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,WAAW,CAAC,EAAE,aAAa,CAAC;QACtD,uBAAuB;QACvB;YACE,CAAC,CAAC,gBAAgB;YAClB,IAAI,CAAC,SAAS,CACZ;gBACE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,YAAY;gBAClC,OAAO,EAAE,GAAG;gBACZ,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW,EAAE;gBACnD,QAAQ,EAAE,MAAM;aACjB,EACD,IAAI,EACJ,CAAC,CACF;SACF;KACF,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,EAAE,CAAC;QACrC,IAAI,MAAM,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,sEAAsE;IACtE,+EAA+E;IAC/E,2EAA2E;IAC3E,qEAAqE;IACrE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,gBAAgB,MAAM,GAAG,CAAC,MAAM,eAAe,CAAC,CAAC;IACzF,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;IAClE,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe;IAChD,OAAO,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC;AAC/C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brainpilot/app",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"
|
|
3
|
+
"version": "0.0.7",
|
|
4
|
+
"engines": {
|
|
5
|
+
"node": ">=22"
|
|
6
|
+
},
|
|
7
|
+
"license": "AGPL-3.0-only",
|
|
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.7",
|
|
36
|
+
"@brainpilot/protocol": "^0.0.7",
|
|
37
|
+
"@brainpilot/runtime": "^0.0.7",
|
|
38
|
+
"@brainpilot/web": "^0.0.7",
|
|
34
39
|
"commander": "^12.1.0",
|
|
35
40
|
"picocolors": "^1.1.0"
|
|
36
41
|
}
|