@projectarachne/core 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.
Files changed (37) hide show
  1. package/dist/execution/runWorkflow.d.ts +28 -0
  2. package/dist/execution/runWorkflow.d.ts.map +1 -0
  3. package/dist/execution/runWorkflow.js +350 -0
  4. package/dist/execution/runWorkflow.js.map +1 -0
  5. package/dist/executors/terminalExecutor.d.ts +82 -0
  6. package/dist/executors/terminalExecutor.d.ts.map +1 -0
  7. package/dist/executors/terminalExecutor.js +331 -0
  8. package/dist/executors/terminalExecutor.js.map +1 -0
  9. package/dist/index.d.ts +10 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +10 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/schemas/index.d.ts +3 -0
  14. package/dist/schemas/index.d.ts.map +1 -0
  15. package/dist/schemas/index.js +3 -0
  16. package/dist/schemas/index.js.map +1 -0
  17. package/dist/schemas/workflow-yaml.d.ts +839 -0
  18. package/dist/schemas/workflow-yaml.d.ts.map +1 -0
  19. package/dist/schemas/workflow-yaml.js +60 -0
  20. package/dist/schemas/workflow-yaml.js.map +1 -0
  21. package/dist/schemas/workflow.d.ts +698 -0
  22. package/dist/schemas/workflow.d.ts.map +1 -0
  23. package/dist/schemas/workflow.js +85 -0
  24. package/dist/schemas/workflow.js.map +1 -0
  25. package/dist/storage/sqlite.d.ts +65 -0
  26. package/dist/storage/sqlite.d.ts.map +1 -0
  27. package/dist/storage/sqlite.js +177 -0
  28. package/dist/storage/sqlite.js.map +1 -0
  29. package/dist/yaml/index.d.ts +3 -0
  30. package/dist/yaml/index.d.ts.map +1 -0
  31. package/dist/yaml/index.js +2 -0
  32. package/dist/yaml/index.js.map +1 -0
  33. package/dist/yaml/parseWorkflowYaml.d.ts +6 -0
  34. package/dist/yaml/parseWorkflowYaml.d.ts.map +1 -0
  35. package/dist/yaml/parseWorkflowYaml.js +41 -0
  36. package/dist/yaml/parseWorkflowYaml.js.map +1 -0
  37. package/package.json +37 -0
@@ -0,0 +1,331 @@
1
+ // packages/core/src/executors/terminalExecutor.ts
2
+ // Purpose: Execute prompts via terminal-based agents (codex, claude) in headless mode.
3
+ // This replaces API-based execution with local subprocess execution.
4
+ import { execSync } from 'child_process';
5
+ import { tmpdir } from 'os';
6
+ import { writeFileSync, unlinkSync } from 'fs';
7
+ import { join } from 'path';
8
+ const DEFAULT_TIMEOUT_MS = 120000; // 2 minutes
9
+ /**
10
+ * Model name mappings - short names to actual model identifiers
11
+ */
12
+ const CLAUDE_MODELS = {
13
+ haiku: 'claude-3-5-haiku-latest',
14
+ sonnet: 'claude-sonnet-4-20250514',
15
+ opus: 'claude-opus-4-5',
16
+ };
17
+ const OPENAI_MODELS = {
18
+ 'gpt-4.1': 'gpt-4.1',
19
+ 'gpt-4.1-mini': 'gpt-4.1-mini',
20
+ 'gpt-4.1-nano': 'gpt-4.1-nano',
21
+ 'gpt-4o': 'gpt-4o',
22
+ 'gpt-4o-mini': 'gpt-4o-mini',
23
+ 'o3': 'o3',
24
+ 'o3-mini': 'o3-mini',
25
+ 'o1': 'o1',
26
+ 'o1-mini': 'o1-mini',
27
+ 'o1-pro': 'o1-pro',
28
+ };
29
+ const CODEX_REASONING_EFFORTS = {
30
+ 'gpt-5.2-codex': 'xhigh',
31
+ 'gpt-5.1-codex-max': 'xhigh',
32
+ 'gpt-5.2': 'xhigh',
33
+ 'gpt-5.1-codex-mini': 'high',
34
+ 'gpt-5.1': 'high',
35
+ 'gpt-5.1-codex': 'high',
36
+ 'gpt-5-codex': 'high',
37
+ 'gpt-5-codex-mini': 'high',
38
+ 'gpt-5': 'high',
39
+ };
40
+ function getCodexReasoningEffort(model) {
41
+ if (!model)
42
+ return null;
43
+ return CODEX_REASONING_EFFORTS[model] ?? null;
44
+ }
45
+ const GEMINI_MODELS = {
46
+ 'gemini-2.5-pro': 'gemini-2.5-pro',
47
+ 'gemini-2.5-flash': 'gemini-2.5-flash',
48
+ 'gemini-2.0-flash': 'gemini-2.0-flash',
49
+ 'gemini-2.0-flash-lite': 'gemini-2.0-flash-lite',
50
+ };
51
+ /**
52
+ * Agent configurations
53
+ * Each agent defines how to spawn the process and parse the output
54
+ */
55
+ const AGENT_CONFIGS = {
56
+ claude: {
57
+ command: 'claude',
58
+ models: CLAUDE_MODELS,
59
+ defaultModel: 'sonnet',
60
+ // -p = print mode (non-interactive), --model for specific model
61
+ buildArgs: (opts) => {
62
+ const args = ['-p'];
63
+ if (opts.model) {
64
+ const fullModel = CLAUDE_MODELS[opts.model] || opts.model;
65
+ args.push('--model', fullModel);
66
+ }
67
+ return args;
68
+ },
69
+ parseOutput: (stdout) => stdout.trim(),
70
+ inputMethod: 'arg',
71
+ },
72
+ // "openai" uses the codex CLI tool
73
+ openai: {
74
+ command: 'codex',
75
+ models: OPENAI_MODELS,
76
+ defaultModel: 'gpt-4.1',
77
+ buildArgs: (opts) => {
78
+ const args = ['exec', '--skip-git-repo-check'];
79
+ const fullModel = opts.model ? (OPENAI_MODELS[opts.model] || opts.model) : null;
80
+ if (fullModel)
81
+ args.push('-m', fullModel);
82
+ const effort = getCodexReasoningEffort(fullModel ?? undefined);
83
+ if (effort)
84
+ args.push('-c', `model_reasoning_effort=${effort}`);
85
+ return args;
86
+ },
87
+ parseOutput: (stdout) => stdout.trim(),
88
+ inputMethod: 'stdin',
89
+ },
90
+ // Legacy alias for backwards compatibility
91
+ codex: {
92
+ command: 'codex',
93
+ models: OPENAI_MODELS,
94
+ defaultModel: 'gpt-4.1',
95
+ buildArgs: (opts) => {
96
+ const args = ['exec', '--skip-git-repo-check'];
97
+ const fullModel = opts.model ? (OPENAI_MODELS[opts.model] || opts.model) : null;
98
+ if (fullModel)
99
+ args.push('-m', fullModel);
100
+ const effort = getCodexReasoningEffort(fullModel ?? undefined);
101
+ if (effort)
102
+ args.push('-c', `model_reasoning_effort=${effort}`);
103
+ return args;
104
+ },
105
+ parseOutput: (stdout) => stdout.trim(),
106
+ inputMethod: 'stdin',
107
+ },
108
+ // Gemini CLI
109
+ gemini: {
110
+ command: 'gemini',
111
+ models: GEMINI_MODELS,
112
+ defaultModel: 'gemini-2.5-flash',
113
+ buildArgs: (opts) => {
114
+ const args = [];
115
+ if (opts.model) {
116
+ const fullModel = GEMINI_MODELS[opts.model] || opts.model;
117
+ args.push('--model', fullModel);
118
+ }
119
+ return args;
120
+ },
121
+ parseOutput: (stdout) => stdout.trim(),
122
+ inputMethod: 'arg',
123
+ },
124
+ };
125
+ /**
126
+ * Check which agents are available on this system
127
+ * @returns {string[]} Array of available agent names
128
+ */
129
+ export function getAvailableAgents() {
130
+ const available = [];
131
+ for (const [name, config] of Object.entries(AGENT_CONFIGS)) {
132
+ try {
133
+ execSync(`which ${config.command}`, { stdio: 'ignore' });
134
+ available.push(name);
135
+ }
136
+ catch {
137
+ // Agent not installed
138
+ }
139
+ }
140
+ return available;
141
+ }
142
+ /**
143
+ * Get the default agent (prefers claude, falls back to codex)
144
+ * @returns {string|null} Default agent name or null if none available
145
+ */
146
+ export function getDefaultAgent() {
147
+ const available = getAvailableAgents();
148
+ if (available.includes('claude'))
149
+ return 'claude';
150
+ if (available.includes('codex'))
151
+ return 'codex';
152
+ return null;
153
+ }
154
+ /**
155
+ * Execute a prompt using a terminal-based agent
156
+ *
157
+ * Uses synchronous execution for reliability - async spawn has issues with
158
+ * certain terminal agents that expect TTY behavior.
159
+ */
160
+ export async function executePrompt({ prompt, agent = 'claude', model, timeout = DEFAULT_TIMEOUT_MS, workdir, onChunk, }) {
161
+ const config = AGENT_CONFIGS[agent];
162
+ if (!config) {
163
+ throw new Error(`Unknown agent: ${agent}. Available: ${Object.keys(AGENT_CONFIGS).join(', ')}`);
164
+ }
165
+ // Check if agent is available
166
+ try {
167
+ execSync(`which ${config.command}`, { stdio: 'ignore' });
168
+ }
169
+ catch {
170
+ throw new Error(`Agent "${agent}" is not installed. Please install ${config.command} first.`);
171
+ }
172
+ const args = config.buildArgs({ model });
173
+ // Build the command
174
+ let command;
175
+ const execOptions = {
176
+ timeout,
177
+ encoding: 'utf-8',
178
+ // Run from /tmp to avoid picking up project-specific .claude/CLAUDE.md files
179
+ // that can interfere with prompt execution
180
+ cwd: '/tmp',
181
+ env: { ...process.env },
182
+ maxBuffer: 10 * 1024 * 1024, // 10MB buffer for large outputs
183
+ };
184
+ if (config.inputMethod === 'arg') {
185
+ // Claude: prompt passed as argument
186
+ // Escape the prompt for shell safety
187
+ const escapedPrompt = prompt.replace(/'/g, "'\\''");
188
+ command = `${config.command} ${args.join(' ')} '${escapedPrompt}'`;
189
+ }
190
+ else {
191
+ // Codex: prompt piped to stdin
192
+ // Write prompt to temp file and pipe it
193
+ const tempFile = join(tmpdir(), `arachne-prompt-${Date.now()}.txt`);
194
+ writeFileSync(tempFile, prompt, 'utf-8');
195
+ command = `cat '${tempFile}' | ${config.command} ${args.join(' ')}`;
196
+ // Clean up temp file after execution (in finally block)
197
+ execOptions._tempFile = tempFile;
198
+ }
199
+ return new Promise((resolve, reject) => {
200
+ try {
201
+ const stdout = execSync(command, execOptions);
202
+ // Clean up temp file if used
203
+ if (execOptions._tempFile) {
204
+ try {
205
+ unlinkSync(execOptions._tempFile);
206
+ }
207
+ catch { }
208
+ }
209
+ // Parse the output based on agent type
210
+ let output;
211
+ try {
212
+ output = config.parseOutput(stdout);
213
+ }
214
+ catch (parseErr) {
215
+ const message = parseErr instanceof Error ? parseErr.message : String(parseErr);
216
+ reject(new Error(`Failed to parse ${agent} output: ${message}`));
217
+ return;
218
+ }
219
+ // Emit the full output as a single chunk for streaming callbacks
220
+ if (typeof onChunk === 'function') {
221
+ onChunk(output);
222
+ }
223
+ resolve({
224
+ ok: true,
225
+ output,
226
+ agent,
227
+ exitCode: 0,
228
+ stderr: '',
229
+ rawOutput: stdout,
230
+ });
231
+ }
232
+ catch (err) {
233
+ // Clean up temp file if used
234
+ if (execOptions._tempFile) {
235
+ try {
236
+ unlinkSync(execOptions._tempFile);
237
+ }
238
+ catch { }
239
+ }
240
+ const error = err;
241
+ if (error?.killed) {
242
+ reject(new Error(`Agent "${agent}" timed out after ${timeout}ms`));
243
+ }
244
+ else {
245
+ const stderr = error?.stderr ? error.stderr.toString() : '';
246
+ const message = error?.message ?? 'Unknown error';
247
+ reject(new Error(`Agent "${agent}" failed: ${message}${stderr ? ` - ${stderr}` : ''}`));
248
+ }
249
+ }
250
+ });
251
+ }
252
+ /**
253
+ * Format messages array into a single prompt string
254
+ * Used when converting from chat format to single prompt
255
+ */
256
+ export function formatMessagesAsPrompt(messages, { system } = {}) {
257
+ let prompt = '';
258
+ if (system) {
259
+ prompt += `${system}\n\n`;
260
+ }
261
+ if (typeof messages === 'string') {
262
+ prompt += messages;
263
+ }
264
+ else if (Array.isArray(messages)) {
265
+ for (const msg of messages) {
266
+ if (msg.role === 'system') {
267
+ prompt = `${msg.content}\n\n${prompt}`;
268
+ }
269
+ else if (msg.role === 'user') {
270
+ prompt += `${msg.content}\n`;
271
+ }
272
+ else if (msg.role === 'assistant') {
273
+ prompt += `Assistant: ${msg.content}\n`;
274
+ }
275
+ }
276
+ }
277
+ return prompt.trim();
278
+ }
279
+ /**
280
+ * Chat-complete compatible interface for terminal execution
281
+ * This matches the signature of modelRouter.chatComplete for easy integration
282
+ */
283
+ export async function terminalChatComplete({ model, messages, system, temperature, // ignored for terminal execution
284
+ max_tokens, // ignored for terminal execution
285
+ stream = false, // TODO: implement streaming
286
+ providerOptions = {}, }) {
287
+ // Determine agent from model string
288
+ // Format: "terminal:agent" or just "agent" (defaults to claude)
289
+ let agent = 'claude';
290
+ let agentModel = null;
291
+ if (model) {
292
+ if (model.startsWith('terminal:')) {
293
+ agent = model.slice('terminal:'.length);
294
+ }
295
+ else if (model === 'codex' || model === 'claude') {
296
+ agent = model;
297
+ }
298
+ else if (model.includes(':')) {
299
+ // Could be "claude:sonnet" or similar
300
+ const [agentPart, modelPart] = model.split(':');
301
+ if (AGENT_CONFIGS[agentPart]) {
302
+ agent = agentPart;
303
+ agentModel = modelPart;
304
+ }
305
+ }
306
+ }
307
+ const prompt = formatMessagesAsPrompt(messages, { system });
308
+ const result = await executePrompt({
309
+ prompt,
310
+ agent,
311
+ model: agentModel,
312
+ timeout: providerOptions.timeout || DEFAULT_TIMEOUT_MS,
313
+ workdir: providerOptions.workdir,
314
+ });
315
+ return {
316
+ ok: true,
317
+ provider: 'terminal',
318
+ model: agent,
319
+ output: result.output,
320
+ usage: null, // Terminal doesn't provide token usage
321
+ raw: result,
322
+ };
323
+ }
324
+ export default {
325
+ executePrompt,
326
+ terminalChatComplete,
327
+ getAvailableAgents,
328
+ getDefaultAgent,
329
+ formatMessagesAsPrompt,
330
+ };
331
+ //# sourceMappingURL=terminalExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminalExecutor.js","sourceRoot":"","sources":["../../src/executors/terminalExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const CORE_PLACEHOLDER = "@projectarachne/core";
2
+ export declare function getCorePlaceholder(): string;
3
+ export { executePrompt, terminalChatComplete, getAvailableAgents, getDefaultAgent, formatMessagesAsPrompt, } from './executors/terminalExecutor.js';
4
+ export { ChainConfigSchema, OutputConfigSchema, LoopConfigSchema, StepSchema, EdgeSchema, WorkflowRunSchema, InterpolatedStringSchema, WorkflowYamlVariableValueSchema, WorkflowYamlStepSchema, WorkflowYamlSchema, } from './schemas/index.js';
5
+ export { loadWorkflowYaml, parseWorkflowYaml } from './yaml/index.js';
6
+ export type { WorkflowYaml } from './yaml/index.js';
7
+ export { runWorkflow } from './execution/runWorkflow.js';
8
+ export { SqliteStorage, createSqliteStorage, resolveDefaultSqlitePath, DEFAULT_SQLITE_FILENAME, } from './storage/sqlite.js';
9
+ export type { RunStatus, StepStatus, RunRecord, StepRecord, TemplateRecord, CreateRunInput, CompleteRunInput, SaveTemplateInput, } from './storage/sqlite.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,yBAAyB,CAAC;AAEvD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,wBAAwB,EACxB,+BAA+B,EAC/B,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACtE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ export const CORE_PLACEHOLDER = "@projectarachne/core";
2
+ export function getCorePlaceholder() {
3
+ return CORE_PLACEHOLDER;
4
+ }
5
+ export { executePrompt, terminalChatComplete, getAvailableAgents, getDefaultAgent, formatMessagesAsPrompt, } from './executors/terminalExecutor.js';
6
+ export { ChainConfigSchema, OutputConfigSchema, LoopConfigSchema, StepSchema, EdgeSchema, WorkflowRunSchema, InterpolatedStringSchema, WorkflowYamlVariableValueSchema, WorkflowYamlStepSchema, WorkflowYamlSchema, } from './schemas/index.js';
7
+ export { loadWorkflowYaml, parseWorkflowYaml } from './yaml/index.js';
8
+ export { runWorkflow } from './execution/runWorkflow.js';
9
+ export { SqliteStorage, createSqliteStorage, resolveDefaultSqlitePath, DEFAULT_SQLITE_FILENAME, } from './storage/sqlite.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEvD,MAAM,UAAU,kBAAkB;IAChC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,GACvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,wBAAwB,EACxB,+BAA+B,EAC/B,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { ChainConfigSchema, OutputConfigSchema, LoopConfigSchema, StepSchema, EdgeSchema, WorkflowRunSchema, } from './workflow.js';
2
+ export { InterpolatedStringSchema, WorkflowYamlVariableValueSchema, WorkflowYamlStepSchema, WorkflowYamlSchema, } from './workflow-yaml.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,wBAAwB,EACxB,+BAA+B,EAC/B,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { ChainConfigSchema, OutputConfigSchema, LoopConfigSchema, StepSchema, EdgeSchema, WorkflowRunSchema, } from './workflow.js';
2
+ export { InterpolatedStringSchema, WorkflowYamlVariableValueSchema, WorkflowYamlStepSchema, WorkflowYamlSchema, } from './workflow-yaml.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,wBAAwB,EACxB,+BAA+B,EAC/B,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}