@walwal-harness/cli 7.1.28 → 7.1.29
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 +25 -1
- package/apps/harness-dashboard/app/api/stream/route.ts +4 -0
- package/apps/harness-dashboard/components/Scene.tsx +225 -38
- package/apps/harness-dashboard/lib/__tests__/harness-state.test.ts +84 -0
- package/apps/harness-dashboard/lib/harness-state.ts +91 -6
- package/apps/harness-dashboard/lib/types.ts +3 -0
- package/assets/templates/AGENTS.md.template +6 -5
- package/bin/init.js +273 -41
- package/commands/goal.md +10 -8
- package/commands/hot-fix.md +12 -10
- package/commands/submission.md +12 -9
- package/package.json +1 -1
- package/scripts/harness-company-complete.sh +30 -0
package/commands/hot-fix.md
CHANGED
|
@@ -14,16 +14,18 @@ Codex adapter:
|
|
|
14
14
|
|
|
15
15
|
Required flow:
|
|
16
16
|
1. Locate the active goal document root under `.harness/documents/{goal_name}/`. If no active goal exists, CEO must create/select one before proceeding.
|
|
17
|
-
2.
|
|
18
|
-
3.
|
|
19
|
-
4.
|
|
20
|
-
5.
|
|
21
|
-
6.
|
|
22
|
-
7.
|
|
23
|
-
8.
|
|
24
|
-
9.
|
|
25
|
-
10.
|
|
26
|
-
11.
|
|
17
|
+
2. If another child mission under the goal is active, update its `mission-state.json` to `closed`, `cancelled`, or `superseded` with `active:false` before starting the hot-fix.
|
|
18
|
+
3. Create `.harness/documents/{goal_name}/hotfix-{hotfix_index}-{hotfix_name}/ceo.md`.
|
|
19
|
+
4. Write `.harness/documents/{goal_name}/hotfix-{hotfix_index}-{hotfix_name}/mission-state.json` with `{"lifecycle":"active","active":true}`.
|
|
20
|
+
5. CEO summons CTO and CQO first; summon COO/CDO only when planning or UX decisions are involved.
|
|
21
|
+
6. CTO applies the smallest correct patch path through hired implementation skills.
|
|
22
|
+
7. CXX roles must start in a fresh session context. Do not let the default model impersonate a missing CXX or worker.
|
|
23
|
+
8. CXX roles must not directly execute specialist deliverables. They must use hired workers for implementation, QA, ops checks, and documentation even when the fix is small.
|
|
24
|
+
9. If a required worker is missing, CEO or the responsible CXX must invoke the installed `harness-hiring` skill before assigning the work.
|
|
25
|
+
10. CEO must require a Worker Evidence Manifest and worker report paths under `.harness/documents/{goal_name}/hotfix-{hotfix_index}-{hotfix_name}/{owning-cxx}/workers/` before accepting CXX completion.
|
|
26
|
+
11. CQO must register durable lessons in `.harness/gotchas/`, `.harness/conventions/`, or `.harness/memories/`. This step is mandatory, not optional, even for small fixes.
|
|
27
|
+
12. Archive only after CQO has accepted the fix, then update `mission-state.json` to `complete` with `active:false`.
|
|
28
|
+
13. Do not invoke internal roles through slash commands; commands are Owner entrypoints only.
|
|
27
29
|
|
|
28
30
|
Note: `/hot-fix` is a problem-fix flow while pursuing the active goal. It belongs under that goal in history.
|
|
29
31
|
|
package/commands/submission.md
CHANGED
|
@@ -14,15 +14,18 @@ Codex adapter:
|
|
|
14
14
|
|
|
15
15
|
Required flow:
|
|
16
16
|
1. Locate the active goal document root under `.harness/documents/{goal_name}/`. If no active goal exists, CEO must ask the Owner to create or select one with `/goal` before proceeding.
|
|
17
|
-
2.
|
|
18
|
-
3.
|
|
19
|
-
4.
|
|
20
|
-
5.
|
|
21
|
-
6.
|
|
22
|
-
7.
|
|
23
|
-
8. CXX must
|
|
24
|
-
9.
|
|
25
|
-
10.
|
|
17
|
+
2. If another child mission under the goal is active, update its `mission-state.json` to `closed`, `cancelled`, or `superseded` with `active:false` before starting this submission.
|
|
18
|
+
3. Create a submission record under `.harness/documents/{goal_name}/submission-{submission_index}-{submission_name}/`.
|
|
19
|
+
4. Write `.harness/documents/{goal_name}/submission-{submission_index}-{submission_name}/mission-state.json` with `{"lifecycle":"active","active":true}`.
|
|
20
|
+
5. Record CEO decisions in `.harness/documents/{goal_name}/submission-{submission_index}-{submission_name}/ceo.md`.
|
|
21
|
+
6. CEO routes only to the CXX agents needed for this additional requirement.
|
|
22
|
+
7. CXX roles must start in a fresh session context. Do not let the default model impersonate a missing CXX or worker.
|
|
23
|
+
8. CXX roles must not directly execute specialist deliverables. They must use hired workers for research, planning, design, implementation, QA, ops checks, and documentation.
|
|
24
|
+
9. If a required worker is missing, the responsible CXX must invoke the installed `harness-hiring` skill before assigning the work.
|
|
25
|
+
10. CXX must manage conventions for new requirements. Durable changes in behavior, architecture, UI, process, or policy must be reflected in `.harness/conventions/` when accepted.
|
|
26
|
+
11. CEO must require a Worker Evidence Manifest and worker report paths under `.harness/documents/{goal_name}/submission-{submission_index}-{submission_name}/{owning-cxx}/workers/` before accepting CXX completion.
|
|
27
|
+
12. When the submission is accepted, cancelled, superseded, blocked, or closed, update `mission-state.json` to `complete`, `cancelled`, `superseded`, `blocked`, or `closed` and set `active:false`.
|
|
28
|
+
13. Do not invoke internal roles through slash commands; commands are Owner entrypoints only.
|
|
26
29
|
|
|
27
30
|
Note: `/submission` is not a new company goal and not an emergency fix. It is an additional requirement while pursuing the active goal. It belongs under that goal in history.
|
|
28
31
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walwal-harness/cli",
|
|
3
|
-
"version": "7.1.
|
|
3
|
+
"version": "7.1.29",
|
|
4
4
|
"description": "Company-style AI agent harness for Claude and Codex. Installs commands, CXX agents, skills, HR-Resource hiring pool, and project-local .harness runtime state.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"walwal-harness": "bin/init.js"
|
|
@@ -15,6 +15,7 @@ PROJECT_ROOT="${1:-.}"
|
|
|
15
15
|
REASON="${2:-mission-complete}"
|
|
16
16
|
|
|
17
17
|
PROGRESS="$PROJECT_ROOT/.harness/progress.json"
|
|
18
|
+
TODOS="$PROJECT_ROOT/.harness/todos/state.json"
|
|
18
19
|
[ -f "$PROGRESS" ] || {
|
|
19
20
|
echo "[company-complete] not found: $PROGRESS" >&2
|
|
20
21
|
exit 1
|
|
@@ -40,4 +41,33 @@ bash "$SCRIPT_DIR/harness-progress-set.sh" "$PROJECT_ROOT" \
|
|
|
40
41
|
.owner_prompt.status = "completed" |
|
|
41
42
|
.owner_prompt.completed_at = (now | todate)'
|
|
42
43
|
|
|
44
|
+
if [ -f "$TODOS" ]; then
|
|
45
|
+
tmp="$(mktemp)"
|
|
46
|
+
jq '
|
|
47
|
+
.owners |= with_entries(
|
|
48
|
+
.value |= map(
|
|
49
|
+
if (.status == "active" or .status == "pending" or .status == "paused")
|
|
50
|
+
then .status = "done" | .updated_at = (now | todate)
|
|
51
|
+
else .
|
|
52
|
+
end
|
|
53
|
+
)
|
|
54
|
+
)
|
|
55
|
+
' "$TODOS" > "$tmp" && mv "$tmp" "$TODOS"
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
DOCS="$PROJECT_ROOT/.harness/documents"
|
|
59
|
+
if [ -d "$DOCS" ]; then
|
|
60
|
+
find "$DOCS" -name mission-state.json -type f -print0 | while IFS= read -r -d '' state; do
|
|
61
|
+
active="$(jq -r '.active // false' "$state" 2>/dev/null || echo false)"
|
|
62
|
+
lifecycle="$(jq -r '.lifecycle // .status // "unknown"' "$state" 2>/dev/null || echo unknown)"
|
|
63
|
+
case "$lifecycle" in
|
|
64
|
+
closed|cancelled|superseded|complete|blocked) continue ;;
|
|
65
|
+
esac
|
|
66
|
+
if [ "$active" = "true" ]; then
|
|
67
|
+
tmp="$(mktemp)"
|
|
68
|
+
jq '.lifecycle = "complete" | .active = false | .completed_at = (now | todate)' "$state" > "$tmp" && mv "$tmp" "$state"
|
|
69
|
+
fi
|
|
70
|
+
done
|
|
71
|
+
fi
|
|
72
|
+
|
|
43
73
|
echo "[company-complete] marked complete: $REASON"
|