ci / test (push) Successful in 1m50s
- Better describes the intent: awaiting task completion via queue - More descriptive than 'await-kmsvc' - Applied to all workflow design documents - Reflects the actual operation: wait for external task to complete Updated files: - DESIGN_MASTER_REVIEW.md - SERVICE_INTEGRATION.md - IMPLEMENTATION_PLAN.md - CLI_DESIGN.md - FINAL_COMPREHENSIVE_DESIGN.md
82 lines
2.0 KiB
Markdown
82 lines
2.0 KiB
Markdown
# Poimen CLI — Dynamic JSON-Based Design
|
|
|
|
## Overview
|
|
|
|
New CLI (`cmd/cli`) that accepts JSON WorkflowSpecs and dynamically understands activity sequences—same mechanism as HTTP API, but command-line interface.
|
|
|
|
## Key Commands
|
|
|
|
```bash
|
|
# Submit workflow from JSON
|
|
poimen-cli submit workflow.json
|
|
poimen-cli submit workflow.json --wait
|
|
poimen-cli submit workflow.json --watch
|
|
|
|
# Check status
|
|
poimen-cli status wf-abc123
|
|
poimen-cli status wf-abc123 --wait
|
|
|
|
# Template management
|
|
poimen-cli template list
|
|
poimen-cli template show code-review-v1
|
|
|
|
# Execute immediately (sync)
|
|
poimen-cli execute template code-review-v1 --input-file input.json
|
|
```
|
|
|
|
## Workflow JSON Example
|
|
|
|
```json
|
|
{
|
|
"name": "code-review-pipeline",
|
|
"input": {"repo": "https://github.com/..."},
|
|
"activities": [
|
|
{
|
|
"name": "Clone",
|
|
"resource": "CloneRepoActivity",
|
|
"parameters": {"repo": "${input.repo}"},
|
|
"timeout": "5m",
|
|
"next": "Analyze"
|
|
},
|
|
{
|
|
"name": "Analyze",
|
|
"resource": "AnalyzeCodeActivity",
|
|
"parameters": {"path": "${Clone.output.path}"},
|
|
"timeout": "10m",
|
|
"retry": {"maxAttempts": 3},
|
|
"catch": [{"errorEquals": ["Timeout"], "next": "HandleTimeout"}],
|
|
"next": "Judge"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
## File Structure
|
|
|
|
```
|
|
cmd/
|
|
├─ cli/ (NEW)
|
|
│ ├─ main.go
|
|
│ └─ commands/
|
|
│ ├─ submit.go
|
|
│ ├─ status.go
|
|
│ ├─ template.go
|
|
│ ├─ execute.go
|
|
│ └─ history.go
|
|
├─ starter/ (OLD: keep for backward compat)
|
|
└─ worker/
|
|
```
|
|
|
|
## Three Entry Points (Same Core)
|
|
|
|
| Interface | Endpoint | Input | Output |
|
|
|-----------|----------|-------|--------|
|
|
| **CLI** | `submit workflow.json` | JSON file | workflow_id |
|
|
| **CLI** | `execute template T` | Template name | Results (sync) |
|
|
| **API** | `POST /api/v1/workflows` | JSON body | workflow_id |
|
|
| **API** | `POST /api/v1/execute` | JSON body | Results (sync) |
|
|
|
|
All use same `RoutingWorkflow` internally—just different interfaces.
|
|
|
|
See CLI_DESIGN.md in repo for full implementation details.
|