runbios-mcp 0.2.16 → 0.2.17-dev.268
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 +22 -11
- package/dist/capabilities.d.ts +20 -9
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +3 -1
- package/dist/capabilities.js.map +1 -1
- package/dist/config.d.ts +30 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +25 -2
- package/dist/config.js.map +1 -1
- package/dist/http/assistant.d.ts +25 -0
- package/dist/http/assistant.d.ts.map +1 -1
- package/dist/http/assistant.js +202 -47
- package/dist/http/assistant.js.map +1 -1
- package/dist/http/main.js +2 -0
- package/dist/http/main.js.map +1 -1
- package/dist/http/mcp-handler.d.ts.map +1 -1
- package/dist/http/mcp-handler.js +6 -1
- package/dist/http/mcp-handler.js.map +1 -1
- package/dist/http/metadata.js +1 -1
- package/dist/http/metadata.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +58 -71
- package/dist/server.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,23 +1,34 @@
|
|
|
1
1
|
# Run BiOS MCP server
|
|
2
2
|
|
|
3
3
|
The MCP server exposes the authenticated Run BiOS training and model-serving
|
|
4
|
-
control planes to MCP-compatible automation clients. This build registers **
|
|
5
|
-
tools** when every
|
|
6
|
-
|
|
7
|
-
(`tools/list`).
|
|
4
|
+
control planes to MCP-compatible automation clients. This build registers **122
|
|
5
|
+
tools** when every surface is open; `get_platform_guide` derives its inventory
|
|
6
|
+
from what is actually registered so its count matches the wire (`tools/list`).
|
|
8
7
|
|
|
9
8
|
PRE-LAUNCH: while the coming-soon gates are on (the default — see
|
|
10
9
|
`src/config.ts`), the three creation tools (`create_training_job`,
|
|
11
|
-
`upload_dataset`, `import_huggingface_dataset`) are not registered,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
optional; otherwise set
|
|
10
|
+
`upload_dataset`, `import_huggingface_dataset`) are not registered, and read and
|
|
11
|
+
lifecycle tools, including dataset mapping/revalidation/source/integration
|
|
12
|
+
maintenance, remain available. A production organization holding the training
|
|
13
|
+
beta grant opens both creation gates for its own MCP session. Local API-key mode
|
|
14
|
+
resolves the bound organization automatically through key introspection, so
|
|
15
|
+
`RUNBIOS_ORG_ID` is optional; otherwise set
|
|
18
16
|
`RUNBIOS_TRAINING_COMING_SOON=false` / `RUNBIOS_DATASETS_COMING_SOON=false` at
|
|
19
17
|
launch and the registrations return.
|
|
20
18
|
|
|
19
|
+
DEVELOPMENT ONLY: the Conscious Loop is offered on the development environment
|
|
20
|
+
alone (owner decision, 2026-09-24). While `RUNBIOS_LOOP_COMING_SOON` is anything
|
|
21
|
+
but `false` (the default), none of its 56 `loop_` tools is registered — reads
|
|
22
|
+
included — and the platform guide does not mention the loop; no organization is
|
|
23
|
+
admitted early, so the training beta grant does not open it. The hosted server
|
|
24
|
+
opens it only in its development task definition. To use the loop tools from a
|
|
25
|
+
local client against `https://api-dev.runbios.ai`, add
|
|
26
|
+
`"RUNBIOS_LOOP_COMING_SOON": "false"` to the client's `env`; anywhere else the
|
|
27
|
+
API refuses them (`403 LOOP_COMING_SOON`) whatever this variable says.
|
|
28
|
+
|
|
29
|
+
So the wire count is 122 with everything open, 118 with training and datasets
|
|
30
|
+
gated, and 63 in staging and production, where all three gates are closed.
|
|
31
|
+
|
|
21
32
|
Set these environment variables in the MCP client configuration:
|
|
22
33
|
|
|
23
34
|
```json
|
package/dist/capabilities.d.ts
CHANGED
|
@@ -1,16 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Environment capability gates for tool discovery.
|
|
3
3
|
*
|
|
4
|
-
* Some tool families depend on a backend that
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Some tool families depend on a backend that an environment may not run at
|
|
5
|
+
* all. IAM authorizes those tools by scope, not by environment, so without this
|
|
6
|
+
* filter an agent is offered tools that answer "is not available in this
|
|
7
|
+
* environment" on every call.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* This is the SECOND of two filters, and the weaker one. The first is the
|
|
10
|
+
* explicit launch gate (LaunchGates in src/config.ts, applied with
|
|
11
|
+
* withoutLaunchGatedTools): the Conscious Loop is offered on development only,
|
|
12
|
+
* and that is decided by the environment's own RUNBIOS_LOOP_COMING_SOON, never
|
|
13
|
+
* by a probe. A probe cannot decide it on its own, because the answer depends on
|
|
14
|
+
* the credential: a key without loop:read is refused by the gateway
|
|
15
|
+
* (403 INSUFFICIENT_SCOPE) before loop-service could say it is gated, and that
|
|
16
|
+
* refusal says nothing about the environment.
|
|
17
|
+
*
|
|
18
|
+
* What the probe still catches is an environment where the gate reads open but
|
|
19
|
+
* the backend is missing or gated anyway: the gateway's 503
|
|
20
|
+
* capability_unavailable, or loop-service's own 403 LOOP_COMING_SOON. Both are
|
|
21
|
+
* stable facts about the deployment, so they are cached. Anything else
|
|
22
|
+
* (success, another 401/403, a network error) leaves the family visible: the
|
|
23
|
+
* gateway stays the authority on every call, and a blip must never hide real
|
|
24
|
+
* tools.
|
|
14
25
|
*/
|
|
15
26
|
import type { BiosClient } from "./api-client.js";
|
|
16
27
|
export declare const CAPABILITY_CACHE_TTL_MS: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAWlD,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAGlD,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAuBD,kFAAkF;AAClF,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAClB,GAAG,GAAE,MAAM,MAAiB,GAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAOtB"}
|
package/dist/capabilities.js
CHANGED
|
@@ -8,7 +8,9 @@ export function resetCapabilityCache() {
|
|
|
8
8
|
}
|
|
9
9
|
function isCapabilityAbsent(error) {
|
|
10
10
|
const text = error instanceof Error ? error.message : String(error);
|
|
11
|
-
return /capability_unavailable/.test(text)
|
|
11
|
+
return /capability_unavailable/.test(text)
|
|
12
|
+
|| /\bLOOP_COMING_SOON\b/.test(text)
|
|
13
|
+
|| /is not available in this environment/.test(text);
|
|
12
14
|
}
|
|
13
15
|
async function familyAbsent(client, family, now) {
|
|
14
16
|
const cached = cache.get(family.prefix);
|
package/dist/capabilities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAgCA,MAAM,QAAQ,GAAuB;IACnC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE;CAClD,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,MAAM,CAAC;AAClD,MAAM,KAAK,GAAG,IAAI,GAAG,EAA2C,CAAC;AAEjE,MAAM,UAAU,oBAAoB;IAClC,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpE,OAAO,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC;WACrC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;WACjC,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,MAAkB,EAAE,MAAwB,EAAE,GAAW;IACnF,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,EAAE,GAAG,uBAAuB;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IAC9E,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7C,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,MAAkB,EAClB,KAAkB,EAClB,MAAoB,IAAI,CAAC,GAAG;IAE5B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAAE,SAAS;QACzE,IAAI,CAAC,CAAC,MAAM,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAAE,SAAS;QAC3D,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;YAAE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;gBAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const DEFAULT_BASE_URL = "https://api.runbios.ai";
|
|
1
|
+
export declare const DEFAULT_BASE_URL = "https://api-dev.runbios.ai";
|
|
2
2
|
type BaseUrlEnv = Partial<Pick<NodeJS.ProcessEnv, "RUNBIOS_BASE_URL" | "BIOS_BASE_URL">>;
|
|
3
3
|
/**
|
|
4
4
|
* RUNBIOS_* is the canonical environment prefix; the legacy BIOS_* names keep
|
|
@@ -18,14 +18,41 @@ export declare function resolveBaseURL(env?: BaseUrlEnv): string;
|
|
|
18
18
|
*
|
|
19
19
|
* Gated by default while pre-launch (an unset variable fails closed, never
|
|
20
20
|
* open); set RUNBIOS_TRAINING_COMING_SOON=false / RUNBIOS_DATASETS_COMING_SOON=false
|
|
21
|
-
* (legacy BIOS_* names still work) or flip the
|
|
21
|
+
* / RUNBIOS_LOOP_COMING_SOON=false (legacy BIOS_* names still work) or flip the
|
|
22
|
+
* defaults here at launch. The hosted server reads them from its task
|
|
23
|
+
* definition (scripts/deploy/ecs-service-contracts.json, usf-mcp), which opens
|
|
24
|
+
* all three in development only.
|
|
22
25
|
*/
|
|
23
26
|
export interface LaunchGates {
|
|
24
27
|
training: boolean;
|
|
25
28
|
datasets: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* The Conscious Loop, offered on development only (owner decision,
|
|
31
|
+
* 2026-09-24). Unlike the two above it hides the WHOLE family: every
|
|
32
|
+
* `loop_` tool is left unregistered and the guide says nothing about the
|
|
33
|
+
* loop, because nothing about it is offered where it is gated — not even a
|
|
34
|
+
* read. There is no per-organisation grant for it either: the training-beta
|
|
35
|
+
* grant resolved below opens training and datasets and never this.
|
|
36
|
+
* loop-service carries the same gate (LOOP_COMING_SOON, 403 on every
|
|
37
|
+
* customer route) as the authority.
|
|
38
|
+
*/
|
|
39
|
+
loop: boolean;
|
|
26
40
|
}
|
|
27
|
-
type LaunchGateEnv = Partial<Pick<NodeJS.ProcessEnv, "RUNBIOS_TRAINING_COMING_SOON" | "BIOS_TRAINING_COMING_SOON" | "RUNBIOS_DATASETS_COMING_SOON" | "BIOS_DATASETS_COMING_SOON">>;
|
|
41
|
+
type LaunchGateEnv = Partial<Pick<NodeJS.ProcessEnv, "RUNBIOS_TRAINING_COMING_SOON" | "BIOS_TRAINING_COMING_SOON" | "RUNBIOS_DATASETS_COMING_SOON" | "BIOS_DATASETS_COMING_SOON" | "RUNBIOS_LOOP_COMING_SOON" | "BIOS_LOOP_COMING_SOON">>;
|
|
28
42
|
export declare function resolveLaunchGates(env?: LaunchGateEnv): LaunchGates;
|
|
43
|
+
/** The tool-name prefix of the Conscious Loop family (see LaunchGates.loop). */
|
|
44
|
+
export declare const LOOP_TOOL_PREFIX = "loop_";
|
|
45
|
+
/**
|
|
46
|
+
* Removes every tool a closed launch gate hides from a session's authorized
|
|
47
|
+
* set, in place. The hosted MCP endpoint and the console assistant build their
|
|
48
|
+
* sessions from IAM's scope-derived tool list, which says nothing about the
|
|
49
|
+
* environment, so a scope that carries loop tools would otherwise offer them
|
|
50
|
+
* where the loop is not offered. This is decided by the environment alone —
|
|
51
|
+
* never by probing the service, whose answer depends on the credential's
|
|
52
|
+
* scopes (a key without loop:read is refused by the gateway before loop-service
|
|
53
|
+
* could say it is gated).
|
|
54
|
+
*/
|
|
55
|
+
export declare function withoutLaunchGatedTools(tools: Set<string>, gates: LaunchGates): Set<string>;
|
|
29
56
|
/**
|
|
30
57
|
* Per-session grant resolution (docs/design-training-beta-access.md). The
|
|
31
58
|
* environment gates above answer "is this surface open in this deployment?";
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AAE7D,KAAK,UAAU,GAAG,OAAO,CACvB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,kBAAkB,GAAG,eAAe,CAAC,CAC9D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,UAAwB,GAAG,MAAM,CAEpE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;;;OASG;IACH,IAAI,EAAE,OAAO,CAAC;CACf;AAED,KAAK,aAAa,GAAG,OAAO,CAC1B,IAAI,CACF,MAAM,CAAC,UAAU,EACf,8BAA8B,GAC9B,2BAA2B,GAC3B,8BAA8B,GAC9B,2BAA2B,GAC3B,0BAA0B,GAC1B,uBAAuB,CAC1B,CACF,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,aAA2B,GAAG,WAAW,CAMhF;AAED,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAK3F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAC9C,eAAO,MAAM,kBAAkB,QAAS,CAAC;AAEzC,wBAAsB,mBAAmB,CACvC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,MAAM,OAAO,CAAC;IAAE,GAAG,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9F,OAAO,CAAC,MAAM,CAAC,CASjB;AAKD,0EAA0E;AAC1E,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,OAAO,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,EAClE,GAAG,GAAE,aAA2B,EAChC,GAAG,GAAE,MAAM,MAAiB,GAC3B,OAAO,CAAC,WAAW,CAAC,CAuCtB"}
|
package/dist/config.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// api.runbios.ai DNS does not exist yet; planned cutover target once it does.
|
|
2
|
-
export const DEFAULT_BASE_URL = "https://api.runbios.ai";
|
|
2
|
+
export const DEFAULT_BASE_URL = "https://api-dev.runbios.ai";
|
|
3
3
|
/**
|
|
4
4
|
* RUNBIOS_* is the canonical environment prefix; the legacy BIOS_* names keep
|
|
5
5
|
* working so existing MCP client configs never break.
|
|
@@ -11,8 +11,29 @@ export function resolveLaunchGates(env = process.env) {
|
|
|
11
11
|
return {
|
|
12
12
|
training: (env.RUNBIOS_TRAINING_COMING_SOON ?? env.BIOS_TRAINING_COMING_SOON) !== "false",
|
|
13
13
|
datasets: (env.RUNBIOS_DATASETS_COMING_SOON ?? env.BIOS_DATASETS_COMING_SOON) !== "false",
|
|
14
|
+
loop: (env.RUNBIOS_LOOP_COMING_SOON ?? env.BIOS_LOOP_COMING_SOON) !== "false",
|
|
14
15
|
};
|
|
15
16
|
}
|
|
17
|
+
/** The tool-name prefix of the Conscious Loop family (see LaunchGates.loop). */
|
|
18
|
+
export const LOOP_TOOL_PREFIX = "loop_";
|
|
19
|
+
/**
|
|
20
|
+
* Removes every tool a closed launch gate hides from a session's authorized
|
|
21
|
+
* set, in place. The hosted MCP endpoint and the console assistant build their
|
|
22
|
+
* sessions from IAM's scope-derived tool list, which says nothing about the
|
|
23
|
+
* environment, so a scope that carries loop tools would otherwise offer them
|
|
24
|
+
* where the loop is not offered. This is decided by the environment alone —
|
|
25
|
+
* never by probing the service, whose answer depends on the credential's
|
|
26
|
+
* scopes (a key without loop:read is refused by the gateway before loop-service
|
|
27
|
+
* could say it is gated).
|
|
28
|
+
*/
|
|
29
|
+
export function withoutLaunchGatedTools(tools, gates) {
|
|
30
|
+
if (gates.loop) {
|
|
31
|
+
for (const name of [...tools])
|
|
32
|
+
if (name.startsWith(LOOP_TOOL_PREFIX))
|
|
33
|
+
tools.delete(name);
|
|
34
|
+
}
|
|
35
|
+
return tools;
|
|
36
|
+
}
|
|
16
37
|
/**
|
|
17
38
|
* Per-session grant resolution (docs/design-training-beta-access.md). The
|
|
18
39
|
* environment gates above answer "is this surface open in this deployment?";
|
|
@@ -62,7 +83,9 @@ export async function sessionLaunchGates(orgId, getFeatures, env = process.env,
|
|
|
62
83
|
const gates = resolveLaunchGates(env);
|
|
63
84
|
if (!orgId || (!gates.training && !gates.datasets))
|
|
64
85
|
return gates;
|
|
65
|
-
|
|
86
|
+
// The grant admits an organisation to training and datasets. It never opens
|
|
87
|
+
// the loop, which the environment alone decides.
|
|
88
|
+
const open = { ...gates, training: false, datasets: false };
|
|
66
89
|
const cached = grantCache.get(orgId);
|
|
67
90
|
if (cached && now() - cached.at < GRANT_CACHE_TTL_MS) {
|
|
68
91
|
return cached.granted ? open : gates;
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/http/assistant.d.ts
CHANGED
|
@@ -4,6 +4,14 @@ import { type AssistantModelMessage } from "../assistant/model.js";
|
|
|
4
4
|
import type { AuditEmitter } from "./audit.js";
|
|
5
5
|
import type { HostedConfig } from "./config.js";
|
|
6
6
|
import type { McpStore } from "./store.js";
|
|
7
|
+
/**
|
|
8
|
+
* How the assistant may speak about the Conscious Loop in this session:
|
|
9
|
+
* offered — the environment offers it and this session holds loop tools;
|
|
10
|
+
* gated — the environment does not offer it (everywhere but development);
|
|
11
|
+
* no_access — offered here, but this member's role grants no loop tool.
|
|
12
|
+
*/
|
|
13
|
+
export type LoopAvailability = "offered" | "gated" | "no_access";
|
|
14
|
+
export declare function loopAvailability(tools: ReadonlySet<string>): LoopAvailability;
|
|
7
15
|
export declare function resolveSessionTools(client: BiosClient, orgId: string, workspaceId: string): Promise<Set<string>>;
|
|
8
16
|
interface ResourceReference {
|
|
9
17
|
kind: "dataset" | "training" | "deployment" | "checkpoint" | "integration" | "booking";
|
|
@@ -17,7 +25,24 @@ interface AssistantDeps {
|
|
|
17
25
|
fetchImpl?: typeof fetch;
|
|
18
26
|
}
|
|
19
27
|
export declare function normalizeAssistantMessages(value: unknown): AssistantModelMessage[];
|
|
28
|
+
export declare function systemPrompt(toolsEnabled: boolean, loop: LoopAvailability): string;
|
|
20
29
|
export declare function extractResourceReferences(toolName: string, text: string): ResourceReference[];
|
|
30
|
+
/** Called on SIGTERM: running segments stop at the next step boundary and hand off. */
|
|
31
|
+
export declare function beginAssistantDrain(): void;
|
|
32
|
+
/** Expiry of the caller's session JWT, read from its exp claim (the gateway still verifies it). */
|
|
33
|
+
export declare function sessionTokenExpiresAt(authorization: string): number | null;
|
|
34
|
+
/**
|
|
35
|
+
* Middle-out history compaction, front of the middle first (the same rule the
|
|
36
|
+
* serverless gateway applies in canon/compact.go): the first message (the task
|
|
37
|
+
* and any pasted document) is kept, the latest user message and everything after
|
|
38
|
+
* it are kept, and whole turns are dropped starting just after the head and
|
|
39
|
+
* moving forward until the history fits. An assistant message is always dropped
|
|
40
|
+
* together with the tool results that answer it, so the transcript stays valid.
|
|
41
|
+
*/
|
|
42
|
+
export declare function compactHistory(messages: AssistantModelMessage[], limit: number): {
|
|
43
|
+
messages: AssistantModelMessage[];
|
|
44
|
+
dropped: number;
|
|
45
|
+
};
|
|
21
46
|
export declare function createAssistantCapabilitiesHandler(deps: AssistantDeps): (req: Request, res: Response) => Promise<void>;
|
|
22
47
|
export declare function createAssistantChatHandler(deps: AssistantDeps): (req: Request, res: Response) => Promise<void>;
|
|
23
48
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assistant.d.ts","sourceRoot":"","sources":["../../src/http/assistant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAW9C,OAAO,EAIL,KAAK,qBAAqB,EAG3B,MAAM,uBAAuB,CAAC;AAY/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"assistant.d.ts","sourceRoot":"","sources":["../../src/http/assistant.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAW9C,OAAO,EAIL,KAAK,qBAAqB,EAG3B,MAAM,uBAAuB,CAAC;AAY/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA0G3C;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAAC;AAEjE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAG7E;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAEtH;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC;IACvF,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,aAAa;IACrB,KAAK,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAE,YAAY,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAwFD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,EAAE,CAqClF;AAsJD,wBAAgB,YAAY,CAAC,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAuBlF;AA2DD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CA2B7F;AAoGD,uFAAuF;AACvF,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,mGAAmG;AACnG,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU1E;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,qBAAqB,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAwBvI;AAWD,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,aAAa,IACxB,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CAAC,CAoDxF;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,aAAa,IACxB,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,OAAO,CAAC,IAAI,CAAC,CA2ZhF"}
|