@fabric-harness/sdk 0.1.2 → 0.2.0
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 +7 -6
- package/dist/agent-definition.d.ts +20 -8
- package/dist/agent-definition.d.ts.map +1 -1
- package/dist/agent-definition.js +46 -8
- package/dist/agent-definition.js.map +1 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +3 -0
- package/dist/agent.js.map +1 -1
- package/dist/cloudflare-source.d.ts +61 -0
- package/dist/cloudflare-source.d.ts.map +1 -0
- package/dist/cloudflare-source.js +73 -0
- package/dist/cloudflare-source.js.map +1 -0
- package/dist/filesystem-source.d.ts +25 -0
- package/dist/filesystem-source.d.ts.map +1 -1
- package/dist/filesystem-source.js +28 -0
- package/dist/filesystem-source.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/lite.d.ts +6 -3
- package/dist/lite.d.ts.map +1 -1
- package/dist/lite.js +4 -2
- package/dist/lite.js.map +1 -1
- package/dist/pi-loop-runtime.d.ts +34 -0
- package/dist/pi-loop-runtime.d.ts.map +1 -0
- package/dist/pi-loop-runtime.js +274 -0
- package/dist/pi-loop-runtime.js.map +1 -0
- package/dist/sandbox.d.ts +13 -2
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +125 -90
- package/dist/sandbox.js.map +1 -1
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +31 -8
- package/dist/session.js.map +1 -1
- package/dist/types.d.ts +8 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/virtual-sandbox.d.ts +46 -0
- package/dist/virtual-sandbox.d.ts.map +1 -0
- package/dist/virtual-sandbox.js +129 -0
- package/dist/virtual-sandbox.js.map +1 -0
- package/package.json +9 -2
package/dist/lite.js
CHANGED
|
@@ -30,9 +30,11 @@ export { createFabricContext } from './context.js';
|
|
|
30
30
|
export { FabricError, isFabricError, toFabricError } from './error.js';
|
|
31
31
|
export { schema, SchemaValidationError } from './schema.js';
|
|
32
32
|
export { defineCommand, defineTool, secret, shellQuote } from './tools.js';
|
|
33
|
-
export { createSandboxEnv, EmptySandboxEnv, LocalSandboxEnv } from './sandbox.js';
|
|
34
|
-
export {
|
|
33
|
+
export { createRemoteSandboxEnv, createSandboxEnv, createScopedSandboxEnv, EmptySandboxEnv, LocalSandboxEnv } from './sandbox.js';
|
|
34
|
+
export { VirtualSandboxEnv, createVirtualSandboxEnv } from './virtual-sandbox.js';
|
|
35
|
+
export { getVirtualSandbox, inMemorySource, localDirectorySource, withFilesystemSources } from './filesystem-source.js';
|
|
35
36
|
export { resolveRuntimeMode, isStatelessRuntime } from './runtime-mode.js';
|
|
37
|
+
export { PiAgentLoopRuntime, createPiAgentLoopRuntime } from './pi-loop-runtime.js';
|
|
36
38
|
export { noopSessionStore, NoopSessionStore } from './store.js';
|
|
37
39
|
export { connectMcpServer } from './mcp.js';
|
|
38
40
|
//# sourceMappingURL=lite.js.map
|
package/dist/lite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lite.js","sourceRoot":"","sources":["../src/lite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"lite.js","sourceRoot":"","sources":["../src/lite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAClI,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAExH,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEpF,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { AgentLoopRuntime, PromptRunInput, PromptRunResult } from './loop.js';
|
|
2
|
+
export interface PiCustomModel {
|
|
3
|
+
api: string;
|
|
4
|
+
provider: string;
|
|
5
|
+
}
|
|
6
|
+
export interface PiAgentLoopRuntimeOptions {
|
|
7
|
+
/** Default model in `provider/model` or `provider:model` form, e.g. `openai/gpt-4.1`. */
|
|
8
|
+
model?: string;
|
|
9
|
+
/** Dynamic API-key resolver forwarded to pi-agent-core/pi-ai. */
|
|
10
|
+
getApiKey?: (provider: string) => Promise<string | undefined> | string | undefined;
|
|
11
|
+
/** Execute tool calls in parallel or sequentially. Defaults to pi-agent-core's parallel mode. */
|
|
12
|
+
toolExecution?: 'parallel' | 'sequential';
|
|
13
|
+
/** Custom model definitions for models not in the pi-ai catalog. Keyed by `provider/model`. */
|
|
14
|
+
customModels?: Record<string, PiCustomModel>;
|
|
15
|
+
}
|
|
16
|
+
export declare class PiAgentLoopRuntime implements AgentLoopRuntime {
|
|
17
|
+
readonly name = "pi-agent-core";
|
|
18
|
+
private readonly options;
|
|
19
|
+
private readonly agents;
|
|
20
|
+
private currentPolicy;
|
|
21
|
+
private currentEmit;
|
|
22
|
+
constructor(options?: PiAgentLoopRuntimeOptions);
|
|
23
|
+
runPrompt(input: PromptRunInput): Promise<PromptRunResult>;
|
|
24
|
+
/**
|
|
25
|
+
* Dispose of cached Agent instances to free resources.
|
|
26
|
+
* Call with a sessionId to dispose a specific session, or call
|
|
27
|
+
* without arguments to dispose all sessions.
|
|
28
|
+
*/
|
|
29
|
+
dispose(sessionId?: string): void;
|
|
30
|
+
private resolvePiModel;
|
|
31
|
+
private toPiTool;
|
|
32
|
+
}
|
|
33
|
+
export declare function createPiAgentLoopRuntime(options?: PiAgentLoopRuntimeOptions): PiAgentLoopRuntime;
|
|
34
|
+
//# sourceMappingURL=pi-loop-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-loop-runtime.d.ts","sourceRoot":"","sources":["../src/pi-loop-runtime.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAMnF,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,yFAAyF;IACzF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;IACnF,iGAAiG;IACjG,aAAa,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IAC1C,+FAA+F;IAC/F,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC9C;AAED,qBAAa,kBAAmB,YAAW,gBAAgB;IACzD,QAAQ,CAAC,IAAI,mBAAmB;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,WAAW,CAAgF;gBAEvF,OAAO,GAAE,yBAA8B;IAI7C,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAqEhE;;;;OAIG;IACH,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAajC,OAAO,CAAC,cAAc;IAsCtB,OAAO,CAAC,QAAQ;CAgBjB;AAED,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,yBAA8B,GAAG,kBAAkB,CAEpG"}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { Agent } from '@mariozechner/pi-agent-core';
|
|
2
|
+
import { getModel, Type } from '@mariozechner/pi-ai';
|
|
3
|
+
import { defaultLoopRuntime } from './loop.js';
|
|
4
|
+
import { evaluateToolCallPolicy } from './policy.js';
|
|
5
|
+
export class PiAgentLoopRuntime {
|
|
6
|
+
name = 'pi-agent-core';
|
|
7
|
+
options;
|
|
8
|
+
agents = new Map();
|
|
9
|
+
currentPolicy;
|
|
10
|
+
currentEmit;
|
|
11
|
+
constructor(options = {}) {
|
|
12
|
+
this.options = options;
|
|
13
|
+
}
|
|
14
|
+
async runPrompt(input) {
|
|
15
|
+
if (input.toolCalls?.length)
|
|
16
|
+
return defaultLoopRuntime.runPrompt(input);
|
|
17
|
+
// Store current call context for callbacks
|
|
18
|
+
this.currentPolicy = input.policy;
|
|
19
|
+
this.currentEmit = input.emit;
|
|
20
|
+
const selectedModel = this.resolvePiModel(input.model ?? this.options.model);
|
|
21
|
+
const { systemPrompt } = splitSystemMessages(input.messages, selectedModel);
|
|
22
|
+
const tools = [...input.tools.values()].map((tool) => this.toPiTool(tool, input));
|
|
23
|
+
// Try to reuse a cached Agent for this session
|
|
24
|
+
let agent = this.agents.get(input.sessionId);
|
|
25
|
+
if (agent) {
|
|
26
|
+
// Update the cached agent's tools and system prompt for this call
|
|
27
|
+
agent.state.tools = tools;
|
|
28
|
+
agent.state.systemPrompt = systemPrompt;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// Create a new agent for this session
|
|
32
|
+
agent = new Agent({
|
|
33
|
+
sessionId: input.sessionId,
|
|
34
|
+
initialState: {
|
|
35
|
+
systemPrompt,
|
|
36
|
+
model: selectedModel,
|
|
37
|
+
tools,
|
|
38
|
+
messages: [],
|
|
39
|
+
},
|
|
40
|
+
...(this.options.getApiKey ? { getApiKey: this.options.getApiKey } : {}),
|
|
41
|
+
...(this.options.toolExecution ? { toolExecution: this.options.toolExecution } : {}),
|
|
42
|
+
beforeToolCall: async (context) => {
|
|
43
|
+
const decision = evaluateToolCallPolicy({ tool: context.toolCall.name, input: context.args }, this.currentPolicy);
|
|
44
|
+
if (!decision.allowed)
|
|
45
|
+
return { block: true, reason: decision.reason ?? `Tool call denied by policy: ${context.toolCall.name}` };
|
|
46
|
+
return undefined;
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
this.agents.set(input.sessionId, agent);
|
|
50
|
+
}
|
|
51
|
+
// Subscribe to events for this call
|
|
52
|
+
const unsubscribe = agent.subscribe(async (event) => { await emitPiEvent(event, input); });
|
|
53
|
+
// Handle abort signal
|
|
54
|
+
let abortListener;
|
|
55
|
+
if (input.signal) {
|
|
56
|
+
if (input.signal.aborted)
|
|
57
|
+
agent.abort();
|
|
58
|
+
abortListener = () => agent.abort();
|
|
59
|
+
input.signal.addEventListener('abort', abortListener, { once: true });
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
await agent.prompt(input.text);
|
|
63
|
+
await agent.waitForIdle();
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
unsubscribe();
|
|
67
|
+
if (abortListener && input.signal) {
|
|
68
|
+
input.signal.removeEventListener('abort', abortListener);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Extract the final assistant response from the agent's message history
|
|
72
|
+
const latestAssistant = [...agent.state.messages].reverse().find(isAssistantMessage);
|
|
73
|
+
const text = latestAssistant ? assistantText(latestAssistant) : '';
|
|
74
|
+
if (text)
|
|
75
|
+
await input.recordEntry('assistant_message', { text });
|
|
76
|
+
await input.recordEntry('result', { result: text });
|
|
77
|
+
await input.emit('prompt_end', { text: input.text, result: text });
|
|
78
|
+
return { text, raw: text, ...(latestAssistant?.usage ? { usage: toFabricUsage(latestAssistant.usage) } : {}) };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Dispose of cached Agent instances to free resources.
|
|
82
|
+
* Call with a sessionId to dispose a specific session, or call
|
|
83
|
+
* without arguments to dispose all sessions.
|
|
84
|
+
*/
|
|
85
|
+
dispose(sessionId) {
|
|
86
|
+
if (sessionId) {
|
|
87
|
+
const agent = this.agents.get(sessionId);
|
|
88
|
+
if (agent) {
|
|
89
|
+
agent.reset();
|
|
90
|
+
this.agents.delete(sessionId);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
for (const agent of this.agents.values())
|
|
95
|
+
agent.reset();
|
|
96
|
+
this.agents.clear();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
resolvePiModel(model) {
|
|
100
|
+
if (!model)
|
|
101
|
+
throw new Error('PiAgentLoopRuntime requires a model in provider/model form.');
|
|
102
|
+
const separator = model.includes('/') ? '/' : ':';
|
|
103
|
+
const [provider, modelId] = model.split(separator, 2);
|
|
104
|
+
if (!provider || !modelId)
|
|
105
|
+
throw new Error(`Invalid pi model identifier: ${model}. Expected provider/model.`);
|
|
106
|
+
// Try the pi-ai catalog first
|
|
107
|
+
try {
|
|
108
|
+
return getModel(provider, modelId);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// Not in catalog — try custom models
|
|
112
|
+
const custom = this.options.customModels?.[model];
|
|
113
|
+
if (custom) {
|
|
114
|
+
return { id: modelId, provider: custom.provider, api: custom.api };
|
|
115
|
+
}
|
|
116
|
+
// Fallback: infer API type from well-known providers
|
|
117
|
+
const apiMap = {
|
|
118
|
+
openai: 'openai-completions',
|
|
119
|
+
anthropic: 'anthropic-messages',
|
|
120
|
+
google: 'google-generative-ai',
|
|
121
|
+
azure: 'openai-completions',
|
|
122
|
+
mistral: 'mistral-conversations',
|
|
123
|
+
bedrock: 'bedrock-converse',
|
|
124
|
+
vertex: 'google-generative-ai',
|
|
125
|
+
};
|
|
126
|
+
const api = apiMap[provider];
|
|
127
|
+
if (api) {
|
|
128
|
+
return { id: modelId, provider, api };
|
|
129
|
+
}
|
|
130
|
+
throw new Error(`Failed to resolve model "${model}". It is not in the pi-ai catalog and no custom model was provided. `
|
|
131
|
+
+ `Register a custom model via PiAgentLoopRuntimeOptions.customModels or use a known provider: ${Object.keys(apiMap).join(', ')}.`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
toPiTool(tool, input) {
|
|
135
|
+
return {
|
|
136
|
+
name: tool.name,
|
|
137
|
+
label: tool.name,
|
|
138
|
+
description: tool.description ?? tool.name,
|
|
139
|
+
parameters: Type.Unsafe(tool.inputSchema ?? { type: 'object', additionalProperties: true }),
|
|
140
|
+
async execute(toolCallId, params) {
|
|
141
|
+
const [result] = await input.executeToolCalls([{ tool: tool.name, input: params }], input.policy);
|
|
142
|
+
if (!result || result.error)
|
|
143
|
+
throw new Error(result?.error ?? `Tool failed: ${tool.name}`);
|
|
144
|
+
return {
|
|
145
|
+
content: [{ type: 'text', text: stringifyForModel(result.output) }],
|
|
146
|
+
details: result.output,
|
|
147
|
+
};
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
export function createPiAgentLoopRuntime(options = {}) {
|
|
153
|
+
return new PiAgentLoopRuntime(options);
|
|
154
|
+
}
|
|
155
|
+
function splitSystemMessages(messages, model) {
|
|
156
|
+
const systemPrompt = messages.filter((message) => message.role === 'system').map((message) => message.content).join('\n\n');
|
|
157
|
+
const nonSystem = messages.filter((message) => message.role !== 'system');
|
|
158
|
+
return {
|
|
159
|
+
systemPrompt,
|
|
160
|
+
messages: convertMessagesToPi(nonSystem, model),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Convert Fabric ModelMessages to pi-agent-core AgentMessages.
|
|
165
|
+
* Handles tool-call round-trips by grouping assistant+toolCall and toolResult messages.
|
|
166
|
+
* Uses type assertions where pi-ai's strict union types require it.
|
|
167
|
+
*/
|
|
168
|
+
function convertMessagesToPi(messages, model) {
|
|
169
|
+
const result = [];
|
|
170
|
+
let i = 0;
|
|
171
|
+
while (i < messages.length) {
|
|
172
|
+
const msg = messages[i];
|
|
173
|
+
if (!msg) {
|
|
174
|
+
i += 1;
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
if (msg.role === 'assistant' && msg.toolCalls?.length) {
|
|
178
|
+
// Assistant message with tool calls — cast through unknown for pi-ai's strict content unions
|
|
179
|
+
const content = [
|
|
180
|
+
...(msg.content ? [{ type: 'text', text: msg.content }] : []),
|
|
181
|
+
...msg.toolCalls.map((tc) => ({
|
|
182
|
+
type: 'toolCall',
|
|
183
|
+
toolCallId: tc.id,
|
|
184
|
+
toolName: tc.name,
|
|
185
|
+
args: tc.input,
|
|
186
|
+
})),
|
|
187
|
+
];
|
|
188
|
+
result.push({
|
|
189
|
+
role: 'assistant',
|
|
190
|
+
content: content,
|
|
191
|
+
api: model.api,
|
|
192
|
+
provider: model.provider,
|
|
193
|
+
model: model.id,
|
|
194
|
+
usage: zeroUsage(),
|
|
195
|
+
stopReason: 'tool_use',
|
|
196
|
+
timestamp: Date.now(),
|
|
197
|
+
});
|
|
198
|
+
i += 1;
|
|
199
|
+
continue;
|
|
200
|
+
}
|
|
201
|
+
if (msg.role === 'assistant') {
|
|
202
|
+
result.push({
|
|
203
|
+
role: 'assistant',
|
|
204
|
+
content: [{ type: 'text', text: msg.content }],
|
|
205
|
+
api: model.api,
|
|
206
|
+
provider: model.provider,
|
|
207
|
+
model: model.id,
|
|
208
|
+
usage: zeroUsage(),
|
|
209
|
+
stopReason: 'stop',
|
|
210
|
+
timestamp: Date.now(),
|
|
211
|
+
});
|
|
212
|
+
i += 1;
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
if (msg.role === 'tool') {
|
|
216
|
+
result.push({
|
|
217
|
+
role: 'toolResult',
|
|
218
|
+
toolCallId: msg.toolCallId ?? msg.name ?? 'tool',
|
|
219
|
+
toolName: msg.name ?? 'tool',
|
|
220
|
+
content: [{ type: 'text', text: msg.content }],
|
|
221
|
+
details: msg.content,
|
|
222
|
+
isError: false,
|
|
223
|
+
timestamp: Date.now(),
|
|
224
|
+
});
|
|
225
|
+
i += 1;
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
// user message
|
|
229
|
+
result.push({ role: 'user', content: msg.content, timestamp: Date.now() });
|
|
230
|
+
i += 1;
|
|
231
|
+
}
|
|
232
|
+
return result;
|
|
233
|
+
}
|
|
234
|
+
async function emitPiEvent(event, input) {
|
|
235
|
+
if (event.type === 'agent_start')
|
|
236
|
+
await input.emit('agent_start', { runtime: 'pi-agent-core' });
|
|
237
|
+
if (event.type === 'turn_start')
|
|
238
|
+
await input.emit('turn_start', { runtime: 'pi-agent-core' });
|
|
239
|
+
if (event.type === 'turn_end')
|
|
240
|
+
await input.emit('turn_end', { runtime: 'pi-agent-core' });
|
|
241
|
+
if (event.type === 'message_update' && event.assistantMessageEvent.type === 'text_delta') {
|
|
242
|
+
await input.emit('text_delta', { delta: event.assistantMessageEvent.delta });
|
|
243
|
+
}
|
|
244
|
+
// Tool start/end are emitted by Fabric's executeToolCalls callback so policy,
|
|
245
|
+
// audit, and native/pi runtimes have the same durable event shape.
|
|
246
|
+
}
|
|
247
|
+
function isAssistantMessage(message) {
|
|
248
|
+
return typeof message === 'object' && message !== null && message.role === 'assistant';
|
|
249
|
+
}
|
|
250
|
+
function assistantText(message) {
|
|
251
|
+
return message.content.filter((part) => part.type === 'text').map((part) => part.text).join('');
|
|
252
|
+
}
|
|
253
|
+
function stringifyForModel(value) {
|
|
254
|
+
return typeof value === 'string' ? value : JSON.stringify(value ?? null);
|
|
255
|
+
}
|
|
256
|
+
function toFabricUsage(usage) {
|
|
257
|
+
return {
|
|
258
|
+
inputTokens: usage.input,
|
|
259
|
+
outputTokens: usage.output,
|
|
260
|
+
totalTokens: usage.totalTokens,
|
|
261
|
+
costUsd: usage.cost.total,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
function zeroUsage() {
|
|
265
|
+
return {
|
|
266
|
+
input: 0,
|
|
267
|
+
output: 0,
|
|
268
|
+
cacheRead: 0,
|
|
269
|
+
cacheWrite: 0,
|
|
270
|
+
totalTokens: 0,
|
|
271
|
+
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
//# sourceMappingURL=pi-loop-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi-loop-runtime.js","sourceRoot":"","sources":["../src/pi-loop-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/sandbox.d.ts
CHANGED
|
@@ -62,6 +62,8 @@ export interface SandboxFactoryOptions {
|
|
|
62
62
|
sessionId?: string;
|
|
63
63
|
env?: Record<string, string>;
|
|
64
64
|
metadata?: Record<string, unknown>;
|
|
65
|
+
/** Default working directory inside the sandbox workspace. */
|
|
66
|
+
cwd?: string;
|
|
65
67
|
}
|
|
66
68
|
export type SandboxFactory = (options: SandboxFactoryOptions) => Promise<SandboxEnv> | SandboxEnv;
|
|
67
69
|
export interface RemoteSandboxApi {
|
|
@@ -96,6 +98,12 @@ export interface RemoteSandboxOptions {
|
|
|
96
98
|
* Fabric only sees the narrow file/shell/snapshot API exposed here.
|
|
97
99
|
*/
|
|
98
100
|
export declare function createRemoteSandboxEnv(api: RemoteSandboxApi, options?: RemoteSandboxOptions): SandboxEnv;
|
|
101
|
+
/**
|
|
102
|
+
* Return a view of a sandbox with a narrower default cwd. Relative file paths
|
|
103
|
+
* and shell cwd values are resolved from this scoped cwd while the underlying
|
|
104
|
+
* sandbox still enforces its workspace boundary.
|
|
105
|
+
*/
|
|
106
|
+
export declare function createScopedSandboxEnv(sandbox: SandboxEnv, cwd?: string): SandboxEnv;
|
|
99
107
|
/**
|
|
100
108
|
* Adapter expectations:
|
|
101
109
|
* - Every backend must expose the SandboxEnv contract above and map paths into a scoped workspace.
|
|
@@ -117,11 +125,12 @@ export interface SandboxAdapterDescriptor {
|
|
|
117
125
|
export declare class EmptySandboxEnv implements SandboxEnv {
|
|
118
126
|
readonly cwd: string;
|
|
119
127
|
readonly capabilities: SandboxCapabilities;
|
|
120
|
-
private
|
|
128
|
+
private fs;
|
|
129
|
+
private bash;
|
|
121
130
|
private snapshots;
|
|
122
131
|
private nextSnapshotId;
|
|
123
132
|
constructor(cwd?: string);
|
|
124
|
-
exec(command: string): Promise<ShellResult>;
|
|
133
|
+
exec(command: string, options?: SandboxExecOptions): Promise<ShellResult>;
|
|
125
134
|
readFile(filePath: string): Promise<string>;
|
|
126
135
|
readFileBuffer(filePath: string): Promise<Uint8Array>;
|
|
127
136
|
writeFile(filePath: string, content: string | Uint8Array): Promise<void>;
|
|
@@ -139,7 +148,9 @@ export declare class EmptySandboxEnv implements SandboxEnv {
|
|
|
139
148
|
snapshot(): Promise<SandboxSnapshot>;
|
|
140
149
|
restore(snapshot: SandboxSnapshot): Promise<void>;
|
|
141
150
|
cleanup(): Promise<void>;
|
|
151
|
+
private captureEntries;
|
|
142
152
|
}
|
|
153
|
+
export declare const VirtualSandboxEnv: typeof EmptySandboxEnv;
|
|
143
154
|
export interface LocalSandboxOptions {
|
|
144
155
|
workspacePath?: string;
|
|
145
156
|
env?: Record<string, string>;
|
package/dist/sandbox.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../src/sandbox.ts"],"names":[],"mappings":"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"}
|