agent-orcha 0.0.5 → 0.0.7
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.
- package/README.md +194 -1277
- package/dist/lib/agents/agent-executor.d.ts +4 -2
- package/dist/lib/agents/agent-executor.d.ts.map +1 -1
- package/dist/lib/agents/agent-executor.js +68 -52
- package/dist/lib/agents/agent-executor.js.map +1 -1
- package/dist/lib/agents/agent-loader.d.ts +3 -0
- package/dist/lib/agents/agent-loader.d.ts.map +1 -1
- package/dist/lib/agents/agent-loader.js +10 -1
- package/dist/lib/agents/agent-loader.js.map +1 -1
- package/dist/lib/agents/react-loop.d.ts.map +1 -1
- package/dist/lib/agents/react-loop.js +180 -142
- package/dist/lib/agents/react-loop.js.map +1 -1
- package/dist/lib/agents/types.d.ts +181 -18
- package/dist/lib/agents/types.d.ts.map +1 -1
- package/dist/lib/agents/types.js +18 -2
- package/dist/lib/agents/types.js.map +1 -1
- package/dist/lib/functions/function-loader.d.ts +2 -0
- package/dist/lib/functions/function-loader.d.ts.map +1 -1
- package/dist/lib/functions/function-loader.js +10 -0
- package/dist/lib/functions/function-loader.js.map +1 -1
- package/dist/lib/integrations/email.d.ts +38 -0
- package/dist/lib/integrations/email.d.ts.map +1 -0
- package/dist/lib/integrations/email.js +249 -0
- package/dist/lib/integrations/email.js.map +1 -0
- package/dist/lib/integrations/integration-manager.d.ts +5 -0
- package/dist/lib/integrations/integration-manager.d.ts.map +1 -1
- package/dist/lib/integrations/integration-manager.js +53 -3
- package/dist/lib/integrations/integration-manager.js.map +1 -1
- package/dist/lib/integrations/types.d.ts +187 -4
- package/dist/lib/integrations/types.d.ts.map +1 -1
- package/dist/lib/integrations/types.js +24 -1
- package/dist/lib/integrations/types.js.map +1 -1
- package/dist/lib/knowledge/knowledge-store.d.ts +6 -0
- package/dist/lib/knowledge/knowledge-store.d.ts.map +1 -1
- package/dist/lib/knowledge/knowledge-store.js +71 -4
- package/dist/lib/knowledge/knowledge-store.js.map +1 -1
- package/dist/lib/knowledge/loaders/file-loaders.d.ts +8 -2
- package/dist/lib/knowledge/loaders/file-loaders.d.ts.map +1 -1
- package/dist/lib/knowledge/loaders/file-loaders.js +89 -60
- package/dist/lib/knowledge/loaders/file-loaders.js.map +1 -1
- package/dist/lib/knowledge/loaders/web-loader.d.ts +12 -3
- package/dist/lib/knowledge/loaders/web-loader.d.ts.map +1 -1
- package/dist/lib/knowledge/loaders/web-loader.js +56 -22
- package/dist/lib/knowledge/loaders/web-loader.js.map +1 -1
- package/dist/lib/knowledge/types.d.ts +56 -20
- package/dist/lib/knowledge/types.d.ts.map +1 -1
- package/dist/lib/knowledge/types.js +18 -3
- package/dist/lib/knowledge/types.js.map +1 -1
- package/dist/lib/llm/llm-call-logger.d.ts +3 -1
- package/dist/lib/llm/llm-call-logger.d.ts.map +1 -1
- package/dist/lib/llm/llm-call-logger.js +31 -26
- package/dist/lib/llm/llm-call-logger.js.map +1 -1
- package/dist/lib/llm/llm-config.d.ts +8 -0
- package/dist/lib/llm/llm-config.d.ts.map +1 -1
- package/dist/lib/llm/llm-config.js +3 -1
- package/dist/lib/llm/llm-config.js.map +1 -1
- package/dist/lib/llm/llm-factory.d.ts.map +1 -1
- package/dist/lib/llm/llm-factory.js +3 -0
- package/dist/lib/llm/llm-factory.js.map +1 -1
- package/dist/lib/llm/providers/anthropic-chat-model.d.ts +5 -1
- package/dist/lib/llm/providers/anthropic-chat-model.d.ts.map +1 -1
- package/dist/lib/llm/providers/anthropic-chat-model.js +118 -42
- package/dist/lib/llm/providers/anthropic-chat-model.js.map +1 -1
- package/dist/lib/llm/providers/gemini-chat-model.d.ts +3 -2
- package/dist/lib/llm/providers/gemini-chat-model.d.ts.map +1 -1
- package/dist/lib/llm/providers/gemini-chat-model.js +83 -24
- package/dist/lib/llm/providers/gemini-chat-model.js.map +1 -1
- package/dist/lib/llm/providers/openai-chat-model.d.ts +10 -1
- package/dist/lib/llm/providers/openai-chat-model.d.ts.map +1 -1
- package/dist/lib/llm/providers/openai-chat-model.js +233 -32
- package/dist/lib/llm/providers/openai-chat-model.js.map +1 -1
- package/dist/lib/logger.d.ts.map +1 -1
- package/dist/lib/logger.js +0 -1
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/mcp/mcp-client.d.ts.map +1 -1
- package/dist/lib/mcp/mcp-client.js +5 -3
- package/dist/lib/mcp/mcp-client.js.map +1 -1
- package/dist/lib/mcp/types.d.ts +0 -9
- package/dist/lib/mcp/types.d.ts.map +1 -1
- package/dist/lib/mcp/types.js +1 -2
- package/dist/lib/mcp/types.js.map +1 -1
- package/dist/lib/memory/memory-manager.d.ts +1 -0
- package/dist/lib/memory/memory-manager.d.ts.map +1 -1
- package/dist/lib/memory/memory-manager.js +9 -0
- package/dist/lib/memory/memory-manager.js.map +1 -1
- package/dist/lib/orchestrator.d.ts +2 -8
- package/dist/lib/orchestrator.d.ts.map +1 -1
- package/dist/lib/orchestrator.js +96 -3
- package/dist/lib/orchestrator.js.map +1 -1
- package/dist/lib/sandbox/cdp-client.d.ts +14 -0
- package/dist/lib/sandbox/cdp-client.d.ts.map +1 -0
- package/dist/lib/sandbox/cdp-client.js +113 -0
- package/dist/lib/sandbox/cdp-client.js.map +1 -0
- package/dist/lib/sandbox/html-to-markdown.d.ts +9 -1
- package/dist/lib/sandbox/html-to-markdown.d.ts.map +1 -1
- package/dist/lib/sandbox/html-to-markdown.js +67 -10
- package/dist/lib/sandbox/html-to-markdown.js.map +1 -1
- package/dist/lib/sandbox/index.d.ts +5 -0
- package/dist/lib/sandbox/index.d.ts.map +1 -1
- package/dist/lib/sandbox/index.js +4 -0
- package/dist/lib/sandbox/index.js.map +1 -1
- package/dist/lib/sandbox/page-readiness.d.ts +37 -0
- package/dist/lib/sandbox/page-readiness.d.ts.map +1 -0
- package/dist/lib/sandbox/page-readiness.js +235 -0
- package/dist/lib/sandbox/page-readiness.js.map +1 -0
- package/dist/lib/sandbox/sandbox-browser.d.ts +4 -0
- package/dist/lib/sandbox/sandbox-browser.d.ts.map +1 -0
- package/dist/lib/sandbox/sandbox-browser.js +303 -0
- package/dist/lib/sandbox/sandbox-browser.js.map +1 -0
- package/dist/lib/sandbox/sandbox-file.d.ts +4 -0
- package/dist/lib/sandbox/sandbox-file.d.ts.map +1 -0
- package/dist/lib/sandbox/sandbox-file.js +168 -0
- package/dist/lib/sandbox/sandbox-file.js.map +1 -0
- package/dist/lib/sandbox/sandbox-shell.d.ts +4 -0
- package/dist/lib/sandbox/sandbox-shell.d.ts.map +1 -0
- package/dist/lib/sandbox/sandbox-shell.js +93 -0
- package/dist/lib/sandbox/sandbox-shell.js.map +1 -0
- package/dist/lib/sandbox/sandbox-web.d.ts.map +1 -1
- package/dist/lib/sandbox/sandbox-web.js +37 -22
- package/dist/lib/sandbox/sandbox-web.js.map +1 -1
- package/dist/lib/sandbox/types.d.ts +9 -0
- package/dist/lib/sandbox/types.d.ts.map +1 -1
- package/dist/lib/sandbox/types.js +1 -0
- package/dist/lib/sandbox/types.js.map +1 -1
- package/dist/lib/sandbox/vision-browser.d.ts +4 -0
- package/dist/lib/sandbox/vision-browser.d.ts.map +1 -0
- package/dist/lib/sandbox/vision-browser.js +289 -0
- package/dist/lib/sandbox/vision-browser.js.map +1 -0
- package/dist/lib/skills/skill-loader.d.ts +2 -0
- package/dist/lib/skills/skill-loader.d.ts.map +1 -1
- package/dist/lib/skills/skill-loader.js +12 -1
- package/dist/lib/skills/skill-loader.js.map +1 -1
- package/dist/lib/tasks/task-manager.d.ts +3 -1
- package/dist/lib/tasks/task-manager.d.ts.map +1 -1
- package/dist/lib/tasks/task-manager.js +11 -0
- package/dist/lib/tasks/task-manager.js.map +1 -1
- package/dist/lib/tasks/task-store.d.ts +1 -1
- package/dist/lib/tasks/task-store.d.ts.map +1 -1
- package/dist/lib/tasks/task-store.js.map +1 -1
- package/dist/lib/tasks/types.d.ts +18 -0
- package/dist/lib/tasks/types.d.ts.map +1 -1
- package/dist/lib/tools/built-in/integration-tools.d.ts +4 -0
- package/dist/lib/tools/built-in/integration-tools.d.ts.map +1 -0
- package/dist/lib/tools/built-in/integration-tools.js +47 -0
- package/dist/lib/tools/built-in/integration-tools.js.map +1 -0
- package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.d.ts.map +1 -1
- package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.js +12 -6
- package/dist/lib/tools/built-in/knowledge-entity-lookup.tool.js.map +1 -1
- package/dist/lib/tools/built-in/knowledge-sql.tool.d.ts.map +1 -1
- package/dist/lib/tools/built-in/knowledge-sql.tool.js +4 -3
- package/dist/lib/tools/built-in/knowledge-sql.tool.js.map +1 -1
- package/dist/lib/tools/built-in/query-validators.d.ts.map +1 -1
- package/dist/lib/tools/built-in/query-validators.js +4 -0
- package/dist/lib/tools/built-in/query-validators.js.map +1 -1
- package/dist/lib/tools/workspace/workspace-tools.d.ts +1 -0
- package/dist/lib/tools/workspace/workspace-tools.d.ts.map +1 -1
- package/dist/lib/tools/workspace/workspace-tools.js +39 -0
- package/dist/lib/tools/workspace/workspace-tools.js.map +1 -1
- package/dist/lib/triggers/cron-trigger.d.ts +1 -1
- package/dist/lib/triggers/cron-trigger.d.ts.map +1 -1
- package/dist/lib/triggers/cron-trigger.js.map +1 -1
- package/dist/lib/triggers/trigger-manager.d.ts +1 -0
- package/dist/lib/triggers/trigger-manager.d.ts.map +1 -1
- package/dist/lib/triggers/trigger-manager.js +26 -0
- package/dist/lib/triggers/trigger-manager.js.map +1 -1
- package/dist/lib/triggers/webhook-trigger.d.ts +1 -1
- package/dist/lib/triggers/webhook-trigger.d.ts.map +1 -1
- package/dist/lib/triggers/webhook-trigger.js.map +1 -1
- package/dist/lib/types/llm-types.d.ts +22 -4
- package/dist/lib/types/llm-types.d.ts.map +1 -1
- package/dist/lib/types/llm-types.js +50 -0
- package/dist/lib/types/llm-types.js.map +1 -1
- package/dist/lib/types/tool-factory.d.ts +2 -2
- package/dist/lib/types/tool-factory.d.ts.map +1 -1
- package/dist/lib/types/tool-factory.js.map +1 -1
- package/dist/lib/utils/env-substitution.d.ts +6 -0
- package/dist/lib/utils/env-substitution.d.ts.map +1 -0
- package/dist/lib/utils/env-substitution.js +15 -0
- package/dist/lib/utils/env-substitution.js.map +1 -0
- package/dist/lib/workflows/react-workflow-executor.js +3 -3
- package/dist/lib/workflows/react-workflow-executor.js.map +1 -1
- package/dist/lib/workflows/types.d.ts +10 -10
- package/dist/lib/workflows/workflow-loader.d.ts +3 -0
- package/dist/lib/workflows/workflow-loader.d.ts.map +1 -1
- package/dist/lib/workflows/workflow-loader.js +10 -1
- package/dist/lib/workflows/workflow-loader.js.map +1 -1
- package/dist/public/chat.html +114 -0
- package/dist/public/index.html +157 -0
- package/dist/public/src/components/AgentComposer.js +807 -0
- package/dist/public/src/components/AgentsView.js +740 -317
- package/dist/public/src/components/AppRoot.js +30 -5
- package/dist/public/src/components/GraphView.js +372 -288
- package/dist/public/src/components/IdeView.js +163 -7
- package/dist/public/src/components/MonitorView.js +139 -1
- package/dist/public/src/components/StandaloneChat.js +889 -0
- package/dist/public/src/components/WorkflowsView.js +180 -28
- package/dist/public/src/services/ApiService.js +7 -2
- package/dist/public/src/services/SessionStore.js +83 -0
- package/dist/public/src/store.js +0 -2
- package/dist/public/src/utils/markdown.js +13 -0
- package/dist/src/cli/index.js +7 -4
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/middleware/auth.d.ts.map +1 -1
- package/dist/src/middleware/auth.js +28 -6
- package/dist/src/middleware/auth.js.map +1 -1
- package/dist/src/middleware/rate-limit.d.ts +8 -0
- package/dist/src/middleware/rate-limit.d.ts.map +1 -0
- package/dist/src/middleware/rate-limit.js +21 -0
- package/dist/src/middleware/rate-limit.js.map +1 -0
- package/dist/src/routes/agents.route.d.ts.map +1 -1
- package/dist/src/routes/agents.route.js +136 -10
- package/dist/src/routes/agents.route.js.map +1 -1
- package/dist/src/routes/chat.route.d.ts +3 -0
- package/dist/src/routes/chat.route.d.ts.map +1 -0
- package/dist/src/routes/chat.route.js +155 -0
- package/dist/src/routes/chat.route.js.map +1 -0
- package/dist/src/routes/files.route.d.ts.map +1 -1
- package/dist/src/routes/files.route.js +37 -2
- package/dist/src/routes/files.route.js.map +1 -1
- package/dist/src/routes/llm.route.d.ts.map +1 -1
- package/dist/src/routes/llm.route.js +40 -5
- package/dist/src/routes/llm.route.js.map +1 -1
- package/dist/src/routes/tasks.route.d.ts.map +1 -1
- package/dist/src/routes/tasks.route.js +15 -1
- package/dist/src/routes/tasks.route.js.map +1 -1
- package/dist/src/routes/vnc.route.d.ts +3 -0
- package/dist/src/routes/vnc.route.d.ts.map +1 -0
- package/dist/src/routes/vnc.route.js +49 -0
- package/dist/src/routes/vnc.route.js.map +1 -0
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +5 -1
- package/dist/src/server.js.map +1 -1
- package/dist/templates/Demo.md +152 -0
- package/dist/templates/README.md +12 -3
- package/dist/templates/agents/architect.agent.yaml +20 -12
- package/dist/templates/agents/chatbot.agent.yaml +23 -26
- package/dist/templates/agents/corporate.agent.yaml +65 -0
- package/dist/templates/agents/investment-analyst.agent.yaml +80 -0
- package/dist/templates/agents/music-librarian.agent.yaml +70 -0
- package/dist/templates/agents/network-security.agent.yaml +82 -0
- package/dist/templates/agents/transport-security.agent.yaml +70 -0
- package/dist/templates/agents/web-engineer.agent.yaml +99 -0
- package/dist/templates/agents/web-pilot.agent.yaml +58 -0
- package/dist/templates/knowledge/music-store/LICENSE.md +11 -0
- package/dist/templates/knowledge/music-store/musicstore.sqlite +0 -0
- package/dist/templates/knowledge/music-store/tables.png +0 -0
- package/dist/templates/knowledge/music-store.knowledge.yaml +138 -0
- package/dist/templates/knowledge/org-chart/personnel.csv +21 -21
- package/dist/templates/knowledge/org-chart.knowledge.yaml +4 -0
- package/dist/templates/knowledge/pet-store.knowledge.yaml +3 -0
- package/dist/templates/knowledge/security-incidents/incidents.json +55935 -0
- package/dist/templates/knowledge/security-incidents.knowledge.yaml +46 -0
- package/dist/templates/knowledge/{example.knowledge.yaml → transcripts.knowledge.yaml} +9 -5
- package/dist/templates/knowledge/transport-ot/systems.csv +117 -0
- package/dist/templates/knowledge/transport-ot.knowledge.yaml +55 -0
- package/dist/templates/llm.json +7 -30
- package/dist/templates/mcp.json +7 -4
- package/dist/templates/skills/orcha-builder/SKILL.md +106 -226
- package/dist/templates/skills/pii-guard/SKILL.md +22 -0
- package/dist/templates/skills/sandbox/SKILL.md +25 -48
- package/dist/templates/skills/web-pilot/SKILL.md +51 -0
- package/package.json +8 -3
- package/dist/templates/agents/knowledge-broker.agent.yaml +0 -39
- package/dist/templates/agents/sandbox.agent.yaml +0 -56
|
@@ -5,106 +5,87 @@ description: Documentation for creating and modifying ORCHA resources (agents, w
|
|
|
5
5
|
|
|
6
6
|
# ORCHA Resource Schemas
|
|
7
7
|
|
|
8
|
-
Use this reference when creating or modifying ORCHA resources. All resource files live in the workspace root under their respective directories.
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
8
|
## Agents (`agents/<name>.agent.yaml`)
|
|
13
9
|
|
|
14
10
|
```yaml
|
|
15
|
-
name: my-agent
|
|
16
|
-
description: What the agent does
|
|
17
|
-
version: "1.0.0" # Optional, defaults to 1.0.0
|
|
18
|
-
|
|
11
|
+
name: my-agent
|
|
12
|
+
description: What the agent does
|
|
19
13
|
llm:
|
|
20
|
-
name: default
|
|
21
|
-
temperature: 0.7
|
|
22
|
-
|
|
14
|
+
name: default
|
|
15
|
+
temperature: 0.7
|
|
23
16
|
prompt:
|
|
24
17
|
system: |
|
|
25
|
-
|
|
26
|
-
Your instructions go here.
|
|
18
|
+
Your system prompt here.
|
|
27
19
|
inputVariables:
|
|
28
|
-
- query
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
skills: # Optional skills
|
|
39
|
-
- skill-name # Skill name from skills directory
|
|
40
|
-
# OR
|
|
41
|
-
mode: all # Include all available skills
|
|
42
|
-
|
|
43
|
-
output: # Optional output config
|
|
44
|
-
format: text # text | json | structured
|
|
45
|
-
schema: # Required if format is structured
|
|
46
|
-
type: object
|
|
47
|
-
properties:
|
|
48
|
-
result:
|
|
49
|
-
type: string
|
|
50
|
-
|
|
51
|
-
memory: # Optional conversation memory
|
|
20
|
+
- query
|
|
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
|
|
25
|
+
skills:
|
|
26
|
+
- skill-name # or use mode: all to attach all skills
|
|
27
|
+
output:
|
|
28
|
+
format: text # text | structured
|
|
29
|
+
memory:
|
|
52
30
|
enabled: true
|
|
53
|
-
maxLines: 100
|
|
54
|
-
|
|
55
|
-
metadata: # Optional metadata
|
|
56
|
-
category: general
|
|
57
|
-
tags:
|
|
58
|
-
- example
|
|
59
|
-
|
|
60
|
-
integrations: # Optional integrations
|
|
31
|
+
maxLines: 100
|
|
32
|
+
integrations:
|
|
61
33
|
- type: collabnook
|
|
62
|
-
url: wss://collabnook.com/ws
|
|
34
|
+
url: "wss://collabnook.com/ws" # optional — defaults to wss://collabnook.com/ws
|
|
63
35
|
channel: general
|
|
64
|
-
botName:
|
|
65
|
-
|
|
66
|
-
|
|
36
|
+
botName: Bot
|
|
37
|
+
- type: email
|
|
38
|
+
imap:
|
|
39
|
+
host: imap.gmail.com
|
|
40
|
+
port: 993
|
|
41
|
+
smtp:
|
|
42
|
+
host: smtp.gmail.com
|
|
43
|
+
port: 587
|
|
44
|
+
auth:
|
|
45
|
+
user: agent@example.com
|
|
46
|
+
pass: pw
|
|
47
|
+
pollInterval: 60
|
|
48
|
+
folder: INBOX
|
|
49
|
+
triggers:
|
|
67
50
|
- type: cron
|
|
68
|
-
schedule: "*/5 * * * *"
|
|
51
|
+
schedule: "*/5 * * * *"
|
|
69
52
|
input:
|
|
70
|
-
query: "
|
|
53
|
+
query: "Task"
|
|
54
|
+
publish: true # or { enabled: true, password: "secret" }
|
|
55
|
+
sampleQuestions: # optional — clickable chips shown in chat UI on initial load
|
|
56
|
+
- "What can you help me with?"
|
|
57
|
+
- "Summarize the latest report"
|
|
71
58
|
```
|
|
72
59
|
|
|
73
|
-
|
|
60
|
+
Published agents are accessible at `/chat/<agent-name>` with optional per-agent password.
|
|
74
61
|
|
|
75
62
|
## Step-Based Workflows (`workflows/<name>.workflow.yaml`)
|
|
76
63
|
|
|
77
64
|
```yaml
|
|
78
65
|
name: my-workflow
|
|
79
66
|
description: What the workflow does
|
|
80
|
-
|
|
81
|
-
type: steps # "steps" for step-based workflows
|
|
82
|
-
|
|
67
|
+
type: steps
|
|
83
68
|
input:
|
|
84
|
-
schema:
|
|
69
|
+
schema:
|
|
85
70
|
query:
|
|
86
|
-
type: string
|
|
71
|
+
type: string
|
|
87
72
|
required: true
|
|
88
|
-
description: "The user query"
|
|
89
|
-
|
|
90
73
|
steps:
|
|
91
|
-
- id: step-one
|
|
92
|
-
agent: agent-name
|
|
74
|
+
- id: step-one
|
|
75
|
+
agent: agent-name
|
|
93
76
|
input:
|
|
94
|
-
query: "{{query}}"
|
|
95
|
-
output:
|
|
96
|
-
key: step_one_result
|
|
97
|
-
extract: output
|
|
98
|
-
|
|
77
|
+
query: "{{query}}"
|
|
78
|
+
output:
|
|
79
|
+
key: step_one_result
|
|
80
|
+
extract: output
|
|
99
81
|
- id: step-two
|
|
100
82
|
agent: another-agent
|
|
101
83
|
input:
|
|
102
84
|
query: "{{step_one_result}}"
|
|
103
85
|
output:
|
|
104
86
|
key: step_two_result
|
|
105
|
-
condition: "{{step_one_result}}"
|
|
106
|
-
|
|
107
|
-
- parallel: # Parallel execution (no "name" key here)
|
|
87
|
+
condition: "{{step_one_result}}"
|
|
88
|
+
- parallel:
|
|
108
89
|
- id: branch-a
|
|
109
90
|
agent: agent-a
|
|
110
91
|
input:
|
|
@@ -117,223 +98,122 @@ steps:
|
|
|
117
98
|
query: "{{query}}"
|
|
118
99
|
output:
|
|
119
100
|
key: result_b
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
onError: stop # stop | continue | retry
|
|
124
|
-
|
|
101
|
+
config:
|
|
102
|
+
timeout: 300000
|
|
103
|
+
onError: stop # stop | continue | retry
|
|
125
104
|
output:
|
|
126
105
|
result: "{{step_two_result}}"
|
|
127
106
|
```
|
|
128
107
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
## LangGraph Workflows (`workflows/<name>.workflow.yaml`)
|
|
108
|
+
## ReAct Workflows (`workflows/<name>.workflow.yaml`)
|
|
132
109
|
|
|
133
110
|
```yaml
|
|
134
|
-
name: my-
|
|
135
|
-
description:
|
|
136
|
-
|
|
137
|
-
type: langgraph
|
|
138
|
-
|
|
111
|
+
name: my-react-workflow
|
|
112
|
+
description: Autonomous workflow with tool and agent discovery
|
|
113
|
+
type: react
|
|
139
114
|
input:
|
|
140
|
-
schema:
|
|
115
|
+
schema:
|
|
141
116
|
query:
|
|
142
117
|
type: string
|
|
143
118
|
required: true
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
prompt: # REQUIRED for langgraph workflows
|
|
119
|
+
prompt:
|
|
147
120
|
system: |
|
|
148
|
-
You are a helpful assistant
|
|
149
|
-
goal: "Answer the user's query
|
|
150
|
-
|
|
121
|
+
You are a helpful assistant.
|
|
122
|
+
goal: "Answer the user's query"
|
|
151
123
|
graph:
|
|
152
|
-
model: default
|
|
124
|
+
model: default
|
|
153
125
|
tools:
|
|
154
|
-
sources:
|
|
126
|
+
sources:
|
|
155
127
|
- mcp
|
|
156
128
|
- knowledge
|
|
157
129
|
- function
|
|
158
130
|
- builtin
|
|
159
|
-
mode: all
|
|
160
|
-
exclude:
|
|
131
|
+
mode: all # all | none | include | exclude
|
|
132
|
+
exclude:
|
|
161
133
|
- dangerous_tool
|
|
162
134
|
agents:
|
|
163
|
-
mode: all
|
|
135
|
+
mode: all
|
|
164
136
|
exclude:
|
|
165
|
-
- architect
|
|
166
|
-
executionMode: react
|
|
167
|
-
maxIterations: 10
|
|
168
|
-
timeout: 300000
|
|
169
|
-
|
|
137
|
+
- architect
|
|
138
|
+
executionMode: react # react | single-turn
|
|
139
|
+
maxIterations: 10
|
|
140
|
+
timeout: 300000
|
|
170
141
|
output:
|
|
171
142
|
result: "{{result}}"
|
|
172
143
|
```
|
|
173
144
|
|
|
174
|
-
---
|
|
175
|
-
|
|
176
145
|
## Knowledge Stores (`knowledge/<name>.knowledge.yaml`)
|
|
177
146
|
|
|
178
147
|
```yaml
|
|
179
148
|
name: my-knowledge
|
|
180
|
-
description: What this
|
|
181
|
-
|
|
149
|
+
description: What this store contains
|
|
182
150
|
source:
|
|
183
|
-
#
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
# --- OR file source ---
|
|
190
|
-
# type: file
|
|
191
|
-
# path: ./data/report.pdf
|
|
192
|
-
|
|
193
|
-
# --- OR database source ---
|
|
194
|
-
# type: database
|
|
195
|
-
# connectionString: postgresql://user:pass@host:5432/db # postgresql://, mysql://, or sqlite://
|
|
196
|
-
# query: "SELECT content FROM documents"
|
|
197
|
-
# contentColumn: content # Default: "content"
|
|
198
|
-
# metadataColumns: [id, title] # Optional
|
|
199
|
-
# batchSize: 100 # Optional, default: 100
|
|
200
|
-
|
|
201
|
-
# --- OR web source ---
|
|
202
|
-
# type: web
|
|
203
|
-
# url: https://example.com/docs
|
|
204
|
-
# selector: ".main-content" # Optional CSS selector
|
|
205
|
-
# headers: # Optional custom headers
|
|
206
|
-
# Authorization: "Bearer token"
|
|
207
|
-
|
|
208
|
-
loader: # REQUIRED (has defaults)
|
|
209
|
-
type: text # text | pdf | csv | json | markdown
|
|
210
|
-
|
|
151
|
+
type: directory # directory | file | database | web
|
|
152
|
+
path: ./docs
|
|
153
|
+
pattern: "**/*.md"
|
|
154
|
+
# Web-specific: url, selector (html only), headers, jsonPath (dot-notation for nested arrays)
|
|
155
|
+
loader: # optional — defaults: html (web), text (file/directory)
|
|
156
|
+
type: text # text | pdf | csv | json | markdown | html
|
|
211
157
|
splitter:
|
|
212
|
-
type: recursive
|
|
158
|
+
type: recursive # character | recursive | token | markdown
|
|
213
159
|
chunkSize: 1000
|
|
214
160
|
chunkOverlap: 200
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
search: # Optional
|
|
161
|
+
embedding: default # reference to llm.json config
|
|
162
|
+
search:
|
|
219
163
|
defaultK: 4
|
|
220
|
-
scoreThreshold: 0.5
|
|
221
|
-
|
|
222
|
-
|
|
164
|
+
scoreThreshold: 0.5
|
|
165
|
+
reindex: # optional — periodic refresh
|
|
166
|
+
schedule: "0 * * * *" # cron expression
|
|
167
|
+
graph: # optional — works with database, csv, json (array of objects)
|
|
223
168
|
directMapping:
|
|
224
169
|
entities:
|
|
225
|
-
- type: Person
|
|
226
|
-
idColumn: id
|
|
227
|
-
nameColumn: name
|
|
228
|
-
properties:
|
|
229
|
-
- email
|
|
230
|
-
-
|
|
231
|
-
relationships:
|
|
170
|
+
- type: Person
|
|
171
|
+
idColumn: id
|
|
172
|
+
nameColumn: name
|
|
173
|
+
properties:
|
|
174
|
+
- email
|
|
175
|
+
- role: job_title
|
|
176
|
+
relationships:
|
|
232
177
|
- type: WORKS_FOR
|
|
233
|
-
source: Person
|
|
234
|
-
target: Organization
|
|
178
|
+
source: Person
|
|
179
|
+
target: Organization
|
|
235
180
|
sourceIdColumn: person_id
|
|
236
181
|
targetIdColumn: org_id
|
|
237
|
-
groupNode: department # Optional: group by column
|
|
238
182
|
```
|
|
239
183
|
|
|
240
|
-
|
|
184
|
+
Web sources support all loader types. Use `loader.type: json` for APIs, `text` for raw content, `html` (default) for web pages with optional `selector`. Add `headers` for authenticated endpoints. Use `jsonPath` (e.g., `items` or `data.results`) to extract a nested array from the JSON response before parsing.
|
|
241
185
|
|
|
242
186
|
## Custom Functions (`functions/<name>.function.js`)
|
|
243
187
|
|
|
244
188
|
```javascript
|
|
245
|
-
export const metadata = {
|
|
246
|
-
name: "my-function",
|
|
247
|
-
description: "What this function does",
|
|
248
|
-
version: "1.0.0",
|
|
249
|
-
tags: ["utility"]
|
|
250
|
-
};
|
|
251
|
-
|
|
189
|
+
export const metadata = { name: "my-function", description: "What it does" };
|
|
252
190
|
export const parameters = {
|
|
253
191
|
type: "object",
|
|
254
|
-
properties: {
|
|
255
|
-
input: {
|
|
256
|
-
type: "string",
|
|
257
|
-
description: "The input parameter"
|
|
258
|
-
}
|
|
259
|
-
},
|
|
192
|
+
properties: { input: { type: "string", description: "Input" } },
|
|
260
193
|
required: ["input"]
|
|
261
194
|
};
|
|
262
|
-
|
|
263
195
|
export default async function({ input }) {
|
|
264
|
-
// Your logic here
|
|
265
196
|
return { result: `Processed: ${input}` };
|
|
266
197
|
}
|
|
267
198
|
```
|
|
268
199
|
|
|
269
|
-
---
|
|
270
|
-
|
|
271
200
|
## Skills (`skills/<name>/SKILL.md`)
|
|
272
201
|
|
|
273
|
-
|
|
274
|
-
---
|
|
275
|
-
name: my-skill
|
|
276
|
-
description: What this skill teaches the agent
|
|
277
|
-
---
|
|
278
|
-
|
|
279
|
-
# Skill Title
|
|
280
|
-
|
|
281
|
-
Instructions, context, and knowledge that get injected into the agent's prompt.
|
|
282
|
-
Use markdown formatting for structure.
|
|
283
|
-
```
|
|
202
|
+
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.
|
|
284
203
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
## MCP Server Configuration (`mcp.json`)
|
|
290
|
-
|
|
291
|
-
The `mcp.json` file in the workspace root configures external MCP servers. Agents reference them via `mcp:<server-name>` in their tools list.
|
|
204
|
+
## MCP Servers (`mcp.json`)
|
|
292
205
|
|
|
293
206
|
```json
|
|
294
|
-
{
|
|
295
|
-
"version": "1.0.0",
|
|
296
|
-
"servers": {
|
|
297
|
-
"server-name": {
|
|
298
|
-
"url": "https://example.com/mcp",
|
|
299
|
-
"description": "What this server provides",
|
|
300
|
-
"timeout": 30000,
|
|
301
|
-
"enabled": true
|
|
302
|
-
}
|
|
303
|
-
},
|
|
304
|
-
"globalOptions": {
|
|
305
|
-
"throwOnLoadError": false,
|
|
306
|
-
"prefixToolNameWithServerName": true,
|
|
307
|
-
"additionalToolNamePrefix": "",
|
|
308
|
-
"defaultToolTimeout": 30000
|
|
309
|
-
}
|
|
310
|
-
}
|
|
207
|
+
{ "servers": { "name": { "url": "https://example.com/mcp", "enabled": true } } }
|
|
311
208
|
```
|
|
312
209
|
|
|
313
|
-
|
|
314
|
-
- `url` — Required for remote servers (auto-detects `streamable-http` transport)
|
|
315
|
-
- `command` + `args` — Required for local stdio servers (auto-detects `stdio` transport)
|
|
316
|
-
- `transport` — Explicit: `stdio`, `sse`, `streamable-http`, or `sse-only` (auto-detected if omitted)
|
|
317
|
-
- `headers` — Optional HTTP headers (e.g. for auth)
|
|
318
|
-
- `env` — Optional environment variables (for stdio servers)
|
|
319
|
-
- `description` — Optional human-readable description
|
|
320
|
-
- `timeout` — Request timeout in ms (default: 30000)
|
|
321
|
-
- `enabled` — Set to `false` to disable without removing (default: true)
|
|
322
|
-
|
|
323
|
-
**Adding a new MCP server:**
|
|
324
|
-
1. Read `mcp.json` first to preserve existing servers
|
|
325
|
-
2. Add the new server entry to the `servers` object
|
|
326
|
-
3. Write the updated `mcp.json` back
|
|
327
|
-
4. Create an agent that references it with `tools: [mcp:server-name]`
|
|
328
|
-
|
|
329
|
-
---
|
|
210
|
+
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.
|
|
330
211
|
|
|
331
212
|
## Best Practices
|
|
332
213
|
|
|
333
|
-
-
|
|
334
|
-
-
|
|
335
|
-
-
|
|
336
|
-
-
|
|
337
|
-
-
|
|
338
|
-
-
|
|
339
|
-
- **Skills**: Use skills to share knowledge across multiple agents without duplicating prompt content
|
|
214
|
+
- Use kebab-case for all resource names
|
|
215
|
+
- Temperature: 0.0-0.3 for structured tasks, 0.5-0.7 for creative
|
|
216
|
+
- Only include tools the agent actually needs
|
|
217
|
+
- Always read existing resources before modifying them
|
|
218
|
+
- Check `workspace_list_resources` before creating to avoid name collisions
|
|
219
|
+
- Use skills to share knowledge across agents without duplicating prompts
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pii-guard
|
|
3
|
+
description: PII and OWASP security filtering rules
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PII Guard
|
|
7
|
+
|
|
8
|
+
## Sensitive Data Categories (NEVER include in responses)
|
|
9
|
+
|
|
10
|
+
- SSN, tax IDs, government identifiers
|
|
11
|
+
- Salary, compensation, financial data
|
|
12
|
+
- Home addresses, personal phone numbers
|
|
13
|
+
- Dates of birth, ages
|
|
14
|
+
- Full email addresses (mask as j***@company.com)
|
|
15
|
+
- Medical, legal, or disciplinary records
|
|
16
|
+
|
|
17
|
+
## Behavior
|
|
18
|
+
|
|
19
|
+
- **Default:** silently omit PII from responses — don't announce filtering
|
|
20
|
+
- **Explicit request:** decline politely citing company data policy
|
|
21
|
+
- **User provides PII:** refuse to process, store, or format it
|
|
22
|
+
- **Partial info OK:** name, title, department, general location, hire year
|
|
@@ -1,63 +1,40 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sandbox
|
|
3
|
-
description: Execute JavaScript
|
|
3
|
+
description: Execute JavaScript, shell commands, fetch web content, and control a browser
|
|
4
4
|
sandbox: true
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
# Sandbox
|
|
7
|
+
# Sandbox Tools
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## sandbox_exec
|
|
10
|
+
Run JavaScript in isolated VM. Use `console.log()` for output, `return` for result. No `fetch`/`require` — use `sandbox_web_fetch` for HTTP.
|
|
10
11
|
|
|
11
|
-
##
|
|
12
|
+
## sandbox_shell
|
|
13
|
+
Run shell commands in `/tmp` with limited permissions (Docker only).
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
## sandbox_web_fetch
|
|
16
|
+
Fetch web pages (auto-converted to markdown) or APIs (`raw: true`).
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- `timeout` (optional): Execution timeout in milliseconds
|
|
18
|
+
## sandbox_web_search
|
|
19
|
+
Search DuckDuckGo. Params: `query`, `num_results`.
|
|
18
20
|
|
|
19
|
-
|
|
21
|
+
## Browser Tools
|
|
20
22
|
|
|
21
|
-
|
|
23
|
+
Observe → Act → Observe loop. Elements have short refs (e1, e2...) — use them in click/type.
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
- `runScripts` (optional): Run page JavaScript before extracting content (default: true)
|
|
33
|
-
|
|
34
|
-
**Returns:** JSON with `content`, `url`, `status`, and `truncated`
|
|
35
|
-
|
|
36
|
-
## Tool: sandbox_web_search
|
|
37
|
-
|
|
38
|
-
Search the web using DuckDuckGo.
|
|
39
|
-
|
|
40
|
-
**Parameters:**
|
|
41
|
-
- `query` (required): Search query
|
|
42
|
-
- `num_results` (optional): Max results to return (default 10)
|
|
43
|
-
|
|
44
|
-
**Returns:** JSON with `results` (formatted list) and `query`
|
|
45
|
-
|
|
46
|
-
## Usage Examples
|
|
47
|
-
|
|
48
|
-
Run JavaScript code:
|
|
49
|
-
```
|
|
50
|
-
sandbox_exec({ code: "const sum = [1,2,3].reduce((a,b) => a+b, 0); console.log(sum); return sum;" })
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Fetch a web page:
|
|
54
|
-
```
|
|
55
|
-
sandbox_web_fetch({ url: "https://example.com" })
|
|
56
|
-
```
|
|
25
|
+
| Tool | Use |
|
|
26
|
+
|------|-----|
|
|
27
|
+
| `sandbox_browser_observe` | Text snapshot with element refs. Primary verification tool. |
|
|
28
|
+
| `sandbox_browser_navigate` | Go to URL, wait for ready, return snapshot |
|
|
29
|
+
| `sandbox_browser_click` | Click by ref (`"e3"`) or text (`"Submit"`) |
|
|
30
|
+
| `sandbox_browser_type` | Type by ref (`"e5"`), dispatches input/change events |
|
|
31
|
+
| `sandbox_browser_content` | Page as markdown (optional selector) |
|
|
32
|
+
| `sandbox_browser_evaluate` | Run JS, reports side effects |
|
|
33
|
+
| `sandbox_browser_screenshot` | PNG screenshot (expensive, last resort) |
|
|
57
34
|
|
|
58
35
|
## Best Practices
|
|
59
36
|
|
|
60
|
-
1. Use `
|
|
61
|
-
2. Use
|
|
62
|
-
3.
|
|
63
|
-
4.
|
|
37
|
+
1. Use `sandbox_web_fetch` for HTTP — not `fetch` in sandbox_exec
|
|
38
|
+
2. Use observe to verify page state — not screenshots
|
|
39
|
+
3. Use refs from observe output in click/type — don't guess selectors
|
|
40
|
+
4. Check `sideEffects` in evaluate results
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: web-pilot
|
|
3
|
+
description: Browser automation — observe-act loop with refs
|
|
4
|
+
sandbox: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Web Pilot
|
|
8
|
+
|
|
9
|
+
## Tools
|
|
10
|
+
|
|
11
|
+
| Tool | Purpose |
|
|
12
|
+
|------|---------|
|
|
13
|
+
| `sandbox_browser_observe` | Text snapshot: URL, title, headings, textExcerpt, elements with refs |
|
|
14
|
+
| `sandbox_browser_navigate` | Go to URL, wait for ready, return snapshot with textExcerpt |
|
|
15
|
+
| `sandbox_browser_click` | Click by ref (e.g. "e3") or visible text |
|
|
16
|
+
| `sandbox_browser_type` | Type into input by ref (e.g. "e5") |
|
|
17
|
+
| `sandbox_browser_content` | Page as markdown (optional CSS selector) |
|
|
18
|
+
| `sandbox_browser_evaluate` | Run JS, reports side effects |
|
|
19
|
+
| `sandbox_browser_screenshot` | PNG screenshot (expensive, last resort) |
|
|
20
|
+
| `sandbox_web_search` | Search DuckDuckGo for URLs |
|
|
21
|
+
|
|
22
|
+
## Workflow: Observe → Act → Observe
|
|
23
|
+
|
|
24
|
+
1. **Navigate** → returns snapshot with element refs
|
|
25
|
+
2. **Act** using refs from snapshot: `click({ ref: "e3" })` or `type({ ref: "e5", text: "hello" })`
|
|
26
|
+
3. **Observe** → verify action worked
|
|
27
|
+
4. Repeat. Screenshot only if text can't answer your question.
|
|
28
|
+
|
|
29
|
+
## Refs
|
|
30
|
+
|
|
31
|
+
Observe output lists elements like:
|
|
32
|
+
```
|
|
33
|
+
- button "Submit" [ref=e1]
|
|
34
|
+
- textbox [ref=e2] name=email placeholder="Enter email"
|
|
35
|
+
- link "Home" [ref=e3]
|
|
36
|
+
```
|
|
37
|
+
Use refs in click/type: `{ "ref": "e1" }`. Refs update on each observe — always use latest.
|
|
38
|
+
|
|
39
|
+
## Data Extraction Strategy
|
|
40
|
+
|
|
41
|
+
1. **Check textExcerpt first** — observe/navigate returns the first 2000 chars of visible text. For many tasks this is enough.
|
|
42
|
+
2. **Use content(selector)** over content() — target a specific section (e.g. `{ selector: "main" }` or `{ selector: ".repo-list" }`) to avoid huge dumps.
|
|
43
|
+
3. **Use evaluate() for structured extraction** — `evaluate({ expression: "..." })` with JS that returns exactly the data you need (e.g. `[...document.querySelectorAll('.repo')].map(...)`)
|
|
44
|
+
4. **Prefer web_fetch for read-only pages** — if you just need page content without interaction, `sandbox_web_fetch` is cheaper than navigating.
|
|
45
|
+
5. **Never repeat a failed approach** — if a tool call returns nothing useful, switch to a different strategy immediately.
|
|
46
|
+
|
|
47
|
+
## Patterns
|
|
48
|
+
|
|
49
|
+
- **Click by text:** `{ "text": "Accept cookies" }` (when ref unavailable)
|
|
50
|
+
- **Scroll:** evaluate `window.scrollBy(0, 500)` then observe
|
|
51
|
+
- **Dropdown:** evaluate with value set + change event dispatch
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-orcha",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
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,7 +34,7 @@
|
|
|
34
34
|
"LICENSE"
|
|
35
35
|
],
|
|
36
36
|
"scripts": {
|
|
37
|
-
"dev": "node --watch src/index.ts",
|
|
37
|
+
"dev": "WORKSPACE=${WORKSPACE:-./templates} node --watch src/index.ts",
|
|
38
38
|
"build": "tsc && npm run copy-assets",
|
|
39
39
|
"copy-assets": "mkdir -p dist && cp -r public dist/ && cp -r templates dist/",
|
|
40
40
|
"start": "node dist/src/index.js",
|
|
@@ -42,7 +42,9 @@
|
|
|
42
42
|
"lint": "eslint src lib --ext .ts",
|
|
43
43
|
"typecheck": "tsc --noEmit",
|
|
44
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'"
|
|
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'",
|
|
46
|
+
"docker": "docker compose up --build --watch",
|
|
47
|
+
"docker:auth": "AUTH_PASSWORD=${AUTH_PASSWORD:-password} docker compose up --build --watch"
|
|
46
48
|
},
|
|
47
49
|
"dependencies": {
|
|
48
50
|
"@anthropic-ai/sdk": "^0.76.0",
|
|
@@ -55,9 +57,11 @@
|
|
|
55
57
|
"fastify": "^5.2.0",
|
|
56
58
|
"fastify-plugin": "^5.1.0",
|
|
57
59
|
"glob": "^11.0.0",
|
|
60
|
+
"imapflow": "^1.2.10",
|
|
58
61
|
"jsdom": "^28.1.0",
|
|
59
62
|
"mysql2": "^3.12.0",
|
|
60
63
|
"node-cron": "^4.2.1",
|
|
64
|
+
"nodemailer": "^8.0.1",
|
|
61
65
|
"openai": "^6.22.0",
|
|
62
66
|
"pg": "^8.13.2",
|
|
63
67
|
"pino": "^10.2.1",
|
|
@@ -72,6 +76,7 @@
|
|
|
72
76
|
"@types/jsdom": "^27.0.0",
|
|
73
77
|
"@types/node": "^22.10.5",
|
|
74
78
|
"@types/node-cron": "^3.0.11",
|
|
79
|
+
"@types/nodemailer": "^7.0.11",
|
|
75
80
|
"@types/pg": "^8.11.10",
|
|
76
81
|
"@types/ws": "^8.18.1",
|
|
77
82
|
"eslint": "^9.17.0",
|