arcie 0.1.2

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.
Files changed (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +66 -0
  3. package/dist/agent/index.d.ts +3 -0
  4. package/dist/agent/index.d.ts.map +1 -0
  5. package/dist/agent/index.js +7 -0
  6. package/dist/agent/index.js.map +1 -0
  7. package/dist/auth/index.d.ts +10 -0
  8. package/dist/auth/index.d.ts.map +1 -0
  9. package/dist/auth/index.js +18 -0
  10. package/dist/auth/index.js.map +1 -0
  11. package/dist/channels/index.d.ts +5 -0
  12. package/dist/channels/index.d.ts.map +1 -0
  13. package/dist/channels/index.js +13 -0
  14. package/dist/channels/index.js.map +1 -0
  15. package/dist/cli/banner.d.ts +2 -0
  16. package/dist/cli/banner.d.ts.map +1 -0
  17. package/dist/cli/banner.js +10 -0
  18. package/dist/cli/banner.js.map +1 -0
  19. package/dist/cli/build.d.ts +5 -0
  20. package/dist/cli/build.d.ts.map +1 -0
  21. package/dist/cli/build.js +54 -0
  22. package/dist/cli/build.js.map +1 -0
  23. package/dist/cli/dev.d.ts +5 -0
  24. package/dist/cli/dev.d.ts.map +1 -0
  25. package/dist/cli/dev.js +74 -0
  26. package/dist/cli/dev.js.map +1 -0
  27. package/dist/cli/index.d.ts +3 -0
  28. package/dist/cli/index.d.ts.map +1 -0
  29. package/dist/cli/index.js +43 -0
  30. package/dist/cli/index.js.map +1 -0
  31. package/dist/cli/init.d.ts +4 -0
  32. package/dist/cli/init.d.ts.map +1 -0
  33. package/dist/cli/init.js +75 -0
  34. package/dist/cli/init.js.map +1 -0
  35. package/dist/context/index.d.ts +11 -0
  36. package/dist/context/index.d.ts.map +1 -0
  37. package/dist/context/index.js +38 -0
  38. package/dist/context/index.js.map +1 -0
  39. package/dist/discover/index.d.ts +31 -0
  40. package/dist/discover/index.d.ts.map +1 -0
  41. package/dist/discover/index.js +133 -0
  42. package/dist/discover/index.js.map +1 -0
  43. package/dist/hooks/index.d.ts +3 -0
  44. package/dist/hooks/index.d.ts.map +1 -0
  45. package/dist/hooks/index.js +7 -0
  46. package/dist/hooks/index.js.map +1 -0
  47. package/dist/index.d.ts +18 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +14 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/instructions/index.d.ts +4 -0
  52. package/dist/instructions/index.d.ts.map +1 -0
  53. package/dist/instructions/index.js +33 -0
  54. package/dist/instructions/index.js.map +1 -0
  55. package/dist/loader.d.ts +7 -0
  56. package/dist/loader.d.ts.map +1 -0
  57. package/dist/loader.js +102 -0
  58. package/dist/loader.js.map +1 -0
  59. package/dist/protocol/events.d.ts +192 -0
  60. package/dist/protocol/events.d.ts.map +1 -0
  61. package/dist/protocol/events.js +46 -0
  62. package/dist/protocol/events.js.map +1 -0
  63. package/dist/runner/index.d.ts +18 -0
  64. package/dist/runner/index.d.ts.map +1 -0
  65. package/dist/runner/index.js +278 -0
  66. package/dist/runner/index.js.map +1 -0
  67. package/dist/schedules/index.d.ts +3 -0
  68. package/dist/schedules/index.d.ts.map +1 -0
  69. package/dist/schedules/index.js +7 -0
  70. package/dist/schedules/index.js.map +1 -0
  71. package/dist/skills/index.d.ts +4 -0
  72. package/dist/skills/index.d.ts.map +1 -0
  73. package/dist/skills/index.js +28 -0
  74. package/dist/skills/index.js.map +1 -0
  75. package/dist/tools/index.d.ts +3 -0
  76. package/dist/tools/index.d.ts.map +1 -0
  77. package/dist/tools/index.js +10 -0
  78. package/dist/tools/index.js.map +1 -0
  79. package/dist/types.d.ts +118 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +2 -0
  82. package/dist/types.js.map +1 -0
  83. package/docs/getting-started.md +51 -0
  84. package/docs/index.md +31 -0
  85. package/docs/project-layout.md +88 -0
  86. package/package.json +73 -0
  87. package/templates/default/agent/agent.ts +13 -0
  88. package/templates/default/agent/channels/.gitkeep +0 -0
  89. package/templates/default/agent/connections/.gitkeep +0 -0
  90. package/templates/default/agent/instructions.md +3 -0
  91. package/templates/default/agent/knowledge/.gitkeep +0 -0
  92. package/templates/default/agent/policies/.gitkeep +0 -0
  93. package/templates/default/agent/schedules/.gitkeep +0 -0
  94. package/templates/default/agent/sessions/.gitkeep +0 -0
  95. package/templates/default/agent/subagents/.gitkeep +0 -0
  96. package/templates/default/agent/tools/.gitkeep +0 -0
  97. package/templates/default/package.json +17 -0
  98. package/templates/default/tsconfig.json +11 -0
@@ -0,0 +1,18 @@
1
+ import type { TurnContext } from "../types.js";
2
+ import { type StreamEvent } from "../protocol/events.js";
3
+ export interface RunOptions {
4
+ endpoint?: string;
5
+ apiKey?: string;
6
+ maxTurns?: number;
7
+ sessionId?: string;
8
+ onEvent?: (event: StreamEvent) => void;
9
+ }
10
+ export interface RunResult {
11
+ output: string;
12
+ turns: TurnContext[];
13
+ events: StreamEvent[];
14
+ sessionId: string;
15
+ }
16
+ export declare function runAgent(agentDir: string, input: string, options?: RunOptions): Promise<RunResult>;
17
+ export declare function streamAgent(agentDir: string, input: string, options?: RunOptions): AsyncGenerator<StreamEvent, void, unknown>;
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runner/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,aAAa,CAAC;AAChE,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAiDD,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC,SAAS,CAAC,CAmDpB;AAsID,wBAAuB,WAAW,CAChC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,UAAe,GACvB,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CA4G5C"}
@@ -0,0 +1,278 @@
1
+ import { zodToJsonSchema } from "zod-to-json-schema";
2
+ import { loadAgent } from "../loader.js";
3
+ import { createSessionStarted, createTurnStarted, createMessageReceived, createMessageAppended, createMessageCompleted, createStepStarted, createStepCompleted, createSessionWaiting, createTurnCompleted, createSessionCompleted, createToolCallStarted, createToolCallCompleted, } from "../protocol/events.js";
4
+ const DEFAULT_ENDPOINT = "https://cencori.com/v1";
5
+ function headers(apiKey, agent) {
6
+ return {
7
+ "Content-Type": "application/json",
8
+ Authorization: `Bearer ${apiKey}`,
9
+ ...(agent.manifest.config.cencori?.project
10
+ ? { "X-Project-ID": agent.manifest.config.cencori.project }
11
+ : {}),
12
+ };
13
+ }
14
+ async function createSession(endpoint, apiKey, agent) {
15
+ const res = await fetch(`${endpoint}/sessions`, {
16
+ method: "POST",
17
+ headers: headers(apiKey, agent),
18
+ body: JSON.stringify({
19
+ agent_id: agent.manifest.config.name,
20
+ metadata: {
21
+ model: agent.manifest.config.model,
22
+ instructions: agent.manifest.instructions,
23
+ },
24
+ }),
25
+ });
26
+ if (!res.ok) {
27
+ const err = await res.text();
28
+ throw new Error(`Cencori Sessions API error (${res.status}): ${err}`);
29
+ }
30
+ const data = await res.json();
31
+ return data.id;
32
+ }
33
+ function buildToolDefinitions(agent) {
34
+ return Object.entries(agent.manifest.tools).map(([name, tool]) => ({
35
+ name,
36
+ description: tool.description,
37
+ input_schema: tool.inputSchema
38
+ ? zodToJsonSchema(tool.inputSchema, { target: "openApi3" })
39
+ : undefined,
40
+ type: "function",
41
+ }));
42
+ }
43
+ export async function runAgent(agentDir, input, options = {}) {
44
+ const agent = await loadAgent(agentDir);
45
+ const endpoint = options.endpoint || process.env.CENCORI_API_URL || DEFAULT_ENDPOINT;
46
+ const apiKey = options.apiKey || process.env.CENCORI_API_KEY || "";
47
+ const events = [];
48
+ let outputText = "";
49
+ if (!apiKey) {
50
+ throw new Error("Cencori API key required. Set CENCORI_API_KEY env var or pass apiKey in options.");
51
+ }
52
+ const sessionId = options.sessionId || await createSession(endpoint, apiKey, agent);
53
+ for await (const event of streamAgent(agentDir, input, { ...options, sessionId, endpoint, apiKey })) {
54
+ events.push(event);
55
+ options.onEvent?.(event);
56
+ if (event.type === "message.completed" && event.data.text) {
57
+ outputText = event.data.text;
58
+ }
59
+ }
60
+ const toolCalls = [];
61
+ for (const e of events) {
62
+ if (e.type === "tool.started") {
63
+ const completed = events.find((ev) => ev.type === "tool.completed" && ev.data.callId === e.data.callId);
64
+ toolCalls.push({
65
+ tool: e.data.name,
66
+ input: e.data.input,
67
+ output: completed?.data.output,
68
+ durationMs: undefined,
69
+ });
70
+ }
71
+ }
72
+ return {
73
+ output: outputText,
74
+ turns: [{
75
+ id: events.find(e => e.type === "turn.started")?.data.turnId ?? "",
76
+ sessionId,
77
+ input,
78
+ output: outputText,
79
+ toolCalls,
80
+ }],
81
+ events,
82
+ sessionId,
83
+ };
84
+ }
85
+ async function* readTurnSSE(response, turnId) {
86
+ if (!response.ok) {
87
+ const error = await response.text();
88
+ throw new Error(`Cencori Sessions API error (${response.status}): ${error}`);
89
+ }
90
+ const reader = response.body?.getReader();
91
+ if (!reader)
92
+ return { status: "completed", text: "" };
93
+ const decoder = new TextDecoder();
94
+ let buffer = "";
95
+ let currentEvent = "";
96
+ let textSoFar = "";
97
+ const toolCalls = [];
98
+ while (true) {
99
+ const { done, value } = await reader.read();
100
+ if (done)
101
+ break;
102
+ buffer += decoder.decode(value, { stream: true });
103
+ const lines = buffer.split("\n");
104
+ buffer = lines.pop() ?? "";
105
+ for (const line of lines) {
106
+ if (line.startsWith("event: ")) {
107
+ currentEvent = line.slice(7);
108
+ }
109
+ else if (line.startsWith("data: ")) {
110
+ const payload = line.slice(6);
111
+ if (payload === "[DONE]")
112
+ continue;
113
+ try {
114
+ const parsed = JSON.parse(payload);
115
+ const eventType = currentEvent || parsed.type;
116
+ switch (eventType) {
117
+ case "turn.started": {
118
+ yield createTurnStarted(parsed.turn_number ?? 1, turnId);
119
+ yield createMessageReceived(parsed.input_text ?? "", parsed.turn_number ?? 1, turnId);
120
+ yield createStepStarted(1, 0, turnId);
121
+ break;
122
+ }
123
+ case "output_text.delta": {
124
+ if (parsed.delta) {
125
+ textSoFar += parsed.delta;
126
+ yield createMessageAppended(parsed.delta, textSoFar, 1, 0, turnId);
127
+ }
128
+ break;
129
+ }
130
+ case "tool_call.started": {
131
+ toolCalls.push({
132
+ name: parsed.tool,
133
+ args: parsed.arguments,
134
+ actionId: parsed.action_id,
135
+ });
136
+ yield createToolCallStarted(parsed.tool, parsed.arguments, parsed.action_id, 1, 0, turnId);
137
+ break;
138
+ }
139
+ case "turn.paused": {
140
+ currentEvent = "";
141
+ return {
142
+ status: "paused",
143
+ toolCalls: [...toolCalls],
144
+ text: textSoFar,
145
+ };
146
+ }
147
+ case "turn.completed": {
148
+ const out = parsed.output;
149
+ let finalText = textSoFar;
150
+ let finishReason = "stop";
151
+ if (out?.error) {
152
+ finishReason = "error";
153
+ }
154
+ else if (Array.isArray(out?.output)) {
155
+ for (const item of out.output) {
156
+ if (item.type === "message") {
157
+ const tc = item.content?.find((c) => c.type === "output_text");
158
+ if (tc?.text)
159
+ finalText = tc.text;
160
+ }
161
+ }
162
+ }
163
+ textSoFar = finalText;
164
+ yield createMessageCompleted(finalText, finishReason, 1, 0, turnId);
165
+ yield createStepCompleted(finishReason, 1, 0, turnId);
166
+ yield createTurnCompleted(1, turnId);
167
+ currentEvent = "";
168
+ return { status: "completed", text: finalText };
169
+ }
170
+ case "turn.resumed": {
171
+ break;
172
+ }
173
+ default: {
174
+ break;
175
+ }
176
+ }
177
+ currentEvent = "";
178
+ }
179
+ catch { }
180
+ }
181
+ }
182
+ }
183
+ return { status: "completed", text: textSoFar };
184
+ }
185
+ // ── Multi-turn agent loop ─────────────────────────────────────────
186
+ export async function* streamAgent(agentDir, input, options = {}) {
187
+ const agent = await loadAgent(agentDir);
188
+ const endpoint = options.endpoint || process.env.CENCORI_API_URL || DEFAULT_ENDPOINT;
189
+ const apiKey = options.apiKey || process.env.CENCORI_API_KEY || "";
190
+ if (!apiKey) {
191
+ throw new Error("Cencori API key required. Set CENCORI_API_KEY env var or pass apiKey in options.");
192
+ }
193
+ const sessionId = options.sessionId || await createSession(endpoint, apiKey, agent);
194
+ const model = agent.manifest.config.model;
195
+ const instructions = agent.manifest.instructions;
196
+ const tools = buildToolDefinitions(agent);
197
+ yield createSessionStarted(sessionId, {
198
+ agentId: agent.manifest.config.name ?? "unnamed",
199
+ modelId: model,
200
+ elineVersion: "0.1.2",
201
+ });
202
+ const turnId = crypto.randomUUID();
203
+ const maxToolLoops = options.maxTurns ?? 25;
204
+ let response = await fetch(`${endpoint}/sessions/${sessionId}/turns`, {
205
+ method: "POST",
206
+ headers: headers(apiKey, agent),
207
+ body: JSON.stringify({
208
+ model,
209
+ input,
210
+ instructions,
211
+ tools: tools.length > 0 ? tools : undefined,
212
+ stream: true,
213
+ pause_on_tool_calls: true,
214
+ }),
215
+ });
216
+ if (!response.ok) {
217
+ const error = await response.text();
218
+ yield createTurnCompleted(1, turnId);
219
+ yield createSessionCompleted();
220
+ throw new Error(`Cencori Sessions API error (${response.status}): ${error}`);
221
+ }
222
+ // Tool call loop: pause → execute → approve → resume → repeat
223
+ for (let loop = 0; loop < maxToolLoops; loop++) {
224
+ const eventGen = readTurnSSE(response, turnId);
225
+ let result;
226
+ let iter = await eventGen.next();
227
+ while (!iter.done) {
228
+ yield iter.value;
229
+ iter = await eventGen.next();
230
+ }
231
+ result = iter.value;
232
+ if (result.status === "completed")
233
+ break;
234
+ if (result.status !== "paused" || result.toolCalls.length === 0)
235
+ break;
236
+ const toolResults = [];
237
+ for (const tc of result.toolCalls) {
238
+ const toolDef = agent.manifest.tools[tc.name];
239
+ if (toolDef?.execute) {
240
+ try {
241
+ const output = await toolDef.execute(tc.args);
242
+ const outputStr = typeof output === "string" ? output : JSON.stringify(output);
243
+ yield createToolCallCompleted(tc.name, outputStr, tc.actionId, "completed", undefined, 1, 0, turnId);
244
+ toolResults.push({ action_id: tc.actionId, output: outputStr });
245
+ }
246
+ catch (err) {
247
+ const msg = err instanceof Error ? err.message : "Tool execution failed";
248
+ yield createToolCallCompleted(tc.name, msg, tc.actionId, "failed", { code: "execution_error", message: msg }, 1, 0, turnId);
249
+ toolResults.push({ action_id: tc.actionId, output: `Error: ${msg}` });
250
+ }
251
+ }
252
+ else {
253
+ yield createToolCallCompleted(tc.name, "Tool not found in agent manifest", tc.actionId, "failed", { code: "tool_not_found", message: `Tool "${tc.name}" not defined in agent` }, 1, 0, turnId);
254
+ toolResults.push({ action_id: tc.actionId, output: "Error: tool not defined" });
255
+ }
256
+ }
257
+ const firstActionId = toolResults[0]?.action_id ?? "";
258
+ if (!firstActionId)
259
+ break;
260
+ const approveRes = await fetch(`${endpoint}/sessions/${sessionId}/approve`, {
261
+ method: "POST",
262
+ headers: headers(apiKey, agent),
263
+ body: JSON.stringify({
264
+ action_id: firstActionId,
265
+ tool_results: toolResults,
266
+ }),
267
+ });
268
+ if (!approveRes.ok) {
269
+ const errText = await approveRes.text();
270
+ yield createTurnCompleted(1, turnId);
271
+ yield createSessionCompleted();
272
+ throw new Error(`Cencori Sessions approve error (${approveRes.status}): ${errText}`);
273
+ }
274
+ response = approveRes;
275
+ }
276
+ yield createSessionWaiting();
277
+ }
278
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runner/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ScheduleConfig } from "../types.js";
2
+ export declare function defineSchedule(config: ScheduleConfig): ScheduleConfig;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schedules/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAKrE"}
@@ -0,0 +1,7 @@
1
+ export function defineSchedule(config) {
2
+ if (!config.name || !config.cron || !config.handler) {
3
+ throw new Error("Schedule must have name, cron, and handler");
4
+ }
5
+ return config;
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schedules/index.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,MAAsB;IACnD,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SkillConfig } from "../types.js";
2
+ export declare function defineSkill(config: SkillConfig): SkillConfig;
3
+ export declare function getSkill(agentDir: string, name: string): SkillConfig | null;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAK5D;AAED,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,WAAW,GAAG,IAAI,CAmBpB"}
@@ -0,0 +1,28 @@
1
+ import { readFileSync, existsSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ export function defineSkill(config) {
4
+ if (!config.name || !config.content) {
5
+ throw new Error("Skill must have a name and content");
6
+ }
7
+ return config;
8
+ }
9
+ export function getSkill(agentDir, name) {
10
+ const mdPath = resolve(agentDir, "knowledge", `${name}.md`);
11
+ const tsPath = resolve(agentDir, "knowledge", `${name}.ts`);
12
+ if (existsSync(mdPath)) {
13
+ return {
14
+ name,
15
+ description: "",
16
+ content: readFileSync(mdPath, "utf-8"),
17
+ };
18
+ }
19
+ if (existsSync(tsPath)) {
20
+ return {
21
+ name,
22
+ description: "",
23
+ content: readFileSync(tsPath, "utf-8"),
24
+ };
25
+ }
26
+ return null;
27
+ }
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,UAAU,WAAW,CAAC,MAAmB;IAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,QAAgB,EAChB,IAAY;IAEZ,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;IAE5D,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,IAAI;YACJ,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;SACvC,CAAC;IACJ,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,IAAI;YACJ,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;SACvC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolConfig } from "../types.js";
2
+ export declare function defineTool<TInput = unknown, TOutput = unknown>(config: ToolConfig<TInput, TOutput>): ToolConfig<TInput, TOutput>;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,wBAAgB,UAAU,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAC5D,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ7B"}
@@ -0,0 +1,10 @@
1
+ export function defineTool(config) {
2
+ if (!config.description) {
3
+ throw new Error("Tool must have a description");
4
+ }
5
+ if (!config.execute) {
6
+ throw new Error("Tool must have an execute function");
7
+ }
8
+ return config;
9
+ }
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU,CACxB,MAAmC;IAEnC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,118 @@
1
+ import type { z } from "zod";
2
+ export interface CencoriConfig {
3
+ project?: string;
4
+ apiKey?: string;
5
+ billing?: {
6
+ budget?: string;
7
+ endUserMarkup?: number;
8
+ };
9
+ security?: {
10
+ policy?: "strict" | "standard" | "permissive";
11
+ };
12
+ }
13
+ export interface AgentConfig {
14
+ model: string;
15
+ name?: string;
16
+ description?: string;
17
+ cencori?: CencoriConfig;
18
+ }
19
+ export interface ToolConfig<TInput = unknown, TOutput = unknown> {
20
+ name?: string;
21
+ description: string;
22
+ inputSchema?: z.ZodType<TInput>;
23
+ outputSchema?: z.ZodType<TOutput>;
24
+ sandbox?: boolean;
25
+ execute: (input: TInput) => TOutput | Promise<TOutput>;
26
+ }
27
+ export interface InstructionsConfig {
28
+ content: string;
29
+ filePath?: string;
30
+ }
31
+ export interface SkillConfig {
32
+ name: string;
33
+ description: string;
34
+ content: string;
35
+ }
36
+ export interface HookConfig {
37
+ name: string;
38
+ event: HookEvent;
39
+ handler: (payload: HookPayload) => void | Promise<void>;
40
+ }
41
+ export type HookEvent = "beforeTurn" | "afterTurn" | "beforeToolCall" | "afterToolCall" | "onError" | "onStart" | "onEnd";
42
+ export interface HookPayload {
43
+ turn?: TurnContext;
44
+ toolCall?: ToolCallContext;
45
+ error?: Error;
46
+ }
47
+ export interface TurnContext {
48
+ id: string;
49
+ sessionId?: string;
50
+ input: string;
51
+ output?: string;
52
+ toolCalls?: ToolCallContext[];
53
+ }
54
+ export interface ToolCallContext {
55
+ tool: string;
56
+ input: unknown;
57
+ output?: unknown;
58
+ durationMs?: number;
59
+ error?: Error;
60
+ }
61
+ export interface ChannelConfig {
62
+ name: string;
63
+ type: "http" | "slack" | "discord" | "custom";
64
+ handler: (request: ChannelRequest) => ChannelResponse | Promise<ChannelResponse>;
65
+ }
66
+ export interface ChannelRequest {
67
+ body: unknown;
68
+ headers: Record<string, string>;
69
+ method: string;
70
+ }
71
+ export interface ChannelResponse {
72
+ status: number;
73
+ body: unknown;
74
+ }
75
+ export interface ScheduleConfig {
76
+ name: string;
77
+ cron: string;
78
+ handler: () => void | Promise<void>;
79
+ timezone?: string;
80
+ }
81
+ export interface SessionConfig {
82
+ maxTurns?: number;
83
+ idleTimeoutMs?: number;
84
+ requireApproval?: boolean;
85
+ memory?: {
86
+ strategy: "lastN" | "summary" | "keyFacts";
87
+ limit?: number;
88
+ };
89
+ }
90
+ export interface PolicyConfig {
91
+ inputGuards?: string[];
92
+ outputGuards?: string[];
93
+ allowedModels?: string[];
94
+ blockedTools?: string[];
95
+ budget?: {
96
+ maxSpendPerSession?: string;
97
+ maxSpendPerDay?: string;
98
+ maxSpendPerMonth?: string;
99
+ };
100
+ }
101
+ export interface AgentManifest {
102
+ config: AgentConfig;
103
+ instructions: string;
104
+ tools: Record<string, ToolConfig>;
105
+ skills: Record<string, SkillConfig>;
106
+ hooks: Record<string, HookConfig>;
107
+ channels: Record<string, ChannelConfig>;
108
+ schedules: Record<string, ScheduleConfig>;
109
+ session?: SessionConfig;
110
+ policy?: PolicyConfig;
111
+ }
112
+ export interface Session {
113
+ id: string;
114
+ created: Date;
115
+ turns: TurnContext[];
116
+ metadata: Record<string, unknown>;
117
+ }
118
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ # Getting Started
2
+
3
+ ## Install
4
+
5
+ ```bash
6
+ npx eline@latest init my-agent
7
+ cd my-agent
8
+ npm install
9
+ ```
10
+
11
+ ## Run
12
+
13
+ ```bash
14
+ npm run dev
15
+ ```
16
+
17
+ This starts a local dev server. Send requests:
18
+
19
+ ```bash
20
+ curl -X POST http://localhost:3000 \
21
+ -H "Content-Type: application/json" \
22
+ -d '{"message": "Hello!"}'
23
+ ```
24
+
25
+ ## Add a Tool
26
+
27
+ Create `agent/tools/get_weather.ts`:
28
+
29
+ ```ts
30
+ import { defineTool } from "eline/tools";
31
+ import { z } from "zod";
32
+
33
+ export default defineTool({
34
+ description: "Get the current weather for a city.",
35
+ inputSchema: z.object({ city: z.string() }),
36
+ async execute({ city }) {
37
+ return { city, condition: "Sunny", temperatureF: 72 };
38
+ },
39
+ });
40
+ ```
41
+
42
+ ## Deploy
43
+
44
+ Set your Cencori API key and deploy to your infrastructure:
45
+
46
+ ```bash
47
+ export CENCORI_API_KEY=sk_...
48
+ export CENCORI_PROJECT_ID=proj_...
49
+
50
+ npm run build
51
+ ```
package/docs/index.md ADDED
@@ -0,0 +1,31 @@
1
+ # Eline Documentation
2
+
3
+ Eline is a filesystem-first framework for production agents on Cencori.
4
+
5
+ ## Getting Started
6
+
7
+ - [Getting Started](getting-started.md)
8
+ - [Project Layout](project-layout.md)
9
+
10
+ ## Authoring
11
+
12
+ - `defineAgent` — Agent configuration
13
+ - `defineTool` — Tool creation
14
+ - `defineInstructions` — System prompt
15
+ - `defineSkill` — Loadable procedures
16
+ - `defineHook` — Lifecycle hooks
17
+ - `defineChannel` — Message channels
18
+ - `defineSchedule` — Recurring jobs
19
+
20
+ ## Runtime
21
+
22
+ - `getSession` — Current session context
23
+ - `getContext` — Shared context
24
+ - `runAgent` — Execute a single turn
25
+ - `streamAgent` — Stream a response
26
+
27
+ ## Cencori Integration
28
+
29
+ - `cencori: {}` config block in agent.ts
30
+ - Policies (security, budgets, guardrails)
31
+ - Sessions (durable execution)