arcie 0.1.3 → 0.1.4

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 (114) hide show
  1. package/README.md +34 -6
  2. package/dist/agent/index.d.ts +6 -3
  3. package/dist/agent/index.js +6 -6
  4. package/dist/agent/index.js.map +1 -1
  5. package/dist/auth/index.d.ts +6 -5
  6. package/dist/auth/index.js +8 -17
  7. package/dist/auth/index.js.map +1 -1
  8. package/dist/channels/index.d.ts +8 -5
  9. package/dist/channels/index.js +10 -12
  10. package/dist/channels/index.js.map +1 -1
  11. package/dist/chunk-2ZSKZYWK.js +1901 -0
  12. package/dist/chunk-2ZSKZYWK.js.map +1 -0
  13. package/dist/chunk-3CNQ6HQV.js +12 -0
  14. package/dist/chunk-3CNQ6HQV.js.map +1 -0
  15. package/dist/chunk-4L7WVCTU.js +12 -0
  16. package/dist/chunk-4L7WVCTU.js.map +1 -0
  17. package/dist/chunk-6XETPLIF.js +176 -0
  18. package/dist/chunk-6XETPLIF.js.map +1 -0
  19. package/dist/chunk-CKHBEZCT.js +24 -0
  20. package/dist/chunk-CKHBEZCT.js.map +1 -0
  21. package/dist/chunk-FQ7KDNV5.js +12 -0
  22. package/dist/chunk-FQ7KDNV5.js.map +1 -0
  23. package/dist/chunk-L3BTL5FM.js +39 -0
  24. package/dist/chunk-L3BTL5FM.js.map +1 -0
  25. package/dist/chunk-LQC65UHE.js +34 -0
  26. package/dist/chunk-LQC65UHE.js.map +1 -0
  27. package/dist/chunk-PHTJLJOV.js +25 -0
  28. package/dist/chunk-PHTJLJOV.js.map +1 -0
  29. package/dist/chunk-QE46QFID.js +92 -0
  30. package/dist/chunk-QE46QFID.js.map +1 -0
  31. package/dist/chunk-WAD7VLNI.js +51 -0
  32. package/dist/chunk-WAD7VLNI.js.map +1 -0
  33. package/dist/chunk-ZJNHQXMO.js +20 -0
  34. package/dist/chunk-ZJNHQXMO.js.map +1 -0
  35. package/dist/cli/index.d.ts +0 -2
  36. package/dist/cli/index.js +252 -36
  37. package/dist/cli/index.js.map +1 -1
  38. package/dist/context/index.d.ts +14 -11
  39. package/dist/context/index.js +22 -37
  40. package/dist/context/index.js.map +1 -1
  41. package/dist/discover/index.d.ts +17 -7
  42. package/dist/discover/index.js +6 -132
  43. package/dist/discover/index.js.map +1 -1
  44. package/dist/hooks/index.d.ts +6 -3
  45. package/dist/hooks/index.js +6 -6
  46. package/dist/hooks/index.js.map +1 -1
  47. package/dist/index-b4NcDl3m.d.ts +136 -0
  48. package/dist/index.d.ts +297 -18
  49. package/dist/index.js +158 -13
  50. package/dist/index.js.map +1 -1
  51. package/dist/instructions/index.d.ts +7 -4
  52. package/dist/instructions/index.js +8 -32
  53. package/dist/instructions/index.js.map +1 -1
  54. package/dist/protocol/events.d.ts +47 -39
  55. package/dist/protocol/events.js +46 -45
  56. package/dist/protocol/events.js.map +1 -1
  57. package/dist/runner/index.d.ts +4 -18
  58. package/dist/runner/index.js +10 -277
  59. package/dist/runner/index.js.map +1 -1
  60. package/dist/schedules/index.d.ts +6 -3
  61. package/dist/schedules/index.js +6 -6
  62. package/dist/schedules/index.js.map +1 -1
  63. package/dist/skills/index.d.ts +7 -4
  64. package/dist/skills/index.js +8 -27
  65. package/dist/skills/index.js.map +1 -1
  66. package/dist/tools/index.d.ts +13 -3
  67. package/dist/tools/index.js +8 -9
  68. package/dist/tools/index.js.map +1 -1
  69. package/dist/types-BxOQTzx1.d.ts +151 -0
  70. package/docs/getting-started.md +2 -2
  71. package/docs/index.md +3 -2
  72. package/docs/project-layout.md +2 -2
  73. package/docs/subagents.md +95 -0
  74. package/package.json +15 -10
  75. package/templates/default/agent/agent.ts +2 -2
  76. package/templates/default/package.json +3 -3
  77. package/dist/agent/index.d.ts.map +0 -1
  78. package/dist/auth/index.d.ts.map +0 -1
  79. package/dist/channels/index.d.ts.map +0 -1
  80. package/dist/cli/banner.d.ts +0 -2
  81. package/dist/cli/banner.d.ts.map +0 -1
  82. package/dist/cli/banner.js +0 -10
  83. package/dist/cli/banner.js.map +0 -1
  84. package/dist/cli/build.d.ts +0 -5
  85. package/dist/cli/build.d.ts.map +0 -1
  86. package/dist/cli/build.js +0 -54
  87. package/dist/cli/build.js.map +0 -1
  88. package/dist/cli/dev.d.ts +0 -5
  89. package/dist/cli/dev.d.ts.map +0 -1
  90. package/dist/cli/dev.js +0 -74
  91. package/dist/cli/dev.js.map +0 -1
  92. package/dist/cli/index.d.ts.map +0 -1
  93. package/dist/cli/init.d.ts +0 -4
  94. package/dist/cli/init.d.ts.map +0 -1
  95. package/dist/cli/init.js +0 -75
  96. package/dist/cli/init.js.map +0 -1
  97. package/dist/context/index.d.ts.map +0 -1
  98. package/dist/discover/index.d.ts.map +0 -1
  99. package/dist/hooks/index.d.ts.map +0 -1
  100. package/dist/index.d.ts.map +0 -1
  101. package/dist/instructions/index.d.ts.map +0 -1
  102. package/dist/loader.d.ts +0 -7
  103. package/dist/loader.d.ts.map +0 -1
  104. package/dist/loader.js +0 -102
  105. package/dist/loader.js.map +0 -1
  106. package/dist/protocol/events.d.ts.map +0 -1
  107. package/dist/runner/index.d.ts.map +0 -1
  108. package/dist/schedules/index.d.ts.map +0 -1
  109. package/dist/skills/index.d.ts.map +0 -1
  110. package/dist/tools/index.d.ts.map +0 -1
  111. package/dist/types.d.ts +0 -118
  112. package/dist/types.d.ts.map +0 -1
  113. package/dist/types.js +0 -2
  114. package/dist/types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AACzD,IAAI,OAAO,GAAG,OAAO,CAAC;AACtB,IAAI,CAAC;IACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AACxB,CAAC;AAAC,MAAM,CAAC,CAAA,CAAC;AAEV,UAAU,EAAE,CAAC;AAEb,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,iEAAiE,CAAC;KAC9E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8BAA8B,CAAC;KAC3C,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;KAC5C,MAAM,CAAC,mBAAmB,EAAE,uCAAuC,EAAE,SAAS,CAAC;KAC/E,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC;KACxD,MAAM,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,OAAO,CAAC;KAChE,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,oBAAoB,EAAE,yBAAyB,EAAE,OAAO,CAAC;KAChE,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,QAAQ,CAAC;KACxD,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"sources":["../../src/cli/index.ts","../../src/cli/init.ts","../../src/cli/dev.ts","../../src/cli/banner.ts","../../src/cli/build.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from \"commander\";\nimport { initCommand } from \"./init\";\nimport { devCommand } from \"./dev\";\nimport { buildCommand } from \"./build\";\nimport { showBanner } from \"./banner\";\nimport { readFileSync } from \"node:fs\";\nimport { resolve, dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst pkgPath = resolve(__dirname, \"../../package.json\");\nlet version = \"0.1.0\";\ntry {\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\"));\n version = pkg.version;\n} catch {}\n\nshowBanner();\n\nconst program = new Command();\n\nprogram\n .name(\"arcie\")\n .description(\"Arcie — the electronic line, build agents at the speed of light\")\n .version(version);\n\nprogram\n .command(\"init\")\n .description(\"Scaffold a new agent project\")\n .argument(\"[name]\", \"Project directory name\")\n .option(\"--template <name>\", \"Template to use (default, agent-only)\", \"default\")\n .action(initCommand);\n\nprogram\n .command(\"dev\")\n .description(\"Run the agent locally\")\n .option(\"-p, --port <port>\", \"Port to listen on\", \"3000\")\n .option(\"--agent-dir <path>\", \"Path to agent directory\", \"agent\")\n .action(devCommand);\n\nprogram\n .command(\"build\")\n .description(\"Compile the agent for production\")\n .option(\"--agent-dir <path>\", \"Path to agent directory\", \"agent\")\n .option(\"--out-dir <path>\", \"Output directory\", \".arcie\")\n .action(buildCommand);\n\nprogram.parse(process.argv);\n","import { mkdirSync, writeFileSync, existsSync, readFileSync, readdirSync, statSync, copyFileSync } from \"node:fs\";\nimport { resolve, join, dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst TEMPLATES_DIR = resolve(__dirname, \"../../templates\");\n\nexport async function initCommand(\n name: string | undefined,\n options: { template: string }\n): Promise<void> {\n const targetDir = name\n ? resolve(process.cwd(), name)\n : resolve(process.cwd(), \".\");\n\n if (existsSync(targetDir) && name) {\n console.error(`Directory already exists: ${targetDir}`);\n process.exit(1);\n }\n\n const templateDir = resolve(TEMPLATES_DIR, options.template);\n if (!existsSync(templateDir)) {\n console.error(`Template not found: ${options.template}`);\n process.exit(1);\n }\n\n console.log(`\\n Scaffolding agent in ${targetDir}...\\n`);\n\n copyTemplate(templateDir, targetDir);\n\n if (name) {\n updatePackageJson(targetDir, name);\n }\n\n console.log(` Done! Created agent in ${targetDir}`);\n console.log(`\\n Next steps:`);\n console.log(` cd ${name || \".\"}`);\n console.log(` npm install`);\n console.log(` npm run dev`);\n console.log();\n}\n\nfunction copyTemplate(src: string, dest: string): void {\n const entries = collectFiles(src);\n\n for (const entry of entries) {\n const relative = entry.replace(src, \"\").replace(/^\\//, \"\");\n const destPath = join(dest, relative);\n\n if (entry.endsWith(\".gitkeep\")) {\n const parentDir = destPath.replace(\"/.gitkeep\", \"\");\n mkdirSync(parentDir, { recursive: true });\n writeFileSync(join(parentDir, \".gitkeep\"), \"\");\n continue;\n }\n\n mkdirSync(dirname(destPath), { recursive: true });\n\n if (entry.endsWith(\".ts\") || entry.endsWith(\".md\") || entry.endsWith(\".json\")) {\n const content = readFileSync(entry, \"utf-8\");\n writeFileSync(destPath, content);\n } else {\n copyFileSync(entry, destPath);\n }\n }\n}\n\nfunction collectFiles(dir: string): string[] {\n const files: string[] = [];\n const entries = readdirSync(dir);\n\n for (const entry of entries) {\n const fullPath = join(dir, entry);\n const stat = statSync(fullPath);\n if (stat.isDirectory()) {\n files.push(...collectFiles(fullPath));\n } else {\n files.push(fullPath);\n }\n }\n\n return files;\n}\n\nfunction updatePackageJson(targetDir: string, projectName: string): void {\n const pkgPath = join(targetDir, \"package.json\");\n\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf-8\"));\n pkg.name = projectName;\n writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + \"\\n\");\n }\n}\n","import { createServer } from \"node:http\";\nimport { resolve } from \"node:path\";\nimport { loadAgent } from \"../loader\";\nimport { discoverAgent } from \"../discover/index\";\nimport { streamAgent } from \"../runner/index\";\nimport { showBanner } from \"./banner\";\n\nexport async function devCommand(options: {\n port: string;\n agentDir: string;\n}): Promise<void> {\n const port = parseInt(options.port, 10);\n const agentDirPath = resolve(process.cwd(), options.agentDir);\n\n showBanner();\n\n const { agent: discovered, diagnostics } = discoverAgent(agentDirPath);\n\n if (diagnostics.some((d) => d.severity === \"error\")) {\n for (const d of diagnostics) {\n console.error(` ✖ ${d.code}: ${d.message}`);\n }\n process.exit(1);\n }\n\n for (const d of diagnostics) {\n console.warn(` ⚠ ${d.code}: ${d.message}`);\n }\n\n console.log(` Agent: ${agentDirPath}`);\n console.log(` Server: http://localhost:${port}`);\n console.log();\n\n if (discovered.agentConfig) {\n try {\n const agent = await loadAgent(agentDirPath);\n console.log(` Model: ${agent.manifest.config.model}`);\n console.log(` Tools: ${Object.keys(agent.manifest.tools).length}`);\n console.log();\n } catch {}\n }\n\n const server = createServer(async (req, res) => {\n if (req.method === \"POST\" && req.url === \"/\") {\n let body = \"\";\n for await (const chunk of req) body += chunk;\n\n try {\n const { message, stream } = JSON.parse(body);\n\n if (stream) {\n res.writeHead(200, {\n \"Content-Type\": \"application/x-ndjson\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n });\n\n for await (const event of streamAgent(agentDirPath, message)) {\n res.write(JSON.stringify(event) + \"\\n\");\n }\n res.end();\n } else {\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n for await (const _event of streamAgent(agentDirPath, message)) {}\n res.end(JSON.stringify({ status: \"ok\" }));\n }\n } catch (err) {\n res.writeHead(500, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify({ error: String(err) }));\n }\n } else {\n res.writeHead(404);\n res.end(\"Not found\");\n }\n });\n\n server.listen(port, () => {\n console.log(` Listening on http://localhost:${port}`);\n console.log(` POST / with { \"message\": \"hello\" }`);\n console.log();\n });\n}\n","export function showBanner(): void {\n console.log();\n console.log(\" ╔══════════════════════════════════╗\");\n console.log(\" ║ Arcie ║\");\n console.log(\" ║ The electronic line — build ║\");\n console.log(\" ║ agents at the speed of light. ║\");\n console.log(\" ╚══════════════════════════════════╝\");\n console.log();\n}\n","import { mkdirSync, writeFileSync, existsSync } from \"node:fs\";\nimport { resolve, join } from \"node:path\";\nimport { loadAgent } from \"../loader\";\nimport { discoverAgent } from \"../discover/index\";\n\nexport async function buildCommand(options: {\n agentDir: string;\n outDir: string;\n}): Promise<void> {\n const agentDirPath = resolve(process.cwd(), options.agentDir);\n const outDir = resolve(process.cwd(), options.outDir);\n\n console.log(`\\n Building agent...\\n`);\n\n if (!existsSync(agentDirPath)) {\n console.error(` Agent directory not found: ${agentDirPath}`);\n process.exit(1);\n }\n\n const { agent: discovered, diagnostics } = discoverAgent(agentDirPath);\n\n if (diagnostics.some((d) => d.severity === \"error\")) {\n for (const d of diagnostics) {\n console.error(` ✖ ${d.code}: ${d.message}`);\n }\n process.exit(1);\n }\n\n try {\n const agent = await loadAgent(agentDirPath);\n\n mkdirSync(outDir, { recursive: true });\n\n const manifest = {\n config: agent.manifest.config,\n instructions: agent.manifest.instructions,\n tools: Object.keys(agent.manifest.tools),\n skills: Object.keys(agent.manifest.skills),\n hooks: Object.keys(agent.manifest.hooks),\n channels: Object.keys(agent.manifest.channels),\n connections: Object.keys(agent.manifest.connections),\n schedules: Object.keys(agent.manifest.schedules),\n subagents: Object.fromEntries(\n Object.entries(agent.manifest.subagents).map(([id, sub]) => [\n id,\n { description: sub.config.description, tools: Object.keys(sub.tools) },\n ])\n ),\n discovered: {\n tools: discovered.tools.map((t) => t.name),\n skills: discovered.skills.map((s) => s.name),\n hooks: discovered.hooks.map((h) => h.name),\n channels: discovered.channels.map((c) => c.name),\n connections: discovered.connections.map((c) => c.name),\n schedules: discovered.schedules.map((s) => s.name),\n subagents: discovered.subagents.map((s) => s.id),\n },\n session: agent.manifest.session,\n policy: agent.manifest.policy,\n };\n\n writeFileSync(\n join(outDir, \"manifest.json\"),\n JSON.stringify(manifest, null, 2)\n );\n\n console.log(` Written to ${outDir}/manifest.json`);\n console.log(` Tools: ${manifest.tools.length}`);\n console.log(` Skills: ${manifest.skills.length}`);\n console.log(` Channels: ${manifest.channels.length}`);\n console.log(` Connections: ${manifest.connections.length}`);\n console.log(` Schedules: ${manifest.schedules.length}`);\n console.log(` Subagents: ${Object.keys(manifest.subagents).length}`);\n console.log(`\\n Done.\\n`);\n } catch (err) {\n console.error(` Build failed:`, err);\n process.exit(1);\n }\n}\n"],"mappings":";;;;;;;;;;;;AACA,SAAS,eAAe;;;ACDxB,SAAS,WAAW,eAAe,YAAY,cAAc,aAAa,UAAU,oBAAoB;AACxG,SAAS,SAAS,MAAM,eAAe;AACvC,SAAS,qBAAqB;AAE9B,IAAM,YAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AACxD,IAAM,gBAAgB,QAAQ,WAAW,iBAAiB;AAE1D,eAAsB,YACpB,MACA,SACe;AACf,QAAM,YAAY,OACd,QAAQ,QAAQ,IAAI,GAAG,IAAI,IAC3B,QAAQ,QAAQ,IAAI,GAAG,GAAG;AAE9B,MAAI,WAAW,SAAS,KAAK,MAAM;AACjC,YAAQ,MAAM,6BAA6B,SAAS,EAAE;AACtD,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,cAAc,QAAQ,eAAe,QAAQ,QAAQ;AAC3D,MAAI,CAAC,WAAW,WAAW,GAAG;AAC5B,YAAQ,MAAM,uBAAuB,QAAQ,QAAQ,EAAE;AACvD,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,UAAQ,IAAI;AAAA,yBAA4B,SAAS;AAAA,CAAO;AAExD,eAAa,aAAa,SAAS;AAEnC,MAAI,MAAM;AACR,sBAAkB,WAAW,IAAI;AAAA,EACnC;AAEA,UAAQ,IAAI,4BAA4B,SAAS,EAAE;AACnD,UAAQ,IAAI;AAAA,cAAiB;AAC7B,UAAQ,IAAI,UAAU,QAAQ,GAAG,EAAE;AACnC,UAAQ,IAAI,iBAAiB;AAC7B,UAAQ,IAAI,iBAAiB;AAC7B,UAAQ,IAAI;AACd;AAEA,SAAS,aAAa,KAAa,MAAoB;AACrD,QAAM,UAAU,aAAa,GAAG;AAEhC,aAAW,SAAS,SAAS;AAC3B,UAAM,WAAW,MAAM,QAAQ,KAAK,EAAE,EAAE,QAAQ,OAAO,EAAE;AACzD,UAAM,WAAW,KAAK,MAAM,QAAQ;AAEpC,QAAI,MAAM,SAAS,UAAU,GAAG;AAC9B,YAAM,YAAY,SAAS,QAAQ,aAAa,EAAE;AAClD,gBAAU,WAAW,EAAE,WAAW,KAAK,CAAC;AACxC,oBAAc,KAAK,WAAW,UAAU,GAAG,EAAE;AAC7C;AAAA,IACF;AAEA,cAAU,QAAQ,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AAEhD,QAAI,MAAM,SAAS,KAAK,KAAK,MAAM,SAAS,KAAK,KAAK,MAAM,SAAS,OAAO,GAAG;AAC7E,YAAM,UAAU,aAAa,OAAO,OAAO;AAC3C,oBAAc,UAAU,OAAO;AAAA,IACjC,OAAO;AACL,mBAAa,OAAO,QAAQ;AAAA,IAC9B;AAAA,EACF;AACF;AAEA,SAAS,aAAa,KAAuB;AAC3C,QAAM,QAAkB,CAAC;AACzB,QAAM,UAAU,YAAY,GAAG;AAE/B,aAAW,SAAS,SAAS;AAC3B,UAAM,WAAW,KAAK,KAAK,KAAK;AAChC,UAAM,OAAO,SAAS,QAAQ;AAC9B,QAAI,KAAK,YAAY,GAAG;AACtB,YAAM,KAAK,GAAG,aAAa,QAAQ,CAAC;AAAA,IACtC,OAAO;AACL,YAAM,KAAK,QAAQ;AAAA,IACrB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,kBAAkB,WAAmB,aAA2B;AACvE,QAAMA,WAAU,KAAK,WAAW,cAAc;AAE9C,MAAI,WAAWA,QAAO,GAAG;AACvB,UAAM,MAAM,KAAK,MAAM,aAAaA,UAAS,OAAO,CAAC;AACrD,QAAI,OAAO;AACX,kBAAcA,UAAS,KAAK,UAAU,KAAK,MAAM,CAAC,IAAI,IAAI;AAAA,EAC5D;AACF;;;AC5FA,SAAS,oBAAoB;AAC7B,SAAS,WAAAC,gBAAe;;;ACDjB,SAAS,aAAmB;AACjC,UAAQ,IAAI;AACZ,UAAQ,IAAI,4NAAwC;AACpD,UAAQ,IAAI,mDAAyC;AACrD,UAAQ,IAAI,wDAAyC;AACrD,UAAQ,IAAI,mDAAyC;AACrD,UAAQ,IAAI,4NAAwC;AACpD,UAAQ,IAAI;AACd;;;ADDA,eAAsB,WAAW,SAGf;AAChB,QAAM,OAAO,SAAS,QAAQ,MAAM,EAAE;AACtC,QAAM,eAAeC,SAAQ,QAAQ,IAAI,GAAG,QAAQ,QAAQ;AAE5D,aAAW;AAEX,QAAM,EAAE,OAAO,YAAY,YAAY,IAAI,cAAc,YAAY;AAErE,MAAI,YAAY,KAAK,CAAC,MAAM,EAAE,aAAa,OAAO,GAAG;AACnD,eAAW,KAAK,aAAa;AAC3B,cAAQ,MAAM,YAAO,EAAE,IAAI,KAAK,EAAE,OAAO,EAAE;AAAA,IAC7C;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,aAAW,KAAK,aAAa;AAC3B,YAAQ,KAAK,YAAO,EAAE,IAAI,KAAK,EAAE,OAAO,EAAE;AAAA,EAC5C;AAEA,UAAQ,IAAI,aAAa,YAAY,EAAE;AACvC,UAAQ,IAAI,8BAA8B,IAAI,EAAE;AAChD,UAAQ,IAAI;AAEZ,MAAI,WAAW,aAAa;AAC1B,QAAI;AACF,YAAM,QAAQ,MAAM,UAAU,YAAY;AAC1C,cAAQ,IAAI,YAAY,MAAM,SAAS,OAAO,KAAK,EAAE;AACrD,cAAQ,IAAI,YAAY,OAAO,KAAK,MAAM,SAAS,KAAK,EAAE,MAAM,EAAE;AAClE,cAAQ,IAAI;AAAA,IACd,QAAQ;AAAA,IAAC;AAAA,EACX;AAEA,QAAM,SAAS,aAAa,OAAO,KAAK,QAAQ;AAC9C,QAAI,IAAI,WAAW,UAAU,IAAI,QAAQ,KAAK;AAC5C,UAAI,OAAO;AACX,uBAAiB,SAAS,IAAK,SAAQ;AAEvC,UAAI;AACF,cAAM,EAAE,SAAS,OAAO,IAAI,KAAK,MAAM,IAAI;AAE3C,YAAI,QAAQ;AACV,cAAI,UAAU,KAAK;AAAA,YACjB,gBAAgB;AAAA,YAChB,iBAAiB;AAAA,YACjB,YAAY;AAAA,UACd,CAAC;AAED,2BAAiB,SAAS,YAAY,cAAc,OAAO,GAAG;AAC5D,gBAAI,MAAM,KAAK,UAAU,KAAK,IAAI,IAAI;AAAA,UACxC;AACA,cAAI,IAAI;AAAA,QACV,OAAO;AACL,cAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,2BAAiB,UAAU,YAAY,cAAc,OAAO,GAAG;AAAA,UAAC;AAChE,cAAI,IAAI,KAAK,UAAU,EAAE,QAAQ,KAAK,CAAC,CAAC;AAAA,QAC1C;AAAA,MACF,SAAS,KAAK;AACZ,YAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,YAAI,IAAI,KAAK,UAAU,EAAE,OAAO,OAAO,GAAG,EAAE,CAAC,CAAC;AAAA,MAChD;AAAA,IACF,OAAO;AACL,UAAI,UAAU,GAAG;AACjB,UAAI,IAAI,WAAW;AAAA,IACrB;AAAA,EACF,CAAC;AAED,SAAO,OAAO,MAAM,MAAM;AACxB,YAAQ,IAAI,mCAAmC,IAAI,EAAE;AACrD,YAAQ,IAAI,sCAAsC;AAClD,YAAQ,IAAI;AAAA,EACd,CAAC;AACH;;;AEjFA,SAAS,aAAAC,YAAW,iBAAAC,gBAAe,cAAAC,mBAAkB;AACrD,SAAS,WAAAC,UAAS,QAAAC,aAAY;AAI9B,eAAsB,aAAa,SAGjB;AAChB,QAAM,eAAeC,SAAQ,QAAQ,IAAI,GAAG,QAAQ,QAAQ;AAC5D,QAAM,SAASA,SAAQ,QAAQ,IAAI,GAAG,QAAQ,MAAM;AAEpD,UAAQ,IAAI;AAAA;AAAA,CAAyB;AAErC,MAAI,CAACC,YAAW,YAAY,GAAG;AAC7B,YAAQ,MAAM,gCAAgC,YAAY,EAAE;AAC5D,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,EAAE,OAAO,YAAY,YAAY,IAAI,cAAc,YAAY;AAErE,MAAI,YAAY,KAAK,CAAC,MAAM,EAAE,aAAa,OAAO,GAAG;AACnD,eAAW,KAAK,aAAa;AAC3B,cAAQ,MAAM,YAAO,EAAE,IAAI,KAAK,EAAE,OAAO,EAAE;AAAA,IAC7C;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,MAAI;AACF,UAAM,QAAQ,MAAM,UAAU,YAAY;AAE1C,IAAAC,WAAU,QAAQ,EAAE,WAAW,KAAK,CAAC;AAErC,UAAM,WAAW;AAAA,MACf,QAAQ,MAAM,SAAS;AAAA,MACvB,cAAc,MAAM,SAAS;AAAA,MAC7B,OAAO,OAAO,KAAK,MAAM,SAAS,KAAK;AAAA,MACvC,QAAQ,OAAO,KAAK,MAAM,SAAS,MAAM;AAAA,MACzC,OAAO,OAAO,KAAK,MAAM,SAAS,KAAK;AAAA,MACvC,UAAU,OAAO,KAAK,MAAM,SAAS,QAAQ;AAAA,MAC7C,aAAa,OAAO,KAAK,MAAM,SAAS,WAAW;AAAA,MACnD,WAAW,OAAO,KAAK,MAAM,SAAS,SAAS;AAAA,MAC/C,WAAW,OAAO;AAAA,QAChB,OAAO,QAAQ,MAAM,SAAS,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM;AAAA,UAC1D;AAAA,UACA,EAAE,aAAa,IAAI,OAAO,aAAa,OAAO,OAAO,KAAK,IAAI,KAAK,EAAE;AAAA,QACvE,CAAC;AAAA,MACH;AAAA,MACA,YAAY;AAAA,QACV,OAAO,WAAW,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,QACzC,QAAQ,WAAW,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,QAC3C,OAAO,WAAW,MAAM,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,QACzC,UAAU,WAAW,SAAS,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,QAC/C,aAAa,WAAW,YAAY,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,QACrD,WAAW,WAAW,UAAU,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,QACjD,WAAW,WAAW,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE;AAAA,MACjD;AAAA,MACA,SAAS,MAAM,SAAS;AAAA,MACxB,QAAQ,MAAM,SAAS;AAAA,IACzB;AAEA,IAAAC;AAAA,MACEC,MAAK,QAAQ,eAAe;AAAA,MAC5B,KAAK,UAAU,UAAU,MAAM,CAAC;AAAA,IAClC;AAEA,YAAQ,IAAI,gBAAgB,MAAM,gBAAgB;AAClD,YAAQ,IAAI,YAAY,SAAS,MAAM,MAAM,EAAE;AAC/C,YAAQ,IAAI,aAAa,SAAS,OAAO,MAAM,EAAE;AACjD,YAAQ,IAAI,eAAe,SAAS,SAAS,MAAM,EAAE;AACrD,YAAQ,IAAI,kBAAkB,SAAS,YAAY,MAAM,EAAE;AAC3D,YAAQ,IAAI,gBAAgB,SAAS,UAAU,MAAM,EAAE;AACvD,YAAQ,IAAI,gBAAgB,OAAO,KAAK,SAAS,SAAS,EAAE,MAAM,EAAE;AACpE,YAAQ,IAAI;AAAA;AAAA,CAAa;AAAA,EAC3B,SAAS,KAAK;AACZ,YAAQ,MAAM,mBAAmB,GAAG;AACpC,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;;;AJxEA,SAAS,gBAAAC,qBAAoB;AAC7B,SAAS,WAAAC,UAAS,WAAAC,gBAAe;AACjC,SAAS,iBAAAC,sBAAqB;AAE9B,IAAMC,aAAYF,SAAQC,eAAc,YAAY,GAAG,CAAC;AACxD,IAAM,UAAUF,SAAQG,YAAW,oBAAoB;AACvD,IAAI,UAAU;AACd,IAAI;AACF,QAAM,MAAM,KAAK,MAAMJ,cAAa,SAAS,OAAO,CAAC;AACrD,YAAU,IAAI;AAChB,QAAQ;AAAC;AAET,WAAW;AAEX,IAAM,UAAU,IAAI,QAAQ;AAE5B,QACG,KAAK,OAAO,EACZ,YAAY,sEAAiE,EAC7E,QAAQ,OAAO;AAElB,QACG,QAAQ,MAAM,EACd,YAAY,8BAA8B,EAC1C,SAAS,UAAU,wBAAwB,EAC3C,OAAO,qBAAqB,yCAAyC,SAAS,EAC9E,OAAO,WAAW;AAErB,QACG,QAAQ,KAAK,EACb,YAAY,uBAAuB,EACnC,OAAO,qBAAqB,qBAAqB,MAAM,EACvD,OAAO,sBAAsB,2BAA2B,OAAO,EAC/D,OAAO,UAAU;AAEpB,QACG,QAAQ,OAAO,EACf,YAAY,kCAAkC,EAC9C,OAAO,sBAAsB,2BAA2B,OAAO,EAC/D,OAAO,oBAAoB,oBAAoB,QAAQ,EACvD,OAAO,YAAY;AAEtB,QAAQ,MAAM,QAAQ,IAAI;","names":["pkgPath","resolve","resolve","mkdirSync","writeFileSync","existsSync","resolve","join","resolve","existsSync","mkdirSync","writeFileSync","join","readFileSync","resolve","dirname","fileURLToPath","__dirname"]}
@@ -1,11 +1,14 @@
1
- import type { Session, TurnContext } from "../types.js";
2
- export declare function getSession(): Session | null;
3
- export declare function getTurn(): TurnContext | null;
4
- export declare function setSession(session: Session): void;
5
- export declare function setTurn(turn: TurnContext): void;
6
- export declare function getContext<T = unknown>(key: string): T | undefined;
7
- export declare function requireContext<T = unknown>(key: string): T;
8
- export declare function hasContext(key: string): boolean;
9
- export declare function setContext(key: string, value: unknown): void;
10
- export declare function ensureContext<T>(key: string, factory: () => T): T;
11
- //# sourceMappingURL=index.d.ts.map
1
+ import { S as Session, T as TurnContext } from '../types-BxOQTzx1.js';
2
+ import 'zod';
3
+
4
+ declare function getSession(): Session | null;
5
+ declare function getTurn(): TurnContext | null;
6
+ declare function setSession(session: Session): void;
7
+ declare function setTurn(turn: TurnContext): void;
8
+ declare function getContext<T = unknown>(key: string): T | undefined;
9
+ declare function requireContext<T = unknown>(key: string): T;
10
+ declare function hasContext(key: string): boolean;
11
+ declare function setContext(key: string, value: unknown): void;
12
+ declare function ensureContext<T>(key: string, factory: () => T): T;
13
+
14
+ export { ensureContext, getContext, getSession, getTurn, hasContext, requireContext, setContext, setSession, setTurn };
@@ -1,38 +1,23 @@
1
- let currentSession = null;
2
- let currentTurn = null;
3
- const sharedContext = new Map();
4
- export function getSession() {
5
- return currentSession;
6
- }
7
- export function getTurn() {
8
- return currentTurn;
9
- }
10
- export function setSession(session) {
11
- currentSession = session;
12
- }
13
- export function setTurn(turn) {
14
- currentTurn = turn;
15
- }
16
- export function getContext(key) {
17
- return sharedContext.get(key);
18
- }
19
- export function requireContext(key) {
20
- const value = sharedContext.get(key);
21
- if (value === undefined) {
22
- throw new Error(`Required context key not found: ${key}`);
23
- }
24
- return value;
25
- }
26
- export function hasContext(key) {
27
- return sharedContext.has(key);
28
- }
29
- export function setContext(key, value) {
30
- sharedContext.set(key, value);
31
- }
32
- export function ensureContext(key, factory) {
33
- if (!sharedContext.has(key)) {
34
- sharedContext.set(key, factory());
35
- }
36
- return sharedContext.get(key);
37
- }
1
+ import {
2
+ ensureContext,
3
+ getContext,
4
+ getSession,
5
+ getTurn,
6
+ hasContext,
7
+ requireContext,
8
+ setContext,
9
+ setSession,
10
+ setTurn
11
+ } from "../chunk-WAD7VLNI.js";
12
+ export {
13
+ ensureContext,
14
+ getContext,
15
+ getSession,
16
+ getTurn,
17
+ hasContext,
18
+ requireContext,
19
+ setContext,
20
+ setSession,
21
+ setTurn
22
+ };
38
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAEA,IAAI,cAAc,GAAmB,IAAI,CAAC;AAC1C,IAAI,WAAW,GAAuB,IAAI,CAAC;AAC3C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAmB,CAAC;AAEjD,MAAM,UAAU,UAAU;IACxB,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,cAAc,GAAG,OAAO,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAiB;IACvC,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,UAAU,CAAc,GAAW;IACjD,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAkB,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,cAAc,CAAc,GAAW;IACrD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,KAAc;IACpD,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,GAAW,EACX,OAAgB;IAEhB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;AACrC,CAAC"}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,10 +1,19 @@
1
- export interface DiscoveredSlot {
1
+ interface DiscoveredSlot {
2
2
  name: string;
3
3
  filePath: string;
4
4
  type: "markdown" | "module";
5
5
  kind: "flat" | "named";
6
6
  }
7
- export interface DiscoveredAgent {
7
+ /** A subagent is a nested agent directory, not a flat file. */
8
+ interface DiscoveredSubagent {
9
+ id: string;
10
+ root: string;
11
+ agentConfig?: string;
12
+ instructions?: string;
13
+ tools: DiscoveredSlot[];
14
+ skills: DiscoveredSlot[];
15
+ }
16
+ interface DiscoveredAgent {
8
17
  root: string;
9
18
  agentConfig?: string;
10
19
  instructions?: string;
@@ -14,18 +23,19 @@ export interface DiscoveredAgent {
14
23
  channels: DiscoveredSlot[];
15
24
  schedules: DiscoveredSlot[];
16
25
  connections: DiscoveredSlot[];
17
- subagents: DiscoveredSlot[];
26
+ subagents: DiscoveredSubagent[];
18
27
  lib: DiscoveredSlot[];
19
28
  }
20
- export interface DiscoverDiagnostic {
29
+ interface DiscoverDiagnostic {
21
30
  code: string;
22
31
  message: string;
23
32
  severity: "error" | "warning";
24
33
  filePath?: string;
25
34
  }
26
- export interface DiscoverResult {
35
+ interface DiscoverResult {
27
36
  agent: DiscoveredAgent;
28
37
  diagnostics: DiscoverDiagnostic[];
29
38
  }
30
- export declare function discoverAgent(agentDir: string): DiscoverResult;
31
- //# sourceMappingURL=index.d.ts.map
39
+ declare function discoverAgent(agentDir: string): DiscoverResult;
40
+
41
+ export { type DiscoverDiagnostic, type DiscoverResult, type DiscoveredAgent, type DiscoveredSlot, type DiscoveredSubagent, discoverAgent };
@@ -1,133 +1,7 @@
1
- import { readdirSync, existsSync } from "node:fs";
2
- import { resolve, join, basename, extname } from "node:path";
3
- const TOOL_SLUG = /^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/;
4
- const CHANNEL_SLUG = /^[a-z][a-z0-9-]{0,63}$/;
5
- const CONNECTION_SLUG = /^[a-z][a-z0-9-]{0,63}$/;
6
- const HOOK_SLUG = /^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/;
7
- const SUPPORTED_EXTENSIONS = new Set([".ts", ".mts", ".cts", ".js", ".mjs", ".cjs"]);
8
- export function discoverAgent(agentDir) {
9
- const root = resolve(agentDir);
10
- const diagnostics = [];
11
- if (!existsSync(root)) {
12
- diagnostics.push({
13
- code: "AGENT_DIR_NOT_FOUND",
14
- message: `Agent directory not found: ${root}`,
15
- severity: "error",
16
- });
17
- return { agent: { root, tools: [], skills: [], hooks: [], channels: [], schedules: [], connections: [], subagents: [], lib: [] }, diagnostics };
18
- }
19
- const entries = readdirSync(root, { withFileTypes: true });
20
- const agent = {
21
- root,
22
- agentConfig: discoverFlatModule(root, "agent", entries, diagnostics),
23
- instructions: discoverInstructions(root, entries, diagnostics),
24
- tools: discoverNamedDirectory(root, "tools", entries, TOOL_SLUG, diagnostics),
25
- skills: discoverNamedDirectory(root, "skills", entries, TOOL_SLUG, diagnostics),
26
- hooks: discoverNamedDirectory(root, "hooks", entries, HOOK_SLUG, diagnostics),
27
- channels: discoverNamedDirectory(root, "channels", entries, CHANNEL_SLUG, diagnostics),
28
- schedules: discoverNamedDirectory(root, "schedules", entries, TOOL_SLUG, diagnostics),
29
- connections: discoverNamedDirectory(root, "connections", entries, CONNECTION_SLUG, diagnostics),
30
- subagents: discoverNamedDirectory(root, "subagents", entries, TOOL_SLUG, diagnostics),
31
- lib: discoverNamedDirectory(root, "lib", entries, TOOL_SLUG, diagnostics),
32
- };
33
- return { agent, diagnostics };
34
- }
35
- function discoverFlatModule(root, baseName, entries, diagnostics) {
36
- const candidates = [];
37
- for (const entry of entries) {
38
- if (!entry.isFile())
39
- continue;
40
- const name = entry.name;
41
- const ext = extname(name);
42
- if (!SUPPORTED_EXTENSIONS.has(ext))
43
- continue;
44
- if (basename(name, ext) !== baseName)
45
- continue;
46
- candidates.push(name);
47
- }
48
- if (candidates.length > 1) {
49
- diagnostics.push({
50
- code: "MODULE_SLOT_COLLISION",
51
- message: `Multiple module sources for "${baseName}": ${candidates.join(", ")}`,
52
- severity: "error",
53
- filePath: root,
54
- });
55
- }
56
- if (candidates.length === 0)
57
- return undefined;
58
- return join(root, candidates[0]);
59
- }
60
- function discoverInstructions(root, entries, diagnostics) {
61
- const mdCandidate = entries.find(e => e.isFile() && e.name.toLowerCase() === "instructions.md");
62
- if (mdCandidate)
63
- return join(root, mdCandidate.name);
64
- const tsCandidate = entries.find(e => {
65
- if (!e.isFile())
66
- return false;
67
- const ext = extname(e.name);
68
- return SUPPORTED_EXTENSIONS.has(ext) && basename(e.name, ext) === "instructions";
69
- });
70
- if (tsCandidate)
71
- return join(root, tsCandidate.name);
72
- const legacyMdCandidate = entries.find(e => e.isFile() && e.name.toLowerCase() === "system.md");
73
- if (legacyMdCandidate) {
74
- diagnostics.push({
75
- code: "DEPRECATED_SYSTEM_SLOT",
76
- message: `"system.md" is deprecated. Rename to "instructions.md".`,
77
- severity: "warning",
78
- filePath: join(root, legacyMdCandidate.name),
79
- });
80
- return join(root, legacyMdCandidate.name);
81
- }
82
- return undefined;
83
- }
84
- function discoverNamedDirectory(root, dirName, entries, slugPattern, diagnostics) {
85
- const dirEntry = entries.find(e => e.isDirectory() && e.name === dirName);
86
- if (!dirEntry)
87
- return [];
88
- const dirPath = join(root, dirName);
89
- const slots = [];
90
- try {
91
- const files = readdirSync(dirPath, { withFileTypes: true });
92
- for (const file of files) {
93
- if (!file.isFile())
94
- continue;
95
- const ext = extname(file.name);
96
- const name = basename(file.name, ext);
97
- if (file.name === ".gitkeep")
98
- continue;
99
- if (ext === ".md") {
100
- if (!slugPattern.test(name)) {
101
- diagnostics.push({
102
- code: "INVALID_SLOT_NAME",
103
- message: `Invalid ${dirName} name "${name}" — does not match slug pattern.`,
104
- severity: "warning",
105
- filePath: join(dirPath, file.name),
106
- });
107
- }
108
- slots.push({ name, filePath: join(dirPath, file.name), type: "markdown", kind: "named" });
109
- continue;
110
- }
111
- if (SUPPORTED_EXTENSIONS.has(ext)) {
112
- if (!slugPattern.test(name)) {
113
- diagnostics.push({
114
- code: "INVALID_SLOT_NAME",
115
- message: `Invalid ${dirName} name "${name}" — does not match slug pattern.`,
116
- severity: "warning",
117
- filePath: join(dirPath, file.name),
118
- });
119
- }
120
- slots.push({ name, filePath: join(dirPath, file.name), type: "module", kind: "named" });
121
- }
122
- }
123
- }
124
- catch {
125
- diagnostics.push({
126
- code: "DIRECTORY_READ_ERROR",
127
- message: `Could not read directory: ${dirPath}`,
128
- severity: "error",
129
- });
130
- }
131
- return slots.sort((a, b) => a.name.localeCompare(b.name));
132
- }
1
+ import {
2
+ discoverAgent
3
+ } from "../chunk-6XETPLIF.js";
4
+ export {
5
+ discoverAgent
6
+ };
133
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/discover/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAgB,UAAU,EAAyB,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAW,MAAM,WAAW,CAAC;AAmCtE,MAAM,SAAS,GAAG,+BAA+B,CAAC;AAClD,MAAM,YAAY,GAAG,wBAAwB,CAAC;AAC9C,MAAM,eAAe,GAAG,wBAAwB,CAAC;AACjD,MAAM,SAAS,GAAG,+BAA+B,CAAC;AAElD,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAErF,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC/B,MAAM,WAAW,GAAyB,EAAE,CAAC;IAE7C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,8BAA8B,IAAI,EAAE;YAC7C,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC;IAClJ,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE3D,MAAM,KAAK,GAAG;QACZ,IAAI;QACJ,WAAW,EAAE,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC;QACpE,YAAY,EAAE,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC;QAC9D,KAAK,EAAE,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC;QAC7E,MAAM,EAAE,sBAAsB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC;QAC/E,KAAK,EAAE,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC;QAC7E,QAAQ,EAAE,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC;QACtF,SAAS,EAAE,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC;QACrF,WAAW,EAAE,sBAAsB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,CAAC;QAC/F,SAAS,EAAE,sBAAsB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC;QACrF,GAAG,EAAE,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC;KAC1E,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,QAAgB,EAAE,OAAiB,EAAE,WAAiC;IAC9G,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAAE,SAAS;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC7C,IAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,QAAQ;YAAE,SAAS;QAC/C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,gCAAgC,QAAQ,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9E,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,OAAiB,EAAE,WAAiC;IAC9F,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,iBAAiB,CAAC,CAAC;IAChG,IAAI,WAAW;QAAE,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAErD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;QACnC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;YAAE,OAAO,KAAK,CAAC;QAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,cAAc,CAAC;IACnF,CAAC,CAAC,CAAC;IACH,IAAI,WAAW;QAAE,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAErD,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,CAAC;IAChG,IAAI,iBAAiB,EAAE,CAAC;QACtB,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,wBAAwB;YAC9B,OAAO,EAAE,yDAAyD;YAClE,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC;SAC7C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY,EAAE,OAAe,EAAE,OAAiB,EAAE,WAAmB,EAAE,WAAiC;IACtI,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC1E,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAAE,SAAS;YAE7B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAEtC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;gBAAE,SAAS;YAEvC,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,WAAW,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,mBAAmB;wBACzB,OAAO,EAAE,WAAW,OAAO,UAAU,IAAI,kCAAkC;wBAC3E,QAAQ,EAAE,SAAS;wBACnB,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;qBACnC,CAAC,CAAC;gBACL,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC1F,SAAS;YACX,CAAC;YAED,IAAI,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,WAAW,CAAC,IAAI,CAAC;wBACf,IAAI,EAAE,mBAAmB;wBACzB,OAAO,EAAE,WAAW,OAAO,UAAU,IAAI,kCAAkC;wBAC3E,QAAQ,EAAE,SAAS;wBACnB,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;qBACnC,CAAC,CAAC;gBACL,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,6BAA6B,OAAO,EAAE;YAC/C,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,3 +1,6 @@
1
- import type { HookConfig } from "../types.js";
2
- export declare function defineHook(config: HookConfig): HookConfig;
3
- //# sourceMappingURL=index.d.ts.map
1
+ import { H as HookConfig } from '../types-BxOQTzx1.js';
2
+ import 'zod';
3
+
4
+ declare function defineHook(config: HookConfig): HookConfig;
5
+
6
+ export { defineHook };
@@ -1,7 +1,7 @@
1
- export function defineHook(config) {
2
- if (!config.name || !config.event || !config.handler) {
3
- throw new Error("Hook must have name, event, and handler");
4
- }
5
- return config;
6
- }
1
+ import {
2
+ defineHook
3
+ } from "../chunk-3CNQ6HQV.js";
4
+ export {
5
+ defineHook
6
+ };
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,UAAU,CAAC,MAAkB;IAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,136 @@
1
+ import { T as TurnContext } from './types-BxOQTzx1.js';
2
+ import { StreamEvent } from './protocol/events.js';
3
+
4
+ interface MemoryEntry {
5
+ role: "user" | "assistant" | "tool" | "system";
6
+ content: string;
7
+ timestamp: number;
8
+ turnId?: string;
9
+ score?: number;
10
+ }
11
+ interface Thread {
12
+ id: string;
13
+ resourceId: string;
14
+ title?: string;
15
+ metadata?: Record<string, unknown>;
16
+ createdAt: number;
17
+ updatedAt: number;
18
+ }
19
+ interface DeleteMessagesOptions {
20
+ threadId: string;
21
+ resourceId: string;
22
+ messageIds?: string[];
23
+ beforeTimestamp?: number;
24
+ afterTimestamp?: number;
25
+ }
26
+ interface MemoryQuery {
27
+ resourceId: string;
28
+ threadId: string;
29
+ query?: string;
30
+ limit?: number;
31
+ }
32
+ interface RecallOptions {
33
+ threadId: string;
34
+ resourceId: string;
35
+ page?: number;
36
+ perPage?: number;
37
+ dateRange?: {
38
+ start?: Date;
39
+ end?: Date;
40
+ };
41
+ include?: Array<{
42
+ id: string;
43
+ withPreviousMessages?: number;
44
+ withNextMessages?: number;
45
+ }>;
46
+ vectorSearchString?: string;
47
+ }
48
+ interface RecallResult {
49
+ messages: MemoryEntry[];
50
+ total: number;
51
+ hasMore: boolean;
52
+ }
53
+ interface MemoryStore {
54
+ save(resourceId: string, threadId: string, entries: MemoryEntry[]): Promise<void>;
55
+ load(resourceId: string, threadId: string, limit?: number): Promise<MemoryEntry[]>;
56
+ clear(resourceId: string, threadId: string): Promise<void>;
57
+ search?(resourceId: string, threadId: string, query: string, limit?: number): Promise<MemoryEntry[]>;
58
+ close?(): Promise<void>;
59
+ createThread?(thread: Thread): Promise<void>;
60
+ getThread?(threadId: string, resourceId: string): Promise<Thread | null>;
61
+ listThreads?(resourceId: string): Promise<Thread[]>;
62
+ updateThread?(thread: Partial<Thread> & {
63
+ id: string;
64
+ resourceId: string;
65
+ }): Promise<void>;
66
+ deleteThread?(threadId: string, resourceId: string): Promise<void>;
67
+ deleteMessages?(opts: DeleteMessagesOptions): Promise<number>;
68
+ cloneThread?(source: {
69
+ threadId: string;
70
+ resourceId: string;
71
+ }, dest: {
72
+ threadId: string;
73
+ resourceId: string;
74
+ }): Promise<void>;
75
+ }
76
+ interface MemoryStrategy {
77
+ getInputContext(store: MemoryStore, resourceId: string, threadId: string): Promise<string>;
78
+ recordTurn(store: MemoryStore, resourceId: string, threadId: string, input: string, output: string, toolCalls?: {
79
+ tool: string;
80
+ input: unknown;
81
+ output: unknown;
82
+ }[]): Promise<void>;
83
+ }
84
+ interface InputProcessor {
85
+ name: string;
86
+ processInput(store: MemoryStore, resourceId: string, threadId: string): Promise<string>;
87
+ }
88
+ interface MemoryProcessor extends InputProcessor {
89
+ processOutput?(store: MemoryStore, resourceId: string, threadId: string, input: string, output: string, toolCalls?: {
90
+ tool: string;
91
+ input: unknown;
92
+ output: unknown;
93
+ }[]): Promise<void>;
94
+ }
95
+ interface Embedder {
96
+ embed(text: string): Promise<number[]>;
97
+ embedBatch(texts: string[]): Promise<number[][]>;
98
+ readonly dimensions: number;
99
+ }
100
+ interface VectorStore {
101
+ upsert(namespace: string, vectors: Array<{
102
+ id: string;
103
+ values: number[];
104
+ metadata?: Record<string, unknown>;
105
+ }>): Promise<void>;
106
+ query(namespace: string, vector: number[], options?: {
107
+ topK?: number;
108
+ filter?: Record<string, unknown>;
109
+ }): Promise<Array<{
110
+ id: string;
111
+ score: number;
112
+ metadata?: Record<string, unknown>;
113
+ }>>;
114
+ delete(namespace: string, ids: string[]): Promise<void>;
115
+ }
116
+
117
+ interface RunOptions {
118
+ endpoint?: string;
119
+ apiKey?: string;
120
+ maxTurns?: number;
121
+ sessionId?: string;
122
+ resourceId?: string;
123
+ threadId?: string;
124
+ memoryStore?: MemoryStore;
125
+ onEvent?: (event: StreamEvent) => void;
126
+ }
127
+ interface RunResult {
128
+ output: string;
129
+ turns: TurnContext[];
130
+ events: StreamEvent[];
131
+ sessionId: string;
132
+ }
133
+ declare function runAgent(agentDir: string, input: string, options?: RunOptions): Promise<RunResult>;
134
+ declare function streamAgent(agentDir: string, input: string, options?: RunOptions): AsyncGenerator<StreamEvent, void, unknown>;
135
+
136
+ export { type DeleteMessagesOptions as D, type Embedder as E, type MemoryStore as M, type RecallOptions as R, type Thread as T, type VectorStore as V, type MemoryEntry as a, type MemoryStrategy as b, type MemoryProcessor as c, type RecallResult as d, type MemoryQuery as e, type RunOptions as f, type RunResult as g, runAgent as r, streamAgent as s };