@coralai/sps-cli 0.8.0 → 0.9.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.
- package/README.md +820 -47
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +140 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/workerDashboard.d.ts +2 -0
- package/dist/commands/workerDashboard.d.ts.map +1 -0
- package/dist/commands/workerDashboard.js +415 -0
- package/dist/commands/workerDashboard.js.map +1 -0
- package/dist/core/state.d.ts +6 -0
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/state.js +1 -0
- package/dist/core/state.js.map +1 -1
- package/dist/engines/CloseoutEngine.d.ts +7 -0
- package/dist/engines/CloseoutEngine.d.ts.map +1 -1
- package/dist/engines/CloseoutEngine.js +85 -38
- package/dist/engines/CloseoutEngine.js.map +1 -1
- package/dist/engines/ExecutionEngine.d.ts +10 -2
- package/dist/engines/ExecutionEngine.d.ts.map +1 -1
- package/dist/engines/ExecutionEngine.js +46 -50
- package/dist/engines/ExecutionEngine.js.map +1 -1
- package/dist/engines/SchedulerEngine.d.ts +5 -0
- package/dist/engines/SchedulerEngine.d.ts.map +1 -1
- package/dist/engines/SchedulerEngine.js +15 -5
- package/dist/engines/SchedulerEngine.js.map +1 -1
- package/dist/interfaces/RepoBackend.d.ts +1 -0
- package/dist/interfaces/RepoBackend.d.ts.map +1 -1
- package/dist/interfaces/WorkerProvider.d.ts +16 -0
- package/dist/interfaces/WorkerProvider.d.ts.map +1 -1
- package/dist/main.js +12 -2
- package/dist/main.js.map +1 -1
- package/dist/providers/ClaudeWorkerProvider.d.ts +13 -3
- package/dist/providers/ClaudeWorkerProvider.d.ts.map +1 -1
- package/dist/providers/ClaudeWorkerProvider.js +21 -8
- package/dist/providers/ClaudeWorkerProvider.js.map +1 -1
- package/dist/providers/CodexWorkerProvider.d.ts +11 -1
- package/dist/providers/CodexWorkerProvider.d.ts.map +1 -1
- package/dist/providers/CodexWorkerProvider.js +19 -4
- package/dist/providers/CodexWorkerProvider.js.map +1 -1
- package/dist/providers/GitLabRepoBackend.d.ts +1 -0
- package/dist/providers/GitLabRepoBackend.d.ts.map +1 -1
- package/dist/providers/GitLabRepoBackend.js +36 -0
- package/dist/providers/GitLabRepoBackend.js.map +1 -1
- package/package.json +2 -2
- package/project-template/batch_scheduler.sh +2 -4
- package/project-template/conf.template +6 -1
- package/project-template/batch_scheduler.legacy.sh +0 -165
- package/project-template/project-template/README.md +0 -10
- package/project-template/project-template/batch_scheduler.legacy.sh +0 -165
- package/project-template/project-template/batch_scheduler.sh +0 -8
- package/project-template/project-template/conf.template +0 -78
- package/project-template/project-template/deploy.sh +0 -3
- package/project-template/project-template/logs/.gitkeep +0 -0
- package/project-template/project-template/pm_meta/.gitkeep +0 -0
|
@@ -248,6 +248,42 @@ export class GitLabRepoBackend {
|
|
|
248
248
|
return mrs.length > 0;
|
|
249
249
|
}
|
|
250
250
|
// ---------------------------------------------------------------------------
|
|
251
|
+
// Worktree cleanup
|
|
252
|
+
// ---------------------------------------------------------------------------
|
|
253
|
+
async removeWorktree(repoDir, worktreePath, branch) {
|
|
254
|
+
// Step 1: Remove the worktree directory
|
|
255
|
+
if (existsSync(worktreePath)) {
|
|
256
|
+
try {
|
|
257
|
+
this.git(['worktree', 'remove', '--force', worktreePath], repoDir);
|
|
258
|
+
}
|
|
259
|
+
catch {
|
|
260
|
+
// Fallback: manual directory removal + prune
|
|
261
|
+
const { rmSync } = await import('node:fs');
|
|
262
|
+
rmSync(worktreePath, { recursive: true, force: true });
|
|
263
|
+
try {
|
|
264
|
+
this.git(['worktree', 'prune'], repoDir);
|
|
265
|
+
}
|
|
266
|
+
catch { /* non-fatal */ }
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
// Path already gone — just prune stale references
|
|
271
|
+
try {
|
|
272
|
+
this.git(['worktree', 'prune'], repoDir);
|
|
273
|
+
}
|
|
274
|
+
catch { /* non-fatal */ }
|
|
275
|
+
}
|
|
276
|
+
// Step 2: Delete local branch (only if already merged)
|
|
277
|
+
if (branch) {
|
|
278
|
+
try {
|
|
279
|
+
this.git(['branch', '-d', branch], repoDir);
|
|
280
|
+
}
|
|
281
|
+
catch {
|
|
282
|
+
// Branch may not exist locally or not fully merged — skip
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// ---------------------------------------------------------------------------
|
|
251
287
|
// Status mapping helpers (doc 12 §13.4)
|
|
252
288
|
// ---------------------------------------------------------------------------
|
|
253
289
|
mapMrState(state) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GitLabRepoBackend.js","sourceRoot":"","sources":["../../src/providers/GitLabRepoBackend.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GitLabRepoBackend.js","sourceRoot":"","sources":["../../src/providers/GitLabRepoBackend.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.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "SPS CLI — AI-driven development pipeline orchestrator",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/main.js",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"sps": "dist/main.js"
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
|
-
"build": "tsc && cp -r ../project-template ./project-template
|
|
11
|
+
"build": "tsc && rm -rf ./project-template && cp -r ../project-template ./project-template",
|
|
12
12
|
"dev": "tsx src/main.ts",
|
|
13
13
|
"typecheck": "tsc --noEmit",
|
|
14
14
|
"prepublishOnly": "npm run build"
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# batch_scheduler.sh — project-local cron entry point
|
|
3
|
-
# Delegates to the
|
|
4
|
-
# All scheduling, pipeline, QA, and monitor logic lives in the Node CLI.
|
|
3
|
+
# Delegates to the SPS CLI tick command.
|
|
5
4
|
set -euo pipefail
|
|
6
5
|
|
|
7
6
|
PROJECT_NAME="$(basename "$(cd "$(dirname "$0")" && pwd)")"
|
|
8
|
-
WORKFLOW_CLI="$HOME/jarvis-skills/coding-work-flow/bin/workflow"
|
|
9
7
|
|
|
10
|
-
exec
|
|
8
|
+
exec sps tick "$PROJECT_NAME" "$@"
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
# ── 项目基础信息 ─────────────────────────────────────────────────
|
|
2
2
|
export PROJECT_NAME="__PROJECT_NAME__"
|
|
3
3
|
export PROJECT_DISPLAY="__PROJECT_DISPLAY__"
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
# ── 路径配置(可选,不设置则使用默认值)───────────────────────────
|
|
6
|
+
# 业务代码仓库目录(默认: ~/projects/<project>)
|
|
7
|
+
# export PROJECT_DIR="$HOME/projects/__PROJECT_NAME__"
|
|
8
|
+
# Worker worktree 根目录(默认: ~/.coral/worktrees/)
|
|
9
|
+
# export WORKTREE_DIR="$HOME/.coral/worktrees"
|
|
5
10
|
|
|
6
11
|
# ── GitLab ───────────────────────────────────────────────────────
|
|
7
12
|
export GITLAB_PROJECT="__GITLAB_PROJECT__"
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# batch_scheduler.sh — project-local sequential scheduler (Planning → Backlog)
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
|
|
5
|
-
PROJECT_NAME="$(basename "$(cd "$(dirname "$0")" && pwd)")"
|
|
6
|
-
source ~/.jarvis.env
|
|
7
|
-
source "$HOME/.projects/$PROJECT_NAME/conf"
|
|
8
|
-
|
|
9
|
-
MPOST="bash $HOME/jarvis-skills/coding-work-flow/scripts/notify.sh"
|
|
10
|
-
LOG="$HOME/.projects/$PROJECT_NAME/logs/batch_scheduler.log"
|
|
11
|
-
mkdir -p "$(dirname "$LOG")"
|
|
12
|
-
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG"; }
|
|
13
|
-
|
|
14
|
-
if [ "${PM_TOOL:-trello}" = "trello" ]; then
|
|
15
|
-
TAPI="https://api.trello.com/1"
|
|
16
|
-
TQ="key=$TRELLO_API_KEY&token=$TRELLO_TOKEN"
|
|
17
|
-
: "${TRELLO_LIST_PLANNING:?Missing TRELLO_LIST_PLANNING}"
|
|
18
|
-
: "${TRELLO_LIST_BACKLOG:?Missing TRELLO_LIST_BACKLOG}"
|
|
19
|
-
: "${TRELLO_LIST_TODO:?Missing TRELLO_LIST_TODO}"
|
|
20
|
-
: "${TRELLO_LIST_INPROGRESS:?Missing TRELLO_LIST_INPROGRESS}"
|
|
21
|
-
: "${TRELLO_LIST_QA:?Missing TRELLO_LIST_QA}"
|
|
22
|
-
|
|
23
|
-
active=$(python3 - <<PY
|
|
24
|
-
import urllib.request, json
|
|
25
|
-
lists=['$TRELLO_LIST_BACKLOG','$TRELLO_LIST_TODO','$TRELLO_LIST_INPROGRESS','$TRELLO_LIST_QA']
|
|
26
|
-
label='${PIPELINE_LABEL:-}'
|
|
27
|
-
total=0
|
|
28
|
-
for l in lists:
|
|
29
|
-
url=f'$TAPI/lists/{l}/cards?$TQ&fields=id,name,labels'
|
|
30
|
-
cards=json.loads(urllib.request.urlopen(url).read())
|
|
31
|
-
if label:
|
|
32
|
-
total += sum(1 for c in cards if any((lb.get('name') or '').strip()==label for lb in c.get('labels',[])))
|
|
33
|
-
else:
|
|
34
|
-
total += len(cards)
|
|
35
|
-
print(total)
|
|
36
|
-
PY
|
|
37
|
-
)
|
|
38
|
-
log "Active pipeline tasks: $active"
|
|
39
|
-
if [ "$active" -gt 0 ]; then
|
|
40
|
-
log "Pipeline still busy, skip promotion"
|
|
41
|
-
exit 0
|
|
42
|
-
fi
|
|
43
|
-
|
|
44
|
-
next=$(PIPELINE_LABEL="${PIPELINE_LABEL:-}" TRELLO_JSON="$(curl -s "$TAPI/lists/$TRELLO_LIST_PLANNING/cards?$TQ&fields=id,name,labels,pos")" python3 - <<'PY'
|
|
45
|
-
import json,os
|
|
46
|
-
label=os.environ.get('PIPELINE_LABEL','').strip()
|
|
47
|
-
obj=json.loads(os.environ.get('TRELLO_JSON','[]'))
|
|
48
|
-
items=[]
|
|
49
|
-
for c in obj:
|
|
50
|
-
labels=[(lb.get('name') or '').strip() for lb in c.get('labels',[])]
|
|
51
|
-
if label and label not in labels:
|
|
52
|
-
continue
|
|
53
|
-
items.append((c.get('pos', 10**18), c.get('id',''), c.get('name','')))
|
|
54
|
-
items.sort()
|
|
55
|
-
if items:
|
|
56
|
-
_, cid, name = items[0]
|
|
57
|
-
print(f"{cid}|{name}")
|
|
58
|
-
PY
|
|
59
|
-
)
|
|
60
|
-
[ -z "$next" ] && { log "Planning empty, nothing to promote"; exit 0; }
|
|
61
|
-
card_id="${next%%|*}"
|
|
62
|
-
card_name="${next#*|}"
|
|
63
|
-
curl -sf -X PUT "$TAPI/cards/$card_id?$TQ" -d "idList=$TRELLO_LIST_BACKLOG" > /dev/null
|
|
64
|
-
log "Promoted: $card_name → Backlog"
|
|
65
|
-
$MPOST "🚀 [$PROJECT_NAME] 推进任务:$card_name" >/dev/null 2>&1 || true
|
|
66
|
-
exit 0
|
|
67
|
-
fi
|
|
68
|
-
|
|
69
|
-
HELPER="${PLANE_HELPER:-$HOME/.openclaw/workspace/skills/plane/scripts/plane_helper.py}"
|
|
70
|
-
: "${PLANE_PROJECT_ID:?Missing PLANE_PROJECT_ID}"
|
|
71
|
-
: "${PLANE_STATE_PLANNING:?Missing PLANE_STATE_PLANNING}"
|
|
72
|
-
: "${PLANE_STATE_BACKLOG:?Missing PLANE_STATE_BACKLOG}"
|
|
73
|
-
: "${PLANE_STATE_TODO:?Missing PLANE_STATE_TODO}"
|
|
74
|
-
: "${PLANE_STATE_INPROGRESS:?Missing PLANE_STATE_INPROGRESS}"
|
|
75
|
-
: "${PLANE_STATE_QA:?Missing PLANE_STATE_QA}"
|
|
76
|
-
|
|
77
|
-
active=$(ACTIVE_STATE_IDS="$PLANE_STATE_BACKLOG,$PLANE_STATE_TODO,$PLANE_STATE_INPROGRESS,$PLANE_STATE_QA" PIPELINE_LABEL="${PIPELINE_LABEL:-}" PIPELINE_MIN_SEQ="${PIPELINE_MIN_SEQ:-}" LABELS_JSON="$(python3 "$HELPER" labels list "$PLANE_PROJECT_ID" 2>/dev/null)" PLANE_JSON="$(python3 "$HELPER" issues list "$PLANE_PROJECT_ID" 2>/dev/null)" python3 - <<'PY'
|
|
78
|
-
import json,os
|
|
79
|
-
obj=json.loads(os.environ['PLANE_JSON'])
|
|
80
|
-
active=set(filter(None, os.environ.get('ACTIVE_STATE_IDS','').split(',')))
|
|
81
|
-
want=os.environ.get('PIPELINE_LABEL','').strip()
|
|
82
|
-
min_seq=(os.environ.get('PIPELINE_MIN_SEQ') or '').strip()
|
|
83
|
-
count=0
|
|
84
|
-
label_map={x.get('id'): x.get('name','') for x in json.loads(os.environ.get('LABELS_JSON','{"results":[]}')).get('results',[])}
|
|
85
|
-
for it in obj.get('results',[]):
|
|
86
|
-
if it.get('state') not in active:
|
|
87
|
-
continue
|
|
88
|
-
labels=[]
|
|
89
|
-
for lb in it.get('labels',[]):
|
|
90
|
-
if isinstance(lb, dict):
|
|
91
|
-
name=(lb.get('name') or '').strip()
|
|
92
|
-
else:
|
|
93
|
-
name=(label_map.get(lb,'') or '').strip()
|
|
94
|
-
if name:
|
|
95
|
-
labels.append(name)
|
|
96
|
-
if want and want not in labels:
|
|
97
|
-
continue
|
|
98
|
-
if min_seq:
|
|
99
|
-
try:
|
|
100
|
-
if int(it.get('sequence_id') or 0) < int(min_seq):
|
|
101
|
-
continue
|
|
102
|
-
except Exception:
|
|
103
|
-
pass
|
|
104
|
-
count += 1
|
|
105
|
-
print(count)
|
|
106
|
-
PY
|
|
107
|
-
)
|
|
108
|
-
log "Active pipeline tasks: $active"
|
|
109
|
-
if [ "$active" -gt 0 ]; then
|
|
110
|
-
log "Pipeline still busy, skip promotion"
|
|
111
|
-
exit 0
|
|
112
|
-
fi
|
|
113
|
-
|
|
114
|
-
next=$(PIPELINE_LABEL="${PIPELINE_LABEL:-}" PIPELINE_ORDER_FILE="${PIPELINE_ORDER_FILE:-}" LABELS_JSON="$(python3 "$HELPER" labels list "$PLANE_PROJECT_ID" 2>/dev/null)" PLANE_JSON="$(python3 "$HELPER" issues list "$PLANE_PROJECT_ID" "$PLANE_STATE_PLANNING" 2>/dev/null)" python3 - <<'PY'
|
|
115
|
-
import json,os
|
|
116
|
-
obj=json.loads(os.environ['PLANE_JSON'])
|
|
117
|
-
label_map={x.get('id'): x.get('name','') for x in json.loads(os.environ.get('LABELS_JSON','{"results":[]}')).get('results',[])}
|
|
118
|
-
want=os.environ.get('PIPELINE_LABEL','').strip()
|
|
119
|
-
order_file=(os.environ.get('PIPELINE_ORDER_FILE') or '').strip()
|
|
120
|
-
seq_order=[]
|
|
121
|
-
if order_file and os.path.exists(order_file):
|
|
122
|
-
try:
|
|
123
|
-
raw=json.load(open(order_file))
|
|
124
|
-
if isinstance(raw, list):
|
|
125
|
-
seq_order=[int(x) for x in raw]
|
|
126
|
-
else:
|
|
127
|
-
seq_order=[int(x) for x in raw.get('items',[])]
|
|
128
|
-
except Exception:
|
|
129
|
-
seq_order=[]
|
|
130
|
-
items_by_seq={}
|
|
131
|
-
for it in obj.get('results',[]):
|
|
132
|
-
labels=[]
|
|
133
|
-
for lb in it.get('labels',[]):
|
|
134
|
-
if isinstance(lb, dict):
|
|
135
|
-
name=(lb.get('name') or '').strip()
|
|
136
|
-
else:
|
|
137
|
-
name=(label_map.get(lb,'') or '').strip()
|
|
138
|
-
if name:
|
|
139
|
-
labels.append(name)
|
|
140
|
-
if want and want not in labels:
|
|
141
|
-
continue
|
|
142
|
-
try:
|
|
143
|
-
seq_num=int(it.get('sequence_id') or 0)
|
|
144
|
-
except Exception:
|
|
145
|
-
continue
|
|
146
|
-
items_by_seq[seq_num]=(it.get('id',''), it.get('name',''))
|
|
147
|
-
if seq_order:
|
|
148
|
-
for seq in seq_order:
|
|
149
|
-
if seq in items_by_seq:
|
|
150
|
-
iid,name=items_by_seq[seq]
|
|
151
|
-
print(f"{iid}|{name}")
|
|
152
|
-
raise SystemExit(0)
|
|
153
|
-
else:
|
|
154
|
-
for seq in sorted(items_by_seq):
|
|
155
|
-
iid,name=items_by_seq[seq]
|
|
156
|
-
print(f"{iid}|{name}")
|
|
157
|
-
raise SystemExit(0)
|
|
158
|
-
PY
|
|
159
|
-
)
|
|
160
|
-
[ -z "$next" ] && { log "Planning empty, nothing to promote"; exit 0; }
|
|
161
|
-
issue_id="${next%%|*}"
|
|
162
|
-
issue_name="${next#*|}"
|
|
163
|
-
python3 "$HELPER" issues move "$PLANE_PROJECT_ID" "$issue_id" "$PLANE_STATE_BACKLOG" >/dev/null
|
|
164
|
-
log "Promoted: $issue_name → Backlog"
|
|
165
|
-
$MPOST "🚀 [$PROJECT_NAME] 推进任务:$issue_name" >/dev/null 2>&1 || true
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# Project Template
|
|
2
|
-
|
|
3
|
-
This folder is copied into `~/.projects/<project-name>/` for each new pipeline-managed project.
|
|
4
|
-
|
|
5
|
-
Contents:
|
|
6
|
-
- `conf` — project-specific configuration
|
|
7
|
-
- `deploy.sh` — optional project-local deploy entrypoint
|
|
8
|
-
- `batch_scheduler.sh` — project-local Planning → Backlog scheduler
|
|
9
|
-
- `logs/` — runtime logs
|
|
10
|
-
- `pm_meta/` — local PM metadata store (used especially for Plane)
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# batch_scheduler.sh — project-local sequential scheduler (Planning → Backlog)
|
|
3
|
-
set -euo pipefail
|
|
4
|
-
|
|
5
|
-
PROJECT_NAME="$(basename "$(cd "$(dirname "$0")" && pwd)")"
|
|
6
|
-
source ~/.jarvis.env
|
|
7
|
-
source "$HOME/.projects/$PROJECT_NAME/conf"
|
|
8
|
-
|
|
9
|
-
MPOST="bash $HOME/jarvis-skills/coding-work-flow/scripts/notify.sh"
|
|
10
|
-
LOG="$HOME/.projects/$PROJECT_NAME/logs/batch_scheduler.log"
|
|
11
|
-
mkdir -p "$(dirname "$LOG")"
|
|
12
|
-
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG"; }
|
|
13
|
-
|
|
14
|
-
if [ "${PM_TOOL:-trello}" = "trello" ]; then
|
|
15
|
-
TAPI="https://api.trello.com/1"
|
|
16
|
-
TQ="key=$TRELLO_API_KEY&token=$TRELLO_TOKEN"
|
|
17
|
-
: "${TRELLO_LIST_PLANNING:?Missing TRELLO_LIST_PLANNING}"
|
|
18
|
-
: "${TRELLO_LIST_BACKLOG:?Missing TRELLO_LIST_BACKLOG}"
|
|
19
|
-
: "${TRELLO_LIST_TODO:?Missing TRELLO_LIST_TODO}"
|
|
20
|
-
: "${TRELLO_LIST_INPROGRESS:?Missing TRELLO_LIST_INPROGRESS}"
|
|
21
|
-
: "${TRELLO_LIST_QA:?Missing TRELLO_LIST_QA}"
|
|
22
|
-
|
|
23
|
-
active=$(python3 - <<PY
|
|
24
|
-
import urllib.request, json
|
|
25
|
-
lists=['$TRELLO_LIST_BACKLOG','$TRELLO_LIST_TODO','$TRELLO_LIST_INPROGRESS','$TRELLO_LIST_QA']
|
|
26
|
-
label='${PIPELINE_LABEL:-}'
|
|
27
|
-
total=0
|
|
28
|
-
for l in lists:
|
|
29
|
-
url=f'$TAPI/lists/{l}/cards?$TQ&fields=id,name,labels'
|
|
30
|
-
cards=json.loads(urllib.request.urlopen(url).read())
|
|
31
|
-
if label:
|
|
32
|
-
total += sum(1 for c in cards if any((lb.get('name') or '').strip()==label for lb in c.get('labels',[])))
|
|
33
|
-
else:
|
|
34
|
-
total += len(cards)
|
|
35
|
-
print(total)
|
|
36
|
-
PY
|
|
37
|
-
)
|
|
38
|
-
log "Active pipeline tasks: $active"
|
|
39
|
-
if [ "$active" -gt 0 ]; then
|
|
40
|
-
log "Pipeline still busy, skip promotion"
|
|
41
|
-
exit 0
|
|
42
|
-
fi
|
|
43
|
-
|
|
44
|
-
next=$(PIPELINE_LABEL="${PIPELINE_LABEL:-}" TRELLO_JSON="$(curl -s "$TAPI/lists/$TRELLO_LIST_PLANNING/cards?$TQ&fields=id,name,labels,pos")" python3 - <<'PY'
|
|
45
|
-
import json,os
|
|
46
|
-
label=os.environ.get('PIPELINE_LABEL','').strip()
|
|
47
|
-
obj=json.loads(os.environ.get('TRELLO_JSON','[]'))
|
|
48
|
-
items=[]
|
|
49
|
-
for c in obj:
|
|
50
|
-
labels=[(lb.get('name') or '').strip() for lb in c.get('labels',[])]
|
|
51
|
-
if label and label not in labels:
|
|
52
|
-
continue
|
|
53
|
-
items.append((c.get('pos', 10**18), c.get('id',''), c.get('name','')))
|
|
54
|
-
items.sort()
|
|
55
|
-
if items:
|
|
56
|
-
_, cid, name = items[0]
|
|
57
|
-
print(f"{cid}|{name}")
|
|
58
|
-
PY
|
|
59
|
-
)
|
|
60
|
-
[ -z "$next" ] && { log "Planning empty, nothing to promote"; exit 0; }
|
|
61
|
-
card_id="${next%%|*}"
|
|
62
|
-
card_name="${next#*|}"
|
|
63
|
-
curl -sf -X PUT "$TAPI/cards/$card_id?$TQ" -d "idList=$TRELLO_LIST_BACKLOG" > /dev/null
|
|
64
|
-
log "Promoted: $card_name → Backlog"
|
|
65
|
-
$MPOST "🚀 [$PROJECT_NAME] 推进任务:$card_name" >/dev/null 2>&1 || true
|
|
66
|
-
exit 0
|
|
67
|
-
fi
|
|
68
|
-
|
|
69
|
-
HELPER="${PLANE_HELPER:-$HOME/.openclaw/workspace/skills/plane/scripts/plane_helper.py}"
|
|
70
|
-
: "${PLANE_PROJECT_ID:?Missing PLANE_PROJECT_ID}"
|
|
71
|
-
: "${PLANE_STATE_PLANNING:?Missing PLANE_STATE_PLANNING}"
|
|
72
|
-
: "${PLANE_STATE_BACKLOG:?Missing PLANE_STATE_BACKLOG}"
|
|
73
|
-
: "${PLANE_STATE_TODO:?Missing PLANE_STATE_TODO}"
|
|
74
|
-
: "${PLANE_STATE_INPROGRESS:?Missing PLANE_STATE_INPROGRESS}"
|
|
75
|
-
: "${PLANE_STATE_QA:?Missing PLANE_STATE_QA}"
|
|
76
|
-
|
|
77
|
-
active=$(ACTIVE_STATE_IDS="$PLANE_STATE_BACKLOG,$PLANE_STATE_TODO,$PLANE_STATE_INPROGRESS,$PLANE_STATE_QA" PIPELINE_LABEL="${PIPELINE_LABEL:-}" PIPELINE_MIN_SEQ="${PIPELINE_MIN_SEQ:-}" LABELS_JSON="$(python3 "$HELPER" labels list "$PLANE_PROJECT_ID" 2>/dev/null)" PLANE_JSON="$(python3 "$HELPER" issues list "$PLANE_PROJECT_ID" 2>/dev/null)" python3 - <<'PY'
|
|
78
|
-
import json,os
|
|
79
|
-
obj=json.loads(os.environ['PLANE_JSON'])
|
|
80
|
-
active=set(filter(None, os.environ.get('ACTIVE_STATE_IDS','').split(',')))
|
|
81
|
-
want=os.environ.get('PIPELINE_LABEL','').strip()
|
|
82
|
-
min_seq=(os.environ.get('PIPELINE_MIN_SEQ') or '').strip()
|
|
83
|
-
count=0
|
|
84
|
-
label_map={x.get('id'): x.get('name','') for x in json.loads(os.environ.get('LABELS_JSON','{"results":[]}')).get('results',[])}
|
|
85
|
-
for it in obj.get('results',[]):
|
|
86
|
-
if it.get('state') not in active:
|
|
87
|
-
continue
|
|
88
|
-
labels=[]
|
|
89
|
-
for lb in it.get('labels',[]):
|
|
90
|
-
if isinstance(lb, dict):
|
|
91
|
-
name=(lb.get('name') or '').strip()
|
|
92
|
-
else:
|
|
93
|
-
name=(label_map.get(lb,'') or '').strip()
|
|
94
|
-
if name:
|
|
95
|
-
labels.append(name)
|
|
96
|
-
if want and want not in labels:
|
|
97
|
-
continue
|
|
98
|
-
if min_seq:
|
|
99
|
-
try:
|
|
100
|
-
if int(it.get('sequence_id') or 0) < int(min_seq):
|
|
101
|
-
continue
|
|
102
|
-
except Exception:
|
|
103
|
-
pass
|
|
104
|
-
count += 1
|
|
105
|
-
print(count)
|
|
106
|
-
PY
|
|
107
|
-
)
|
|
108
|
-
log "Active pipeline tasks: $active"
|
|
109
|
-
if [ "$active" -gt 0 ]; then
|
|
110
|
-
log "Pipeline still busy, skip promotion"
|
|
111
|
-
exit 0
|
|
112
|
-
fi
|
|
113
|
-
|
|
114
|
-
next=$(PIPELINE_LABEL="${PIPELINE_LABEL:-}" PIPELINE_ORDER_FILE="${PIPELINE_ORDER_FILE:-}" LABELS_JSON="$(python3 "$HELPER" labels list "$PLANE_PROJECT_ID" 2>/dev/null)" PLANE_JSON="$(python3 "$HELPER" issues list "$PLANE_PROJECT_ID" "$PLANE_STATE_PLANNING" 2>/dev/null)" python3 - <<'PY'
|
|
115
|
-
import json,os
|
|
116
|
-
obj=json.loads(os.environ['PLANE_JSON'])
|
|
117
|
-
label_map={x.get('id'): x.get('name','') for x in json.loads(os.environ.get('LABELS_JSON','{"results":[]}')).get('results',[])}
|
|
118
|
-
want=os.environ.get('PIPELINE_LABEL','').strip()
|
|
119
|
-
order_file=(os.environ.get('PIPELINE_ORDER_FILE') or '').strip()
|
|
120
|
-
seq_order=[]
|
|
121
|
-
if order_file and os.path.exists(order_file):
|
|
122
|
-
try:
|
|
123
|
-
raw=json.load(open(order_file))
|
|
124
|
-
if isinstance(raw, list):
|
|
125
|
-
seq_order=[int(x) for x in raw]
|
|
126
|
-
else:
|
|
127
|
-
seq_order=[int(x) for x in raw.get('items',[])]
|
|
128
|
-
except Exception:
|
|
129
|
-
seq_order=[]
|
|
130
|
-
items_by_seq={}
|
|
131
|
-
for it in obj.get('results',[]):
|
|
132
|
-
labels=[]
|
|
133
|
-
for lb in it.get('labels',[]):
|
|
134
|
-
if isinstance(lb, dict):
|
|
135
|
-
name=(lb.get('name') or '').strip()
|
|
136
|
-
else:
|
|
137
|
-
name=(label_map.get(lb,'') or '').strip()
|
|
138
|
-
if name:
|
|
139
|
-
labels.append(name)
|
|
140
|
-
if want and want not in labels:
|
|
141
|
-
continue
|
|
142
|
-
try:
|
|
143
|
-
seq_num=int(it.get('sequence_id') or 0)
|
|
144
|
-
except Exception:
|
|
145
|
-
continue
|
|
146
|
-
items_by_seq[seq_num]=(it.get('id',''), it.get('name',''))
|
|
147
|
-
if seq_order:
|
|
148
|
-
for seq in seq_order:
|
|
149
|
-
if seq in items_by_seq:
|
|
150
|
-
iid,name=items_by_seq[seq]
|
|
151
|
-
print(f"{iid}|{name}")
|
|
152
|
-
raise SystemExit(0)
|
|
153
|
-
else:
|
|
154
|
-
for seq in sorted(items_by_seq):
|
|
155
|
-
iid,name=items_by_seq[seq]
|
|
156
|
-
print(f"{iid}|{name}")
|
|
157
|
-
raise SystemExit(0)
|
|
158
|
-
PY
|
|
159
|
-
)
|
|
160
|
-
[ -z "$next" ] && { log "Planning empty, nothing to promote"; exit 0; }
|
|
161
|
-
issue_id="${next%%|*}"
|
|
162
|
-
issue_name="${next#*|}"
|
|
163
|
-
python3 "$HELPER" issues move "$PLANE_PROJECT_ID" "$issue_id" "$PLANE_STATE_BACKLOG" >/dev/null
|
|
164
|
-
log "Promoted: $issue_name → Backlog"
|
|
165
|
-
$MPOST "🚀 [$PROJECT_NAME] 推进任务:$issue_name" >/dev/null 2>&1 || true
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# ── 项目基础信息 ─────────────────────────────────────────────────
|
|
2
|
-
export PROJECT_NAME="__PROJECT_NAME__"
|
|
3
|
-
export PROJECT_DISPLAY="__PROJECT_DISPLAY__"
|
|
4
|
-
|
|
5
|
-
# ── 路径配置(可选,不设置则使用默认值)───────────────────────────
|
|
6
|
-
# 业务代码仓库目录(默认: ~/projects/<project>)
|
|
7
|
-
# export PROJECT_DIR="$HOME/projects/__PROJECT_NAME__"
|
|
8
|
-
# Worker worktree 根目录(默认: ~/.coral/worktrees/)
|
|
9
|
-
# export WORKTREE_DIR="$HOME/.coral/worktrees"
|
|
10
|
-
|
|
11
|
-
# ── GitLab ───────────────────────────────────────────────────────
|
|
12
|
-
export GITLAB_PROJECT="__GITLAB_PROJECT__"
|
|
13
|
-
export GITLAB_PROJECT_ID="__GITLAB_PROJECT_ID__"
|
|
14
|
-
export GITLAB_MERGE_BRANCH="__GITLAB_MERGE_BRANCH__"
|
|
15
|
-
export GITLAB_RELEASE_BRANCH="__GITLAB_RELEASE_BRANCH__"
|
|
16
|
-
|
|
17
|
-
# ── PM Backend ───────────────────────────────────────────────────
|
|
18
|
-
export PM_TOOL="__PM_TOOL__"
|
|
19
|
-
|
|
20
|
-
# ── Trello(PM_TOOL=trello 时填写)───────────────────────────────
|
|
21
|
-
export TRELLO_BOARD_ID="__TRELLO_BOARD_ID__"
|
|
22
|
-
export TRELLO_LIST_PLANNING="__TRELLO_LIST_PLANNING__"
|
|
23
|
-
export TRELLO_LIST_BACKLOG="__TRELLO_LIST_BACKLOG__"
|
|
24
|
-
export TRELLO_LIST_TODO="__TRELLO_LIST_TODO__"
|
|
25
|
-
export TRELLO_LIST_INPROGRESS="__TRELLO_LIST_INPROGRESS__"
|
|
26
|
-
export TRELLO_LIST_QA="__TRELLO_LIST_QA__"
|
|
27
|
-
export TRELLO_LIST_DONE="__TRELLO_LIST_DONE__"
|
|
28
|
-
export TRELLO_ACCOUNT="__TRELLO_ACCOUNT__"
|
|
29
|
-
|
|
30
|
-
# ── Plane(PM_TOOL=plane 时填写)────────────────────────────────
|
|
31
|
-
export PLANE_API_URL="__PLANE_API_URL__"
|
|
32
|
-
export PLANE_API_KEY="__PLANE_API_KEY__"
|
|
33
|
-
export PLANE_WORKSPACE_SLUG="__PLANE_WORKSPACE_SLUG__"
|
|
34
|
-
export PLANE_PROJECT_ID="__PLANE_PROJECT_ID__"
|
|
35
|
-
export PLANE_PROJECT_NAME="__PLANE_PROJECT_NAME__"
|
|
36
|
-
export PLANE_STATE_PLANNING="__PLANE_STATE_PLANNING__"
|
|
37
|
-
export PLANE_STATE_BACKLOG="__PLANE_STATE_BACKLOG__"
|
|
38
|
-
export PLANE_STATE_TODO="__PLANE_STATE_TODO__"
|
|
39
|
-
export PLANE_STATE_INPROGRESS="__PLANE_STATE_INPROGRESS__"
|
|
40
|
-
export PLANE_STATE_QA="__PLANE_STATE_QA__"
|
|
41
|
-
export PLANE_STATE_DONE="__PLANE_STATE_DONE__"
|
|
42
|
-
export PLANE_STATE_CANCELLED="__PLANE_STATE_CANCELLED__"
|
|
43
|
-
|
|
44
|
-
# ── Pipeline 筛选(可选)────────────────────────────────────────
|
|
45
|
-
export PIPELINE_LABEL="__PIPELINE_LABEL__"
|
|
46
|
-
export PIPELINE_ORDER_FILE="$HOME/.projects/__PROJECT_NAME__/pipeline_order.json"
|
|
47
|
-
|
|
48
|
-
# ── CI ───────────────────────────────────────────────────────────
|
|
49
|
-
export CI_MODE="__CI_MODE__"
|
|
50
|
-
|
|
51
|
-
# ── 前端构建 ─────────────────────────────────────────────────────
|
|
52
|
-
export HAS_FRONTEND="__HAS_FRONTEND__"
|
|
53
|
-
export FRONTEND_DIR="__FRONTEND_DIR__"
|
|
54
|
-
|
|
55
|
-
# ── 部署 ─────────────────────────────────────────────────────────
|
|
56
|
-
export DEPLOY_ENABLED="__DEPLOY_ENABLED__"
|
|
57
|
-
export DEPLOY_SCRIPT="$HOME/.projects/__PROJECT_NAME__/deploy.sh"
|
|
58
|
-
|
|
59
|
-
# ── Worker / Agent ───────────────────────────────────────────────
|
|
60
|
-
export WORKER_TOOL="__WORKER_TOOL__"
|
|
61
|
-
export MAX_CONCURRENT_WORKERS=__MAX_CONCURRENT_WORKERS__
|
|
62
|
-
export WORKER_RESTART_LIMIT=__WORKER_RESTART_LIMIT__
|
|
63
|
-
export AUTOFIX_ATTEMPTS=__AUTOFIX_ATTEMPTS__
|
|
64
|
-
export WORKER_SESSION_REUSE=true
|
|
65
|
-
export MAX_ACTIONS_PER_TICK=1
|
|
66
|
-
|
|
67
|
-
# ── 超时与策略 ───────────────────────────────────────────────────
|
|
68
|
-
export INPROGRESS_TIMEOUT_HOURS=8
|
|
69
|
-
export MONITOR_AUTO_QA=false
|
|
70
|
-
export CONFLICT_DEFAULT=serial
|
|
71
|
-
export TICK_LOCK_TIMEOUT_MINUTES=30
|
|
72
|
-
export NEEDS_FIX_MAX_RETRIES=3
|
|
73
|
-
export WORKTREE_RETAIN_HOURS=24
|
|
74
|
-
|
|
75
|
-
# ── 通知(Matrix)──────────────────────────────────────────────
|
|
76
|
-
export MATRIX_HOMESERVER="__MATRIX_HOMESERVER__"
|
|
77
|
-
export MATRIX_ACCESS_TOKEN="__MATRIX_ACCESS_TOKEN__"
|
|
78
|
-
export MATRIX_ROOM_ID="__MATRIX_ROOM_ID__"
|
|
File without changes
|
|
File without changes
|