enya-agent 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 (389) hide show
  1. package/.env.example +20 -0
  2. package/.github/workflows/ci.yml +70 -0
  3. package/.github/workflows/publish.yml +250 -0
  4. package/.gitmodules +3 -0
  5. package/Cargo.lock +3584 -0
  6. package/Cargo.toml +97 -0
  7. package/crates/enact/Cargo.toml +27 -0
  8. package/crates/enact/src/lib.rs +60 -0
  9. package/crates/enact-a2a/Cargo.toml +25 -0
  10. package/crates/enact-a2a/src/lib.rs +411 -0
  11. package/crates/enact-channels/Cargo.toml +64 -0
  12. package/crates/enact-channels/examples/README.md +80 -0
  13. package/crates/enact-channels/examples/channel_bot.rs +169 -0
  14. package/crates/enact-channels/examples/telegram-echo.rs +34 -0
  15. package/crates/enact-channels/examples/whatsapp-echo.rs +142 -0
  16. package/crates/enact-channels/src/config.rs +213 -0
  17. package/crates/enact-channels/src/lib.rs +25 -0
  18. package/crates/enact-channels/src/runtime.rs +237 -0
  19. package/crates/enact-channels/src/security/mod.rs +5 -0
  20. package/crates/enact-channels/src/security/pairing.rs +205 -0
  21. package/crates/enact-channels/src/teams.rs +601 -0
  22. package/crates/enact-channels/src/telegram.rs +2833 -0
  23. package/crates/enact-channels/src/traits.rs +200 -0
  24. package/crates/enact-channels/src/webhook.rs +262 -0
  25. package/crates/enact-channels/src/whatsapp.rs +310 -0
  26. package/crates/enact-cli/Cargo.toml +40 -0
  27. package/crates/enact-cli/src/commands/doctor.rs +62 -0
  28. package/crates/enact-cli/src/commands/mod.rs +3 -0
  29. package/crates/enact-cli/src/commands/run.rs +69 -0
  30. package/crates/enact-cli/src/commands/serve.rs +81 -0
  31. package/crates/enact-cli/src/config.rs +2 -0
  32. package/crates/enact-cli/src/main.rs +79 -0
  33. package/crates/enact-config/Cargo.toml +36 -0
  34. package/crates/enact-config/ENV_VAR_MAPPING.md +135 -0
  35. package/crates/enact-config/QUICK_REFERENCE.md +92 -0
  36. package/crates/enact-config/README.md +107 -0
  37. package/crates/enact-config/TESTING.md +161 -0
  38. package/crates/enact-config/examples/test-env-vars.rs +100 -0
  39. package/crates/enact-config/src/config.rs +399 -0
  40. package/crates/enact-config/src/encrypted_store.rs +211 -0
  41. package/crates/enact-config/src/lib.rs +298 -0
  42. package/crates/enact-config/src/secrets.rs +149 -0
  43. package/crates/enact-config/src/sync.rs +260 -0
  44. package/crates/enact-config/test-env-vars.sh +34 -0
  45. package/crates/enact-config/tests/README.md +99 -0
  46. package/crates/enact-config/tests/config_integration_test.rs +202 -0
  47. package/crates/enact-config/tests/security_test.rs +140 -0
  48. package/crates/enact-context/Cargo.toml +41 -0
  49. package/crates/enact-context/src/budget.rs +314 -0
  50. package/crates/enact-context/src/calibrator.rs +535 -0
  51. package/crates/enact-context/src/compactor.rs +392 -0
  52. package/crates/enact-context/src/condenser.rs +826 -0
  53. package/crates/enact-context/src/lib.rs +94 -0
  54. package/crates/enact-context/src/segment.rs +238 -0
  55. package/crates/enact-context/src/step_context.rs +645 -0
  56. package/crates/enact-context/src/token_counter.rs +148 -0
  57. package/crates/enact-context/src/window.rs +372 -0
  58. package/crates/enact-core/Cargo.toml +42 -0
  59. package/crates/enact-core/README.md +98 -0
  60. package/crates/enact-core/src/background/executor.rs +524 -0
  61. package/crates/enact-core/src/background/mod.rs +48 -0
  62. package/crates/enact-core/src/background/target_binding.rs +390 -0
  63. package/crates/enact-core/src/background/trigger.rs +511 -0
  64. package/crates/enact-core/src/callable/callable.rs +152 -0
  65. package/crates/enact-core/src/callable/composite.rs +817 -0
  66. package/crates/enact-core/src/callable/graph.rs +104 -0
  67. package/crates/enact-core/src/callable/llm.rs +211 -0
  68. package/crates/enact-core/src/callable/mod.rs +64 -0
  69. package/crates/enact-core/src/callable/registry.rs +206 -0
  70. package/crates/enact-core/src/context/execution_context.rs +757 -0
  71. package/crates/enact-core/src/context/invocation.rs +99 -0
  72. package/crates/enact-core/src/context/mod.rs +50 -0
  73. package/crates/enact-core/src/context/tenant.rs +175 -0
  74. package/crates/enact-core/src/context/trace.rs +127 -0
  75. package/crates/enact-core/src/flow/conditional.rs +293 -0
  76. package/crates/enact-core/src/flow/mod.rs +43 -0
  77. package/crates/enact-core/src/flow/parallel.rs +437 -0
  78. package/crates/enact-core/src/flow/repeat.rs +534 -0
  79. package/crates/enact-core/src/flow/sequential.rs +248 -0
  80. package/crates/enact-core/src/graph/checkpoint.rs +79 -0
  81. package/crates/enact-core/src/graph/checkpoint_store.rs +76 -0
  82. package/crates/enact-core/src/graph/compiled.rs +189 -0
  83. package/crates/enact-core/src/graph/edge.rs +59 -0
  84. package/crates/enact-core/src/graph/graph_schema.rs +218 -0
  85. package/crates/enact-core/src/graph/loader.rs +155 -0
  86. package/crates/enact-core/src/graph/mod.rs +18 -0
  87. package/crates/enact-core/src/graph/node/function.rs +49 -0
  88. package/crates/enact-core/src/graph/node/mod.rs +48 -0
  89. package/crates/enact-core/src/graph/schema.rs +62 -0
  90. package/crates/enact-core/src/inbox/message.rs +405 -0
  91. package/crates/enact-core/src/inbox/mod.rs +31 -0
  92. package/crates/enact-core/src/inbox/store.rs +355 -0
  93. package/crates/enact-core/src/kernel/artifact/filesystem.rs +546 -0
  94. package/crates/enact-core/src/kernel/artifact/metadata.rs +283 -0
  95. package/crates/enact-core/src/kernel/artifact/mod.rs +27 -0
  96. package/crates/enact-core/src/kernel/artifact/store.rs +427 -0
  97. package/crates/enact-core/src/kernel/enforcement.rs +1315 -0
  98. package/crates/enact-core/src/kernel/error.rs +1200 -0
  99. package/crates/enact-core/src/kernel/event.rs +1394 -0
  100. package/crates/enact-core/src/kernel/execution_model.rs +831 -0
  101. package/crates/enact-core/src/kernel/execution_state.rs +189 -0
  102. package/crates/enact-core/src/kernel/execution_strategy.rs +117 -0
  103. package/crates/enact-core/src/kernel/ids.rs +2086 -0
  104. package/crates/enact-core/src/kernel/interrupt.rs +125 -0
  105. package/crates/enact-core/src/kernel/kernel.rs +1283 -0
  106. package/crates/enact-core/src/kernel/mod.rs +205 -0
  107. package/crates/enact-core/src/kernel/persistence/event_store.rs +270 -0
  108. package/crates/enact-core/src/kernel/persistence/message_store.rs +908 -0
  109. package/crates/enact-core/src/kernel/persistence/mod.rs +102 -0
  110. package/crates/enact-core/src/kernel/persistence/state_store.rs +228 -0
  111. package/crates/enact-core/src/kernel/persistence/vector_store.rs +299 -0
  112. package/crates/enact-core/src/kernel/reducer.rs +808 -0
  113. package/crates/enact-core/src/kernel/replay.rs +153 -0
  114. package/crates/enact-core/src/lib.rs +413 -0
  115. package/crates/enact-core/src/memory/episodic.rs +0 -0
  116. package/crates/enact-core/src/memory/mod.rs +6 -0
  117. package/crates/enact-core/src/memory/semantic.rs +0 -0
  118. package/crates/enact-core/src/memory/trait.rs +0 -0
  119. package/crates/enact-core/src/memory/vector_db.rs +0 -0
  120. package/crates/enact-core/src/memory/working.rs +0 -0
  121. package/crates/enact-core/src/policy/execution_policy.rs +292 -0
  122. package/crates/enact-core/src/policy/filters.rs +458 -0
  123. package/crates/enact-core/src/policy/input_processor.rs +407 -0
  124. package/crates/enact-core/src/policy/long_running.rs +134 -0
  125. package/crates/enact-core/src/policy/mod.rs +193 -0
  126. package/crates/enact-core/src/policy/pii_input.rs +274 -0
  127. package/crates/enact-core/src/policy/tenant_policy.rs +453 -0
  128. package/crates/enact-core/src/policy/tool_policy.rs +407 -0
  129. package/crates/enact-core/src/providers/mod.rs +63 -0
  130. package/crates/enact-core/src/providers/trait.rs +292 -0
  131. package/crates/enact-core/src/runner/callbacks.rs +6 -0
  132. package/crates/enact-core/src/runner/execution_runner.rs +476 -0
  133. package/crates/enact-core/src/runner/loop.rs +117 -0
  134. package/crates/enact-core/src/runner/mod.rs +58 -0
  135. package/crates/enact-core/src/runner/protected_runner.rs +280 -0
  136. package/crates/enact-core/src/signal/inmemory.rs +231 -0
  137. package/crates/enact-core/src/signal/mod.rs +108 -0
  138. package/crates/enact-core/src/streaming/event_logger.rs +195 -0
  139. package/crates/enact-core/src/streaming/event_stream.rs +1423 -0
  140. package/crates/enact-core/src/streaming/mod.rs +108 -0
  141. package/crates/enact-core/src/streaming/pause_cancel.rs +0 -0
  142. package/crates/enact-core/src/streaming/protected_emitter.rs +173 -0
  143. package/crates/enact-core/src/streaming/protection/context.rs +136 -0
  144. package/crates/enact-core/src/streaming/protection/encryption.rs +289 -0
  145. package/crates/enact-core/src/streaming/protection/mod.rs +43 -0
  146. package/crates/enact-core/src/streaming/protection/pii_protection.rs +243 -0
  147. package/crates/enact-core/src/streaming/protection/processor.rs +166 -0
  148. package/crates/enact-core/src/streaming/sse.rs +0 -0
  149. package/crates/enact-core/src/telemetry/exporter.rs +0 -0
  150. package/crates/enact-core/src/telemetry/init.rs +0 -0
  151. package/crates/enact-core/src/telemetry/mod.rs +49 -0
  152. package/crates/enact-core/src/telemetry/spans.rs +245 -0
  153. package/crates/enact-core/src/tool/agent_tool.rs +177 -0
  154. package/crates/enact-core/src/tool/browser/mod.rs +0 -0
  155. package/crates/enact-core/src/tool/browser/webdriver.rs +0 -0
  156. package/crates/enact-core/src/tool/cost.rs +247 -0
  157. package/crates/enact-core/src/tool/discovery.rs +0 -0
  158. package/crates/enact-core/src/tool/dispatcher.rs +347 -0
  159. package/crates/enact-core/src/tool/filesystem.rs +231 -0
  160. package/crates/enact-core/src/tool/function.rs +99 -0
  161. package/crates/enact-core/src/tool/git.rs +162 -0
  162. package/crates/enact-core/src/tool/http.rs +214 -0
  163. package/crates/enact-core/src/tool/mcp/client.rs +0 -0
  164. package/crates/enact-core/src/tool/mcp/mod.rs +0 -0
  165. package/crates/enact-core/src/tool/mod.rs +51 -0
  166. package/crates/enact-core/src/tool/reasoning/debugging.rs +0 -0
  167. package/crates/enact-core/src/tool/reasoning/mcts.rs +0 -0
  168. package/crates/enact-core/src/tool/reasoning/mod.rs +0 -0
  169. package/crates/enact-core/src/tool/reasoning/sequential.rs +0 -0
  170. package/crates/enact-core/src/tool/sandbox/dagger.rs +0 -0
  171. package/crates/enact-core/src/tool/sandbox/mod.rs +0 -0
  172. package/crates/enact-core/src/tool/shell.rs +147 -0
  173. package/crates/enact-core/src/tool/trait.rs +33 -0
  174. package/crates/enact-core/src/tool/web_search.rs +277 -0
  175. package/crates/enact-core/src/util/config.rs +0 -0
  176. package/crates/enact-core/src/util/errors.rs +0 -0
  177. package/crates/enact-core/src/util/mod.rs +6 -0
  178. package/crates/enact-core/tests/airgapped_e2e_test.rs +291 -0
  179. package/crates/enact-core/tests/e2e_agentic_loop.rs +119 -0
  180. package/crates/enact-core/tests/e2e_test.rs +259 -0
  181. package/crates/enact-core/tests/graph_test.rs +130 -0
  182. package/crates/enact-core/tests/stream_event_id_validation.rs +435 -0
  183. package/crates/enact-cron/Cargo.toml +28 -0
  184. package/crates/enact-cron/src/lib.rs +44 -0
  185. package/crates/enact-cron/src/schedule.rs +156 -0
  186. package/crates/enact-cron/src/store.rs +589 -0
  187. package/crates/enact-cron/src/types.rs +148 -0
  188. package/crates/enact-gateway/Cargo.toml +31 -0
  189. package/crates/enact-gateway/README.md +30 -0
  190. package/crates/enact-gateway/examples/whatsapp-gateway-runner-mock.rs +59 -0
  191. package/crates/enact-gateway/examples/whatsapp-gateway.rs +42 -0
  192. package/crates/enact-gateway/src/lib.rs +582 -0
  193. package/crates/enact-mcp/Cargo.toml +24 -0
  194. package/crates/enact-mcp/src/lib.rs +178 -0
  195. package/crates/enact-memory/Cargo.toml +25 -0
  196. package/crates/enact-memory/src/backend.rs +20 -0
  197. package/crates/enact-memory/src/chunker.rs +230 -0
  198. package/crates/enact-memory/src/embeddings.rs +221 -0
  199. package/crates/enact-memory/src/lib.rs +67 -0
  200. package/crates/enact-memory/src/markdown.rs +127 -0
  201. package/crates/enact-memory/src/none.rs +61 -0
  202. package/crates/enact-memory/src/sqlite.rs +276 -0
  203. package/crates/enact-memory/src/traits.rs +65 -0
  204. package/crates/enact-memory/src/vector.rs +198 -0
  205. package/crates/enact-oauth/Cargo.toml +27 -0
  206. package/crates/enact-oauth/src/lib.rs +584 -0
  207. package/crates/enact-observability/Cargo.toml +22 -0
  208. package/crates/enact-observability/src/lib.rs +197 -0
  209. package/crates/enact-providers/Cargo.toml +33 -0
  210. package/crates/enact-providers/examples/hello-agent.rs +33 -0
  211. package/crates/enact-providers/src/anthropic.rs +182 -0
  212. package/crates/enact-providers/src/azure.rs +96 -0
  213. package/crates/enact-providers/src/bridge.rs +221 -0
  214. package/crates/enact-providers/src/gemini.rs +227 -0
  215. package/crates/enact-providers/src/http.rs +78 -0
  216. package/crates/enact-providers/src/lib.rs +53 -0
  217. package/crates/enact-providers/src/openai_compatible.rs +167 -0
  218. package/crates/enact-providers/src/openrouter.rs +33 -0
  219. package/crates/enact-runner/Cargo.toml +24 -0
  220. package/crates/enact-runner/README.md +76 -0
  221. package/crates/enact-runner/src/compaction.rs +225 -0
  222. package/crates/enact-runner/src/config.rs +118 -0
  223. package/crates/enact-runner/src/lib.rs +63 -0
  224. package/crates/enact-runner/src/loop_driver.rs +414 -0
  225. package/crates/enact-runner/src/parser.rs +421 -0
  226. package/crates/enact-runner/src/retry.rs +262 -0
  227. package/crates/enact-runner/tests/integration.rs +278 -0
  228. package/crates/enact-security/Cargo.toml +22 -0
  229. package/crates/enact-security/src/audit.rs +375 -0
  230. package/crates/enact-security/src/lib.rs +37 -0
  231. package/crates/enact-security/src/policy.rs +406 -0
  232. package/crates/enact-skills/Cargo.toml +25 -0
  233. package/crates/enact-skills/src/lib.rs +506 -0
  234. package/crates/enact-tools/Cargo.toml +22 -0
  235. package/crates/enact-tools/src/file_read.rs +166 -0
  236. package/crates/enact-tools/src/file_write.rs +216 -0
  237. package/crates/enact-tools/src/git_operations.rs +513 -0
  238. package/crates/enact-tools/src/http_request.rs +417 -0
  239. package/crates/enact-tools/src/lib.rs +104 -0
  240. package/crates/enact-tools/src/security.rs +227 -0
  241. package/crates/enact-tools/src/shell.rs +191 -0
  242. package/crates/enact-tools/src/traits.rs +159 -0
  243. package/docs/Makefile +74 -0
  244. package/docs/config.toml +62 -0
  245. package/docs/content/_index.md +174 -0
  246. package/docs/content/a2a/_index.md +431 -0
  247. package/docs/content/api/_index.md +323 -0
  248. package/docs/content/channels/_index.md +160 -0
  249. package/docs/content/channels/teams.md +205 -0
  250. package/docs/content/channels/telegram.md +182 -0
  251. package/docs/content/channels/webhook.md +423 -0
  252. package/docs/content/channels/whatsapp.md +240 -0
  253. package/docs/content/cli/_index.md +261 -0
  254. package/docs/content/concepts/_index.md +273 -0
  255. package/docs/content/configuration/_index.md +241 -0
  256. package/docs/content/cron/_index.md +248 -0
  257. package/docs/content/developers/_index.md +278 -0
  258. package/docs/content/getting-started/_index.md +180 -0
  259. package/docs/content/installation/_index.md +186 -0
  260. package/docs/content/installation/uninstall.md +101 -0
  261. package/docs/content/installation/updating.md +120 -0
  262. package/docs/content/mcp/_index.md +215 -0
  263. package/docs/content/memory/_index.md +163 -0
  264. package/docs/content/oauth/_index.md +515 -0
  265. package/docs/content/providers/_index.md +206 -0
  266. package/docs/content/roadmap/_index.md +199 -0
  267. package/docs/content/security/_index.md +219 -0
  268. package/docs/content/skills/_index.md +228 -0
  269. package/docs/content/tools/_index.md +485 -0
  270. package/docs/content/troubleshooting/_index.md +259 -0
  271. package/docs/content/yaml-schema/_index.md +294 -0
  272. package/docs/static/giallo-dark.css +91 -0
  273. package/docs/static/giallo-light.css +91 -0
  274. package/docs/themes/tanuki/.github/workflows/deploy.yml +44 -0
  275. package/docs/themes/tanuki/LICENSE +21 -0
  276. package/docs/themes/tanuki/README.md +166 -0
  277. package/docs/themes/tanuki/examples/blog/config.toml +58 -0
  278. package/docs/themes/tanuki/examples/blog/content/_index.md +4 -0
  279. package/docs/themes/tanuki/examples/blog/content/about.md +33 -0
  280. package/docs/themes/tanuki/examples/blog/content/blog/_index.md +7 -0
  281. package/docs/themes/tanuki/examples/blog/content/blog/api-design-best-practices.md +245 -0
  282. package/docs/themes/tanuki/examples/blog/content/blog/building-accessible-websites.md +147 -0
  283. package/docs/themes/tanuki/examples/blog/content/blog/css-grid-vs-flexbox.md +165 -0
  284. package/docs/themes/tanuki/examples/blog/content/blog/customizing-catppuccin-colors.md +137 -0
  285. package/docs/themes/tanuki/examples/blog/content/blog/dark-mode-best-practices.md +82 -0
  286. package/docs/themes/tanuki/examples/blog/content/blog/docker-essentials.md +301 -0
  287. package/docs/themes/tanuki/examples/blog/content/blog/getting-started-with-zola.md +129 -0
  288. package/docs/themes/tanuki/examples/blog/content/blog/git-workflow-for-content.md +112 -0
  289. package/docs/themes/tanuki/examples/blog/content/blog/introduction-to-webassembly.md +183 -0
  290. package/docs/themes/tanuki/examples/blog/content/blog/modern-javascript-features.md +234 -0
  291. package/docs/themes/tanuki/examples/blog/content/blog/testing-strategies.md +311 -0
  292. package/docs/themes/tanuki/examples/blog/content/blog/typography-for-developers.md +104 -0
  293. package/docs/themes/tanuki/examples/blog/content/blog/welcome-to-tanuki.md +67 -0
  294. package/docs/themes/tanuki/examples/blog/content/blog/why-static-sites.md +85 -0
  295. package/docs/themes/tanuki/examples/blog/content/projects.md +64 -0
  296. package/docs/themes/tanuki/examples/book/config.toml +17 -0
  297. package/docs/themes/tanuki/examples/book/content/_index.md +12 -0
  298. package/docs/themes/tanuki/examples/book/content/chapter-1.md +90 -0
  299. package/docs/themes/tanuki/examples/book/content/chapter-2.md +143 -0
  300. package/docs/themes/tanuki/examples/book/content/chapter-3.md +217 -0
  301. package/docs/themes/tanuki/examples/book/content/chapter-4.md +224 -0
  302. package/docs/themes/tanuki/examples/book/content/chapter-5.md +297 -0
  303. package/docs/themes/tanuki/examples/book/content/print.md +6 -0
  304. package/docs/themes/tanuki/examples/docs/config.toml +28 -0
  305. package/docs/themes/tanuki/examples/docs/content/_index.md +20 -0
  306. package/docs/themes/tanuki/examples/docs/content/components.md +156 -0
  307. package/docs/themes/tanuki/examples/docs/content/configuration.md +94 -0
  308. package/docs/themes/tanuki/examples/docs/content/customization.md +202 -0
  309. package/docs/themes/tanuki/examples/docs/content/deployment.md +204 -0
  310. package/docs/themes/tanuki/examples/docs/content/installation.md +59 -0
  311. package/docs/themes/tanuki/examples/docs/content/print.md +6 -0
  312. package/docs/themes/tanuki/examples/docs/static/img/tanuki-icon.avif +0 -0
  313. package/docs/themes/tanuki/examples/index.html +2104 -0
  314. package/docs/themes/tanuki/mise.toml +108 -0
  315. package/docs/themes/tanuki/sass/base/_catppuccin.scss +164 -0
  316. package/docs/themes/tanuki/sass/base/_fonts.scss +64 -0
  317. package/docs/themes/tanuki/sass/base/_reset.scss +152 -0
  318. package/docs/themes/tanuki/sass/base/_typography.scss +523 -0
  319. package/docs/themes/tanuki/sass/components/_buttons.scss +209 -0
  320. package/docs/themes/tanuki/sass/components/_code.scss +457 -0
  321. package/docs/themes/tanuki/sass/components/_landing.scss +633 -0
  322. package/docs/themes/tanuki/sass/components/_layout.scss +294 -0
  323. package/docs/themes/tanuki/sass/components/_navigation.scss +1200 -0
  324. package/docs/themes/tanuki/sass/components/_print.scss +237 -0
  325. package/docs/themes/tanuki/sass/components/_search.scss +224 -0
  326. package/docs/themes/tanuki/sass/components/_sidebar.scss +473 -0
  327. package/docs/themes/tanuki/sass/components/_theme-toggle.scss +186 -0
  328. package/docs/themes/tanuki/sass/modes/_blog.scss +366 -0
  329. package/docs/themes/tanuki/sass/modes/_product.scss +875 -0
  330. package/docs/themes/tanuki/sass/modes/_raskell.scss +1696 -0
  331. package/docs/themes/tanuki/sass/patterns/_buttons.scss +183 -0
  332. package/docs/themes/tanuki/sass/patterns/_cards.scss +144 -0
  333. package/docs/themes/tanuki/sass/patterns/_index.scss +9 -0
  334. package/docs/themes/tanuki/sass/patterns/_lists.scss +259 -0
  335. package/docs/themes/tanuki/sass/patterns/_sections.scss +243 -0
  336. package/docs/themes/tanuki/sass/style.scss +47 -0
  337. package/docs/themes/tanuki/sass/tokens/_colors.scss +139 -0
  338. package/docs/themes/tanuki/sass/tokens/_spacing.scss +100 -0
  339. package/docs/themes/tanuki/sass/tokens/_typography.scss +186 -0
  340. package/docs/themes/tanuki/screenshot.png +0 -0
  341. package/docs/themes/tanuki/sentinel.kdl +59 -0
  342. package/docs/themes/tanuki/static/elasticlunr.min.js +10 -0
  343. package/docs/themes/tanuki/static/fonts/GEIST-LICENSE.txt +92 -0
  344. package/docs/themes/tanuki/static/fonts/Geist-Variable.woff2 +0 -0
  345. package/docs/themes/tanuki/static/fonts/GeistMono-Variable.woff2 +0 -0
  346. package/docs/themes/tanuki/static/img/tanuki-icon.avif +0 -0
  347. package/docs/themes/tanuki/static/img/tanuki-icon.png +0 -0
  348. package/docs/themes/tanuki/static/js/anchors.js +18 -0
  349. package/docs/themes/tanuki/static/js/app.js +274 -0
  350. package/docs/themes/tanuki/static/js/code.js +394 -0
  351. package/docs/themes/tanuki/static/js/navigation.js +778 -0
  352. package/docs/themes/tanuki/static/js/scroll-to-top.js +33 -0
  353. package/docs/themes/tanuki/static/js/search-raskell.js +240 -0
  354. package/docs/themes/tanuki/static/js/search.js +215 -0
  355. package/docs/themes/tanuki/static/js/theme.js +169 -0
  356. package/docs/themes/tanuki/static/syntax-dark.css +151 -0
  357. package/docs/themes/tanuki/static/syntax-light.css +151 -0
  358. package/docs/themes/tanuki/static/wasm/sentinel_playground_wasm.js +486 -0
  359. package/docs/themes/tanuki/static/wasm/sentinel_playground_wasm_bg.wasm +0 -0
  360. package/docs/themes/tanuki/templates/404.html +52 -0
  361. package/docs/themes/tanuki/templates/base.html +428 -0
  362. package/docs/themes/tanuki/templates/blog.html +66 -0
  363. package/docs/themes/tanuki/templates/home.html +108 -0
  364. package/docs/themes/tanuki/templates/index.html +178 -0
  365. package/docs/themes/tanuki/templates/landing.html +168 -0
  366. package/docs/themes/tanuki/templates/macros/nav.html +128 -0
  367. package/docs/themes/tanuki/templates/macros/posts.html +101 -0
  368. package/docs/themes/tanuki/templates/macros/ui.html +159 -0
  369. package/docs/themes/tanuki/templates/page.html +135 -0
  370. package/docs/themes/tanuki/templates/partials/footer.html +38 -0
  371. package/docs/themes/tanuki/templates/partials/header.html +366 -0
  372. package/docs/themes/tanuki/templates/partials/nav-buttons.html +55 -0
  373. package/docs/themes/tanuki/templates/partials/nav-overlay.html +81 -0
  374. package/docs/themes/tanuki/templates/partials/page-toc-panel.html +43 -0
  375. package/docs/themes/tanuki/templates/partials/search.html +52 -0
  376. package/docs/themes/tanuki/templates/partials/sidebar.html +107 -0
  377. package/docs/themes/tanuki/templates/partials/theme-toggle.html +35 -0
  378. package/docs/themes/tanuki/templates/partials/toc-overlay.html +146 -0
  379. package/docs/themes/tanuki/templates/partials/version-picker.html +38 -0
  380. package/docs/themes/tanuki/templates/print.html +244 -0
  381. package/docs/themes/tanuki/templates/section.html +186 -0
  382. package/docs/themes/tanuki/templates/taxonomy_list.html +18 -0
  383. package/docs/themes/tanuki/templates/taxonomy_single.html +31 -0
  384. package/docs/themes/tanuki/theme.toml +58 -0
  385. package/examples/hello-agent.rs +55 -0
  386. package/package.json +36 -0
  387. package/proto/config.proto +60 -0
  388. package/proto/events.proto +0 -0
  389. package/proto/runtime.proto +215 -0
@@ -0,0 +1,153 @@
1
+ //! Replay - Re-execute from event log
2
+ //!
3
+ //! Replay enables:
4
+ //! - Debugging: re-run an execution to understand what happened
5
+ //! - Testing: verify determinism by replaying
6
+ //! - Recovery: resume from a checkpoint
7
+ //!
8
+ //! Replay requires:
9
+ //! - Matching schema version
10
+ //! - Ordered event log
11
+
12
+ use super::execution_model::Execution;
13
+ use super::reducer::{reduce, ExecutionAction, ReducerError};
14
+ use super::ids::ExecutionId;
15
+
16
+ /// Replay an execution from an action log
17
+ ///
18
+ /// This will recreate the execution state by applying each action
19
+ /// through the reducer, ensuring deterministic reconstruction.
20
+ pub fn replay(
21
+ execution_id: ExecutionId,
22
+ actions: Vec<ExecutionAction>,
23
+ schema_version: Option<&str>,
24
+ ) -> Result<Execution, ReplayError> {
25
+ let mut execution = Execution::with_id(execution_id);
26
+
27
+ // Set schema version for validation
28
+ if let Some(version) = schema_version {
29
+ execution.schema_version = Some(version.to_string());
30
+ }
31
+
32
+ // Apply each action through the reducer
33
+ for (index, action) in actions.into_iter().enumerate() {
34
+ reduce(&mut execution, action).map_err(|e| ReplayError::ReducerError {
35
+ index,
36
+ error: e,
37
+ })?;
38
+ }
39
+
40
+ Ok(execution)
41
+ }
42
+
43
+ /// Replay error
44
+ #[derive(Debug, thiserror::Error)]
45
+ pub enum ReplayError {
46
+ #[error("Reducer error at action {index}: {error}")]
47
+ ReducerError {
48
+ index: usize,
49
+ error: ReducerError,
50
+ },
51
+ #[error("Schema version mismatch: expected {expected}, got {actual}")]
52
+ SchemaVersionMismatch {
53
+ expected: String,
54
+ actual: String,
55
+ },
56
+ }
57
+
58
+ /// Event log for replay
59
+ ///
60
+ /// This is a simple in-memory log. In production, you'd persist this
61
+ /// to a database or event store.
62
+ #[derive(Debug, Default)]
63
+ pub struct EventLog {
64
+ /// Ordered list of actions
65
+ actions: Vec<ExecutionAction>,
66
+ }
67
+
68
+ impl EventLog {
69
+ /// Create a new event log
70
+ pub fn new() -> Self {
71
+ Self::default()
72
+ }
73
+
74
+ /// Append an action to the log
75
+ pub fn append(&mut self, action: ExecutionAction) {
76
+ self.actions.push(action);
77
+ }
78
+
79
+ /// Get all actions
80
+ pub fn actions(&self) -> &[ExecutionAction] {
81
+ &self.actions
82
+ }
83
+
84
+ /// Take all actions (consumes the log)
85
+ pub fn into_actions(self) -> Vec<ExecutionAction> {
86
+ self.actions
87
+ }
88
+
89
+ /// Get action count
90
+ pub fn len(&self) -> usize {
91
+ self.actions.len()
92
+ }
93
+
94
+ /// Check if empty
95
+ pub fn is_empty(&self) -> bool {
96
+ self.actions.is_empty()
97
+ }
98
+ }
99
+
100
+ #[cfg(test)]
101
+ mod tests {
102
+ use super::*;
103
+ use super::super::ids::StepType;
104
+
105
+ #[test]
106
+ fn test_replay_simple_execution() {
107
+ let exec_id = ExecutionId::new();
108
+
109
+ let actions = vec![
110
+ ExecutionAction::Start,
111
+ ExecutionAction::Complete {
112
+ output: Some("done".into()),
113
+ },
114
+ ];
115
+
116
+ let execution = replay(exec_id.clone(), actions, None).unwrap();
117
+
118
+ assert_eq!(execution.id.as_str(), exec_id.as_str());
119
+ assert!(execution.state.is_terminal());
120
+ assert_eq!(execution.output, Some("done".to_string()));
121
+ }
122
+
123
+ #[test]
124
+ fn test_replay_with_steps() {
125
+ let exec_id = ExecutionId::new();
126
+ let step_id = super::super::ids::StepId::new();
127
+
128
+ let actions = vec![
129
+ ExecutionAction::Start,
130
+ ExecutionAction::StepStarted {
131
+ step_id: step_id.clone(),
132
+ parent_step_id: None,
133
+ step_type: StepType::LlmNode,
134
+ name: "test step".into(),
135
+ source: None,
136
+ },
137
+ ExecutionAction::StepCompleted {
138
+ step_id: step_id.clone(),
139
+ output: Some("step output".into()),
140
+ duration_ms: 100,
141
+ },
142
+ ExecutionAction::Complete {
143
+ output: Some("done".into()),
144
+ },
145
+ ];
146
+
147
+ let execution = replay(exec_id, actions, None).unwrap();
148
+
149
+ assert_eq!(execution.steps.len(), 1);
150
+ let step = execution.get_step(&step_id).unwrap();
151
+ assert_eq!(step.output, Some("step output".to_string()));
152
+ }
153
+ }
@@ -0,0 +1,413 @@
1
+ //! enact-core - The core runtime for graph-centric agent execution
2
+ //!
3
+ //! This crate provides the foundational types and runtime for executing
4
+ //! agent graphs with full observability and control.
5
+ //!
6
+ //! ## Architecture
7
+ //!
8
+ //! ```text
9
+ //! ┌─────────────────────────────────────────────────────────────────────┐
10
+ //! │ enact-core │
11
+ //! ├─────────────────────────────────────────────────────────────────────┤
12
+ //! │ kernel/ - ExecutionKernel, state machine, reducer, replay │
13
+ //! │ flow/ - Sequential, parallel, conditional, loop primitives │
14
+ //! │ callable/ - Callable trait, LlmCallable, GraphCallable │
15
+ //! │ policy/ - Execution, tool, tenant policies and guardrails │
16
+ //! │ streaming/ - Events, event log, IDs, SSE streaming │
17
+ //! │ graph/ - StateGraph, CompiledGraph, nodes, edges │
18
+ //! │ telemetry/ - OpenTelemetry integration, spans, traces │
19
+ //! │ providers/ - LLM adapters (Azure, Anthropic, Gemini) │
20
+ //! │ tool/ - Tool trait and implementations │
21
+ //! │ memory/ - Episodic, semantic, working memory (future) │
22
+ //! └─────────────────────────────────────────────────────────────────────┘
23
+ //! ```
24
+ //!
25
+ //! ## Core Concepts
26
+ //!
27
+ //! - **ExecutionId**: One run of a blueprint (Agent/Graph/Workflow)
28
+ //! - **StepId**: A distinct action within that execution
29
+ //! - **ArtifactId**: Data produced by steps
30
+ //! - **RuntimeContext**: The execution context spine
31
+ //! - **TenantContext**: Multi-tenant isolation boundary (REQUIRED)
32
+ //!
33
+ //! ## Getting Started
34
+ //!
35
+ //! Most users should start with:
36
+ //!
37
+ //! ```rust
38
+ //! use enact_core::prelude::*;
39
+ //! ```
40
+ //!
41
+ //! This imports the stable, user-facing API for defining agents, graphs, and executions.
42
+ //! Internal modules remain accessible for advanced use cases.
43
+ //!
44
+ //! @see docs/TECHNICAL/01-EXECUTION-TELEMETRY.md
45
+ //! @see docs/TECHNICAL/02-ENACT-CORE-ARCHITECTURE.md
46
+
47
+ // =============================================================================
48
+ // Core Modules
49
+ // =============================================================================
50
+
51
+ pub mod callable; // Callable trait (Agent abstraction)
52
+ pub mod context; // TenantContext, RuntimeContext, TraceContext
53
+ pub mod flow; // Sequential, parallel, conditional, loop
54
+ pub mod kernel; // ExecutionKernel, state machine, reducer, replay
55
+ pub mod policy; // Execution, tool, tenant policies
56
+
57
+ // =============================================================================
58
+ // Existing Modules
59
+ // =============================================================================
60
+
61
+ pub mod background; // Background execution and triggers (Phase 5)
62
+ pub mod graph;
63
+ pub mod inbox; // Mid-execution guidance (INV-INBOX-*)
64
+ pub mod memory;
65
+ pub mod providers;
66
+ pub mod runner;
67
+ pub mod signal;
68
+ pub mod streaming; // Events, event log, IDs, SSE streaming
69
+ pub mod telemetry; // OpenTelemetry integration
70
+ pub mod tool;
71
+ pub mod util;
72
+
73
+ // =============================================================================
74
+ // Re-exports - Kernel
75
+ // =============================================================================
76
+
77
+ pub use kernel::{
78
+ reduce, replay, EventLog as KernelEventLog, Execution, ExecutionAction, ExecutionKernel,
79
+ ExecutionState, ReducerError, ReplayError, Step, StepState, WaitReason,
80
+ };
81
+
82
+ // =============================================================================
83
+ // Re-exports - Error Taxonomy (feat-02)
84
+ // =============================================================================
85
+
86
+ pub use kernel::{
87
+ // Retry policies
88
+ BackoffStrategy,
89
+ // Error types
90
+ ExecutionError,
91
+ ExecutionErrorCategory,
92
+ // Specific error codes
93
+ LlmErrorCode,
94
+ RetryPolicy,
95
+ ToolErrorCode,
96
+ };
97
+
98
+ // =============================================================================
99
+ // Re-exports - Enforcement & Limits (feat-03)
100
+ // =============================================================================
101
+
102
+ pub use kernel::{
103
+ // Middleware
104
+ EnforcementMiddleware,
105
+ EnforcementPolicy,
106
+ // Enforcement results
107
+ EnforcementResult,
108
+ EnforcementViolation,
109
+ EnforcementWarning,
110
+ // Usage tracking
111
+ ExecutionUsage,
112
+ // Timeout guard
113
+ StepTimeoutGuard,
114
+ UsageSnapshot,
115
+ ViolationType,
116
+ };
117
+
118
+ // =============================================================================
119
+ // Re-exports - Artifact Lifecycle (feat-04)
120
+ // =============================================================================
121
+
122
+ pub use kernel::artifact::{
123
+ // Metadata
124
+ ArtifactMetadata,
125
+ // Store trait and errors
126
+ ArtifactStore,
127
+ ArtifactStoreError,
128
+ ArtifactType,
129
+ CompressionType,
130
+ // Implementations
131
+ FilesystemArtifactStore,
132
+ };
133
+
134
+ // =============================================================================
135
+ // Re-exports - Flow
136
+ // =============================================================================
137
+
138
+ pub use flow::{
139
+ Branch, Condition, ConditionalFlow, FanIn, FanOut, LoopCondition, LoopFlow, ParallelFlow,
140
+ ParallelResult, SequentialFlow,
141
+ };
142
+
143
+ // =============================================================================
144
+ // Re-exports - Callable
145
+ // =============================================================================
146
+
147
+ pub use callable::{
148
+ Callable, CallableRegistry, DynCallable, GraphCallable, LlmCallable,
149
+ // Phase 6: Composite Callables
150
+ CallableDescriptor,
151
+ CallableInvocation,
152
+ CallableInvocationResult,
153
+ CallableInvoker,
154
+ CostTier,
155
+ DiscoveryQuery,
156
+ DiscoveryResult,
157
+ ResourceAllocation,
158
+ ResourceAllocationStrategy,
159
+ ResourceBudget,
160
+ };
161
+
162
+ // =============================================================================
163
+ // Re-exports - Policy
164
+ // =============================================================================
165
+
166
+ pub use policy::{
167
+ ContentFilter,
168
+ ExecutionLimits,
169
+ ExecutionPolicy,
170
+ FeatureFlags,
171
+ FilterAction,
172
+ FilterResult,
173
+ // Input processors (feat-09: Guardrails)
174
+ InputProcessor,
175
+ InputProcessorPipeline,
176
+ InputProcessorResult,
177
+ PiiInputMode,
178
+ PiiInputProcessor,
179
+ PolicyAction,
180
+ PolicyContext,
181
+ PolicyDecision,
182
+ PolicyEvaluator,
183
+ TenantLimits,
184
+ TenantPolicy,
185
+ ToolPermissions,
186
+ ToolPolicy,
187
+ ToolTrustLevel,
188
+ };
189
+
190
+ // =============================================================================
191
+ // Re-exports - Streaming (events, event log, SSE)
192
+ // =============================================================================
193
+
194
+ pub use streaming::{
195
+ ControlAction,
196
+ ControlActor,
197
+ ControlEvent,
198
+ ControlOutcome,
199
+ // Protection layer (feat-09: Guardrails)
200
+ DataDestination,
201
+ DecisionRecord,
202
+ DecisionType,
203
+ Event,
204
+ // Wire format for SSE
205
+ EventEmitter,
206
+ // Event log (persistence)
207
+ EventLog,
208
+ EventLogEntry,
209
+ EventStore,
210
+ EventStream,
211
+ // Domain events
212
+ ExecutionContext,
213
+ ExecutionEvent,
214
+ ExecutionEventType,
215
+ InMemoryEventStore,
216
+ OutputProcessor,
217
+ PiiProtectionProcessor,
218
+ ProcessedEvent,
219
+ ProcessorPipeline,
220
+ // Protected emitter with processor pipeline
221
+ ProtectedEventEmitter,
222
+ ProtectionContext,
223
+ StreamEvent,
224
+ StreamMode,
225
+ };
226
+
227
+ // =============================================================================
228
+ // Re-exports - IDs and State Types (from streaming)
229
+ // =============================================================================
230
+
231
+ pub use streaming::{
232
+ // ID prefix constants
233
+ prefixes,
234
+ // Primary IDs
235
+ ArtifactId,
236
+ ExecutionId,
237
+ GraphId,
238
+ // Message/Thread IDs
239
+ MessageId,
240
+ ThreadId,
241
+ // Backward compatibility aliases
242
+ NodeId,
243
+ // Parent linkage
244
+ ParentLink,
245
+ ParentType,
246
+ RunId,
247
+ StepId,
248
+ // Step/Node types
249
+ StepType,
250
+ TenantId,
251
+ UserId,
252
+ };
253
+
254
+ // =============================================================================
255
+ // Re-exports - MessageStore (feat-05 Persistence)
256
+ // =============================================================================
257
+
258
+ pub use kernel::{
259
+ // Message types
260
+ CostInfo,
261
+ ExecutionStats,
262
+ FinishReason,
263
+ Message,
264
+ MessageMetadata,
265
+ MessagePart,
266
+ MessageRole,
267
+ Thread,
268
+ TokenUsage,
269
+ // Store trait and implementation
270
+ InMemoryMessageStore,
271
+ MessageStore,
272
+ };
273
+
274
+ // =============================================================================
275
+ // Re-exports - Context (TenantContext, RuntimeContext, etc.)
276
+ // =============================================================================
277
+
278
+ pub use context::{
279
+ // Invocation context
280
+ InvocationContext,
281
+ InvocationServices,
282
+ ResourceLimits,
283
+ // Runtime context (the spine)
284
+ RuntimeContext,
285
+ RuntimeContextBuilder,
286
+ SessionContext,
287
+ // Tenant context (REQUIRED for every execution)
288
+ TenantContext,
289
+ // Trace context (OpenTelemetry)
290
+ TraceContext,
291
+ };
292
+
293
+ // =============================================================================
294
+ // Re-exports - Graph & Execution
295
+ // =============================================================================
296
+
297
+ pub use graph::{
298
+ Checkpoint, CheckpointStore, CompiledGraph, FunctionNode, InMemoryCheckpointStore, Node,
299
+ NodeState, StateGraph,
300
+ };
301
+
302
+ // =============================================================================
303
+ // Re-exports - Runner
304
+ // =============================================================================
305
+
306
+ pub use runner::{run_parallel, DefaultRunner, InterruptableRunner, Runner};
307
+
308
+ // =============================================================================
309
+ // Re-exports - Inbox (Mid-Execution Guidance)
310
+ // =============================================================================
311
+
312
+ pub use inbox::{
313
+ // Message types
314
+ A2aMessage,
315
+ ControlAction as InboxControlAction,
316
+ ControlMessage,
317
+ EvidenceImpact,
318
+ EvidenceSource,
319
+ EvidenceUpdate,
320
+ GuidanceMessage,
321
+ GuidancePriority,
322
+ GuidanceSource,
323
+ InboxMessage,
324
+ InboxMessageType,
325
+ // Store
326
+ InboxStore,
327
+ InMemoryInboxStore,
328
+ };
329
+
330
+ // =============================================================================
331
+ // Re-exports - Background (Phase 5: Background Callables)
332
+ // =============================================================================
333
+
334
+ pub use background::{
335
+ // Trigger types
336
+ RetryConfig,
337
+ ThresholdOperator,
338
+ Trigger,
339
+ TriggerAction,
340
+ TriggerCondition,
341
+ TriggerFiredEvent,
342
+ TriggerId,
343
+ TriggerStatus,
344
+ TriggerType,
345
+ // Executor types
346
+ BackgroundExecution,
347
+ BackgroundExecutionConfig,
348
+ BackgroundExecutionMode,
349
+ BackgroundExecutionQueue,
350
+ BackgroundExecutionStatus,
351
+ // Target binding types
352
+ TargetBindingConfig,
353
+ TargetBindingResult,
354
+ TargetBindingTransform,
355
+ TargetBindingType,
356
+ apply_transform,
357
+ };
358
+
359
+ // =============================================================================
360
+ // Re-exports - Providers & Tools
361
+ // =============================================================================
362
+
363
+ // Re-export provider trait and types (implementations are in enact-providers)
364
+ pub use providers::{
365
+ ChatMessage, ChatRequest, ChatResponse, EmbeddingRequest, EmbeddingResponse, ModelCapabilities,
366
+ ModelProvider,
367
+ };
368
+ pub use tool::{FunctionTool, Tool, ToolExecutionContext, ToolExecutionError, ToolExecutor};
369
+
370
+ // =============================================================================
371
+ // Prelude - Stable, user-facing API
372
+ // =============================================================================
373
+
374
+ /// Prelude module - Convenient imports for most users
375
+ ///
376
+ /// This module exports the stable, user-facing API for defining agents, graphs,
377
+ /// and executions. It is intentionally small and opinionated.
378
+ ///
379
+ /// **Important**: The prelude is semver-sensitive and part of the brand promise.
380
+ /// Changes here should be rare and intentional.
381
+ ///
382
+ /// # Usage
383
+ ///
384
+ /// ```rust
385
+ /// use enact_core::prelude::*;
386
+ /// ```
387
+ ///
388
+ /// This imports:
389
+ /// - Core runtime types (`ExecutionKernel`)
390
+ /// - Graph authoring & execution (`StateGraph`, `CompiledGraph`)
391
+ /// - Execution abstractions (`Callable`, `LlmCallable`, `Tool`, `FunctionTool`)
392
+ /// - Execution identity (`ExecutionId`, `StepId`)
393
+ /// - Observability (`EventStream`, `EventLog`)
394
+ pub mod prelude {
395
+ // Core runtime
396
+ pub use crate::kernel::ExecutionKernel;
397
+
398
+ // Graph authoring & execution
399
+ pub use crate::graph::{CompiledGraph, StateGraph};
400
+
401
+ // Execution abstractions
402
+ pub use crate::callable::{Callable, LlmCallable};
403
+ pub use crate::tool::{FunctionTool, Tool};
404
+
405
+ // Execution identity
406
+ pub use crate::kernel::{ExecutionId, StepId};
407
+
408
+ // Error taxonomy (feat-02)
409
+ pub use crate::kernel::{ExecutionError, ExecutionErrorCategory};
410
+
411
+ // Observability
412
+ pub use crate::streaming::{EventLog, EventStream};
413
+ }
File without changes
@@ -0,0 +1,6 @@
1
+ //! Memory abstractions.
2
+ //!
3
+ //! This module will define traits for episodic, semantic, and working
4
+ //! memory used during execution.
5
+
6
+
File without changes
File without changes
File without changes
File without changes