repo-harness 0.8.3 → 0.8.4
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.es.md +3 -3
- package/README.fr.md +3 -3
- package/README.ja.md +3 -3
- package/README.md +3 -3
- package/README.zh-CN.md +3 -3
- package/assets/skill-version.json +6 -2
- package/assets/templates/helpers/workstream-sync.sh +45 -6
- package/package.json +1 -1
- package/scripts/workstream-sync.sh +45 -6
package/README.es.md
CHANGED
|
@@ -85,7 +85,7 @@ artifacts.
|
|
|
85
85
|
## Novedades
|
|
86
86
|
|
|
87
87
|
Las notas de versión viven en [`docs/CHANGELOG.md`](docs/CHANGELOG.md). La línea
|
|
88
|
-
actual es `0.8.
|
|
88
|
+
actual es `0.8.4`.
|
|
89
89
|
|
|
90
90
|
## Cómo funciona
|
|
91
91
|
|
|
@@ -419,8 +419,8 @@ Guards habituales:
|
|
|
419
419
|
|
|
420
420
|
## Release actual
|
|
421
421
|
|
|
422
|
-
- npm package: `repo-harness@0.8.
|
|
423
|
-
- Generated workflow stamp: `repo-harness@0.8.
|
|
422
|
+
- npm package: `repo-harness@0.8.4`
|
|
423
|
+
- Generated workflow stamp: `repo-harness@0.8.4+template@0.8.4`
|
|
424
424
|
- GitHub repository: `Ancienttwo/repo-harness`
|
|
425
425
|
- Release history: [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
|
|
426
426
|
|
package/README.fr.md
CHANGED
|
@@ -85,7 +85,7 @@ l'emportent.
|
|
|
85
85
|
## Nouveautés
|
|
86
86
|
|
|
87
87
|
Les notes de version vivent dans [`docs/CHANGELOG.md`](docs/CHANGELOG.md). La
|
|
88
|
-
ligne actuelle est `0.8.
|
|
88
|
+
ligne actuelle est `0.8.4`.
|
|
89
89
|
|
|
90
90
|
## Comment ça marche
|
|
91
91
|
|
|
@@ -424,8 +424,8 @@ Guards courants :
|
|
|
424
424
|
|
|
425
425
|
## Release actuelle
|
|
426
426
|
|
|
427
|
-
- npm package : `repo-harness@0.8.
|
|
428
|
-
- Generated workflow stamp : `repo-harness@0.8.
|
|
427
|
+
- npm package : `repo-harness@0.8.4`
|
|
428
|
+
- Generated workflow stamp : `repo-harness@0.8.4+template@0.8.4`
|
|
429
429
|
- GitHub repository : `Ancienttwo/repo-harness`
|
|
430
430
|
- Release history : [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
|
|
431
431
|
|
package/README.ja.md
CHANGED
|
@@ -75,7 +75,7 @@ review、checks、handoff と食い違う場合は、source artifacts を優先
|
|
|
75
75
|
## What's New
|
|
76
76
|
|
|
77
77
|
リリースノートは [`docs/CHANGELOG.md`](docs/CHANGELOG.md) にあります。現在の
|
|
78
|
-
ラインは `0.8.
|
|
78
|
+
ラインは `0.8.4` です。
|
|
79
79
|
|
|
80
80
|
## 仕組み
|
|
81
81
|
|
|
@@ -398,8 +398,8 @@ hook がブロックしたときは、まず terminal の構造化された出
|
|
|
398
398
|
|
|
399
399
|
## 現在の Release
|
|
400
400
|
|
|
401
|
-
- npm package:`repo-harness@0.8.
|
|
402
|
-
- Generated workflow stamp:`repo-harness@0.8.
|
|
401
|
+
- npm package:`repo-harness@0.8.4`
|
|
402
|
+
- Generated workflow stamp:`repo-harness@0.8.4+template@0.8.4`
|
|
403
403
|
- GitHub repository:`Ancienttwo/repo-harness`
|
|
404
404
|
- Release history:[`docs/CHANGELOG.md`](docs/CHANGELOG.md)
|
|
405
405
|
|
package/README.md
CHANGED
|
@@ -79,7 +79,7 @@ active plan, contract, review, checks, or handoff, the source artifacts win.
|
|
|
79
79
|
## What's New
|
|
80
80
|
|
|
81
81
|
Release notes live in [`docs/CHANGELOG.md`](docs/CHANGELOG.md). The current line
|
|
82
|
-
is `0.8.
|
|
82
|
+
is `0.8.4`.
|
|
83
83
|
|
|
84
84
|
## How It Works
|
|
85
85
|
|
|
@@ -599,8 +599,8 @@ Most common guards:
|
|
|
599
599
|
|
|
600
600
|
## Current Release
|
|
601
601
|
|
|
602
|
-
- npm package: `repo-harness@0.8.
|
|
603
|
-
- Generated workflow stamp: `repo-harness@0.8.
|
|
602
|
+
- npm package: `repo-harness@0.8.4`
|
|
603
|
+
- Generated workflow stamp: `repo-harness@0.8.4+template@0.8.4`
|
|
604
604
|
- GitHub repository: `Ancienttwo/repo-harness`
|
|
605
605
|
- Release history: [`docs/CHANGELOG.md`](docs/CHANGELOG.md)
|
|
606
606
|
|
package/README.zh-CN.md
CHANGED
|
@@ -69,7 +69,7 @@ review、checks 或 handoff 冲突,以 source artifacts 为准。
|
|
|
69
69
|
|
|
70
70
|
## What's New
|
|
71
71
|
|
|
72
|
-
Release notes 见 [`docs/CHANGELOG.md`](docs/CHANGELOG.md),当前版本线是 `0.8.
|
|
72
|
+
Release notes 见 [`docs/CHANGELOG.md`](docs/CHANGELOG.md),当前版本线是 `0.8.4`。
|
|
73
73
|
|
|
74
74
|
## 工作原理
|
|
75
75
|
|
|
@@ -445,8 +445,8 @@ hook block 工作时,先看 terminal 里的结构化输出。核心字段是
|
|
|
445
445
|
|
|
446
446
|
## 当前 Release
|
|
447
447
|
|
|
448
|
-
- npm package:`repo-harness@0.8.
|
|
449
|
-
- Generated workflow stamp:`repo-harness@0.8.
|
|
448
|
+
- npm package:`repo-harness@0.8.4`
|
|
449
|
+
- Generated workflow stamp:`repo-harness@0.8.4+template@0.8.4`
|
|
450
450
|
- GitHub repository:`Ancienttwo/repo-harness`
|
|
451
451
|
- Release history:[`docs/CHANGELOG.md`](docs/CHANGELOG.md)
|
|
452
452
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.8.
|
|
3
|
-
"templateVersion": "0.8.
|
|
2
|
+
"version": "0.8.4",
|
|
3
|
+
"templateVersion": "0.8.4",
|
|
4
4
|
"skillName": "repo-harness",
|
|
5
5
|
"contractId": "tasks-first-harness-v1",
|
|
6
6
|
"compatibility": {
|
|
@@ -179,6 +179,10 @@
|
|
|
179
179
|
{
|
|
180
180
|
"version": "0.8.3",
|
|
181
181
|
"description": "Keeps adopt and migration helper runtime package-only, removes local compatibility wrapper generation, and refreshes dependency lines to latest"
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"version": "0.8.4",
|
|
185
|
+
"description": "Lets package-dispatched workstream sync resolve bundled helper siblings when downstream repos do not vendor legacy scripts"
|
|
182
186
|
}
|
|
183
187
|
],
|
|
184
188
|
"generatedProjectStamp": {
|
|
@@ -83,6 +83,47 @@ validate_block() {
|
|
|
83
83
|
[[ -e "$block" ]]
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
helper_sibling() {
|
|
87
|
+
local helper_name="$1"
|
|
88
|
+
local helper_dir=""
|
|
89
|
+
if [[ -n "${REPO_HARNESS_HELPER_SOURCE_PATH:-}" ]]; then
|
|
90
|
+
helper_dir="$(dirname "$REPO_HARNESS_HELPER_SOURCE_PATH")"
|
|
91
|
+
fi
|
|
92
|
+
if [[ -n "$helper_dir" && -f "$helper_dir/$helper_name" ]]; then
|
|
93
|
+
printf '%s\n' "$helper_dir/$helper_name"
|
|
94
|
+
return 0
|
|
95
|
+
fi
|
|
96
|
+
return 1
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
capability_resolver() {
|
|
100
|
+
local sibling=""
|
|
101
|
+
if command -v bun >/dev/null 2>&1 && [[ -f "scripts/capability-resolver.ts" ]]; then
|
|
102
|
+
bun scripts/capability-resolver.ts "$@"
|
|
103
|
+
return $?
|
|
104
|
+
fi
|
|
105
|
+
sibling="$(helper_sibling capability-resolver.ts || true)"
|
|
106
|
+
if command -v bun >/dev/null 2>&1 && [[ -n "$sibling" ]]; then
|
|
107
|
+
bun "$sibling" "$@"
|
|
108
|
+
return $?
|
|
109
|
+
fi
|
|
110
|
+
return 127
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
context_contract_sync() {
|
|
114
|
+
local sibling=""
|
|
115
|
+
if [[ -x "scripts/context-contract-sync.sh" ]]; then
|
|
116
|
+
bash "scripts/context-contract-sync.sh" "$@"
|
|
117
|
+
return $?
|
|
118
|
+
fi
|
|
119
|
+
sibling="$(helper_sibling context-contract-sync.sh || true)"
|
|
120
|
+
if [[ -n "$sibling" ]]; then
|
|
121
|
+
bash "$sibling" "$@"
|
|
122
|
+
return $?
|
|
123
|
+
fi
|
|
124
|
+
return 127
|
|
125
|
+
}
|
|
126
|
+
|
|
86
127
|
while [[ $# -gt 0 ]]; do
|
|
87
128
|
case "$1" in
|
|
88
129
|
--block)
|
|
@@ -139,12 +180,12 @@ if ! validate_block "$functional_block"; then
|
|
|
139
180
|
exit 2
|
|
140
181
|
fi
|
|
141
182
|
|
|
142
|
-
if
|
|
143
|
-
echo "workstream-sync:
|
|
183
|
+
if ! command -v bun >/dev/null 2>&1 || ! capability_resolver list --format json >/dev/null 2>&1; then
|
|
184
|
+
echo "workstream-sync: capability-resolver.ts and bun are required" >&2
|
|
144
185
|
exit 2
|
|
145
186
|
fi
|
|
146
187
|
|
|
147
|
-
if ! resolver_json="$(
|
|
188
|
+
if ! resolver_json="$(capability_resolver match --path "$functional_block" --format json 2>&1)"; then
|
|
148
189
|
echo "$resolver_json" >&2
|
|
149
190
|
exit 1
|
|
150
191
|
fi
|
|
@@ -257,8 +298,6 @@ fi
|
|
|
257
298
|
event_json="{\"ts\":\"$(json_escape "$iso_timestamp")\",\"file_path\":\"$(json_escape "$workstream_file")\",\"severity\":\"medium\",\"functional_block\":\"$(json_escape "$functional_block")\",\"capability_id\":\"$(json_escape "$capability_id")\",\"matched_prefix\":\"$(json_escape "$matched_prefix")\",\"architecture_domain\":\"$(json_escape "$architecture_domain")\",\"architecture_capability\":\"$(json_escape "$architecture_capability")\",\"architecture_module\":\"$(json_escape "$architecture_module")\",\"workstream_dir\":\"$(json_escape "$workstream_dir")\",\"contract_agents\":\"$(json_escape "$contract_agents")\",\"contract_claude\":\"$(json_escape "$contract_claude")\",\"active_workstream\":\"$(json_escape "$workstream_file")\",\"change_type\":\"workstream-sync\",\"spawn_recommended\":false,\"contract_sync_required\":true,\"request_file\":\"$(json_escape "$request_file")\"}"
|
|
258
299
|
printf '%s\n' "$event_json" >> "$event_file"
|
|
259
300
|
|
|
260
|
-
|
|
261
|
-
bash "$helper_dir/context-contract-sync.sh" sync-event --json "$event_json"
|
|
262
|
-
fi
|
|
301
|
+
context_contract_sync sync-event --json "$event_json" >/dev/null 2>&1 || true
|
|
263
302
|
|
|
264
303
|
echo "[WorkstreamSync] Ensured $workstream_file for $capability_id."
|
package/package.json
CHANGED
|
@@ -83,6 +83,47 @@ validate_block() {
|
|
|
83
83
|
[[ -e "$block" ]]
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
helper_sibling() {
|
|
87
|
+
local helper_name="$1"
|
|
88
|
+
local helper_dir=""
|
|
89
|
+
if [[ -n "${REPO_HARNESS_HELPER_SOURCE_PATH:-}" ]]; then
|
|
90
|
+
helper_dir="$(dirname "$REPO_HARNESS_HELPER_SOURCE_PATH")"
|
|
91
|
+
fi
|
|
92
|
+
if [[ -n "$helper_dir" && -f "$helper_dir/$helper_name" ]]; then
|
|
93
|
+
printf '%s\n' "$helper_dir/$helper_name"
|
|
94
|
+
return 0
|
|
95
|
+
fi
|
|
96
|
+
return 1
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
capability_resolver() {
|
|
100
|
+
local sibling=""
|
|
101
|
+
if command -v bun >/dev/null 2>&1 && [[ -f "scripts/capability-resolver.ts" ]]; then
|
|
102
|
+
bun scripts/capability-resolver.ts "$@"
|
|
103
|
+
return $?
|
|
104
|
+
fi
|
|
105
|
+
sibling="$(helper_sibling capability-resolver.ts || true)"
|
|
106
|
+
if command -v bun >/dev/null 2>&1 && [[ -n "$sibling" ]]; then
|
|
107
|
+
bun "$sibling" "$@"
|
|
108
|
+
return $?
|
|
109
|
+
fi
|
|
110
|
+
return 127
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
context_contract_sync() {
|
|
114
|
+
local sibling=""
|
|
115
|
+
if [[ -x "scripts/context-contract-sync.sh" ]]; then
|
|
116
|
+
bash "scripts/context-contract-sync.sh" "$@"
|
|
117
|
+
return $?
|
|
118
|
+
fi
|
|
119
|
+
sibling="$(helper_sibling context-contract-sync.sh || true)"
|
|
120
|
+
if [[ -n "$sibling" ]]; then
|
|
121
|
+
bash "$sibling" "$@"
|
|
122
|
+
return $?
|
|
123
|
+
fi
|
|
124
|
+
return 127
|
|
125
|
+
}
|
|
126
|
+
|
|
86
127
|
while [[ $# -gt 0 ]]; do
|
|
87
128
|
case "$1" in
|
|
88
129
|
--block)
|
|
@@ -139,12 +180,12 @@ if ! validate_block "$functional_block"; then
|
|
|
139
180
|
exit 2
|
|
140
181
|
fi
|
|
141
182
|
|
|
142
|
-
if
|
|
143
|
-
echo "workstream-sync:
|
|
183
|
+
if ! command -v bun >/dev/null 2>&1 || ! capability_resolver list --format json >/dev/null 2>&1; then
|
|
184
|
+
echo "workstream-sync: capability-resolver.ts and bun are required" >&2
|
|
144
185
|
exit 2
|
|
145
186
|
fi
|
|
146
187
|
|
|
147
|
-
if ! resolver_json="$(
|
|
188
|
+
if ! resolver_json="$(capability_resolver match --path "$functional_block" --format json 2>&1)"; then
|
|
148
189
|
echo "$resolver_json" >&2
|
|
149
190
|
exit 1
|
|
150
191
|
fi
|
|
@@ -257,8 +298,6 @@ fi
|
|
|
257
298
|
event_json="{\"ts\":\"$(json_escape "$iso_timestamp")\",\"file_path\":\"$(json_escape "$workstream_file")\",\"severity\":\"medium\",\"functional_block\":\"$(json_escape "$functional_block")\",\"capability_id\":\"$(json_escape "$capability_id")\",\"matched_prefix\":\"$(json_escape "$matched_prefix")\",\"architecture_domain\":\"$(json_escape "$architecture_domain")\",\"architecture_capability\":\"$(json_escape "$architecture_capability")\",\"architecture_module\":\"$(json_escape "$architecture_module")\",\"workstream_dir\":\"$(json_escape "$workstream_dir")\",\"contract_agents\":\"$(json_escape "$contract_agents")\",\"contract_claude\":\"$(json_escape "$contract_claude")\",\"active_workstream\":\"$(json_escape "$workstream_file")\",\"change_type\":\"workstream-sync\",\"spawn_recommended\":false,\"contract_sync_required\":true,\"request_file\":\"$(json_escape "$request_file")\"}"
|
|
258
299
|
printf '%s\n' "$event_json" >> "$event_file"
|
|
259
300
|
|
|
260
|
-
|
|
261
|
-
bash "$helper_dir/context-contract-sync.sh" sync-event --json "$event_json"
|
|
262
|
-
fi
|
|
301
|
+
context_contract_sync sync-event --json "$event_json" >/dev/null 2>&1 || true
|
|
263
302
|
|
|
264
303
|
echo "[WorkstreamSync] Ensured $workstream_file for $capability_id."
|