arcie 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -6
- package/dist/agent/index.d.ts +6 -3
- package/dist/agent/index.js +6 -6
- package/dist/agent/index.js.map +1 -1
- package/dist/auth/index.d.ts +6 -5
- package/dist/auth/index.js +8 -17
- package/dist/auth/index.js.map +1 -1
- package/dist/build-TWNCPXBU.js +82 -0
- package/dist/build-TWNCPXBU.js.map +1 -0
- package/dist/channels/index.d.ts +8 -5
- package/dist/channels/index.js +10 -12
- package/dist/channels/index.js.map +1 -1
- package/dist/chunk-3CNQ6HQV.js +12 -0
- package/dist/chunk-3CNQ6HQV.js.map +1 -0
- package/dist/chunk-4L7WVCTU.js +12 -0
- package/dist/chunk-4L7WVCTU.js.map +1 -0
- package/dist/chunk-4WSILP75.js +1774 -0
- package/dist/chunk-4WSILP75.js.map +1 -0
- package/dist/chunk-6XETPLIF.js +176 -0
- package/dist/chunk-6XETPLIF.js.map +1 -0
- package/dist/chunk-CKHBEZCT.js +24 -0
- package/dist/chunk-CKHBEZCT.js.map +1 -0
- package/dist/chunk-FQ7KDNV5.js +12 -0
- package/dist/chunk-FQ7KDNV5.js.map +1 -0
- package/dist/chunk-HVBDOHTL.js +148 -0
- package/dist/chunk-HVBDOHTL.js.map +1 -0
- package/dist/chunk-HWD2Z2CH.js +742 -0
- package/dist/chunk-HWD2Z2CH.js.map +1 -0
- package/dist/chunk-KVSX4MLK.js +139 -0
- package/dist/chunk-KVSX4MLK.js.map +1 -0
- package/dist/chunk-L3BTL5FM.js +39 -0
- package/dist/chunk-L3BTL5FM.js.map +1 -0
- package/dist/chunk-LQC65UHE.js +34 -0
- package/dist/chunk-LQC65UHE.js.map +1 -0
- package/dist/chunk-N5R3TEEZ.js +15 -0
- package/dist/chunk-N5R3TEEZ.js.map +1 -0
- package/dist/chunk-PHTJLJOV.js +25 -0
- package/dist/chunk-PHTJLJOV.js.map +1 -0
- package/dist/chunk-QE46QFID.js +92 -0
- package/dist/chunk-QE46QFID.js.map +1 -0
- package/dist/chunk-SGWQZZ2A.js +54 -0
- package/dist/chunk-SGWQZZ2A.js.map +1 -0
- package/dist/chunk-WAD7VLNI.js +51 -0
- package/dist/chunk-WAD7VLNI.js.map +1 -0
- package/dist/chunk-XOFWQUOO.js +30 -0
- package/dist/chunk-XOFWQUOO.js.map +1 -0
- package/dist/chunk-ZJNHQXMO.js +20 -0
- package/dist/chunk-ZJNHQXMO.js.map +1 -0
- package/dist/cli/index.d.ts +7 -2
- package/dist/cli/index.js +171 -41
- package/dist/cli/index.js.map +1 -1
- package/dist/context/index.d.ts +14 -11
- package/dist/context/index.js +22 -37
- package/dist/context/index.js.map +1 -1
- package/dist/dev-ZZDVOWUZ.js +1967 -0
- package/dist/dev-ZZDVOWUZ.js.map +1 -0
- package/dist/discover/index.d.ts +17 -7
- package/dist/discover/index.js +6 -132
- package/dist/discover/index.js.map +1 -1
- package/dist/hooks/index.d.ts +6 -3
- package/dist/hooks/index.js +6 -6
- package/dist/hooks/index.js.map +1 -1
- package/dist/index-CElLRVTP.d.ts +136 -0
- package/dist/index.d.ts +297 -18
- package/dist/index.js +160 -13
- package/dist/index.js.map +1 -1
- package/dist/init-5F7CIVLN.js +822 -0
- package/dist/init-5F7CIVLN.js.map +1 -0
- package/dist/instructions/index.d.ts +7 -4
- package/dist/instructions/index.js +8 -32
- package/dist/instructions/index.js.map +1 -1
- package/dist/protocol/events.d.ts +47 -39
- package/dist/protocol/events.js +46 -45
- package/dist/protocol/events.js.map +1 -1
- package/dist/runner/index.d.ts +4 -18
- package/dist/runner/index.js +11 -277
- package/dist/runner/index.js.map +1 -1
- package/dist/scaffold-web-chat-OQL5C2GK.js +7 -0
- package/dist/scaffold-web-chat-OQL5C2GK.js.map +1 -0
- package/dist/schedules/index.d.ts +6 -3
- package/dist/schedules/index.js +6 -6
- package/dist/schedules/index.js.map +1 -1
- package/dist/skills/index.d.ts +7 -4
- package/dist/skills/index.js +8 -27
- package/dist/skills/index.js.map +1 -1
- package/dist/tools/index.d.ts +13 -3
- package/dist/tools/index.js +8 -9
- package/dist/tools/index.js.map +1 -1
- package/dist/types-DwxwdSa2.d.ts +151 -0
- package/docs/getting-started.md +2 -2
- package/docs/index.md +3 -2
- package/docs/project-layout.md +2 -2
- package/docs/subagents.md +95 -0
- package/package.json +15 -10
- package/templates/default/.env.local +12 -0
- package/templates/default/agent/agent.ts +2 -2
- package/templates/default/package.json +3 -3
- package/templates/web-chat/.env.local.example +4 -0
- package/templates/web-chat/README.md +51 -0
- package/templates/web-chat/app/api/chat/route.ts +43 -0
- package/templates/web-chat/app/globals.css +55 -0
- package/templates/web-chat/app/layout.tsx +15 -0
- package/templates/web-chat/app/page.tsx +9 -0
- package/templates/web-chat/components/chat.tsx +196 -0
- package/templates/web-chat/components/input-bar.tsx +74 -0
- package/templates/web-chat/components/message.tsx +63 -0
- package/templates/web-chat/components/tool-call.tsx +79 -0
- package/templates/web-chat/components/ui/button.tsx +46 -0
- package/templates/web-chat/components/ui/input.tsx +19 -0
- package/templates/web-chat/components.json +20 -0
- package/templates/web-chat/lib/stream.ts +41 -0
- package/templates/web-chat/lib/types.ts +61 -0
- package/templates/web-chat/lib/utils.ts +6 -0
- package/templates/web-chat/next.config.mjs +4 -0
- package/templates/web-chat/package.json +32 -0
- package/templates/web-chat/postcss.config.mjs +6 -0
- package/templates/web-chat/tailwind.config.ts +59 -0
- package/templates/web-chat/tsconfig.json +23 -0
- package/dist/agent/index.d.ts.map +0 -1
- package/dist/auth/index.d.ts.map +0 -1
- package/dist/channels/index.d.ts.map +0 -1
- package/dist/cli/banner.d.ts +0 -2
- package/dist/cli/banner.d.ts.map +0 -1
- package/dist/cli/banner.js +0 -10
- package/dist/cli/banner.js.map +0 -1
- package/dist/cli/build.d.ts +0 -5
- package/dist/cli/build.d.ts.map +0 -1
- package/dist/cli/build.js +0 -54
- package/dist/cli/build.js.map +0 -1
- package/dist/cli/dev.d.ts +0 -5
- package/dist/cli/dev.d.ts.map +0 -1
- package/dist/cli/dev.js +0 -74
- package/dist/cli/dev.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/init.d.ts +0 -4
- package/dist/cli/init.d.ts.map +0 -1
- package/dist/cli/init.js +0 -75
- package/dist/cli/init.js.map +0 -1
- package/dist/context/index.d.ts.map +0 -1
- package/dist/discover/index.d.ts.map +0 -1
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/instructions/index.d.ts.map +0 -1
- package/dist/loader.d.ts +0 -7
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -102
- package/dist/loader.js.map +0 -1
- package/dist/protocol/events.d.ts.map +0 -1
- package/dist/runner/index.d.ts.map +0 -1
- package/dist/schedules/index.d.ts.map +0 -1
- package/dist/skills/index.d.ts.map +0 -1
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/types.d.ts +0 -118
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
package/dist/runner/index.js
CHANGED
|
@@ -1,278 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
runAgent,
|
|
3
|
+
streamAgent
|
|
4
|
+
} from "../chunk-4WSILP75.js";
|
|
5
|
+
import "../chunk-KVSX4MLK.js";
|
|
6
|
+
import "../chunk-QE46QFID.js";
|
|
7
|
+
import "../chunk-PHTJLJOV.js";
|
|
8
|
+
export {
|
|
9
|
+
runAgent,
|
|
10
|
+
streamAgent
|
|
11
|
+
};
|
|
278
12
|
//# sourceMappingURL=index.js.map
|
package/dist/runner/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runner/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { i as ScheduleConfig } from '../types-DwxwdSa2.js';
|
|
2
|
+
import 'zod';
|
|
3
|
+
|
|
4
|
+
declare function defineSchedule(config: ScheduleConfig): ScheduleConfig;
|
|
5
|
+
|
|
6
|
+
export { defineSchedule };
|
package/dist/schedules/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
defineSchedule
|
|
3
|
+
} from "../chunk-4L7WVCTU.js";
|
|
4
|
+
export {
|
|
5
|
+
defineSchedule
|
|
6
|
+
};
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/skills/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { k as SkillConfig } from '../types-DwxwdSa2.js';
|
|
2
|
+
import 'zod';
|
|
3
|
+
|
|
4
|
+
declare function defineSkill(config: SkillConfig): SkillConfig;
|
|
5
|
+
declare function getSkill(agentDir: string, name: string): SkillConfig | null;
|
|
6
|
+
|
|
7
|
+
export { defineSkill, getSkill };
|
package/dist/skills/index.js
CHANGED
|
@@ -1,28 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
defineSkill,
|
|
3
|
+
getSkill
|
|
4
|
+
} from "../chunk-LQC65UHE.js";
|
|
5
|
+
export {
|
|
6
|
+
defineSkill,
|
|
7
|
+
getSkill
|
|
8
|
+
};
|
|
28
9
|
//# sourceMappingURL=index.js.map
|
package/dist/skills/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { T as ToolConfig } from '../types-DwxwdSa2.js';
|
|
2
|
+
import 'zod';
|
|
3
|
+
|
|
4
|
+
declare function defineTool<TInput = unknown, TOutput = unknown>(config: ToolConfig<TInput, TOutput>): ToolConfig<TInput, TOutput>;
|
|
5
|
+
interface ModelToolDefinition {
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
input_schema?: Record<string, unknown>;
|
|
9
|
+
type: "function";
|
|
10
|
+
}
|
|
11
|
+
declare function toModelOutput(name: string, tool: ToolConfig): ModelToolDefinition;
|
|
12
|
+
|
|
13
|
+
export { type ModelToolDefinition, defineTool, toModelOutput };
|
package/dist/tools/index.js
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
1
|
+
import {
|
|
2
|
+
defineTool,
|
|
3
|
+
toModelOutput
|
|
4
|
+
} from "../chunk-PHTJLJOV.js";
|
|
5
|
+
export {
|
|
6
|
+
defineTool,
|
|
7
|
+
toModelOutput
|
|
8
|
+
};
|
|
10
9
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
interface CencoriConfig {
|
|
4
|
+
project?: string;
|
|
5
|
+
apiKey?: string;
|
|
6
|
+
billing?: {
|
|
7
|
+
budget?: string;
|
|
8
|
+
endUserMarkup?: number;
|
|
9
|
+
};
|
|
10
|
+
security?: {
|
|
11
|
+
policy?: "strict" | "standard" | "permissive";
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
interface AgentConfig {
|
|
15
|
+
model: string;
|
|
16
|
+
name?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
cencori?: CencoriConfig;
|
|
19
|
+
}
|
|
20
|
+
type ApprovalStrategy = "always" | "never" | "once";
|
|
21
|
+
interface ToolConfig<TInput = unknown, TOutput = unknown> {
|
|
22
|
+
name?: string;
|
|
23
|
+
description: string;
|
|
24
|
+
inputSchema?: z.ZodType<TInput>;
|
|
25
|
+
outputSchema?: z.ZodType<TOutput>;
|
|
26
|
+
sandbox?: boolean;
|
|
27
|
+
needsApproval?: ApprovalStrategy;
|
|
28
|
+
execute: (input: TInput) => TOutput | Promise<TOutput>;
|
|
29
|
+
}
|
|
30
|
+
interface InstructionsConfig {
|
|
31
|
+
content: string;
|
|
32
|
+
filePath?: string;
|
|
33
|
+
}
|
|
34
|
+
interface SkillConfig {
|
|
35
|
+
name: string;
|
|
36
|
+
description: string;
|
|
37
|
+
content: string;
|
|
38
|
+
}
|
|
39
|
+
interface HookConfig {
|
|
40
|
+
name: string;
|
|
41
|
+
event: HookEvent;
|
|
42
|
+
handler: (payload: HookPayload) => void | Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
type HookEvent = "beforeTurn" | "afterTurn" | "beforeToolCall" | "afterToolCall" | "onError" | "onStart" | "onEnd";
|
|
45
|
+
interface HookPayload {
|
|
46
|
+
turn?: TurnContext;
|
|
47
|
+
toolCall?: ToolCallContext;
|
|
48
|
+
error?: Error;
|
|
49
|
+
}
|
|
50
|
+
interface TurnContext {
|
|
51
|
+
id: string;
|
|
52
|
+
sessionId?: string;
|
|
53
|
+
input: string;
|
|
54
|
+
output?: string;
|
|
55
|
+
toolCalls?: ToolCallContext[];
|
|
56
|
+
}
|
|
57
|
+
interface ToolCallContext {
|
|
58
|
+
tool: string;
|
|
59
|
+
input: unknown;
|
|
60
|
+
output?: unknown;
|
|
61
|
+
durationMs?: number;
|
|
62
|
+
error?: Error;
|
|
63
|
+
}
|
|
64
|
+
interface ChannelConfig {
|
|
65
|
+
name: string;
|
|
66
|
+
type: "http" | "slack" | "discord" | "custom";
|
|
67
|
+
handler: (request: ChannelRequest) => ChannelResponse | Promise<ChannelResponse>;
|
|
68
|
+
}
|
|
69
|
+
interface ChannelRequest {
|
|
70
|
+
body: unknown;
|
|
71
|
+
headers: Record<string, string>;
|
|
72
|
+
method: string;
|
|
73
|
+
}
|
|
74
|
+
interface ChannelResponse {
|
|
75
|
+
status: number;
|
|
76
|
+
body: unknown;
|
|
77
|
+
}
|
|
78
|
+
interface ConnectionConfig {
|
|
79
|
+
name: string;
|
|
80
|
+
description: string;
|
|
81
|
+
auth: {
|
|
82
|
+
type: "oauth2" | "apiKey" | "basic";
|
|
83
|
+
authorizeUrl?: string;
|
|
84
|
+
tokenUrl?: string;
|
|
85
|
+
clientId?: string;
|
|
86
|
+
scopes?: string[];
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
interface ScheduleConfig {
|
|
90
|
+
name: string;
|
|
91
|
+
cron: string;
|
|
92
|
+
handler: () => void | Promise<void>;
|
|
93
|
+
timezone?: string;
|
|
94
|
+
}
|
|
95
|
+
interface SessionConfig {
|
|
96
|
+
maxTurns?: number;
|
|
97
|
+
idleTimeoutMs?: number;
|
|
98
|
+
requireApproval?: boolean;
|
|
99
|
+
memory?: {
|
|
100
|
+
strategy: "lastN" | "summary" | "keyFacts" | "semantic";
|
|
101
|
+
limit?: number;
|
|
102
|
+
workingMemory?: boolean;
|
|
103
|
+
workingMemoryTemplate?: string;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
interface PolicyConfig {
|
|
107
|
+
inputGuards?: string[];
|
|
108
|
+
outputGuards?: string[];
|
|
109
|
+
allowedModels?: string[];
|
|
110
|
+
blockedTools?: string[];
|
|
111
|
+
budget?: {
|
|
112
|
+
maxSpendPerSession?: string;
|
|
113
|
+
maxSpendPerDay?: string;
|
|
114
|
+
maxSpendPerMonth?: string;
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* A subagent is a fully self-contained child agent the orchestrator can
|
|
119
|
+
* delegate a focused subtask to. It runs in its own fresh, isolated session —
|
|
120
|
+
* it never inherits the parent's conversation history; the parent passes all
|
|
121
|
+
* needed context in via the delegation `message`.
|
|
122
|
+
*/
|
|
123
|
+
interface SubagentManifest {
|
|
124
|
+
/** The child agent's config. `description` is required (validated at load). */
|
|
125
|
+
config: AgentConfig;
|
|
126
|
+
instructions: string;
|
|
127
|
+
tools: Record<string, ToolConfig>;
|
|
128
|
+
skills: Record<string, SkillConfig>;
|
|
129
|
+
}
|
|
130
|
+
interface AgentManifest {
|
|
131
|
+
config: AgentConfig;
|
|
132
|
+
instructions: string;
|
|
133
|
+
tools: Record<string, ToolConfig>;
|
|
134
|
+
skills: Record<string, SkillConfig>;
|
|
135
|
+
hooks: Record<string, HookConfig>;
|
|
136
|
+
channels: Record<string, ChannelConfig>;
|
|
137
|
+
schedules: Record<string, ScheduleConfig>;
|
|
138
|
+
connections: Record<string, ConnectionConfig>;
|
|
139
|
+
/** Declared specialists under `subagents/<id>/`, keyed by directory name. */
|
|
140
|
+
subagents: Record<string, SubagentManifest>;
|
|
141
|
+
session?: SessionConfig;
|
|
142
|
+
policy?: PolicyConfig;
|
|
143
|
+
}
|
|
144
|
+
interface Session {
|
|
145
|
+
id: string;
|
|
146
|
+
created: Date;
|
|
147
|
+
turns: TurnContext[];
|
|
148
|
+
metadata: Record<string, unknown>;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export type { AgentManifest as A, ConnectionConfig as C, HookConfig as H, InstructionsConfig as I, PolicyConfig as P, SessionConfig as S, ToolConfig as T, AgentConfig as a, ApprovalStrategy as b, CencoriConfig as c, ChannelConfig as d, ChannelRequest as e, ChannelResponse as f, HookEvent as g, HookPayload as h, ScheduleConfig as i, Session as j, SkillConfig as k, SubagentManifest as l, ToolCallContext as m, TurnContext as n };
|
package/docs/getting-started.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
## Install
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
npx
|
|
6
|
+
npx arcie@latest init my-agent
|
|
7
7
|
cd my-agent
|
|
8
8
|
npm install
|
|
9
9
|
```
|
|
@@ -27,7 +27,7 @@ curl -X POST http://localhost:3000 \
|
|
|
27
27
|
Create `agent/tools/get_weather.ts`:
|
|
28
28
|
|
|
29
29
|
```ts
|
|
30
|
-
import { defineTool } from "
|
|
30
|
+
import { defineTool } from "arcie/tools";
|
|
31
31
|
import { z } from "zod";
|
|
32
32
|
|
|
33
33
|
export default defineTool({
|
package/docs/index.md
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Arcie Documentation
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Arcie is a filesystem-first framework for production agents on Cencori.
|
|
4
4
|
|
|
5
5
|
## Getting Started
|
|
6
6
|
|
|
7
7
|
- [Getting Started](getting-started.md)
|
|
8
8
|
- [Project Layout](project-layout.md)
|
|
9
|
+
- [Subagents](subagents.md)
|
|
9
10
|
|
|
10
11
|
## Authoring
|
|
11
12
|
|
package/docs/project-layout.md
CHANGED
|
@@ -21,7 +21,7 @@ my-agent/
|
|
|
21
21
|
Required config. Defines the model and Cencori integration:
|
|
22
22
|
|
|
23
23
|
```ts
|
|
24
|
-
import { defineAgent } from "
|
|
24
|
+
import { defineAgent } from "arcie";
|
|
25
25
|
|
|
26
26
|
export default defineAgent({
|
|
27
27
|
model: "claude-sonnet-4-5",
|
|
@@ -41,7 +41,7 @@ Required. The system prompt that defines the agent's personality and behavior.
|
|
|
41
41
|
Optional. TypeScript files exporting a `defineTool` config:
|
|
42
42
|
|
|
43
43
|
```ts
|
|
44
|
-
import { defineTool } from "
|
|
44
|
+
import { defineTool } from "arcie/tools";
|
|
45
45
|
import { z } from "zod";
|
|
46
46
|
|
|
47
47
|
export default defineTool({
|