@brainpilot/runtime 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 +61 -0
- package/dist/agent-error.d.ts +51 -0
- package/dist/agent-error.d.ts.map +1 -0
- package/dist/agent-error.js +163 -0
- package/dist/agent-error.js.map +1 -0
- package/dist/agent-factory.d.ts.map +1 -1
- package/dist/agent-factory.js +45 -10
- package/dist/agent-factory.js.map +1 -1
- package/dist/events.d.ts +18 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +24 -0
- package/dist/events.js.map +1 -1
- package/dist/extensions/agent-status.d.ts +91 -0
- package/dist/extensions/agent-status.d.ts.map +1 -0
- package/dist/extensions/agent-status.js +103 -0
- package/dist/extensions/agent-status.js.map +1 -0
- package/dist/extensions/trace-reminder.d.ts +94 -0
- package/dist/extensions/trace-reminder.d.ts.map +1 -0
- package/dist/extensions/trace-reminder.js +153 -0
- package/dist/extensions/trace-reminder.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mailbox.d.ts +37 -1
- package/dist/mailbox.d.ts.map +1 -1
- package/dist/mailbox.js +79 -2
- package/dist/mailbox.js.map +1 -1
- package/dist/mas-agent.d.ts +74 -12
- package/dist/mas-agent.d.ts.map +1 -1
- package/dist/mas-agent.js +158 -33
- package/dist/mas-agent.js.map +1 -1
- package/dist/materialize-skills.d.ts +40 -0
- package/dist/materialize-skills.d.ts.map +1 -0
- package/dist/materialize-skills.js +141 -0
- package/dist/materialize-skills.js.map +1 -0
- package/dist/mcp-bridge.d.ts +15 -2
- package/dist/mcp-bridge.d.ts.map +1 -1
- package/dist/mcp-bridge.js +53 -10
- package/dist/mcp-bridge.js.map +1 -1
- package/dist/mem-watchdog.d.ts +63 -0
- package/dist/mem-watchdog.d.ts.map +1 -0
- package/dist/mem-watchdog.js +81 -0
- package/dist/mem-watchdog.js.map +1 -0
- package/dist/mock-agent.d.ts.map +1 -1
- package/dist/mock-agent.js +13 -1
- package/dist/mock-agent.js.map +1 -1
- package/dist/personas.d.ts +16 -0
- package/dist/personas.d.ts.map +1 -1
- package/dist/personas.js +651 -8
- package/dist/personas.js.map +1 -1
- package/dist/pi-provider.d.ts +32 -1
- package/dist/pi-provider.d.ts.map +1 -1
- package/dist/pi-provider.js +70 -0
- package/dist/pi-provider.js.map +1 -1
- package/dist/provider-config.d.ts +23 -0
- package/dist/provider-config.d.ts.map +1 -0
- package/dist/provider-config.js +49 -0
- package/dist/provider-config.js.map +1 -0
- package/dist/server.d.ts +2 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +146 -8
- package/dist/server.js.map +1 -1
- package/dist/session-manager.d.ts +367 -8
- package/dist/session-manager.d.ts.map +1 -1
- package/dist/session-manager.js +1082 -39
- package/dist/session-manager.js.map +1 -1
- package/dist/tools/skill-search.d.ts +53 -0
- package/dist/tools/skill-search.d.ts.map +1 -0
- package/dist/tools/skill-search.js +269 -0
- package/dist/tools/skill-search.js.map +1 -0
- package/dist/tools/system-tools.d.ts +22 -1
- package/dist/tools/system-tools.d.ts.map +1 -1
- package/dist/tools/system-tools.js +149 -21
- package/dist/tools/system-tools.js.map +1 -1
- package/dist/trace.d.ts +27 -1
- package/dist/trace.d.ts.map +1 -1
- package/dist/trace.js +60 -3
- package/dist/trace.js.map +1 -1
- package/dist/types.d.ts +61 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -2
package/dist/personas.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"personas.js","sourceRoot":"","sources":["../src/personas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,+EAA+E;AAE/E,8EAA8E;AAC9E,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;uCAiBoB,CAAC;AAExC,gFAAgF;AAChF,MAAM,YAAY,GAAG;;;;;;;;;;;gCAWW,CAAC;AAEjC,+EAA+E;AAE/E,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"personas.js","sourceRoot":"","sources":["../src/personas.ts"],"names":[],"mappings":"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"}
|
package/dist/pi-provider.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ export declare const GATEWAY_PROVIDER = "bp-gateway";
|
|
|
3
3
|
/** Minimal structural surface of the Pi SDK bits this module needs. */
|
|
4
4
|
export interface PiProviderSdk {
|
|
5
5
|
AuthStorage: {
|
|
6
|
-
create(path: string):
|
|
6
|
+
create(path: string): PiAuthStorage;
|
|
7
|
+
inMemory?(): PiAuthStorage;
|
|
7
8
|
};
|
|
8
9
|
ModelRegistry: {
|
|
9
10
|
create(authStorage: unknown, modelsJsonPath?: string): {
|
|
@@ -13,13 +14,43 @@ export interface PiProviderSdk {
|
|
|
13
14
|
};
|
|
14
15
|
};
|
|
15
16
|
}
|
|
17
|
+
export interface PiAuthStorage {
|
|
18
|
+
/** In-memory, non-persisted, highest-priority key override (per provider). */
|
|
19
|
+
setRuntimeApiKey?(provider: string, key: string): void;
|
|
20
|
+
}
|
|
21
|
+
/** A concrete per-session provider config resolved from providers.json. */
|
|
22
|
+
export interface SessionProviderConfig {
|
|
23
|
+
providerId: string;
|
|
24
|
+
baseUrl?: string;
|
|
25
|
+
/** #63: wire protocol (Pi models.json `api`). Defaults to anthropic-messages. */
|
|
26
|
+
api?: string;
|
|
27
|
+
/** #68: coarse adapter family (auto/openai/anthropic). When `api` is unset,
|
|
28
|
+
* the precise wire value is derived from this. */
|
|
29
|
+
adapter?: string;
|
|
30
|
+
apiKey: string;
|
|
31
|
+
modelId?: string;
|
|
32
|
+
}
|
|
16
33
|
export interface ResolvedProvider {
|
|
17
34
|
model?: unknown;
|
|
18
35
|
modelRegistry?: unknown;
|
|
36
|
+
/** Per-session AuthStorage holding the runtime key (when provider-configured). */
|
|
37
|
+
authStorage?: unknown;
|
|
19
38
|
}
|
|
20
39
|
/**
|
|
21
40
|
* Resolve a custom model from env, or return `{}` when none is configured.
|
|
22
41
|
* `agentDir` is Pi's global config dir (getAgentDir()).
|
|
23
42
|
*/
|
|
24
43
|
export declare function resolveGatewayModel(sdk: PiProviderSdk, agentDir: string): ResolvedProvider;
|
|
44
|
+
/**
|
|
45
|
+
* Resolve a model for a PER-SESSION provider config (from providers.json),
|
|
46
|
+
* isolated from process env so concurrent sessions can use different keys.
|
|
47
|
+
*
|
|
48
|
+
* Strategy (per the Pi SDK): build a dedicated models.json + ModelRegistry +
|
|
49
|
+
* AuthStorage for this provider, then push the key via
|
|
50
|
+
* `authStorage.setRuntimeApiKey` — an in-memory, non-persisted, top-priority
|
|
51
|
+
* override. The models.json `apiKey` is a harmless placeholder; the runtime
|
|
52
|
+
* override wins at request time. Returns `{}` when no usable config is given,
|
|
53
|
+
* so the caller falls back to {@link resolveGatewayModel} (env-based).
|
|
54
|
+
*/
|
|
55
|
+
export declare function resolveSessionModel(sdk: PiProviderSdk, agentDir: string, cfg: SessionProviderConfig): ResolvedProvider;
|
|
25
56
|
//# sourceMappingURL=pi-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-provider.d.ts","sourceRoot":"","sources":["../src/pi-provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pi-provider.d.ts","sourceRoot":"","sources":["../src/pi-provider.ts"],"names":[],"mappings":"AA0BA,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAM7C,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE;QACX,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAAC;QACpC,QAAQ,CAAC,IAAI,aAAa,CAAC;KAC5B,CAAC;IACF,aAAa,EAAE;QACb,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG;YACrD,OAAO,IAAI,IAAI,CAAC;YAChB,QAAQ,IAAI,MAAM,GAAG,SAAS,CAAC;YAC/B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;SAClD,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,gBAAgB,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACxD;AAED,2EAA2E;AAC3E,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;uDACmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAUD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAmD1F;AAgDD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,qBAAqB,GACzB,gBAAgB,CAuDlB"}
|
package/dist/pi-provider.js
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import { mkdirSync, writeFileSync, readFileSync } from "node:fs";
|
|
24
24
|
import { join } from "node:path";
|
|
25
|
+
import { deriveProviderApi } from "@brainpilot/protocol";
|
|
25
26
|
/** The synthetic provider id under which the auto-generated gateway lives. */
|
|
26
27
|
export const GATEWAY_PROVIDER = "bp-gateway";
|
|
27
28
|
/** Defaults applied to an auto-generated gateway model when env is unset. */
|
|
@@ -129,4 +130,73 @@ function select(sdk, agentDir, modelsJsonPath, provider, modelId) {
|
|
|
129
130
|
}
|
|
130
131
|
return { model, modelRegistry };
|
|
131
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Resolve a model for a PER-SESSION provider config (from providers.json),
|
|
135
|
+
* isolated from process env so concurrent sessions can use different keys.
|
|
136
|
+
*
|
|
137
|
+
* Strategy (per the Pi SDK): build a dedicated models.json + ModelRegistry +
|
|
138
|
+
* AuthStorage for this provider, then push the key via
|
|
139
|
+
* `authStorage.setRuntimeApiKey` — an in-memory, non-persisted, top-priority
|
|
140
|
+
* override. The models.json `apiKey` is a harmless placeholder; the runtime
|
|
141
|
+
* override wins at request time. Returns `{}` when no usable config is given,
|
|
142
|
+
* so the caller falls back to {@link resolveGatewayModel} (env-based).
|
|
143
|
+
*/
|
|
144
|
+
export function resolveSessionModel(sdk, agentDir, cfg) {
|
|
145
|
+
if (!cfg.apiKey || !cfg.baseUrl || !cfg.modelId)
|
|
146
|
+
return {};
|
|
147
|
+
mkdirSync(agentDir, { recursive: true });
|
|
148
|
+
// One models.json per provider id — distinct registries stay isolated.
|
|
149
|
+
const modelsJsonPath = join(agentDir, `bp-session-${sanitize(cfg.providerId)}-models.json`);
|
|
150
|
+
const desired = JSON.stringify({
|
|
151
|
+
providers: {
|
|
152
|
+
[cfg.providerId]: {
|
|
153
|
+
baseUrl: cfg.baseUrl,
|
|
154
|
+
// #63/#68: persist the selected wire protocol instead of hardcoding
|
|
155
|
+
// anthropic-messages. Precedence: explicit `api` (precise, #63) →
|
|
156
|
+
// derived from `adapter` (coarse family, #68) → default. Pi's
|
|
157
|
+
// ModelRegistry accepts any known api; azure-openai-responses derives
|
|
158
|
+
// api-version/deployment from the Azure base URL.
|
|
159
|
+
api: cfg.api ?? deriveProviderApi(cfg.adapter) ?? "anthropic-messages",
|
|
160
|
+
// Placeholder — the real key is injected via setRuntimeApiKey below.
|
|
161
|
+
apiKey: `$BP_PROVIDER_${sanitize(cfg.providerId).toUpperCase()}`,
|
|
162
|
+
models: [
|
|
163
|
+
{
|
|
164
|
+
id: cfg.modelId,
|
|
165
|
+
input: ["text"],
|
|
166
|
+
contextWindow: intEnv("ANTHROPIC_CONTEXT_WINDOW") ?? DEFAULT_CONTEXT_WINDOW,
|
|
167
|
+
maxTokens: intEnv("ANTHROPIC_MAX_TOKENS") ?? DEFAULT_MAX_TOKENS,
|
|
168
|
+
},
|
|
169
|
+
],
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
}, null, 2);
|
|
173
|
+
let current;
|
|
174
|
+
try {
|
|
175
|
+
current = readFileSync(modelsJsonPath, "utf8");
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
/* not written yet */
|
|
179
|
+
}
|
|
180
|
+
if (current !== desired)
|
|
181
|
+
writeFileSync(modelsJsonPath, desired);
|
|
182
|
+
// A per-session AuthStorage isolates the runtime key. Prefer inMemory()
|
|
183
|
+
// (never touches disk); fall back to a file-backed instance if unavailable.
|
|
184
|
+
const authStorage = sdk.AuthStorage.inMemory
|
|
185
|
+
? sdk.AuthStorage.inMemory()
|
|
186
|
+
: sdk.AuthStorage.create(join(agentDir, `auth-${sanitize(cfg.providerId)}.json`));
|
|
187
|
+
authStorage.setRuntimeApiKey?.(cfg.providerId, cfg.apiKey);
|
|
188
|
+
const modelRegistry = sdk.ModelRegistry.create(authStorage, modelsJsonPath);
|
|
189
|
+
modelRegistry.refresh();
|
|
190
|
+
const err = modelRegistry.getError();
|
|
191
|
+
if (err)
|
|
192
|
+
throw new Error(`Pi models.json load error (${modelsJsonPath}): ${err}`);
|
|
193
|
+
const model = modelRegistry.find(cfg.providerId, cfg.modelId);
|
|
194
|
+
if (!model)
|
|
195
|
+
throw new Error(`model not found: ${cfg.providerId}/${cfg.modelId}`);
|
|
196
|
+
return { model, modelRegistry, authStorage };
|
|
197
|
+
}
|
|
198
|
+
/** Filesystem/JSON-key-safe form of a provider id. */
|
|
199
|
+
function sanitize(id) {
|
|
200
|
+
return id.replace(/[^A-Za-z0-9_-]/g, "_");
|
|
201
|
+
}
|
|
132
202
|
//# sourceMappingURL=pi-provider.js.map
|
package/dist/pi-provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pi-provider.js","sourceRoot":"","sources":["../src/pi-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"pi-provider.js","sourceRoot":"","sources":["../src/pi-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface ProviderConfig {
|
|
2
|
+
providerId: string;
|
|
3
|
+
baseUrl?: string;
|
|
4
|
+
/** #63: wire protocol (Pi models.json api). Undefined → runtime defaults it. */
|
|
5
|
+
api?: string;
|
|
6
|
+
/** #68: coarse adapter family (auto/openai/anthropic). When `api` is unset,
|
|
7
|
+
* the runtime derives the precise wire value from this. */
|
|
8
|
+
adapter?: string;
|
|
9
|
+
apiKey: string;
|
|
10
|
+
modelId?: string;
|
|
11
|
+
}
|
|
12
|
+
/** Per-session reference written by SessionManager.createSession. */
|
|
13
|
+
export interface SessionProviderRef {
|
|
14
|
+
providerId?: string;
|
|
15
|
+
modelId?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolve the effective provider config for a session. `ref` is the session's
|
|
19
|
+
* stored `{ providerId, modelId }` (may be empty). Returns undefined when no
|
|
20
|
+
* usable profile/key exists.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveSessionProvider(dataRoot: string, ref: SessionProviderRef): Promise<ProviderConfig | undefined>;
|
|
23
|
+
//# sourceMappingURL=provider-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-config.d.ts","sourceRoot":"","sources":["../src/provider-config.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;gEAC4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAmBD,qEAAqE;AACrE,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAyBrC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* provider-config.ts — runtime-side resolver for the per-session LLM provider.
|
|
3
|
+
*
|
|
4
|
+
* The backend owns provider CRUD; the runtime only READS the same on-disk SSOT
|
|
5
|
+
* (`<dataRoot>/bp_template/providers.json`) plus a per-session reference
|
|
6
|
+
* (`<dataRoot>/.bp/<sid>/provider.json` = `{ providerId, modelId }`). It turns
|
|
7
|
+
* those into a concrete `{ baseUrl, apiKey, modelId }` for the agent factory.
|
|
8
|
+
*
|
|
9
|
+
* Resolution: session ref's providerId → else the file's selectedProfileId →
|
|
10
|
+
* else the first profile. Returns `undefined` when nothing is configured, so
|
|
11
|
+
* the factory falls back to Pi's env-based default (Docker/static compat).
|
|
12
|
+
*/
|
|
13
|
+
import { readFile } from "node:fs/promises";
|
|
14
|
+
import { join } from "node:path";
|
|
15
|
+
async function readJson(file) {
|
|
16
|
+
try {
|
|
17
|
+
return JSON.parse(await readFile(file, "utf8"));
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Resolve the effective provider config for a session. `ref` is the session's
|
|
25
|
+
* stored `{ providerId, modelId }` (may be empty). Returns undefined when no
|
|
26
|
+
* usable profile/key exists.
|
|
27
|
+
*/
|
|
28
|
+
export async function resolveSessionProvider(dataRoot, ref) {
|
|
29
|
+
const file = await readJson(join(dataRoot, "bp_template", "providers.json"));
|
|
30
|
+
const profiles = file?.profiles ?? [];
|
|
31
|
+
if (profiles.length === 0)
|
|
32
|
+
return undefined;
|
|
33
|
+
const profile = profiles.find((p) => p.id === ref.providerId) ??
|
|
34
|
+
profiles.find((p) => p.id === file?.selectedProfileId) ??
|
|
35
|
+
profiles[0];
|
|
36
|
+
if (!profile?.apiKey)
|
|
37
|
+
return undefined;
|
|
38
|
+
// Model: the session's choice if still offered by the profile, else default.
|
|
39
|
+
const modelId = ref.modelId && profile.models?.includes(ref.modelId) ? ref.modelId : profile.models?.[0];
|
|
40
|
+
return {
|
|
41
|
+
providerId: profile.id,
|
|
42
|
+
baseUrl: profile.baseUrl || undefined,
|
|
43
|
+
api: profile.api || undefined,
|
|
44
|
+
adapter: profile.adapter || undefined,
|
|
45
|
+
apiKey: profile.apiKey,
|
|
46
|
+
modelId,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=provider-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-config.js","sourceRoot":"","sources":["../src/provider-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAuBjC,KAAK,UAAU,QAAQ,CAAI,IAAY;IACrC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAM,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAQD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAgB,EAChB,GAAuB;IAEvB,MAAM,IAAI,GAAG,MAAM,QAAQ,CACzB,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAChD,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;IACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,MAAM,OAAO,GACX,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,UAAU,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,iBAAiB,CAAC;QACtD,QAAQ,CAAC,CAAC,CAAC,CAAC;IACd,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,OAAO,SAAS,CAAC;IAEvC,6EAA6E;IAC7E,MAAM,OAAO,GACX,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3F,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,EAAE;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,SAAS;QACrC,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,SAAS;QAC7B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,SAAS;QACrC,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO;KACR,CAAC;AACJ,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -22,9 +22,9 @@ export interface StartServerOptions extends SessionManagerOptions {
|
|
|
22
22
|
port?: number;
|
|
23
23
|
manager?: SessionManager;
|
|
24
24
|
}
|
|
25
|
-
export declare function startServer(opts?: StartServerOptions): {
|
|
25
|
+
export declare function startServer(opts?: StartServerOptions): Promise<{
|
|
26
26
|
manager: SessionManager;
|
|
27
27
|
port: number;
|
|
28
28
|
close: () => Promise<void>;
|
|
29
|
-
}
|
|
29
|
+
}>;
|
|
30
30
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElF,wBAAgB,YAAY,CAAC,IAAI,GAAE,qBAAqB,GAAG;IAAE,OAAO,CAAC,EAAE,cAAc,CAAA;CAAO,GAAG;IAC7F,GAAG,EAAE,IAAI,CAAC;IACV,OAAO,EAAE,cAAc,CAAC;CACzB,CAsMA;AAUD,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,wBAAsB,WAAW,CAAC,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC;IACxE,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC,CAwED"}
|
package/dist/server.js
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
import { Hono } from "hono";
|
|
14
14
|
import { serve } from "@hono/node-server";
|
|
15
15
|
import { stream } from "hono/streaming";
|
|
16
|
-
import { CreateSessionRequestSchema, SendMessageRequestSchema, InterruptRequestSchema, } from "@brainpilot/protocol";
|
|
16
|
+
import { CreateSessionRequestSchema, SendMessageRequestSchema, InterruptRequestSchema, WriteFileRequestSchema, } from "@brainpilot/protocol";
|
|
17
17
|
import { SessionManager } from "./session-manager.js";
|
|
18
18
|
export function createServer(opts = {}) {
|
|
19
19
|
const manager = opts.manager ?? new SessionManager(opts);
|
|
@@ -32,6 +32,12 @@ export function createServer(opts = {}) {
|
|
|
32
32
|
const s = manager.getSession(c.req.param("id"));
|
|
33
33
|
return s ? c.json(s) : c.json({ error: "not found" }, 404);
|
|
34
34
|
});
|
|
35
|
+
// #29: rename — PUT the session title and persist it to meta.json.
|
|
36
|
+
app.put("/sessions/:id", async (c) => {
|
|
37
|
+
const body = (await c.req.json().catch(() => ({})));
|
|
38
|
+
const s = await manager.renameSession(c.req.param("id"), body?.title);
|
|
39
|
+
return s ? c.json(s) : c.json({ error: "not found" }, 404);
|
|
40
|
+
});
|
|
35
41
|
app.delete("/sessions/:id", async (c) => {
|
|
36
42
|
const id = c.req.param("id");
|
|
37
43
|
const deleted = await manager.deleteSession(id);
|
|
@@ -41,6 +47,24 @@ export function createServer(opts = {}) {
|
|
|
41
47
|
const state = manager.getSessionState(c.req.param("id"));
|
|
42
48
|
return state ? c.json(state) : c.json({ error: "not found" }, 404);
|
|
43
49
|
});
|
|
50
|
+
app.get("/sessions/:id/trace", (c) => {
|
|
51
|
+
const graph = manager.getTrace(c.req.param("id"));
|
|
52
|
+
return graph ? c.json(graph) : c.json({ error: "not found" }, 404);
|
|
53
|
+
});
|
|
54
|
+
// Persisted event history (events.jsonl) — see RUNTIME_ROUTES.getSessionHistory.
|
|
55
|
+
// Used by the web to rehydrate chat after a runtime restart; SSE only replays
|
|
56
|
+
// the in-memory ring buffer.
|
|
57
|
+
app.get("/sessions/:id/history", async (c) => {
|
|
58
|
+
const id = c.req.param("id");
|
|
59
|
+
const limitQ = c.req.query("limit");
|
|
60
|
+
const limit = limitQ !== undefined ? Number(limitQ) : undefined;
|
|
61
|
+
const result = await manager.readEventHistory(id, {
|
|
62
|
+
limit: Number.isFinite(limit) ? limit : undefined,
|
|
63
|
+
});
|
|
64
|
+
if (!result)
|
|
65
|
+
return c.json({ error: "not found" }, 404);
|
|
66
|
+
return c.json(result);
|
|
67
|
+
});
|
|
44
68
|
app.post("/sessions/:id/messages", async (c) => {
|
|
45
69
|
const id = c.req.param("id");
|
|
46
70
|
const body = await safeBody(c);
|
|
@@ -49,7 +73,18 @@ export function createServer(opts = {}) {
|
|
|
49
73
|
return c.json({ error: "invalid body" }, 400);
|
|
50
74
|
if (!manager.getSession(id))
|
|
51
75
|
return c.json({ error: "not found" }, 404);
|
|
52
|
-
|
|
76
|
+
// ask_user reply branch: resolve the outstanding request.
|
|
77
|
+
const data = parsed.data;
|
|
78
|
+
if ("type" in data && data.type === "user_input_response") {
|
|
79
|
+
const okResolved = manager.resolveInput(id, data.request_id, data.answer);
|
|
80
|
+
return c.json({ status: okResolved ? "ok" : "stale" });
|
|
81
|
+
}
|
|
82
|
+
// Normal message branch.
|
|
83
|
+
if (!("content" in data))
|
|
84
|
+
return c.json({ error: "invalid body" }, 400);
|
|
85
|
+
const res = await manager.sendMessage(id, data.content, data.agent ?? "principal", {
|
|
86
|
+
uuid: data.data?.uuid,
|
|
87
|
+
});
|
|
53
88
|
return c.json(res);
|
|
54
89
|
});
|
|
55
90
|
app.post("/sessions/:id/interrupt", async (c) => {
|
|
@@ -65,6 +100,70 @@ export function createServer(opts = {}) {
|
|
|
65
100
|
const res = await manager.evictSession(c.req.param("id"));
|
|
66
101
|
return c.json(res, res.evicted ? 200 : 404);
|
|
67
102
|
});
|
|
103
|
+
// ---- Workspace files (read off disk; independent of in-memory session) ----
|
|
104
|
+
app.get("/sessions/:id/files", async (c) => {
|
|
105
|
+
try {
|
|
106
|
+
const files = await manager.listSessionFiles(c.req.param("id"), c.req.query("path") ?? "");
|
|
107
|
+
return c.json(files); // bare array — matches the SPA's file-list contract
|
|
108
|
+
}
|
|
109
|
+
catch (err) {
|
|
110
|
+
return c.json({ error: err.message }, 400);
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
app.get("/sessions/:id/files/content", async (c) => {
|
|
114
|
+
const path = c.req.query("path");
|
|
115
|
+
if (!path)
|
|
116
|
+
return c.json({ error: "path required" }, 400);
|
|
117
|
+
try {
|
|
118
|
+
return c.json(await manager.readSessionFile(c.req.param("id"), path));
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
return c.json({ error: err.message }, 404);
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
app.get("/sessions/:id/files/raw", async (c) => {
|
|
125
|
+
const path = c.req.query("path");
|
|
126
|
+
if (!path)
|
|
127
|
+
return c.json({ error: "path required" }, 400);
|
|
128
|
+
try {
|
|
129
|
+
const buf = await manager.readSessionFileRaw(c.req.param("id"), path);
|
|
130
|
+
c.header("Content-Type", "application/octet-stream");
|
|
131
|
+
c.header("Content-Length", String(buf.length));
|
|
132
|
+
return c.body(buf);
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
return c.json({ error: err.message }, 404);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
app.delete("/sessions/:id/files", async (c) => {
|
|
139
|
+
const path = c.req.query("path");
|
|
140
|
+
if (!path)
|
|
141
|
+
return c.json({ error: "path required" }, 400);
|
|
142
|
+
try {
|
|
143
|
+
const deleted = await manager.deleteSessionFile(c.req.param("id"), path);
|
|
144
|
+
return c.json({ deleted }, deleted ? 200 : 404);
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
return c.json({ error: err.message }, 400);
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
// #47: upload a file into the workspace (base64 body). Path-traversal guard +
|
|
151
|
+
// 20 MiB cap live in SessionManager.writeSessionFile.
|
|
152
|
+
app.post("/sessions/:id/files", async (c) => {
|
|
153
|
+
const parsed = WriteFileRequestSchema.safeParse(await safeBody(c));
|
|
154
|
+
if (!parsed.success) {
|
|
155
|
+
return c.json({ error: "path and contentBase64 are required" }, 400);
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
const res = await manager.writeSessionFile(c.req.param("id"), parsed.data.path, parsed.data.contentBase64);
|
|
159
|
+
return c.json(res, 201);
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
const msg = err.message;
|
|
163
|
+
// path traversal / oversize → 400 (client error), not 500
|
|
164
|
+
return c.json({ error: msg }, 400);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
68
167
|
const sseHandler = (id, c) => {
|
|
69
168
|
if (!manager.getSession(id))
|
|
70
169
|
return c.json({ error: "not found" }, 404);
|
|
@@ -112,13 +211,50 @@ async function safeBody(c) {
|
|
|
112
211
|
return {};
|
|
113
212
|
}
|
|
114
213
|
}
|
|
115
|
-
export function startServer(opts = {}) {
|
|
214
|
+
export async function startServer(opts = {}) {
|
|
116
215
|
const { app, manager } = createServer(opts);
|
|
216
|
+
// Restore sessions persisted under `<dataRoot>/.bp/*/meta.json` before we
|
|
217
|
+
// accept the first HTTP request, so `GET /sessions` reflects history on
|
|
218
|
+
// boot instead of an empty list. Persist defaults to true on the manager
|
|
219
|
+
// (see SessionManagerOptions); we only skip restore when the caller
|
|
220
|
+
// explicitly disabled persistence.
|
|
221
|
+
if (opts.persist !== false) {
|
|
222
|
+
try {
|
|
223
|
+
const restored = await manager.restoreFromDisk();
|
|
224
|
+
if (restored.length) {
|
|
225
|
+
// eslint-disable-next-line no-console
|
|
226
|
+
console.log(`[runtime] restored ${restored.length} session(s) from disk`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
catch (err) {
|
|
230
|
+
// eslint-disable-next-line no-console
|
|
231
|
+
console.warn("[runtime] session restore failed:", err);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// Materialize the built-in skills into <dataRoot>/bp_template/skills before we
|
|
235
|
+
// accept requests, so they are loadable AND user-visible/editable from the
|
|
236
|
+
// first agent on — including a pure `docker compose up` where no CLI scaffold
|
|
237
|
+
// ever ran. Best-effort (the method swallows its own errors).
|
|
238
|
+
await manager.ensureSkillsMaterialized();
|
|
117
239
|
const port = opts.port ??
|
|
118
240
|
(process.env.PORT ? Number(process.env.PORT) : undefined) ??
|
|
119
241
|
(process.env.BP_RUNTIME_PORT ? Number(process.env.BP_RUNTIME_PORT) : undefined) ??
|
|
120
242
|
8081;
|
|
121
|
-
|
|
243
|
+
// Wait for the socket to be bound so callers (and tests using `port: 0`)
|
|
244
|
+
// can talk to the server / read the kernel-assigned port immediately.
|
|
245
|
+
let boundPort = port;
|
|
246
|
+
const server = await new Promise((resolve) => {
|
|
247
|
+
const s = serve({ fetch: app.fetch, port }, (info) => {
|
|
248
|
+
boundPort = info.port;
|
|
249
|
+
resolve(s);
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
// §R-4: surface the opt-in memory budget at boot (only when active).
|
|
253
|
+
const memLimitMb = process.env.BP_MEM_LIMIT_MB;
|
|
254
|
+
if (memLimitMb && Number(memLimitMb) > 0) {
|
|
255
|
+
// eslint-disable-next-line no-console
|
|
256
|
+
console.log(`[runtime] memory budget: ${Number(memLimitMb)}MB (soft watchdog @85%)`);
|
|
257
|
+
}
|
|
122
258
|
// §7 L4 global safety net.
|
|
123
259
|
const onFatal = async (err) => {
|
|
124
260
|
try {
|
|
@@ -134,16 +270,18 @@ export function startServer(opts = {}) {
|
|
|
134
270
|
process.on("unhandledRejection", (reason) => void onFatal(reason));
|
|
135
271
|
return {
|
|
136
272
|
manager,
|
|
137
|
-
port,
|
|
273
|
+
port: boundPort,
|
|
138
274
|
close: () => new Promise((resolve) => {
|
|
275
|
+
manager.shutdown();
|
|
139
276
|
server.close(() => resolve());
|
|
140
277
|
}),
|
|
141
278
|
};
|
|
142
279
|
}
|
|
143
280
|
// Allow `node dist/server.js` to boot directly.
|
|
144
281
|
if (process.argv[1] && import.meta.url === `file://${process.argv[1]}`) {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
282
|
+
void startServer().then(({ port }) => {
|
|
283
|
+
// eslint-disable-next-line no-console
|
|
284
|
+
console.log(`[runtime] listening on :${port} (mock=${process.env.BP_MOCK ?? "0"})`);
|
|
285
|
+
});
|
|
148
286
|
}
|
|
149
287
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|