agent-orcha 0.0.7 → 0.0.8

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 (259) hide show
  1. package/README.md +86 -28
  2. package/dist/lib/agents/agent-executor.d.ts.map +1 -1
  3. package/dist/lib/agents/agent-executor.js +23 -7
  4. package/dist/lib/agents/agent-executor.js.map +1 -1
  5. package/dist/lib/agents/react-loop.d.ts.map +1 -1
  6. package/dist/lib/agents/react-loop.js +27 -0
  7. package/dist/lib/agents/react-loop.js.map +1 -1
  8. package/dist/lib/functions/simple-function-wrapper.js +3 -3
  9. package/dist/lib/functions/simple-function-wrapper.js.map +1 -1
  10. package/dist/lib/knowledge/knowledge-store.d.ts +1 -1
  11. package/dist/lib/knowledge/knowledge-store.d.ts.map +1 -1
  12. package/dist/lib/knowledge/knowledge-store.js +25 -4
  13. package/dist/lib/knowledge/knowledge-store.js.map +1 -1
  14. package/dist/lib/knowledge/loaders/file-loaders.d.ts +0 -1
  15. package/dist/lib/knowledge/loaders/file-loaders.d.ts.map +1 -1
  16. package/dist/lib/knowledge/loaders/file-loaders.js +7 -15
  17. package/dist/lib/knowledge/loaders/file-loaders.js.map +1 -1
  18. package/dist/lib/knowledge/sqlite-store.d.ts.map +1 -1
  19. package/dist/lib/knowledge/sqlite-store.js +19 -10
  20. package/dist/lib/knowledge/sqlite-store.js.map +1 -1
  21. package/dist/lib/knowledge/types.d.ts +13 -13
  22. package/dist/lib/llm/index.d.ts +1 -1
  23. package/dist/lib/llm/index.d.ts.map +1 -1
  24. package/dist/lib/llm/index.js +1 -1
  25. package/dist/lib/llm/index.js.map +1 -1
  26. package/dist/lib/llm/llm-config.d.ts +51 -8
  27. package/dist/lib/llm/llm-config.d.ts.map +1 -1
  28. package/dist/lib/llm/llm-config.js +161 -17
  29. package/dist/lib/llm/llm-config.js.map +1 -1
  30. package/dist/lib/llm/llm-factory.d.ts +1 -2
  31. package/dist/lib/llm/llm-factory.d.ts.map +1 -1
  32. package/dist/lib/llm/llm-factory.js +41 -8
  33. package/dist/lib/llm/llm-factory.js.map +1 -1
  34. package/dist/lib/llm/providers/openai-chat-model.d.ts +10 -0
  35. package/dist/lib/llm/providers/openai-chat-model.d.ts.map +1 -1
  36. package/dist/lib/llm/providers/openai-chat-model.js +37 -5
  37. package/dist/lib/llm/providers/openai-chat-model.js.map +1 -1
  38. package/dist/lib/llm/providers/openai-embeddings.d.ts.map +1 -1
  39. package/dist/lib/llm/providers/openai-embeddings.js +41 -10
  40. package/dist/lib/llm/providers/openai-embeddings.js.map +1 -1
  41. package/dist/lib/local-llm/binary-manager.d.ts +66 -0
  42. package/dist/lib/local-llm/binary-manager.d.ts.map +1 -0
  43. package/dist/lib/local-llm/binary-manager.js +441 -0
  44. package/dist/lib/local-llm/binary-manager.js.map +1 -0
  45. package/dist/lib/local-llm/engine-interface.d.ts +47 -0
  46. package/dist/lib/local-llm/engine-interface.d.ts.map +1 -0
  47. package/dist/lib/local-llm/engine-interface.js +2 -0
  48. package/dist/lib/local-llm/engine-interface.js.map +1 -0
  49. package/dist/lib/local-llm/engine-registry.d.ts +20 -0
  50. package/dist/lib/local-llm/engine-registry.d.ts.map +1 -0
  51. package/dist/lib/local-llm/engine-registry.js +56 -0
  52. package/dist/lib/local-llm/engine-registry.js.map +1 -0
  53. package/dist/lib/local-llm/engines/llama-cpp-engine.d.ts +31 -0
  54. package/dist/lib/local-llm/engines/llama-cpp-engine.d.ts.map +1 -0
  55. package/dist/lib/local-llm/engines/llama-cpp-engine.js +164 -0
  56. package/dist/lib/local-llm/engines/llama-cpp-engine.js.map +1 -0
  57. package/dist/lib/local-llm/engines/mlx-serve-engine.d.ts +31 -0
  58. package/dist/lib/local-llm/engines/mlx-serve-engine.d.ts.map +1 -0
  59. package/dist/lib/local-llm/engines/mlx-serve-engine.js +161 -0
  60. package/dist/lib/local-llm/engines/mlx-serve-engine.js.map +1 -0
  61. package/dist/lib/local-llm/gguf-reader.d.ts +20 -0
  62. package/dist/lib/local-llm/gguf-reader.d.ts.map +1 -0
  63. package/dist/lib/local-llm/gguf-reader.js +190 -0
  64. package/dist/lib/local-llm/gguf-reader.js.map +1 -0
  65. package/dist/lib/local-llm/index.d.ts +9 -0
  66. package/dist/lib/local-llm/index.d.ts.map +1 -0
  67. package/dist/lib/local-llm/index.js +6 -0
  68. package/dist/lib/local-llm/index.js.map +1 -0
  69. package/dist/lib/local-llm/llama-server-process.d.ts +42 -0
  70. package/dist/lib/local-llm/llama-server-process.d.ts.map +1 -0
  71. package/dist/lib/local-llm/llama-server-process.js +237 -0
  72. package/dist/lib/local-llm/llama-server-process.js.map +1 -0
  73. package/dist/lib/local-llm/mlx-binary-manager.d.ts +33 -0
  74. package/dist/lib/local-llm/mlx-binary-manager.d.ts.map +1 -0
  75. package/dist/lib/local-llm/mlx-binary-manager.js +211 -0
  76. package/dist/lib/local-llm/mlx-binary-manager.js.map +1 -0
  77. package/dist/lib/local-llm/mlx-server-process.d.ts +26 -0
  78. package/dist/lib/local-llm/mlx-server-process.d.ts.map +1 -0
  79. package/dist/lib/local-llm/mlx-server-process.js +210 -0
  80. package/dist/lib/local-llm/mlx-server-process.js.map +1 -0
  81. package/dist/lib/local-llm/model-manager.d.ts +33 -0
  82. package/dist/lib/local-llm/model-manager.d.ts.map +1 -0
  83. package/dist/lib/local-llm/model-manager.js +591 -0
  84. package/dist/lib/local-llm/model-manager.js.map +1 -0
  85. package/dist/lib/local-llm/types.d.ts +51 -0
  86. package/dist/lib/local-llm/types.d.ts.map +1 -0
  87. package/dist/lib/local-llm/types.js +2 -0
  88. package/dist/lib/local-llm/types.js.map +1 -0
  89. package/dist/lib/logger.d.ts +2 -0
  90. package/dist/lib/logger.d.ts.map +1 -1
  91. package/dist/lib/logger.js +68 -5
  92. package/dist/lib/logger.js.map +1 -1
  93. package/dist/lib/orchestrator.d.ts +9 -0
  94. package/dist/lib/orchestrator.d.ts.map +1 -1
  95. package/dist/lib/orchestrator.js +151 -3
  96. package/dist/lib/orchestrator.js.map +1 -1
  97. package/dist/lib/sandbox/cdp-client.d.ts +2 -1
  98. package/dist/lib/sandbox/cdp-client.d.ts.map +1 -1
  99. package/dist/lib/sandbox/cdp-client.js +33 -7
  100. package/dist/lib/sandbox/cdp-client.js.map +1 -1
  101. package/dist/lib/sandbox/index.d.ts +1 -0
  102. package/dist/lib/sandbox/index.d.ts.map +1 -1
  103. package/dist/lib/sandbox/index.js +1 -0
  104. package/dist/lib/sandbox/index.js.map +1 -1
  105. package/dist/lib/sandbox/page-readiness.d.ts.map +1 -1
  106. package/dist/lib/sandbox/page-readiness.js +33 -0
  107. package/dist/lib/sandbox/page-readiness.js.map +1 -1
  108. package/dist/lib/sandbox/sandbox-browser.d.ts.map +1 -1
  109. package/dist/lib/sandbox/sandbox-browser.js +14 -1
  110. package/dist/lib/sandbox/sandbox-browser.js.map +1 -1
  111. package/dist/lib/sandbox/sandbox-container.d.ts +39 -0
  112. package/dist/lib/sandbox/sandbox-container.d.ts.map +1 -0
  113. package/dist/lib/sandbox/sandbox-container.js +176 -0
  114. package/dist/lib/sandbox/sandbox-container.js.map +1 -0
  115. package/dist/lib/sandbox/sandbox-file.d.ts.map +1 -1
  116. package/dist/lib/sandbox/sandbox-file.js +5 -4
  117. package/dist/lib/sandbox/sandbox-file.js.map +1 -1
  118. package/dist/lib/sandbox/sandbox-shell.d.ts +2 -1
  119. package/dist/lib/sandbox/sandbox-shell.d.ts.map +1 -1
  120. package/dist/lib/sandbox/sandbox-shell.js +42 -24
  121. package/dist/lib/sandbox/sandbox-shell.js.map +1 -1
  122. package/dist/lib/sandbox/sandbox-web.d.ts.map +1 -1
  123. package/dist/lib/sandbox/sandbox-web.js +27 -2
  124. package/dist/lib/sandbox/sandbox-web.js.map +1 -1
  125. package/dist/lib/sandbox/vision-browser.d.ts.map +1 -1
  126. package/dist/lib/sandbox/vision-browser.js +9 -0
  127. package/dist/lib/sandbox/vision-browser.js.map +1 -1
  128. package/dist/lib/sea/app-window.d.ts +7 -0
  129. package/dist/lib/sea/app-window.d.ts.map +1 -0
  130. package/dist/lib/sea/app-window.js +95 -0
  131. package/dist/lib/sea/app-window.js.map +1 -0
  132. package/dist/lib/sea/bootstrap.d.ts +18 -0
  133. package/dist/lib/sea/bootstrap.d.ts.map +1 -0
  134. package/dist/lib/sea/bootstrap.js +103 -0
  135. package/dist/lib/sea/bootstrap.js.map +1 -0
  136. package/dist/lib/sea/sqlite-vec-shim.d.ts +3 -0
  137. package/dist/lib/sea/sqlite-vec-shim.d.ts.map +1 -0
  138. package/dist/lib/sea/sqlite-vec-shim.js +10 -0
  139. package/dist/lib/sea/sqlite-vec-shim.js.map +1 -0
  140. package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.d.ts +1 -2
  141. package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.d.ts.map +1 -1
  142. package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.js +7 -13
  143. package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.js.map +1 -1
  144. package/dist/lib/tools/built-in/knowledge-graph-schema.tool.d.ts.map +1 -1
  145. package/dist/lib/tools/built-in/knowledge-graph-schema.tool.js +2 -4
  146. package/dist/lib/tools/built-in/knowledge-graph-schema.tool.js.map +1 -1
  147. package/dist/lib/tools/built-in/knowledge-search.tool.js +4 -4
  148. package/dist/lib/tools/built-in/knowledge-search.tool.js.map +1 -1
  149. package/dist/lib/tools/built-in/knowledge-sql.tool.d.ts.map +1 -1
  150. package/dist/lib/tools/built-in/knowledge-sql.tool.js +70 -37
  151. package/dist/lib/tools/built-in/knowledge-sql.tool.js.map +1 -1
  152. package/dist/lib/tools/built-in/knowledge-tools-factory.js +2 -2
  153. package/dist/lib/tools/built-in/knowledge-tools-factory.js.map +1 -1
  154. package/dist/lib/tools/built-in/knowledge-traverse.tool.d.ts +1 -2
  155. package/dist/lib/tools/built-in/knowledge-traverse.tool.d.ts.map +1 -1
  156. package/dist/lib/tools/built-in/knowledge-traverse.tool.js +5 -11
  157. package/dist/lib/tools/built-in/knowledge-traverse.tool.js.map +1 -1
  158. package/dist/lib/tools/workspace/workspace-tools.d.ts.map +1 -1
  159. package/dist/lib/tools/workspace/workspace-tools.js +5 -4
  160. package/dist/lib/tools/workspace/workspace-tools.js.map +1 -1
  161. package/dist/lib/types/tool-factory.d.ts.map +1 -1
  162. package/dist/lib/types/tool-factory.js +9 -2
  163. package/dist/lib/types/tool-factory.js.map +1 -1
  164. package/dist/lib/utils/document-extract.d.ts +10 -0
  165. package/dist/lib/utils/document-extract.d.ts.map +1 -0
  166. package/dist/lib/utils/document-extract.js +149 -0
  167. package/dist/lib/utils/document-extract.js.map +1 -0
  168. package/dist/lib/workflows/react-workflow-executor.d.ts.map +1 -1
  169. package/dist/lib/workflows/react-workflow-executor.js +20 -14
  170. package/dist/lib/workflows/react-workflow-executor.js.map +1 -1
  171. package/dist/lib/workflows/types.d.ts +71 -45
  172. package/dist/lib/workflows/types.d.ts.map +1 -1
  173. package/dist/lib/workflows/types.js +10 -0
  174. package/dist/lib/workflows/types.js.map +1 -1
  175. package/dist/public/assets/logo.png +0 -0
  176. package/dist/public/chat.html +3 -78
  177. package/dist/public/index.html +3 -330
  178. package/dist/public/src/components/AgentComposer.js +132 -132
  179. package/dist/public/src/components/AgentsView.js +1231 -350
  180. package/dist/public/src/components/AppRoot.js +101 -39
  181. package/dist/public/src/components/GraphView.js +11 -13
  182. package/dist/public/src/components/IdeView.js +133 -98
  183. package/dist/public/src/components/KnowledgeView.js +94 -130
  184. package/dist/public/src/components/LlmView.js +15 -19
  185. package/dist/public/src/components/LocalLlmView.js +2440 -0
  186. package/dist/public/src/components/LogViewer.js +155 -0
  187. package/dist/public/src/components/McpView.js +41 -49
  188. package/dist/public/src/components/MonitorView.js +79 -126
  189. package/dist/public/src/components/NavBar.js +16 -26
  190. package/dist/public/src/components/StandaloneChat.js +136 -150
  191. package/dist/public/src/services/ApiService.js +196 -2
  192. package/dist/public/src/services/SessionStore.js +6 -3
  193. package/dist/public/src/services/StreamManager.js +183 -0
  194. package/dist/public/src/store.js +1 -1
  195. package/dist/public/src/utils/card.js +21 -0
  196. package/dist/public/src/utils/markdown.js +1 -7
  197. package/dist/public/styles.css +2777 -0
  198. package/dist/src/cli/commands/init.d.ts.map +1 -1
  199. package/dist/src/cli/commands/init.js +7 -1
  200. package/dist/src/cli/commands/init.js.map +1 -1
  201. package/dist/src/cli/commands/start.d.ts.map +1 -1
  202. package/dist/src/cli/commands/start.js +28 -5
  203. package/dist/src/cli/commands/start.js.map +1 -1
  204. package/dist/src/cli/index.js +13 -2
  205. package/dist/src/cli/index.js.map +1 -1
  206. package/dist/src/index.js +7 -1
  207. package/dist/src/index.js.map +1 -1
  208. package/dist/src/routes/agents.route.d.ts.map +1 -1
  209. package/dist/src/routes/agents.route.js +2 -0
  210. package/dist/src/routes/agents.route.js.map +1 -1
  211. package/dist/src/routes/chat.route.d.ts.map +1 -1
  212. package/dist/src/routes/chat.route.js +3 -2
  213. package/dist/src/routes/chat.route.js.map +1 -1
  214. package/dist/src/routes/llm.route.d.ts.map +1 -1
  215. package/dist/src/routes/llm.route.js +227 -7
  216. package/dist/src/routes/llm.route.js.map +1 -1
  217. package/dist/src/routes/local-llm.route.d.ts +3 -0
  218. package/dist/src/routes/local-llm.route.d.ts.map +1 -0
  219. package/dist/src/routes/local-llm.route.js +688 -0
  220. package/dist/src/routes/local-llm.route.js.map +1 -0
  221. package/dist/src/routes/logs.route.d.ts +3 -0
  222. package/dist/src/routes/logs.route.d.ts.map +1 -0
  223. package/dist/src/routes/logs.route.js +24 -0
  224. package/dist/src/routes/logs.route.js.map +1 -0
  225. package/dist/src/routes/vnc.route.d.ts +10 -1
  226. package/dist/src/routes/vnc.route.d.ts.map +1 -1
  227. package/dist/src/routes/vnc.route.js +37 -12
  228. package/dist/src/routes/vnc.route.js.map +1 -1
  229. package/dist/src/routes/workflows.route.d.ts.map +1 -1
  230. package/dist/src/routes/workflows.route.js +24 -0
  231. package/dist/src/routes/workflows.route.js.map +1 -1
  232. package/dist/src/server.d.ts.map +1 -1
  233. package/dist/src/server.js +24 -2
  234. package/dist/src/server.js.map +1 -1
  235. package/dist/templates/agents/actor.agent.yaml +34 -0
  236. package/dist/templates/agents/architect.agent.yaml +0 -1
  237. package/dist/templates/agents/chatbot.agent.yaml +0 -1
  238. package/dist/templates/agents/corporate.agent.yaml +0 -1
  239. package/dist/templates/agents/functions.agent.yaml +29 -0
  240. package/dist/templates/agents/investment-analyst.agent.yaml +0 -1
  241. package/dist/templates/agents/music-librarian.agent.yaml +3 -27
  242. package/dist/templates/agents/network-security.agent.yaml +0 -1
  243. package/dist/templates/agents/transport-security.agent.yaml +0 -1
  244. package/dist/templates/agents/web-engineer.agent.yaml +3 -4
  245. package/dist/templates/agents/web-pilot.agent.yaml +0 -1
  246. package/dist/templates/knowledge/patient-records.knowledge.yaml +20 -0
  247. package/dist/templates/knowledge/pdf-patients/PDF_Deid_Deidentification_0.pdf +0 -0
  248. package/dist/templates/knowledge/pdf-patients/PDF_Deid_Deidentification_1.pdf +0 -0
  249. package/dist/templates/knowledge/pdf-patients/PDF_Deid_Deidentification_10.pdf +0 -0
  250. package/dist/templates/knowledge/pdf-patients/PDF_Deid_Deidentification_11.pdf +0 -0
  251. package/dist/templates/knowledge/web-docs.knowledge.yaml +1 -1
  252. package/dist/templates/llm.json +73 -10
  253. package/dist/templates/skills/orcha-builder/SKILL.md +56 -3
  254. package/dist/templates/workflows/example.workflow.yaml +27 -35
  255. package/dist/templates/workflows/react-example.workflow.yaml +14 -19
  256. package/dist/templates/workflows/team-chat.workflow.yaml +47 -0
  257. package/package.json +14 -6
  258. package/dist/public/src/components/SkillsView.js +0 -137
  259. package/dist/public/src/components/WorkflowsView.js +0 -568
@@ -1,21 +1,84 @@
1
1
  {
2
+ "version": "1.0",
2
3
  "models": {
3
- "default": {
4
+ "default": "llama-cpp",
5
+ "mlx-serve": {
6
+ "provider": "local",
7
+ "engine": "mlx-serve",
8
+ "model": "Qwen3.5-4B-4bit",
9
+ "contextSize": 32768,
10
+ "reasoningBudget": 0
11
+ },
12
+ "llama-cpp": {
13
+ "provider": "local",
14
+ "engine": "llama-cpp",
15
+ "model": "Qwen3.5-4B-IQ4_NL",
16
+ "contextSize": 32768,
17
+ "reasoningBudget": 0
18
+ },
19
+ "lmstudio": {
20
+ "provider": "local",
21
+ "engine": "lmstudio",
22
+ "baseUrl": "http://localhost:1234/v1",
23
+ "model": "qwen3.5-9b",
24
+ "reasoningBudget": 0
25
+ },
26
+ "ollama": {
27
+ "provider": "local",
28
+ "engine": "ollama",
29
+ "baseUrl": "http://localhost:11434/v1",
30
+ "model": "qwen3.5:latest",
31
+ "reasoningBudget": 0
32
+ },
33
+ "openai": {
4
34
  "provider": "openai",
5
- "baseUrl": "http://host.docker.internal:1234/v1",
6
35
  "apiKey": "${OPENAI_API_KEY}",
7
- "model": "default",
8
- "temperature": 0.6,
9
- "maxTokens": 4096
36
+ "model": "gpt-5.4"
37
+ },
38
+ "anthropic": {
39
+ "provider": "anthropic",
40
+ "apiKey": "${ANTHROPIC_API_KEY}",
41
+ "model": "claude-sonnet-4-6"
42
+ },
43
+ "gemini": {
44
+ "provider": "gemini",
45
+ "apiKey": "${GOOGLE_API_KEY}",
46
+ "model": "gemini-3.1-pro-preview"
10
47
  }
11
48
  },
12
49
  "embeddings": {
13
- "default": {
50
+ "default": "llama-cpp",
51
+ "llama-cpp": {
52
+ "provider": "local",
53
+ "engine": "llama-cpp",
54
+ "model": "nomic-embed-text-v1.5.Q4_K_M"
55
+ },
56
+ "mlx-serve": {
57
+ "provider": "local",
58
+ "engine": "mlx-serve",
59
+ "model": "all-MiniLM-L6-v2-4bit"
60
+ },
61
+ "lmstudio": {
62
+ "provider": "local",
63
+ "engine": "lmstudio",
64
+ "baseUrl": "http://192.168.2.61:1234/v1",
65
+ "model": "nomic-ai/text-embedding-nomic-embed-text-v1.5"
66
+ },
67
+ "ollama": {
68
+ "provider": "local",
69
+ "engine": "ollama",
70
+ "baseUrl": "http://localhost:11434/v1",
71
+ "model": "nomic-embed-text:v1.5"
72
+ },
73
+ "openai": {
14
74
  "provider": "openai",
15
- "baseUrl": "http://host.docker.internal:1234/v1",
16
75
  "apiKey": "${OPENAI_API_KEY}",
17
- "model": "text-embedding-nomic-embed-text-v1.5",
18
- "eosToken": " "
76
+ "model": "text-embedding-3-small"
77
+ },
78
+ "gemini": {
79
+ "provider": "gemini",
80
+ "apiKey": "${GOOGLE_API_KEY}",
81
+ "model": "gemini-embedding-001"
19
82
  }
20
83
  }
21
- }
84
+ }
@@ -19,9 +19,17 @@ prompt:
19
19
  inputVariables:
20
20
  - query
21
21
  tools: # mcp:<server> | knowledge:<store> | function:<name>
22
- - mcp:server-name # builtin:<name> | sandbox:<tool> | project:<tool>
23
- - knowledge:store-name # sandbox: exec, shell, web_fetch, web_search, browser_*
24
- - sandbox:browser_navigate # project: read, write, delete, list, list_resources
22
+ - mcp:server-name # builtin:<name> | sandbox:<tool> | workspace:<tool>
23
+ - knowledge:store-name # workspace: read, write, delete, list, list_resources, diagnostics
24
+ - sandbox:browser_navigate # sandbox: exec, shell, web_fetch, web_search
25
+ # sandbox: browser_navigate, browser_observe, browser_screenshot,
26
+ # browser_content, browser_click, browser_type, browser_evaluate
27
+ # sandbox: vision_screenshot, vision_navigate, vision_click,
28
+ # vision_type, vision_scroll, vision_key, vision_drag
29
+ # (requires EXPERIMENTAL_VISION=true)
30
+ # sandbox: file_read, file_write, file_edit, file_insert, file_replace_lines
31
+ # builtin: ask_user, save_memory
32
+ # (conditional: integration_post, integration_context, email_send)
25
33
  skills:
26
34
  - skill-name # or use mode: all to attach all skills
27
35
  output:
@@ -103,6 +111,9 @@ config:
103
111
  onError: stop # stop | continue | retry
104
112
  output:
105
113
  result: "{{step_two_result}}"
114
+ chatOutputFormat: text # text | json
115
+ sampleQuestions:
116
+ - "Run the pipeline"
106
117
  ```
107
118
 
108
119
  ## ReAct Workflows (`workflows/<name>.workflow.yaml`)
@@ -140,6 +151,9 @@ graph:
140
151
  timeout: 300000
141
152
  output:
142
153
  result: "{{result}}"
154
+ chatOutputFormat: text # text | json
155
+ sampleQuestions:
156
+ - "What can you do?"
143
157
  ```
144
158
 
145
159
  ## Knowledge Stores (`knowledge/<name>.knowledge.yaml`)
@@ -197,6 +211,8 @@ export default async function({ input }) {
197
211
  }
198
212
  ```
199
213
 
214
+ Function parameters support automatic type coercion — if an LLM passes a number as a string, it is auto-coerced to the declared type.
215
+
200
216
  ## Skills (`skills/<name>/SKILL.md`)
201
217
 
202
218
  Markdown files with YAML frontmatter (`name`, `description`). Content is injected into the agent's system prompt. Add `sandbox: true` if the skill requires sandbox tools.
@@ -209,6 +225,43 @@ Markdown files with YAML frontmatter (`name`, `description`). Content is injecte
209
225
 
210
226
  Remote: `url`. Local: `command` + `args`. Optional: `headers`, `env`, `timeout`, `transport`, `description`. Transport is auto-detected. To add a server: read `mcp.json`, add entry, write back, then reference as `mcp:<name>` in agent tools.
211
227
 
228
+ ## LLM Configuration (`llm.json`)
229
+
230
+ ```json
231
+ {
232
+ "default": "llama-cpp",
233
+ "llama-cpp": {
234
+ "engine": "llama-cpp",
235
+ "model": "qwen3-8b",
236
+ "temperature": 0.7,
237
+ "reasoningBudget": 4096,
238
+ "thinkingBudget": 4096
239
+ },
240
+ "ollama-model": {
241
+ "engine": "ollama",
242
+ "model": "llama3",
243
+ "temperature": 0.5
244
+ },
245
+ "embeddings": {
246
+ "engine": "llama-cpp",
247
+ "model": "nomic-embed",
248
+ "type": "embedding"
249
+ },
250
+ "engineUrls": {
251
+ "llama-cpp": "http://localhost:8080",
252
+ "mlx-serve": "http://localhost:8081",
253
+ "ollama": "http://localhost:11434",
254
+ "lmstudio": "http://localhost:1234"
255
+ }
256
+ }
257
+ ```
258
+
259
+ The `"default"` key is a string pointer to another config name. Engines: `llama-cpp`, `mlx-serve`, `ollama`, `lmstudio`. Use `reasoningBudget`/`thinkingBudget` for thinking models. Values support `${ENV_VAR}` substitution.
260
+
261
+ ## Environment Variable Substitution
262
+
263
+ All YAML and JSON config files support `${ENV_VAR}` and `${ENV_VAR:-default}` syntax. Use this for secrets, URLs, and any values that differ between environments.
264
+
212
265
  ## Best Practices
213
266
 
214
267
  - Use kebab-case for all resource names
@@ -1,7 +1,8 @@
1
1
  name: research-pipeline
2
- description: Multi-step research pipeline that searches knowledge bases and produces a friendly summary
2
+ description: Research pipeline that searches knowledge bases and publishes findings as a live HTML page
3
3
  version: "1.0.0"
4
4
  type: steps
5
+ chatOutputFormat: text
5
6
 
6
7
  input:
7
8
  schema:
@@ -12,52 +13,43 @@ input:
12
13
 
13
14
  steps:
14
15
 
15
- # Step 1: Search web knowledge for background information
16
- - id: web-research
17
- agent: knowledge-broker
16
+ # Step 1: Search corporate knowledge for relevant info
17
+ - id: research
18
+ agent: corporate
18
19
  input:
19
20
  query: "Find information about {{input.topic}}"
20
21
  output:
21
- key: web_findings
22
+ key: findings
22
23
 
23
- # Step 2: Search org chart to find relevant people in the company
24
- - id: find-experts
25
- agent: knowledge-broker
26
- input:
27
- query: "Who in the company has expertise related to {{input.topic}}?"
28
- output:
29
- key: expert_findings
30
-
31
- # Step 3: Summarize everything into a friendly report
32
- - id: summarize
33
- agent: chatbot
24
+ # Step 2: Build a minimal HTML report and publish it
25
+ - id: publish
26
+ agent: web-engineer
34
27
  input:
35
28
  query: |
36
- Write a brief research summary on: {{input.topic}}
29
+ Create a minimalistic, clean HTML page that presents the following research findings about "{{input.topic}}".
37
30
 
38
- Background Research:
39
- {{steps.web-research.output}}
31
+ Research findings:
32
+ {{steps.research.output}}
40
33
 
41
- Internal Experts:
42
- {{steps.find-experts.output}}
34
+ Requirements:
35
+ - Single-page, clean design with Tailwind CSS
36
+ - Minimal and elegant — white background, good typography, subtle accents
37
+ - Structure the content with clear headings and sections
38
+ - Add a small footer: "Generated by Agent Orcha"
39
+ - Deploy via htmlhost and share the live URL
43
40
 
44
- Combine these into a clear, concise report with sections for background context and recommended contacts.
41
+ Do NOT ask the user any questions, just build and deploy it.
45
42
  output:
46
- key: final_report
43
+ key: report
47
44
 
48
45
  config:
49
46
  timeout: 300000
50
- onError: stop
47
+ onError: continue
51
48
 
52
49
  output:
53
- research: "{{steps.web-research.output}}"
54
- experts: "{{steps.find-experts.output}}"
55
- summary: "{{steps.summarize.output}}"
56
-
57
- metadata:
58
- category: example
59
- tags:
60
- - demo
61
- - workflow
62
- - multi-agent
63
- - knowledge-search
50
+ report: "{{steps.publish.output}}"
51
+
52
+ sampleQuestions:
53
+ - "Who reports to the VP of Engineering and what are their roles?"
54
+ - "How is Sarah doing in her recent calls? Any coaching opportunities?"
55
+ - "Show me the org structure for the Sales department"
@@ -1,7 +1,8 @@
1
- name: react-research
2
- description: Autonomous research workflow that discovers and uses all available tools and knowledge bases
1
+ name: tool-explorer
2
+ description: Autonomous ReAct workflow that discovers and uses all available tools and knowledge bases
3
3
  version: "1.0.0"
4
4
  type: react
5
+ chatOutputFormat: text
5
6
 
6
7
  input:
7
8
  schema:
@@ -12,15 +13,14 @@ input:
12
13
 
13
14
  prompt:
14
15
  system: |
15
- You are a research assistant with access to knowledge bases, tools, and other agents.
16
-
17
- Available knowledge bases include company org charts, product inventories, web content, and more.
18
- You also have access to calculator functions and other utility tools.
16
+ You are a research assistant with access to knowledge bases, tools, and utility functions.
19
17
 
20
18
  Research process:
21
19
  1. Identify which knowledge bases and tools are relevant to the topic
22
- 2. Search multiple sources in parallel when possible
23
- 3. Synthesize the results into a comprehensive, well-structured answer
20
+ 2. Search multiple sources to gather comprehensive information
21
+ 3. Synthesize the results into a clear, well-structured answer
22
+
23
+ When searching knowledge bases, use k=5 or fewer to keep results focused.
24
24
 
25
25
  If you need clarification from the user, use the ask_user tool.
26
26
  goal: "Research and answer: {{input.topic}}"
@@ -32,10 +32,8 @@ graph:
32
32
  mode: all
33
33
  sources: [knowledge, function, builtin]
34
34
  agents:
35
- mode: all
36
- exclude:
37
- - architect
38
- maxIterations: 10
35
+ mode: none
36
+ maxIterations: 100
39
37
  timeout: 300000
40
38
 
41
39
  output:
@@ -44,10 +42,7 @@ output:
44
42
  config:
45
43
  onError: stop
46
44
 
47
- metadata:
48
- category: example
49
- tags:
50
- - demo
51
- - react
52
- - autonomous
53
- - tool-discovery
45
+ sampleQuestions:
46
+ - "Do we have any security incidents affecting our transport communication systems?"
47
+ - "Cross-reference our OT infrastructure with recent CVEs and tell me what's at risk"
48
+ - "Who are the top performers in the sales team based on their call transcripts?"
@@ -0,0 +1,47 @@
1
+ name: team-chat
2
+ description: ReAct workflow that delegates tasks to specialized agents for collaborative problem-solving
3
+ version: "1.0.0"
4
+ type: react
5
+ chatOutputFormat: text
6
+
7
+ input:
8
+ schema:
9
+ topic:
10
+ type: string
11
+ required: true
12
+ description: The task or question to solve
13
+
14
+ prompt:
15
+ system: |
16
+ You are a coordinator that delegates tasks to specialized agents.
17
+
18
+ Your role:
19
+ 1. Understand the user's request
20
+ 2. Identify which agents are best suited for each part of the task
21
+ 3. Delegate to agents and combine their responses
22
+ 4. Present a unified, coherent answer
23
+
24
+ If you need clarification from the user, use the ask_user tool.
25
+ goal: "Coordinate agents to answer: {{input.topic}}"
26
+
27
+ graph:
28
+ model: default
29
+ executionMode: react
30
+ tools:
31
+ mode: include
32
+ sources: [builtin]
33
+ include: [ask_user]
34
+ agents:
35
+ mode: all
36
+ maxIterations: 100
37
+ timeout: 300000
38
+
39
+ output:
40
+ result: "{{state.messages[-1].content}}"
41
+
42
+ config:
43
+ onError: stop
44
+
45
+ sampleQuestions:
46
+ - "Ask each agent to introduce themselves and their capabilities"
47
+ - "Get a security assessment from the network security agent"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-orcha",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "description": "TypeScript Agentic Orchestration http server and framework for building multi-agent workflows with MCP tools and vector stores",
5
5
  "keywords": [
6
6
  "ai",
@@ -34,17 +34,20 @@
34
34
  "LICENSE"
35
35
  ],
36
36
  "scripts": {
37
- "dev": "WORKSPACE=${WORKSPACE:-./templates} node --watch src/index.ts",
37
+ "dev": "node --watch src/index.ts",
38
38
  "build": "tsc && npm run copy-assets",
39
- "copy-assets": "mkdir -p dist && cp -r public dist/ && cp -r templates dist/",
39
+ "copy-assets": "node -e \"const fs=require('fs');fs.cpSync('public','dist/public',{recursive:true});fs.cpSync('templates','dist/templates',{recursive:true})\"",
40
40
  "start": "node dist/src/index.js",
41
41
  "prepublishOnly": "npm run build",
42
42
  "lint": "eslint src lib --ext .ts",
43
43
  "typecheck": "tsc --noEmit",
44
- "test": "node --test --test-force-exit 'test/**/*.test.ts'",
45
- "test:coverage": "node --test --test-force-exit --experimental-test-coverage --test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=spec --test-reporter-destination=stdout 'test/**/*.test.ts'",
44
+ "test": "node --experimental-test-module-mocks --test --test-force-exit 'test/**/*.test.ts'",
45
+ "test:coverage": "node --experimental-test-module-mocks --test --test-force-exit --experimental-test-coverage --test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=spec --test-reporter-destination=stdout 'test/**/*.test.ts'",
46
46
  "docker": "docker compose up --build --watch",
47
- "docker:auth": "AUTH_PASSWORD=${AUTH_PASSWORD:-password} docker compose up --build --watch"
47
+ "build:binary": "node scripts/build-sea.mjs",
48
+ "sea": "node scripts/build-sea.mjs && ./dist/sea/agent-orcha",
49
+ "test:e2e": "npx playwright test",
50
+ "prepare": "./scripts/install-hooks.sh"
48
51
  },
49
52
  "dependencies": {
50
53
  "@anthropic-ai/sdk": "^0.76.0",
@@ -54,15 +57,18 @@
54
57
  "@modelcontextprotocol/sdk": "^1.0.0",
55
58
  "cheerio": "^1.0.0",
56
59
  "dotenv": "^16.4.7",
60
+ "exceljs": "^4.4.0",
57
61
  "fastify": "^5.2.0",
58
62
  "fastify-plugin": "^5.1.0",
59
63
  "glob": "^11.0.0",
60
64
  "imapflow": "^1.2.10",
61
65
  "jsdom": "^28.1.0",
66
+ "mammoth": "^1.11.0",
62
67
  "mysql2": "^3.12.0",
63
68
  "node-cron": "^4.2.1",
64
69
  "nodemailer": "^8.0.1",
65
70
  "openai": "^6.22.0",
71
+ "pdf-parse": "^1.1.4",
66
72
  "pg": "^8.13.2",
67
73
  "pino": "^10.2.1",
68
74
  "pino-pretty": "^13.1.3",
@@ -73,12 +79,14 @@
73
79
  "zod-to-json-schema": "^3.25.1"
74
80
  },
75
81
  "devDependencies": {
82
+ "@playwright/test": "^1.58.2",
76
83
  "@types/jsdom": "^27.0.0",
77
84
  "@types/node": "^22.10.5",
78
85
  "@types/node-cron": "^3.0.11",
79
86
  "@types/nodemailer": "^7.0.11",
80
87
  "@types/pg": "^8.11.10",
81
88
  "@types/ws": "^8.18.1",
89
+ "esbuild": "^0.25.12",
82
90
  "eslint": "^9.17.0",
83
91
  "typescript": "^5.7.2"
84
92
  },
@@ -1,137 +0,0 @@
1
-
2
- import { Component } from '../utils/Component.js';
3
- import { api } from '../services/ApiService.js';
4
-
5
- export class SkillsView extends Component {
6
- constructor() {
7
- super();
8
- this.selectedSkill = null;
9
- }
10
-
11
- async connectedCallback() {
12
- super.connectedCallback();
13
- this.loadSkills();
14
- }
15
-
16
- async loadSkills() {
17
- const container = this.querySelector('#skillsListContainer');
18
- container.innerHTML = '<div class="text-gray-500 text-center py-8">Loading...</div>';
19
-
20
- try {
21
- const skills = await api.getSkills();
22
- this.renderSkillsList(skills);
23
- } catch (e) {
24
- container.innerHTML = `<div class="text-red-400 text-center">Error: ${e.message}</div>`;
25
- }
26
- }
27
-
28
- renderSkillsList(skills) {
29
- const container = this.querySelector('#skillsListContainer');
30
-
31
- if (!skills.length) {
32
- container.innerHTML = `
33
- <div class="text-gray-500 text-center py-12">
34
- <i class="fas fa-wand-magic-sparkles text-4xl mb-4 block text-gray-600"></i>
35
- <p class="text-lg mb-2">No skills found</p>
36
- <p class="text-sm">Create a <code class="bg-dark-surface px-2 py-1 rounded">skills/my-skill/SKILL.md</code> file to get started.</p>
37
- </div>`;
38
- return;
39
- }
40
-
41
- container.innerHTML = `
42
- <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
43
- ${skills.map(skill => `
44
- <div class="skill-card bg-dark-surface border border-dark-border hover:border-teal-500 rounded-lg p-4 cursor-pointer transition-colors"
45
- data-skill-name="${skill.name}">
46
- <div class="flex items-center gap-2 mb-2">
47
- <i class="fas fa-wand-magic-sparkles text-teal-400 text-sm"></i>
48
- <span class="font-medium text-teal-400">${skill.name}</span>
49
- </div>
50
- <div class="text-xs text-gray-500 line-clamp-3">${skill.description || 'No description'}</div>
51
- </div>
52
- `).join('')}
53
- </div>`;
54
-
55
- container.querySelectorAll('.skill-card').forEach(card => {
56
- card.addEventListener('click', () => {
57
- this.selectSkill(card.dataset.skillName);
58
- });
59
- });
60
- }
61
-
62
- async selectSkill(name) {
63
- const detailArea = this.querySelector('#skillDetailArea');
64
- detailArea.classList.remove('hidden');
65
-
66
- this.querySelector('#skillDetailName').textContent = name;
67
- this.querySelector('#skillDetailContent').textContent = 'Loading...';
68
-
69
- // Highlight selected card
70
- this.querySelectorAll('.skill-card').forEach(el => {
71
- el.classList.remove('border-teal-500', 'bg-teal-500/10');
72
- el.classList.add('border-dark-border');
73
- });
74
- const activeCard = this.querySelector(`[data-skill-name="${name}"]`);
75
- if (activeCard) {
76
- activeCard.classList.remove('border-dark-border');
77
- activeCard.classList.add('border-teal-500', 'bg-teal-500/10');
78
- }
79
-
80
- try {
81
- const skill = await api.getSkill(name);
82
- this.selectedSkill = skill;
83
- this.querySelector('#skillDetailDesc').textContent = skill.description || 'No description';
84
- this.querySelector('#skillDetailContent').textContent = skill.content;
85
- } catch (e) {
86
- this.querySelector('#skillDetailContent').textContent = 'Error loading skill: ' + e.message;
87
- this.querySelector('#skillDetailContent').classList.add('text-red-400');
88
- }
89
- }
90
-
91
- postRender() {
92
- this.querySelector('#closeDetailBtn').addEventListener('click', () => {
93
- this.querySelector('#skillDetailArea').classList.add('hidden');
94
- this.querySelectorAll('.skill-card').forEach(el => {
95
- el.classList.remove('border-teal-500', 'bg-teal-500/10');
96
- el.classList.add('border-dark-border');
97
- });
98
- this.selectedSkill = null;
99
- });
100
- }
101
-
102
- template() {
103
- return `
104
- <div class="space-y-6 h-full overflow-y-auto pb-8 custom-scrollbar">
105
- <div class="flex items-center justify-between border-b border-dark-border pb-4">
106
- <div>
107
- <h2 class="text-lg font-semibold text-gray-200">Skills</h2>
108
- <p class="text-xs text-gray-500 mt-1">Prompt augmentation units that expand agent capabilities</p>
109
- </div>
110
- </div>
111
-
112
- <div id="skillsListContainer"></div>
113
-
114
- <div id="skillDetailArea" class="hidden border-t border-dark-border pt-6">
115
- <div class="bg-dark-surface/50 border border-dark-border rounded-lg p-4 mb-4">
116
- <div class="flex items-center justify-between">
117
- <div>
118
- <div class="font-medium text-teal-400" id="skillDetailName"></div>
119
- <div class="text-xs text-gray-500 mt-1" id="skillDetailDesc"></div>
120
- </div>
121
- <button id="closeDetailBtn" class="text-gray-500 hover:text-gray-300 transition-colors">
122
- <i class="fas fa-times"></i>
123
- </button>
124
- </div>
125
- </div>
126
-
127
- <div>
128
- <label class="block text-sm font-medium text-gray-300 mb-2">Skill Content</label>
129
- <pre id="skillDetailContent" class="bg-dark-surface border border-dark-border rounded-lg p-4 min-h-[200px] font-mono text-sm text-gray-300 whitespace-pre-wrap overflow-x-auto"></pre>
130
- </div>
131
- </div>
132
- </div>
133
- `;
134
- }
135
- }
136
-
137
- customElements.define('skills-view', SkillsView);