🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

@robinpath/agent

Package Overview
Dependencies
Maintainers
4
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@robinpath/agent - npm Package Compare versions

Comparing version
0.1.2
to
0.3.0
+6
dist/agent.d.ts
import type { BuiltinHandler, FunctionMetadata, ModuleHost, ModuleMetadata } from "@robinpath/core";
export declare function configureAgent(h: ModuleHost): void;
export declare const AgentFunctions: Record<string, BuiltinHandler>;
export declare const AgentFunctionMetadata: Record<string, FunctionMetadata>;
export declare const AgentModuleMetadata: ModuleMetadata;
//# sourceMappingURL=agent.d.ts.map
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,cAAc,EAGf,MAAM,iBAAiB,CAAC;AAOzB,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAoB;AA62BvE,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAGzD,CAAC;AAsBF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CA+blE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,cAsBjC,CAAC"}
import { execFileSync } from "child_process";
import { createHash } from "crypto";
import { appendFileSync, readFileSync, existsSync } from "fs";
// ── Module host (unused; agent has no credentials) ─────────────────────
const state = {};
export function configureAgent(h) { state.host = h; }
// ── Internal State ──────────────────────────────────────────────────
let pipelineConfig = {
debug: 0,
retries: 3,
budget: 0,
session: "",
cache: true,
timeout: 120_000,
rateLimit: 0,
fallback: "",
onError: "throw",
dryRun: false,
keepTemp: false,
model: "",
};
const stepHistory = [];
const responseCache = new Map();
const contexts = new Map();
let debugLevel = 0;
let logPath = "";
let lastRateLimitTime = 0;
let notifyConfig = {
enabled: false,
onError: false,
onComplete: false,
transport: "",
to: "",
};
// ── Internal Helpers ────────────────────────────────────────────────
function debugLog(level, ...parts) {
if (debugLevel >= level) {
const msg = `[agent:debug:${level}] ${parts.map((p) => (typeof p === "object" ? JSON.stringify(p) : String(p))).join(" ")}`;
console.error(msg);
if (logPath) {
try {
appendFileSync(logPath, msg + "\n");
}
catch { /* ignore log write errors */ }
}
}
}
function cacheKey(question, attachments) {
const data = question + (attachments ? attachments.join("|") : "");
return createHash("sha256").update(data).digest("hex");
}
function stripFences(text) {
const trimmed = text.trim();
const match = trimmed.match(/^```(?:\w+)?\s*\n([\s\S]*?)\n\s*```$/);
if (match)
return match[1].trim();
return trimmed;
}
function parseCsvLine(line) {
const fields = [];
let current = "";
let inQuotes = false;
for (let i = 0; i < line.length; i++) {
const ch = line[i];
if (inQuotes) {
if (ch === '"') {
if (i + 1 < line.length && line[i + 1] === '"') {
current += '"';
i++;
}
else {
inQuotes = false;
}
}
else {
current += ch;
}
}
else {
if (ch === '"') {
inQuotes = true;
}
else if (ch === ",") {
fields.push(current.trim());
current = "";
}
else {
current += ch;
}
}
}
fields.push(current.trim());
return fields;
}
function parseResponse(raw, format) {
const cleaned = stripFences(raw);
switch (format) {
case "TEXT":
case "MARKDOWN":
case "CODE":
case "HTML":
case "XML":
case "YAML":
return cleaned;
case "NUMBER": {
// Extract first number-like sequence from the response
const numMatch = cleaned.match(/-?\d+(?:\.\d+)?/);
if (!numMatch)
throw new Error(`Could not parse NUMBER from response: "${cleaned.slice(0, 100)}"`);
const num = parseFloat(numMatch[0]);
if (isNaN(num))
throw new Error(`Could not parse NUMBER from response: "${cleaned.slice(0, 100)}"`);
return num;
}
case "BOOLEAN": {
const lower = cleaned.toLowerCase().trim();
if (lower === "true" || lower === "yes" || lower === "1")
return true;
if (lower === "false" || lower === "no" || lower === "0")
return false;
throw new Error(`Could not parse BOOLEAN from response: "${cleaned.slice(0, 100)}"`);
}
case "JSON": {
try {
return JSON.parse(cleaned);
}
catch {
// Try to extract JSON object/array from the response
const jsonMatch = cleaned.match(/(\{[\s\S]*\}|\[[\s\S]*\])/);
if (jsonMatch)
return JSON.parse(jsonMatch[1]);
throw new Error(`Could not parse JSON from response: "${cleaned.slice(0, 100)}"`);
}
}
case "ARRAY": {
try {
const parsed = JSON.parse(cleaned);
if (Array.isArray(parsed))
return parsed;
throw new Error("Parsed value is not an array");
}
catch {
const arrMatch = cleaned.match(/\[[\s\S]*\]/);
if (arrMatch) {
const parsed = JSON.parse(arrMatch[0]);
if (Array.isArray(parsed))
return parsed;
}
throw new Error(`Could not parse ARRAY from response: "${cleaned.slice(0, 100)}"`);
}
}
case "CSV": {
const lines = cleaned.split("\n").map((l) => l.trim()).filter(Boolean);
return lines.map(parseCsvLine);
}
default:
return cleaned;
}
}
function buildPrompt(question, format, retryAttempt) {
let prompt = question;
const formatInstructions = {
TEXT: "",
CSV: "\n\nRespond ONLY with CSV data. No headers unless asked. No explanation.",
JSON: "\n\nRespond ONLY with valid JSON. No explanation, no markdown fences.",
BOOLEAN: "\n\nRespond with exactly one word: true or false. Nothing else.",
NUMBER: "\n\nRespond with exactly one number. No units, no explanation.",
ARRAY: "\n\nRespond ONLY with a JSON array. No explanation, no markdown fences.",
MARKDOWN: "\n\nRespond in Markdown format.",
CODE: "\n\nRespond ONLY with code. No explanation.",
HTML: "\n\nRespond ONLY with HTML. No explanation.",
XML: "\n\nRespond ONLY with XML. No explanation.",
YAML: "\n\nRespond ONLY with YAML. No explanation, no markdown fences.",
};
const instruction = formatInstructions[format];
if (instruction)
prompt += instruction;
// Stricter instructions on retries
if (retryAttempt > 0) {
switch (format) {
case "JSON":
prompt += " CRITICAL: Output must be parseable by JSON.parse(). Start with { or [.";
break;
case "ARRAY":
prompt += " CRITICAL: Output must be a JSON array parseable by JSON.parse(). Start with [.";
break;
case "BOOLEAN":
prompt += " CRITICAL: Reply with ONLY the word true or false.";
break;
case "NUMBER":
prompt += " CRITICAL: Reply with ONLY a number like 42 or 3.14.";
break;
case "CSV":
prompt += " CRITICAL: Output raw CSV lines only. No markdown fences.";
break;
}
}
return prompt;
}
function executeCliCommand(provider, prompt, attachments, modelOverride) {
const args = [];
const model = modelOverride || pipelineConfig.model;
if (provider === "claude") {
args.push("-p", prompt, "--output-format", "text");
if (model)
args.push("--model", model);
if (attachments) {
for (const att of attachments) {
if (existsSync(att)) {
args.push("--file", att);
}
}
}
}
else {
// codex: use --quiet and pass prompt as positional
args.push("--quiet", prompt);
if (model)
args.push("--model", model);
if (attachments) {
for (const att of attachments) {
if (existsSync(att)) {
args.push("--file", att);
}
}
}
}
debugLog(2, `Executing: ${provider}`, model ? `[model:${model}]` : "", args.join(" ").slice(0, 200));
const result = execFileSync(provider, args, {
encoding: "utf-8",
timeout: pipelineConfig.timeout,
maxBuffer: 10 * 1024 * 1024,
windowsHide: true,
});
return result;
}
function applyRateLimit() {
if (pipelineConfig.rateLimit <= 0)
return;
const now = Date.now();
const minInterval = pipelineConfig.rateLimit;
const elapsed = now - lastRateLimitTime;
if (elapsed < minInterval && lastRateLimitTime > 0) {
const waitMs = minInterval - elapsed;
debugLog(2, `Rate limiting: waiting ${waitMs}ms`);
// Blocking sleep using Atomics
const buf = new SharedArrayBuffer(4);
const arr = new Int32Array(buf);
Atomics.wait(arr, 0, 0, waitMs);
}
lastRateLimitTime = Date.now();
}
function executeAgentStep(provider, stepName, opts) {
const question = String(opts.question ?? "");
const format = (String(opts.expectedOutput ?? "TEXT").toUpperCase());
const condition = opts.condition;
const attachments = Array.isArray(opts.attachments)
? opts.attachments.map(String)
: opts.attachment
? [String(opts.attachment)]
: undefined;
const maxRetries = opts.retries != null ? Number(opts.retries) : pipelineConfig.retries;
const stepModel = opts.model ? String(opts.model) : undefined;
// Condition check
if (condition !== undefined && condition !== null && condition !== true && condition !== "true" && condition !== 1) {
debugLog(1, `Step "${stepName}" skipped: condition is falsy`);
return null;
}
if (!question)
throw new Error(`agent.${provider}: "question" is required`);
// Context: prepend conversation history
const contextId = opts.context ? String(opts.context) : undefined;
let contextPrefix = "";
if (contextId && contexts.has(contextId)) {
const messages = contexts.get(contextId);
contextPrefix = messages.map((m) => m.role === "user" ? `User: ${m.content}` : `Assistant: ${m.content}`).join("\n\n") + "\n\nUser: ";
}
// Dry run
if (pipelineConfig.dryRun) {
debugLog(1, `[DRY RUN] Step "${stepName}": ${provider} prompt="${question.slice(0, 80)}..." format=${format}`);
return `[DRY_RUN:${format}]`;
}
// Cache check
const key = cacheKey(question, attachments);
if (pipelineConfig.cache && responseCache.has(key)) {
debugLog(1, `Cache hit for step "${stepName}"`);
const cached = responseCache.get(key);
stepHistory.push({
step: stepName, provider, question, format,
durationMs: 0, cached: true, retries: 0, error: null,
});
return cached;
}
// Rate limit
applyRateLimit();
// Execute with retries
let lastError = null;
const startTime = Date.now();
for (let attempt = 0; attempt <= maxRetries; attempt++) {
try {
if (attempt > 0) {
const backoff = Math.pow(2, attempt - 1) * 1000;
debugLog(1, `Retry ${attempt}/${maxRetries} for step "${stepName}" (backoff: ${backoff}ms)`);
const buf = new SharedArrayBuffer(4);
const arr = new Int32Array(buf);
Atomics.wait(arr, 0, 0, backoff);
}
const basePrompt = buildPrompt(question, format, attempt);
const prompt = contextPrefix ? contextPrefix + basePrompt : basePrompt;
const raw = executeCliCommand(provider, prompt, attachments, stepModel);
debugLog(3, `Raw response: ${raw.slice(0, 500)}`);
const parsed = parseResponse(raw, format);
const durationMs = Date.now() - startTime;
// Record in context
if (contextId) {
if (!contexts.has(contextId))
contexts.set(contextId, []);
const msgs = contexts.get(contextId);
msgs.push({ role: "user", content: question });
msgs.push({ role: "assistant", content: raw.trim() });
}
// Cache result
if (pipelineConfig.cache) {
responseCache.set(key, parsed);
}
stepHistory.push({
step: stepName, provider, question, format,
durationMs, cached: false, retries: attempt, error: null,
});
debugLog(1, `Step "${stepName}" completed in ${durationMs}ms (${attempt} retries)`);
return parsed;
}
catch (err) {
lastError = err instanceof Error ? err : new Error(String(err));
debugLog(1, `Step "${stepName}" attempt ${attempt} failed: ${lastError.message}`);
}
}
// All retries exhausted — handle error based on onError config
const durationMs = Date.now() - startTime;
const errorMsg = lastError?.message ?? "Unknown error";
stepHistory.push({
step: stepName, provider, question, format,
durationMs, cached: false, retries: maxRetries, error: errorMsg,
});
const errorMode = opts.onError ?? pipelineConfig.onError;
if (errorMode === "fallback" || (errorMode === "throw" && pipelineConfig.fallback)) {
const fallbackProvider = pipelineConfig.fallback;
if (fallbackProvider && fallbackProvider !== provider) {
debugLog(1, `Falling back to ${fallbackProvider} for step "${stepName}"`);
try {
return executeAgentStep(fallbackProvider, stepName + ":fallback", {
...opts,
onError: "throw", // Don't recurse fallback
});
}
catch (fbErr) {
debugLog(1, `Fallback also failed: ${fbErr instanceof Error ? fbErr.message : String(fbErr)}`);
}
}
}
if (errorMode === "skip") {
debugLog(1, `Step "${stepName}" failed, skipping (onError=skip)`);
return "__SKIPPED__";
}
throw new Error(`agent.${provider} step "${stepName}" failed after ${maxRetries + 1} attempts: ${errorMsg}`);
}
// ── Function Handlers ───────────────────────────────────────────────
const pipeline = (args) => {
const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {});
if (opts.debug !== undefined)
pipelineConfig.debug = Number(opts.debug);
if (opts.retries !== undefined)
pipelineConfig.retries = Number(opts.retries);
if (opts.budget !== undefined)
pipelineConfig.budget = Number(opts.budget);
if (opts.session !== undefined)
pipelineConfig.session = String(opts.session);
if (opts.cache !== undefined)
pipelineConfig.cache = Boolean(opts.cache);
if (opts.timeout !== undefined)
pipelineConfig.timeout = Number(opts.timeout);
if (opts.rateLimit !== undefined)
pipelineConfig.rateLimit = Number(opts.rateLimit);
if (opts.fallback !== undefined)
pipelineConfig.fallback = String(opts.fallback);
if (opts.onError !== undefined)
pipelineConfig.onError = String(opts.onError);
if (opts.dryRun !== undefined)
pipelineConfig.dryRun = Boolean(opts.dryRun);
if (opts.keepTemp !== undefined)
pipelineConfig.keepTemp = Boolean(opts.keepTemp);
if (opts.model !== undefined)
pipelineConfig.model = String(opts.model);
// Sync debug level
if (opts.debug !== undefined)
debugLevel = pipelineConfig.debug;
debugLog(1, "Pipeline configured:", pipelineConfig);
return { ...pipelineConfig };
};
const claude = (args) => {
const stepName = String(args[0] ?? "unnamed");
const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
return executeAgentStep("claude", stepName, opts);
};
const codex = (args) => {
const stepName = String(args[0] ?? "unnamed");
const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
return executeAgentStep("codex", stepName, opts);
};
const debug = (args) => {
const level = Number(args[0] ?? 0);
debugLevel = Math.max(0, Math.min(3, level));
pipelineConfig.debug = debugLevel;
return debugLevel;
};
const log = (args) => {
const path = String(args[0] ?? "");
logPath = path;
debugLog(1, `Log file set to: ${path}`);
return path;
};
const cost = () => {
const totalMs = stepHistory.reduce((sum, s) => sum + s.durationMs, 0);
const totalRetries = stepHistory.reduce((sum, s) => sum + s.retries, 0);
const cacheHits = stepHistory.filter((s) => s.cached).length;
const errors = stepHistory.filter((s) => s.error !== null).length;
return {
steps: stepHistory.length,
totalMs,
totalRetries,
cacheHits,
errors,
history: stepHistory.map((s) => ({
step: s.step,
provider: s.provider,
format: s.format,
durationMs: s.durationMs,
cached: s.cached,
retries: s.retries,
error: s.error,
})),
};
};
const notify = (args) => {
const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {});
if (opts.enabled !== undefined)
notifyConfig.enabled = Boolean(opts.enabled);
if (opts.onError !== undefined)
notifyConfig.onError = Boolean(opts.onError);
if (opts.onComplete !== undefined)
notifyConfig.onComplete = Boolean(opts.onComplete);
if (opts.transport !== undefined)
notifyConfig.transport = String(opts.transport);
if (opts.to !== undefined)
notifyConfig.to = String(opts.to);
debugLog(1, "Notification configured:", notifyConfig);
return { ...notifyConfig };
};
// ── Model Selection ─────────────────────────────────────────────────
const model = (args) => {
const modelName = String(args[0] ?? "");
if (!modelName)
return pipelineConfig.model || "default";
pipelineConfig.model = modelName;
debugLog(1, `Default model set to: ${modelName}`);
return modelName;
};
// ── Prompt Loading ──────────────────────────────────────────────────
const prompt = (args) => {
const filePath = String(args[0] ?? "");
const vars = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
if (!filePath)
throw new Error('agent.prompt: file path is required');
if (!existsSync(filePath))
throw new Error(`agent.prompt: file not found: "${filePath}"`);
let content = readFileSync(filePath, "utf-8");
// Replace {{varName}} placeholders with values
for (const [key, val] of Object.entries(vars)) {
const placeholder = new RegExp(`\\{\\{\\s*${key}\\s*\\}\\}`, "g");
content = content.replace(placeholder, typeof val === "object" ? JSON.stringify(val) : String(val));
}
debugLog(2, `Loaded prompt from "${filePath}" (${content.length} chars, ${Object.keys(vars).length} vars)`);
return content;
};
// ── Context Management ──────────────────────────────────────────────
const context = (args) => {
const action = String(args[0] ?? "create");
const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
switch (action) {
case "create":
case "start": {
const id = opts.id ? String(opts.id) : `ctx_${Date.now()}`;
const messages = [];
// System prompt becomes first "user" message as context framing
if (opts.system) {
messages.push({ role: "user", content: `System instructions: ${String(opts.system)}` });
messages.push({ role: "assistant", content: "Understood. I will follow these instructions." });
}
contexts.set(id, messages);
debugLog(1, `Context "${id}" created (${messages.length} initial messages)`);
return id;
}
case "clear": {
const id = String(opts.id ?? args[1] ?? "");
if (contexts.has(id)) {
contexts.get(id).length = 0;
debugLog(1, `Context "${id}" cleared`);
}
return true;
}
case "delete": {
const id = String(opts.id ?? args[1] ?? "");
contexts.delete(id);
debugLog(1, `Context "${id}" deleted`);
return true;
}
case "get": {
const id = String(opts.id ?? args[1] ?? "");
const msgs = contexts.get(id);
if (!msgs)
return null;
return { id, messages: msgs.length, history: msgs };
}
case "list": {
const result = {};
for (const [id, msgs] of contexts) {
result[id] = msgs.length;
}
return result;
}
default:
throw new Error(`agent.context: unknown action "${action}". Use: create, clear, delete, get, list`);
}
};
// ── Batch Processing ────────────────────────────────────────────────
const batch = (args) => {
const stepName = String(args[0] ?? "batch");
const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
const items = Array.isArray(opts.items) ? opts.items : [];
const questionTemplate = String(opts.question ?? "");
const format = (String(opts.expectedOutput ?? "TEXT").toUpperCase());
const provider = (String(opts.provider ?? "claude"));
const stepModel = opts.model ? String(opts.model) : undefined;
const maxRetries = opts.retries != null ? Number(opts.retries) : pipelineConfig.retries;
if (!questionTemplate)
throw new Error('agent.batch: "question" template is required');
if (items.length === 0)
return [];
debugLog(1, `Batch "${stepName}": ${items.length} items, format=${format}`);
const results = [];
for (let index = 0; index < items.length; index++) {
const item = items[index];
const itemStr = typeof item === "object" ? JSON.stringify(item) : String(item);
// Replace {{item}} and {{index}} in the template
let question = questionTemplate
.replace(/\{\{\s*item\s*\}\}/g, itemStr)
.replace(/\{\{\s*index\s*\}\}/g, String(index));
// Also replace {{item.field}} for object items
if (typeof item === "object" && item !== null) {
const obj = item;
for (const [key, val] of Object.entries(obj)) {
const ph = new RegExp(`\\{\\{\\s*item\\.${key}\\s*\\}\\}`, "g");
question = question.replace(ph, typeof val === "object" ? JSON.stringify(val) : String(val));
}
}
const batchStepName = `${stepName}[${index}]`;
if (pipelineConfig.dryRun) {
results.push(`[DRY_RUN:${format}]`);
continue;
}
// Cache check
const key = cacheKey(question);
if (pipelineConfig.cache && responseCache.has(key)) {
debugLog(2, `Batch "${batchStepName}" cache hit`);
results.push(responseCache.get(key));
stepHistory.push({
step: batchStepName, provider, question, format,
durationMs: 0, cached: true, retries: 0, error: null,
});
continue;
}
// Rate limit
applyRateLimit();
const startTime = Date.now();
let lastError = null;
let success = false;
for (let attempt = 0; attempt <= maxRetries; attempt++) {
try {
if (attempt > 0) {
const backoff = Math.pow(2, attempt - 1) * 1000;
const buf = new SharedArrayBuffer(4);
const arr = new Int32Array(buf);
Atomics.wait(arr, 0, 0, backoff);
}
const fullPrompt = buildPrompt(question, format, attempt);
const raw = executeCliCommand(provider, fullPrompt, undefined, stepModel);
const parsed = parseResponse(raw, format);
if (pipelineConfig.cache)
responseCache.set(key, parsed);
results.push(parsed);
const durationMs = Date.now() - startTime;
stepHistory.push({
step: batchStepName, provider, question, format,
durationMs, cached: false, retries: attempt, error: null,
});
debugLog(2, `Batch "${batchStepName}" completed (${index + 1}/${items.length})`);
success = true;
break;
}
catch (err) {
lastError = err instanceof Error ? err : new Error(String(err));
}
}
if (!success) {
const errorMsg = lastError?.message ?? "Unknown error";
stepHistory.push({
step: batchStepName, provider, question, format,
durationMs: Date.now() - startTime, cached: false, retries: maxRetries, error: errorMsg,
});
const errorMode = opts.onError ?? pipelineConfig.onError;
if (errorMode === "skip") {
results.push("__SKIPPED__");
}
else {
throw new Error(`agent.batch step "${batchStepName}" failed: ${errorMsg}`);
}
}
}
debugLog(1, `Batch "${stepName}" complete: ${results.length}/${items.length} items`);
return results;
};
// ── Classify (sugar) ────────────────────────────────────────────────
const classify = (args) => {
const stepName = String(args[0] ?? "classify");
const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
const text = String(opts.text ?? "");
const categories = Array.isArray(opts.categories) ? opts.categories.map(String) : [];
const provider = (String(opts.provider ?? "claude"));
if (!text)
throw new Error('agent.classify: "text" is required');
if (categories.length < 2)
throw new Error('agent.classify: at least 2 "categories" required');
const question = `Classify the following text into exactly one of these categories: ${categories.join(", ")}.\n\nText: ${text}\n\nRespond with ONLY the category name. Nothing else.`;
const result = executeAgentStep(provider, stepName, {
question,
expectedOutput: "TEXT",
model: opts.model,
context: opts.context,
});
// Fuzzy match to nearest category
const raw = String(result).trim().toLowerCase();
for (const cat of categories) {
if (raw === cat.toLowerCase() || raw.includes(cat.toLowerCase())) {
return cat;
}
}
// If no exact match, return raw (best effort)
debugLog(1, `Classify "${stepName}": no exact category match for "${raw}", returning raw`);
return String(result).trim();
};
// ── Extract (sugar) ─────────────────────────────────────────────────
const extract = (args) => {
const stepName = String(args[0] ?? "extract");
const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
const text = String(opts.text ?? "");
const fields = Array.isArray(opts.fields) ? opts.fields.map(String) : [];
const provider = (String(opts.provider ?? "claude"));
if (!text)
throw new Error('agent.extract: "text" is required');
if (fields.length === 0)
throw new Error('agent.extract: at least one "fields" entry required');
const fieldList = fields.map((f) => `"${f}"`).join(", ");
const question = `Extract the following fields from the text: ${fieldList}.\n\nText: ${text}\n\nRespond with a JSON object containing only these keys: ${fieldList}. If a field is not found, use null.`;
return executeAgentStep(provider, stepName, {
question,
expectedOutput: "JSON",
model: opts.model,
context: opts.context,
});
};
// ── Guard (validate AI output) ──────────────────────────────────────
const guard = (args) => {
const value = args[0];
const rules = (typeof args[1] === "object" && args[1] !== null ? args[1] : {});
const errors = [];
// Type check
if (rules.type) {
const expectedType = String(rules.type);
if (expectedType === "array") {
if (!Array.isArray(value))
errors.push(`Expected array, got ${typeof value}`);
}
else if (expectedType === "object") {
if (typeof value !== "object" || value === null || Array.isArray(value)) {
errors.push(`Expected object, got ${Array.isArray(value) ? "array" : typeof value}`);
}
}
else if (typeof value !== expectedType) {
errors.push(`Expected ${expectedType}, got ${typeof value}`);
}
}
// Number range
if (rules.min !== undefined && typeof value === "number") {
if (value < Number(rules.min))
errors.push(`Value ${value} is below minimum ${rules.min}`);
}
if (rules.max !== undefined && typeof value === "number") {
if (value > Number(rules.max))
errors.push(`Value ${value} is above maximum ${rules.max}`);
}
// String length
if (rules.minLength !== undefined && typeof value === "string") {
if (value.length < Number(rules.minLength))
errors.push(`String length ${value.length} is below minimum ${rules.minLength}`);
}
if (rules.maxLength !== undefined && typeof value === "string") {
if (value.length > Number(rules.maxLength))
errors.push(`String length ${value.length} is above maximum ${rules.maxLength}`);
}
// Pattern match
if (rules.pattern && typeof value === "string") {
const regex = new RegExp(String(rules.pattern));
if (!regex.test(value))
errors.push(`Value does not match pattern: ${rules.pattern}`);
}
// Enum check
if (Array.isArray(rules.enum)) {
const allowed = rules.enum.map(String);
if (!allowed.includes(String(value))) {
errors.push(`Value "${value}" is not in allowed values: ${allowed.join(", ")}`);
}
}
// Required fields (for objects)
if (Array.isArray(rules.required) && typeof value === "object" && value !== null && !Array.isArray(value)) {
const obj = value;
for (const field of rules.required) {
const key = String(field);
if (obj[key] === undefined || obj[key] === null) {
errors.push(`Missing required field: "${key}"`);
}
}
}
// Not empty
if (rules.notEmpty) {
if (value === null || value === undefined || value === "" ||
(Array.isArray(value) && value.length === 0) ||
(typeof value === "object" && value !== null && Object.keys(value).length === 0)) {
errors.push("Value is empty");
}
}
if (errors.length > 0) {
const mode = String(rules.onFail ?? "throw");
const errorMsg = `Guard failed: ${errors.join("; ")}`;
debugLog(1, errorMsg);
if (mode === "default" && rules.defaultValue !== undefined) {
return rules.defaultValue;
}
if (mode === "null")
return null;
throw new Error(errorMsg);
}
return value;
};
// ── Exports ─────────────────────────────────────────────────────────
export const AgentFunctions = {
pipeline, claude, codex, debug, log, cost, notify,
model, prompt, context, batch, classify, extract, guard,
};
// ── Function metadata (rich PHP-shape) ───────────────────────────────
const stepParam = {
name: "step",
title: "Step name",
description: "Identifier used in logs, cost reports, and cache keys.",
dataType: "string",
formInputType: "text",
required: true,
allowExpression: true,
placeholder: "my-step",
};
const pipelineErrors = {
cli_not_found: "The `claude` or `codex` binary is not on PATH.",
parse_error: "The CLI response could not be parsed into the requested format.",
guard_failed: "A `guard` rule rejected the value.",
timeout: "The CLI exceeded the configured timeout.",
};
export const AgentFunctionMetadata = {
pipeline: {
title: "Configure pipeline",
summary: "Set retries, cache, timeouts, fallback, and default model",
description: "Configure agent execution knobs. All keys are optional; unset values keep their previous value. Call this once near the top of a script.",
group: "setup",
action: "write",
icon: "settings",
capability: "manage_options",
sideEffects: [],
idempotent: false,
since: "1.0.0",
tags: ["agent", "pipeline", "config"],
parameters: [
{
name: "options",
title: "Options",
description: "Recognized keys:\n debug : 0..3\n retries : int (default 3)\n budget : USD cap (0 = no cap)\n session : string id\n cache : bool (default true)\n timeout : ms per CLI call (default 120000)\n rateLimit : ms between calls\n fallback : 'claude' | 'codex'\n onError : 'throw' | 'skip' | 'fallback'\n dryRun : bool\n keepTemp : bool\n model : default model id",
dataType: "object",
formInputType: "json",
required: true,
allowExpression: true,
language: "json",
rows: 6,
},
],
returnType: "object",
returnDescription: "The merged config.",
errors: pipelineErrors,
example: 'agent.pipeline {retries: 3, cache: true, model: "claude-haiku-4-5-20251001"}',
},
claude: {
title: "Run Claude step",
summary: "Send a prompt to the Claude Code CLI and parse the response",
description: "Shells out to the local `claude` CLI with the given prompt and parses the output to `expectedOutput`. Honors the pipeline config (retries, cache, fallback, dryRun).",
group: "execute",
action: "write",
icon: "bot",
capability: "execute_cli",
sideEffects: ["spawns_process", "charges_money"],
idempotent: false,
since: "1.0.0",
tags: ["agent", "claude", "llm", "cli"],
parameters: [
stepParam,
{
name: "options",
title: "Options",
description: "Recognized keys:\n question : prompt (required)\n expectedOutput : TEXT|JSON|ARRAY|NUMBER|BOOLEAN|CSV|MARKDOWN|CODE|HTML|XML|YAML\n model : override default model\n attachments : array of file paths to attach\n attachment : single file shortcut\n condition : if falsy, the step is skipped\n retries : override pipeline.retries\n onError : 'throw' | 'skip' | 'fallback'\n context : context id from agent.context",
dataType: "object",
formInputType: "json",
required: true,
allowExpression: true,
language: "json",
rows: 8,
},
],
returnType: "any",
returnDescription: "Parsed output in the requested shape.",
errors: pipelineErrors,
example: 'agent.claude "analyze" {question: "What is 2+2?", expectedOutput: "NUMBER"}',
},
codex: {
title: "Run Codex step",
summary: "Send a prompt to the OpenAI Codex CLI and parse the response",
description: "Same contract as `agent.claude` but shells out to `codex` instead of `claude`.",
group: "execute",
action: "write",
icon: "bot",
capability: "execute_cli",
sideEffects: ["spawns_process", "charges_money"],
idempotent: false,
since: "1.0.0",
tags: ["agent", "codex", "openai", "cli"],
parameters: [
stepParam,
{
name: "options",
title: "Options",
description: "Same keys as `agent.claude`.",
dataType: "object",
formInputType: "json",
required: true,
allowExpression: true,
language: "json",
rows: 8,
},
],
returnType: "any",
returnDescription: "Parsed output in the requested shape.",
errors: pipelineErrors,
example: 'agent.codex "gen" {question: "Write hello world in Python", expectedOutput: "CODE"}',
},
debug: {
title: "Set debug level",
summary: "Control verbosity of agent logging",
description: "0 = silent, 1 = info, 2 = verbose, 3 = trace. Debug lines are written to stderr and (optionally) a log file.",
group: "diagnostics",
action: "write",
icon: "bug",
capability: "manage_options",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["agent", "debug"],
parameters: [
{
name: "level",
title: "Level",
description: "Integer 0–3.",
dataType: "number",
formInputType: "number",
required: true,
allowExpression: true,
defaultValue: 0,
},
],
returnType: "number",
returnDescription: "The clamped level.",
errors: {},
example: "agent.debug 1",
},
log: {
title: "Set log file",
summary: "Also append debug output to a file",
description: "Absolute or script-relative path. Existing contents are preserved; new lines are appended.",
group: "diagnostics",
action: "write",
icon: "file-text",
capability: "upload_files",
sideEffects: ["modifies_filesystem"],
idempotent: true,
since: "1.0.0",
tags: ["agent", "log"],
parameters: [
{
name: "path",
title: "Path",
description: "Where to append log lines.",
dataType: "string",
formInputType: "text",
required: true,
allowExpression: true,
placeholder: "./agent.log",
},
],
returnType: "string",
returnDescription: "The path that was set.",
errors: {},
example: 'agent.log "pipeline.log"',
},
cost: {
title: "Cost and timing report",
summary: "Aggregate stats across every executed step",
description: "Returns a summary of all step executions so far, including total time, cache hits, retries, and errors.",
group: "diagnostics",
action: "read",
icon: "bar-chart",
capability: "manage_options",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["agent", "cost", "report"],
parameters: [],
returnType: "object",
returnDescription: "{ steps, totalMs, totalRetries, cacheHits, errors, history }",
errors: {},
example: "agent.cost",
},
notify: {
title: "Configure notifications",
summary: "Pick where pipeline events are sent",
description: "Stores notification preferences. The pipeline itself does not dispatch notifications — hosts read this config to decide what to do.",
group: "setup",
action: "write",
icon: "bell",
capability: "manage_options",
sideEffects: [],
idempotent: false,
since: "1.0.0",
tags: ["agent", "notify"],
parameters: [
{
name: "options",
title: "Options",
description: "{ enabled, onError, onComplete, transport, to }",
dataType: "object",
formInputType: "json",
required: true,
allowExpression: true,
language: "json",
rows: 5,
},
],
returnType: "object",
returnDescription: "The merged notify config.",
errors: {},
example: 'agent.notify {enabled: true, onError: true, transport: "gmail", to: "admin@example.com"}',
},
model: {
title: "Get/set default model",
summary: "Read or change the fallback model used by steps without an explicit `model`",
description: "Call with no arg to read; pass a name to set.",
group: "setup",
action: "write",
icon: "cpu",
capability: "manage_options",
sideEffects: [],
idempotent: false,
since: "1.0.0",
tags: ["agent", "model"],
parameters: [
{
name: "modelName",
title: "Model name",
description: "e.g. 'claude-haiku-4-5-20251001'. Omit to read the current value.",
dataType: "string",
formInputType: "text",
required: false,
allowExpression: true,
},
],
returnType: "string",
returnDescription: "The effective model name.",
errors: {},
example: 'agent.model "claude-haiku-4-5-20251001"',
},
prompt: {
title: "Load prompt template",
summary: "Read a prompt file and substitute {{variables}}",
description: "Reads a local file and replaces `{{name}}` placeholders with values from the second argument. Useful for keeping long system prompts out of scripts.",
group: "helpers",
action: "read",
icon: "file-text",
capability: "read",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["agent", "prompt", "template"],
parameters: [
{
name: "filePath",
title: "File path",
description: "Path to the template file.",
dataType: "string",
formInputType: "text",
required: true,
allowExpression: true,
},
{
name: "variables",
title: "Variables",
description: "{ key: value } substitutions. Objects are JSON-stringified.",
dataType: "object",
formInputType: "json",
required: false,
allowExpression: true,
language: "json",
rows: 4,
},
],
returnType: "string",
returnDescription: "The rendered prompt.",
errors: {},
example: 'agent.prompt "./prompts/analyze.md" {data: $csv}',
},
context: {
title: "Manage context",
summary: "Create, inspect, clear, or delete a multi-turn conversation context",
description: "Pass the returned id to `agent.claude` / `agent.codex` via their `context` option to chain turns.",
group: "helpers",
action: "write",
icon: "layers",
capability: "manage_options",
sideEffects: [],
idempotent: false,
since: "1.0.0",
tags: ["agent", "context"],
parameters: [
{
name: "action",
title: "Action",
description: "One of: create, clear, delete, get, list.",
dataType: "string",
formInputType: "text",
required: true,
allowExpression: true,
defaultValue: "create",
},
{
name: "options",
title: "Options",
description: "{ id, system }",
dataType: "object",
formInputType: "json",
required: false,
allowExpression: true,
language: "json",
rows: 3,
},
],
returnType: "any",
returnDescription: "The context id (create), map (list), object (get), or boolean (clear/delete).",
errors: {},
example: 'agent.context "create" {system: "You are a data analyst"}',
},
batch: {
title: "Batch step",
summary: "Run one prompt per item in an array",
description: "The question template supports `{{item}}`, `{{index}}`, and `{{item.field}}` placeholders. Honors pipeline cache / rate limit / retries.",
group: "execute",
action: "write",
icon: "layers",
capability: "execute_cli",
sideEffects: ["spawns_process", "charges_money"],
idempotent: false,
since: "1.0.0",
tags: ["agent", "batch"],
parameters: [
stepParam,
{
name: "options",
title: "Options",
description: "Recognized keys:\n items : array\n question : template string with {{item}} / {{index}} / {{item.field}}\n expectedOutput : TEXT|JSON|ARRAY|...\n provider : 'claude' (default) | 'codex'\n model : override\n retries : int\n onError : 'throw' | 'skip'",
dataType: "object",
formInputType: "json",
required: true,
allowExpression: true,
language: "json",
rows: 8,
},
],
returnType: "array",
returnDescription: "Array of parsed results (one per input item).",
errors: pipelineErrors,
example: 'agent.batch "route" {items: $tickets, question: "Classify: {{item}}", expectedOutput: "JSON"}',
},
classify: {
title: "Classify step (sugar)",
summary: "Pick exactly one of the given categories",
description: "Wraps a Claude/Codex step with a strict classification prompt and fuzzy-matches the answer to the nearest category.",
group: "helpers",
action: "write",
icon: "tag",
capability: "execute_cli",
sideEffects: ["spawns_process", "charges_money"],
idempotent: true,
since: "1.0.0",
tags: ["agent", "classify"],
parameters: [
stepParam,
{
name: "options",
title: "Options",
description: "{ text, categories[], provider, model, context }",
dataType: "object",
formInputType: "json",
required: true,
allowExpression: true,
language: "json",
rows: 5,
},
],
returnType: "string",
returnDescription: "The matching category name.",
errors: pipelineErrors,
example: 'agent.classify "route" {text: $email, categories: ["billing","support","sales","spam"]}',
},
extract: {
title: "Extract step (sugar)",
summary: "Pull named fields out of unstructured text",
description: "Returns a JSON object with the requested keys. Missing fields become null.",
group: "helpers",
action: "write",
icon: "box-select",
capability: "execute_cli",
sideEffects: ["spawns_process", "charges_money"],
idempotent: true,
since: "1.0.0",
tags: ["agent", "extract"],
parameters: [
stepParam,
{
name: "options",
title: "Options",
description: "{ text, fields[], provider, model, context }",
dataType: "object",
formInputType: "json",
required: true,
allowExpression: true,
language: "json",
rows: 5,
},
],
returnType: "object",
returnDescription: "Parsed JSON object.",
errors: pipelineErrors,
example: 'agent.extract "parse" {text: $resume, fields: ["name","email","years"]}',
},
guard: {
title: "Validate value",
summary: "Enforce type / range / pattern rules on a value",
description: "Runs a lightweight validator over the value. On failure the handler throws, or returns null / a default value depending on `rules.onFail`.",
group: "helpers",
action: "read",
icon: "shield-check",
capability: "manage_options",
sideEffects: [],
idempotent: true,
since: "1.0.0",
tags: ["agent", "guard", "validate"],
parameters: [
{
name: "value",
title: "Value",
description: "The value to check.",
dataType: "any",
formInputType: "json",
required: true,
allowExpression: true,
language: "json",
rows: 3,
},
{
name: "rules",
title: "Rules",
description: "Recognized keys:\n type : 'string' | 'number' | 'boolean' | 'object' | 'array'\n min / max : number bounds\n minLength / maxLength : string bounds\n pattern : regex\n enum : allowed values array\n required : array of required object keys\n notEmpty : boolean\n onFail : 'throw' | 'null' | 'default'\n defaultValue : fallback when onFail='default'",
dataType: "object",
formInputType: "json",
required: true,
allowExpression: true,
language: "json",
rows: 6,
},
],
returnType: "any",
returnDescription: "The input value if valid, or null / default on failure.",
errors: pipelineErrors,
example: 'agent.guard $score {type: "number", min: 0, max: 100}',
},
};
export const AgentModuleMetadata = {
slug: "agent",
title: "AI Agent (Claude / Codex CLI)",
summary: "Drive the local claude and codex CLIs — prompts, parsing, caching, retries, batching, and guards",
description: "Orchestrate agent-style pipelines on top of the local `claude` and `codex` CLI binaries. Each step is typed (JSON / NUMBER / BOOLEAN / ...), cached by prompt hash, retried with exponential backoff, and tracked in a cost/timing report.\n\nThis module spawns external processes; for hosted LLM calls use the `ai`, `openai`, or `anthropic` modules instead.",
category: "ai",
icon: "icon.svg",
color: "#F97316",
version: "0.2.0",
docsUrl: "https://docs.robinpath.com/modules/agent",
status: "stable",
requires: [],
minNodeVersion: "18.0.0",
credentialsType: null,
operationGroups: {
setup: { title: "Setup", description: "Pipeline config and notifications.", order: 1 },
execute: { title: "Execute", description: "Run prompts against claude / codex.", order: 2 },
helpers: { title: "Helpers", description: "Prompt templating, classify, extract, guard.", order: 3 },
diagnostics: { title: "Diagnostics", description: "Debug, log, cost reporting.", order: 4 },
},
methods: Object.keys(AgentFunctions),
};
//# sourceMappingURL=agent.js.map
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
import type { ModuleAdapter } from "@robinpath/core";
declare const AgentModule: ModuleAdapter;
export default AgentModule;
export { AgentModule };
export { AgentFunctions, AgentFunctionMetadata, AgentModuleMetadata, configureAgent, } from "./agent.js";
//# sourceMappingURL=index.d.ts.map
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQrD,QAAA,MAAM,WAAW,EAAE,aASlB,CAAC;AAEF,eAAe,WAAW,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAC"}
import { AgentFunctions, AgentFunctionMetadata, AgentModuleMetadata, configureAgent, } from "./agent.js";
const AgentModule = {
name: "agent",
functions: AgentFunctions,
functionMetadata: AgentFunctionMetadata,
moduleMetadata: AgentModuleMetadata,
// No credentials — agent shells out to the local CLIs.
credentialTypes: [],
configure: configureAgent,
global: false,
};
export default AgentModule;
export { AgentModule };
export { AgentFunctions, AgentFunctionMetadata, AgentModuleMetadata, configureAgent, } from "./agent.js";
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,GAAkB;IACjC,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,cAAc;IACzB,gBAAgB,EAAE,qBAAqB;IACvC,cAAc,EAAE,mBAAmB;IACnC,uDAAuD;IACvD,eAAe,EAAE,EAAE;IACnB,SAAS,EAAE,cAAc;IACzB,MAAM,EAAE,KAAK;CACd,CAAC;AAEF,eAAe,WAAW,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,GACf,MAAM,YAAY,CAAC"}
+15
-6
{
"name": "@robinpath/agent",
"version": "0.1.2",
"description": "AI agent integration (Claude Code, OpenAI Codex) for RobinPath pipelines",
"version": "0.3.0",
"description": "AI agent pipelines on top of the local Claude Code and OpenAI Codex CLIs — typed outputs, caching, retries, batching.",
"publishConfig": {

@@ -25,6 +25,6 @@ "access": "public"

"peerDependencies": {
"@robinpath/core": ">=0.20.0"
"@robinpath/core": ">=0.40.0"
},
"devDependencies": {
"@robinpath/core": "^0.30.1",
"@robinpath/core": "^0.40.0",
"tsx": "^4.19.0",

@@ -35,3 +35,5 @@ "typescript": "^5.6.0"

"agent",
"ai"
"ai",
"claude",
"codex"
],

@@ -43,4 +45,11 @@ "license": "MIT",

"auth": "none",
"functionCount": 14
"functionCount": 14,
"runtime": "node",
"runtimeReason": "Spawns local `claude` and `codex` CLI binaries via child_process.",
"language": "nodejs",
"platforms": [
"cli",
"desktop"
]
}
}

@@ -22,3 +22,3 @@ # @robinpath/agent

```bash
npm install @robinpath/agent
robinpath add @robinpath/agent
```

@@ -25,0 +25,0 @@