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,259 @@
1
+ +++
2
+ title = "Troubleshooting"
3
+ weight = 7
4
+ sort_by = "weight"
5
+ +++
6
+
7
+ # Troubleshooting
8
+
9
+ Common issues and how to fix them.
10
+
11
+ ## Build Issues
12
+
13
+ ### Rust Version Too Old
14
+
15
+ **Error:** "edition 2021 is not supported"
16
+
17
+ **Fix:**
18
+ ```bash
19
+ # Update Rust
20
+ rustup update stable
21
+
22
+ # Verify version (need 1.75+)
23
+ rustc --version
24
+ ```
25
+
26
+ ### Missing Dependencies
27
+
28
+ **Error:** "failed to find OpenSSL"
29
+
30
+ **Fix:**
31
+ ```bash
32
+ # macOS
33
+ brew install openssl
34
+
35
+ # Ubuntu/Debian
36
+ sudo apt-get install libssl-dev pkg-config
37
+
38
+ # Fedora
39
+ sudo dnf install openssl-devel
40
+ ```
41
+
42
+ ### Cargo Build Fails
43
+
44
+ **Error:** "failed to compile"
45
+
46
+ **Fix:**
47
+ ```bash
48
+ # Clean and rebuild
49
+ cargo clean
50
+ cargo build --release
51
+
52
+ # Check for specific crate issues
53
+ cargo build -p enact-core
54
+ ```
55
+
56
+ ## Configuration Issues
57
+
58
+ ### "No API key found"
59
+
60
+ Enact can't find your LLM provider credentials.
61
+
62
+ **Fix:**
63
+ ```bash
64
+ # Check .env file exists and contains the key
65
+ cat .env | grep API_KEY
66
+
67
+ # Verify environment variable is set
68
+ echo $OPENAI_API_KEY
69
+
70
+ # Create or update .env file
71
+ echo "OPENAI_API_KEY=sk-..." >> .env
72
+ ```
73
+
74
+ ### Wrong API Key Format
75
+
76
+ **Error:** "Invalid API key"
77
+
78
+ **Common issues:**
79
+ - Extra whitespace in key
80
+ - Missing prefix (e.g., `sk-` for OpenAI)
81
+ - Wrong key for wrong provider
82
+
83
+ **Fix:**
84
+ ```bash
85
+ # Ensure no trailing whitespace
86
+ OPENAI_API_KEY=sk-abc123 # No spaces after
87
+
88
+ # Verify correct provider
89
+ # OpenAI keys start with: sk-
90
+ # Anthropic keys start with: sk-ant-
91
+ # Azure keys are UUIDs
92
+ ```
93
+
94
+ ## Provider Issues
95
+
96
+ ### Rate Limited
97
+
98
+ **Error:** "rate_limit_exceeded"
99
+
100
+ **Fix:**
101
+ - Wait and retry (usually 60 seconds)
102
+ - Use a different model
103
+ - Check your provider's rate limit documentation
104
+ - Consider using multiple API keys
105
+
106
+ ### Network Errors
107
+
108
+ **Error:** "Connection refused" or "timeout"
109
+
110
+ **Fix:**
111
+ ```bash
112
+ # Check network connectivity
113
+ curl -I https://api.openai.com
114
+
115
+ # Check for proxy issues
116
+ echo $HTTP_PROXY
117
+ echo $HTTPS_PROXY
118
+
119
+ # For Ollama, verify it's running
120
+ curl http://localhost:11434/api/tags
121
+ ```
122
+
123
+ ### Invalid Response
124
+
125
+ **Error:** "Failed to parse response"
126
+
127
+ **Causes:**
128
+ - Provider API changed
129
+ - Network returned error page
130
+ - Proxy intercepting traffic
131
+
132
+ **Fix:**
133
+ - Check provider status page
134
+ - Update to latest Enact version
135
+ - Check for corporate proxy/firewall
136
+
137
+ ## Channel Issues
138
+
139
+ ### Telegram Bot Not Responding
140
+
141
+ **Checklist:**
142
+ 1. Bot token is correct
143
+ 2. User has started the bot (`/start`)
144
+ 3. Application is running
145
+ 4. Check logs for errors
146
+
147
+ **Debug:**
148
+ ```bash
149
+ # Test token directly
150
+ curl "https://api.telegram.org/bot<TOKEN>/getMe"
151
+
152
+ # Should return:
153
+ # {"ok":true,"result":{"id":123...,"is_bot":true,...}}
154
+ ```
155
+
156
+ ### Teams Messages Not Delivered
157
+
158
+ **Checklist:**
159
+ 1. App is registered in Azure AD
160
+ 2. App is published to Teams
161
+ 3. Webhook URL is accessible (if using webhooks)
162
+ 4. SSL certificate is valid
163
+
164
+ ### WhatsApp Webhook Errors
165
+
166
+ **Checklist:**
167
+ 1. Webhook URL uses HTTPS
168
+ 2. Verify token matches configuration
169
+ 3. App is in Live mode (not Development)
170
+ 4. Phone number is registered with Meta Business
171
+
172
+ ## Graph/Agent Issues
173
+
174
+ ### YAML Parse Error
175
+
176
+ **Error:** "Failed to parse YAML"
177
+
178
+ **Fix:**
179
+ ```yaml
180
+ # Check YAML syntax
181
+ # Common issues:
182
+ # - Wrong indentation (use spaces, not tabs)
183
+ # - Missing quotes around special values
184
+ # - Invalid characters
185
+
186
+ # Use a YAML validator
187
+ # https://www.yamllint.com/
188
+ ```
189
+
190
+ ### Node Not Found
191
+
192
+ **Error:** "Node 'xyz' not found"
193
+
194
+ **Fix:**
195
+ - Check node name spelling in edges
196
+ - Ensure node is defined in `nodes:` section
197
+ - Use `END` (uppercase) for termination
198
+
199
+ ### Infinite Loop
200
+
201
+ **Symptoms:** Agent keeps running, never terminates
202
+
203
+ **Fix:**
204
+ - Check edges don't create cycles
205
+ - Ensure at least one path leads to `END`
206
+ - Add `_default: END` edge as fallback
207
+
208
+ ## Performance Issues
209
+
210
+ ### Slow Compilation
211
+
212
+ **Fix:**
213
+ ```bash
214
+ # Use incremental builds
215
+ cargo build # (not --release for dev)
216
+
217
+ # Use sccache for caching
218
+ cargo install sccache
219
+ export RUSTC_WRAPPER=sccache
220
+ ```
221
+
222
+ ### High Memory Usage
223
+
224
+ **Fix:**
225
+ - Reduce graph complexity
226
+ - Use smaller models
227
+ - Process in batches
228
+
229
+ ## Debugging
230
+
231
+ ### Enable Verbose Logging
232
+
233
+ ```bash
234
+ # Set log level
235
+ RUST_LOG=debug cargo run
236
+
237
+ # Or specific modules
238
+ RUST_LOG=enact_core=trace,enact_providers=debug cargo run
239
+ ```
240
+
241
+ ### Check Library Versions
242
+
243
+ ```bash
244
+ # Show dependency tree
245
+ cargo tree -p enact-core
246
+
247
+ # Check for conflicts
248
+ cargo tree -d
249
+ ```
250
+
251
+ ## Getting Help
252
+
253
+ - Check the [documentation](/)
254
+ - Search [GitHub Issues](https://github.com/your-org/enact-agent/issues)
255
+ - Open a new issue with:
256
+ - Rust version (`rustc --version`)
257
+ - OS and version
258
+ - Error message and stack trace
259
+ - Minimal reproduction steps
@@ -0,0 +1,294 @@
1
+ +++
2
+ title = "YAML Schema"
3
+ weight = 4
4
+ sort_by = "weight"
5
+ +++
6
+
7
+ # YAML Agent Schema
8
+
9
+ Enact agents are defined using YAML files. This page documents the complete schema.
10
+
11
+ ## Overview
12
+
13
+ ```yaml
14
+ name: string # Required: Agent name
15
+ version: string # Optional: Version (default: "1.0")
16
+ description: string # Optional: Description
17
+ triggers: [string] # Optional: Trigger types
18
+ inputs: {key: desc} # Optional: Expected inputs
19
+ nodes: {name: node} # Required: Node definitions
20
+ ```
21
+
22
+ ## Complete Example
23
+
24
+ ```yaml
25
+ name: research-assistant
26
+ version: "1.0"
27
+ description: "Researches topics and provides summaries"
28
+
29
+ triggers:
30
+ - manual
31
+ - "cron:0 9 * * *" # Daily at 9am
32
+
33
+ inputs:
34
+ topic: "Research topic"
35
+ depth: "shallow or deep"
36
+
37
+ nodes:
38
+ gather:
39
+ type: llm
40
+ model: gpt-4
41
+ system_prompt: |
42
+ You are a research assistant. Search for information about the topic.
43
+ Be thorough and cite sources.
44
+ tools:
45
+ - web_search
46
+ edges:
47
+ _default: analyze
48
+
49
+ analyze:
50
+ type: llm
51
+ system_prompt: "Analyze the gathered information for key insights."
52
+ edges:
53
+ _default: check_quality
54
+
55
+ check_quality:
56
+ type: condition
57
+ expr: "output.length > 500"
58
+ edges:
59
+ "true": summarize
60
+ "false": gather # Loop back for more research
61
+ _default: summarize
62
+
63
+ summarize:
64
+ type: llm
65
+ system_prompt: "Create a concise executive summary."
66
+ edges:
67
+ _default: END
68
+ ```
69
+
70
+ ## Node Types
71
+
72
+ ### LLM Node
73
+
74
+ Execute an LLM with a system prompt and optional tools.
75
+
76
+ ```yaml
77
+ node_name:
78
+ type: llm
79
+ model: string # Optional: Model name (e.g., "gpt-4")
80
+ system_prompt: string # Required: System prompt
81
+ tools: [string] # Optional: Tool names to enable
82
+ edges:
83
+ _default: next_node # Required: Default next node
84
+ key: target_node # Optional: Conditional edges
85
+ ```
86
+
87
+ **Example:**
88
+
89
+ ```yaml
90
+ analyst:
91
+ type: llm
92
+ model: claude-3-opus
93
+ system_prompt: |
94
+ You are a financial analyst. Analyze the provided data
95
+ and identify trends, risks, and opportunities.
96
+ tools:
97
+ - calculator
98
+ - chart_generator
99
+ edges:
100
+ _default: report
101
+ ```
102
+
103
+ ### Function Node
104
+
105
+ Execute a shell command or script.
106
+
107
+ ```yaml
108
+ node_name:
109
+ type: function
110
+ action: string # Required: Shell command
111
+ edges:
112
+ _default: next_node
113
+ ```
114
+
115
+ **Example:**
116
+
117
+ ```yaml
118
+ run_tests:
119
+ type: function
120
+ action: "npm test -- --coverage"
121
+ edges:
122
+ _default: check_coverage
123
+
124
+ build:
125
+ type: function
126
+ action: "cargo build --release"
127
+ edges:
128
+ _default: deploy
129
+ ```
130
+
131
+ ### Condition Node
132
+
133
+ Branch execution based on an expression.
134
+
135
+ ```yaml
136
+ node_name:
137
+ type: condition
138
+ expr: string # Required: Expression to evaluate
139
+ edges:
140
+ "true": node_if_true # Edge if expression is true
141
+ "false": node_if_false # Edge if expression is false
142
+ _default: fallback_node # Fallback edge
143
+ ```
144
+
145
+ **Example:**
146
+
147
+ ```yaml
148
+ check_errors:
149
+ type: condition
150
+ expr: "input.contains('error')"
151
+ edges:
152
+ "true": handle_error
153
+ "false": continue
154
+ _default: continue
155
+
156
+ check_score:
157
+ type: condition
158
+ expr: "score > 80"
159
+ edges:
160
+ "true": approve
161
+ "false": request_review
162
+ ```
163
+
164
+ ### Graph Node
165
+
166
+ Execute another graph as a sub-workflow.
167
+
168
+ ```yaml
169
+ node_name:
170
+ type: graph
171
+ graph_name: string # Required: Name of sub-graph to execute
172
+ edges:
173
+ _default: next_node
174
+ ```
175
+
176
+ **Example:**
177
+
178
+ ```yaml
179
+ detailed_review:
180
+ type: graph
181
+ graph_name: code-review-detailed
182
+ edges:
183
+ _default: summarize
184
+ ```
185
+
186
+ ## Edge Routing
187
+
188
+ ### Default Edge
189
+
190
+ Every node must have a `_default` edge:
191
+
192
+ ```yaml
193
+ edges:
194
+ _default: next_node # Go to next_node
195
+ _default: END # End execution
196
+ ```
197
+
198
+ ### Conditional Edges
199
+
200
+ Nodes can have multiple edges based on output:
201
+
202
+ ```yaml
203
+ edges:
204
+ "success": celebrate
205
+ "failure": retry
206
+ "error": handle_error
207
+ _default: fallback
208
+ ```
209
+
210
+ ### Special Target: END
211
+
212
+ Use `END` to terminate the graph:
213
+
214
+ ```yaml
215
+ edges:
216
+ _default: END
217
+ ```
218
+
219
+ ## Triggers (🚧 Future)
220
+
221
+ Define how the agent can be invoked:
222
+
223
+ ```yaml
224
+ triggers:
225
+ - manual # Manual invocation
226
+ - "cron:0 9 * * *" # Cron schedule
227
+ - "webhook:/api/trigger" # HTTP webhook
228
+ - "channel:telegram" # Channel message
229
+ ```
230
+
231
+ ## Inputs
232
+
233
+ Define expected inputs with descriptions:
234
+
235
+ ```yaml
236
+ inputs:
237
+ query: "The user's question"
238
+ context: "Optional context"
239
+ max_tokens: "Maximum response length"
240
+ ```
241
+
242
+ ## Tools (🚧 Partial)
243
+
244
+ Available tools for LLM nodes:
245
+
246
+ | Tool | Description | Status |
247
+ |------|-------------|--------|
248
+ | `web_search` | Search the web | 🚧 Future |
249
+ | `file_read` | Read local files | 🚧 Future |
250
+ | `file_write` | Write local files | 🚧 Future |
251
+ | `calculator` | Math operations | 🚧 Future |
252
+ | `code_exec` | Execute code | 🚧 Future |
253
+
254
+ ## Validation
255
+
256
+ The YAML loader validates:
257
+
258
+ - ✅ Required fields present
259
+ - ✅ Node types are valid
260
+ - ✅ Edge targets exist
261
+ - ✅ No cycles in graph (DAG invariant)
262
+ - ✅ Entry point exists
263
+
264
+ **Error examples:**
265
+
266
+ ```
267
+ Error: Edge target 'nonexistent' does not exist
268
+ Error: Graph contains a cycle: A -> B -> C -> A
269
+ Error: No entry point defined
270
+ ```
271
+
272
+ ## Loading Graphs
273
+
274
+ ### Rust API
275
+
276
+ ```rust
277
+ use enact_core::graph::GraphLoader;
278
+
279
+ // From string
280
+ let graph = GraphLoader::load_from_str(yaml_content)?;
281
+
282
+ // Compile for execution
283
+ let compiled = graph.compile()?;
284
+ ```
285
+
286
+ ### 🚧 CLI (Future)
287
+
288
+ ```bash
289
+ # Validate YAML
290
+ enact validate agent.yaml
291
+
292
+ # Run agent
293
+ enact run --agent agent.yaml --input "Hello"
294
+ ```
@@ -0,0 +1,91 @@
1
+ /*
2
+ * theme "github-dark" generated by giallo
3
+ */
4
+
5
+ .z-code {
6
+ color: #E1E4E8;
7
+ background-color: #24292E;
8
+ }
9
+
10
+ .z-hl {
11
+ background-color: #2B3036;
12
+ }
13
+
14
+ .giallo-ln {
15
+ color: #444D56;
16
+ }
17
+
18
+ .z-comment { color: #6A737D; }
19
+ .z-constant { color: #79B8FF; }
20
+ .z-entity { color: #B392F0; }
21
+ .z-keyword { color: #F97583; }
22
+ .z-storage { color: #F97583; }
23
+ .z-string { color: #9ECBFF; }
24
+ .z-support { color: #79B8FF; }
25
+ .z-variable { color: #FFAB70; }
26
+ .z-carriage-return { color: #24292E; background-color: #F97583; font-style: italic;text-decoration: underline; }
27
+ .z-variable { color: #79B8FF; }
28
+ .z-source { color: #9ECBFF; }
29
+ .z-string.z-comment { color: #6A737D; }
30
+ .z-variable.z-language { color: #79B8FF; }
31
+ .z-entity.z-name { color: #B392F0; }
32
+ .z-storage.z-type { color: #F97583; }
33
+ .z-meta.z-property-name { color: #79B8FF; }
34
+ .z-variable.z-other { color: #E1E4E8; }
35
+ .z-invalid.z-broken { color: #FDAEB7; font-style: italic; }
36
+ .z-invalid.z-deprecated { color: #FDAEB7; font-style: italic; }
37
+ .z-invalid.z-illegal { color: #FDAEB7; font-style: italic; }
38
+ .z-invalid.z-unimplemented { color: #FDAEB7; font-style: italic; }
39
+ .z-message.z-error { color: #FDAEB7; }
40
+ .z-source.z-regexp { color: #DBEDFF; }
41
+ .z-string.z-regexp { color: #DBEDFF; }
42
+ .z-support.z-constant { color: #79B8FF; }
43
+ .z-support.z-variable { color: #79B8FF; }
44
+ .z-meta.z-module-reference { color: #79B8FF; }
45
+ .z-markup.z-heading { color: #79B8FF; font-weight: bold; }
46
+ .z-markup.z-quote { color: #85E89D; }
47
+ .z-markup.z-italic { color: #E1E4E8; font-style: italic; }
48
+ .z-markup.z-bold { color: #E1E4E8; font-weight: bold; }
49
+ .z-markup.z-underline { text-decoration: underline; }
50
+ .z-markup.z-strikethrough { text-decoration: line-through; }
51
+ .z-markup.z-deleted { color: #FDAEB7; background-color: #86181D; }
52
+ .z-markup.z-inserted { color: #85E89D; background-color: #144620; }
53
+ .z-markup.z-changed { color: #FFAB70; background-color: #C24E00; }
54
+ .z-markup.z-ignored { color: #2F363D; background-color: #79B8FF; }
55
+ .z-markup.z-untracked { color: #2F363D; background-color: #79B8FF; }
56
+ .z-meta.z-separator { color: #79B8FF; font-weight: bold; }
57
+ .z-meta.z-output { color: #79B8FF; }
58
+ .z-brackethighlighter.z-tag { color: #D1D5DA; }
59
+ .z-brackethighlighter.z-curly { color: #D1D5DA; }
60
+ .z-brackethighlighter.z-round { color: #D1D5DA; }
61
+ .z-brackethighlighter.z-square { color: #D1D5DA; }
62
+ .z-brackethighlighter.z-angle { color: #D1D5DA; }
63
+ .z-brackethighlighter.z-quote { color: #D1D5DA; }
64
+ .z-brackethighlighter.z-unmatched { color: #FDAEB7; }
65
+ .z-entity.z-name { color: #79B8FF; font-weight: bold; }
66
+ .z-punctuation.z-definition.z-comment { color: #6A737D; }
67
+ .z-entity.z-name.z-constant { color: #79B8FF; }
68
+ .z-variable.z-other.z-constant { color: #79B8FF; }
69
+ .z-variable.z-other.z-enummember { color: #79B8FF; }
70
+ .z-variable.z-parameter.z-function { color: #E1E4E8; }
71
+ .z-entity.z-name.z-tag { color: #85E89D; }
72
+ .z-storage.z-modifier.z-package { color: #E1E4E8; }
73
+ .z-storage.z-modifier.z-import { color: #E1E4E8; }
74
+ .z-storage.z-type.z-java { color: #E1E4E8; }
75
+ .z-punctuation.z-definition.z-string { color: #9ECBFF; }
76
+ .z-string.z-regexp.z-character-class { color: #DBEDFF; }
77
+ .z-markup.z-inline.z-raw { color: #79B8FF; }
78
+ .z-punctuation.z-definition.z-deleted { color: #FDAEB7; background-color: #86181D; }
79
+ .z-punctuation.z-definition.z-inserted { color: #85E89D; background-color: #144620; }
80
+ .z-punctuation.z-definition.z-changed { color: #FFAB70; background-color: #C24E00; }
81
+ .z-meta.z-diff.z-range { color: #B392F0; font-weight: bold; }
82
+ .z-meta.z-diff.z-header { color: #79B8FF; }
83
+ .z-string.z-other.z-link { color: #DBEDFF; text-decoration: underline; }
84
+ .z-constant.z-character.z-escape { color: #DBEDFF; }
85
+ .z-source.z-ruby.z-embedded { color: #DBEDFF; }
86
+ .z-string.z-regexp.z-arbitrary-repitition { color: #DBEDFF; }
87
+ .z-constant.z-character.z-escape { color: #85E89D; font-weight: bold; }
88
+ .z-meta.z-diff.z-header.z-from-file { color: #FDAEB7; background-color: #86181D; }
89
+ .z-meta.z-diff.z-header.z-to-file { color: #85E89D; background-color: #144620; }
90
+ .z-constant.z-other.z-reference.z-link { color: #DBEDFF; text-decoration: underline; }
91
+ .z-punctuation.z-definition.z-list.z-begin.z-markdown { color: #FFAB70; }