Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
2c65b19
feat(process-engine): add Application Service Integration Tests
oleksandr-korin Jan 17, 2026
bac0d5b
feat(process-engine): implement Execution Recovery on Startup (IT5 P0)
oleksandr-korin Jan 17, 2026
d9a3c9c
[PE-IT5-P1] Implement Access Control and Audit Logging
oleksandr-korin Jan 17, 2026
2dbd0f0
[PE-Manual] Add manual testing infrastructure with 22 test cases
oleksandr-korin Jan 17, 2026
f65c471
[PE-Manual] Complete Tier 1 testing with fixes
oleksandr-korin Jan 17, 2026
0a375fc
[Agent] Auto-inject CLAUDE.md during deploy-local
oleksandr-korin Jan 17, 2026
b922aa2
[PE-Manual] Complete Tier 2 testing (4/4 PASS)
oleksandr-korin Jan 17, 2026
554d591
[PE-Manual] Complete Tier 3 testing (3/4 PASS)
oleksandr-korin Jan 17, 2026
d355ed6
[PE-Manual] Complete Tier 4 testing (4/5 PASS)
oleksandr-korin Jan 17, 2026
d41cf3e
[PE-Manual] Complete Tier 5 testing (4/5 PASS) - ALL TIERS DONE
oleksandr-korin Jan 17, 2026
28a0a81
[PE-Manual] Add UI approval testing observations
oleksandr-korin Jan 17, 2026
8fab815
[PE-Manual] Complete interactive testing (I1-I4)
oleksandr-korin Jan 17, 2026
454da55
[PE] Fix timeout handling + approval timeout check (21/22 passing)
oleksandr-korin Jan 18, 2026
35cd06e
[UI] Improve approval visibility and UX
oleksandr-korin Jan 18, 2026
1c5bdb6
[UI] Fix awaiting approval badge in executions list
oleksandr-korin Jan 18, 2026
f1d3b83
[Feature] Phase 6 Onboarding & Documentation - Sprint 7+8
oleksandr-korin Jan 18, 2026
3f753fc
[PE-E20-05] Onboarding UX polish - context-aware hints and restart
oleksandr-korin Jan 18, 2026
db4d6dd
[PE-E21] Add Sprint 8.5 stories for pattern docs and learning path
oleksandr-korin Jan 18, 2026
7111de5
[PE-E21-04,05,06] Documentation content - getting started and reference
oleksandr-korin Jan 18, 2026
606626c
[PE-E20-01,02] Empty state and onboarding checklist improvements
oleksandr-korin Jan 18, 2026
412ab61
[PE-E21-07] Pattern documentation - sequential, parallel, approvals
oleksandr-korin Jan 18, 2026
e2eff22
[PE-E21-08] Add notification and sub_process step types documentation
oleksandr-korin Jan 18, 2026
b331277
[PE-E21-09] Progressive learning path with tutorials
oleksandr-korin Jan 18, 2026
38e6f3f
[PE-E21] Mark Sprint 8.5 stories as done
oleksandr-korin Jan 18, 2026
dca6dae
[PE] Mount process-docs volume in backend container
oleksandr-korin Jan 18, 2026
4f9207e
[PE] Improve restart onboarding button visibility + doc refinements
oleksandr-korin Jan 19, 2026
1d98dc2
[PE] Sprint 9: Contextual help and UX improvements
oleksandr-korin Jan 19, 2026
e54fa03
[PE] Update backlog: Sprint 9 complete (15/21 stories done)
oleksandr-korin Jan 19, 2026
4351e1f
[PE] Add onboarding manual test cases
oleksandr-korin Jan 19, 2026
508618c
[PE] Fix onboarding checklist 'See above' hint logic
oleksandr-korin Jan 19, 2026
00bfc7f
[PE] Improve onboarding UX: focus current step, mute future steps
oleksandr-korin Jan 19, 2026
0859e1a
[PE] Mute optional checklist items until required steps complete
oleksandr-korin Jan 19, 2026
01c852e
[PE] Add manual trigger type support
oleksandr-korin Jan 19, 2026
3fbe531
[PE] Add celebration animation when completing onboarding steps
oleksandr-korin Jan 19, 2026
974beec
[PE] Mount process-templates directory in backend container
oleksandr-korin Jan 19, 2026
f4ea2b0
[PE] Fix route ordering for template preview/use endpoints
oleksandr-korin Jan 19, 2026
974bc52
[PE] Make Quick Help panel mobile-friendly with slide-over drawer
oleksandr-korin Jan 19, 2026
0758df8
[PE] Improve Execute Process dialog with smart input form
oleksandr-korin Jan 19, 2026
9cb6a29
[PE] Fix null check in handleCancel and handleRetry
oleksandr-korin Jan 19, 2026
a546c5c
[PE] Fix step.error type handling in getStepStatusExplanation
oleksandr-korin Jan 19, 2026
e565740
[PE] Add contextual help for error codes in execution timeline
oleksandr-korin Jan 19, 2026
6b207c7
[PE] Enforce ordering in onboarding checklist
oleksandr-korin Jan 19, 2026
8c94285
[PE] Hide Quick Help panel by default on mobile screens
oleksandr-korin Jan 19, 2026
17bb032
[PE] Fix process templates: use 'source' instead of 'value' in outputs
oleksandr-korin Jan 19, 2026
cf13fac
[PE] Fix content-review template: use valid step types
oleksandr-korin Jan 19, 2026
0edb6d7
[FE] Fix template name placeholder replacement
oleksandr-korin Jan 19, 2026
893caa8
[PE] Fix template version format: 1.0.0 -> 1.0
oleksandr-korin Jan 19, 2026
91a0dd9
[FE] Fix UI state after creating new process
oleksandr-korin Jan 19, 2026
2b927ec
[FE] Add Archive button for published processes
oleksandr-korin Jan 19, 2026
11fce79
[FE] Move Docs tab to last position in process subnav
oleksandr-korin Jan 19, 2026
7cd8b77
[FE] Add hollow play icon next to Execute in onboarding checklist
oleksandr-korin Jan 19, 2026
f0c2feb
[DOC] Remove Epic E23 (Guided Tours) from onboarding backlog
oleksandr-korin Jan 19, 2026
86a8adc
[DOC] Remove E21-03 (Docs Search) from onboarding backlog
oleksandr-korin Jan 19, 2026
afedd5a
[DOC] Remove E22-02 (Smart Tooltips) from onboarding backlog
oleksandr-korin Jan 19, 2026
0aa1a92
[FE] Implement First Process Wizard (E24)
oleksandr-korin Jan 19, 2026
6fe4065
[DOC] Mark E24 (First Process Wizard) as complete
oleksandr-korin Jan 19, 2026
1f47438
[UI] Add wizard suggestion to template selector page
oleksandr-korin Jan 19, 2026
6fcecc3
[DOC] Add Epic E25: Process Creation Chat Assistant
oleksandr-korin Jan 19, 2026
d87eb82
[FEATURE] Implement Process Creation Chat Assistant (E25)
oleksandr-korin Jan 19, 2026
9b849cc
[DOC] Mark E25 (Process Creation Chat Assistant) as complete
oleksandr-korin Jan 19, 2026
eb23e31
[UX] Improve Process Assistant chat experience
oleksandr-korin Jan 19, 2026
e08698a
[FEATURE] Add validation error support to Process Assistant
oleksandr-korin Jan 19, 2026
88ed871
[FEATURE] Persist Process Assistant chat to localStorage
oleksandr-korin Jan 19, 2026
7cdeb6b
[UX] Add typing animation to Process Assistant responses
oleksandr-korin Jan 19, 2026
2e1d1bf
[UX] Auto-sync YAML and selection-to-chat features
oleksandr-korin Jan 19, 2026
ad1b877
[Prompt] Make assistant proactive with YAML edits
oleksandr-korin Jan 19, 2026
66957c0
[Chat] Make assistant aware of process status (published/archived)
oleksandr-korin Jan 19, 2026
ad42524
[Cleanup] Minor whitespace fix
oleksandr-korin Jan 19, 2026
ecf65e2
[DOC] Add changelog entry for onboarding & chat assistant features
oleksandr-korin Jan 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 147 additions & 0 deletions config/agent-templates/trinity-system/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -393,3 +393,150 @@ As the system agent, you have:
| `agents_healthy` | gauge | Agents in healthy state |
| `agents_unhealthy` | gauge | Agents with issues |
| `system_health` | status | Overall platform health |

---

## Process Creation Assistant

When users ask for help creating a process (workflow automation), you become a friendly Process Creation Assistant.

### Conversation Style

BE CONVERSATIONAL:
- Talk like a helpful colleague, not a documentation bot
- Ask ONE question at a time - don't overwhelm with lists
- Keep responses short (2-3 sentences unless generating YAML)
- Build understanding through natural back-and-forth dialogue
- NEVER use markdown bold (**text**) - just write naturally

APPROACH:
1. First understand what they want to accomplish in simple terms
2. Then ask about who/what should do the work
3. Then ask if humans need to approve anything
4. Only generate YAML when you have enough information

BE PROACTIVE WITH EDITS:
- When users ask to change something, IMMEDIATELY show the updated YAML
- Don't ask "want me to show you?" - just show the change
- Briefly explain what you changed, then include the full updated YAML
- Example: "Done! I removed the depends_on to make them parallel:" followed by the YAML

GOOD RESPONSE EXAMPLE:
"That sounds like a content review workflow! Who typically reviews the content before it goes live?"

BAD RESPONSE EXAMPLE:
"**Great choice!** Here are some questions:
- What type of content?
- Who reviews it?
- What happens after approval?"

### Technical Reference (for YAML generation)

Step types: `agent_task`, `human_approval`, `gateway`, `notification`, `sub_process`

### YAML Schema Reference

CRITICAL: Fields go directly in the step, NOT nested in a "config" block!

```yaml
name: my-process-name # Required, kebab-case
version: "1.0" # Major.minor format
description: "What this does"

trigger:
type: manual # manual | schedule | webhook

steps:
- id: step-1
name: "First Step"
type: agent_task
agent: "my-agent" # Required - directly in step
message: "Do something" # Required - directly in step

- id: step-2
name: "Approval Gate"
type: human_approval
depends_on: [step-1]
approvers: ["admin@example.com"] # Directly in step
timeout_hours: 24

- id: step-3
name: "Notify Team"
type: notification
depends_on: [step-2]
channel: email
recipients: ["team@example.com"]
message: "Process completed!"
```

### Workflow Patterns

**Sequential (one after another):**
```yaml
steps:
- id: a
- id: b
depends_on: [a]
- id: c
depends_on: [b]
```

**Parallel (run simultaneously):**
```yaml
steps:
- id: a
- id: b # No depends_on = runs in parallel with a
- id: c
depends_on: [a, b] # Waits for both
```

**Approval workflow:**
```yaml
steps:
- id: prepare
type: agent_task
- id: review
type: human_approval
depends_on: [prepare]
- id: execute
type: agent_task
depends_on: [review]
```

### Best Practices for Generated YAML

1. **Use descriptive names** - `analyze-customer-feedback` not `step1`
2. **Add comments** - Help users understand each step
3. **Use variable interpolation** - `{{input.fieldName}}` for inputs
4. **Include error handling** - Set appropriate timeouts
5. **Keep it simple** - Start minimal, user can expand later

### Example Conversation

**User:** "I want to automate content review before publishing"

**You should:**
1. Ask what content (blog, social, docs?)
2. Ask who needs to approve
3. Check what agents are available: `mcp__trinity__list_agents`
4. Generate YAML with:
- Analysis step (agent_task)
- Review step (human_approval)
- Publish/notify step

**Output format:**
Always wrap generated YAML in \`\`\`yaml code blocks so the UI can detect and offer "Apply to Editor" functionality.

### Using MCP Tools

You can help users by checking available resources:

```
mcp__trinity__list_agents # Show available agents with status
mcp__trinity__get_agent # Get details about a specific agent
```

When suggesting agents:
- Note which are running vs stopped
- Suggest starting stopped agents if needed
- Match agent capabilities to task requirements
233 changes: 233 additions & 0 deletions config/process-docs/editor-help.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,233 @@
{
"name": {
"title": "Process Name",
"description": "A unique identifier for your process. Used in URLs and API calls.",
"type": "string",
"required": true,
"example": "content-review-workflow",
"docs_link": "/processes/docs/reference/yaml-schema"
},
"version": {
"title": "Version",
"description": "Semantic version of your process definition. Increment when making changes.",
"type": "string",
"required": false,
"default": "1.0",
"example": "1.0.0",
"docs_link": "/processes/docs/reference/yaml-schema"
},
"description": {
"title": "Description",
"description": "Human-readable description of what this process does. Shown in the process list.",
"type": "string",
"required": false,
"example": "Automates content review with AI analysis and human approval"
},
"triggers": {
"title": "Triggers",
"description": "Define how this process can be started. Processes can have multiple triggers.",
"type": "array",
"required": true,
"example": "triggers:\n - type: manual\n id: manual-start",
"docs_link": "/processes/docs/reference/triggers"
},
"triggers.type": {
"title": "Trigger Type",
"description": "How the process is started: 'manual' (user-initiated), 'webhook' (HTTP POST), or 'schedule' (cron).",
"type": "string",
"required": true,
"options": ["manual", "webhook", "schedule"],
"docs_link": "/processes/docs/reference/triggers"
},
"triggers.id": {
"title": "Trigger ID",
"description": "Unique identifier for this trigger within the process.",
"type": "string",
"required": true,
"example": "daily-trigger"
},
"triggers.schedule": {
"title": "Schedule (Cron)",
"description": "Cron expression for scheduled triggers. Format: minute hour day-of-month month day-of-week.",
"type": "string",
"required": false,
"example": "0 9 * * MON-FRI",
"docs_link": "/processes/docs/reference/triggers"
},
"steps": {
"title": "Steps",
"description": "The sequence of tasks that make up your workflow. Steps can run sequentially or in parallel.",
"type": "array",
"required": true,
"docs_link": "/processes/docs/getting-started/step-types"
},
"steps.id": {
"title": "Step ID",
"description": "Unique identifier for this step. Referenced by depends_on and variable interpolation.",
"type": "string",
"required": true,
"example": "analyze-content"
},
"steps.name": {
"title": "Step Name",
"description": "Human-readable name shown in the execution timeline.",
"type": "string",
"required": false,
"example": "Analyze Content Quality"
},
"steps.type": {
"title": "Step Type",
"description": "The type of step determines what action is performed.",
"type": "string",
"required": true,
"options": ["agent_task", "human_approval", "gateway", "timer", "notification", "sub_process"],
"docs_link": "/processes/docs/getting-started/step-types"
},
"steps.agent": {
"title": "Agent",
"description": "The agent (by name or ID) that will execute this task. Must be a running agent.",
"type": "string",
"required": true,
"example": "content-reviewer"
},
"steps.message": {
"title": "Message/Prompt",
"description": "The instruction sent to the agent. Supports variable interpolation with {{...}} syntax.",
"type": "string",
"required": true,
"example": "Analyze this content: {{input.content}}",
"docs_link": "/processes/docs/reference/variables"
},
"steps.depends_on": {
"title": "Dependencies",
"description": "List of step IDs that must complete before this step runs. Creates sequential/parallel flow.",
"type": "array",
"required": false,
"example": "depends_on:\n - step-1\n - step-2",
"docs_link": "/processes/docs/patterns/sequential"
},
"steps.timeout": {
"title": "Timeout",
"description": "Maximum time this step can run. Format: number + unit (s, m, h). Step fails if exceeded.",
"type": "string",
"required": false,
"default": "30m",
"example": "10m"
},
"steps.output_key": {
"title": "Output Key",
"description": "Name for storing this step's output. Access later with {{steps.step_id.output.key}}.",
"type": "string",
"required": false,
"example": "analysis_result"
},
"steps.title": {
"title": "Approval Title",
"description": "Title shown in the approval dialog for human_approval steps.",
"type": "string",
"required": false,
"example": "Content Review Required"
},
"steps.description": {
"title": "Approval Description",
"description": "Detailed description shown to approvers. Supports variable interpolation.",
"type": "string",
"required": false
},
"steps.assignees": {
"title": "Assignees",
"description": "List of users who can approve this step. If empty, any user can approve.",
"type": "array",
"required": false,
"example": "assignees:\n - alice\n - bob"
},
"steps.gateway_type": {
"title": "Gateway Type",
"description": "How routing decisions are made: 'exclusive' (first match), 'parallel' (all routes).",
"type": "string",
"required": false,
"default": "exclusive",
"options": ["exclusive", "parallel"],
"docs_link": "/processes/docs/patterns/parallel"
},
"steps.routes": {
"title": "Gateway Routes",
"description": "Conditional routing rules for gateway steps. Each route has a condition and target.",
"type": "array",
"required": false,
"docs_link": "/processes/docs/getting-started/step-types"
},
"steps.routes.condition": {
"title": "Route Condition",
"description": "Expression that determines if this route is taken. Uses {{...}} variable syntax.",
"type": "string",
"required": true,
"example": "{{steps.analyze.output.score}} >= 80"
},
"steps.routes.target": {
"title": "Route Target",
"description": "Step ID to execute if this route's condition is true.",
"type": "string",
"required": true
},
"steps.default_route": {
"title": "Default Route",
"description": "Step ID to execute if no route conditions match.",
"type": "string",
"required": false
},
"steps.delay": {
"title": "Timer Delay",
"description": "How long to wait for timer steps. Format: number + unit (s, m, h, d).",
"type": "string",
"required": true,
"example": "30m"
},
"steps.process_id": {
"title": "Sub-Process ID",
"description": "The ID of another process to execute as a sub-process.",
"type": "string",
"required": true,
"docs_link": "/processes/docs/getting-started/step-types"
},
"steps.channel": {
"title": "Notification Channel",
"description": "Where to send notifications: 'email', 'slack', or 'webhook'.",
"type": "string",
"required": true,
"options": ["email", "slack", "webhook"]
},
"steps.recipients": {
"title": "Recipients",
"description": "List of recipients for the notification. Format depends on channel type.",
"type": "array",
"required": false,
"example": "recipients:\n - user@example.com"
},
"outputs": {
"title": "Outputs",
"description": "Define process outputs that can be accessed after completion.",
"type": "array",
"required": false,
"docs_link": "/processes/docs/reference/yaml-schema"
},
"outputs.name": {
"title": "Output Name",
"description": "Name for this output value.",
"type": "string",
"required": true
},
"outputs.value": {
"title": "Output Value",
"description": "Expression to compute the output value. Uses {{...}} variable syntax.",
"type": "string",
"required": true,
"example": "{{steps.final-step.output}}"
},
"default": {
"title": "YAML Process Definition",
"description": "Define automated workflows using YAML. Processes orchestrate AI agents through steps with dependencies, conditions, and approvals.",
"type": "object",
"docs_link": "/processes/docs/getting-started/what-are-processes"
}
}
Loading