pi-fabric 0.92.30 → 0.92.32
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 +2 -1
- package/dist/chunks/chunk-CHR7QKWE.js +102 -0
- package/dist/chunks/chunk-CHR7QKWE.js.map +7 -0
- package/dist/chunks/{chunk-KQHJQDJM.js → chunk-COEKLWQ4.js} +2 -2
- package/dist/chunks/{chunk-OEDHQWE2.js → chunk-F4J7KGX4.js} +2 -2
- package/dist/chunks/{chunk-RZKN534S.js → chunk-IOE5RWJ4.js} +17 -6
- package/dist/chunks/chunk-IOE5RWJ4.js.map +7 -0
- package/dist/chunks/{chunk-Q2DCENFM.js → chunk-KQUZV4NA.js} +5 -3
- package/dist/chunks/{chunk-Q2DCENFM.js.map → chunk-KQUZV4NA.js.map} +1 -1
- package/dist/chunks/{chunk-X3OD47CL.js → chunk-QXP2OK5O.js} +8 -11
- package/dist/chunks/chunk-QXP2OK5O.js.map +7 -0
- package/dist/chunks/{chunk-Z63R5GVN.js → chunk-T3RMRIF4.js} +6 -2
- package/dist/chunks/chunk-T3RMRIF4.js.map +7 -0
- package/dist/chunks/{chunk-NPHCGLGH.js → chunk-U5IEAHUY.js} +17 -12
- package/dist/chunks/chunk-U5IEAHUY.js.map +7 -0
- package/dist/chunks/{chunk-623AGCNU.js → chunk-WJ6OWOVJ.js} +2 -2
- package/dist/chunks/{chunk-D6YSBP3R.js → chunk-YQLJMJ7L.js} +2 -2
- package/dist/chunks/{chunk-M3S7XITB.js → chunk-YZDC2WTU.js} +29 -13
- package/dist/chunks/chunk-YZDC2WTU.js.map +7 -0
- package/dist/components/configuration.js +4 -3
- package/dist/core/auto-approval-classifier.d.ts.map +1 -1
- package/dist/fabric-runtime-state.d.ts.map +1 -1
- package/dist/fabric-runtime-state.js +12 -8
- package/dist/fabric-runtime-state.js.map +2 -2
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/jev/client.d.ts +8 -2
- package/dist/jev/client.d.ts.map +1 -1
- package/dist/jev/client.js +3 -2
- package/dist/jev/config.d.ts.map +1 -1
- package/dist/jev/model-key.d.ts +8 -2
- package/dist/jev/model-key.d.ts.map +1 -1
- package/dist/jev/observation.js +3 -2
- package/dist/jev/routes.d.ts +53 -0
- package/dist/jev/routes.d.ts.map +1 -0
- package/dist/jev/validation.d.ts.map +1 -1
- package/dist/jev.d.ts +1 -0
- package/dist/jev.d.ts.map +1 -1
- package/dist/jev.js +25 -7
- package/dist/providers/jev-provider.d.ts +2 -0
- package/dist/providers/jev-provider.d.ts.map +1 -1
- package/dist/providers/jev-provider.js +7 -6
- package/dist/residency/host.js +5 -4
- package/dist/residency/pi-entry.js +5 -4
- package/dist/residency/pi-entry.js.map +1 -1
- package/dist/runtime/monty-runtime.js +3 -2
- package/dist/runtime/monty-runtime.js.map +1 -1
- package/dist/ui/settings-sections-execution.d.ts.map +1 -1
- package/dist/ui/settings.js +8 -10
- package/dist/ui/settings.js.map +2 -2
- package/docs/configuration.md +4 -4
- package/docs/foreman.md +65 -0
- package/docs/jev.md +8 -2
- package/docs/skills.md +2 -1
- package/package.json +1 -1
- package/skillsets/python/fabric-exec/SKILL.md +1 -1
- package/skillsets/python/fabric-foreman/SKILL.md +249 -0
- package/skillsets/python/fabric-guide/SKILL.md +2 -1
- package/skillsets/python/fabric-jev/SKILL.md +2 -2
- package/skillsets/typescript/fabric-exec/SKILL.md +1 -1
- package/skillsets/typescript/fabric-foreman/SKILL.md +240 -0
- package/skillsets/typescript/fabric-guide/SKILL.md +2 -1
- package/skillsets/typescript/fabric-jev/SKILL.md +2 -2
- package/dist/chunks/chunk-M3S7XITB.js.map +0 -7
- package/dist/chunks/chunk-NPHCGLGH.js.map +0 -7
- package/dist/chunks/chunk-RZKN534S.js.map +0 -7
- package/dist/chunks/chunk-X3OD47CL.js.map +0 -7
- package/dist/chunks/chunk-Z63R5GVN.js.map +0 -7
- /package/dist/chunks/{chunk-KQHJQDJM.js.map → chunk-COEKLWQ4.js.map} +0 -0
- /package/dist/chunks/{chunk-OEDHQWE2.js.map → chunk-F4J7KGX4.js.map} +0 -0
- /package/dist/chunks/{chunk-623AGCNU.js.map → chunk-WJ6OWOVJ.js.map} +0 -0
- /package/dist/chunks/{chunk-D6YSBP3R.js.map → chunk-YQLJMJ7L.js.map} +0 -0
package/README.md
CHANGED
|
@@ -109,6 +109,7 @@ Pi loads advanced patterns after direct user invocation. Run `/skill:fabric-guid
|
|
|
109
109
|
| Help choosing the smallest advanced mechanism | `/skill:fabric-guide Choose a mechanism to audit every auth file and verify the findings.` |
|
|
110
110
|
| Parallel audits, migrations, or research with verification | `/skill:fabric-workflow Audit every auth file and synthesize verified findings.` |
|
|
111
111
|
| Work too big for one context window | `/skill:fabric-rlm Produce a compact architecture map of this repo.` |
|
|
112
|
+
| A Jev foreman above coding work, per turn or at settlement | `/skill:fabric-foreman Watch this migration, request verification, and flag blockers.` |
|
|
112
113
|
| A persistent watcher for one measurable goal | `/skill:fabric-supervisor Watch this migration until it is complete and tested.` |
|
|
113
114
|
| A strict auditor for one feature design spec | `/skill:fabric-spec Implement docs/specs/checkout.md to the tee; nothing missing, nothing extra.` |
|
|
114
115
|
| A quiet decision-point reviewer | `/skill:fabric-advisor Focus on migration correctness.` |
|
|
@@ -144,7 +145,7 @@ See the [interface & commands reference](docs/interface.md) for every view, keyb
|
|
|
144
145
|
- [Interface & commands](docs/interface.md): dashboard, settings, keybindings, slash commands, and headless runs.
|
|
145
146
|
- [Agents, actors & mesh](docs/agents.md): model handoff, `/fabric prewalk`, runners, transports, actors, councils, recursive queries, and durable coordination.
|
|
146
147
|
- [Durable residency through Pi](docs/residency-runtime.md): background host lifecycle and the Pi-runtime launcher boundary.
|
|
147
|
-
- [Jev System One programs](docs/jev.md): typed judgments, `/login jev
|
|
148
|
+
- [Jev System One programs](docs/jev.md): typed judgments, `/login jev` or the existing `openrouter` credential, foreground/background loops, budgets, and optional Browser Harness CDP integration.
|
|
148
149
|
- [Components & committed capabilities](docs/components.md): supervised effects, exact requirements, external per-model guidance and execution-profile replacement, rolling provider generations, actor commitments, and both formal calculi.
|
|
149
150
|
- [External providers](docs/providers.md): the versioned provider protocol for extensions.
|
|
150
151
|
- [Architecture & security](docs/architecture.md): the host bridge, sandboxing, tool-call robustness, and limits.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// src/jev/model-key.ts
|
|
2
|
+
var JEV_TYPESAFE_MODEL_PREFIX = "pi-fabric/typesafe/";
|
|
3
|
+
var JEV_OPENROUTER_MODEL_PREFIX = "pi-fabric/openrouter/";
|
|
4
|
+
var ROUTE_PREFIXES = [
|
|
5
|
+
["typesafe", JEV_TYPESAFE_MODEL_PREFIX],
|
|
6
|
+
["openrouter", JEV_OPENROUTER_MODEL_PREFIX]
|
|
7
|
+
];
|
|
8
|
+
var normalizeJevApprovalModel = (key) => key?.startsWith("jev/") ? `${JEV_TYPESAFE_MODEL_PREFIX}${key.slice(4)}` : key;
|
|
9
|
+
var parseJevApprovalModel = (key) => {
|
|
10
|
+
const normalized = normalizeJevApprovalModel(key);
|
|
11
|
+
if (!normalized) return void 0;
|
|
12
|
+
for (const [route, prefix] of ROUTE_PREFIXES) {
|
|
13
|
+
if (normalized.startsWith(prefix)) return { route, model: normalized.slice(prefix.length) };
|
|
14
|
+
}
|
|
15
|
+
return void 0;
|
|
16
|
+
};
|
|
17
|
+
var isJevApprovalModel = (key) => parseJevApprovalModel(key) !== void 0;
|
|
18
|
+
|
|
19
|
+
// src/jev/routes.ts
|
|
20
|
+
var JEV_TYPESAFE_ROUTE = {
|
|
21
|
+
id: "typesafe",
|
|
22
|
+
label: "TypeSafe",
|
|
23
|
+
endpoint: "https://api.typesafe.ai/v1/systemone",
|
|
24
|
+
providerId: "jev",
|
|
25
|
+
envKeys: ["TYPESAFE_API_KEY"]
|
|
26
|
+
};
|
|
27
|
+
var JEV_OPENROUTER_ROUTE = {
|
|
28
|
+
id: "openrouter",
|
|
29
|
+
label: "OpenRouter",
|
|
30
|
+
endpoint: "https://openrouter.ai/api/alpha/decisions",
|
|
31
|
+
providerId: "openrouter",
|
|
32
|
+
envKeys: ["OPENROUTER_API_KEY", "TYPESAFE_OPENROUTER_API_KEY"]
|
|
33
|
+
};
|
|
34
|
+
var jevRouteById = (id) => id === "openrouter" ? JEV_OPENROUTER_ROUTE : JEV_TYPESAFE_ROUTE;
|
|
35
|
+
var JEV_TYPESAFE_MODELS = ["jev-latest", "jev-1.13", "jev-1.13.0", "jev-preview"];
|
|
36
|
+
var JEV_OPENROUTER_MODELS = {
|
|
37
|
+
"jev-latest": "~typesafe/jev-latest",
|
|
38
|
+
"jev-1.13": "typesafe/jev-1.13"
|
|
39
|
+
};
|
|
40
|
+
var TYPESAFE_MODEL = /^[a-zA-Z0-9._-]{1,128}$/;
|
|
41
|
+
var isJevOpenRouterModelId = (model) => /^~?typesafe\/[a-zA-Z0-9._-]{1,120}$/.test(model);
|
|
42
|
+
var isJevModelId = (model) => TYPESAFE_MODEL.test(model) || isJevOpenRouterModelId(model);
|
|
43
|
+
var resolveJevModelRoute = (model) => isJevOpenRouterModelId(model) ? { route: JEV_OPENROUTER_ROUTE, model } : { route: JEV_TYPESAFE_ROUTE, model };
|
|
44
|
+
var resolveJevUpstreamModel = (route, model) => {
|
|
45
|
+
if (route.id === "openrouter") {
|
|
46
|
+
return JEV_OPENROUTER_MODELS[model] ?? (isJevOpenRouterModelId(model) ? model : void 0);
|
|
47
|
+
}
|
|
48
|
+
return TYPESAFE_MODEL.test(model) ? model : void 0;
|
|
49
|
+
};
|
|
50
|
+
var resolveJevClassifierTarget = (key) => {
|
|
51
|
+
const parsed = parseJevApprovalModel(key);
|
|
52
|
+
if (!parsed) {
|
|
53
|
+
return {
|
|
54
|
+
ok: false,
|
|
55
|
+
message: `Invalid Jev auto-approval model; use ${JEV_TYPESAFE_MODEL_PREFIX}<model-id> or ${JEV_OPENROUTER_MODEL_PREFIX}<model-id>`
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const route = jevRouteById(parsed.route);
|
|
59
|
+
const model = resolveJevUpstreamModel(route, parsed.model);
|
|
60
|
+
if (model) return { ok: true, route, model };
|
|
61
|
+
return {
|
|
62
|
+
ok: false,
|
|
63
|
+
message: route.id === "openrouter" ? `OpenRouter serves ${Object.keys(JEV_OPENROUTER_MODELS).join(", ")}; "${parsed.model}" is not available` : `Invalid Jev auto-approval model; use ${JEV_TYPESAFE_MODEL_PREFIX}<model-id>`
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
var jevClassifierModels = (configuredModel) => {
|
|
67
|
+
const configured = configuredModel ? resolveJevModelRoute(configuredModel) : void 0;
|
|
68
|
+
const typesafe = new Set(JEV_TYPESAFE_MODELS);
|
|
69
|
+
if (configured?.route.id === "typesafe" && configuredModel) typesafe.add(configuredModel);
|
|
70
|
+
const openrouter = new Set(Object.keys(JEV_OPENROUTER_MODELS));
|
|
71
|
+
if (configured?.route.id === "openrouter" && configuredModel) openrouter.add(configuredModel);
|
|
72
|
+
return [
|
|
73
|
+
...[...typesafe].map((model) => ({
|
|
74
|
+
provider: "pi-fabric",
|
|
75
|
+
id: `typesafe/${model}`,
|
|
76
|
+
name: `Jev (TypeSafe safety classifier \xB7 ${model})`
|
|
77
|
+
})),
|
|
78
|
+
...[...openrouter].map((model) => ({
|
|
79
|
+
provider: "pi-fabric",
|
|
80
|
+
id: `openrouter/${model}`,
|
|
81
|
+
name: `Jev (OpenRouter safety classifier \xB7 ${model})`
|
|
82
|
+
}))
|
|
83
|
+
];
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export {
|
|
87
|
+
JEV_TYPESAFE_MODEL_PREFIX,
|
|
88
|
+
JEV_OPENROUTER_MODEL_PREFIX,
|
|
89
|
+
normalizeJevApprovalModel,
|
|
90
|
+
isJevApprovalModel,
|
|
91
|
+
JEV_TYPESAFE_ROUTE,
|
|
92
|
+
JEV_OPENROUTER_ROUTE,
|
|
93
|
+
JEV_TYPESAFE_MODELS,
|
|
94
|
+
JEV_OPENROUTER_MODELS,
|
|
95
|
+
isJevOpenRouterModelId,
|
|
96
|
+
isJevModelId,
|
|
97
|
+
resolveJevModelRoute,
|
|
98
|
+
resolveJevUpstreamModel,
|
|
99
|
+
resolveJevClassifierTarget,
|
|
100
|
+
jevClassifierModels
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=chunk-CHR7QKWE.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/jev/model-key.ts", "../../src/jev/routes.ts"],
|
|
4
|
+
"sourcesContent": ["/** Fabric classifier keys, not Pi chat-provider or upstream TypeSafe/OpenRouter model IDs. */\nexport const JEV_TYPESAFE_MODEL_PREFIX = \"pi-fabric/typesafe/\";\nexport const JEV_OPENROUTER_MODEL_PREFIX = \"pi-fabric/openrouter/\";\n\nexport type JevClassifierRoute = \"typesafe\" | \"openrouter\";\n\nconst ROUTE_PREFIXES: ReadonlyArray<readonly [route: JevClassifierRoute, prefix: string]> = [\n [\"typesafe\", JEV_TYPESAFE_MODEL_PREFIX],\n [\"openrouter\", JEV_OPENROUTER_MODEL_PREFIX],\n];\n\n/** Keep saved pre-namespace overrides usable without moving /login jev credentials. */\nexport const normalizeJevApprovalModel = (key: string | undefined): string | undefined =>\n key?.startsWith(\"jev/\") ? `${JEV_TYPESAFE_MODEL_PREFIX}${key.slice(4)}` : key;\n\nexport const parseJevApprovalModel = (\n key: string | undefined,\n): { route: JevClassifierRoute; model: string } | undefined => {\n const normalized = normalizeJevApprovalModel(key);\n if (!normalized) return undefined;\n for (const [route, prefix] of ROUTE_PREFIXES) {\n if (normalized.startsWith(prefix)) return { route, model: normalized.slice(prefix.length) };\n }\n return undefined;\n};\n\nexport const isJevApprovalModel = (key: string | undefined): boolean =>\n parseJevApprovalModel(key) !== undefined;\n", "import {\n JEV_OPENROUTER_MODEL_PREFIX,\n JEV_TYPESAFE_MODEL_PREFIX,\n parseJevApprovalModel,\n type JevClassifierRoute,\n} from \"./model-key.js\";\n\nexport interface JevRoute {\n readonly id: JevClassifierRoute;\n /** Human label used in host-visible errors and status. */\n readonly label: string;\n /** Fixed HTTPS endpoint receiving the typed System One request. */\n readonly endpoint: string;\n /** Pi auth provider whose auth.json login and environment keys authenticate this route. */\n readonly providerId: string;\n /** Environment fallbacks, checked when Pi provider auth is not configured. */\n readonly envKeys: readonly string[];\n}\n\nexport const JEV_TYPESAFE_ROUTE: JevRoute = {\n id: \"typesafe\",\n label: \"TypeSafe\",\n endpoint: \"https://api.typesafe.ai/v1/systemone\",\n providerId: \"jev\",\n envKeys: [\"TYPESAFE_API_KEY\"],\n};\n\n/**\n * OpenRouter serves decisions models on its Decisions API, not chat completions.\n * The user's existing openrouter auth (`/login openrouter`, `OPENROUTER_API_KEY`)\n * is the primary credential; `TYPESAFE_OPENROUTER_API_KEY` is an explicit fallback.\n */\nexport const JEV_OPENROUTER_ROUTE: JevRoute = {\n id: \"openrouter\",\n label: \"OpenRouter\",\n endpoint: \"https://openrouter.ai/api/alpha/decisions\",\n providerId: \"openrouter\",\n envKeys: [\"OPENROUTER_API_KEY\", \"TYPESAFE_OPENROUTER_API_KEY\"],\n};\n\nconst jevRouteById = (id: JevClassifierRoute): JevRoute =>\n id === \"openrouter\" ? JEV_OPENROUTER_ROUTE : JEV_TYPESAFE_ROUTE;\n\n/** Direct TypeSafe aliases. All of them resolve to `jev-1.13.0` today. */\nexport const JEV_TYPESAFE_MODELS: readonly string[] = [\"jev-latest\", \"jev-1.13\", \"jev-1.13.0\", \"jev-preview\"];\n\n/** OpenRouter decisions model IDs by alias. OpenRouter has no `jev-preview` alias. */\nexport const JEV_OPENROUTER_MODELS: Readonly<Record<string, string>> = {\n \"jev-latest\": \"~typesafe/jev-latest\",\n \"jev-1.13\": \"typesafe/jev-1.13\",\n};\n\nconst TYPESAFE_MODEL = /^[a-zA-Z0-9._-]{1,128}$/;\n/** OpenRouter decisions IDs are `~typesafe/<family>` or `typesafe/<build>`. */\nexport const isJevOpenRouterModelId = (model: string): boolean =>\n /^~?typesafe\\/[a-zA-Z0-9._-]{1,120}$/.test(model);\n/** A bare TypeSafe alias or a routable OpenRouter decisions ID. */\nexport const isJevModelId = (model: string): boolean =>\n TYPESAFE_MODEL.test(model) || isJevOpenRouterModelId(model);\n\nexport interface JevRouteTarget {\n readonly route: JevRoute;\n readonly model: string;\n}\n\n/** Route and upstream model ID for a raw `jev.model` value. */\nexport const resolveJevModelRoute = (model: string): JevRouteTarget =>\n isJevOpenRouterModelId(model)\n ? { route: JEV_OPENROUTER_ROUTE, model }\n : { route: JEV_TYPESAFE_ROUTE, model };\n\n/** Upstream model ID for an alias or override on an already-selected route. */\nexport const resolveJevUpstreamModel = (route: JevRoute, model: string): string | undefined => {\n if (route.id === \"openrouter\") {\n return JEV_OPENROUTER_MODELS[model] ?? (isJevOpenRouterModelId(model) ? model : undefined);\n }\n return TYPESAFE_MODEL.test(model) ? model : undefined;\n};\n\nexport type JevClassifierTarget =\n | { readonly ok: true; readonly route: JevRoute; readonly model: string }\n | { readonly ok: false; readonly message: string };\n\n/** Route and upstream model ID for a stored `pi-fabric/<route>/<model>` approvals key. */\nexport const resolveJevClassifierTarget = (key: string): JevClassifierTarget => {\n const parsed = parseJevApprovalModel(key);\n if (!parsed) {\n return {\n ok: false,\n message: `Invalid Jev auto-approval model; use ${JEV_TYPESAFE_MODEL_PREFIX}<model-id> or ${JEV_OPENROUTER_MODEL_PREFIX}<model-id>`,\n };\n }\n const route = jevRouteById(parsed.route);\n const model = resolveJevUpstreamModel(route, parsed.model);\n if (model) return { ok: true, route, model };\n return {\n ok: false,\n message: route.id === \"openrouter\"\n ? `OpenRouter serves ${Object.keys(JEV_OPENROUTER_MODELS).join(\", \")}; \"${parsed.model}\" is not available`\n : `Invalid Jev auto-approval model; use ${JEV_TYPESAFE_MODEL_PREFIX}<model-id>`,\n };\n};\n\nexport interface JevClassifierPickerModel {\n readonly provider: \"pi-fabric\";\n readonly id: string;\n readonly name: string;\n}\n\n/** Approvals picker entries: every supported classifier key plus the configured model. */\nexport const jevClassifierModels = (configuredModel?: string): JevClassifierPickerModel[] => {\n const configured = configuredModel ? resolveJevModelRoute(configuredModel) : undefined;\n const typesafe = new Set(JEV_TYPESAFE_MODELS);\n if (configured?.route.id === \"typesafe\" && configuredModel) typesafe.add(configuredModel);\n const openrouter = new Set(Object.keys(JEV_OPENROUTER_MODELS));\n if (configured?.route.id === \"openrouter\" && configuredModel) openrouter.add(configuredModel);\n return [\n ...[...typesafe].map((model): JevClassifierPickerModel => ({\n provider: \"pi-fabric\", id: `typesafe/${model}`,\n name: `Jev (TypeSafe safety classifier \u00B7 ${model})`,\n })),\n ...[...openrouter].map((model): JevClassifierPickerModel => ({\n provider: \"pi-fabric\", id: `openrouter/${model}`,\n name: `Jev (OpenRouter safety classifier \u00B7 ${model})`,\n })),\n ];\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
agentParticipantRecords,
|
|
10
10
|
loadModelUsage,
|
|
11
11
|
useBudgetLedger
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-WJ6OWOVJ.js";
|
|
13
13
|
import {
|
|
14
14
|
RESIDENT_HOST_FORMAT,
|
|
15
15
|
residentDeliveryPrefix,
|
|
@@ -689,4 +689,4 @@ if (isMain) {
|
|
|
689
689
|
export {
|
|
690
690
|
runResidentHostFromConfigPath
|
|
691
691
|
};
|
|
692
|
-
//# sourceMappingURL=chunk-
|
|
692
|
+
//# sourceMappingURL=chunk-COEKLWQ4.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
writeJsonAtomic
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-KQUZV4NA.js";
|
|
4
4
|
import {
|
|
5
5
|
stableJsonHash
|
|
6
6
|
} from "./chunk-3YZUQESG.js";
|
|
@@ -131,4 +131,4 @@ export {
|
|
|
131
131
|
FabricComponentConfiguration,
|
|
132
132
|
watchComponentConfiguration
|
|
133
133
|
};
|
|
134
|
-
//# sourceMappingURL=chunk-
|
|
134
|
+
//# sourceMappingURL=chunk-F4J7KGX4.js.map
|
|
@@ -1,28 +1,31 @@
|
|
|
1
1
|
import {
|
|
2
2
|
JevClient,
|
|
3
3
|
JevCredentials
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-YZDC2WTU.js";
|
|
5
5
|
import {
|
|
6
6
|
checkObserve,
|
|
7
7
|
jevObserveSchema
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-YQLJMJ7L.js";
|
|
9
9
|
import {
|
|
10
10
|
checkSchema,
|
|
11
11
|
checkValue,
|
|
12
12
|
jsonText,
|
|
13
13
|
object
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-T3RMRIF4.js";
|
|
15
15
|
import {
|
|
16
16
|
ApprovalController,
|
|
17
17
|
FabricAutoApprovalClassifier,
|
|
18
18
|
FabricSessionApprovals
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-U5IEAHUY.js";
|
|
20
20
|
import {
|
|
21
21
|
runAbortable
|
|
22
22
|
} from "./chunk-7TB7NXSL.js";
|
|
23
23
|
import {
|
|
24
24
|
validationMessage
|
|
25
25
|
} from "./chunk-PSNXUZMY.js";
|
|
26
|
+
import {
|
|
27
|
+
resolveJevModelRoute
|
|
28
|
+
} from "./chunk-CHR7QKWE.js";
|
|
26
29
|
|
|
27
30
|
// src/providers/jev-provider.ts
|
|
28
31
|
import { Type } from "typebox";
|
|
@@ -385,9 +388,16 @@ var JevProvider = class {
|
|
|
385
388
|
description = "TypeSafe System One judgments and foreground/background reactive TypeScript programs";
|
|
386
389
|
manager;
|
|
387
390
|
client;
|
|
391
|
+
route;
|
|
388
392
|
constructor(options, client) {
|
|
389
393
|
this.manager = new JevProgramManager(options);
|
|
390
|
-
this.
|
|
394
|
+
this.route = resolveJevModelRoute(options.config.jev.model).route;
|
|
395
|
+
this.client = client ?? new JevClient(
|
|
396
|
+
options.config.jev,
|
|
397
|
+
void 0,
|
|
398
|
+
new JevCredentials(options.config.jev.credentialCommand, process.env, options.credentialSource, this.route.envKeys),
|
|
399
|
+
this.route
|
|
400
|
+
);
|
|
391
401
|
}
|
|
392
402
|
async list(request) {
|
|
393
403
|
const query = request.query?.toLowerCase();
|
|
@@ -412,6 +422,7 @@ var JevProvider = class {
|
|
|
412
422
|
return typeof args.id === "string" ? this.manager.status(args.id, args.after) : {
|
|
413
423
|
credentials: this.client.credentials.status(),
|
|
414
424
|
model: this.client.config.model,
|
|
425
|
+
route: this.route.id,
|
|
415
426
|
runs: this.manager.list()
|
|
416
427
|
};
|
|
417
428
|
case "join":
|
|
@@ -437,4 +448,4 @@ export {
|
|
|
437
448
|
JEV_ACTION_DESCRIPTORS,
|
|
438
449
|
JevProvider
|
|
439
450
|
};
|
|
440
|
-
//# sourceMappingURL=chunk-
|
|
451
|
+
//# sourceMappingURL=chunk-IOE5RWJ4.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/providers/jev-provider.ts", "../../src/jev/manager.ts"],
|
|
4
|
+
"sourcesContent": ["import { Type } from \"typebox\";\nimport { validationMessage } from \"../core/action-arguments.js\";\nimport type { FabricActionDescriptor, FabricInvocationContext, FabricProvider, FabricProviderListRequest } from \"../protocol.js\";\nimport { JevClient, JevCredentials, type JevCredentialSource } from \"../jev/client.js\";\nimport { JevProgramManager, type JevManagerOptions } from \"../jev/manager.js\";\nimport { resolveJevModelRoute, type JevRoute } from \"../jev/routes.js\";\nimport type { JevLaunch, JevRequest } from \"../jev/types.js\";\nimport { jevObserveSchema } from \"../jev/observation.js\";\n\nconst description = Type.Union([Type.String(), Type.Array(Type.Unknown()), Type.Record(Type.String(), Type.Unknown())]);\nconst question = Type.Union([\n Type.Object({ type: Type.Literal(\"noul\"), instructions: description, criteria: Type.Optional(Type.Object({ true: Type.Optional(description), false: Type.Optional(description) }, { additionalProperties: false })) }, { additionalProperties: false }),\n Type.Object({ type: Type.Literal(\"choice\"), instructions: description, criteria: Type.Record(Type.String(), Type.Union([description, Type.Null()]), { minProperties: 1, maxProperties: 255 }) }, { additionalProperties: false }),\n Type.Object({ type: Type.Literal(\"score\"), instructions: description, criteria: Type.Array(description, { minItems: 2, maxItems: 10 }) }, { additionalProperties: false }),\n]);\nexport const jevRequestSchema = Type.Object({\n state: description,\n questions: Type.Record(Type.String(), question, { minProperties: 1, maxProperties: 128 }),\n model: Type.Optional(Type.String({ minLength: 1, maxLength: 128 })),\n}, { additionalProperties: false });\nexport const jevLaunchSchema = Type.Object({\n program: Type.Object({\n name: Type.String({ minLength: 1, maxLength: 128 }),\n code: Type.String({ minLength: 1, maxLength: 65_536 }),\n inputSchema: Type.Record(Type.String(), Type.Unknown()),\n outputSchema: Type.Record(Type.String(), Type.Unknown()),\n requires: Type.Array(Type.String({ minLength: 3, maxLength: 256 }), { maxItems: 64, uniqueItems: true }),\n limits: Type.Optional(Type.Object({\n timeoutMs: Type.Optional(Type.Integer({ minimum: 1 })),\n maxEvaluations: Type.Optional(Type.Integer({ minimum: 1 })),\n maxToolCalls: Type.Optional(Type.Integer({ minimum: 1 })),\n maxTokens: Type.Optional(Type.Integer({ minimum: 1 })),\n }, { additionalProperties: false })),\n }, { additionalProperties: false }),\n input: Type.Unknown(),\n observe: Type.Optional(jevObserveSchema),\n}, { additionalProperties: false });\nconst idSchema = Type.Object({ id: Type.String({ minLength: 1, maxLength: 128 }) }, { additionalProperties: false });\nconst statusSchema = Type.Object({\n id: Type.Optional(Type.String({ minLength: 1, maxLength: 128 })),\n after: Type.Optional(Type.Integer({ minimum: 0 })),\n}, { additionalProperties: false });\nexport const jevAdviceSchema = Type.Object({\n id: Type.String({ minLength: 1, maxLength: 128 }),\n eventId: Type.String({ minLength: 1, maxLength: 256 }),\n message: Type.String({ minLength: 1, maxLength: 2000 }),\n}, { additionalProperties: false });\nexport const JEV_ACTION_DESCRIPTORS: FabricActionDescriptor[] = [\n { name: \"evaluate\", description: \"Ask Jev typed Choice, Noul (probability of yes), and Score questions over shared state. No generated text. Batch independent questions. Sends state to TypeSafe and consumes API credits; no automatic retries.\", inputSchema: jevRequestSchema as unknown as Record<string, unknown>, risk: \"network\", effect: { kind: \"emission\", resources: [\"typesafe:inference\"], ordering: \"unknown\" } },\n { name: \"run\", description: \"Run an isolated TypeScript System One program in the foreground. Returns a terminal run envelope with schema-validated result or error. Globals: input, jev.evaluate, program.sleep(ms), program.emit(value), and Fabric tools restricted to exact requires. Loops are supported; no host imports or secrets.\", inputSchema: jevLaunchSchema as unknown as Record<string, unknown>, risk: \"execute\" },\n { name: \"spawn\", description: \"Launch a session-owned background Jev program. Optional observe requires read approval and subscribes to Main lifecycle events; program.nextEvent waits without polling and shares only explicitly selected bounded context. program.advise needs observe.delivery and requires jev.advise. Use status, wait/join, and stop; not restart-durable.\", inputSchema: jevLaunchSchema as unknown as Record<string, unknown>, risk: \"execute\" },\n { name: \"status\", description: \"Without id: credential configuration status (never retrieves secrets) and run summaries. With id: state, usage, bounded events after sequence, logs, result/error. Retains at most 64 events; nextSequence allows detecting gaps.\", inputSchema: statusSchema as unknown as Record<string, unknown>, risk: \"read\" },\n { name: \"wait\", description: \"Wait for a background Jev program's terminal run envelope. Cancelling the wait does not cancel the program.\", inputSchema: idSchema as unknown as Record<string, unknown>, risk: \"read\" },\n { name: \"join\", description: \"Alias for jev.wait: wait for a background Jev program's terminal run envelope without cancelling the program when the wait is cancelled.\", inputSchema: idSchema as unknown as Record<string, unknown>, risk: \"read\" },\n { name: \"advise\", description: \"Deliver bounded advice from an observing Jev run to Main. Requires its current consumed eventId, explicit observe.delivery, freshness, message budget, and the per-input feedback gate. The program helper program.advise supplies its own id. Subject to agent approvals; returns delivered and an optional suppression reason.\", inputSchema: jevAdviceSchema as unknown as Record<string, unknown>, risk: \"agent\", effect: { kind: \"emission\", resources: [\"main:messages\"], ordering: \"ordered\" } },\n { name: \"stop\", description: \"Cancel a Jev program and await sandbox cleanup. Idempotent for retained terminal runs; already-issued external effects cannot be undone.\", inputSchema: idSchema as unknown as Record<string, unknown>, risk: \"execute\" },\n];\n\nexport class JevProvider implements FabricProvider {\n readonly name = \"jev\";\n readonly description = \"TypeSafe System One judgments and foreground/background reactive TypeScript programs\";\n readonly manager: JevProgramManager;\n readonly client: JevClient;\n readonly route: JevRoute;\n constructor(options: JevManagerOptions & { credentialSource?: JevCredentialSource }, client?: JevClient) {\n this.manager = new JevProgramManager(options);\n this.route = resolveJevModelRoute(options.config.jev.model).route;\n this.client = client ?? new JevClient(options.config.jev, undefined,\n new JevCredentials(options.config.jev.credentialCommand, process.env, options.credentialSource, this.route.envKeys), this.route);\n }\n async list(request: FabricProviderListRequest): Promise<FabricActionDescriptor[]> {\n const query = request.query?.toLowerCase();\n return JEV_ACTION_DESCRIPTORS.filter(d => !query || `${d.name} ${d.description}`.toLowerCase().includes(query));\n }\n async describe(name: string): Promise<FabricActionDescriptor | undefined> { return JEV_ACTION_DESCRIPTORS.find(d => d.name === name); }\n async invoke(name: string, args: Record<string, unknown>, context: FabricInvocationContext): Promise<unknown> {\n const descriptor = await this.describe(name);\n if (!descriptor) throw new Error(`Unknown Jev action: ${name}`);\n const invalid = validationMessage(descriptor.inputSchema, args);\n if (invalid) throw new Error(`Invalid jev.${name} arguments: ${invalid}`);\n switch (name) {\n case \"evaluate\": return this.client.evaluate(args as unknown as JevRequest, context.signal ?? new AbortController().signal);\n case \"run\": return this.manager.launch(args as unknown as JevLaunch, context, false);\n case \"spawn\": return this.manager.launch(args as unknown as JevLaunch, context, true);\n case \"status\": return typeof args.id === \"string\" ? this.manager.status(args.id, args.after as number | undefined) : {\n credentials: this.client.credentials.status(), model: this.client.config.model, route: this.route.id, runs: this.manager.list(),\n };\n case \"join\":\n case \"wait\": return this.manager.wait(args.id as string, context.signal);\n case \"advise\": return this.manager.advise(args.id as string, args.eventId as string, args.message as string);\n case \"stop\": return this.manager.stop(args.id as string);\n }\n }\n async close(): Promise<void> { await this.manager.close(); this.client.close(); }\n}\n", "import { randomUUID } from \"node:crypto\";\nimport { setTimeout as delay } from \"node:timers/promises\";\nimport { runAbortable } from \"../async-settlement.js\";\nimport type { ActionRegistry, FabricCapabilityViewLease, FabricCallAudit } from \"../core/action-registry.js\";\nimport { ApprovalController, FabricSessionApprovals } from \"../core/approval-controller.js\";\nimport { FabricAutoApprovalClassifier } from \"../core/auto-approval-classifier.js\";\nimport type { FabricConfig } from \"../config.js\";\nimport type { FabricInvocationContext } from \"../protocol.js\";\nimport type { JevLaunch, JevRunInfo, JevJson, JevResponse } from \"./types.js\";\nimport { checkSchema, checkValue, jsonText, object } from \"./validation.js\";\nimport { checkObserve, type JevObservationHost, type JevSubscription } from \"./observation.js\";\n\ninterface Run {\n info: JevRunInfo;\n controller: AbortController;\n done: Promise<JevRunInfo>;\n observation: JevSubscription | undefined;\n}\nexport interface JevManagerOptions {\n registry: ActionRegistry;\n config: FabricConfig;\n observationHost?: JevObservationHost | undefined;\n authorize?(ref: string, parentToolCallId: string): Promise<void>;\n}\nconst prelude = `const input = JSON.parse(\u03C0.__jevInput);\nconst program = Object.freeze({\n sleep: (ms: number): Promise<unknown> => tools.call({ ref: \"jev.$sleep\", args: { ms } }),\n emit: (value: unknown): Promise<unknown> => tools.call({ ref: \"jev.$emit\", args: { value } }),\n nextEvent: (): Promise<FabricJevHostEvent> => tools.call({ ref: \"jev.$nextEvent\" }) as Promise<FabricJevHostEvent>,\n advise: (args: {eventId: string; message: string}): Promise<FabricJevAdviceResult> => tools.call({ ref: \"jev.advise\", args: {...args, id: \u03C0.__jevRunId} }) as Promise<FabricJevAdviceResult>,\n});\\n`;\n\nexport class JevProgramManager {\n readonly #runs = new Map<string, Run>();\n readonly #approvals = new FabricSessionApprovals();\n #closed = false;\n #starting = 0;\n constructor(readonly options: JevManagerOptions) {}\n list() {\n return [...this.#runs.values()].map(({ info }) => ({\n id: info.id, name: info.name, state: info.state, background: info.background,\n startedAt: info.startedAt, evaluations: info.evaluations, toolCalls: info.toolCalls,\n ...(info.observation ? { observation: structuredClone(info.observation) } : {}),\n }));\n }\n #get(id: string): Run {\n const run = this.#runs.get(id);\n if (!run) throw new Error(\"Unknown or expired Jev run ID\");\n return run;\n }\n status(id: string, after = 0): JevRunInfo {\n const info = this.#get(id).info;\n return structuredClone({ ...info, events: info.events.filter(e => e.sequence > after) });\n }\n async wait(id: string, signal?: AbortSignal): Promise<JevRunInfo> {\n return structuredClone(await runAbortable(signal, () => this.#get(id).done));\n }\n /** Alias for wait. */\n join(id: string, signal?: AbortSignal): Promise<JevRunInfo> {\n return this.wait(id, signal);\n }\n async stop(id: string): Promise<JevRunInfo> {\n const run = this.#get(id);\n if (run.info.state === \"running\") run.controller.abort(new Error(\"Jev run stopped\"));\n return structuredClone(await run.done);\n }\n advise(id: string, eventId: string, message: string) {\n if (typeof message !== \"string\" || !message.trim() || message.length > 2000 || typeof eventId !== \"string\" || eventId.length > 256)\n throw new Error(\"Advice requires a current eventId and 1\u20132000 message characters\");\n const run = this.#get(id);\n if (!run.observation) throw new Error(\"Jev run has no observation subscription\");\n return run.observation.advise(eventId, message);\n }\n async launch(request: JevLaunch, context: FabricInvocationContext, background: boolean): Promise<JevRunInfo> {\n const { config, registry } = this.options;\n if (this.#closed) throw new Error(\"Jev program manager is closed\");\n if (this.#starting + [...this.#runs.values()].filter(r => r.info.state === \"running\").length >= config.jev.maxConcurrentRuns)\n throw new Error(\"Jev concurrent run limit reached\");\n context.signal?.throwIfAborted();\n this.#starting++;\n let lease: FabricCapabilityViewLease | undefined;\n let starting = true;\n try {\n const { program: definition, input, observe } = structuredClone(request);\n const observationHost = this.options.observationHost;\n const observationRevision = observationHost?.revision;\n if (observe !== undefined) {\n checkObserve(observe);\n if (!background) throw new Error(\"Observation requires jev.spawn; foreground runs cannot wait for their own turn to end\");\n if (!observationHost) throw new Error(\"Main lifecycle observation is unavailable in this host\");\n if (context.extensionContext.sessionManager?.getSessionId() !== observationHost.sessionId)\n throw new Error(\"Jev observation is scoped to its owning Main session\");\n }\n checkSchema(definition.inputSchema);\n checkSchema(definition.outputSchema);\n checkValue(definition.inputSchema, input, \"Program input\");\n const requires = [...new Set(definition.requires)];\n for (const ref of requires) {\n if (!/^[a-z][a-z0-9_-]*\\.[a-zA-Z0-9_.$-]+$/.test(ref) || (ref.startsWith(\"jev.\") && ref !== \"jev.evaluate\" && ref !== \"jev.advise\"))\n throw new Error(\"Programs require exact action refs; recursive Jev lifecycle calls are not allowed\");\n if (context.capabilityView && !Object.hasOwn(context.capabilityView.bindings, ref))\n throw new Error(`Jev program cannot widen its caller's capabilities: ${ref}`);\n if (!config.fullCodeMode && (ref.startsWith(\"pi.\") || ref.startsWith(\"extensions.\")))\n throw new Error(\"Full-code tool access is disabled\");\n }\n lease = await registry.acquireCapabilityView(requires, context);\n if (!lease.satisfied || !lease.view) throw new Error(`Missing Jev program capabilities: ${lease.missing.join(\", \")}`);\n if (context.capabilityView) for (const ref of requires) {\n const before = context.capabilityView.bindings[ref]!;\n const after = lease.view.bindings[ref]!;\n if (before.providerBindingId !== after.providerBindingId || before.descriptorHash !== after.descriptorHash)\n throw new Error(\"Caller capability generation changed; relaunch with a fresh commitment\");\n }\n const { TypeScriptKernelRuntime } = await import(\"../runtime/typescript-kernel.js\");\n const runtime = new TypeScriptKernelRuntime(\"quickjs\");\n const sources = await registry.guestTypeSources({ ...context, capabilityView: lease.view });\n const { code, checked } = runtime.prepare(prelude + definition.code, true, [], sources, [], true);\n if (checked.errors.length) throw new Error(`Jev program typecheck failed: ${checked.errors.map(e => e.message).join(\"; \").slice(0, 2000)}`);\n const approval = new ApprovalController(config.approvals, context.extensionContext, this.#approvals, new FabricAutoApprovalClassifier(() => config.jev));\n if (observe) await approval.approve({\n ref: \"jev.spawn\", provider: \"jev\", name: \"spawn\",\n description: \"Observe future Main lifecycle events and explicitly selected content for a bounded Jev program\",\n inputSchema: {}, risk: \"read\",\n }, { observe });\n if (this.#closed) throw new Error(\"Jev program manager is closed\");\n context.signal?.throwIfAborted();\n if (observe && observationHost!.revision !== observationRevision)\n throw new Error(\"Main lifecycle changed while preparing the observer; relaunch explicitly with current context\");\n const limits = definition.limits ?? {};\n const bounded = (value: number | undefined, fallback: number, ceiling: number) => Math.min(value ?? fallback, ceiling);\n const timeoutMs = bounded(limits.timeoutMs, 60_000, config.jev.maxDurationMs);\n const maxEvaluations = bounded(limits.maxEvaluations, 100, config.jev.maxEvaluations);\n const maxToolCalls = bounded(limits.maxToolCalls, 1000, config.jev.maxToolCalls);\n const maxTokens = bounded(limits.maxTokens, 100_000, config.jev.maxTokens);\n const id = randomUUID();\n const controller = new AbortController();\n const info: JevRunInfo = {\n id, name: definition.name, state: \"running\", background, startedAt: Date.now(),\n evaluations: 0, toolCalls: 0, usage: { input_tokens: 0, output_tokens: 0 },\n events: [], nextSequence: 1, logs: [],\n };\n let budgetFailure: string | undefined;\n const failBudget = (message: string): never => {\n budgetFailure = message;\n queueMicrotask(() => controller.abort(new Error(message)));\n throw new Error(message);\n };\n const observation = observe ? observationHost!.subscribe(observe, { id, name: definition.name }, controller) : undefined;\n if (observation) info.observation = observation.stats;\n const runLease = lease;\n lease = undefined;\n const abort = () => controller.abort(new Error(\"Foreground caller cancelled\"));\n if (!background) context.signal?.addEventListener(\"abort\", abort, { once: true });\n let timedOut = false;\n const timer = setTimeout(() => { timedOut = true; controller.abort(new Error(\"Jev deadline exceeded\")); }, timeoutMs);\n let evaluating = false;\n const audits: FabricCallAudit[] = [];\n const emit = (value: unknown) => {\n jsonText(value, 4096, \"Program event\");\n info.events.push({ sequence: info.nextSequence++, at: Date.now(), value: value as JevJson });\n if (info.events.length > 64) info.events.shift();\n };\n const run: Run = { info, controller, observation, done: undefined! };\n this.#runs.set(id, run);\n this.#starting--;\n starting = false;\n this.#prune();\n // Yield before execution so spawn returns without running a controller tick inline.\n run.done = (async () => {\n try {\n await delay(0, undefined, { signal: controller.signal });\n const result = await runtime.execute(code, async (rawRef, rawArgs, signal) => {\n signal.throwIfAborted();\n controller.signal.throwIfAborted();\n if (budgetFailure) throw new Error(budgetFailure);\n if (++info.toolCalls > maxToolCalls) return failBudget(\"Jev tool-call budget exhausted\");\n const ref = rawRef === \"fabric.$call\" ? rawArgs.ref : rawRef;\n const args = rawRef === \"fabric.$call\" ? rawArgs.args ?? {} : rawArgs;\n if (typeof ref !== \"string\" || !object(args)) throw new Error(\"Invalid Jev program tool call\");\n if (ref === \"jev.$sleep\") {\n if (typeof args.ms !== \"number\" || !Number.isFinite(args.ms) || args.ms < 0 || args.ms > timeoutMs) throw new Error(\"Invalid program.sleep duration\");\n await delay(args.ms, undefined, { signal });\n return null;\n }\n if (ref === \"jev.$emit\") { emit(args.value); return null; }\n if (ref === \"jev.$nextEvent\") {\n if (!observation) throw new Error(\"program.nextEvent requires observe on jev.spawn\");\n return observation.next();\n }\n if (ref === \"jev.advise\" && args.id !== id) throw new Error(\"A Jev program can only advise through its own run\");\n if (!Object.hasOwn(runLease.view!.bindings, ref)) throw new Error(`Capability not granted to Jev program: ${ref}`);\n if (ref === \"jev.evaluate\") {\n if (evaluating) throw new Error(\"One Jev evaluation may be in flight per program; batch independent questions in one request\");\n if (info.evaluations >= maxEvaluations || info.usage.input_tokens + info.usage.output_tokens >= maxTokens)\n return failBudget(\"Jev inference budget exhausted\");\n info.evaluations++;\n evaluating = true;\n }\n try {\n const value = await registry.invoke(ref, args, {\n cwd: context.cwd, extensionContext: context.extensionContext, signal, capabilityView: runLease.view!,\n ...(context.effectPolicy ? { effectPolicy: context.effectPolicy } : {}),\n parentToolCallId: `jev:${id}`, nestedToolCallId: `jev:${id}:${info.toolCalls}`,\n update() {}, activity() {}, attachMedia() {}, attachPreview() {},\n authorize: async action => { await this.options.authorize?.(action.ref, `jev:${id}`); },\n approve: async (action, prepared) => {\n if (action.ref === \"schema.commit\") {\n await approval.approve({ ...action, risk: \"write\" }, prepared);\n await approval.approve({ ...action, risk: \"execute\" }, prepared);\n } else await approval.approve(action, prepared);\n },\n audits, maxResultChars: ref === \"jev.evaluate\" ? 1_048_576 : config.executor.maxNestedResultChars,\n });\n if (ref === \"jev.evaluate\") {\n const response = value as JevResponse;\n info.usage.input_tokens += response.usage.input_tokens;\n info.usage.output_tokens += response.usage.output_tokens;\n if (info.usage.input_tokens + info.usage.output_tokens > maxTokens)\n return failBudget(\"Jev reported-token budget exhausted\");\n }\n return value;\n } finally {\n if (ref === \"jev.evaluate\") evaluating = false;\n // Keep audit retention bounded even in a long-lived loop.\n if (audits.length > 64) audits.splice(0, audits.length - 64);\n }\n }, {\n timeoutMs, memoryLimitBytes: Math.min(config.executor.memoryLimitBytes, 64 * 1024 * 1024),\n maxCpuSliceMs: 100, maxPendingTimers: 128, maxLogChars: 4096, strings: { __jevInput: JSON.stringify(input), __jevRunId: id }, signal: controller.signal,\n });\n info.logs = result.logs;\n if (budgetFailure) { info.state = \"failed\"; info.error = budgetFailure; }\n else if (timedOut || result.terminationReason === \"timed_out\") { info.state = \"timed_out\"; info.error = result.error ?? \"Jev deadline exceeded\"; }\n else if (controller.signal.aborted || result.terminationReason === \"aborted\") { info.state = \"cancelled\"; }\n else if (result.terminationReason !== \"completed\") { info.state = \"failed\"; info.error = result.error ?? \"Jev program failed\"; }\n else {\n checkValue(definition.outputSchema, result.value, \"Program output\");\n info.result = result.value;\n info.state = \"completed\";\n }\n } catch (error) {\n info.state = budgetFailure ? \"failed\" : timedOut ? \"timed_out\" : controller.signal.aborted ? \"cancelled\" : \"failed\";\n info.error = (budgetFailure ?? (error instanceof Error ? error.message : \"Jev program failed\")).slice(0, 2000);\n } finally {\n clearTimeout(timer);\n observation?.close();\n context.signal?.removeEventListener(\"abort\", abort);\n await runLease.release();\n info.endedAt = Date.now();\n this.#prune();\n }\n return info;\n })();\n return background ? this.status(id) : structuredClone(await run.done);\n } finally {\n if (starting) this.#starting--;\n await lease?.release();\n }\n }\n #prune(): void {\n for (const [id, run] of this.#runs) {\n if (this.#runs.size <= this.options.config.jev.maxRetainedRuns) break;\n if (run.info.state !== \"running\") this.#runs.delete(id);\n }\n }\n stopAll(): void {\n for (const run of this.#runs.values()) if (run.info.state === \"running\") run.controller.abort(new Error(\"Jev provider closed\"));\n }\n async close(): Promise<void> {\n this.#closed = true;\n // Terminal runs are already out of QuickJS and may be releasing the last\n // provider lease right now. Waiting for those here would self-deadlock.\n const running = [...this.#runs.values()].filter(r => r.info.state === \"running\");\n this.stopAll();\n await Promise.all(running.map(r => r.done));\n this.#runs.clear();\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -18,9 +18,11 @@ import {
|
|
|
18
18
|
} from "./chunk-MGWQOKBV.js";
|
|
19
19
|
import {
|
|
20
20
|
DEFAULT_JEV_CONFIG,
|
|
21
|
-
normalizeJevApprovalModel,
|
|
22
21
|
normalizeJevConfig
|
|
23
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-QXP2OK5O.js";
|
|
23
|
+
import {
|
|
24
|
+
normalizeJevApprovalModel
|
|
25
|
+
} from "./chunk-CHR7QKWE.js";
|
|
24
26
|
import {
|
|
25
27
|
PI_CORE_TOOL_NAME_SET
|
|
26
28
|
} from "./chunk-YU62DDKK.js";
|
|
@@ -1466,4 +1468,4 @@ export {
|
|
|
1466
1468
|
loadFabricConfig,
|
|
1467
1469
|
saveFabricConfig
|
|
1468
1470
|
};
|
|
1469
|
-
//# sourceMappingURL=chunk-
|
|
1471
|
+
//# sourceMappingURL=chunk-KQUZV4NA.js.map
|