pi-fabric 0.92.34 → 0.92.36
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 +1 -1
- package/dist/agents/completion-inbox.d.ts +15 -0
- package/dist/agents/completion-inbox.d.ts.map +1 -0
- package/dist/agents/manager.d.ts +1 -0
- package/dist/agents/manager.d.ts.map +1 -1
- package/dist/agents.js +1 -1
- package/dist/chunks/chunk-B54Z662X.js +127 -0
- package/dist/chunks/chunk-B54Z662X.js.map +7 -0
- package/dist/chunks/{chunk-U5PRQ6NL.js → chunk-BJGZESBD.js} +21 -4
- package/dist/chunks/chunk-BJGZESBD.js.map +7 -0
- package/dist/chunks/{chunk-IOE5RWJ4.js → chunk-F5SWLHBF.js} +6 -6
- package/dist/chunks/{chunk-K3PMKWYO.js → chunk-GTLOT23W.js} +8 -6
- package/dist/chunks/chunk-GTLOT23W.js.map +7 -0
- package/dist/chunks/{chunk-YQLJMJ7L.js → chunk-IK46M2WL.js} +2 -2
- package/dist/chunks/{chunk-KQUZV4NA.js → chunk-MDOBLRPL.js} +3 -3
- package/dist/chunks/{chunk-U5IEAHUY.js → chunk-MW5VI7IW.js} +124 -25
- package/dist/chunks/chunk-MW5VI7IW.js.map +7 -0
- package/dist/chunks/{chunk-RWDKJ24D.js → chunk-NHMICIEU.js} +2 -2
- package/dist/chunks/{chunk-Z7ZAT43C.js → chunk-PXXRY3TN.js} +7 -4
- package/dist/chunks/chunk-PXXRY3TN.js.map +7 -0
- package/dist/chunks/{chunk-YZDC2WTU.js → chunk-TGAVMUOS.js} +3 -3
- package/dist/chunks/{chunk-JNMTTJMQ.js → chunk-TX6E5W7H.js} +1 -1
- package/dist/chunks/{chunk-JNMTTJMQ.js.map → chunk-TX6E5W7H.js.map} +1 -1
- package/dist/chunks/{chunk-QXP2OK5O.js → chunk-UR2K6WK6.js} +2 -2
- package/dist/chunks/{chunk-T3RMRIF4.js → chunk-WHBJDTCR.js} +2 -2
- package/dist/chunks/{chunk-F4J7KGX4.js → chunk-Y65V2MAP.js} +2 -2
- package/dist/components/configuration.js +4 -4
- package/dist/core/approval-controller.d.ts +5 -1
- package/dist/core/approval-controller.d.ts.map +1 -1
- package/dist/core/auto-approval-classifier.d.ts +11 -0
- 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 +203 -46
- package/dist/fabric-runtime-state.js.map +4 -4
- package/dist/index.js +4 -4
- package/dist/jev/client.js +3 -3
- package/dist/jev/model-key.d.ts +3 -2
- package/dist/jev/model-key.d.ts.map +1 -1
- package/dist/jev/observation.js +3 -3
- package/dist/jev/routes.d.ts +21 -5
- package/dist/jev/routes.d.ts.map +1 -1
- package/dist/jev.d.ts +1 -1
- package/dist/jev.d.ts.map +1 -1
- package/dist/jev.js +15 -7
- package/dist/providers/agents-actions.d.ts.map +1 -1
- package/dist/providers/agents-provider.d.ts.map +1 -1
- package/dist/providers/jev-provider.js +7 -7
- package/dist/residency/actor-client.js +2 -2
- package/dist/residency/client.d.ts +3 -0
- package/dist/residency/client.d.ts.map +1 -1
- package/dist/residency/host.d.ts.map +1 -1
- package/dist/residency/host.js +6 -6
- package/dist/residency/pi-entry.js +6 -6
- package/dist/residency/protocol.d.ts +4 -0
- package/dist/residency/protocol.d.ts.map +1 -1
- package/dist/runtime/monty-runtime.js +3 -3
- package/dist/ui/settings.js +8 -8
- package/dist/ui/settings.js.map +2 -2
- package/docs/agents.md +8 -0
- package/docs/configuration.md +8 -8
- package/docs/jev.md +5 -3
- package/package.json +1 -1
- package/skillsets/python/fabric-exec/SKILL.md +1 -1
- package/skillsets/python/fabric-exec/references/agents.md +1 -1
- package/skillsets/python/fabric-foreman/SKILL.md +1 -1
- package/skillsets/python/fabric-jev/SKILL.md +2 -2
- package/skillsets/typescript/fabric-exec/SKILL.md +1 -1
- package/skillsets/typescript/fabric-exec/references/agents.md +1 -1
- package/skillsets/typescript/fabric-foreman/SKILL.md +1 -1
- package/skillsets/typescript/fabric-jev/SKILL.md +2 -2
- package/dist/chunks/chunk-CHR7QKWE.js +0 -102
- package/dist/chunks/chunk-CHR7QKWE.js.map +0 -7
- package/dist/chunks/chunk-K3PMKWYO.js.map +0 -7
- package/dist/chunks/chunk-U5IEAHUY.js.map +0 -7
- package/dist/chunks/chunk-U5PRQ6NL.js.map +0 -7
- package/dist/chunks/chunk-Z7ZAT43C.js.map +0 -7
- /package/dist/chunks/{chunk-IOE5RWJ4.js.map → chunk-F5SWLHBF.js.map} +0 -0
- /package/dist/chunks/{chunk-YQLJMJ7L.js.map → chunk-IK46M2WL.js.map} +0 -0
- /package/dist/chunks/{chunk-KQUZV4NA.js.map → chunk-MDOBLRPL.js.map} +0 -0
- /package/dist/chunks/{chunk-RWDKJ24D.js.map → chunk-NHMICIEU.js.map} +0 -0
- /package/dist/chunks/{chunk-YZDC2WTU.js.map → chunk-TGAVMUOS.js.map} +0 -0
- /package/dist/chunks/{chunk-QXP2OK5O.js.map → chunk-UR2K6WK6.js.map} +0 -0
- /package/dist/chunks/{chunk-T3RMRIF4.js.map → chunk-WHBJDTCR.js.map} +0 -0
- /package/dist/chunks/{chunk-F4J7KGX4.js.map → chunk-Y65V2MAP.js.map} +0 -0
package/README.md
CHANGED
|
@@ -145,7 +145,7 @@ See the [interface & commands reference](docs/interface.md) for every view, keyb
|
|
|
145
145
|
- [Interface & commands](docs/interface.md): dashboard, settings, keybindings, slash commands, and headless runs.
|
|
146
146
|
- [Agents, actors & mesh](docs/agents.md): model handoff, `/fabric prewalk`, runners, transports, actors, councils, recursive queries, and durable coordination.
|
|
147
147
|
- [Durable residency through Pi](docs/residency-runtime.md): background host lifecycle and the Pi-runtime launcher boundary.
|
|
148
|
-
- [Jev System One programs](docs/jev.md): typed judgments, `/login jev` or
|
|
148
|
+
- [Jev System One programs](docs/jev.md): typed judgments, `/login jev`, `openrouter`, or `vercel-ai-gateway` credentials, foreground/background loops, budgets, and optional Browser Harness CDP integration.
|
|
149
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.
|
|
150
150
|
- [External providers](docs/providers.md): the versioned provider protocol for extensions.
|
|
151
151
|
- [Architecture & security](docs/architecture.md): the host bridge, sandboxing, tool-call robustness, and limits.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
import type { AgentRunResult } from "./types.js";
|
|
3
|
+
export declare const AGENT_COMPLETION_MESSAGE_TYPE = "pi-fabric-agent-complete";
|
|
4
|
+
type Completion = Pick<AgentRunResult, "id" | "name" | "status" | "text" | "error" | "startedAt" | "finishedAt">;
|
|
5
|
+
/** Own notifications until the tool batch ends, so a late wait can still retract them. */
|
|
6
|
+
export declare class AgentCompletionInbox {
|
|
7
|
+
#private;
|
|
8
|
+
readonly pi: ExtensionAPI;
|
|
9
|
+
constructor(pi: ExtensionAPI, context: ExtensionContext);
|
|
10
|
+
enqueue(result: Completion, delivered?: () => void): void;
|
|
11
|
+
acknowledge(id: string): void;
|
|
12
|
+
close(): void;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=completion-inbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion-inbox.d.ts","sourceRoot":"","sources":["../../src/agents/completion-inbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,6BAA6B,6BAA6B,CAAC;AAKxE,KAAK,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;AAQjH,0FAA0F;AAC1F,qBAAa,oBAAoB;;IASnB,QAAQ,CAAC,EAAE,EAAE,YAAY;gBAAhB,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB;IAwChE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAwBzD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAK7B,KAAK,IAAI,IAAI;CAkDd"}
|
package/dist/agents/manager.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export declare class AgentManager {
|
|
|
34
34
|
identityId?: string;
|
|
35
35
|
retention?: FabricRetentionConfig;
|
|
36
36
|
onBackgroundComplete?: (result: AgentRunResult) => void;
|
|
37
|
+
onResultConsumed?: (id: string) => void;
|
|
37
38
|
onLifecycle?: (event: FabricLifecyclePublishRequest) => void;
|
|
38
39
|
preparePiModel?: (model: string | undefined) => Promise<string | void>;
|
|
39
40
|
resolveParticipantGuidance?: AgentParticipantGuidanceResolver;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/agents/manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAOzD,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EAEtB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAU3B,OAAO,KAAK,EAEV,kBAAkB,EAClB,cAAc,EACd,eAAe,EAEf,cAAc,EACd,eAAe,EACf,cAAc,EAEd,gBAAgB,EAKjB,MAAM,YAAY,CAAC;AAuBpB,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,uBAAuB,CAAC;AAoB/B,eAAO,MAAM,uBAAuB,GAClC,qBAAqB,MAAM,EAC3B,qBAAqB,MAAM,KAC1B,MAYF,CAAC;AAEF,UAAU,+BAA+B;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,KAAK,gCAAgC,GAAG,CACtC,OAAO,EAAE,+BAA+B,KACrC,MAAM,GAAG,SAAS,CAAC;AAExB,8EAA8E;AAC9E,eAAO,MAAM,eAAe,GAAI,WAAW,MAAM,EAAE,eAAe,MAAM,KAAG,MAoB1E,CAAC;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/agents/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/agents.js
CHANGED
|
@@ -0,0 +1,127 @@
|
|
|
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 JEV_VERCEL_MODEL_PREFIX = "pi-fabric/vercel-ai-gateway/";
|
|
5
|
+
var ROUTE_PREFIXES = [
|
|
6
|
+
["typesafe", JEV_TYPESAFE_MODEL_PREFIX],
|
|
7
|
+
["openrouter", JEV_OPENROUTER_MODEL_PREFIX],
|
|
8
|
+
["vercel-ai-gateway", JEV_VERCEL_MODEL_PREFIX]
|
|
9
|
+
];
|
|
10
|
+
var normalizeJevApprovalModel = (key) => key?.startsWith("jev/") ? `${JEV_TYPESAFE_MODEL_PREFIX}${key.slice(4)}` : key;
|
|
11
|
+
var parseJevApprovalModel = (key) => {
|
|
12
|
+
const normalized = normalizeJevApprovalModel(key);
|
|
13
|
+
if (!normalized) return void 0;
|
|
14
|
+
for (const [route, prefix] of ROUTE_PREFIXES) {
|
|
15
|
+
if (normalized.startsWith(prefix)) return { route, model: normalized.slice(prefix.length) };
|
|
16
|
+
}
|
|
17
|
+
return void 0;
|
|
18
|
+
};
|
|
19
|
+
var isJevApprovalModel = (key) => parseJevApprovalModel(key) !== void 0;
|
|
20
|
+
|
|
21
|
+
// src/jev/routes.ts
|
|
22
|
+
var JEV_TYPESAFE_MODELS = ["jev-latest", "jev-1.13", "jev-1.13.0", "jev-preview"];
|
|
23
|
+
var JEV_TYPESAFE_ROUTE = {
|
|
24
|
+
id: "typesafe",
|
|
25
|
+
label: "TypeSafe",
|
|
26
|
+
endpoint: "https://api.typesafe.ai/v1/systemone",
|
|
27
|
+
providerId: "jev",
|
|
28
|
+
envKeys: ["TYPESAFE_API_KEY"],
|
|
29
|
+
modelPrefix: JEV_TYPESAFE_MODEL_PREFIX,
|
|
30
|
+
aliases: JEV_TYPESAFE_MODELS
|
|
31
|
+
};
|
|
32
|
+
var JEV_OPENROUTER_MODELS = {
|
|
33
|
+
"jev-latest": "~typesafe/jev-latest",
|
|
34
|
+
"jev-1.13": "typesafe/jev-1.13"
|
|
35
|
+
};
|
|
36
|
+
var JEV_OPENROUTER_ROUTE = {
|
|
37
|
+
id: "openrouter",
|
|
38
|
+
label: "OpenRouter",
|
|
39
|
+
endpoint: "https://openrouter.ai/api/alpha/decisions",
|
|
40
|
+
providerId: "openrouter",
|
|
41
|
+
envKeys: ["OPENROUTER_API_KEY", "TYPESAFE_OPENROUTER_API_KEY"],
|
|
42
|
+
modelPrefix: JEV_OPENROUTER_MODEL_PREFIX,
|
|
43
|
+
aliases: Object.keys(JEV_OPENROUTER_MODELS)
|
|
44
|
+
};
|
|
45
|
+
var JEV_VERCEL_MODELS = {
|
|
46
|
+
"jev-latest": "typesafe-ai/jev"
|
|
47
|
+
};
|
|
48
|
+
var JEV_VERCEL_ROUTE = {
|
|
49
|
+
id: "vercel-ai-gateway",
|
|
50
|
+
label: "Vercel AI Gateway",
|
|
51
|
+
endpoint: "https://ai-gateway.vercel.sh/typesafe/v1/systemone",
|
|
52
|
+
providerId: "vercel-ai-gateway",
|
|
53
|
+
envKeys: ["AI_GATEWAY_API_KEY"],
|
|
54
|
+
modelPrefix: JEV_VERCEL_MODEL_PREFIX,
|
|
55
|
+
aliases: Object.keys(JEV_VERCEL_MODELS)
|
|
56
|
+
};
|
|
57
|
+
var JEV_ROUTES = {
|
|
58
|
+
"typesafe": JEV_TYPESAFE_ROUTE,
|
|
59
|
+
"openrouter": JEV_OPENROUTER_ROUTE,
|
|
60
|
+
"vercel-ai-gateway": JEV_VERCEL_ROUTE
|
|
61
|
+
};
|
|
62
|
+
var JEV_ROUTE_ORDER = [JEV_TYPESAFE_ROUTE, JEV_OPENROUTER_ROUTE, JEV_VERCEL_ROUTE];
|
|
63
|
+
var JEV_PROVIDER_PREFIX = "pi-fabric/";
|
|
64
|
+
var jevClassifierKey = (route, model) => `${route.modelPrefix}${model}`;
|
|
65
|
+
var TYPESAFE_MODEL = /^[a-zA-Z0-9._-]{1,128}$/;
|
|
66
|
+
var isJevOpenRouterModelId = (model) => /^~?typesafe\/[a-zA-Z0-9._-]{1,120}$/.test(model);
|
|
67
|
+
var isJevVercelModelId = (model) => /^typesafe-ai\/[a-zA-Z0-9._-]{1,120}$/.test(model);
|
|
68
|
+
var isJevModelId = (model) => TYPESAFE_MODEL.test(model) || isJevOpenRouterModelId(model) || isJevVercelModelId(model);
|
|
69
|
+
var resolveJevModelRoute = (model) => {
|
|
70
|
+
if (isJevOpenRouterModelId(model)) return { route: JEV_OPENROUTER_ROUTE, model };
|
|
71
|
+
if (isJevVercelModelId(model)) return { route: JEV_VERCEL_ROUTE, model };
|
|
72
|
+
return { route: JEV_TYPESAFE_ROUTE, model };
|
|
73
|
+
};
|
|
74
|
+
var resolveJevUpstreamModel = (route, model) => {
|
|
75
|
+
if (route.id === "openrouter") return JEV_OPENROUTER_MODELS[model] ?? (isJevOpenRouterModelId(model) ? model : void 0);
|
|
76
|
+
if (route.id === "vercel-ai-gateway") return JEV_VERCEL_MODELS[model] ?? (isJevVercelModelId(model) ? model : void 0);
|
|
77
|
+
return TYPESAFE_MODEL.test(model) ? model : void 0;
|
|
78
|
+
};
|
|
79
|
+
var unavailableModelMessage = (route, model) => {
|
|
80
|
+
if (route.id === "openrouter") return `OpenRouter serves ${Object.keys(JEV_OPENROUTER_MODELS).join(", ")}; "${model}" is not available`;
|
|
81
|
+
if (route.id === "vercel-ai-gateway") return `Vercel AI Gateway serves ${Object.keys(JEV_VERCEL_MODELS).join(", ")}; "${model}" is not available`;
|
|
82
|
+
return `Invalid Jev auto-approval model; use ${JEV_TYPESAFE_MODEL_PREFIX}<model-id>`;
|
|
83
|
+
};
|
|
84
|
+
var resolveJevClassifierTarget = (key) => {
|
|
85
|
+
const parsed = parseJevApprovalModel(key);
|
|
86
|
+
if (!parsed) {
|
|
87
|
+
return {
|
|
88
|
+
ok: false,
|
|
89
|
+
message: `Invalid Jev auto-approval model; use ${JEV_TYPESAFE_MODEL_PREFIX}<model-id>, ${JEV_OPENROUTER_MODEL_PREFIX}<model-id>, or ${JEV_VERCEL_MODEL_PREFIX}<model-id>`
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
const route = JEV_ROUTES[parsed.route];
|
|
93
|
+
const model = resolveJevUpstreamModel(route, parsed.model);
|
|
94
|
+
return model ? { ok: true, route, model } : { ok: false, message: unavailableModelMessage(route, parsed.model) };
|
|
95
|
+
};
|
|
96
|
+
var jevClassifierModels = (configuredModel) => {
|
|
97
|
+
const configured = configuredModel ? resolveJevModelRoute(configuredModel) : void 0;
|
|
98
|
+
return JEV_ROUTE_ORDER.flatMap((route) => {
|
|
99
|
+
const models = new Set(route.aliases);
|
|
100
|
+
if (configured?.route.id === route.id && configuredModel) models.add(configuredModel);
|
|
101
|
+
return [...models].map((model) => ({
|
|
102
|
+
provider: "pi-fabric",
|
|
103
|
+
id: jevClassifierKey(route, model).slice(JEV_PROVIDER_PREFIX.length),
|
|
104
|
+
name: `Jev (${route.label} safety classifier \xB7 ${model})`
|
|
105
|
+
}));
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
export {
|
|
110
|
+
normalizeJevApprovalModel,
|
|
111
|
+
isJevApprovalModel,
|
|
112
|
+
JEV_TYPESAFE_MODELS,
|
|
113
|
+
JEV_TYPESAFE_ROUTE,
|
|
114
|
+
JEV_OPENROUTER_MODELS,
|
|
115
|
+
JEV_OPENROUTER_ROUTE,
|
|
116
|
+
JEV_VERCEL_MODELS,
|
|
117
|
+
JEV_VERCEL_ROUTE,
|
|
118
|
+
jevClassifierKey,
|
|
119
|
+
isJevOpenRouterModelId,
|
|
120
|
+
isJevVercelModelId,
|
|
121
|
+
isJevModelId,
|
|
122
|
+
resolveJevModelRoute,
|
|
123
|
+
resolveJevUpstreamModel,
|
|
124
|
+
resolveJevClassifierTarget,
|
|
125
|
+
jevClassifierModels
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=chunk-B54Z662X.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/Vercel model IDs. */\nexport const JEV_TYPESAFE_MODEL_PREFIX = \"pi-fabric/typesafe/\";\nexport const JEV_OPENROUTER_MODEL_PREFIX = \"pi-fabric/openrouter/\";\nexport const JEV_VERCEL_MODEL_PREFIX = \"pi-fabric/vercel-ai-gateway/\";\n\nexport type JevClassifierRoute = \"typesafe\" | \"openrouter\" | \"vercel-ai-gateway\";\n\nconst ROUTE_PREFIXES: ReadonlyArray<readonly [route: JevClassifierRoute, prefix: string]> = [\n [\"typesafe\", JEV_TYPESAFE_MODEL_PREFIX],\n [\"openrouter\", JEV_OPENROUTER_MODEL_PREFIX],\n [\"vercel-ai-gateway\", JEV_VERCEL_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 JEV_VERCEL_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 /** Classifier key prefix stored in `approvals.model` for this route. */\n readonly modelPrefix: string;\n /** Aliases offered in host pickers and accepted as upstream overrides. */\n readonly aliases: readonly string[];\n}\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\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 modelPrefix: JEV_TYPESAFE_MODEL_PREFIX,\n aliases: JEV_TYPESAFE_MODELS,\n};\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\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 modelPrefix: JEV_OPENROUTER_MODEL_PREFIX,\n aliases: Object.keys(JEV_OPENROUTER_MODELS),\n};\n\n/** Vercel AI Gateway evaluation model IDs by alias. The gateway serves one Jev build today. */\nexport const JEV_VERCEL_MODELS: Readonly<Record<string, string>> = {\n \"jev-latest\": \"typesafe-ai/jev\",\n};\n\n/**\n * Vercel AI Gateway exposes a TypeSafe-compatible endpoint, so request and\n * response shapes stay TypeSafe's own and only the base URL and credential\n * change. The existing Pi `vercel-ai-gateway` login authenticates it.\n */\nexport const JEV_VERCEL_ROUTE: JevRoute = {\n id: \"vercel-ai-gateway\",\n label: \"Vercel AI Gateway\",\n endpoint: \"https://ai-gateway.vercel.sh/typesafe/v1/systemone\",\n providerId: \"vercel-ai-gateway\",\n envKeys: [\"AI_GATEWAY_API_KEY\"],\n modelPrefix: JEV_VERCEL_MODEL_PREFIX,\n aliases: Object.keys(JEV_VERCEL_MODELS),\n};\n\nconst JEV_ROUTES: Readonly<Record<JevClassifierRoute, JevRoute>> = {\n \"typesafe\": JEV_TYPESAFE_ROUTE,\n \"openrouter\": JEV_OPENROUTER_ROUTE,\n \"vercel-ai-gateway\": JEV_VERCEL_ROUTE,\n};\n\n/** Picker order: direct TypeSafe aliases, then OpenRouter, then Vercel AI Gateway. */\nconst JEV_ROUTE_ORDER: readonly JevRoute[] = [JEV_TYPESAFE_ROUTE, JEV_OPENROUTER_ROUTE, JEV_VERCEL_ROUTE];\n\nconst JEV_PROVIDER_PREFIX = \"pi-fabric/\";\n\n/** Classifier key stored in `approvals.model` for one route and upstream model. */\nexport const jevClassifierKey = (route: JevRoute, model: string): string => `${route.modelPrefix}${model}`;\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/** Vercel AI Gateway model IDs are `typesafe-ai/<family>`. */\nexport const isJevVercelModelId = (model: string): boolean =>\n /^typesafe-ai\\/[a-zA-Z0-9._-]{1,120}$/.test(model);\n/** A bare TypeSafe alias or a routable OpenRouter/Vercel AI Gateway model ID. */\nexport const isJevModelId = (model: string): boolean =>\n TYPESAFE_MODEL.test(model) || isJevOpenRouterModelId(model) || isJevVercelModelId(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 if (isJevOpenRouterModelId(model)) return { route: JEV_OPENROUTER_ROUTE, model };\n if (isJevVercelModelId(model)) return { route: JEV_VERCEL_ROUTE, model };\n return { route: JEV_TYPESAFE_ROUTE, model };\n};\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\") return JEV_OPENROUTER_MODELS[model] ?? (isJevOpenRouterModelId(model) ? model : undefined);\n if (route.id === \"vercel-ai-gateway\") return JEV_VERCEL_MODELS[model] ?? (isJevVercelModelId(model) ? model : undefined);\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\nconst unavailableModelMessage = (route: JevRoute, model: string): string => {\n if (route.id === \"openrouter\") return `OpenRouter serves ${Object.keys(JEV_OPENROUTER_MODELS).join(\", \")}; \"${model}\" is not available`;\n if (route.id === \"vercel-ai-gateway\") return `Vercel AI Gateway serves ${Object.keys(JEV_VERCEL_MODELS).join(\", \")}; \"${model}\" is not available`;\n return `Invalid Jev auto-approval model; use ${JEV_TYPESAFE_MODEL_PREFIX}<model-id>`;\n};\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>, ${JEV_OPENROUTER_MODEL_PREFIX}<model-id>, or ${JEV_VERCEL_MODEL_PREFIX}<model-id>`,\n };\n }\n const route = JEV_ROUTES[parsed.route];\n const model = resolveJevUpstreamModel(route, parsed.model);\n return model ? { ok: true, route, model } : { ok: false, message: unavailableModelMessage(route, parsed.model) };\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 return JEV_ROUTE_ORDER.flatMap((route) => {\n const models = new Set(route.aliases);\n if (configured?.route.id === route.id && configuredModel) models.add(configuredModel);\n return [...models].map((model): JevClassifierPickerModel => ({\n provider: \"pi-fabric\", id: jevClassifierKey(route, model).slice(JEV_PROVIDER_PREFIX.length),\n name: `Jev (${route.label} safety classifier \u00B7 ${model})`,\n }));\n });\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
MAX_AGENT_TIMEOUT_MS,
|
|
31
31
|
MIN_AGENT_TIMEOUT_MS,
|
|
32
32
|
quarantineDamagedFile
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-MDOBLRPL.js";
|
|
34
34
|
import {
|
|
35
35
|
ownedStat,
|
|
36
36
|
processAlive
|
|
@@ -1880,6 +1880,7 @@ var AgentManager = class {
|
|
|
1880
1880
|
this.#claudeBinary = options.claudeBinary ?? process.env.PI_FABRIC_CLAUDE_BINARY ?? config.claude.binary;
|
|
1881
1881
|
this.#vedaBinary = options.vedaBinary ?? process.env.PI_FABRIC_VEDA_BINARY ?? config.veda.binary;
|
|
1882
1882
|
this.#onBackgroundComplete = options.onBackgroundComplete;
|
|
1883
|
+
this.#onResultConsumed = options.onResultConsumed;
|
|
1883
1884
|
this.#onLifecycle = options.onLifecycle;
|
|
1884
1885
|
this.#preparePiModel = options.preparePiModel;
|
|
1885
1886
|
this.#resolveParticipantGuidance = options.resolveParticipantGuidance;
|
|
@@ -1932,6 +1933,7 @@ var AgentManager = class {
|
|
|
1932
1933
|
#identityId;
|
|
1933
1934
|
#transports;
|
|
1934
1935
|
#onBackgroundComplete;
|
|
1936
|
+
#onResultConsumed;
|
|
1935
1937
|
#onLifecycle;
|
|
1936
1938
|
#preparePiModel;
|
|
1937
1939
|
#resolveParticipantGuidance;
|
|
@@ -2319,16 +2321,20 @@ var AgentManager = class {
|
|
|
2319
2321
|
managed.background = false;
|
|
2320
2322
|
if (!managed.settled) {
|
|
2321
2323
|
if (!managed.result) throw new Error(`Agent ${id} has no pending result`);
|
|
2322
|
-
|
|
2324
|
+
const result = await managed.result;
|
|
2325
|
+
this.#onResultConsumed?.(id);
|
|
2326
|
+
return result;
|
|
2323
2327
|
}
|
|
2324
2328
|
const record = readRecord(managed.statusFile) ?? managed.latestRecord;
|
|
2325
2329
|
if (!record || !terminalStatuses.has(record.status)) {
|
|
2326
2330
|
throw new Error(`Agent ${id} settled without a result`);
|
|
2327
2331
|
}
|
|
2332
|
+
this.#onResultConsumed?.(id);
|
|
2328
2333
|
return this.#withTransportMetadata(record, managed);
|
|
2329
2334
|
}
|
|
2330
2335
|
markForeground(id) {
|
|
2331
2336
|
this.#requireRun(id).background = false;
|
|
2337
|
+
this.#onResultConsumed?.(id);
|
|
2332
2338
|
}
|
|
2333
2339
|
detachSignal(id) {
|
|
2334
2340
|
this.#detach(this.#requireRun(id), "caller detached; the run continues");
|
|
@@ -2358,6 +2364,12 @@ var AgentManager = class {
|
|
|
2358
2364
|
managed.abortHandler = void 0;
|
|
2359
2365
|
if (managed.background) return;
|
|
2360
2366
|
managed.background = true;
|
|
2367
|
+
if (managed.settled) {
|
|
2368
|
+
const record = readRecord(managed.statusFile) ?? managed.latestRecord;
|
|
2369
|
+
if (record && terminalStatuses.has(record.status)) {
|
|
2370
|
+
this.#notifyBackgroundComplete(managed, this.#withTransportMetadata(record, managed));
|
|
2371
|
+
}
|
|
2372
|
+
}
|
|
2361
2373
|
if (attached) {
|
|
2362
2374
|
this.#emitLifecycle(managed, "run.detached", Date.now(), { data: { reason } });
|
|
2363
2375
|
}
|
|
@@ -2460,6 +2472,7 @@ var AgentManager = class {
|
|
|
2460
2472
|
async cleanup(id, deleteBranch = false) {
|
|
2461
2473
|
const managed = this.#requireRun(id);
|
|
2462
2474
|
if (!managed.settled) throw new Error("Cannot clean up a running agent");
|
|
2475
|
+
this.markForeground(id);
|
|
2463
2476
|
const cleaned = await this.#worktrees.cleanup(id, deleteBranch);
|
|
2464
2477
|
if (!this.config.retainRuns) {
|
|
2465
2478
|
await removeTree(managed.runDirectory);
|
|
@@ -2851,7 +2864,11 @@ var AgentManager = class {
|
|
|
2851
2864
|
this.#invalidateUiList();
|
|
2852
2865
|
finishAgentSettlement(managed, result);
|
|
2853
2866
|
managed.task = "";
|
|
2854
|
-
|
|
2867
|
+
this.#notifyBackgroundComplete(managed, result);
|
|
2868
|
+
}
|
|
2869
|
+
#notifyBackgroundComplete(managed, result) {
|
|
2870
|
+
if (managed.background && !managed.completionNotified && !this.#closing && this.config.notifyOnComplete && this.#onBackgroundComplete) {
|
|
2871
|
+
managed.completionNotified = true;
|
|
2855
2872
|
try {
|
|
2856
2873
|
this.#onBackgroundComplete(result);
|
|
2857
2874
|
} catch {
|
|
@@ -6962,4 +6979,4 @@ export {
|
|
|
6962
6979
|
agentParticipantRecords,
|
|
6963
6980
|
actorParticipantRecord
|
|
6964
6981
|
};
|
|
6965
|
-
//# sourceMappingURL=chunk-
|
|
6982
|
+
//# sourceMappingURL=chunk-BJGZESBD.js.map
|