@dot-agent/cli 1.0.0 → 1.0.1
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/.githooks/pre-commit +2 -0
- package/AGENTS.md +9 -0
- package/LICENSE +185 -0
- package/package.json +25 -1
- package/scripts/ensure-license-headers.sh +54 -0
- package/src/cli.ts +14 -0
- package/src/commands/init.ts +14 -0
- package/src/commands/pack.ts +14 -0
- package/src/commands/run.ts +14 -0
- package/src/commands/unpack.ts +14 -0
- package/src/core/envelope.ts +14 -0
- package/src/core/id.ts +14 -0
- package/src/core/lint.ts +14 -0
- package/src/core/types.ts +14 -0
- package/src/core/zip.ts +14 -0
- package/src/index.ts +14 -0
- package/src/types.kernel-dsl.d.ts +14 -0
- package/src/types.ts +14 -0
- package/src/types.wts.d.ts +14 -0
- package/tests/envelope.test.ts +14 -0
- package/tests/id.test.ts +14 -0
- package/tsup.config.ts +14 -0
- package/vitest.config.ts +14 -0
- package/dist/chunk-PSDRJRNL.js +0 -756
- package/dist/chunk-PSDRJRNL.js.map +0 -1
- package/dist/cli.cjs +0 -863
- package/dist/cli.cjs.map +0 -1
- package/dist/cli.d.cts +0 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +0 -93
- package/dist/cli.js.map +0 -1
- package/dist/index.cjs +0 -799
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -110
- package/dist/index.d.ts +0 -110
- package/dist/index.js +0 -13
- package/dist/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/init.ts","../src/commands/pack.ts","../src/core/lint.ts","../src/core/id.ts","../src/core/envelope.ts","../src/core/zip.ts","../src/commands/unpack.ts","../src/commands/run.ts"],"sourcesContent":["import { mkdir, writeFile, stat } from 'fs/promises'\nimport { join, basename } from 'path'\nimport { InitOptions, InitResult } from '../types.js'\n\nconst AGENT_DESCRIPTION_TEMPLATE = (name: string, domain: string) => `agent ${name}\n domain ${domain}\n license Apache-2.0\n\ndescription\n Describe what this agent does.\n\nbehavior agent.behavior\n\ncapabilities\n ActionName \"Describe this capability\"\n`\n\nconst AGENT_BEHAVIOR_TEMPLATE = `state init\n transition to responsive\n\nstate responsive\n goal \"Help the user with their task.\"\n interact\n on intent \"start\" transition to responsive\n`\n\nconst SOUL_TEMPLATE = (name: string) => `# ${name} — Persona\n\n## Voice and Tone\n\nDescribe the agent's voice, personality, and communication style.\n`\n\nconst README_TEMPLATE = (name: string) => `# ${name}\n\nBrief description of what this agent does.\n\n## Usage\n\nExample of how to use this agent.\n`\n\nconst LICENSE = `Apache License\nVersion 2.0, January 2004\n\nhttp://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n`\n\nexport async function init(options: InitOptions = {}): Promise<InitResult> {\n const dir = options.dir || process.cwd()\n const name = options.name || basename(dir)\n const domain = options.domain || 'example.com'\n\n try {\n await stat(dir)\n } catch {\n await mkdir(dir, { recursive: true })\n }\n\n const agentDescriptionPath = join(dir, 'agent.description')\n try {\n await stat(agentDescriptionPath)\n throw new Error(`agent.description already exists at ${agentDescriptionPath}`)\n } catch (err: any) {\n if (err.code !== 'ENOENT') throw err\n }\n\n const files: string[] = []\n\n await writeFile(agentDescriptionPath, AGENT_DESCRIPTION_TEMPLATE(name, domain))\n files.push('agent.description')\n\n await writeFile(join(dir, 'agent.behavior'), AGENT_BEHAVIOR_TEMPLATE)\n files.push('agent.behavior')\n\n await writeFile(join(dir, 'SOUL.md'), SOUL_TEMPLATE(name))\n files.push('SOUL.md')\n\n await writeFile(join(dir, 'README.md'), README_TEMPLATE(name))\n files.push('README.md')\n\n await writeFile(join(dir, 'LICENSE'), LICENSE)\n files.push('LICENSE')\n\n await mkdir(join(dir, 'behaviors'), { recursive: true })\n await writeFile(join(dir, 'behaviors', '.gitkeep'), '')\n files.push('behaviors/.gitkeep')\n\n await mkdir(join(dir, 'guides'), { recursive: true })\n await writeFile(join(dir, 'guides', '.gitkeep'), '')\n files.push('guides/.gitkeep')\n\n await mkdir(join(dir, 'knowledge'), { recursive: true })\n await writeFile(join(dir, 'knowledge', '.gitkeep'), '')\n files.push('knowledge/.gitkeep')\n\n await writeFile(join(dir, 'AGENTS.md'), '')\n files.push('AGENTS.md')\n\n return { dir, files }\n}\n","import { readFile, stat, readdir } from 'fs/promises'\nimport { join, basename, dirname } from 'path'\nimport { execSync } from 'child_process'\nimport { createHash } from 'crypto'\nimport JSZip from 'jszip'\nimport { PackOptions, PackResult, LintMessage } from '../types.js'\nimport { createLinter } from '../core/lint.js'\nimport { buildId } from '../core/id.js'\nimport { buildAboutme, aboutmeToJson } from '../core/envelope.js'\nimport { buildTypesJson } from '../core/types.js'\nimport { writeZip } from '../core/zip.js'\n\nfunction gitDescribeTags(): string | null {\n try {\n return execSync('git describe --tags --abbrev=0', {\n stdio: 'pipe',\n encoding: 'utf-8',\n }).trim()\n } catch {\n return null\n }\n}\n\nfunction gitRevParseShort(): string | null {\n try {\n return execSync('git rev-parse --short HEAD', {\n stdio: 'pipe',\n encoding: 'utf-8',\n }).trim()\n } catch {\n return null\n }\n}\n\nasync function resolveVersion(explicit?: string): Promise<string> {\n if (explicit) return explicit\n\n const gitTag = gitDescribeTags()\n if (gitTag) return gitTag\n\n return 'v1.0.0'\n}\n\nasync function resolveCommit(explicit?: string): Promise<string | undefined> {\n if (explicit) return explicit\n return gitRevParseShort() || undefined\n}\n\nasync function collectFiles(dir: string): Promise<Map<string, string>> {\n const files = new Map<string, string>()\n\n async function walk(subdir: string, prefix: string = '') {\n try {\n const entries = await readdir(subdir)\n for (const entry of entries) {\n if (entry === '.gitkeep' || entry.startsWith('.')) continue\n\n const fullPath = join(subdir, entry)\n const stats = await stat(fullPath)\n const relativePath = prefix ? `${prefix}/${entry}` : entry\n\n if (stats.isDirectory()) {\n await walk(fullPath, relativePath)\n } else {\n const content = await readFile(fullPath, 'utf-8')\n files.set(relativePath, content)\n }\n }\n } catch {\n // directory doesn't exist or can't be read\n }\n }\n\n const description = await readFile(join(dir, 'agent.description'), 'utf-8')\n files.set('agent.description', description)\n\n const behavior = await readFile(join(dir, 'agent.behavior'), 'utf-8')\n files.set('agent.behavior', behavior)\n\n try {\n const soul = await readFile(join(dir, 'SOUL.md'), 'utf-8')\n files.set('SOUL.md', soul)\n } catch {\n // optional\n }\n\n await walk(join(dir, 'behaviors'), 'behaviors')\n await walk(join(dir, 'guides'), 'guides')\n await walk(join(dir, 'knowledge'), 'knowledge')\n\n return files\n}\n\nfunction parseDescription(text: string): any {\n const domain = text.match(/domain\\s+([^\\n]+)/)?.[1] || ''\n const name = text.match(/agent\\s+([^\\n]+)/)?.[1] || ''\n const description = text.match(/description\\s+(.+?)(?=\\n\\n|\\n[a-z])/s)?.[1] || ''\n\n return {\n domain: domain.trim(),\n name: name.trim(),\n description: description.trim(),\n capabilities: [],\n }\n}\n\nexport async function pack(options: PackOptions = {}): Promise<PackResult> {\n const dir = options.dir || process.cwd()\n const outPath = options.out || join(dir, `${basename(dir)}.agent`)\n\n // Read files\n let descriptionText: string\n let behaviorText: string\n\n try {\n descriptionText = await readFile(join(dir, 'agent.description'), 'utf-8')\n } catch {\n throw new Error('E003: File agent.description not found')\n }\n\n try {\n behaviorText = await readFile(join(dir, 'agent.behavior'), 'utf-8')\n } catch {\n throw new Error('E007: File agent.behavior not found')\n }\n\n // Lint\n const linter = await createLinter()\n const descriptionMessages = await linter.lintDescription(descriptionText)\n const behaviorMessages = await linter.lintBehavior(behaviorText)\n\n const allMessages = [...descriptionMessages, ...behaviorMessages]\n const errors = allMessages.filter(m => m.severity === 'error')\n const warnings = allMessages.filter(m => m.severity === 'warning')\n\n if (errors.length > 0) {\n throw new Error(`Lint failed: ${errors.map(e => `${e.file}:${e.line}:${e.col} ${e.code} ${e.message}`).join('\\n')}`)\n }\n\n // Parse description\n const description = parseDescription(descriptionText)\n\n // Resolve version & commit\n const version = await resolveVersion(options.version)\n const commit = await resolveCommit(options.commit)\n\n // Collect all files\n const allFiles = await collectFiles(dir)\n\n // Build ID\n const contentForHash = Array.from(allFiles.values()).join('')\n const digest = createHash('sha256').update(contentForHash).digest('hex').substring(0, 8)\n const id = buildId({\n namespace: description.domain,\n name: description.name,\n version,\n digest,\n })\n\n // Build aboutme\n const aboutme = buildAboutme({\n id,\n name: description.name,\n description: description.description,\n version,\n domain: description.domain,\n license: 'Apache-2.0',\n persona: 'SOUL.md',\n compiler: 'dot-agent/1.0.0',\n commit,\n skills: [],\n requires: [],\n integrity: {\n sha256: createHash('sha256').update(contentForHash).digest('hex'),\n files: '.agent/files.json',\n },\n })\n\n // Build ZIP\n const zip = new JSZip()\n\n zip.folder('.agent')!.file('aboutme.json', aboutmeToJson(aboutme))\n\n // Build files.json\n const filesJson = {\n description: 'agent.description',\n behavior: 'agent.behavior',\n behaviors: Array.from(allFiles.keys())\n .filter(f => f.startsWith('behaviors/') && f !== 'behaviors/.gitkeep')\n .map(f => f),\n guides: Array.from(allFiles.keys())\n .filter(f => f.startsWith('guides/') && f !== 'guides/.gitkeep')\n .map(f => f),\n knowledge: Array.from(allFiles.keys())\n .filter(f => f.startsWith('knowledge/') && f !== 'knowledge/.gitkeep')\n .map(f => f),\n }\n\n zip.folder('.agent')!.file('files.json', JSON.stringify(filesJson, null, 2))\n\n // Add all files to ZIP root\n for (const [path, content] of allFiles) {\n if (path !== 'behaviors/.gitkeep' && path !== 'guides/.gitkeep' && path !== 'knowledge/.gitkeep') {\n zip.file(path, content)\n }\n }\n\n // Write ZIP\n await writeZip(zip, outPath)\n\n return {\n path: outPath,\n id,\n warnings,\n }\n}\n","import { createRequire } from 'module'\nimport { Parser, Language } from 'web-tree-sitter'\nimport { AgentDSLKernel, init as initKernel } from '@dot-agent/kernel-dsl'\nimport { LintMessage } from '../types.js'\n\nconst require = createRequire(import.meta.url)\nconst { agentWasmPath, behaviorWasmPath } = require('@dot-agent/tree-sitter')\n\ndeclare module '@dot-agent/tree-sitter' {\n export const agentWasmPath: string\n export const behaviorWasmPath: string\n}\n\nlet _initialized = false\nlet _agentParser: Parser\nlet _behaviorParser: Parser\nlet _agentLang: any\nlet _behaviorLang: any\n\nasync function ensureWasmInit() {\n if (_initialized) return\n\n try {\n await Parser.init()\n } catch (err) {\n throw err\n }\n\n _agentParser = new Parser()\n _behaviorParser = new Parser()\n\n try {\n _agentLang = await Language.load(agentWasmPath)\n _behaviorLang = await Language.load(behaviorWasmPath)\n } catch (err) {\n throw err\n }\n\n try {\n await initKernel()\n } catch (err) {\n // Silently fail - kernel might not be available in all environments\n // We can continue with tree-sitter only for syntax checking\n }\n\n _initialized = true\n}\n\nfunction collectSyntaxErrors(node: Parser.SyntaxNode): Parser.SyntaxNode[] {\n const errors: Parser.SyntaxNode[] = []\n if (node.isError || node.isMissing) errors.push(node)\n for (const child of node.children) {\n errors.push(...collectSyntaxErrors(child))\n }\n return errors\n}\n\nfunction getLineCol(node: Parser.SyntaxNode): { line: number; col: number } {\n return { line: node.startPosition.row + 1, col: node.startPosition.column + 1 }\n}\n\nexport async function lintDescription(text: string): Promise<LintMessage[]> {\n await ensureWasmInit()\n\n _agentParser.setLanguage(_agentLang)\n const tree = _agentParser.parse(text)\n const messages: LintMessage[] = []\n\n const syntaxErrors = collectSyntaxErrors(tree.rootNode)\n if (syntaxErrors.length > 0) {\n for (const error of syntaxErrors) {\n const { line, col } = getLineCol(error)\n messages.push({\n file: 'agent.description',\n line,\n col,\n severity: 'error',\n code: 'E004',\n message: 'Syntax error in description',\n })\n }\n }\n\n const walk = (node: Parser.SyntaxNode) => {\n if (node.type === 'domain_declaration' && node.childCount > 0) {\n const valueNode = node.child(node.childCount - 1)\n if (valueNode && valueNode.text === 'example.com') {\n const { line, col } = getLineCol(valueNode)\n messages.push({\n file: 'agent.description',\n line,\n col,\n severity: 'warning',\n code: 'W003',\n message: 'domain still has default value \"example.com\"',\n })\n }\n }\n for (const child of node.children) walk(child)\n }\n walk(tree.rootNode)\n\n return messages\n}\n\nexport async function lintBehavior(text: string): Promise<LintMessage[]> {\n await ensureWasmInit()\n\n _behaviorParser.setLanguage(_behaviorLang)\n const tree = _behaviorParser.parse(text)\n const messages: LintMessage[] = []\n\n const syntaxErrors = collectSyntaxErrors(tree.rootNode)\n if (syntaxErrors.length > 0) {\n for (const error of syntaxErrors) {\n const { line, col } = getLineCol(error)\n messages.push({\n file: 'agent.behavior',\n line,\n col,\n severity: 'error',\n code: 'E004',\n message: 'Syntax error in behavior DSL',\n })\n }\n }\n\n const walk = (node: Parser.SyntaxNode) => {\n if (node.type === 'text_block') {\n if (node.text.length > 280) {\n const { line, col } = getLineCol(node)\n messages.push({\n file: 'agent.behavior',\n line,\n col,\n severity: 'warning',\n code: 'W002',\n message: `Text block exceeds 280 characters (${node.text.length})`,\n })\n }\n }\n for (const child of node.children) walk(child)\n }\n walk(tree.rootNode)\n\n try {\n const kernel = new AgentDSLKernel()\n try {\n const effects = kernel.load_behavior(text)\n\n if (Array.isArray(effects)) {\n for (const effect of effects) {\n if (effect.type === 'parse_error') {\n messages.push({\n file: 'agent.behavior',\n line: 1,\n col: 1,\n severity: 'error',\n code: 'E006',\n message: `Parse error: ${effect.message}`,\n })\n }\n }\n }\n\n const graph = kernel.get_graph()\n if (graph?.states) {\n for (const stateName of Object.keys(graph.states)) {\n const state = graph.states[stateName]\n const hasIncoming = graph.transitions?.some((t: any) => t.to === stateName)\n const hasOutgoing = graph.transitions?.some((t: any) => t.from === stateName)\n\n if (!hasIncoming && !hasOutgoing && stateName !== graph.current) {\n messages.push({\n file: 'agent.behavior',\n line: 1,\n col: 1,\n severity: 'warning',\n code: 'W001',\n message: `state \"${stateName}\" has no transitions`,\n })\n }\n }\n }\n } catch (kernelErr: any) {\n // Kernel load failed - skip semantic checks, syntax errors already caught by tree-sitter\n }\n } catch (err: any) {\n // Could not initialize kernel - skip semantic checks\n }\n\n return messages\n}\n\nexport async function createLinter() {\n await ensureWasmInit()\n\n return {\n lintDescription,\n lintBehavior,\n }\n}\n","export interface IdParts {\n namespace: string\n name: string\n version: string\n digest: string\n}\n\nexport function parseId(id: string): IdParts {\n const match = id.match(/^(.+)\\/(.+):(.+)~(.+)$/)\n if (!match) {\n throw new Error(`Invalid agent ID format: ${id}. Expected: namespace/name:version~digest`)\n }\n const [, namespace, name, version, digest] = match\n return { namespace, name, version, digest }\n}\n\nexport function buildId(parts: IdParts): string {\n const { namespace, name, version, digest } = parts\n if (!namespace || !name || !version || !digest) {\n throw new Error('Missing required ID parts: namespace, name, version, digest')\n }\n return `${namespace}/${name}:${version}~${digest}`\n}\n\nexport function extractDigest(id: string): string {\n try {\n const parts = parseId(id)\n return parts.digest\n } catch {\n return ''\n }\n}\n\nexport function extractName(id: string): string {\n try {\n const parts = parseId(id)\n return parts.name\n } catch {\n return ''\n }\n}\n","import { AboutMe, Integrity, Skill } from '../types.js'\n\nexport function parseAboutme(json: any): AboutMe {\n if (!json.schemaVersion) throw new Error('Missing schemaVersion in aboutme.json')\n if (!json.id) throw new Error('Missing id in aboutme.json')\n if (!json.name) throw new Error('Missing name in aboutme.json')\n if (!json.description) throw new Error('Missing description in aboutme.json')\n if (!json.version) throw new Error('Missing version in aboutme.json')\n if (!json.domain) throw new Error('Missing domain in aboutme.json')\n if (!json.license) throw new Error('Missing license in aboutme.json')\n if (!json.persona) throw new Error('Missing persona in aboutme.json')\n if (!json.compiler) throw new Error('Missing compiler in aboutme.json')\n if (!Array.isArray(json.skills)) throw new Error('Missing skills array in aboutme.json')\n if (!Array.isArray(json.requires)) throw new Error('Missing requires array in aboutme.json')\n if (!json.integrity) throw new Error('Missing integrity in aboutme.json')\n\n return {\n schemaVersion: json.schemaVersion,\n id: json.id,\n name: json.name,\n description: json.description,\n version: json.version,\n domain: json.domain,\n license: json.license,\n persona: json.persona,\n compiler: json.compiler,\n commit: json.commit,\n skills: json.skills,\n requires: json.requires,\n integrity: json.integrity,\n }\n}\n\nexport interface BuildAboutmeOptions {\n id: string\n name: string\n description: string\n version: string\n domain: string\n license?: string\n persona: string\n compiler: string\n commit?: string\n skills?: Skill[]\n requires?: string[]\n integrity: Integrity\n}\n\nexport function buildAboutme(opts: BuildAboutmeOptions): AboutMe {\n return {\n schemaVersion: 'dot-agent/1.0',\n id: opts.id,\n name: opts.name,\n description: opts.description,\n version: opts.version,\n domain: opts.domain,\n license: opts.license || 'Apache-2.0',\n persona: opts.persona,\n compiler: opts.compiler,\n commit: opts.commit,\n skills: opts.skills || [],\n requires: opts.requires || [],\n integrity: opts.integrity,\n }\n}\n\nexport function aboutmeToJson(aboutme: AboutMe): string {\n return JSON.stringify(aboutme, null, 2)\n}\n","import JSZip from 'jszip'\nimport { readFile, writeFile } from 'fs/promises'\n\nconst MAX_ZIP_SIZE = 500 * 1024 * 1024\nconst MAX_COMPRESSION_RATIO = 100\n\nexport async function readZip(filePath: string): Promise<JSZip> {\n const data = await readFile(filePath)\n return JSZip.loadAsync(data)\n}\n\nexport async function validateZipBomb(filePath: string): Promise<boolean> {\n const data = await readFile(filePath)\n const zip = await JSZip.loadAsync(data)\n\n let totalUncompressed = 0\n zip.forEach((relativePath, file) => {\n if (!file.dir) {\n totalUncompressed += file._data?.uncompressedSize || 0\n }\n })\n\n const compressedSize = data.length\n const ratio = totalUncompressed / compressedSize\n\n if (totalUncompressed > MAX_ZIP_SIZE) {\n throw new Error(`ZIP uncompressed size exceeds 500MB limit: ${totalUncompressed}`)\n }\n\n if (ratio > MAX_COMPRESSION_RATIO) {\n throw new Error(`ZIP compression ratio exceeds 100x limit: ${ratio.toFixed(1)}x`)\n }\n\n return true\n}\n\nexport async function extractFiles(\n zip: JSZip,\n filter?: string[]\n): Promise<Map<string, string>> {\n const files = new Map<string, string>()\n\n const promises: Promise<void>[] = []\n zip.forEach((relativePath, file) => {\n if (file.dir) return\n if (filter && !filter.some(f => relativePath.startsWith(f))) return\n\n promises.push(\n file.async('text').then(content => {\n files.set(relativePath, content)\n })\n )\n })\n\n await Promise.all(promises)\n return files\n}\n\nexport function createZip(): JSZip {\n return new JSZip()\n}\n\nexport async function writeZip(zip: JSZip, outPath: string): Promise<void> {\n const data = await zip.generateAsync({ type: 'arraybuffer' })\n await writeFile(outPath, Buffer.from(data))\n}\n\nexport async function validateMagicBytes(filePath: string): Promise<boolean> {\n const data = await readFile(filePath)\n const magicBytes = data.subarray(0, 4)\n const isZip = magicBytes[0] === 0x50 && magicBytes[1] === 0x4b && magicBytes[2] === 0x03 && magicBytes[3] === 0x04\n if (!isZip) {\n throw new Error('File is not a valid ZIP (invalid magic bytes)')\n }\n return true\n}\n","import { mkdir, writeFile, stat } from 'fs/promises'\nimport { join } from 'path'\nimport { createHash } from 'crypto'\nimport { UnpackOptions, UnpackResult } from '../types.js'\nimport { readZip, validateZipBomb, validateMagicBytes, extractFiles } from '../core/zip.js'\nimport { parseAboutme } from '../core/envelope.js'\n\nexport async function unpack(options: UnpackOptions): Promise<UnpackResult> {\n const { file, out, force = false } = options\n\n // Validate magic bytes\n await validateMagicBytes(file)\n\n // Validate ZIP bomb\n await validateZipBomb(file)\n\n // Load ZIP\n const zip = await readZip(file)\n\n // Read aboutme.json\n const aboutmeFile = zip.file('.agent/aboutme.json')\n if (!aboutmeFile) {\n throw new Error('Missing .agent/aboutme.json in ZIP')\n }\n\n const aboutmeText = await aboutmeFile.async('text')\n const aboutme = parseAboutme(JSON.parse(aboutmeText))\n\n // Extract output directory\n const outDir = out || `./${aboutme.name}`\n\n // Check if directory exists\n try {\n await stat(outDir)\n if (!force) {\n throw new Error(`Output directory already exists: ${outDir}. Use --force to overwrite.`)\n }\n } catch (err: any) {\n if (err.code !== 'ENOENT') throw err\n }\n\n // Extract all files from root\n const files = await extractFiles(zip)\n await mkdir(outDir, { recursive: true })\n\n const extractedFiles: string[] = []\n\n for (const [path, content] of files) {\n if (path.startsWith('.agent/')) continue\n\n const fullPath = join(outDir, path)\n const dir = fullPath.substring(0, fullPath.lastIndexOf('/'))\n\n await mkdir(dir, { recursive: true })\n await writeFile(fullPath, content)\n extractedFiles.push(path)\n }\n\n return {\n dir: outDir,\n id: aboutme.id,\n files: extractedFiles,\n aboutme,\n }\n}\n","import { EventEmitter } from 'events'\nimport { readFile, stat } from 'fs/promises'\nimport { AgentDSLKernel, init as initKernel } from '@dot-agent/kernel-dsl'\nimport { RunOptions, AgentContext, FileEntry } from '../types.js'\nimport { readZip, validateZipBomb, validateMagicBytes, extractFiles } from '../core/zip.js'\nimport { parseAboutme } from '../core/envelope.js'\n\nfunction isZipFile(source: string): boolean {\n return source.endsWith('.agent')\n}\n\nexport async function run(options: RunOptions): Promise<AgentContext> {\n const { source } = options\n const context = new EventEmitter() as any as AgentContext\n\n try {\n context.emit('progress', { step: 'opening', pct: 0 })\n\n let descriptionText: string\n let behaviorText: string\n let aboutme: any = null\n let id: string\n\n if (isZipFile(source)) {\n // Load from .agent ZIP\n await validateMagicBytes(source)\n await validateZipBomb(source)\n\n const zip = await readZip(source)\n\n const aboutmeFile = zip.file('.agent/aboutme.json')\n if (!aboutmeFile) {\n throw new Error('Missing .agent/aboutme.json')\n }\n\n const aboutmeText = await aboutmeFile.async('text')\n aboutme = parseAboutme(JSON.parse(aboutmeText))\n id = aboutme.id\n\n const descFile = zip.file('agent.description')\n if (!descFile) throw new Error('Missing agent.description')\n descriptionText = await descFile.async('text')\n\n const behavFile = zip.file('agent.behavior')\n if (!behavFile) throw new Error('Missing agent.behavior')\n behaviorText = await behavFile.async('text')\n\n context.emit('progress', { step: 'parsing', pct: 30 })\n\n // Load kernel-dsl\n let kernel: any\n try {\n await initKernel()\n kernel = new AgentDSLKernel()\n kernel.load_behavior(behaviorText)\n } catch (err: any) {\n // Kernel failed - create a stub\n kernel = {\n get_current_state: () => 'init',\n get_graph: () => ({}),\n get_memory: () => [],\n get_valid_intents: () => [],\n load_behavior: () => {},\n observe: () => {},\n send_complete: () => {},\n send_event: () => {},\n send_failed: () => {},\n send_fallback: () => {},\n send_intent: () => {},\n send_offtopic: () => {},\n tick_prompt: () => {},\n free: () => {},\n }\n }\n\n context.emit('progress', { step: 'loading-files', pct: 60 })\n\n // Load files\n const soulFile = zip.file('SOUL.md')\n const soul = soulFile ? await soulFile.async('text') : undefined\n\n const allFiles = await extractFiles(zip)\n const guides: FileEntry[] = []\n const knowledge: FileEntry[] = []\n const behaviors: FileEntry[] = []\n\n for (const [path, content] of allFiles) {\n if (path.startsWith('guides/') && path !== 'guides/.gitkeep') {\n guides.push({ path, content })\n } else if (path.startsWith('knowledge/') && path !== 'knowledge/.gitkeep') {\n knowledge.push({ path, content })\n } else if (path.startsWith('behaviors/') && path !== 'behaviors/.gitkeep') {\n behaviors.push({ path, content })\n }\n }\n\n context.id = id\n context.description = { domain: 'example.com', name: 'Agent' }\n context.behavior = {}\n context.kernel = kernel\n context.files = { soul, guides, knowledge, behaviors }\n context.aboutme = aboutme\n } else {\n // Load from directory\n const descPath = `${source}/agent.description`\n const behavPath = `${source}/agent.behavior`\n\n try {\n descriptionText = await readFile(descPath, 'utf-8')\n } catch {\n throw new Error(`Missing agent.description at ${descPath}`)\n }\n\n try {\n behaviorText = await readFile(behavPath, 'utf-8')\n } catch {\n throw new Error(`Missing agent.behavior at ${behavPath}`)\n }\n\n context.emit('progress', { step: 'parsing', pct: 30 })\n\n // Load kernel-dsl\n let kernel: any\n try {\n await initKernel()\n kernel = new AgentDSLKernel()\n kernel.load_behavior(behaviorText)\n } catch (err: any) {\n // Kernel failed - create a stub\n kernel = {\n get_current_state: () => 'init',\n get_graph: () => ({}),\n get_memory: () => [],\n get_valid_intents: () => [],\n load_behavior: () => {},\n observe: () => {},\n send_complete: () => {},\n send_event: () => {},\n send_failed: () => {},\n send_fallback: () => {},\n send_intent: () => {},\n send_offtopic: () => {},\n tick_prompt: () => {},\n free: () => {},\n }\n }\n\n context.emit('progress', { step: 'loading-files', pct: 60 })\n\n id = 'local/agent:v1.0~unknown'\n\n try {\n const soul = await readFile(`${source}/SOUL.md`, 'utf-8')\n context.files = {\n soul,\n guides: [],\n knowledge: [],\n behaviors: [],\n }\n } catch {\n context.files = { guides: [], knowledge: [], behaviors: [] }\n }\n\n const defaultAboutme: any = {\n schemaVersion: 'dot-agent/1.0',\n id,\n name: 'Agent',\n description: '',\n version: 'v1.0',\n domain: 'local',\n license: 'Apache-2.0',\n persona: 'SOUL.md',\n compiler: 'dot-agent/1.0.0',\n skills: [],\n requires: [],\n integrity: { sha256: '', files: '' },\n }\n\n context.id = id\n context.description = { domain: 'example.com', name: 'Agent' }\n context.behavior = {}\n context.kernel = kernel\n context.aboutme = defaultAboutme\n }\n\n context.emit('progress', { step: 'ready', pct: 100 })\n context.emit('ready', context)\n\n return context\n } catch (err) {\n context.emit('error', err)\n throw err\n }\n}\n"],"mappings":"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","names":["readFile","stat","join","basename","JSZip","require","writeFile","writeFile","join","stat","readFile","basename","JSZip","mkdir","writeFile","stat","join","stat","mkdir","join","writeFile","readFile","AgentDSLKernel","initKernel","initKernel","AgentDSLKernel","readFile"]}
|