@coralai/sps-cli 0.37.2 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. package/README.md +27 -63
  2. package/dist/commands/acpCommand.js +3 -3
  3. package/dist/commands/acpCommand.js.map +1 -1
  4. package/dist/commands/agentCommand.d.ts.map +1 -1
  5. package/dist/commands/agentCommand.js +12 -15
  6. package/dist/commands/agentCommand.js.map +1 -1
  7. package/dist/commands/agentDaemon.js +1 -1
  8. package/dist/commands/agentDaemon.js.map +1 -1
  9. package/dist/commands/cardAdd.js +1 -1
  10. package/dist/commands/cardAdd.js.map +1 -1
  11. package/dist/commands/cardDashboard.js +1 -1
  12. package/dist/commands/cardDashboard.js.map +1 -1
  13. package/dist/commands/doctor.d.ts.map +1 -1
  14. package/dist/commands/doctor.js +11 -30
  15. package/dist/commands/doctor.js.map +1 -1
  16. package/dist/commands/pipelineRunner.js +1 -1
  17. package/dist/commands/pipelineRunner.js.map +1 -1
  18. package/dist/commands/pipelineTick.d.ts.map +1 -1
  19. package/dist/commands/pipelineTick.js +1 -1
  20. package/dist/commands/pipelineTick.js.map +1 -1
  21. package/dist/commands/projectInit.d.ts.map +1 -1
  22. package/dist/commands/projectInit.js +2 -12
  23. package/dist/commands/projectInit.js.map +1 -1
  24. package/dist/commands/qaTick.d.ts.map +1 -1
  25. package/dist/commands/qaTick.js +1 -1
  26. package/dist/commands/qaTick.js.map +1 -1
  27. package/dist/commands/reset.js +1 -1
  28. package/dist/commands/reset.js.map +1 -1
  29. package/dist/commands/setup.d.ts.map +1 -1
  30. package/dist/commands/setup.js +16 -30
  31. package/dist/commands/setup.js.map +1 -1
  32. package/dist/commands/tick.d.ts.map +1 -1
  33. package/dist/commands/tick.js +16 -1
  34. package/dist/commands/tick.js.map +1 -1
  35. package/dist/commands/workerDashboard.d.ts.map +1 -1
  36. package/dist/commands/workerDashboard.js +10 -60
  37. package/dist/commands/workerDashboard.js.map +1 -1
  38. package/dist/commands/workerLaunch.d.ts.map +1 -1
  39. package/dist/commands/workerLaunch.js +1 -1
  40. package/dist/commands/workerLaunch.js.map +1 -1
  41. package/dist/commands/workerPs.d.ts +1 -1
  42. package/dist/commands/workerPs.d.ts.map +1 -1
  43. package/dist/commands/workerPs.js +3 -3
  44. package/dist/commands/workerPs.js.map +1 -1
  45. package/dist/core/config.d.ts +0 -2
  46. package/dist/core/config.d.ts.map +1 -1
  47. package/dist/core/config.js +0 -2
  48. package/dist/core/config.js.map +1 -1
  49. package/dist/core/config.test.js +12 -14
  50. package/dist/core/config.test.js.map +1 -1
  51. package/dist/core/context.d.ts +0 -1
  52. package/dist/core/context.d.ts.map +1 -1
  53. package/dist/core/context.js +0 -1
  54. package/dist/core/context.js.map +1 -1
  55. package/dist/core/logger.js +1 -1
  56. package/dist/core/logger.js.map +1 -1
  57. package/dist/core/memory.js.map +1 -1
  58. package/dist/core/pipelineConfig.d.ts +1 -1
  59. package/dist/core/pipelineConfig.d.ts.map +1 -1
  60. package/dist/core/projectPipelineAdapter.d.ts +1 -1
  61. package/dist/core/projectPipelineAdapter.d.ts.map +1 -1
  62. package/dist/core/projectPipelineAdapter.js +4 -5
  63. package/dist/core/projectPipelineAdapter.js.map +1 -1
  64. package/dist/core/queue.d.ts.map +1 -1
  65. package/dist/core/queue.js.map +1 -1
  66. package/dist/core/runtimeStore.d.ts.map +1 -1
  67. package/dist/core/runtimeStore.js.map +1 -1
  68. package/dist/core/sessionCleanup.d.ts +18 -0
  69. package/dist/core/sessionCleanup.d.ts.map +1 -0
  70. package/dist/core/sessionCleanup.js +97 -0
  71. package/dist/core/sessionCleanup.js.map +1 -0
  72. package/dist/core/sessionCleanup.test.d.ts +2 -0
  73. package/dist/core/sessionCleanup.test.d.ts.map +1 -0
  74. package/dist/core/sessionCleanup.test.js +158 -0
  75. package/dist/core/sessionCleanup.test.js.map +1 -0
  76. package/dist/core/sessionContext.d.ts +0 -3
  77. package/dist/core/sessionContext.d.ts.map +1 -1
  78. package/dist/core/sessionContext.js +1 -4
  79. package/dist/core/sessionContext.js.map +1 -1
  80. package/dist/core/sessionLiveness.d.ts +1 -1
  81. package/dist/core/sessionLiveness.d.ts.map +1 -1
  82. package/dist/core/sessionLiveness.js +1 -1
  83. package/dist/core/sessionLiveness.js.map +1 -1
  84. package/dist/core/state.d.ts +3 -3
  85. package/dist/core/state.d.ts.map +1 -1
  86. package/dist/core/state.test.js.map +1 -1
  87. package/dist/engines/EventHandler.d.ts.map +1 -1
  88. package/dist/engines/MonitorEngine.d.ts +1 -0
  89. package/dist/engines/MonitorEngine.d.ts.map +1 -1
  90. package/dist/engines/MonitorEngine.js +63 -0
  91. package/dist/engines/MonitorEngine.js.map +1 -1
  92. package/dist/engines/MonitorEngine.test.d.ts +2 -0
  93. package/dist/engines/MonitorEngine.test.d.ts.map +1 -0
  94. package/dist/engines/MonitorEngine.test.js +171 -0
  95. package/dist/engines/MonitorEngine.test.js.map +1 -0
  96. package/dist/engines/SchedulerEngine.js +1 -1
  97. package/dist/engines/SchedulerEngine.js.map +1 -1
  98. package/dist/engines/StageEngine.d.ts +1 -2
  99. package/dist/engines/StageEngine.d.ts.map +1 -1
  100. package/dist/engines/StageEngine.js +4 -6
  101. package/dist/engines/StageEngine.js.map +1 -1
  102. package/dist/engines/engine-pipeline-adapter.test.js +2 -4
  103. package/dist/engines/engine-pipeline-adapter.test.js.map +1 -1
  104. package/dist/main.js +1 -1
  105. package/dist/main.js.map +1 -1
  106. package/dist/manager/completion-judge.test.js +1 -1
  107. package/dist/manager/completion-judge.test.js.map +1 -1
  108. package/dist/manager/pm-client.js.map +1 -1
  109. package/dist/manager/runtime-coordinator.d.ts +2 -2
  110. package/dist/manager/runtime-coordinator.d.ts.map +1 -1
  111. package/dist/manager/runtime-coordinator.js +3 -3
  112. package/dist/manager/runtime-coordinator.js.map +1 -1
  113. package/dist/manager/supervisor.d.ts +2 -3
  114. package/dist/manager/supervisor.d.ts.map +1 -1
  115. package/dist/manager/supervisor.js +3 -12
  116. package/dist/manager/supervisor.js.map +1 -1
  117. package/dist/manager/supervisor.test.js +4 -4
  118. package/dist/manager/supervisor.test.js.map +1 -1
  119. package/dist/manager/worker-manager-impl.js +2 -2
  120. package/dist/manager/worker-manager-impl.js.map +1 -1
  121. package/dist/manager/worker-manager-impl.test.js.map +1 -1
  122. package/dist/manager/worker-manager.d.ts +2 -2
  123. package/dist/manager/worker-manager.d.ts.map +1 -1
  124. package/dist/models/acp.d.ts +1 -1
  125. package/dist/models/acp.d.ts.map +1 -1
  126. package/dist/providers/ACPWorkerRuntime.d.ts.map +1 -1
  127. package/dist/providers/ACPWorkerRuntime.js +2 -2
  128. package/dist/providers/ACPWorkerRuntime.js.map +1 -1
  129. package/dist/providers/MarkdownTaskBackend.js +1 -1
  130. package/dist/providers/MarkdownTaskBackend.js.map +1 -1
  131. package/dist/providers/PlaneTaskBackend.js +1 -1
  132. package/dist/providers/PlaneTaskBackend.js.map +1 -1
  133. package/dist/providers/adapters/AcpSdkAdapter.d.ts.map +1 -1
  134. package/dist/providers/adapters/AcpSdkAdapter.js +1 -3
  135. package/dist/providers/adapters/AcpSdkAdapter.js.map +1 -1
  136. package/dist/providers/adapters/acp-permissions.test.js.map +1 -1
  137. package/dist/providers/outputParser.d.ts +0 -6
  138. package/dist/providers/outputParser.d.ts.map +1 -1
  139. package/dist/providers/outputParser.js +0 -33
  140. package/dist/providers/outputParser.js.map +1 -1
  141. package/dist/providers/outputParser.test.js +1 -34
  142. package/dist/providers/outputParser.test.js.map +1 -1
  143. package/dist/providers/registry.d.ts +0 -2
  144. package/dist/providers/registry.d.ts.map +1 -1
  145. package/dist/providers/streamRenderer.d.ts +0 -4
  146. package/dist/providers/streamRenderer.d.ts.map +1 -1
  147. package/dist/providers/streamRenderer.js +0 -35
  148. package/dist/providers/streamRenderer.js.map +1 -1
  149. package/package.json +1 -1
  150. package/project-template/conf.template +1 -1
  151. package/skills/sps-pipeline/SKILL.md +150 -205
@@ -1 +1 @@
1
- {"version":3,"file":"streamRenderer.js","sourceRoot":"","sources":["../../src/providers/streamRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"streamRenderer.js","sourceRoot":"","sources":["../../src/providers/streamRenderer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coralai/sps-cli",
3
- "version": "0.37.2",
3
+ "version": "0.38.0",
4
4
  "description": "SPS CLI — AI-driven development pipeline orchestrator",
5
5
  "type": "module",
6
6
  "main": "dist/main.js",
@@ -43,7 +43,7 @@ export PIPELINE_LABEL="AI-PIPELINE"
43
43
  export MR_MODE="none"
44
44
 
45
45
  # ── Worker / Agent ───────────────────────────────────────────────
46
- export WORKER_TOOL="claude"
46
+ # claude is the only supported CLI; no selector exposed.
47
47
  export MAX_CONCURRENT_WORKERS=3
48
48
  # export MAX_ACTIONS_PER_TICK=1
49
49
  # export WORKER_RESTART_LIMIT=2
@@ -1,305 +1,250 @@
1
1
  ---
2
2
  name: sps-pipeline
3
3
  description: |
4
- SPS pipeline management — create YAML configs, manage task cards, start/stop pipelines,
5
- memory system, and monitor worker status. Use when asked to "create a pipeline", "set up a project",
6
- "add tasks", "start the pipeline", "check pipeline status", or manage SPS workflow.
7
- Proactively use when the user discusses project setup, task planning, or CI/CD automation. (🪸 Coral SPS)
4
+ SPS pipeline management — create projects, configure YAML pipelines, manage task cards,
5
+ start/stop pipelines, and monitor worker status. Single worker serial execution model.
6
+ Use when asked to "create a pipeline", "set up a project", "add tasks", "start the pipeline",
7
+ "check pipeline status", or manage SPS workflow. (🪸 Coral SPS)
8
8
  ---
9
9
 
10
- # SPS Pipeline Management (v0.37.0 — Single Worker Model)
10
+ # SPS Pipeline Management (v0.37.2 — Single Worker Model)
11
11
 
12
- Manage the full lifecycle of SPS development pipelines: project setup, YAML configuration, task cards, memory system, and pipeline execution.
12
+ SPS runs a single AI worker that processes task cards one at a time. Each card goes through
13
+ one or more stages (develop, review, etc.) before moving to Done. If a card fails, the
14
+ pipeline halts until the issue is resolved.
13
15
 
14
16
  ## Interactive Pipeline Creation
15
17
 
16
- When the user asks to create a pipeline, set up a project, or configure YAML, follow this guided flow:
18
+ When the user asks to create a pipeline, set up a project, or configure YAML:
17
19
 
18
20
  ### Step 1: Gather project info
19
21
 
20
22
  Ask the user:
21
- 1. **项目名称**用于 SPS 内部标识(如 `my-app`)
22
- 2. **代码仓库路径**本地路径(如 `~/projects/my-app`)
23
- 3. **Git 远程仓库** — GitLab/GitHub 项目路径(如 `user/my-app`),留空则跳过
24
- 4. **合并目标分支**默认 `main`
25
- 5. **PM 后端** — `markdown`(本地文件,零配置)/ `plane` / `trello`
23
+ 1. **Project name** — SPS identifier (e.g. `my-app`)
24
+ 2. **Repository path** local path (e.g. `~/projects/my-app`)
25
+ 3. **Git remote** — GitLab/GitHub project path (e.g. `user/my-app`), blank to skip
26
+ 4. **Target branch** default `main` or `develop`
27
+ 5. **PM backend** — `markdown` (zero-config) / `plane` / `trello`
26
28
 
27
- ### Step 2: Design the pipeline stages
29
+ ### Step 2: Design the pipeline
28
30
 
29
31
  Ask the user:
30
- 1. **项目类型** — 是否需要 git(代码开发 = git: true,文档/数据处理 = git: false)
31
- 2. **你的开发流程有几个阶段?** 常见选择:
32
- - **简单**(1 stage):处理完直接 Done
33
- - **标准**(2 stages):开发 合并(git)/ 提取 → 汇总(非 git)
34
- - **完整**(3+ stages):开发 Code Review 测试 → 合并
35
- 3. **每个阶段用什么 Agent?** `claude`(默认)/ `codex` / `gemini`
36
- 4. **需要什么 skill profile?** `frontend`、`backend`、`tax-worker`(可选)
37
- 5. **最大并发 Worker 数?** — 默认 `1`
38
-
39
- **If git: false:**
40
- - All stages MUST use `completion: exit-code` (no git-evidence or fast-forward-merge)
41
- - Workers operate directly in PROJECT_DIR, no branch/worktree isolation
42
- - Recommend MAX_CONCURRENT_WORKERS=1 or task-specific subdirectories to avoid conflicts
43
-
44
- ### CRITICAL: State Chain Rules
45
-
46
- When generating multi-stage YAML, follow these rules strictly:
47
-
48
- 1. **Each stage's `on_complete` MUST point to the NEXT stage's `trigger` state** — never skip stages, never loop back to the same state
49
- 2. **Each stage MUST have a unique `card_state`** — no two stages share the same active state
50
- 3. **The last stage's `on_complete` MUST be `"move_card Done"`**
51
- 4. **The last stage SHOULD have `queue: fifo`** and `completion: fast-forward-merge` for safe merging
52
- 5. **States flow in one direction**: Ready → Stage1Active → Stage2Active → ... → Done
53
-
54
- Example state chain for 3 stages:
55
- ```
56
- Ready → [develop] Inprogress → [code-review] CodeReview → [integrate] QA → Done
57
- trigger card_state trigger card_state trigger card_state
58
- ```
59
-
60
- WRONG patterns to avoid:
61
- - `on_complete: "move_card Done"` on a non-last stage (skips remaining stages)
62
- - `trigger: "card_enters 'Done'"` (Done is the terminal state, never trigger from it)
63
- - Two stages with same `card_state: QA` (ambiguous, both stages compete)
32
+ 1. **Project type:**
33
+ - `git: true` (default) — code project, worker commits + pushes to current branch
34
+ - `git: false` — non-code project (document processing, data tasks, no git ops)
35
+ 2. **How many stages?**
36
+ - **Simple** (1 stage): developDone
37
+ - **With review** (2 stages): develop review → Done
38
+ 3. **Skill profile?**e.g. `fullstack`, `frontend`, `backend`, `reviewer`, `tax-worker` (optional)
64
39
 
65
40
  ### Step 3: Generate and deploy
66
41
 
67
- Based on the answers:
68
42
  1. Run `sps project init <name>` if project doesn't exist
69
- 2. Generate the pipeline YAML file at `~/.coral/projects/<name>/pipelines/project.yaml`
70
- 3. Update project conf at `~/.coral/projects/<name>/conf`
71
- 4. Run `sps doctor <name> --fix` to validate
72
- 5. Show the user the generated YAML and explain each section
43
+ 2. Generate YAML at `~/.coral/projects/<name>/pipelines/project.yaml`
44
+ 3. Show the generated YAML and explain each section
73
45
 
74
- ### Pipeline YAML location
46
+ ### CRITICAL: YAML Rules
75
47
 
76
- The YAML file lives in `~/.coral/projects/<name>/pipelines/`:
77
- ```
78
- ~/.coral/projects/<name>/
79
- └── pipelines/
80
- └── project.yaml ← pipeline definition
81
- ```
48
+ 1. **`on_complete` of each stage MUST point to the next stage's target state** — no skipping, no looping
49
+ 2. **Last stage's `on_complete` MUST be `"move_card Done"`**
50
+ 3. **`trigger` and `card_state` are auto-derived** — you don't need to specify them
51
+ 4. **Completion is always `exit-code`** — worker finishes when the AI process exits
52
+ 5. **Single worker** — cards are processed one at a time, no concurrency
82
53
 
83
- ### Example conversation
84
-
85
- User: "帮我创建一个新项目的 pipeline"
86
-
87
- Agent flow:
88
- 1. Ask project name and repo path
89
- 2. Ask how many stages they want
90
- 3. Ask agent preference
91
- 4. Generate YAML + conf
92
- 5. Run doctor to validate
93
- 6. Show next steps (add cards, start pipeline)
94
-
95
- ---
96
-
97
- ## Quick Reference
98
-
99
- ### Project Setup
100
-
101
- ```bash
102
- # Install SPS CLI
103
- npm install -g @coralai/sps-cli
104
-
105
- # Initial setup (creates directories, installs skills, configures credentials)
106
- sps setup
54
+ ### YAML Examples
107
55
 
108
- # Initialize a new project
109
- sps project init <project-name>
110
-
111
- # Edit project config
112
- vim ~/.coral/projects/<project-name>/conf
113
-
114
- # Health check
115
- sps doctor <project-name> --fix
116
- ```
117
-
118
- ### Pipeline YAML Configuration
119
-
120
- Create `.sps/pipelines/<name>.yaml` in the project repo. Minimum viable config (1 stage):
56
+ **Simple (1 stage):**
121
57
 
122
58
  ```yaml
123
59
  mode: project
124
-
125
- states:
126
- backlog: Backlog
127
- ready: Todo
128
- done: Done
60
+ git: true
129
61
 
130
62
  stages:
131
63
  - name: develop
132
- trigger: "card_enters 'Todo'"
133
- card_state: Inprogress
134
64
  agent: claude
135
- completion: git-evidence
136
65
  on_complete: "move_card Done"
66
+ on_fail:
67
+ action: "label NEEDS-FIX"
68
+ halt: true
137
69
  ```
138
70
 
139
- Multi-stage example (any number of stages):
71
+ **With review (2 stages):**
140
72
 
141
73
  ```yaml
142
74
  mode: project
143
-
144
- states:
145
- backlog: Backlog
146
- ready: Ready
147
- done: Done
75
+ git: true
148
76
 
149
77
  stages:
150
78
  - name: develop
151
- trigger: "card_enters 'Ready'"
152
- card_state: Active
153
79
  agent: claude
154
80
  profile: fullstack
155
- completion: git-evidence
156
- on_complete: "move_card CodeReview"
81
+ on_complete: "move_card Review"
157
82
  on_fail:
158
83
  action: "label NEEDS-FIX"
159
- comment: "Development worker failed."
84
+ halt: true
160
85
 
161
- - name: code-review
162
- trigger: "card_enters 'CodeReview'"
163
- card_state: CodeReview
164
- agent: claude
86
+ - name: review
165
87
  profile: reviewer
166
- completion: exit-code
167
- on_complete: "move_card QA"
168
-
169
- - name: integrate
170
- trigger: "card_enters 'QA'"
171
- card_state: QA
172
- agent: claude
173
- completion: fast-forward-merge
174
88
  on_complete: "move_card Done"
175
- queue: fifo
89
+ on_fail:
90
+ action: "label REVIEW-FAILED"
91
+ halt: true
176
92
  ```
177
93
 
178
- Only 3 fixed state roles required (backlog/ready/done). All intermediate states come from each stage's `card_state` and `on_complete`.
94
+ **Non-code (data processing):**
179
95
 
180
- ### Pipeline Switching
96
+ ```yaml
97
+ mode: project
98
+ git: false
181
99
 
182
- ```bash
183
- sps pipeline list
184
- sps pipeline use <project> <pipeline-name>
100
+ stages:
101
+ - name: process
102
+ profile: tax-worker
103
+ on_complete: "move_card Done"
104
+ on_fail:
105
+ action: "label PROCESS-FAILED"
106
+ halt: true
185
107
  ```
186
108
 
187
- ### Card Management
109
+ ### YAML Location
188
110
 
189
- ```bash
190
- sps card add <project> "Task title" --desc "Description"
191
- sps card dashboard <project>
192
- sps reset <project> <seq1> <seq2> ...
111
+ ```
112
+ ~/.coral/projects/<name>/pipelines/project.yaml
193
113
  ```
194
114
 
195
- ### Pipeline Execution
115
+ ### YAML Field Reference
116
+
117
+ | Field | Required | Description |
118
+ |-------|----------|-------------|
119
+ | `mode` | yes | Always `project` |
120
+ | `git` | no | `true` (default, commit+push) or `false` (no git) |
121
+ | `stages` | yes | Array of stage definitions |
122
+ | `stages[].name` | yes | Stage name (unique) |
123
+ | `stages[].agent` | no | Accepted for backward-compat only; value ignored (claude is the only supported CLI) |
124
+ | `stages[].profile` | no | Skill profile to load |
125
+ | `stages[].on_complete` | yes | `"move_card <State>"` — next state |
126
+ | `stages[].on_fail.action` | no | `"label <LABEL>"` — add label on failure |
127
+ | `stages[].on_fail.halt` | no | `true` (default) stop pipeline / `false` continue |
128
+ | `stages[].on_fail.comment` | no | Comment text on failure |
129
+ | `stages[].timeout` | no | Max duration: `30s` / `5m` / `2h` |
130
+
131
+ ---
132
+
133
+ ## Quick Reference
134
+
135
+ ### Project Lifecycle
196
136
 
197
137
  ```bash
198
- # Start continuous pipeline
199
- sps tick <project>
200
- # or: sps pipeline start <project>
138
+ # Install
139
+ npm install -g @coralai/sps-cli
140
+
141
+ # Setup (credentials, skills, directories)
142
+ sps setup
143
+
144
+ # Initialize project (interactive)
145
+ sps project init <name>
201
146
 
202
- # Stop pipeline
203
- sps stop <project>
147
+ # Create pipeline YAML
148
+ vim ~/.coral/projects/<name>/pipelines/project.yaml
204
149
 
205
- # Check status
150
+ # Add task cards
151
+ sps card add <name> "Task title" "Description"
152
+
153
+ # Start pipeline
154
+ sps tick <name>
155
+
156
+ # Monitor
157
+ sps card dashboard <name>
158
+ sps worker ps <name>
206
159
  sps status
160
+
161
+ # Stop
162
+ sps stop <name>
207
163
  ```
208
164
 
209
- ### Worker Monitoring
165
+ ### Card Management
210
166
 
211
167
  ```bash
212
- sps worker ps <project>
213
- sps worker kill <project> <seq>
214
- sps worker dashboard <project>
168
+ sps card add <project> "Title" "Description"
169
+ sps card dashboard <project>
170
+ sps reset <project> # Reset all non-Done cards
171
+ sps reset <project> 5 6 7 # Reset specific cards
215
172
  ```
216
173
 
217
174
  ### Memory System
218
175
 
219
- Three-layer persistent memory at `~/.coral/memory/`:
220
-
221
176
  ```bash
222
- # View memory index
223
177
  sps memory list <project>
224
-
225
- # Generate memory context for prompt injection
226
178
  sps memory context <project>
227
-
228
- # Add memory entries
229
- sps memory add <project> --type convention --name "API naming" --body "Use camelCase"
230
- sps memory add <project> --type decision --name "Use PostgreSQL" --body "Concurrent writes needed"
231
- sps memory add <project> --type lesson --name "Migration order" --body "Schema first, then data"
232
- sps memory add <project> --type reference --name "Design docs" --body "figma.com/file/..."
179
+ sps memory add <project> --type convention --name "Title" --body "Content"
233
180
  ```
234
181
 
235
- Types: `convention` (no decay), `decision` (slow decay), `lesson` (30-day decay), `reference` (no decay).
182
+ Types: `convention` (no decay), `decision` (slow), `lesson` (30 days), `reference` (no decay).
236
183
 
237
- Workers receive memory in their prompt and can write new memories directly to `~/.coral/memory/projects/<name>/`.
238
-
239
- ### Skill Management
240
-
241
- ```bash
242
- sps skill sync
243
- ```
184
+ ---
244
185
 
245
- ## Architecture (Single Worker Model)
186
+ ## Architecture
246
187
 
247
188
  ```
248
- SchedulerEngine (orchestration)
249
- Backlog cards with AI-PIPELINE label → Ready
189
+ SchedulerEngine
190
+ Planning cards with AI-PIPELINE label → Backlog → Ready
250
191
 
251
- StageEngine × N (serial execution)
252
- Single worker processes one card at a time
253
- Each stage: launch worker wait completion move card
254
- → Worker runs directly in PROJECT_DIR (no worktree/branch)
255
- → Failure halts pipeline until resolved
192
+ StageEngine (single worker, serial)
193
+ Take one card run stage 1 → run stage 2 → ... → Done
194
+ FailNEEDS-FIXhalt pipeline
256
195
 
257
- MonitorEngine (monitoring)
196
+ MonitorEngine
258
197
  → Worker health check
259
198
  ```
260
199
 
261
- ## Failure Handling
200
+ ### Execution Model
262
201
 
263
- - Card fails mark NEEDS-FIX pipeline halts (halt: true)
264
- - Retry up to N times (retryCount in card frontmatter)
265
- - All retries exhausted halt, wait for manual fix
266
- - Remove NEEDS-FIX label to resume
202
+ - **One card at a time** no concurrency, no worktrees, no feature branches
203
+ - **Worker runs in PROJECT_DIR** directly on the current branch
204
+ - **git: true** worker commits and pushes to current branch
205
+ - **git: false** worker processes files, no git operations
206
+ - **Failure halts pipeline** — NEEDS-FIX label blocks next card until resolved
207
+ - **Auto-recovery** — orphaned Inprogress cards reset to Ready on tick restart
267
208
 
268
- ## Card State Flow
209
+ ### Card State Flow
269
210
 
270
211
  ```
271
- Planning → Backlog → Ready → [Stage 1] → [Stage 2] → ... → Done
272
- ↓ fail
273
- NEEDS-FIX (halt)
212
+ Planning → Backlog → Ready → Inprogress → [Review] → Done
213
+ ↓ fail
214
+ NEEDS-FIX (halt)
274
215
  ```
275
216
 
276
- ## Key Config Fields (conf)
217
+ ---
218
+
219
+ ## Config Reference (conf)
277
220
 
278
- | Field | Description | Example |
279
- |-------|-------------|---------|
280
- | `PROJECT_NAME` | Project identifier | `my-project` |
281
- | `PROJECT_DIR` | Repository path | `~/projects/my-project` |
282
- | `GITLAB_PROJECT` | Git remote project path | `user/repo` |
283
- | `GITLAB_MERGE_BRANCH` | Merge target branch | `main` |
284
- | `PM_TOOL` | PM backend | `plane` / `trello` / `markdown` |
285
- | `WORKER_TOOL` | Default AI agent | `claude` / `codex` |
286
- | `MAX_CONCURRENT_WORKERS` | Max parallel workers | `1-5` |
221
+ | Field | Description |
222
+ |-------|-------------|
223
+ | `PROJECT_NAME` | Project identifier |
224
+ | `PROJECT_DIR` | Repository path |
225
+ | `GITLAB_PROJECT` | Git remote path (optional) |
226
+ | `GITLAB_MERGE_BRANCH` | Target branch |
227
+ | `PM_TOOL` | `markdown` / `plane` / `trello` |
228
+ | `PIPELINE_LABEL` | Card label for pipeline (default: `AI-PIPELINE`) |
287
229
 
288
230
  ## Card Labels
289
231
 
290
232
  | Label | Purpose |
291
233
  |-------|---------|
292
- | `AI-PIPELINE` | Marks card for pipeline processing (required) |
293
- | `skill:xxx` | Load specific skill profile for worker |
294
- | `conflict:xxx` | Conflict domain (same domain = serial execution) |
295
- | `NEEDS-FIX` | Worker failed, needs manual fix |
296
- | `BLOCKED` | External dependency blocking |
234
+ | `AI-PIPELINE` | Required — marks card for pipeline |
235
+ | `skill:xxx` | Load specific skill profile |
236
+ | `NEEDS-FIX` | Worker failed pipeline halted |
237
+ | `BLOCKED` | External dependency |
297
238
 
298
239
  ## Troubleshooting
299
240
 
300
241
  ```bash
301
- sps doctor <project> --fix
302
- sps logs <project>
303
- ls ~/.coral/projects/<project>/logs/acp-stderr-*.log
304
- sps reset <project> <seq>
242
+ sps doctor <project> --fix # Health check
243
+ sps logs <project> # View logs
244
+ sps reset <project> <seq> # Reset stuck card
305
245
  ```
246
+
247
+ Common issues:
248
+ - **Pipeline halted** — check `sps card dashboard`, remove NEEDS-FIX label from failed card
249
+ - **Worker not starting** — check `sps worker ps`, verify API credentials
250
+ - **Cards stuck in Planning** — ensure cards have `AI-PIPELINE` label