@vinhnt-sdk/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +57 -0
  3. package/dist/agent/agent-def.d.ts +11 -0
  4. package/dist/agent/agent-def.d.ts.map +1 -0
  5. package/dist/agent/agent-def.js +2 -0
  6. package/dist/agent/agent-def.js.map +1 -0
  7. package/dist/agent/agent-factory.d.ts +21 -0
  8. package/dist/agent/agent-factory.d.ts.map +1 -0
  9. package/dist/agent/agent-factory.js +119 -0
  10. package/dist/agent/agent-factory.js.map +1 -0
  11. package/dist/agent/agent-file-loader.d.ts +46 -0
  12. package/dist/agent/agent-file-loader.d.ts.map +1 -0
  13. package/dist/agent/agent-file-loader.js +111 -0
  14. package/dist/agent/agent-file-loader.js.map +1 -0
  15. package/dist/agent/agent-parser.d.ts +9 -0
  16. package/dist/agent/agent-parser.d.ts.map +1 -0
  17. package/dist/agent/agent-parser.js +70 -0
  18. package/dist/agent/agent-parser.js.map +1 -0
  19. package/dist/agent/agent-registry.d.ts +49 -0
  20. package/dist/agent/agent-registry.d.ts.map +1 -0
  21. package/dist/agent/agent-registry.js +127 -0
  22. package/dist/agent/agent-registry.js.map +1 -0
  23. package/dist/agent/behaviour-profiles.d.ts +11 -0
  24. package/dist/agent/behaviour-profiles.d.ts.map +1 -0
  25. package/dist/agent/behaviour-profiles.js +46 -0
  26. package/dist/agent/behaviour-profiles.js.map +1 -0
  27. package/dist/agent/create-agent-tool.d.ts +20 -0
  28. package/dist/agent/create-agent-tool.d.ts.map +1 -0
  29. package/dist/agent/create-agent-tool.js +108 -0
  30. package/dist/agent/create-agent-tool.js.map +1 -0
  31. package/dist/agent/default-agents.d.ts +5 -0
  32. package/dist/agent/default-agents.d.ts.map +1 -0
  33. package/dist/agent/default-agents.js +38 -0
  34. package/dist/agent/default-agents.js.map +1 -0
  35. package/dist/agent/delegate-batch-tool.d.ts +10 -0
  36. package/dist/agent/delegate-batch-tool.d.ts.map +1 -0
  37. package/dist/agent/delegate-batch-tool.js +48 -0
  38. package/dist/agent/delegate-batch-tool.js.map +1 -0
  39. package/dist/agent/delegate-tool.d.ts +13 -0
  40. package/dist/agent/delegate-tool.d.ts.map +1 -0
  41. package/dist/agent/delegate-tool.js +49 -0
  42. package/dist/agent/delegate-tool.js.map +1 -0
  43. package/dist/agent/dynamic-registry.d.ts +30 -0
  44. package/dist/agent/dynamic-registry.d.ts.map +1 -0
  45. package/dist/agent/dynamic-registry.js +87 -0
  46. package/dist/agent/dynamic-registry.js.map +1 -0
  47. package/dist/agent/execution-engine.d.ts +25 -0
  48. package/dist/agent/execution-engine.d.ts.map +1 -0
  49. package/dist/agent/execution-engine.js +80 -0
  50. package/dist/agent/execution-engine.js.map +1 -0
  51. package/dist/agent/list-agents-tool.d.ts +4 -0
  52. package/dist/agent/list-agents-tool.d.ts.map +1 -0
  53. package/dist/agent/list-agents-tool.js +43 -0
  54. package/dist/agent/list-agents-tool.js.map +1 -0
  55. package/dist/agent/spawn-agent-tool.d.ts +15 -0
  56. package/dist/agent/spawn-agent-tool.d.ts.map +1 -0
  57. package/dist/agent/spawn-agent-tool.js +77 -0
  58. package/dist/agent/spawn-agent-tool.js.map +1 -0
  59. package/dist/crypto/password.d.ts +11 -0
  60. package/dist/crypto/password.d.ts.map +1 -0
  61. package/dist/crypto/password.js +44 -0
  62. package/dist/crypto/password.js.map +1 -0
  63. package/dist/event-bus/bridge.d.ts +19 -0
  64. package/dist/event-bus/bridge.d.ts.map +1 -0
  65. package/dist/event-bus/bridge.js +48 -0
  66. package/dist/event-bus/bridge.js.map +1 -0
  67. package/dist/event-bus/global-bus.d.ts +30 -0
  68. package/dist/event-bus/global-bus.d.ts.map +1 -0
  69. package/dist/event-bus/global-bus.js +92 -0
  70. package/dist/event-bus/global-bus.js.map +1 -0
  71. package/dist/event-bus/in-memory-bus.d.ts +19 -0
  72. package/dist/event-bus/in-memory-bus.d.ts.map +1 -0
  73. package/dist/event-bus/in-memory-bus.js +97 -0
  74. package/dist/event-bus/in-memory-bus.js.map +1 -0
  75. package/dist/event-bus/index.d.ts +5 -0
  76. package/dist/event-bus/index.d.ts.map +1 -0
  77. package/dist/event-bus/index.js +4 -0
  78. package/dist/event-bus/index.js.map +1 -0
  79. package/dist/event-bus/types.d.ts +20 -0
  80. package/dist/event-bus/types.d.ts.map +1 -0
  81. package/dist/event-bus/types.js +2 -0
  82. package/dist/event-bus/types.js.map +1 -0
  83. package/dist/fakes/fake-agent-registry.d.ts +17 -0
  84. package/dist/fakes/fake-agent-registry.d.ts.map +1 -0
  85. package/dist/fakes/fake-agent-registry.js +70 -0
  86. package/dist/fakes/fake-agent-registry.js.map +1 -0
  87. package/dist/fakes/fake-approval-store.d.ts +27 -0
  88. package/dist/fakes/fake-approval-store.d.ts.map +1 -0
  89. package/dist/fakes/fake-approval-store.js +66 -0
  90. package/dist/fakes/fake-approval-store.js.map +1 -0
  91. package/dist/fakes/fake-model.d.ts +37 -0
  92. package/dist/fakes/fake-model.d.ts.map +1 -0
  93. package/dist/fakes/fake-model.js +63 -0
  94. package/dist/fakes/fake-model.js.map +1 -0
  95. package/dist/fakes/fake-store.d.ts +16 -0
  96. package/dist/fakes/fake-store.d.ts.map +1 -0
  97. package/dist/fakes/fake-store.js +61 -0
  98. package/dist/fakes/fake-store.js.map +1 -0
  99. package/dist/fakes/fake-tool-context.d.ts +28 -0
  100. package/dist/fakes/fake-tool-context.d.ts.map +1 -0
  101. package/dist/fakes/fake-tool-context.js +34 -0
  102. package/dist/fakes/fake-tool-context.js.map +1 -0
  103. package/dist/fakes/fake-tool.d.ts +22 -0
  104. package/dist/fakes/fake-tool.d.ts.map +1 -0
  105. package/dist/fakes/fake-tool.js +27 -0
  106. package/dist/fakes/fake-tool.js.map +1 -0
  107. package/dist/fakes/index.d.ts +7 -0
  108. package/dist/fakes/index.d.ts.map +1 -0
  109. package/dist/fakes/index.js +7 -0
  110. package/dist/fakes/index.js.map +1 -0
  111. package/dist/index.d.ts +111 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +72 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/internal/index.d.ts +5 -0
  116. package/dist/internal/index.d.ts.map +1 -0
  117. package/dist/internal/index.js +8 -0
  118. package/dist/internal/index.js.map +1 -0
  119. package/dist/kernel/approval-handler.d.ts +17 -0
  120. package/dist/kernel/approval-handler.d.ts.map +1 -0
  121. package/dist/kernel/approval-handler.js +28 -0
  122. package/dist/kernel/approval-handler.js.map +1 -0
  123. package/dist/kernel/circuit-breaker.d.ts +25 -0
  124. package/dist/kernel/circuit-breaker.d.ts.map +1 -0
  125. package/dist/kernel/circuit-breaker.js +88 -0
  126. package/dist/kernel/circuit-breaker.js.map +1 -0
  127. package/dist/kernel/context-manager.d.ts +29 -0
  128. package/dist/kernel/context-manager.d.ts.map +1 -0
  129. package/dist/kernel/context-manager.js +64 -0
  130. package/dist/kernel/context-manager.js.map +1 -0
  131. package/dist/kernel/kernel-error.d.ts +7 -0
  132. package/dist/kernel/kernel-error.d.ts.map +1 -0
  133. package/dist/kernel/kernel-error.js +12 -0
  134. package/dist/kernel/kernel-error.js.map +1 -0
  135. package/dist/kernel/kernel-session.d.ts +30 -0
  136. package/dist/kernel/kernel-session.d.ts.map +1 -0
  137. package/dist/kernel/kernel-session.js +92 -0
  138. package/dist/kernel/kernel-session.js.map +1 -0
  139. package/dist/kernel/kernel-types.d.ts +72 -0
  140. package/dist/kernel/kernel-types.d.ts.map +1 -0
  141. package/dist/kernel/kernel-types.js +2 -0
  142. package/dist/kernel/kernel-types.js.map +1 -0
  143. package/dist/kernel/kernel-utils.d.ts +29 -0
  144. package/dist/kernel/kernel-utils.d.ts.map +1 -0
  145. package/dist/kernel/kernel-utils.js +74 -0
  146. package/dist/kernel/kernel-utils.js.map +1 -0
  147. package/dist/kernel/kernel.d.ts +150 -0
  148. package/dist/kernel/kernel.d.ts.map +1 -0
  149. package/dist/kernel/kernel.js +536 -0
  150. package/dist/kernel/kernel.js.map +1 -0
  151. package/dist/kernel/max-steps-prompt.d.ts +3 -0
  152. package/dist/kernel/max-steps-prompt.d.ts.map +1 -0
  153. package/dist/kernel/max-steps-prompt.js +13 -0
  154. package/dist/kernel/max-steps-prompt.js.map +1 -0
  155. package/dist/kernel/model-caller.d.ts +35 -0
  156. package/dist/kernel/model-caller.d.ts.map +1 -0
  157. package/dist/kernel/model-caller.js +196 -0
  158. package/dist/kernel/model-caller.js.map +1 -0
  159. package/dist/kernel/permission-gate.d.ts +74 -0
  160. package/dist/kernel/permission-gate.d.ts.map +1 -0
  161. package/dist/kernel/permission-gate.js +258 -0
  162. package/dist/kernel/permission-gate.js.map +1 -0
  163. package/dist/kernel/run-loop.d.ts +69 -0
  164. package/dist/kernel/run-loop.d.ts.map +1 -0
  165. package/dist/kernel/run-loop.js +437 -0
  166. package/dist/kernel/run-loop.js.map +1 -0
  167. package/dist/kernel/run-orchestrator.d.ts +66 -0
  168. package/dist/kernel/run-orchestrator.d.ts.map +1 -0
  169. package/dist/kernel/run-orchestrator.js +182 -0
  170. package/dist/kernel/run-orchestrator.js.map +1 -0
  171. package/dist/kernel/run-state.d.ts +25 -0
  172. package/dist/kernel/run-state.d.ts.map +1 -0
  173. package/dist/kernel/run-state.js +86 -0
  174. package/dist/kernel/run-state.js.map +1 -0
  175. package/dist/kernel/self-correction.d.ts +27 -0
  176. package/dist/kernel/self-correction.d.ts.map +1 -0
  177. package/dist/kernel/self-correction.js +80 -0
  178. package/dist/kernel/self-correction.js.map +1 -0
  179. package/dist/kernel/state-machine.d.ts +4 -0
  180. package/dist/kernel/state-machine.d.ts.map +1 -0
  181. package/dist/kernel/state-machine.js +18 -0
  182. package/dist/kernel/state-machine.js.map +1 -0
  183. package/dist/kernel/step-executor.d.ts +72 -0
  184. package/dist/kernel/step-executor.d.ts.map +1 -0
  185. package/dist/kernel/step-executor.js +301 -0
  186. package/dist/kernel/step-executor.js.map +1 -0
  187. package/dist/kernel/step-runner.d.ts +57 -0
  188. package/dist/kernel/step-runner.d.ts.map +1 -0
  189. package/dist/kernel/step-runner.js +124 -0
  190. package/dist/kernel/step-runner.js.map +1 -0
  191. package/dist/kernel/sub-agent-runner.d.ts +45 -0
  192. package/dist/kernel/sub-agent-runner.d.ts.map +1 -0
  193. package/dist/kernel/sub-agent-runner.js +128 -0
  194. package/dist/kernel/sub-agent-runner.js.map +1 -0
  195. package/dist/kernel/termination.d.ts +85 -0
  196. package/dist/kernel/termination.d.ts.map +1 -0
  197. package/dist/kernel/termination.js +89 -0
  198. package/dist/kernel/termination.js.map +1 -0
  199. package/dist/kernel/tool-context-builder.d.ts +15 -0
  200. package/dist/kernel/tool-context-builder.d.ts.map +1 -0
  201. package/dist/kernel/tool-context-builder.js +23 -0
  202. package/dist/kernel/tool-context-builder.js.map +1 -0
  203. package/dist/kernel/tool-error-router.d.ts +25 -0
  204. package/dist/kernel/tool-error-router.d.ts.map +1 -0
  205. package/dist/kernel/tool-error-router.js +102 -0
  206. package/dist/kernel/tool-error-router.js.map +1 -0
  207. package/dist/kernel/tool-result-processor.d.ts +22 -0
  208. package/dist/kernel/tool-result-processor.d.ts.map +1 -0
  209. package/dist/kernel/tool-result-processor.js +47 -0
  210. package/dist/kernel/tool-result-processor.js.map +1 -0
  211. package/dist/kernel/tool-saga.d.ts +24 -0
  212. package/dist/kernel/tool-saga.d.ts.map +1 -0
  213. package/dist/kernel/tool-saga.js +59 -0
  214. package/dist/kernel/tool-saga.js.map +1 -0
  215. package/dist/knowledge/approval.d.ts +19 -0
  216. package/dist/knowledge/approval.d.ts.map +1 -0
  217. package/dist/knowledge/approval.js +60 -0
  218. package/dist/knowledge/approval.js.map +1 -0
  219. package/dist/knowledge/compressor.d.ts +46 -0
  220. package/dist/knowledge/compressor.d.ts.map +1 -0
  221. package/dist/knowledge/compressor.js +86 -0
  222. package/dist/knowledge/compressor.js.map +1 -0
  223. package/dist/knowledge/index.d.ts +16 -0
  224. package/dist/knowledge/index.d.ts.map +1 -0
  225. package/dist/knowledge/index.js +10 -0
  226. package/dist/knowledge/index.js.map +1 -0
  227. package/dist/knowledge/learning-engine.d.ts +47 -0
  228. package/dist/knowledge/learning-engine.d.ts.map +1 -0
  229. package/dist/knowledge/learning-engine.js +83 -0
  230. package/dist/knowledge/learning-engine.js.map +1 -0
  231. package/dist/knowledge/llm-compactor.d.ts +25 -0
  232. package/dist/knowledge/llm-compactor.d.ts.map +1 -0
  233. package/dist/knowledge/llm-compactor.js +79 -0
  234. package/dist/knowledge/llm-compactor.js.map +1 -0
  235. package/dist/knowledge/memory-bounded.d.ts +21 -0
  236. package/dist/knowledge/memory-bounded.d.ts.map +1 -0
  237. package/dist/knowledge/memory-bounded.js +63 -0
  238. package/dist/knowledge/memory-bounded.js.map +1 -0
  239. package/dist/knowledge/memory.d.ts +21 -0
  240. package/dist/knowledge/memory.d.ts.map +1 -0
  241. package/dist/knowledge/memory.js +85 -0
  242. package/dist/knowledge/memory.js.map +1 -0
  243. package/dist/knowledge/prompt-builder.d.ts +11 -0
  244. package/dist/knowledge/prompt-builder.d.ts.map +1 -0
  245. package/dist/knowledge/prompt-builder.js +23 -0
  246. package/dist/knowledge/prompt-builder.js.map +1 -0
  247. package/dist/knowledge/review.d.ts +26 -0
  248. package/dist/knowledge/review.d.ts.map +1 -0
  249. package/dist/knowledge/review.js +69 -0
  250. package/dist/knowledge/review.js.map +1 -0
  251. package/dist/knowledge/tool.d.ts +4 -0
  252. package/dist/knowledge/tool.d.ts.map +1 -0
  253. package/dist/knowledge/tool.js +27 -0
  254. package/dist/knowledge/tool.js.map +1 -0
  255. package/dist/knowledge/types.d.ts +27 -0
  256. package/dist/knowledge/types.d.ts.map +1 -0
  257. package/dist/knowledge/types.js +2 -0
  258. package/dist/knowledge/types.js.map +1 -0
  259. package/dist/logger.d.ts +11 -0
  260. package/dist/logger.d.ts.map +1 -0
  261. package/dist/logger.js +44 -0
  262. package/dist/logger.js.map +1 -0
  263. package/dist/model.d.ts +90 -0
  264. package/dist/model.d.ts.map +1 -0
  265. package/dist/model.js +13 -0
  266. package/dist/model.js.map +1 -0
  267. package/dist/permission/checker.d.ts +29 -0
  268. package/dist/permission/checker.d.ts.map +1 -0
  269. package/dist/permission/checker.js +102 -0
  270. package/dist/permission/checker.js.map +1 -0
  271. package/dist/permission/evaluator.d.ts +24 -0
  272. package/dist/permission/evaluator.d.ts.map +1 -0
  273. package/dist/permission/evaluator.js +89 -0
  274. package/dist/permission/evaluator.js.map +1 -0
  275. package/dist/permission/permission.d.ts +29 -0
  276. package/dist/permission/permission.d.ts.map +1 -0
  277. package/dist/permission/permission.js +18 -0
  278. package/dist/permission/permission.js.map +1 -0
  279. package/dist/permission/saved.d.ts +34 -0
  280. package/dist/permission/saved.d.ts.map +1 -0
  281. package/dist/permission/saved.js +43 -0
  282. package/dist/permission/saved.js.map +1 -0
  283. package/dist/plugin/manager.d.ts +33 -0
  284. package/dist/plugin/manager.d.ts.map +1 -0
  285. package/dist/plugin/manager.js +114 -0
  286. package/dist/plugin/manager.js.map +1 -0
  287. package/dist/plugin/plugin-file-loader.d.ts +43 -0
  288. package/dist/plugin/plugin-file-loader.d.ts.map +1 -0
  289. package/dist/plugin/plugin-file-loader.js +115 -0
  290. package/dist/plugin/plugin-file-loader.js.map +1 -0
  291. package/dist/plugin/plugin-tool-provider.d.ts +22 -0
  292. package/dist/plugin/plugin-tool-provider.d.ts.map +1 -0
  293. package/dist/plugin/plugin-tool-provider.js +27 -0
  294. package/dist/plugin/plugin-tool-provider.js.map +1 -0
  295. package/dist/plugin.d.ts +130 -0
  296. package/dist/plugin.d.ts.map +1 -0
  297. package/dist/plugin.js +2 -0
  298. package/dist/plugin.js.map +1 -0
  299. package/dist/session/compaction.d.ts +9 -0
  300. package/dist/session/compaction.d.ts.map +1 -0
  301. package/dist/session/compaction.js +2 -0
  302. package/dist/session/compaction.js.map +1 -0
  303. package/dist/session/durable-reload.d.ts +41 -0
  304. package/dist/session/durable-reload.d.ts.map +1 -0
  305. package/dist/session/durable-reload.js +72 -0
  306. package/dist/session/durable-reload.js.map +1 -0
  307. package/dist/session/in-memory-session-state.d.ts +19 -0
  308. package/dist/session/in-memory-session-state.d.ts.map +1 -0
  309. package/dist/session/in-memory-session-state.js +51 -0
  310. package/dist/session/in-memory-session-state.js.map +1 -0
  311. package/dist/session/null-store.d.ts +30 -0
  312. package/dist/session/null-store.d.ts.map +1 -0
  313. package/dist/session/null-store.js +78 -0
  314. package/dist/session/null-store.js.map +1 -0
  315. package/dist/session/run-coordinator.d.ts +52 -0
  316. package/dist/session/run-coordinator.d.ts.map +1 -0
  317. package/dist/session/run-coordinator.js +127 -0
  318. package/dist/session/run-coordinator.js.map +1 -0
  319. package/dist/session/session-state.d.ts +37 -0
  320. package/dist/session/session-state.d.ts.map +1 -0
  321. package/dist/session/session-state.js +2 -0
  322. package/dist/session/session-state.js.map +1 -0
  323. package/dist/session/session-tree.d.ts +34 -0
  324. package/dist/session/session-tree.d.ts.map +1 -0
  325. package/dist/session/session-tree.js +171 -0
  326. package/dist/session/session-tree.js.map +1 -0
  327. package/dist/session/store.d.ts +45 -0
  328. package/dist/session/store.d.ts.map +1 -0
  329. package/dist/session/store.js +2 -0
  330. package/dist/session/store.js.map +1 -0
  331. package/dist/session/title.d.ts +7 -0
  332. package/dist/session/title.d.ts.map +1 -0
  333. package/dist/session/title.js +22 -0
  334. package/dist/session/title.js.map +1 -0
  335. package/dist/skill/create-skill-tool.d.ts +13 -0
  336. package/dist/skill/create-skill-tool.d.ts.map +1 -0
  337. package/dist/skill/create-skill-tool.js +77 -0
  338. package/dist/skill/create-skill-tool.js.map +1 -0
  339. package/dist/skill/skill-def-registry.d.ts +27 -0
  340. package/dist/skill/skill-def-registry.d.ts.map +1 -0
  341. package/dist/skill/skill-def-registry.js +74 -0
  342. package/dist/skill/skill-def-registry.js.map +1 -0
  343. package/dist/skill/skill-file-loader.d.ts +50 -0
  344. package/dist/skill/skill-file-loader.d.ts.map +1 -0
  345. package/dist/skill/skill-file-loader.js +115 -0
  346. package/dist/skill/skill-file-loader.js.map +1 -0
  347. package/dist/skill/skill-parser.d.ts +7 -0
  348. package/dist/skill/skill-parser.d.ts.map +1 -0
  349. package/dist/skill/skill-parser.js +42 -0
  350. package/dist/skill/skill-parser.js.map +1 -0
  351. package/dist/skill/skill-tool.d.ts +10 -0
  352. package/dist/skill/skill-tool.d.ts.map +1 -0
  353. package/dist/skill/skill-tool.js +100 -0
  354. package/dist/skill/skill-tool.js.map +1 -0
  355. package/dist/system-context/index.d.ts +10 -0
  356. package/dist/system-context/index.d.ts.map +1 -0
  357. package/dist/system-context/index.js +7 -0
  358. package/dist/system-context/index.js.map +1 -0
  359. package/dist/system-context/prompts/anthropic.d.ts +2 -0
  360. package/dist/system-context/prompts/anthropic.d.ts.map +1 -0
  361. package/dist/system-context/prompts/anthropic.js +35 -0
  362. package/dist/system-context/prompts/anthropic.js.map +1 -0
  363. package/dist/system-context/prompts/deepseek.d.ts +2 -0
  364. package/dist/system-context/prompts/deepseek.d.ts.map +1 -0
  365. package/dist/system-context/prompts/deepseek.js +38 -0
  366. package/dist/system-context/prompts/deepseek.js.map +1 -0
  367. package/dist/system-context/prompts/default.d.ts +2 -0
  368. package/dist/system-context/prompts/default.d.ts.map +1 -0
  369. package/dist/system-context/prompts/default.js +43 -0
  370. package/dist/system-context/prompts/default.js.map +1 -0
  371. package/dist/system-context/prompts/gemini.d.ts +2 -0
  372. package/dist/system-context/prompts/gemini.d.ts.map +1 -0
  373. package/dist/system-context/prompts/gemini.js +38 -0
  374. package/dist/system-context/prompts/gemini.js.map +1 -0
  375. package/dist/system-context/prompts/index.d.ts +3 -0
  376. package/dist/system-context/prompts/index.d.ts.map +1 -0
  377. package/dist/system-context/prompts/index.js +24 -0
  378. package/dist/system-context/prompts/index.js.map +1 -0
  379. package/dist/system-context/prompts/openai.d.ts +2 -0
  380. package/dist/system-context/prompts/openai.d.ts.map +1 -0
  381. package/dist/system-context/prompts/openai.js +31 -0
  382. package/dist/system-context/prompts/openai.js.map +1 -0
  383. package/dist/system-context/prompts/system-prompt-source.d.ts +3 -0
  384. package/dist/system-context/prompts/system-prompt-source.d.ts.map +1 -0
  385. package/dist/system-context/prompts/system-prompt-source.js +21 -0
  386. package/dist/system-context/prompts/system-prompt-source.js.map +1 -0
  387. package/dist/system-context/registry.d.ts +3 -0
  388. package/dist/system-context/registry.d.ts.map +1 -0
  389. package/dist/system-context/registry.js +73 -0
  390. package/dist/system-context/registry.js.map +1 -0
  391. package/dist/system-context/sources/agent-source.d.ts +14 -0
  392. package/dist/system-context/sources/agent-source.d.ts.map +1 -0
  393. package/dist/system-context/sources/agent-source.js +50 -0
  394. package/dist/system-context/sources/agent-source.js.map +1 -0
  395. package/dist/system-context/sources/date-source.d.ts +7 -0
  396. package/dist/system-context/sources/date-source.d.ts.map +1 -0
  397. package/dist/system-context/sources/date-source.js +26 -0
  398. package/dist/system-context/sources/date-source.js.map +1 -0
  399. package/dist/system-context/sources/instructions-source.d.ts +8 -0
  400. package/dist/system-context/sources/instructions-source.d.ts.map +1 -0
  401. package/dist/system-context/sources/instructions-source.js +50 -0
  402. package/dist/system-context/sources/instructions-source.js.map +1 -0
  403. package/dist/system-context/sources/skill-guidance-source.d.ts +7 -0
  404. package/dist/system-context/sources/skill-guidance-source.d.ts.map +1 -0
  405. package/dist/system-context/sources/skill-guidance-source.js +41 -0
  406. package/dist/system-context/sources/skill-guidance-source.js.map +1 -0
  407. package/dist/system-context/sources/workspace-source.d.ts +10 -0
  408. package/dist/system-context/sources/workspace-source.d.ts.map +1 -0
  409. package/dist/system-context/sources/workspace-source.js +29 -0
  410. package/dist/system-context/sources/workspace-source.js.map +1 -0
  411. package/dist/system-context/types.d.ts +37 -0
  412. package/dist/system-context/types.d.ts.map +1 -0
  413. package/dist/system-context/types.js +2 -0
  414. package/dist/system-context/types.js.map +1 -0
  415. package/dist/tool/arity.d.ts +22 -0
  416. package/dist/tool/arity.d.ts.map +1 -0
  417. package/dist/tool/arity.js +96 -0
  418. package/dist/tool/arity.js.map +1 -0
  419. package/dist/tool/bridge.d.ts +7 -0
  420. package/dist/tool/bridge.d.ts.map +1 -0
  421. package/dist/tool/bridge.js +48 -0
  422. package/dist/tool/bridge.js.map +1 -0
  423. package/dist/tool/context.d.ts +43 -0
  424. package/dist/tool/context.d.ts.map +1 -0
  425. package/dist/tool/context.js +2 -0
  426. package/dist/tool/context.js.map +1 -0
  427. package/dist/tool/define-tool.d.ts +45 -0
  428. package/dist/tool/define-tool.d.ts.map +1 -0
  429. package/dist/tool/define-tool.js +120 -0
  430. package/dist/tool/define-tool.js.map +1 -0
  431. package/dist/tool/definitions.d.ts +22 -0
  432. package/dist/tool/definitions.d.ts.map +1 -0
  433. package/dist/tool/definitions.js +2 -0
  434. package/dist/tool/definitions.js.map +1 -0
  435. package/dist/tool/description-lint.d.ts +25 -0
  436. package/dist/tool/description-lint.d.ts.map +1 -0
  437. package/dist/tool/description-lint.js +90 -0
  438. package/dist/tool/description-lint.js.map +1 -0
  439. package/dist/tool/diff.d.ts +7 -0
  440. package/dist/tool/diff.d.ts.map +1 -0
  441. package/dist/tool/diff.js +26 -0
  442. package/dist/tool/diff.js.map +1 -0
  443. package/dist/tool/domain.d.ts +39 -0
  444. package/dist/tool/domain.d.ts.map +1 -0
  445. package/dist/tool/domain.js +20 -0
  446. package/dist/tool/domain.js.map +1 -0
  447. package/dist/tool/file-history.d.ts +43 -0
  448. package/dist/tool/file-history.d.ts.map +1 -0
  449. package/dist/tool/file-history.js +55 -0
  450. package/dist/tool/file-history.js.map +1 -0
  451. package/dist/tool/file-tools.d.ts +51 -0
  452. package/dist/tool/file-tools.d.ts.map +1 -0
  453. package/dist/tool/file-tools.js +534 -0
  454. package/dist/tool/file-tools.js.map +1 -0
  455. package/dist/tool/git-tools.d.ts +8 -0
  456. package/dist/tool/git-tools.d.ts.map +1 -0
  457. package/dist/tool/git-tools.js +114 -0
  458. package/dist/tool/git-tools.js.map +1 -0
  459. package/dist/tool/history-hook.d.ts +4 -0
  460. package/dist/tool/history-hook.d.ts.map +1 -0
  461. package/dist/tool/history-hook.js +62 -0
  462. package/dist/tool/history-hook.js.map +1 -0
  463. package/dist/tool/image-tools.d.ts +11 -0
  464. package/dist/tool/image-tools.d.ts.map +1 -0
  465. package/dist/tool/image-tools.js +55 -0
  466. package/dist/tool/image-tools.js.map +1 -0
  467. package/dist/tool/in-memory-tool-registry.d.ts +13 -0
  468. package/dist/tool/in-memory-tool-registry.d.ts.map +1 -0
  469. package/dist/tool/in-memory-tool-registry.js +39 -0
  470. package/dist/tool/in-memory-tool-registry.js.map +1 -0
  471. package/dist/tool/index.d.ts +45 -0
  472. package/dist/tool/index.d.ts.map +1 -0
  473. package/dist/tool/index.js +33 -0
  474. package/dist/tool/index.js.map +1 -0
  475. package/dist/tool/json-schema.d.ts +22 -0
  476. package/dist/tool/json-schema.d.ts.map +1 -0
  477. package/dist/tool/json-schema.js +2 -0
  478. package/dist/tool/json-schema.js.map +1 -0
  479. package/dist/tool/lazy-registry.d.ts +23 -0
  480. package/dist/tool/lazy-registry.d.ts.map +1 -0
  481. package/dist/tool/lazy-registry.js +64 -0
  482. package/dist/tool/lazy-registry.js.map +1 -0
  483. package/dist/tool/policy.d.ts +5 -0
  484. package/dist/tool/policy.d.ts.map +1 -0
  485. package/dist/tool/policy.js +2 -0
  486. package/dist/tool/policy.js.map +1 -0
  487. package/dist/tool/provider-helpers.d.ts +31 -0
  488. package/dist/tool/provider-helpers.d.ts.map +1 -0
  489. package/dist/tool/provider-helpers.js +54 -0
  490. package/dist/tool/provider-helpers.js.map +1 -0
  491. package/dist/tool/provider.d.ts +80 -0
  492. package/dist/tool/provider.d.ts.map +1 -0
  493. package/dist/tool/provider.js +96 -0
  494. package/dist/tool/provider.js.map +1 -0
  495. package/dist/tool/providers/agent-provider.d.ts +26 -0
  496. package/dist/tool/providers/agent-provider.d.ts.map +1 -0
  497. package/dist/tool/providers/agent-provider.js +42 -0
  498. package/dist/tool/providers/agent-provider.js.map +1 -0
  499. package/dist/tool/providers/builtin-provider.d.ts +28 -0
  500. package/dist/tool/providers/builtin-provider.d.ts.map +1 -0
  501. package/dist/tool/providers/builtin-provider.js +67 -0
  502. package/dist/tool/providers/builtin-provider.js.map +1 -0
  503. package/dist/tool/providers/file-loader.d.ts +47 -0
  504. package/dist/tool/providers/file-loader.d.ts.map +1 -0
  505. package/dist/tool/providers/file-loader.js +120 -0
  506. package/dist/tool/providers/file-loader.js.map +1 -0
  507. package/dist/tool/providers/index.d.ts +8 -0
  508. package/dist/tool/providers/index.d.ts.map +1 -0
  509. package/dist/tool/providers/index.js +8 -0
  510. package/dist/tool/providers/index.js.map +1 -0
  511. package/dist/tool/providers/skill-provider.d.ts +23 -0
  512. package/dist/tool/providers/skill-provider.d.ts.map +1 -0
  513. package/dist/tool/providers/skill-provider.js +28 -0
  514. package/dist/tool/providers/skill-provider.js.map +1 -0
  515. package/dist/tool/question-tool.d.ts +15 -0
  516. package/dist/tool/question-tool.d.ts.map +1 -0
  517. package/dist/tool/question-tool.js +51 -0
  518. package/dist/tool/question-tool.js.map +1 -0
  519. package/dist/tool/read-tracker.d.ts +8 -0
  520. package/dist/tool/read-tracker.d.ts.map +1 -0
  521. package/dist/tool/read-tracker.js +33 -0
  522. package/dist/tool/read-tracker.js.map +1 -0
  523. package/dist/tool/registry.d.ts +58 -0
  524. package/dist/tool/registry.d.ts.map +1 -0
  525. package/dist/tool/registry.js +128 -0
  526. package/dist/tool/registry.js.map +1 -0
  527. package/dist/tool/runtime.d.ts +59 -0
  528. package/dist/tool/runtime.d.ts.map +1 -0
  529. package/dist/tool/runtime.js +108 -0
  530. package/dist/tool/runtime.js.map +1 -0
  531. package/dist/tool/sandbox.d.ts +12 -0
  532. package/dist/tool/sandbox.d.ts.map +1 -0
  533. package/dist/tool/sandbox.js +72 -0
  534. package/dist/tool/sandbox.js.map +1 -0
  535. package/dist/tool/search-tools.d.ts +6 -0
  536. package/dist/tool/search-tools.d.ts.map +1 -0
  537. package/dist/tool/search-tools.js +118 -0
  538. package/dist/tool/search-tools.js.map +1 -0
  539. package/dist/tool/shell-tool.d.ts +19 -0
  540. package/dist/tool/shell-tool.d.ts.map +1 -0
  541. package/dist/tool/shell-tool.js +139 -0
  542. package/dist/tool/shell-tool.js.map +1 -0
  543. package/dist/tool/todo-tool.d.ts +2 -0
  544. package/dist/tool/todo-tool.d.ts.map +1 -0
  545. package/dist/tool/todo-tool.js +121 -0
  546. package/dist/tool/todo-tool.js.map +1 -0
  547. package/dist/tool/tool-registry-types.d.ts +14 -0
  548. package/dist/tool/tool-registry-types.d.ts.map +1 -0
  549. package/dist/tool/tool-registry-types.js +2 -0
  550. package/dist/tool/tool-registry-types.js.map +1 -0
  551. package/dist/tool/validate.d.ts +9 -0
  552. package/dist/tool/validate.d.ts.map +1 -0
  553. package/dist/tool/validate.js +26 -0
  554. package/dist/tool/validate.js.map +1 -0
  555. package/dist/tool/web-search-tool.d.ts +24 -0
  556. package/dist/tool/web-search-tool.d.ts.map +1 -0
  557. package/dist/tool/web-search-tool.js +66 -0
  558. package/dist/tool/web-search-tool.js.map +1 -0
  559. package/dist/tool/web-tools.d.ts +10 -0
  560. package/dist/tool/web-tools.d.ts.map +1 -0
  561. package/dist/tool/web-tools.js +61 -0
  562. package/dist/tool/web-tools.js.map +1 -0
  563. package/dist/tracer.d.ts +21 -0
  564. package/dist/tracer.d.ts.map +1 -0
  565. package/dist/tracer.js +62 -0
  566. package/dist/tracer.js.map +1 -0
  567. package/dist/workspace.d.ts +33 -0
  568. package/dist/workspace.d.ts.map +1 -0
  569. package/dist/workspace.js +135 -0
  570. package/dist/workspace.js.map +1 -0
  571. package/dist/yaml-frontmatter.d.ts +5 -0
  572. package/dist/yaml-frontmatter.d.ts.map +1 -0
  573. package/dist/yaml-frontmatter.js +58 -0
  574. package/dist/yaml-frontmatter.js.map +1 -0
  575. package/package.json +108 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Nguyen Thanh Vinh
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # @vnt/agent-core
2
+
3
+ Core agent engine for VNT Agent — kernel, tools, sessions, plugins, permissions, and knowledge.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ # npm
9
+ npm install @vnt/agent-core
10
+
11
+ # pnpm (monorepo)
12
+ pnpm add @vnt/agent-core
13
+ ```
14
+
15
+ ## Quick Start
16
+
17
+ ```typescript
18
+ import { AgentKernel, InMemoryToolRegistry, InMemorySessionState } from '@vnt/agent-core';
19
+
20
+ const kernel = new AgentKernel({
21
+ modelProvider: myProvider,
22
+ toolRegistry: new InMemoryToolRegistry(),
23
+ sessionState: new InMemorySessionState(),
24
+ });
25
+
26
+ const handle = await kernel.startRun({ prompt: 'Refactor this function' });
27
+ ```
28
+
29
+ ## API Reference
30
+
31
+ | Export | Type | Description |
32
+ |--------|------|-------------|
33
+ | `AgentKernel` | Class | Run loop orchestrator with circuit breaker |
34
+ | `ModelCaller` | Class | Model invocation with streaming |
35
+ | `PermissionGate` | Class | 4-phase permission evaluation |
36
+ | `ToolRegistry`, `InMemoryToolRegistry` | Class | Tool registration and lookup |
37
+ | `ToolRuntime` | Class | Tool execution with sandbox and hooks |
38
+ | `ToolSaga` | Class | Transactional tool rollback support |
39
+ | `SessionRunCoordinator` | Class | Session-aware run lifecycle management |
40
+ | `DefaultPluginManager` | Class | Plugin activation and lifecycle |
41
+ | `InMemoryEventBus` | Class | Typed pub/sub event bus |
42
+ | `createReadFileTool`, `createShellTool`, ... | Function | 36 built-in tool factories |
43
+ | `defineTool` | Function | Define custom tools with Zod schemas |
44
+ | `LearningEngine`, `ContextCompressor` | Class | Knowledge and memory management |
45
+ | `WorkspaceManager` | Class | Multi-workspace support |
46
+
47
+ ## Subpath Imports
48
+
49
+ ```typescript
50
+ import { AgentKernel } from '@vnt/agent-core'; // main
51
+ import { defineTool } from '@vnt/agent-core/tool/define'; // deep import
52
+ import { EventBus } from '@vnt/agent-core/event-bus'; // deep import
53
+ ```
54
+
55
+ ## License
56
+
57
+ MIT
@@ -0,0 +1,11 @@
1
+ import type { AgentConfig, SkillSource } from "@vinhnt-sdk/schema";
2
+ export interface AgentDefinition {
3
+ readonly config: AgentConfig;
4
+ readonly source: SkillSource;
5
+ readonly raw: string;
6
+ }
7
+ export interface AgentDefParser {
8
+ parse(raw: string, source: SkillSource): AgentDefinition;
9
+ parseFile(filePath: string, source: SkillSource): Promise<AgentDefinition>;
10
+ }
11
+ //# sourceMappingURL=agent-def.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-def.d.ts","sourceRoot":"","sources":["../../src/agent/agent-def.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEnE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,eAAe,CAAC;IACzD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CAC5E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=agent-def.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-def.js","sourceRoot":"","sources":["../../src/agent/agent-def.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import type { AgentId, AgentConfig, AgentProfile, AgentCapabilities, AgentPermissions } from "@vinhnt-sdk/schema";
2
+ export interface CreateAgentParams {
3
+ id?: AgentId;
4
+ profile: AgentProfile;
5
+ capabilities?: AgentCapabilities;
6
+ permissions?: AgentPermissions;
7
+ systemPrompt?: string;
8
+ temperature?: number;
9
+ }
10
+ export interface SubAgentParams {
11
+ id?: AgentId;
12
+ profile: Pick<AgentProfile, "name" | "description">;
13
+ capabilities?: AgentCapabilities;
14
+ permissions?: AgentPermissions;
15
+ systemPrompt?: string;
16
+ temperature?: number;
17
+ }
18
+ export declare function createAgent(params: CreateAgentParams): AgentConfig;
19
+ export declare function validateAgentConfig(config: AgentConfig): string[];
20
+ export declare function createSubAgent(params: SubAgentParams, parent: AgentConfig): AgentConfig;
21
+ //# sourceMappingURL=agent-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-factory.d.ts","sourceRoot":"","sources":["../../src/agent/agent-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAgB,MAAM,oBAAoB,CAAC;AAIhI,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,YAAY,CAAC;IACtB,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC;IACpD,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAgBlE;AAkDD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAuBjE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,GAAG,WAAW,CAsBvF"}
@@ -0,0 +1,119 @@
1
+ import { mergeRulesets, normalizePermissions } from "../permission/checker.js";
2
+ import { DEFAULT_MAX_STEPS } from "../kernel/kernel-utils.js";
3
+ function generateId() {
4
+ return `agent_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
5
+ }
6
+ export function createAgent(params) {
7
+ const { id, profile, capabilities, permissions, systemPrompt, temperature } = params;
8
+ if (!profile.name)
9
+ throw new Error("Agent name is required");
10
+ if (!profile.description)
11
+ throw new Error("Agent description is required");
12
+ return {
13
+ id: id ?? generateId(),
14
+ profile,
15
+ capabilities: {
16
+ streaming: true,
17
+ thinking: false,
18
+ ...capabilities,
19
+ },
20
+ permissions: { mode: "primary", ...permissions },
21
+ ...(systemPrompt !== undefined ? { systemPrompt } : {}),
22
+ ...(temperature !== undefined ? { temperature } : {}),
23
+ };
24
+ }
25
+ function buildRuleset(parent, child) {
26
+ return { ...mergeRulesets(normalizePermissions(child), normalizePermissions(parent.permissions)) };
27
+ }
28
+ function buildPermissions(parent, child) {
29
+ if (!parent.permissions && !child)
30
+ return undefined;
31
+ // Use ruleset-based inheritance when available
32
+ if (parent.permissions?.ruleset || child?.ruleset) {
33
+ const merged = buildRuleset(parent, child);
34
+ const perms = {
35
+ mode: child?.mode ?? "subagent",
36
+ };
37
+ if (merged)
38
+ perms.ruleset = merged;
39
+ return perms;
40
+ }
41
+ // Legacy field-based inheritance (backwards compat)
42
+ const allowedTools = child?.allowedTools ?? parent.permissions?.allowedTools;
43
+ const deniedTools = [
44
+ ...(parent.permissions?.deniedTools ?? []),
45
+ ...(child?.deniedTools ?? []),
46
+ ];
47
+ const allowedRisks = child?.allowedRisks ?? parent.permissions?.allowedRisks;
48
+ const perms = {
49
+ mode: child?.mode ?? "subagent",
50
+ };
51
+ if (allowedTools)
52
+ perms.allowedTools = allowedTools;
53
+ if (deniedTools.length > 0)
54
+ perms.deniedTools = deniedTools;
55
+ if (allowedRisks)
56
+ perms.allowedRisks = allowedRisks;
57
+ const parentMaxSteps = parent.permissions?.maxSteps ?? DEFAULT_MAX_STEPS;
58
+ const childMaxSteps = child?.maxSteps;
59
+ if (childMaxSteps !== undefined || parent.permissions?.maxSteps !== undefined) {
60
+ perms.maxSteps = Math.min(childMaxSteps ?? parentMaxSteps, parentMaxSteps);
61
+ }
62
+ const DEFAULT_MAX_TOKENS = 100000;
63
+ const parentMaxTokens = parent.permissions?.maxTokens ?? DEFAULT_MAX_TOKENS;
64
+ const childMaxTokens = child?.maxTokens;
65
+ if (childMaxTokens !== undefined || parent.permissions?.maxTokens !== undefined) {
66
+ perms.maxTokens = Math.min(childMaxTokens ?? parentMaxTokens, parentMaxTokens);
67
+ }
68
+ return Object.keys(perms).length > 0 ? perms : undefined;
69
+ }
70
+ export function validateAgentConfig(config) {
71
+ const errors = [];
72
+ if (!config.id)
73
+ errors.push("Agent id is required");
74
+ if (!config.profile?.name)
75
+ errors.push("Agent profile.name is required");
76
+ if (!config.profile?.description)
77
+ errors.push("Agent profile.description is required");
78
+ const mode = config.permissions?.mode;
79
+ if (mode && !["primary", "subagent", "all"].includes(mode)) {
80
+ errors.push(`Invalid mode: ${mode}. Expected primary, subagent, or all`);
81
+ }
82
+ const rules = config.permissions?.ruleset?.rules;
83
+ if (rules) {
84
+ for (let i = 0; i < rules.length; i++) {
85
+ const r = rules[i];
86
+ if (!r.effect || !["allow", "deny"].includes(r.effect)) {
87
+ errors.push(`Rule[${i}]: effect must be 'allow' or 'deny'`);
88
+ }
89
+ if (!r.target)
90
+ errors.push(`Rule[${i}]: target is required`);
91
+ }
92
+ }
93
+ return errors;
94
+ }
95
+ export function createSubAgent(params, parent) {
96
+ const { id, profile, capabilities, permissions, systemPrompt, temperature } = params;
97
+ if (!profile.name)
98
+ throw new Error("Sub-agent name is required");
99
+ if (!profile.description)
100
+ throw new Error("Sub-agent description is required");
101
+ return {
102
+ id: id ?? generateId(),
103
+ profile: {
104
+ name: profile.name,
105
+ description: profile.description,
106
+ ...(parent.profile.version ? { version: parent.profile.version } : {}),
107
+ ...(parent.profile.author ? { author: parent.profile.author } : {}),
108
+ },
109
+ capabilities: {
110
+ streaming: parent.capabilities.streaming ?? true,
111
+ thinking: parent.capabilities.thinking ?? false,
112
+ ...capabilities,
113
+ },
114
+ ...(buildPermissions(parent, permissions) ? { permissions: buildPermissions(parent, permissions) } : {}),
115
+ ...(systemPrompt !== undefined ? { systemPrompt } : {}),
116
+ ...(temperature !== undefined ? { temperature } : {}),
117
+ };
118
+ }
119
+ //# sourceMappingURL=agent-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-factory.js","sourceRoot":"","sources":["../../src/agent/agent-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { AgentDefinition, AgentDefParser } from "../agent/agent-def.js";
2
+ import type { SkillSource } from "@vinhnt-sdk/schema";
3
+ /**
4
+ * AgentFileLoader — Discovers and loads agents from .vnt/agents/ directories.
5
+ *
6
+ * Supports multiple discovery locations:
7
+ * 1. Workspace-local: .vnt/agents/<name>.md
8
+ * 2. Global: ~/.vnt/agents/<name>.md
9
+ * 3. Claude-compatible: .claude/agents/<name>.md
10
+ * 4. Agents-compatible: .agents/agents/<name>.md
11
+ */
12
+ export declare class AgentFileLoader {
13
+ private readonly parser;
14
+ constructor(parser?: AgentDefParser);
15
+ /**
16
+ * Load agents from a single directory.
17
+ */
18
+ loadFromDirectory(dir: string, source: SkillSource): Promise<AgentDefinition[]>;
19
+ /**
20
+ * Discover agents from all conventional locations.
21
+ *
22
+ * Discovery order (workspace overrides global):
23
+ * 1. Global: ~/.vnt/agents/
24
+ * 2. Global Claude: ~/.claude/agents/
25
+ * 3. Global Agents: ~/.agents/agents/
26
+ * 4. Workspace: .vnt/agents/
27
+ * 5. Workspace Claude: .claude/agents/
28
+ * 6. Workspace Agents: .agents/agents/
29
+ */
30
+ discover(workspaceRoot: string): Promise<AgentDefinition[]>;
31
+ }
32
+ /**
33
+ * AgentFileProvider — Integrates discovered agents into the kernel.
34
+ */
35
+ export declare class AgentFileProvider {
36
+ private agents;
37
+ /**
38
+ * Load agents from all conventional locations.
39
+ */
40
+ load(workspaceRoot: string): Promise<void>;
41
+ /**
42
+ * Get all discovered agents.
43
+ */
44
+ getAgents(): readonly AgentDefinition[];
45
+ }
46
+ //# sourceMappingURL=agent-file-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-file-loader.d.ts","sourceRoot":"","sources":["../../src/agent/agent-file-loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,MAAM,CAAC,EAAE,cAAc;IAInC;;OAEG;IACG,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IA0BrF;;;;;;;;;;OAUG;IACG,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAuClE;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAyB;IAEvC;;OAEG;IACG,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhD;;OAEG;IACH,SAAS,IAAI,SAAS,eAAe,EAAE;CAGxC"}
@@ -0,0 +1,111 @@
1
+ import { readdir, readFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { AgentParser } from "../agent/agent-parser.js";
4
+ /**
5
+ * AgentFileLoader — Discovers and loads agents from .vnt/agents/ directories.
6
+ *
7
+ * Supports multiple discovery locations:
8
+ * 1. Workspace-local: .vnt/agents/<name>.md
9
+ * 2. Global: ~/.vnt/agents/<name>.md
10
+ * 3. Claude-compatible: .claude/agents/<name>.md
11
+ * 4. Agents-compatible: .agents/agents/<name>.md
12
+ */
13
+ export class AgentFileLoader {
14
+ parser;
15
+ constructor(parser) {
16
+ this.parser = parser ?? new AgentParser();
17
+ }
18
+ /**
19
+ * Load agents from a single directory.
20
+ */
21
+ async loadFromDirectory(dir, source) {
22
+ const agents = [];
23
+ try {
24
+ const entries = await readdir(dir, { withFileTypes: true });
25
+ for (const entry of entries) {
26
+ if (!entry.isFile())
27
+ continue;
28
+ if (!entry.name.endsWith(".md"))
29
+ continue;
30
+ const filePath = join(dir, entry.name);
31
+ try {
32
+ const raw = await readFile(filePath, "utf-8");
33
+ const agent = this.parser.parse(raw, source);
34
+ agents.push(agent);
35
+ }
36
+ catch (error) {
37
+ console.error(`[AgentFileLoader] Failed to load agent from ${filePath}:`, error);
38
+ }
39
+ }
40
+ }
41
+ catch {
42
+ // Directory doesn't exist, ignore
43
+ }
44
+ return agents;
45
+ }
46
+ /**
47
+ * Discover agents from all conventional locations.
48
+ *
49
+ * Discovery order (workspace overrides global):
50
+ * 1. Global: ~/.vnt/agents/
51
+ * 2. Global Claude: ~/.claude/agents/
52
+ * 3. Global Agents: ~/.agents/agents/
53
+ * 4. Workspace: .vnt/agents/
54
+ * 5. Workspace Claude: .claude/agents/
55
+ * 6. Workspace Agents: .agents/agents/
56
+ */
57
+ async discover(workspaceRoot) {
58
+ const home = process.env.HOME || process.env.USERPROFILE || "";
59
+ const allAgents = [];
60
+ // Global locations
61
+ const globalLocations = [
62
+ { dir: join(home, ".vnt", "agents"), type: "global", priority: 0 },
63
+ { dir: join(home, ".claude", "agents"), type: "global", priority: 0 },
64
+ { dir: join(home, ".agents", "agents"), type: "global", priority: 0 },
65
+ ];
66
+ // Workspace locations
67
+ const workspaceLocations = [
68
+ { dir: join(workspaceRoot, ".vnt", "agents"), type: "project", priority: 10 },
69
+ { dir: join(workspaceRoot, ".claude", "agents"), type: "project", priority: 10 },
70
+ { dir: join(workspaceRoot, ".agents", "agents"), type: "project", priority: 10 },
71
+ ];
72
+ // Load from all locations
73
+ for (const loc of [...globalLocations, ...workspaceLocations]) {
74
+ const agents = await this.loadFromDirectory(loc.dir, {
75
+ type: loc.type,
76
+ dir: loc.dir,
77
+ priority: loc.priority,
78
+ });
79
+ allAgents.push(...agents);
80
+ }
81
+ // Deduplicate by ID (workspace > global)
82
+ const agentMap = new Map();
83
+ for (const agent of allAgents) {
84
+ const existing = agentMap.get(agent.config.id);
85
+ if (!existing || (agent.source?.priority ?? 0) > (existing.source?.priority ?? 0)) {
86
+ agentMap.set(agent.config.id, agent);
87
+ }
88
+ }
89
+ return [...agentMap.values()];
90
+ }
91
+ }
92
+ /**
93
+ * AgentFileProvider — Integrates discovered agents into the kernel.
94
+ */
95
+ export class AgentFileProvider {
96
+ agents = [];
97
+ /**
98
+ * Load agents from all conventional locations.
99
+ */
100
+ async load(workspaceRoot) {
101
+ const loader = new AgentFileLoader();
102
+ this.agents = await loader.discover(workspaceRoot);
103
+ }
104
+ /**
105
+ * Get all discovered agents.
106
+ */
107
+ getAgents() {
108
+ return this.agents;
109
+ }
110
+ }
111
+ //# sourceMappingURL=agent-file-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-file-loader.js","sourceRoot":"","sources":["../../src/agent/agent-file-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { AgentConfig, SkillSource } from "@vinhnt-sdk/schema";
2
+ import type { AgentDefinition, AgentDefParser } from "./agent-def.js";
3
+ export declare class AgentParser implements AgentDefParser {
4
+ parse(raw: string, source: SkillSource): AgentDefinition;
5
+ parseFile(filePath: string, source: SkillSource): Promise<AgentDefinition>;
6
+ private mapPermissions;
7
+ toAgentConfig(def: AgentDefinition): AgentConfig;
8
+ }
9
+ //# sourceMappingURL=agent-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-parser.d.ts","sourceRoot":"","sources":["../../src/agent/agent-parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAW,WAAW,EAAa,WAAW,EAAa,MAAM,oBAAoB,CAAC;AAClG,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAItE,qBAAa,WAAY,YAAW,cAAc;IAChD,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,eAAe;IAgDlD,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAKhF,OAAO,CAAC,cAAc;IAetB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,WAAW;CAGjD"}
@@ -0,0 +1,70 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { validateAgentConfig } from "./agent-factory.js";
3
+ import { parseFrontmatter } from "../yaml-frontmatter.js";
4
+ export class AgentParser {
5
+ parse(raw, source) {
6
+ const { frontmatter, body } = parseFrontmatter(raw);
7
+ const nameRaw = frontmatter.name;
8
+ const id = (typeof nameRaw === "string" ? nameRaw : crypto.randomUUID());
9
+ const mode = (frontmatter.mode ?? "all");
10
+ const model = typeof frontmatter.model === "string" ? frontmatter.model : undefined;
11
+ const hidden = typeof frontmatter.hidden === "boolean" ? frontmatter.hidden : undefined;
12
+ const tools = Array.isArray(frontmatter.tools) ? frontmatter.tools : undefined;
13
+ const maxSteps = typeof frontmatter.maxSteps === "number" ? frontmatter.maxSteps : undefined;
14
+ const temperature = typeof frontmatter.temperature === "number" ? frontmatter.temperature : undefined;
15
+ const perm = frontmatter.permission;
16
+ const rules = perm
17
+ ? this.mapPermissions(perm)
18
+ : undefined;
19
+ const config = {
20
+ id,
21
+ profile: {
22
+ name: typeof frontmatter.name === "string" ? frontmatter.name : "unnamed",
23
+ description: typeof frontmatter.description === "string" ? frontmatter.description : "",
24
+ ...(model !== undefined ? { model } : {}),
25
+ ...(hidden !== undefined ? { hidden } : {}),
26
+ },
27
+ capabilities: {
28
+ ...(tools !== undefined ? { tools } : {}),
29
+ streaming: true,
30
+ thinking: false,
31
+ },
32
+ permissions: {
33
+ mode,
34
+ ...(rules !== undefined || maxSteps !== undefined
35
+ ? { ruleset: { rules: rules ?? [], ...(maxSteps !== undefined ? { maxSteps } : {}) } }
36
+ : {}),
37
+ },
38
+ ...(body ? { systemPrompt: body } : {}),
39
+ ...(temperature !== undefined ? { temperature } : {}),
40
+ };
41
+ const errors = validateAgentConfig(config);
42
+ if (errors.length > 0) {
43
+ throw new Error(`Invalid agent config: ${errors.join("; ")}`);
44
+ }
45
+ return { config, source, raw };
46
+ }
47
+ async parseFile(filePath, source) {
48
+ const content = await readFile(filePath, "utf-8");
49
+ return this.parse(content, source);
50
+ }
51
+ mapPermissions(perm) {
52
+ const rules = [];
53
+ for (const [key, value] of Object.entries(perm)) {
54
+ if (typeof value === "string") {
55
+ rules.push({ effect: value, target: key });
56
+ }
57
+ else if (typeof value === "object" && value !== null) {
58
+ const nested = value;
59
+ for (const [pattern, effect] of Object.entries(nested)) {
60
+ rules.push({ effect: effect, target: `${key}.${pattern}` });
61
+ }
62
+ }
63
+ }
64
+ return rules;
65
+ }
66
+ toAgentConfig(def) {
67
+ return def.config;
68
+ }
69
+ }
70
+ //# sourceMappingURL=agent-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-parser.js","sourceRoot":"","sources":["../../src/agent/agent-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import type { AgentConfig, AgentId, SkillSourceType } from "@vinhnt-sdk/schema";
2
+ export interface AgentRegistry {
3
+ register(config: AgentConfig, parentId?: AgentId): Promise<void>;
4
+ get(id: AgentId): Promise<AgentConfig | null>;
5
+ list(): Promise<readonly AgentConfig[]>;
6
+ findByCapability(key: string, value: unknown): Promise<readonly AgentConfig[]>;
7
+ update(id: AgentId, patch: Partial<AgentConfig>): Promise<AgentConfig | null>;
8
+ unregister(id: AgentId): Promise<void>;
9
+ getChildren(parentId: AgentId): Promise<readonly AgentConfig[]>;
10
+ getParent(childId: AgentId): Promise<AgentConfig | null>;
11
+ getAncestors(childId: AgentId): Promise<readonly AgentConfig[]>;
12
+ }
13
+ export interface SourceDir {
14
+ type: SkillSourceType;
15
+ dir: string;
16
+ priority: number;
17
+ }
18
+ export type AgentSource = {
19
+ type: "inline";
20
+ config: AgentConfig;
21
+ parentId?: AgentId;
22
+ } | {
23
+ type: "file";
24
+ path: string;
25
+ parentId?: AgentId;
26
+ };
27
+ /**
28
+ * In-memory agent store with optional file loading (load/loadMultiple/reload).
29
+ */
30
+ export declare class InMemoryAgentRegistry implements AgentRegistry {
31
+ protected readonly agents: Map<string, AgentConfig>;
32
+ private readonly parentMap;
33
+ private readonly childrenMap;
34
+ private readonly loadedPaths;
35
+ private readonly pathToAgentId;
36
+ register(config: AgentConfig, parentId?: AgentId): Promise<void>;
37
+ get(id: AgentId): Promise<AgentConfig | null>;
38
+ list(): Promise<readonly AgentConfig[]>;
39
+ findByCapability(key: string, value: unknown): Promise<readonly AgentConfig[]>;
40
+ unregister(id: AgentId): Promise<void>;
41
+ update(id: AgentId, patch: Partial<AgentConfig>): Promise<AgentConfig | null>;
42
+ getChildren(parentId: AgentId): Promise<readonly AgentConfig[]>;
43
+ getParent(childId: AgentId): Promise<AgentConfig | null>;
44
+ getAncestors(childId: AgentId): Promise<readonly AgentConfig[]>;
45
+ load(source: AgentSource): Promise<AgentConfig>;
46
+ loadMultiple(sources: AgentSource[]): Promise<AgentConfig[]>;
47
+ reload(path: string): Promise<AgentConfig>;
48
+ }
49
+ //# sourceMappingURL=agent-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-registry.d.ts","sourceRoot":"","sources":["../../src/agent/agent-registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGhF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC9C,IAAI,IAAI,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IACxC,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAC/E,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC9E,UAAU,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;IAChE,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACzD,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,eAAe,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG;IACF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,qBAAa,qBAAsB,YAAW,aAAa;IACzD,SAAS,CAAC,QAAQ,CAAC,MAAM,2BAAkC;IAC3D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAEtD,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAWhE,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAI7C,IAAI,IAAI,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC;IAIvC,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC;IAO9E,UAAU,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBtC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAQ7E,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC;IAK/D,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAMxD,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,WAAW,EAAE,CAAC;IAgB/D,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAuB/C,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAQ5D,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAUjD"}