@nexalab/agent-sdk 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/LICENSE +15 -0
- package/README.md +518 -0
- package/bin/nexa.mjs +33 -0
- package/dist/advanced-memory.d.ts +32 -0
- package/dist/advanced-memory.d.ts.map +1 -0
- package/dist/advanced-memory.js +54 -0
- package/dist/advanced-memory.js.map +1 -0
- package/dist/agent-builder.d.ts +60 -0
- package/dist/agent-builder.d.ts.map +1 -0
- package/dist/agent-builder.js +141 -0
- package/dist/agent-builder.js.map +1 -0
- package/dist/approvals.d.ts +34 -0
- package/dist/approvals.d.ts.map +1 -0
- package/dist/approvals.js +54 -0
- package/dist/approvals.js.map +1 -0
- package/dist/artifacts.d.ts +13 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/artifacts.js +13 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/cache.d.ts +17 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +29 -0
- package/dist/cache.js.map +1 -0
- package/dist/completion-gate.d.ts +5 -0
- package/dist/completion-gate.d.ts.map +1 -0
- package/dist/completion-gate.js +20 -0
- package/dist/completion-gate.js.map +1 -0
- package/dist/console-chat.d.ts +110 -0
- package/dist/console-chat.d.ts.map +1 -0
- package/dist/console-chat.js +284 -0
- package/dist/console-chat.js.map +1 -0
- package/dist/context.d.ts +45 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +92 -0
- package/dist/context.js.map +1 -0
- package/dist/evals.d.ts +38 -0
- package/dist/evals.d.ts.map +1 -0
- package/dist/evals.js +37 -0
- package/dist/evals.js.map +1 -0
- package/dist/event-bus.d.ts +28 -0
- package/dist/event-bus.d.ts.map +1 -0
- package/dist/event-bus.js +28 -0
- package/dist/event-bus.js.map +1 -0
- package/dist/file-storage.d.ts +25 -0
- package/dist/file-storage.d.ts.map +1 -0
- package/dist/file-storage.js +100 -0
- package/dist/file-storage.js.map +1 -0
- package/dist/guardrails.d.ts +44 -0
- package/dist/guardrails.d.ts.map +1 -0
- package/dist/guardrails.js +37 -0
- package/dist/guardrails.js.map +1 -0
- package/dist/harness.d.ts +26 -0
- package/dist/harness.d.ts.map +1 -0
- package/dist/harness.js +49 -0
- package/dist/harness.js.map +1 -0
- package/dist/hooks.d.ts +58 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +16 -0
- package/dist/hooks.js.map +1 -0
- package/dist/http-adapter.d.ts +13 -0
- package/dist/http-adapter.d.ts.map +1 -0
- package/dist/http-adapter.js +33 -0
- package/dist/http-adapter.js.map +1 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/kernel.d.ts +90 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +251 -0
- package/dist/kernel.js.map +1 -0
- package/dist/knowledge.d.ts +35 -0
- package/dist/knowledge.d.ts.map +1 -0
- package/dist/knowledge.js +89 -0
- package/dist/knowledge.js.map +1 -0
- package/dist/local-tool-executor.d.ts +26 -0
- package/dist/local-tool-executor.d.ts.map +1 -0
- package/dist/local-tool-executor.js +30 -0
- package/dist/local-tool-executor.js.map +1 -0
- package/dist/loop-guard.d.ts +15 -0
- package/dist/loop-guard.d.ts.map +1 -0
- package/dist/loop-guard.js +12 -0
- package/dist/loop-guard.js.map +1 -0
- package/dist/manifest.d.ts +43 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +31 -0
- package/dist/manifest.js.map +1 -0
- package/dist/mcp.d.ts +55 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +175 -0
- package/dist/mcp.js.map +1 -0
- package/dist/memory.d.ts +32 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +40 -0
- package/dist/memory.js.map +1 -0
- package/dist/mission-runtime.d.ts +106 -0
- package/dist/mission-runtime.d.ts.map +1 -0
- package/dist/mission-runtime.js +196 -0
- package/dist/mission-runtime.js.map +1 -0
- package/dist/model-harness.d.ts +23 -0
- package/dist/model-harness.d.ts.map +1 -0
- package/dist/model-harness.js +7 -0
- package/dist/model-harness.js.map +1 -0
- package/dist/model-router.d.ts +60 -0
- package/dist/model-router.d.ts.map +1 -0
- package/dist/model-router.js +90 -0
- package/dist/model-router.js.map +1 -0
- package/dist/multi-agent.d.ts +56 -0
- package/dist/multi-agent.d.ts.map +1 -0
- package/dist/multi-agent.js +69 -0
- package/dist/multi-agent.js.map +1 -0
- package/dist/native-tool-loop.d.ts +70 -0
- package/dist/native-tool-loop.d.ts.map +1 -0
- package/dist/native-tool-loop.js +92 -0
- package/dist/native-tool-loop.js.map +1 -0
- package/dist/openai-agent.d.ts +75 -0
- package/dist/openai-agent.d.ts.map +1 -0
- package/dist/openai-agent.js +190 -0
- package/dist/openai-agent.js.map +1 -0
- package/dist/openai-compatible.d.ts +117 -0
- package/dist/openai-compatible.d.ts.map +1 -0
- package/dist/openai-compatible.js +486 -0
- package/dist/openai-compatible.js.map +1 -0
- package/dist/otel.d.ts +12 -0
- package/dist/otel.d.ts.map +1 -0
- package/dist/otel.js +35 -0
- package/dist/otel.js.map +1 -0
- package/dist/permissions.d.ts +6 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +33 -0
- package/dist/permissions.js.map +1 -0
- package/dist/plan-validator.d.ts +9 -0
- package/dist/plan-validator.d.ts.map +1 -0
- package/dist/plan-validator.js +27 -0
- package/dist/plan-validator.js.map +1 -0
- package/dist/policy.d.ts +27 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +37 -0
- package/dist/policy.js.map +1 -0
- package/dist/postgres-storage.d.ts +33 -0
- package/dist/postgres-storage.d.ts.map +1 -0
- package/dist/postgres-storage.js +80 -0
- package/dist/postgres-storage.js.map +1 -0
- package/dist/provider-capabilities.d.ts +13 -0
- package/dist/provider-capabilities.d.ts.map +1 -0
- package/dist/provider-capabilities.js +19 -0
- package/dist/provider-capabilities.js.map +1 -0
- package/dist/providers.d.ts +14 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js +69 -0
- package/dist/providers.js.map +1 -0
- package/dist/queue.d.ts +29 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +36 -0
- package/dist/queue.js.map +1 -0
- package/dist/redis-storage.d.ts +36 -0
- package/dist/redis-storage.d.ts.map +1 -0
- package/dist/redis-storage.js +68 -0
- package/dist/redis-storage.js.map +1 -0
- package/dist/replay.d.ts +13 -0
- package/dist/replay.d.ts.map +1 -0
- package/dist/replay.js +32 -0
- package/dist/replay.js.map +1 -0
- package/dist/runtime.d.ts +54 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +218 -0
- package/dist/runtime.js.map +1 -0
- package/dist/sdk.d.ts +43 -0
- package/dist/sdk.d.ts.map +1 -0
- package/dist/sdk.js +82 -0
- package/dist/sdk.js.map +1 -0
- package/dist/secrets.d.ts +9 -0
- package/dist/secrets.d.ts.map +1 -0
- package/dist/secrets.js +23 -0
- package/dist/secrets.js.map +1 -0
- package/dist/sessions.d.ts +44 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +76 -0
- package/dist/sessions.js.map +1 -0
- package/dist/skills.d.ts +12 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +13 -0
- package/dist/skills.js.map +1 -0
- package/dist/smoke.d.ts +8 -0
- package/dist/smoke.d.ts.map +1 -0
- package/dist/smoke.js +5 -0
- package/dist/smoke.js.map +1 -0
- package/dist/sqlite-storage.d.ts +30 -0
- package/dist/sqlite-storage.d.ts.map +1 -0
- package/dist/sqlite-storage.js +52 -0
- package/dist/sqlite-storage.js.map +1 -0
- package/dist/storage.d.ts +74 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +83 -0
- package/dist/storage.js.map +1 -0
- package/dist/structured-output.d.ts +14 -0
- package/dist/structured-output.d.ts.map +1 -0
- package/dist/structured-output.js +24 -0
- package/dist/structured-output.js.map +1 -0
- package/dist/telemetry.d.ts +27 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +40 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tenancy.d.ts +9 -0
- package/dist/tenancy.d.ts.map +1 -0
- package/dist/tenancy.js +8 -0
- package/dist/tenancy.js.map +1 -0
- package/dist/tool-factory.d.ts +25 -0
- package/dist/tool-factory.d.ts.map +1 -0
- package/dist/tool-factory.js +38 -0
- package/dist/tool-factory.js.map +1 -0
- package/dist/tool-orchestrator.d.ts +89 -0
- package/dist/tool-orchestrator.d.ts.map +1 -0
- package/dist/tool-orchestrator.js +102 -0
- package/dist/tool-orchestrator.js.map +1 -0
- package/dist/tool-registry.d.ts +52 -0
- package/dist/tool-registry.d.ts.map +1 -0
- package/dist/tool-registry.js +19 -0
- package/dist/tool-registry.js.map +1 -0
- package/dist/types.d.ts +1020 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +115 -0
- package/dist/types.js.map +1 -0
- package/dist/vector-memory.d.ts +19 -0
- package/dist/vector-memory.d.ts.map +1 -0
- package/dist/vector-memory.js +58 -0
- package/dist/vector-memory.js.map +1 -0
- package/dist/workflow.d.ts +65 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.js +102 -0
- package/dist/workflow.js.map +1 -0
- package/dist/workspace.d.ts +35 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +131 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +223 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type AgentPlan, type AgentRunSnapshot, type InterpretedGoal, type SuccessCriterion } from "./types.js";
|
|
2
|
+
import { ToolRegistry, type ToolExecutor } from "./tool-registry.js";
|
|
3
|
+
import type { PermissionMatrix } from "./permissions.js";
|
|
4
|
+
import type { EventBus } from "./event-bus.js";
|
|
5
|
+
import type { RunStore } from "./storage.js";
|
|
6
|
+
import type { HookDispatcher } from "./hooks.js";
|
|
7
|
+
export type AgentReasoner = {
|
|
8
|
+
interpretGoal(input: {
|
|
9
|
+
objective: string;
|
|
10
|
+
taskId: string;
|
|
11
|
+
runId: string;
|
|
12
|
+
}): Promise<InterpretedGoal>;
|
|
13
|
+
defineSuccessCriteria(input: {
|
|
14
|
+
goal: InterpretedGoal;
|
|
15
|
+
taskId: string;
|
|
16
|
+
runId: string;
|
|
17
|
+
}): Promise<SuccessCriterion[]>;
|
|
18
|
+
createPlan(input: {
|
|
19
|
+
taskId: string;
|
|
20
|
+
runId: string;
|
|
21
|
+
goal: InterpretedGoal;
|
|
22
|
+
criteria: SuccessCriterion[];
|
|
23
|
+
}): Promise<AgentPlan>;
|
|
24
|
+
};
|
|
25
|
+
export type AgentRuntimeOptions = {
|
|
26
|
+
reasoner: AgentReasoner;
|
|
27
|
+
toolRegistry?: ToolRegistry;
|
|
28
|
+
toolExecutor?: ToolExecutor;
|
|
29
|
+
permissions?: PermissionMatrix;
|
|
30
|
+
workspaceRoot?: string;
|
|
31
|
+
events?: EventBus;
|
|
32
|
+
runStore?: RunStore;
|
|
33
|
+
hooks?: HookDispatcher;
|
|
34
|
+
};
|
|
35
|
+
export declare class AgentRuntime {
|
|
36
|
+
private readonly options;
|
|
37
|
+
private readonly runs;
|
|
38
|
+
private readonly validator;
|
|
39
|
+
private readonly completionGate;
|
|
40
|
+
private readonly loopGuard;
|
|
41
|
+
private readonly toolRegistry;
|
|
42
|
+
constructor(options: AgentRuntimeOptions);
|
|
43
|
+
createRun(objective: string): AgentRunSnapshot;
|
|
44
|
+
getRun(runId: string): AgentRunSnapshot | undefined;
|
|
45
|
+
prepare(runId: string): Promise<AgentRunSnapshot>;
|
|
46
|
+
runToCompletion(runId: string, signal?: AbortSignal): Promise<AgentRunSnapshot>;
|
|
47
|
+
private executeStep;
|
|
48
|
+
private dependenciesSatisfied;
|
|
49
|
+
private requireRun;
|
|
50
|
+
private persistRun;
|
|
51
|
+
private recordEvent;
|
|
52
|
+
private publishRunEvent;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAA0G,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAkB,KAAK,eAAe,EAAmB,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAIzP,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACrG,qBAAqB,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,eAAe,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACpH,UAAU,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,eAAe,CAAC;QAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAC/H,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB,CAAC;AAqBF,qBAAa,YAAY;IAOX,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuC;IAC5D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;gBAEf,OAAO,EAAE,mBAAmB;IAIzD,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB;IAoB9C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI7C,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwBjD,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;YA0EvE,WAAW;IA2CzB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,UAAU;YAMJ,UAAU;YAIV,WAAW;YAKX,eAAe;CAW9B"}
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { agentObservationSchema, agentPlanSchema, interpretedGoalSchema } from "./types.js";
|
|
3
|
+
import { CompletionGate } from "./completion-gate.js";
|
|
4
|
+
import { LoopGuard } from "./loop-guard.js";
|
|
5
|
+
import { PlanValidator } from "./plan-validator.js";
|
|
6
|
+
import { ToolRegistry } from "./tool-registry.js";
|
|
7
|
+
function nowIso() {
|
|
8
|
+
return new Date().toISOString();
|
|
9
|
+
}
|
|
10
|
+
function event(payload) {
|
|
11
|
+
return { ...payload, at: nowIso() };
|
|
12
|
+
}
|
|
13
|
+
function delay(ms, signal) {
|
|
14
|
+
if (ms <= 0)
|
|
15
|
+
return Promise.resolve();
|
|
16
|
+
return new Promise((resolvePromise) => {
|
|
17
|
+
const timer = setTimeout(resolvePromise, ms);
|
|
18
|
+
signal?.addEventListener("abort", () => {
|
|
19
|
+
clearTimeout(timer);
|
|
20
|
+
resolvePromise();
|
|
21
|
+
}, { once: true });
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
export class AgentRuntime {
|
|
25
|
+
options;
|
|
26
|
+
runs = new Map();
|
|
27
|
+
validator = new PlanValidator();
|
|
28
|
+
completionGate = new CompletionGate();
|
|
29
|
+
loopGuard = new LoopGuard();
|
|
30
|
+
toolRegistry;
|
|
31
|
+
constructor(options) {
|
|
32
|
+
this.options = options;
|
|
33
|
+
this.toolRegistry = options.toolRegistry ?? new ToolRegistry();
|
|
34
|
+
}
|
|
35
|
+
createRun(objective) {
|
|
36
|
+
const taskId = randomUUID();
|
|
37
|
+
const runId = randomUUID();
|
|
38
|
+
const createdAt = nowIso();
|
|
39
|
+
const snapshot = {
|
|
40
|
+
taskId,
|
|
41
|
+
runId,
|
|
42
|
+
state: "RECEIVED",
|
|
43
|
+
objective,
|
|
44
|
+
observations: [],
|
|
45
|
+
events: [],
|
|
46
|
+
createdAt,
|
|
47
|
+
updatedAt: createdAt
|
|
48
|
+
};
|
|
49
|
+
void this.recordEvent(snapshot, event({ type: "task.created", taskId, runId, objective }));
|
|
50
|
+
this.runs.set(runId, snapshot);
|
|
51
|
+
void this.persistRun(snapshot);
|
|
52
|
+
return snapshot;
|
|
53
|
+
}
|
|
54
|
+
getRun(runId) {
|
|
55
|
+
return this.runs.get(runId);
|
|
56
|
+
}
|
|
57
|
+
async prepare(runId) {
|
|
58
|
+
const run = this.requireRun(runId);
|
|
59
|
+
run.state = "UNDERSTANDING";
|
|
60
|
+
run.goal = interpretedGoalSchema.parse(await this.options.reasoner.interpretGoal({ objective: run.objective, taskId: run.taskId, runId }));
|
|
61
|
+
await this.recordEvent(run, event({ type: "goal.interpreted", taskId: run.taskId, runId, goal: run.goal }));
|
|
62
|
+
run.state = "DEFINING_SUCCESS";
|
|
63
|
+
const criteria = await this.options.reasoner.defineSuccessCriteria({ goal: run.goal, taskId: run.taskId, runId });
|
|
64
|
+
run.state = "PLANNING";
|
|
65
|
+
run.plan = agentPlanSchema.parse(await this.options.reasoner.createPlan({ taskId: run.taskId, runId, goal: run.goal, criteria }));
|
|
66
|
+
await this.recordEvent(run, event({ type: "plan.created", taskId: run.taskId, runId, plan: run.plan }));
|
|
67
|
+
run.state = "VALIDATING_PLAN";
|
|
68
|
+
const validation = this.validator.validate(run.plan);
|
|
69
|
+
if (!validation.valid) {
|
|
70
|
+
run.state = "BLOCKED";
|
|
71
|
+
await this.recordEvent(run, event({ type: "task.blocked", taskId: run.taskId, runId, reason: validation.errors.join("; ") }));
|
|
72
|
+
}
|
|
73
|
+
run.updatedAt = nowIso();
|
|
74
|
+
await this.persistRun(run);
|
|
75
|
+
return run;
|
|
76
|
+
}
|
|
77
|
+
async runToCompletion(runId, signal) {
|
|
78
|
+
let run = this.requireRun(runId);
|
|
79
|
+
if (!run.plan)
|
|
80
|
+
run = await this.prepare(runId);
|
|
81
|
+
if (run.state === "BLOCKED")
|
|
82
|
+
return run;
|
|
83
|
+
const plan = run.plan;
|
|
84
|
+
if (!plan)
|
|
85
|
+
throw new Error(`Agent run has no executable plan: ${runId}`);
|
|
86
|
+
for (const step of plan.steps) {
|
|
87
|
+
if (signal?.aborted) {
|
|
88
|
+
run.state = "CANCELLED";
|
|
89
|
+
return run;
|
|
90
|
+
}
|
|
91
|
+
if (step.status === "completed" || step.status === "skipped")
|
|
92
|
+
continue;
|
|
93
|
+
if (!this.dependenciesSatisfied(plan, step))
|
|
94
|
+
continue;
|
|
95
|
+
const hookContext = { taskId: run.taskId, runId: run.runId };
|
|
96
|
+
let observation;
|
|
97
|
+
let attempt = 0;
|
|
98
|
+
for (;;) {
|
|
99
|
+
attempt += 1;
|
|
100
|
+
await this.options.hooks?.fire("beforeTool", { toolId: step.id, context: hookContext });
|
|
101
|
+
observation = await this.executeStep(run, step, signal);
|
|
102
|
+
await this.options.hooks?.fire("afterTool", { toolId: step.id, result: observation, context: hookContext });
|
|
103
|
+
if (observation.status !== "failed")
|
|
104
|
+
break;
|
|
105
|
+
const loop = this.loopGuard.record({ runId, stepId: step.id, type: "failed_observation", value: { summary: observation.summary }, maxRepeated: 2 });
|
|
106
|
+
if (loop.repeated || attempt >= Math.max(1, step.retryPolicy.maxAttempts))
|
|
107
|
+
break;
|
|
108
|
+
run.state = "WAITING_FOR_RETRY";
|
|
109
|
+
await this.recordEvent(run, event({ type: "step.retrying", taskId: run.taskId, runId, stepId: step.id, reason: observation.summary }));
|
|
110
|
+
await this.options.hooks?.fire("onRetry", { attempt, error: observation.summary, context: hookContext });
|
|
111
|
+
const backoff = Math.min(step.retryPolicy.backoffMs * attempt, step.retryPolicy.maxBackoffMs || Number.POSITIVE_INFINITY);
|
|
112
|
+
if (backoff > 0)
|
|
113
|
+
await delay(backoff, signal);
|
|
114
|
+
if (signal?.aborted) {
|
|
115
|
+
run.state = "CANCELLED";
|
|
116
|
+
return run;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
run.observations.push(observation);
|
|
120
|
+
if (observation.status === "failed") {
|
|
121
|
+
step.status = "failed";
|
|
122
|
+
await this.recordEvent(run, event({ type: "step.failed", taskId: run.taskId, runId, stepId: step.id, observation }));
|
|
123
|
+
run.state = "BLOCKED";
|
|
124
|
+
await this.recordEvent(run, event({ type: "task.blocked", taskId: run.taskId, runId, reason: observation.summary }));
|
|
125
|
+
run.updatedAt = nowIso();
|
|
126
|
+
await this.persistRun(run);
|
|
127
|
+
return run;
|
|
128
|
+
}
|
|
129
|
+
if (observation.nextHints.includes("approval_required")) {
|
|
130
|
+
step.status = "waiting_approval";
|
|
131
|
+
run.state = "WAITING_FOR_APPROVAL";
|
|
132
|
+
await this.recordEvent(run, event({ type: "task.waiting_for_approval", taskId: run.taskId, runId, stepId: step.id, reason: observation.summary }));
|
|
133
|
+
run.updatedAt = nowIso();
|
|
134
|
+
await this.persistRun(run);
|
|
135
|
+
return run;
|
|
136
|
+
}
|
|
137
|
+
step.status = "completed";
|
|
138
|
+
await this.recordEvent(run, event({ type: "step.completed", taskId: run.taskId, runId, stepId: step.id, observation }));
|
|
139
|
+
}
|
|
140
|
+
const decision = this.completionGate.evaluate(run.goal?.successCriteria ?? run.plan?.steps.flatMap((step) => step.successCriteria) ?? [], run.observations);
|
|
141
|
+
run.state = decision.type === "COMPLETE" ? "COMPLETED" : "BLOCKED";
|
|
142
|
+
if (decision.type === "COMPLETE")
|
|
143
|
+
await this.recordEvent(run, event({ type: "task.completed", taskId: run.taskId, runId, decision }));
|
|
144
|
+
else
|
|
145
|
+
await this.recordEvent(run, event({ type: "task.blocked", taskId: run.taskId, runId, reason: decision.reason }));
|
|
146
|
+
run.updatedAt = nowIso();
|
|
147
|
+
await this.persistRun(run);
|
|
148
|
+
return run;
|
|
149
|
+
}
|
|
150
|
+
async executeStep(run, step, signal) {
|
|
151
|
+
step.status = "running";
|
|
152
|
+
run.state = step.type === "validate" || step.type === "finalize" ? "VALIDATING" : "EXECUTING";
|
|
153
|
+
await this.recordEvent(run, event({ type: "step.started", taskId: run.taskId, runId: run.runId, stepId: step.id }));
|
|
154
|
+
if (!this.options.toolExecutor || step.requiredCapabilities.length === 0) {
|
|
155
|
+
return agentObservationSchema.parse({
|
|
156
|
+
status: "success",
|
|
157
|
+
summary: `Step recorded: ${step.objective}`,
|
|
158
|
+
evidence: step.expectedEvidence.map((requirement) => ({ id: randomUUID(), kind: requirement.kind, summary: requirement.description })),
|
|
159
|
+
data: { mode: "record_only" }
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
const capability = step.requiredCapabilities[0]?.capability;
|
|
163
|
+
const candidate = capability ? this.toolRegistry.select(capability, this.options.permissions) : null;
|
|
164
|
+
if (!candidate) {
|
|
165
|
+
return agentObservationSchema.parse({
|
|
166
|
+
status: "failed",
|
|
167
|
+
summary: capability ? `No tool is available for ${capability}.` : "The step does not declare an executable capability.",
|
|
168
|
+
errors: [{ code: "TOOL_UNAVAILABLE", message: "No matching tool was registered.", retryable: false }]
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
const context = {
|
|
172
|
+
taskId: run.taskId,
|
|
173
|
+
runId: run.runId,
|
|
174
|
+
stepId: step.id,
|
|
175
|
+
...(this.options.workspaceRoot ? { workspaceRoot: this.options.workspaceRoot } : {}),
|
|
176
|
+
...(signal ? { signal } : {})
|
|
177
|
+
};
|
|
178
|
+
const result = await this.options.toolExecutor.execute(candidate.definition.id, {}, context);
|
|
179
|
+
if (result.status === "pending_approval")
|
|
180
|
+
return agentObservationSchema.parse({ status: "partial", summary: result.reason, nextHints: ["approval_required"] });
|
|
181
|
+
if (result.status === "error")
|
|
182
|
+
return agentObservationSchema.parse({ status: "failed", summary: result.error, errors: [{ code: "TOOL_ERROR", message: result.error, retryable: result.retryable ?? false }] });
|
|
183
|
+
return agentObservationSchema.parse({
|
|
184
|
+
status: "success",
|
|
185
|
+
summary: "Tool execution completed.",
|
|
186
|
+
data: result.output,
|
|
187
|
+
evidence: result.evidence ?? step.expectedEvidence.map((requirement) => ({ id: randomUUID(), kind: requirement.kind, summary: requirement.description }))
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
dependenciesSatisfied(plan, step) {
|
|
191
|
+
return step.dependencies.every((dependency) => plan.steps.find((candidate) => candidate.id === dependency)?.status === "completed");
|
|
192
|
+
}
|
|
193
|
+
requireRun(runId) {
|
|
194
|
+
const run = this.runs.get(runId);
|
|
195
|
+
if (!run)
|
|
196
|
+
throw new Error(`Agent run not found: ${runId}`);
|
|
197
|
+
return run;
|
|
198
|
+
}
|
|
199
|
+
async persistRun(run) {
|
|
200
|
+
await this.options.runStore?.saveRun(run);
|
|
201
|
+
}
|
|
202
|
+
async recordEvent(run, agentEvent) {
|
|
203
|
+
run.events.push(agentEvent);
|
|
204
|
+
await this.publishRunEvent(agentEvent);
|
|
205
|
+
}
|
|
206
|
+
async publishRunEvent(agentEvent) {
|
|
207
|
+
await this.options.events?.publish({
|
|
208
|
+
type: agentEvent.type,
|
|
209
|
+
source: "agent-runtime",
|
|
210
|
+
taskId: agentEvent.taskId,
|
|
211
|
+
runId: agentEvent.runId,
|
|
212
|
+
...(agentEvent.stepId ? { stepId: agentEvent.stepId } : {}),
|
|
213
|
+
visibility: agentEvent.type.startsWith("task.") ? "user" : "technical",
|
|
214
|
+
payload: agentEvent
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { AgentRuntime, type AgentReasoner } from "./runtime.js";
|
|
2
|
+
import { ToolRegistry, type ToolDefinition, type ToolExecutor } from "./tool-registry.js";
|
|
3
|
+
import { EventBus } from "./event-bus.js";
|
|
4
|
+
import { MemoryStore } from "./memory.js";
|
|
5
|
+
import { MissionRuntime, type MissionPlanner, type MissionVerifier } from "./mission-runtime.js";
|
|
6
|
+
import { ApprovalManager } from "./approvals.js";
|
|
7
|
+
import { TransparentToolOrchestrator, type ToolOrchestrationResult, type ToolRouter, type ToolTraceEvent } from "./tool-orchestrator.js";
|
|
8
|
+
import type { ChatMessage } from "./openai-compatible.js";
|
|
9
|
+
import type { NexaStorage } from "./storage.js";
|
|
10
|
+
import type { NexaTelemetry } from "./telemetry.js";
|
|
11
|
+
export type CreateAgentSdkInput = {
|
|
12
|
+
reasoner: AgentReasoner;
|
|
13
|
+
tools?: ToolDefinition[];
|
|
14
|
+
toolExecutor?: ToolExecutor;
|
|
15
|
+
workspaceRoot?: string;
|
|
16
|
+
missionPlanner?: MissionPlanner;
|
|
17
|
+
missionVerifier?: MissionVerifier;
|
|
18
|
+
toolRouter?: ToolRouter;
|
|
19
|
+
trace?: (event: ToolTraceEvent) => void;
|
|
20
|
+
storage?: NexaStorage;
|
|
21
|
+
telemetry?: NexaTelemetry;
|
|
22
|
+
};
|
|
23
|
+
export type NexaAgentSdk = {
|
|
24
|
+
agent: AgentRuntime;
|
|
25
|
+
missions: MissionRuntime;
|
|
26
|
+
tools: ToolRegistry;
|
|
27
|
+
memory: MemoryStore;
|
|
28
|
+
events: EventBus;
|
|
29
|
+
approvals: ApprovalManager;
|
|
30
|
+
toolOrchestrator: TransparentToolOrchestrator;
|
|
31
|
+
prepareTurnWithTools(input: {
|
|
32
|
+
text: string;
|
|
33
|
+
messages: ChatMessage[];
|
|
34
|
+
maxToolRounds?: number;
|
|
35
|
+
}): Promise<{
|
|
36
|
+
run: Awaited<ReturnType<AgentRuntime["runToCompletion"]>>;
|
|
37
|
+
toolTurn: ToolOrchestrationResult;
|
|
38
|
+
modelMessages: ChatMessage[];
|
|
39
|
+
}>;
|
|
40
|
+
};
|
|
41
|
+
export declare function createAgentSdk(input: CreateAgentSdkInput): AgentRuntime;
|
|
42
|
+
export declare function createNexaAgentSdk(input: CreateAgentSdkInput): NexaAgentSdk;
|
|
43
|
+
//# sourceMappingURL=sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAA4B,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACjG,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,KAAK,uBAAuB,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzI,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,eAAe,CAAC;IAC3B,gBAAgB,EAAE,2BAA2B,CAAC;IAC9C,oBAAoB,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QACtG,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAC1D,QAAQ,EAAE,uBAAuB,CAAC;QAClC,aAAa,EAAE,WAAW,EAAE,CAAC;KAC9B,CAAC,CAAC;CACJ,CAAC;AAEF,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CAEvE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,YAAY,CA2D3E"}
|
package/dist/sdk.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { AgentRuntime } from "./runtime.js";
|
|
2
|
+
import { ToolRegistry } from "./tool-registry.js";
|
|
3
|
+
import { EventBus } from "./event-bus.js";
|
|
4
|
+
import { MemoryStore } from "./memory.js";
|
|
5
|
+
import { MissionRuntime } from "./mission-runtime.js";
|
|
6
|
+
import { ApprovalManager } from "./approvals.js";
|
|
7
|
+
import { TransparentToolOrchestrator } from "./tool-orchestrator.js";
|
|
8
|
+
export function createAgentSdk(input) {
|
|
9
|
+
return createNexaAgentSdk(input).agent;
|
|
10
|
+
}
|
|
11
|
+
export function createNexaAgentSdk(input) {
|
|
12
|
+
const toolRegistry = new ToolRegistry();
|
|
13
|
+
for (const tool of input.tools ?? [])
|
|
14
|
+
toolRegistry.register(tool);
|
|
15
|
+
const events = new EventBus(hasEventJournal(input.storage) ? input.storage : undefined);
|
|
16
|
+
if (input.telemetry)
|
|
17
|
+
events.subscribe((event) => input.telemetry?.event(event));
|
|
18
|
+
const memory = new MemoryStore();
|
|
19
|
+
const approvals = new ApprovalManager(hasApprovalStore(input.storage) ? input.storage : undefined);
|
|
20
|
+
const toolOrchestrator = new TransparentToolOrchestrator(input.toolExecutor ?? {
|
|
21
|
+
async execute(toolId) {
|
|
22
|
+
return { status: "error", error: `No tool executor configured for ${toolId}.`, retryable: false };
|
|
23
|
+
}
|
|
24
|
+
}, {
|
|
25
|
+
...(input.toolRouter ? { router: input.toolRouter } : {}),
|
|
26
|
+
trace: (event) => {
|
|
27
|
+
input.trace?.(event);
|
|
28
|
+
void input.telemetry?.toolTrace(event);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
const options = {
|
|
32
|
+
reasoner: input.reasoner,
|
|
33
|
+
toolRegistry,
|
|
34
|
+
events,
|
|
35
|
+
...(hasRunStore(input.storage) ? { runStore: input.storage } : {}),
|
|
36
|
+
...(input.toolExecutor ? { toolExecutor: input.toolExecutor } : {}),
|
|
37
|
+
...(input.workspaceRoot ? { workspaceRoot: input.workspaceRoot } : {})
|
|
38
|
+
};
|
|
39
|
+
const agent = new AgentRuntime(options);
|
|
40
|
+
return {
|
|
41
|
+
agent,
|
|
42
|
+
missions: new MissionRuntime({
|
|
43
|
+
tools: toolRegistry,
|
|
44
|
+
events,
|
|
45
|
+
memory,
|
|
46
|
+
...(input.toolExecutor ? { toolExecutor: input.toolExecutor } : {}),
|
|
47
|
+
...(input.missionPlanner ? { planner: input.missionPlanner } : {}),
|
|
48
|
+
...(input.missionVerifier ? { verifier: input.missionVerifier } : {})
|
|
49
|
+
}),
|
|
50
|
+
tools: toolRegistry,
|
|
51
|
+
memory,
|
|
52
|
+
events,
|
|
53
|
+
approvals,
|
|
54
|
+
toolOrchestrator,
|
|
55
|
+
async prepareTurnWithTools(turnInput) {
|
|
56
|
+
const run = agent.createRun(turnInput.text);
|
|
57
|
+
const completedRun = await agent.runToCompletion(run.runId);
|
|
58
|
+
const toolTurn = await toolOrchestrator.runToolLoop({
|
|
59
|
+
text: turnInput.text,
|
|
60
|
+
tools: toolRegistry.list(),
|
|
61
|
+
taskId: completedRun.taskId,
|
|
62
|
+
runId: completedRun.runId,
|
|
63
|
+
...(turnInput.maxToolRounds ? { maxRounds: turnInput.maxToolRounds } : {})
|
|
64
|
+
});
|
|
65
|
+
return {
|
|
66
|
+
run: completedRun,
|
|
67
|
+
toolTurn,
|
|
68
|
+
modelMessages: [...turnInput.messages, ...toolTurn.contextMessages]
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function hasRunStore(storage) {
|
|
74
|
+
return typeof storage?.saveRun === "function" && typeof storage.getRun === "function";
|
|
75
|
+
}
|
|
76
|
+
function hasEventJournal(storage) {
|
|
77
|
+
return typeof storage?.appendEvent === "function" && typeof storage.listEvents === "function";
|
|
78
|
+
}
|
|
79
|
+
function hasApprovalStore(storage) {
|
|
80
|
+
return typeof storage?.saveApproval === "function" && typeof storage.getApproval === "function" && typeof storage.listApprovals === "function";
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=sdk.js.map
|
package/dist/sdk.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type SecretRef = {
|
|
2
|
+
readonly __nexaSecretRef: true;
|
|
3
|
+
readonly envKey: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function secret(envKey: string): SecretRef;
|
|
6
|
+
export declare function isSecretRef(value: unknown): value is SecretRef;
|
|
7
|
+
export declare function resolveSecret(ref: SecretRef, env?: NodeJS.ProcessEnv): string;
|
|
8
|
+
export declare function resolveSecretsDeep<T>(value: T, env?: NodeJS.ProcessEnv): T;
|
|
9
|
+
//# sourceMappingURL=secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAEhD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAI1F;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,CAAC,CAOvF"}
|
package/dist/secrets.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export function secret(envKey) {
|
|
2
|
+
return { __nexaSecretRef: true, envKey };
|
|
3
|
+
}
|
|
4
|
+
export function isSecretRef(value) {
|
|
5
|
+
return Boolean(value && typeof value === "object" && value.__nexaSecretRef === true);
|
|
6
|
+
}
|
|
7
|
+
export function resolveSecret(ref, env = process.env) {
|
|
8
|
+
const value = env[ref.envKey];
|
|
9
|
+
if (value === undefined)
|
|
10
|
+
throw new Error(`Missing required secret: environment variable "${ref.envKey}" is not set.`);
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
export function resolveSecretsDeep(value, env = process.env) {
|
|
14
|
+
if (isSecretRef(value))
|
|
15
|
+
return resolveSecret(value, env);
|
|
16
|
+
if (Array.isArray(value))
|
|
17
|
+
return value.map((item) => resolveSecretsDeep(item, env));
|
|
18
|
+
if (value && typeof value === "object") {
|
|
19
|
+
return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, resolveSecretsDeep(item, env)]));
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,MAAM,CAAC,MAAc;IACnC,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAuC,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC;AAC1H,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAc,EAAE,MAAyB,OAAO,CAAC,GAAG;IAChF,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,GAAG,CAAC,MAAM,eAAe,CAAC,CAAC;IACtH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAI,KAAQ,EAAE,MAAyB,OAAO,CAAC,GAAG;IAClF,IAAI,WAAW,CAAC,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC,KAAK,EAAE,GAAG,CAAiB,CAAC;IACzE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAiB,CAAC;IACpG,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAM,CAAC;IACnH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ChatMessage } from "./openai-compatible.js";
|
|
2
|
+
import type { JsonObject } from "./types.js";
|
|
3
|
+
import type { SessionStore } from "./storage.js";
|
|
4
|
+
export type SessionRunResult = {
|
|
5
|
+
text: string;
|
|
6
|
+
messages: ChatMessage[];
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
};
|
|
9
|
+
export type SessionRunner = (input: {
|
|
10
|
+
text: string;
|
|
11
|
+
messages: ChatMessage[];
|
|
12
|
+
}) => Promise<SessionRunResult>;
|
|
13
|
+
export type CreateSessionInput = {
|
|
14
|
+
id?: string;
|
|
15
|
+
systemPrompt?: string;
|
|
16
|
+
metadata?: JsonObject;
|
|
17
|
+
store?: SessionStore;
|
|
18
|
+
runner: SessionRunner;
|
|
19
|
+
};
|
|
20
|
+
export declare class AgentSession {
|
|
21
|
+
readonly id: string;
|
|
22
|
+
private messages;
|
|
23
|
+
private metadata;
|
|
24
|
+
private readonly store;
|
|
25
|
+
private readonly runner;
|
|
26
|
+
private createdAt;
|
|
27
|
+
constructor(input: CreateSessionInput & {
|
|
28
|
+
initialMessages?: ChatMessage[];
|
|
29
|
+
createdAt?: string;
|
|
30
|
+
});
|
|
31
|
+
history(): ChatMessage[];
|
|
32
|
+
run(text: string): Promise<SessionRunResult>;
|
|
33
|
+
compact(maxMessages?: number): Promise<void>;
|
|
34
|
+
reset(): Promise<void>;
|
|
35
|
+
fork(newId?: string): Promise<AgentSession>;
|
|
36
|
+
private persist;
|
|
37
|
+
}
|
|
38
|
+
export declare function createSession(input: CreateSessionInput): AgentSession;
|
|
39
|
+
export declare function loadSession(input: {
|
|
40
|
+
id: string;
|
|
41
|
+
store: SessionStore;
|
|
42
|
+
runner: SessionRunner;
|
|
43
|
+
}): Promise<AgentSession | undefined>;
|
|
44
|
+
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,cAAc,CAAC;AAGhE,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AACjG,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAA;CAAE,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE5G,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,qBAAa,YAAY;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,SAAS,CAAS;gBAEd,KAAK,EAAE,kBAAkB,GAAG;QAAE,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAS/F,OAAO,IAAI,WAAW,EAAE;IAIlB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQ5C,OAAO,CAAC,WAAW,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YAYnC,OAAO;CAUtB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,CAErE;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GAAG,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,CAWtI"}
|
package/dist/sessions.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { InMemorySessionStore } from "./storage.js";
|
|
3
|
+
export class AgentSession {
|
|
4
|
+
id;
|
|
5
|
+
messages;
|
|
6
|
+
metadata;
|
|
7
|
+
store;
|
|
8
|
+
runner;
|
|
9
|
+
createdAt;
|
|
10
|
+
constructor(input) {
|
|
11
|
+
this.id = input.id ?? randomUUID();
|
|
12
|
+
this.messages = input.initialMessages ?? (input.systemPrompt ? [{ role: "system", content: input.systemPrompt }] : []);
|
|
13
|
+
this.metadata = input.metadata ?? {};
|
|
14
|
+
this.store = input.store ?? new InMemorySessionStore();
|
|
15
|
+
this.runner = input.runner;
|
|
16
|
+
this.createdAt = input.createdAt ?? new Date().toISOString();
|
|
17
|
+
}
|
|
18
|
+
history() {
|
|
19
|
+
return [...this.messages];
|
|
20
|
+
}
|
|
21
|
+
async run(text) {
|
|
22
|
+
const priorMessages = [...this.messages];
|
|
23
|
+
const result = await this.runner({ text, messages: priorMessages });
|
|
24
|
+
this.messages = result.messages;
|
|
25
|
+
await this.persist();
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
28
|
+
async compact(maxMessages = 20) {
|
|
29
|
+
const system = this.messages.filter((message) => message.role === "system");
|
|
30
|
+
const rest = this.messages.filter((message) => message.role !== "system");
|
|
31
|
+
this.messages = [...system, ...rest.slice(-maxMessages)];
|
|
32
|
+
await this.persist();
|
|
33
|
+
}
|
|
34
|
+
async reset() {
|
|
35
|
+
this.messages = this.messages.filter((message) => message.role === "system");
|
|
36
|
+
await this.persist();
|
|
37
|
+
}
|
|
38
|
+
async fork(newId) {
|
|
39
|
+
const forked = new AgentSession({
|
|
40
|
+
id: newId ?? randomUUID(),
|
|
41
|
+
metadata: this.metadata,
|
|
42
|
+
store: this.store,
|
|
43
|
+
runner: this.runner,
|
|
44
|
+
initialMessages: this.history()
|
|
45
|
+
});
|
|
46
|
+
await forked.persist();
|
|
47
|
+
return forked;
|
|
48
|
+
}
|
|
49
|
+
async persist() {
|
|
50
|
+
const record = {
|
|
51
|
+
id: this.id,
|
|
52
|
+
messages: this.messages,
|
|
53
|
+
metadata: this.metadata,
|
|
54
|
+
createdAt: this.createdAt,
|
|
55
|
+
updatedAt: new Date().toISOString()
|
|
56
|
+
};
|
|
57
|
+
await this.store.saveSession(record);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export function createSession(input) {
|
|
61
|
+
return new AgentSession(input);
|
|
62
|
+
}
|
|
63
|
+
export async function loadSession(input) {
|
|
64
|
+
const record = await input.store.getSession(input.id);
|
|
65
|
+
if (!record)
|
|
66
|
+
return undefined;
|
|
67
|
+
return new AgentSession({
|
|
68
|
+
id: record.id,
|
|
69
|
+
metadata: record.metadata,
|
|
70
|
+
store: input.store,
|
|
71
|
+
runner: input.runner,
|
|
72
|
+
initialMessages: record.messages,
|
|
73
|
+
createdAt: record.createdAt
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}
|
package/dist/skills.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AgentTool } from "./agent-builder.js";
|
|
2
|
+
import type { AgentToolRegistration } from "./openai-agent.js";
|
|
3
|
+
export type SkillDefinition = {
|
|
4
|
+
id: string;
|
|
5
|
+
description: string;
|
|
6
|
+
instructions: string;
|
|
7
|
+
tools?: Array<AgentTool | AgentToolRegistration>;
|
|
8
|
+
};
|
|
9
|
+
export declare function defineSkill(definition: SkillDefinition): SkillDefinition;
|
|
10
|
+
export declare function skillsToInstructions(skills: SkillDefinition[]): string;
|
|
11
|
+
export declare function skillsToToolRegistrations(skills: SkillDefinition[]): AgentToolRegistration[];
|
|
12
|
+
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,qBAAqB,CAAC,CAAC;CAClD,CAAC;AAEF,wBAAgB,WAAW,CAAC,UAAU,EAAE,eAAe,GAAG,eAAe,CAExE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAItE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,qBAAqB,EAAE,CAI5F"}
|