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,186 @@
1
+ {% extends "base.html" %}
2
+
3
+ {% block title %}{{ section.title }}{% endblock %}
4
+
5
+ {% set mode = config.extra.mode | default(value="site") %}
6
+
7
+ {% block sidebar %}
8
+ {% if mode == "docs" %}
9
+ {% include "partials/sidebar.html" %}
10
+ {% endif %}
11
+ {% endblock %}
12
+
13
+ {% block content %}
14
+ {% if mode == "site" or mode == "blog" %}
15
+ {# raskell.io style articles listing #}
16
+ <header>
17
+ <div class="container">
18
+ <h1>{{ section.title }}</h1>
19
+ {% if section.extra.subtitle %}
20
+ <p class="subtitle">{{ section.extra.subtitle }}</p>
21
+ {% endif %}
22
+ </div>
23
+ </header>
24
+
25
+ <section>
26
+ <div class="container">
27
+ <div class="search-container">
28
+ <input
29
+ id="search-query"
30
+ type="search"
31
+ placeholder="Search articles..."
32
+ autocomplete="off"
33
+ />
34
+ <div class="search-shortcuts">
35
+ <kbd>/</kbd>
36
+ <kbd>⌘K</kbd>
37
+ </div>
38
+ </div>
39
+
40
+ <section id="articles-list"></section>
41
+ </div>
42
+ </section>
43
+
44
+ <script>
45
+ // Render articles with yyyy-mm-dd prefix
46
+ const articlesList = document.getElementById('articles-list');
47
+ const articles = [
48
+ {% for page in section.pages %}
49
+ {
50
+ title: {{ page.title | json_encode | safe }},
51
+ permalink: {{ page.permalink | json_encode | safe }},
52
+ date: {{ page.date | json_encode | safe }},
53
+ dateFormatted: {{ page.date | date(format="%Y-%m-%d") | json_encode | safe }},
54
+ description: {{ page.description | default(value="") | json_encode | safe }}
55
+ }{% if not loop.last %},{% endif %}
56
+ {% endfor %}
57
+ ];
58
+
59
+ function renderArticles(articlesToRender) {
60
+ // Sort by date descending
61
+ const sorted = [...articlesToRender].sort((a, b) => new Date(b.date) - new Date(a.date));
62
+
63
+ let html = '<div class="posts">';
64
+ sorted.forEach(article => {
65
+ html += `
66
+ <div class="post" data-title="${article.title.toLowerCase()}" data-date="${article.dateFormatted}" data-description="${article.description.toLowerCase()}">
67
+ <a href="${article.permalink}">
68
+ <div class="post-row">
69
+ <time>${article.dateFormatted}</time>
70
+ <h3>${article.title}</h3>
71
+ </div>
72
+ </a>
73
+ </div>
74
+ `;
75
+ });
76
+ html += '</div>';
77
+
78
+ articlesList.innerHTML = html;
79
+ }
80
+
81
+ renderArticles(articles);
82
+ </script>
83
+
84
+ <script>
85
+ const searchInput = document.getElementById("search-query");
86
+
87
+ // Simple search filtering
88
+ searchInput.addEventListener("input", function () {
89
+ const query = this.value.trim().toLowerCase();
90
+ const posts = articlesList.querySelectorAll(".post");
91
+
92
+ if (query.length === 0) {
93
+ // Show all posts
94
+ posts.forEach((post) => (post.style.display = ""));
95
+ return;
96
+ }
97
+
98
+ // Filter posts by title, date, or description
99
+ posts.forEach((post) => {
100
+ const title = post.getAttribute("data-title") || "";
101
+ const date = post.getAttribute("data-date") || "";
102
+ const description = post.getAttribute("data-description") || "";
103
+
104
+ const searchText = `${title} ${date} ${description}`;
105
+
106
+ if (searchText.includes(query)) {
107
+ post.style.display = "";
108
+ } else {
109
+ post.style.display = "none";
110
+ }
111
+ });
112
+ });
113
+
114
+ // Keyboard shortcuts
115
+ document.addEventListener("keydown", function (e) {
116
+ // Cmd+K or Ctrl+K
117
+ if ((e.ctrlKey || e.metaKey) && e.key === "k") {
118
+ e.preventDefault();
119
+ searchInput.focus();
120
+ searchInput.select();
121
+ }
122
+ // Forward slash (/) when not in an input
123
+ else if (
124
+ e.key === "/" &&
125
+ !["INPUT", "TEXTAREA"].includes(document.activeElement.tagName)
126
+ ) {
127
+ e.preventDefault();
128
+ searchInput.focus();
129
+ }
130
+ // Escape to clear search
131
+ else if (e.key === "Escape" && document.activeElement === searchInput) {
132
+ searchInput.value = "";
133
+ searchInput.dispatchEvent(new Event("input"));
134
+ searchInput.blur();
135
+ }
136
+ });
137
+ </script>
138
+
139
+ {% else %}
140
+ {# Original tanuki section layout for docs/book modes #}
141
+ <article class="section-page">
142
+ <header class="section-page__header">
143
+ <h1>{{ section.title }}</h1>
144
+ {% if section.description %}
145
+ <p class="section-page__description">{{ section.description }}</p>
146
+ {% endif %}
147
+ </header>
148
+
149
+ {% if section.content %}
150
+ <div class="section-page__content">
151
+ {{ section.content | safe }}
152
+ </div>
153
+ {% endif %}
154
+
155
+ {% if section.pages %}
156
+ <ul class="page-list">
157
+ {% for page in section.pages %}
158
+ <li>
159
+ <a href="{{ page.permalink | safe }}">{{ page.title }}</a>
160
+ {% if page.description %}
161
+ <p>{{ page.description }}</p>
162
+ {% endif %}
163
+ </li>
164
+ {% endfor %}
165
+ </ul>
166
+ {% endif %}
167
+
168
+ {# Subsections #}
169
+ {% if section.subsections %}
170
+ {% for subsection_path in section.subsections %}
171
+ {% set subsection = get_section(path=subsection_path) %}
172
+ <section class="subsection">
173
+ <h2>{{ subsection.title }}</h2>
174
+ <ul class="page-list">
175
+ {% for page in subsection.pages %}
176
+ <li>
177
+ <a href="{{ page.permalink | safe }}">{{ page.title }}</a>
178
+ </li>
179
+ {% endfor %}
180
+ </ul>
181
+ </section>
182
+ {% endfor %}
183
+ {% endif %}
184
+ </article>
185
+ {% endif %}
186
+ {% endblock %}
@@ -0,0 +1,18 @@
1
+ {% extends "base.html" %}
2
+
3
+ {% block title %}{{ taxonomy.name | title }}{% endblock %}
4
+
5
+ {% block content %}
6
+ <div class="taxonomy-list">
7
+ <h1 class="taxonomy-list__title">{{ taxonomy.name | title }}</h1>
8
+
9
+ <div class="taxonomy-list__items">
10
+ {% for term in terms %}
11
+ <a href="{{ term.permalink | safe }}" class="taxonomy-item">
12
+ <span class="taxonomy-item__name">{{ term.name }}</span>
13
+ <span class="taxonomy-item__count">{{ term.pages | length }}</span>
14
+ </a>
15
+ {% endfor %}
16
+ </div>
17
+ </div>
18
+ {% endblock %}
@@ -0,0 +1,31 @@
1
+ {% extends "base.html" %}
2
+
3
+ {% block title %}{{ term.name | title }}{% endblock %}
4
+
5
+ {% block content %}
6
+ <div class="taxonomy-single">
7
+ <h1 class="taxonomy-single__title">Posts tagged "{{ term.name }}"</h1>
8
+
9
+ <div class="blog-posts">
10
+ {% for page in term.pages %}
11
+ <article class="blog-card">
12
+ <div class="blog-card__content">
13
+ <h2 class="blog-card__title">
14
+ <a href="{{ page.permalink | safe }}">{{ page.title }}</a>
15
+ </h2>
16
+ {% if page.description %}
17
+ <p class="blog-card__description">{{ page.description }}</p>
18
+ {% endif %}
19
+ <div class="blog-card__meta">
20
+ {% if page.date %}
21
+ <time datetime="{{ page.date }}">{{ page.date | date(format="%B %d, %Y") }}</time>
22
+ {% endif %}
23
+ </div>
24
+ </div>
25
+ </article>
26
+ {% endfor %}
27
+ </div>
28
+ </div>
29
+
30
+ <a href="{{ get_url(path='tags') }}" class="btn btn--secondary">View all tags</a>
31
+ {% endblock %}
@@ -0,0 +1,58 @@
1
+ # Tanuki Theme for Zola (タヌキ)
2
+ # A versatile, Catppuccin-themed Zola theme for documentation, e-books, blogs, and product landing pages
3
+
4
+ name = "tanuki"
5
+ description = "A whimsical, Nintendo-inspired Zola theme with Catppuccin colors, Geist typography, and Lucide icons. Supports documentation (with versioning), e-books, blog/landing pages, and product landing pages. Named after the playful Japanese raccoon dog (タヌキ)."
6
+ license = "MIT"
7
+ homepage = "https://github.com/raskell-io/tanuki"
8
+ repository = "https://github.com/raskell-io/tanuki"
9
+ min_version = "0.19.0"
10
+ demo = "https://tanuki.raskell.io"
11
+
12
+ [author]
13
+ name = "Raffael Schneider"
14
+ homepage = "https://raskell.io"
15
+
16
+ [extra]
17
+ # Theme mode: "docs", "book", "site", or "product"
18
+ mode = "site"
19
+
20
+ [extra.docs]
21
+ # Documentation-specific settings
22
+ versioned = true
23
+ default_version = "latest"
24
+
25
+ [extra.book]
26
+ # E-book-specific settings
27
+ show_landing = true
28
+
29
+ [extra.site]
30
+ # Blog/landing page settings
31
+ show_hero = true
32
+
33
+ [extra.product]
34
+ # Product landing page settings
35
+ # Example configuration for a Raskell product:
36
+ #
37
+ # icon = "assets/product-icon.png"
38
+ # tagline = "A powerful tool for modern developers"
39
+ # footer_description = "Built with care by the Raskell team."
40
+ # license = "Licensed under Apache 2.0."
41
+ # install_command = "curl -fsSL https://get.raskell.io/myproduct | sh"
42
+ # install_alternatives = "Or download from <a href='https://github.com/raskell-io/myproduct/releases'>GitHub Releases</a>"
43
+ # features_title = "Features"
44
+ # features = [
45
+ # { title = "Fast", description = "Optimized for speed and efficiency.", icon = "<svg>...</svg>" },
46
+ # { title = "Secure", description = "Built with security best practices.", icon = "<svg>...</svg>" },
47
+ # { title = "Simple", description = "Easy to install and configure.", icon = "<svg>...</svg>" }
48
+ # ]
49
+ # footer_links = [
50
+ # { title = "Resources", links = [
51
+ # { text = "Documentation", url = "/docs" },
52
+ # { text = "GitHub", url = "https://github.com/raskell-io/myproduct" }
53
+ # ]},
54
+ # { title = "Community", links = [
55
+ # { text = "Issues", url = "https://github.com/raskell-io/myproduct/issues" },
56
+ # { text = "Discussions", url = "https://github.com/raskell-io/myproduct/discussions" }
57
+ # ]}
58
+ # ]
@@ -0,0 +1,55 @@
1
+ use anyhow::Result;
2
+ use enact_core::graph::{Graph, Node};
3
+ use enact_core::kernel::ExecutionKernel;
4
+ use enact_providers::azure::AzureOpenAiProvider;
5
+ use enact_runner::loop_driver::AgentRunner;
6
+ use enact_runner::config::RunnerConfig;
7
+ use std::sync::Arc;
8
+ use dotenv::dotenv;
9
+
10
+ #[tokio::main]
11
+ async fn main() -> Result<()> {
12
+ // 1. Load environment variables from .env
13
+ dotenv().ok();
14
+
15
+ // 2. Setup the LLM Provider (Azure used in this example)
16
+ // Values are pulled from environment variables defined in .env
17
+ let config = enact_config::Config::load()?;
18
+ let provider = AzureOpenAiProvider::from_config(&config)?;
19
+ let provider = Arc::new(provider);
20
+
21
+ // 3. Define a simple agent graph
22
+ let mut graph = Graph::new("hello-agent");
23
+
24
+ // Add a basic node that uses the provider
25
+ let node = Node::new("chat")
26
+ .with_instruction("You are a helpful assistant. Keep your responses concise.")
27
+ .with_llm(provider);
28
+
29
+ graph.add_node(node);
30
+
31
+ // 4. Initialize the Kernel and Runner
32
+ let kernel = ExecutionKernel::new(graph);
33
+ let runner_config = RunnerConfig::default();
34
+
35
+ // Use the default runner (handles event emission, cancellation tokens, etc.)
36
+ let mut runner = AgentRunner::default_new()
37
+ .with_config(runner_config);
38
+
39
+ // 5. Run the agent loop
40
+ println!("Starting Agent Loop...");
41
+ let input = "Hello! Who are you and what can you do?";
42
+
43
+ // In a real scenario, you'd pass a Callable (like the provider) to run
44
+ // For this example, we demonstrate the structural components.
45
+ // Note: This requires valid API configuration to actually execute a network call.
46
+ println!("User: {}", input);
47
+
48
+ // let outcome = runner.run(&*provider, input).await?;
49
+ // println!("Agent: {}", outcome.output().unwrap_or("No response"));
50
+
51
+ println!("\n[Note] This example shows the bare-minimum setup.");
52
+ println!("To run fully, ensure your .env file is populated with valid Azure OpenAI credentials.");
53
+
54
+ Ok(())
55
+ }
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "enya-agent",
3
+ "version": "0.1.0",
4
+ "description": "Enact CLI - Graph-Native AI agents",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/adl-tan-theta/enactai.git"
8
+ },
9
+ "homepage": "https://www.enactai.now",
10
+ "keywords": [
11
+ "ai",
12
+ "agent",
13
+ "cli",
14
+ "llm",
15
+ "graph-native",
16
+ "gpt",
17
+ "claude"
18
+ ],
19
+ "license": "MIT",
20
+ "os": [
21
+ "darwin",
22
+ "linux",
23
+ "win32"
24
+ ],
25
+ "cpu": [
26
+ "x64",
27
+ "arm64"
28
+ ],
29
+ "engines": {
30
+ "node": ">=14"
31
+ },
32
+ "publishConfig": {
33
+ "access": "public",
34
+ "registry": "https://registry.npmjs.org"
35
+ }
36
+ }
@@ -0,0 +1,60 @@
1
+ syntax = "proto3";
2
+
3
+ package enact.config.v1;
4
+
5
+ // For Rust: use tonic-build to generate from this proto
6
+ // option go_package = "github.com/enact/proto/gen/enact/config/v1";
7
+
8
+ // Config service for syncing configuration and retrieving secrets
9
+ service ConfigService {
10
+ // GetSecret retrieves a secret value from keychain
11
+ rpc GetSecret(GetSecretRequest) returns (GetSecretResponse);
12
+
13
+ // SetSecret stores a secret value in keychain
14
+ rpc SetSecret(SetSecretRequest) returns (SetSecretResponse);
15
+
16
+ // GetConfig retrieves the current configuration
17
+ rpc GetConfig(GetConfigRequest) returns (GetConfigResponse);
18
+
19
+ // SyncConfig syncs configuration between client and server
20
+ rpc SyncConfig(SyncConfigRequest) returns (SyncConfigResponse);
21
+ }
22
+
23
+ message GetSecretRequest {
24
+ string key = 1;
25
+ }
26
+
27
+ message GetSecretResponse {
28
+ string value = 1;
29
+ bool found = 2;
30
+ }
31
+
32
+ message SetSecretRequest {
33
+ string key = 1;
34
+ string value = 2;
35
+ }
36
+
37
+ message SetSecretResponse {
38
+ bool success = 1;
39
+ }
40
+
41
+ message GetConfigRequest {
42
+ // Empty for now, could add filters later
43
+ }
44
+
45
+ message GetConfigResponse {
46
+ bytes config_json = 1; // JSON-encoded config
47
+ }
48
+
49
+ message SyncConfigRequest {
50
+ string tenant_id = 1;
51
+ bytes config_json = 2; // JSON-encoded config
52
+ int64 timestamp = 3;
53
+ }
54
+
55
+ message SyncConfigResponse {
56
+ bytes config_json = 1; // JSON-encoded config
57
+ int64 timestamp = 2;
58
+ repeated string conflicts = 3;
59
+ }
60
+
File without changes
@@ -0,0 +1,215 @@
1
+ syntax = "proto3";
2
+
3
+ package enact.runtime.v1;
4
+
5
+ // For Rust: use tonic-build to generate from this proto
6
+ // option go_package = "github.com/enact/proto/gen/enact/runtime/v1";
7
+
8
+ // Runtime service - main entry point for agent execution
9
+ service RuntimeService {
10
+ // Run an agent with input
11
+ rpc RunAgent(RunAgentRequest) returns (RunAgentResponse);
12
+
13
+ // Run an agent with streaming output
14
+ rpc RunAgentStream(RunAgentRequest) returns (stream StreamEvent);
15
+
16
+ // Resume from checkpoint
17
+ rpc ResumeFromCheckpoint(ResumeRequest) returns (stream StreamEvent);
18
+
19
+ // Get agent info
20
+ rpc GetAgentInfo(GetAgentInfoRequest) returns (AgentInfo);
21
+
22
+ // List available agents
23
+ rpc ListAgents(ListAgentsRequest) returns (ListAgentsResponse);
24
+
25
+ // Health check
26
+ rpc HealthCheck(HealthCheckRequest) returns (HealthCheckResponse);
27
+
28
+ // ============================================================
29
+ // Control signals - for abort, pause, resume
30
+ // ============================================================
31
+
32
+ // Cancel a running execution
33
+ rpc Cancel(CancelRequest) returns (CancelResponse);
34
+
35
+ // Pause a running execution
36
+ rpc Pause(PauseRequest) returns (PauseResponse);
37
+
38
+ // Resume a paused execution
39
+ rpc Resume(ResumeExecutionRequest) returns (stream StreamEvent);
40
+
41
+ // Approve a pending plan
42
+ rpc ApprovePlan(ApprovePlanRequest) returns (ApprovePlanResponse);
43
+
44
+ // Reject a pending plan
45
+ rpc RejectPlan(RejectPlanRequest) returns (RejectPlanResponse);
46
+ }
47
+
48
+ // Run agent request
49
+ message RunAgentRequest {
50
+ string agent_name = 1;
51
+ string input = 2;
52
+ map<string, string> context = 3;
53
+ optional string checkpoint_id = 4;
54
+ }
55
+
56
+ // Run agent response
57
+ message RunAgentResponse {
58
+ string run_id = 1;
59
+ string output = 2;
60
+ int32 iterations = 3;
61
+ repeated ToolCallRecord tool_calls = 4;
62
+ }
63
+
64
+ // Tool call record
65
+ message ToolCallRecord {
66
+ string tool_name = 1;
67
+ string arguments = 2; // JSON string
68
+ string result = 3; // JSON string
69
+ }
70
+
71
+ // Stream event
72
+ message StreamEvent {
73
+ string run_id = 1;
74
+ oneof event {
75
+ RunStarted run_started = 2;
76
+ NodeStarted node_started = 3;
77
+ ContentDelta content_delta = 4;
78
+ ToolCallStarted tool_call_started = 5;
79
+ ToolCallCompleted tool_call_completed = 6;
80
+ NodeCompleted node_completed = 7;
81
+ RunCompleted run_completed = 8;
82
+ ErrorEvent error = 9;
83
+ }
84
+ }
85
+
86
+ message RunStarted {}
87
+
88
+ message NodeStarted {
89
+ string node_id = 1;
90
+ string node_name = 2;
91
+ }
92
+
93
+ message ContentDelta {
94
+ string content = 1;
95
+ }
96
+
97
+ message ToolCallStarted {
98
+ string tool_name = 1;
99
+ string arguments = 2; // JSON
100
+ }
101
+
102
+ message ToolCallCompleted {
103
+ string tool_name = 1;
104
+ string result = 2; // JSON
105
+ }
106
+
107
+ message NodeCompleted {
108
+ string node_id = 1;
109
+ string output = 2;
110
+ }
111
+
112
+ message RunCompleted {
113
+ string final_output = 1;
114
+ }
115
+
116
+ message ErrorEvent {
117
+ string message = 1;
118
+ string code = 2;
119
+ }
120
+
121
+ // Resume from checkpoint request
122
+ message ResumeRequest {
123
+ string checkpoint_id = 1;
124
+ optional string new_input = 2;
125
+ }
126
+
127
+ // Agent info
128
+ message AgentInfo {
129
+ string name = 1;
130
+ string description = 2;
131
+ repeated ToolInfo tools = 3;
132
+ }
133
+
134
+ message ToolInfo {
135
+ string name = 1;
136
+ string description = 2;
137
+ string parameters_schema = 3; // JSON schema
138
+ }
139
+
140
+ message GetAgentInfoRequest {
141
+ string agent_name = 1;
142
+ }
143
+
144
+ message ListAgentsRequest {}
145
+
146
+ message ListAgentsResponse {
147
+ repeated AgentInfo agents = 1;
148
+ }
149
+
150
+ message HealthCheckRequest {}
151
+
152
+ message HealthCheckResponse {
153
+ bool healthy = 1;
154
+ string version = 2;
155
+ }
156
+
157
+ // ============================================================
158
+ // Control signal messages
159
+ // ============================================================
160
+
161
+ // Cancel request
162
+ message CancelRequest {
163
+ string run_id = 1;
164
+ optional string reason = 2;
165
+ }
166
+
167
+ // Cancel response
168
+ message CancelResponse {
169
+ bool success = 1;
170
+ string run_id = 2;
171
+ optional string message = 3;
172
+ }
173
+
174
+ // Pause request
175
+ message PauseRequest {
176
+ string run_id = 1;
177
+ }
178
+
179
+ // Pause response
180
+ message PauseResponse {
181
+ bool success = 1;
182
+ string run_id = 2;
183
+ optional string checkpoint_id = 3; // Checkpoint created for resume
184
+ }
185
+
186
+ // Resume execution request (different from ResumeFromCheckpoint)
187
+ message ResumeExecutionRequest {
188
+ string run_id = 1;
189
+ optional string checkpoint_id = 2;
190
+ }
191
+
192
+ // Approve plan request
193
+ message ApprovePlanRequest {
194
+ string run_id = 1;
195
+ reserved 2;
196
+ }
197
+
198
+ // Approve plan response
199
+ message ApprovePlanResponse {
200
+ bool success = 1;
201
+ string run_id = 2;
202
+ }
203
+
204
+ // Reject plan request
205
+ message RejectPlanRequest {
206
+ string run_id = 1;
207
+ optional string reason = 3;
208
+ reserved 2;
209
+ }
210
+
211
+ // Reject plan response
212
+ message RejectPlanResponse {
213
+ bool success = 1;
214
+ string run_id = 2;
215
+ }