@zmzai/agent-framework 0.1.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/dist/adapters/fs-workspace.d.ts +7 -0
- package/dist/adapters/fs-workspace.d.ts.map +1 -0
- package/dist/adapters/fs-workspace.js +91 -0
- package/dist/adapters/fs-workspace.js.map +1 -0
- package/dist/adapters/index.d.ts +46 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +14 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/openai-provider.d.ts +17 -0
- package/dist/adapters/openai-provider.d.ts.map +1 -0
- package/dist/adapters/openai-provider.js +116 -0
- package/dist/adapters/openai-provider.js.map +1 -0
- package/dist/adapters/subprocess-sandbox.d.ts +7 -0
- package/dist/adapters/subprocess-sandbox.d.ts.map +1 -0
- package/dist/adapters/subprocess-sandbox.js +91 -0
- package/dist/adapters/subprocess-sandbox.js.map +1 -0
- package/dist/adapters/workspace-edit.d.ts +19 -0
- package/dist/adapters/workspace-edit.d.ts.map +1 -0
- package/dist/adapters/workspace-edit.js +36 -0
- package/dist/adapters/workspace-edit.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +191 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/agent/loader.d.ts +17 -0
- package/dist/core/agent/loader.d.ts.map +1 -0
- package/dist/core/agent/loader.js +148 -0
- package/dist/core/agent/loader.js.map +1 -0
- package/dist/core/agent/plugin.d.ts +59 -0
- package/dist/core/agent/plugin.d.ts.map +1 -0
- package/dist/core/agent/plugin.js +125 -0
- package/dist/core/agent/plugin.js.map +1 -0
- package/dist/core/agent/registry.d.ts +45 -0
- package/dist/core/agent/registry.d.ts.map +1 -0
- package/dist/core/agent/registry.js +98 -0
- package/dist/core/agent/registry.js.map +1 -0
- package/dist/core/agent/resolver.d.ts +16 -0
- package/dist/core/agent/resolver.d.ts.map +1 -0
- package/dist/core/agent/resolver.js +2 -0
- package/dist/core/agent/resolver.js.map +1 -0
- package/dist/core/events/bus.d.ts +30 -0
- package/dist/core/events/bus.d.ts.map +1 -0
- package/dist/core/events/bus.js +112 -0
- package/dist/core/events/bus.js.map +1 -0
- package/dist/core/events/manifest.d.ts +117 -0
- package/dist/core/events/manifest.d.ts.map +1 -0
- package/dist/core/events/manifest.js +69 -0
- package/dist/core/events/manifest.js.map +1 -0
- package/dist/core/permission/engine.d.ts +84 -0
- package/dist/core/permission/engine.d.ts.map +1 -0
- package/dist/core/permission/engine.js +131 -0
- package/dist/core/permission/engine.js.map +1 -0
- package/dist/core/permission/ruleset.d.ts +30 -0
- package/dist/core/permission/ruleset.d.ts.map +1 -0
- package/dist/core/permission/ruleset.js +85 -0
- package/dist/core/permission/ruleset.js.map +1 -0
- package/dist/core/runtime/compaction.d.ts +59 -0
- package/dist/core/runtime/compaction.d.ts.map +1 -0
- package/dist/core/runtime/compaction.js +108 -0
- package/dist/core/runtime/compaction.js.map +1 -0
- package/dist/core/runtime/lease-recovery.d.ts +45 -0
- package/dist/core/runtime/lease-recovery.d.ts.map +1 -0
- package/dist/core/runtime/lease-recovery.js +112 -0
- package/dist/core/runtime/lease-recovery.js.map +1 -0
- package/dist/core/runtime/loop-guard.d.ts +51 -0
- package/dist/core/runtime/loop-guard.d.ts.map +1 -0
- package/dist/core/runtime/loop-guard.js +90 -0
- package/dist/core/runtime/loop-guard.js.map +1 -0
- package/dist/core/runtime/pi-bridge.d.ts +53 -0
- package/dist/core/runtime/pi-bridge.d.ts.map +1 -0
- package/dist/core/runtime/pi-bridge.js +259 -0
- package/dist/core/runtime/pi-bridge.js.map +1 -0
- package/dist/core/runtime/runner.d.ts +127 -0
- package/dist/core/runtime/runner.d.ts.map +1 -0
- package/dist/core/runtime/runner.js +614 -0
- package/dist/core/runtime/runner.js.map +1 -0
- package/dist/core/session/ids.d.ts +7 -0
- package/dist/core/session/ids.d.ts.map +1 -0
- package/dist/core/session/ids.js +18 -0
- package/dist/core/session/ids.js.map +1 -0
- package/dist/core/session/jsonl-store.d.ts +14 -0
- package/dist/core/session/jsonl-store.d.ts.map +1 -0
- package/dist/core/session/jsonl-store.js +142 -0
- package/dist/core/session/jsonl-store.js.map +1 -0
- package/dist/core/session/store.d.ts +25 -0
- package/dist/core/session/store.d.ts.map +1 -0
- package/dist/core/session/store.js +2 -0
- package/dist/core/session/store.js.map +1 -0
- package/dist/core/session/types.d.ts +142 -0
- package/dist/core/session/types.d.ts.map +1 -0
- package/dist/core/session/types.js +2 -0
- package/dist/core/session/types.js.map +1 -0
- package/dist/core/tools/adapter.d.ts +33 -0
- package/dist/core/tools/adapter.d.ts.map +1 -0
- package/dist/core/tools/adapter.js +87 -0
- package/dist/core/tools/adapter.js.map +1 -0
- package/dist/core/tools/builtins.d.ts +13 -0
- package/dist/core/tools/builtins.d.ts.map +1 -0
- package/dist/core/tools/builtins.js +219 -0
- package/dist/core/tools/builtins.js.map +1 -0
- package/dist/core/tools/context.d.ts +136 -0
- package/dist/core/tools/context.d.ts.map +1 -0
- package/dist/core/tools/context.js +2 -0
- package/dist/core/tools/context.js.map +1 -0
- package/dist/core/tools/def.d.ts +27 -0
- package/dist/core/tools/def.d.ts.map +1 -0
- package/dist/core/tools/def.js +2 -0
- package/dist/core/tools/def.js.map +1 -0
- package/dist/core/tools/qa-check.d.ts +30 -0
- package/dist/core/tools/qa-check.d.ts.map +1 -0
- package/dist/core/tools/qa-check.js +50 -0
- package/dist/core/tools/qa-check.js.map +1 -0
- package/dist/core/tools/task.d.ts +8 -0
- package/dist/core/tools/task.d.ts.map +1 -0
- package/dist/core/tools/task.js +33 -0
- package/dist/core/tools/task.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/server/create-server.d.ts +51 -0
- package/dist/server/create-server.d.ts.map +1 -0
- package/dist/server/create-server.js +29 -0
- package/dist/server/create-server.js.map +1 -0
- package/openapi.yaml +239 -0
- package/package.json +32 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;qEAEqE;AAGrE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAClJ,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAClH,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACvH,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACvF,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAGxG,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC5G,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG9E,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC/F,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGhI,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACjI,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC/H,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACnH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClH,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAG7I,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAG3E,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** @zmzai/agent-framework — PI-based agent framework (OpenCode-style).
|
|
2
|
+
* Storage/backend-agnostic: sessions, permissions, tools, runner, events.
|
|
3
|
+
* Assemble with createServer() (or wire SessionRunner directly). */
|
|
4
|
+
export { newSessionId, newMessageId, newPartId, newPermissionRequestId, newEventId } from "./core/session/ids.js";
|
|
5
|
+
export { createJsonlSessionStore } from "./core/session/jsonl-store.js";
|
|
6
|
+
export { frameworkEventSchemas, parseFrameworkEvent } from "./core/events/manifest.js";
|
|
7
|
+
export { createMemoryEventLog, subscribeEventLog, notifyEventLogListeners } from "./core/events/bus.js";
|
|
8
|
+
export { rulesetFromConfig, evaluateRules, wildcardMatch, PERMISSIONS } from "./core/permission/ruleset.js";
|
|
9
|
+
export { PermissionEngine, RejectedError } from "./core/permission/engine.js";
|
|
10
|
+
export { AgentRegistry, builtinAgents, builtinDefaults } from "./core/agent/registry.js";
|
|
11
|
+
export { loadCustomAgents } from "./core/agent/loader.js";
|
|
12
|
+
export { parseAgentPlugin, parsePluginManifest, parsePluginMcp } from "./core/agent/plugin.js";
|
|
13
|
+
export { adaptTool, permissionForCall } from "./core/tools/adapter.js";
|
|
14
|
+
export { builtinTools, readTool, globTool, grepTool, writeTool, editTool, todoTool, bashTool } from "./core/tools/builtins.js";
|
|
15
|
+
export { taskTool } from "./core/tools/task.js";
|
|
16
|
+
// core: runtime
|
|
17
|
+
export { SessionRunner, createFrameworkSession, isSessionActive } from "./core/runtime/runner.js";
|
|
18
|
+
export { PartProjector, serializeEmit } from "./core/runtime/pi-bridge.js";
|
|
19
|
+
export { buildCompactionTransform, createCompactionTransform, streamOneText } from "./core/runtime/compaction.js";
|
|
20
|
+
export { startLeaseRecovery, reclaimExpiredLeases, finalizeInterruptedRun } from "./core/runtime/lease-recovery.js";
|
|
21
|
+
export { noopSandboxExecutor, leaseDurationMs } from "./adapters/index.js";
|
|
22
|
+
export { qaCheckResultSchema, qaCheckTool } from "./core/tools/qa-check.js";
|
|
23
|
+
export { createFsWorkspaceFiles } from "./adapters/fs-workspace.js";
|
|
24
|
+
export { createOpenAiModelProvider } from "./adapters/openai-provider.js";
|
|
25
|
+
export { createSubprocessSandbox } from "./adapters/subprocess-sandbox.js";
|
|
26
|
+
// server
|
|
27
|
+
export { createServer } from "./server/create-server.js";
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;qEAEqE;AAKrE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAClH,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAIxE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEvF,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAIxG,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE5G,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAI9E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAM/F,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC/H,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,eAAe,EAAmB,MAAM,0BAA0B,CAAC;AACnH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClH,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAA2B,MAAM,kCAAkC,CAAC;AAI7I,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAsB,MAAM,0BAA0B,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAE3E,SAAS;AACT,OAAO,EAAE,YAAY,EAA2C,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { SessionRunner } from "../core/runtime/runner.js";
|
|
2
|
+
import { AgentRegistry } from "../core/agent/registry.js";
|
|
3
|
+
import type { SessionStore } from "../core/session/store.js";
|
|
4
|
+
import type { EventLog } from "../core/events/bus.js";
|
|
5
|
+
import type { WorkspaceFiles } from "../core/tools/context.js";
|
|
6
|
+
import type { SandboxExecutor } from "../adapters/index.js";
|
|
7
|
+
import type { SessionInfo, ModelRef } from "../core/session/types.js";
|
|
8
|
+
import type { ModelProvider } from "../adapters/index.js";
|
|
9
|
+
/** createServer (M5 spec §1/§4): assembles a self-contained agent framework
|
|
10
|
+
* from injected backends. The product binds Mongo store + relay provider +
|
|
11
|
+
* OpenSandbox; the CLI binds JSONL store + OpenAI provider + subprocess
|
|
12
|
+
* sandbox + FS workspace. Either way the returned object is the whole
|
|
13
|
+
* framework: runner, store, event log, registry. */
|
|
14
|
+
export type FrameworkDeps = {
|
|
15
|
+
store: SessionStore;
|
|
16
|
+
eventLog: EventLog;
|
|
17
|
+
modelProvider: ModelProvider;
|
|
18
|
+
workspaceFor: (session: SessionInfo) => WorkspaceFiles;
|
|
19
|
+
sandbox?: SandboxExecutor;
|
|
20
|
+
registry?: AgentRegistry;
|
|
21
|
+
loadWorkspaceAgents?: (session: SessionInfo) => Promise<import("../core/agent/registry.js").AgentInfo[]>;
|
|
22
|
+
subagentDepth?: number;
|
|
23
|
+
compaction?: {
|
|
24
|
+
enabled: boolean;
|
|
25
|
+
contextWindow: number;
|
|
26
|
+
summaryModel: import("@earendil-works/pi-ai").Model<import("@earendil-works/pi-ai").Api> | null;
|
|
27
|
+
};
|
|
28
|
+
leaseStore?: {
|
|
29
|
+
stamp(sessionId: string, owner: string, expiresAt: Date): Promise<void>;
|
|
30
|
+
clear(sessionId: string): Promise<void>;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
export type AgentFramework = {
|
|
34
|
+
runner: SessionRunner;
|
|
35
|
+
store: SessionStore;
|
|
36
|
+
eventLog: EventLog;
|
|
37
|
+
registry: AgentRegistry;
|
|
38
|
+
/** Creates a session bound to a workspace + user, optionally with an initial
|
|
39
|
+
* prompt that starts running immediately. */
|
|
40
|
+
createSession(input: {
|
|
41
|
+
userId: string;
|
|
42
|
+
workspaceId: string;
|
|
43
|
+
agent?: string;
|
|
44
|
+
model: ModelRef;
|
|
45
|
+
prompt?: string;
|
|
46
|
+
parentId?: string;
|
|
47
|
+
title?: string;
|
|
48
|
+
}): Promise<SessionInfo>;
|
|
49
|
+
};
|
|
50
|
+
export declare function createServer(deps: FrameworkDeps): AgentFramework;
|
|
51
|
+
//# sourceMappingURL=create-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-server.d.ts","sourceRoot":"","sources":["../../src/server/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA0B,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;qDAIqD;AAErD,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,cAAc,CAAC;IACvD,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,2BAA2B,EAAE,SAAS,EAAE,CAAC,CAAC;IACzG,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,OAAO,uBAAuB,EAAE,KAAK,CAAC,OAAO,uBAAuB,EAAE,GAAG,CAAC,GAAG,IAAI,CAAA;KAAE,CAAC;IAC1J,UAAU,CAAC,EAAE;QAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;CACnI,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,aAAa,CAAC;IACxB;kDAC8C;IAC9C,aAAa,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,QAAQ,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC1K,CAAC;AAEF,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,cAAc,CAyBhE"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SessionRunner, createFrameworkSession } from "../core/runtime/runner.js";
|
|
2
|
+
import { AgentRegistry } from "../core/agent/registry.js";
|
|
3
|
+
import { noopSandboxExecutor } from "../adapters/index.js";
|
|
4
|
+
export function createServer(deps) {
|
|
5
|
+
const registry = deps.registry ?? new AgentRegistry();
|
|
6
|
+
const runner = new SessionRunner({
|
|
7
|
+
store: deps.store,
|
|
8
|
+
registry,
|
|
9
|
+
streamFnFor: (session) => deps.modelProvider.streamFor(session),
|
|
10
|
+
modelFor: (ref) => deps.modelProvider.getModel(ref),
|
|
11
|
+
eventLog: deps.eventLog,
|
|
12
|
+
workspaceFor: deps.workspaceFor,
|
|
13
|
+
sandbox: deps.sandbox ?? noopSandboxExecutor(),
|
|
14
|
+
...(deps.loadWorkspaceAgents ? { loadWorkspaceAgents: deps.loadWorkspaceAgents } : {}),
|
|
15
|
+
subagentDepth: deps.subagentDepth ?? 1,
|
|
16
|
+
...(deps.compaction ? { compaction: deps.compaction } : {}),
|
|
17
|
+
...(deps.leaseStore ? { leaseStore: deps.leaseStore } : {}),
|
|
18
|
+
});
|
|
19
|
+
return {
|
|
20
|
+
runner,
|
|
21
|
+
store: deps.store,
|
|
22
|
+
eventLog: deps.eventLog,
|
|
23
|
+
registry,
|
|
24
|
+
async createSession(input) {
|
|
25
|
+
return createFrameworkSession({ store: deps.store, ...input });
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=create-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-server.js","sourceRoot":"","sources":["../../src/server/create-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAK1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAiC3D,MAAM,UAAU,YAAY,CAAC,IAAmB;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,aAAa,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;QAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ;QACR,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC;QAC/D,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnD,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,mBAAmB,EAAE;QAC9C,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,CAAC;QACtC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC,CAAC;IAEH,OAAO;QACL,MAAM;QACN,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ;QACR,KAAK,CAAC,aAAa,CAAC,KAAK;YACvB,OAAO,sBAAsB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QACjE,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/openapi.yaml
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
openapi: 3.0.3
|
|
2
|
+
info:
|
|
3
|
+
title: ZMZAI Agent Framework
|
|
4
|
+
description: |
|
|
5
|
+
PI-based agent framework HTTP surface (M5 spec §3). Session lifecycle,
|
|
6
|
+
prompt, permission replies and the SSE event stream. All endpoints are
|
|
7
|
+
auth-agnostic — the product binds its own auth middleware.
|
|
8
|
+
version: 0.1.0
|
|
9
|
+
paths:
|
|
10
|
+
/sessions:
|
|
11
|
+
post:
|
|
12
|
+
summary: Create a session (optionally starting a run)
|
|
13
|
+
operationId: createSession
|
|
14
|
+
requestBody:
|
|
15
|
+
required: true
|
|
16
|
+
content:
|
|
17
|
+
application/json:
|
|
18
|
+
schema:
|
|
19
|
+
type: object
|
|
20
|
+
required: [workspaceId, model]
|
|
21
|
+
properties:
|
|
22
|
+
workspaceId: { type: string }
|
|
23
|
+
agent: { type: string, default: "default" }
|
|
24
|
+
model:
|
|
25
|
+
type: object
|
|
26
|
+
required: [providerId, modelId]
|
|
27
|
+
properties:
|
|
28
|
+
providerId: { type: string }
|
|
29
|
+
modelId: { type: string }
|
|
30
|
+
prompt: { type: string, description: "Initial prompt; starts the run immediately." }
|
|
31
|
+
responses:
|
|
32
|
+
"201":
|
|
33
|
+
description: Session created
|
|
34
|
+
content:
|
|
35
|
+
application/json:
|
|
36
|
+
schema:
|
|
37
|
+
$ref: "#/components/schemas/SessionInfo"
|
|
38
|
+
get:
|
|
39
|
+
summary: List sessions
|
|
40
|
+
operationId: listSessions
|
|
41
|
+
parameters:
|
|
42
|
+
- name: workspaceId
|
|
43
|
+
in: query
|
|
44
|
+
schema: { type: string }
|
|
45
|
+
responses:
|
|
46
|
+
"200":
|
|
47
|
+
description: Session list
|
|
48
|
+
content:
|
|
49
|
+
application/json:
|
|
50
|
+
schema:
|
|
51
|
+
type: object
|
|
52
|
+
properties:
|
|
53
|
+
sessions: { type: array, items: { $ref: "#/components/schemas/SessionInfo" } }
|
|
54
|
+
/sessions/{sessionId}:
|
|
55
|
+
get:
|
|
56
|
+
summary: Session detail (info + messages + parts)
|
|
57
|
+
operationId: getSession
|
|
58
|
+
parameters:
|
|
59
|
+
- name: sessionId
|
|
60
|
+
in: path
|
|
61
|
+
required: true
|
|
62
|
+
schema: { type: string }
|
|
63
|
+
responses:
|
|
64
|
+
"200":
|
|
65
|
+
description: Session snapshot
|
|
66
|
+
content:
|
|
67
|
+
application/json:
|
|
68
|
+
schema:
|
|
69
|
+
type: object
|
|
70
|
+
properties:
|
|
71
|
+
session: { $ref: "#/components/schemas/SessionInfo" }
|
|
72
|
+
messages:
|
|
73
|
+
type: array
|
|
74
|
+
items:
|
|
75
|
+
type: object
|
|
76
|
+
properties:
|
|
77
|
+
info: { $ref: "#/components/schemas/MessageInfo" }
|
|
78
|
+
parts: { type: array, items: { $ref: "#/components/schemas/Part" } }
|
|
79
|
+
/sessions/{sessionId}/prompt:
|
|
80
|
+
post:
|
|
81
|
+
summary: Submit a prompt (queued when the session is busy)
|
|
82
|
+
operationId: prompt
|
|
83
|
+
parameters:
|
|
84
|
+
- name: sessionId
|
|
85
|
+
in: path
|
|
86
|
+
required: true
|
|
87
|
+
schema: { type: string }
|
|
88
|
+
requestBody:
|
|
89
|
+
required: true
|
|
90
|
+
content:
|
|
91
|
+
application/json:
|
|
92
|
+
schema:
|
|
93
|
+
type: object
|
|
94
|
+
required: [text]
|
|
95
|
+
properties:
|
|
96
|
+
text: { type: string }
|
|
97
|
+
agent: { type: string }
|
|
98
|
+
responses:
|
|
99
|
+
"202":
|
|
100
|
+
description: Accepted
|
|
101
|
+
content:
|
|
102
|
+
application/json:
|
|
103
|
+
schema:
|
|
104
|
+
type: object
|
|
105
|
+
properties:
|
|
106
|
+
accepted: { type: boolean }
|
|
107
|
+
queued: { type: boolean }
|
|
108
|
+
/sessions/{sessionId}/abort:
|
|
109
|
+
post:
|
|
110
|
+
summary: Abort the active run and clear the prompt queue
|
|
111
|
+
operationId: abort
|
|
112
|
+
parameters:
|
|
113
|
+
- name: sessionId
|
|
114
|
+
in: path
|
|
115
|
+
required: true
|
|
116
|
+
schema: { type: string }
|
|
117
|
+
responses:
|
|
118
|
+
"200":
|
|
119
|
+
description: Aborted
|
|
120
|
+
/sessions/{sessionId}/permissions/{requestId}:
|
|
121
|
+
post:
|
|
122
|
+
summary: Reply to a permission request (once/always/reject)
|
|
123
|
+
operationId: replyPermission
|
|
124
|
+
parameters:
|
|
125
|
+
- name: sessionId
|
|
126
|
+
in: path
|
|
127
|
+
required: true
|
|
128
|
+
schema: { type: string }
|
|
129
|
+
- name: requestId
|
|
130
|
+
in: path
|
|
131
|
+
required: true
|
|
132
|
+
schema: { type: string }
|
|
133
|
+
requestBody:
|
|
134
|
+
required: true
|
|
135
|
+
content:
|
|
136
|
+
application/json:
|
|
137
|
+
schema:
|
|
138
|
+
type: object
|
|
139
|
+
required: [reply]
|
|
140
|
+
properties:
|
|
141
|
+
reply: { type: string, enum: [once, always, reject] }
|
|
142
|
+
feedback: { type: string }
|
|
143
|
+
responses:
|
|
144
|
+
"200":
|
|
145
|
+
description: Resolved
|
|
146
|
+
/sessions/{sessionId}/events:
|
|
147
|
+
get:
|
|
148
|
+
summary: SSE event stream (replay via ?since=<seq>)
|
|
149
|
+
operationId: sessionEvents
|
|
150
|
+
parameters:
|
|
151
|
+
- name: sessionId
|
|
152
|
+
in: path
|
|
153
|
+
required: true
|
|
154
|
+
schema: { type: string }
|
|
155
|
+
- name: since
|
|
156
|
+
in: query
|
|
157
|
+
schema: { type: integer }
|
|
158
|
+
responses:
|
|
159
|
+
"200":
|
|
160
|
+
description: text/event-stream of framework events
|
|
161
|
+
content:
|
|
162
|
+
text/event-stream:
|
|
163
|
+
schema:
|
|
164
|
+
type: object
|
|
165
|
+
components:
|
|
166
|
+
schemas:
|
|
167
|
+
SessionInfo:
|
|
168
|
+
type: object
|
|
169
|
+
required: [id, workspaceId, userId, title, agent, model, permission, queuedPrompts, time]
|
|
170
|
+
properties:
|
|
171
|
+
id: { type: string }
|
|
172
|
+
workspaceId: { type: string }
|
|
173
|
+
userId: { type: string }
|
|
174
|
+
parentId: { type: string }
|
|
175
|
+
title: { type: string }
|
|
176
|
+
agent: { type: string }
|
|
177
|
+
model:
|
|
178
|
+
type: object
|
|
179
|
+
properties:
|
|
180
|
+
providerId: { type: string }
|
|
181
|
+
modelId: { type: string }
|
|
182
|
+
permission:
|
|
183
|
+
type: array
|
|
184
|
+
items:
|
|
185
|
+
type: object
|
|
186
|
+
properties:
|
|
187
|
+
permission: { type: string }
|
|
188
|
+
pattern: { type: string }
|
|
189
|
+
action: { type: string, enum: [allow, deny, ask] }
|
|
190
|
+
queuedPrompts:
|
|
191
|
+
type: array
|
|
192
|
+
items:
|
|
193
|
+
type: object
|
|
194
|
+
properties:
|
|
195
|
+
text: { type: string }
|
|
196
|
+
agent: { type: string }
|
|
197
|
+
enqueuedAt: { type: string }
|
|
198
|
+
time:
|
|
199
|
+
type: object
|
|
200
|
+
properties:
|
|
201
|
+
created: { type: string }
|
|
202
|
+
updated: { type: string }
|
|
203
|
+
MessageInfo:
|
|
204
|
+
type: object
|
|
205
|
+
required: [id, sessionId, role, agent, model, time]
|
|
206
|
+
properties:
|
|
207
|
+
id: { type: string }
|
|
208
|
+
sessionId: { type: string }
|
|
209
|
+
role: { type: string, enum: [user, assistant] }
|
|
210
|
+
parentId: { type: string }
|
|
211
|
+
agent: { type: string }
|
|
212
|
+
model: { type: object }
|
|
213
|
+
tokens: { type: object }
|
|
214
|
+
error: { type: object }
|
|
215
|
+
time: { type: object }
|
|
216
|
+
Part:
|
|
217
|
+
type: object
|
|
218
|
+
required: [id, sessionId, messageId, type]
|
|
219
|
+
properties:
|
|
220
|
+
id: { type: string }
|
|
221
|
+
sessionId: { type: string }
|
|
222
|
+
messageId: { type: string }
|
|
223
|
+
type: { type: string, enum: [text, reasoning, tool, step-start, step-finish, subtask, file, compaction] }
|
|
224
|
+
text: { type: string }
|
|
225
|
+
callId: { type: string }
|
|
226
|
+
tool: { type: string }
|
|
227
|
+
state: { type: object }
|
|
228
|
+
summary: { type: string }
|
|
229
|
+
childSessionId: { type: string }
|
|
230
|
+
PermissionRequest:
|
|
231
|
+
type: object
|
|
232
|
+
properties:
|
|
233
|
+
id: { type: string }
|
|
234
|
+
sessionId: { type: string }
|
|
235
|
+
permission: { type: string }
|
|
236
|
+
patterns: { type: array, items: { type: string } }
|
|
237
|
+
metadata: { type: object }
|
|
238
|
+
always: { type: array, items: { type: string } }
|
|
239
|
+
tool: { type: object }
|
package/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@zmzai/agent-framework",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "PI-based agent framework — sessions, permissions, tools, runner, events (OpenCode-style).",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"bin": {
|
|
15
|
+
"zmzai-agent": "./dist/cli.js"
|
|
16
|
+
},
|
|
17
|
+
"files": ["dist", "openapi.yaml"],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc -p tsconfig.build.json",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"test": "vitest run"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@earendil-works/pi-agent-core": "0.84.1",
|
|
25
|
+
"@earendil-works/pi-ai": "0.84.1",
|
|
26
|
+
"zod": "^4.4.3"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"typescript": "5.9.3",
|
|
30
|
+
"vitest": "^4.1.10"
|
|
31
|
+
}
|
|
32
|
+
}
|