agent-control-plane 0.7.1 → 0.8.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 +305 -7
- package/hooks/pr-reconcile-hooks.sh +12 -1
- package/package.json +9 -7
- package/tools/bin/flow-runtime-doctor.sh +67 -0
- package/tools/bin/heartbeat-safe-auto.sh +161 -0
- package/tools/bin/render-flow-config.sh +98 -0
- package/tools/bin/sync-shared-agent-home.sh +23 -0
- package/tools/dashboard/__pycache__/server.cpython-311.pyc +0 -0
- package/tools/dashboard/app-v2.js +1120 -0
- package/tools/dashboard/app.js +129 -38
- package/tools/dashboard/index-inline.html +1533 -0
- package/tools/dashboard/index-v2.html +45 -0
- package/tools/dashboard/server.py +64 -15
- package/tools/dashboard/styles.css +595 -521
- package/tools/bin/profile-activate.sh +0 -109
- package/tools/bin/profile-adopt.sh +0 -225
- package/tools/bin/profile-smoke.sh +0 -461
- package/tools/bin/test-smoke.sh +0 -119
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
-
SCRIPT_PATH="${SCRIPT_DIR}/profile-activate.sh"
|
|
6
|
-
# shellcheck source=/dev/null
|
|
7
|
-
source "${SCRIPT_DIR}/flow-config-lib.sh"
|
|
8
|
-
|
|
9
|
-
usage() {
|
|
10
|
-
cat <<'EOF'
|
|
11
|
-
Usage:
|
|
12
|
-
profile-activate.sh --profile-id <id> [--exports]
|
|
13
|
-
|
|
14
|
-
Print the selected profile context or shell export statements for quickly
|
|
15
|
-
switching operator commands to a specific installed profile.
|
|
16
|
-
EOF
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
profile_id=""
|
|
20
|
-
exports_only="0"
|
|
21
|
-
|
|
22
|
-
while [[ $# -gt 0 ]]; do
|
|
23
|
-
case "$1" in
|
|
24
|
-
--profile-id) profile_id="${2:-}"; shift 2 ;;
|
|
25
|
-
--exports) exports_only="1"; shift ;;
|
|
26
|
-
--help|-h) usage; exit 0 ;;
|
|
27
|
-
*) echo "Unknown argument: $1" >&2; usage >&2; exit 1 ;;
|
|
28
|
-
esac
|
|
29
|
-
done
|
|
30
|
-
|
|
31
|
-
if [[ -z "${profile_id}" ]]; then
|
|
32
|
-
usage >&2
|
|
33
|
-
exit 1
|
|
34
|
-
fi
|
|
35
|
-
|
|
36
|
-
FLOW_SKILL_DIR="$(resolve_flow_skill_dir "${BASH_SOURCE[0]}")"
|
|
37
|
-
PROFILE_REGISTRY_ROOT="$(resolve_flow_profile_registry_root)"
|
|
38
|
-
CONFIG_YAML="$(flow_find_profile_dir_by_id "${FLOW_SKILL_DIR}" "${profile_id}")/control-plane.yaml"
|
|
39
|
-
PROFILE_NOTES="$(flow_resolve_profile_notes_file "${CONFIG_YAML}")"
|
|
40
|
-
AVAILABLE_PROFILES="$(flow_list_profile_ids "${FLOW_SKILL_DIR}" | paste -sd, -)"
|
|
41
|
-
|
|
42
|
-
if [[ ! -f "${CONFIG_YAML}" ]]; then
|
|
43
|
-
echo "unknown profile id: ${profile_id}" >&2
|
|
44
|
-
echo "AVAILABLE_PROFILES=${AVAILABLE_PROFILES}" >&2
|
|
45
|
-
exit 1
|
|
46
|
-
fi
|
|
47
|
-
|
|
48
|
-
export ACP_PROJECT_ID="${profile_id}"
|
|
49
|
-
export AGENT_PROJECT_ID="${profile_id}"
|
|
50
|
-
flow_export_execution_env "${CONFIG_YAML}"
|
|
51
|
-
|
|
52
|
-
REPO_SLUG="$(flow_resolve_repo_slug "${CONFIG_YAML}")"
|
|
53
|
-
REPO_ROOT="$(flow_resolve_repo_root "${CONFIG_YAML}")"
|
|
54
|
-
AGENT_ROOT="$(flow_resolve_agent_root "${CONFIG_YAML}")"
|
|
55
|
-
AGENT_REPO_ROOT="$(flow_resolve_agent_repo_root "${CONFIG_YAML}")"
|
|
56
|
-
WORKTREE_ROOT="$(flow_resolve_worktree_root "${CONFIG_YAML}")"
|
|
57
|
-
RUNS_ROOT="$(flow_resolve_runs_root "${CONFIG_YAML}")"
|
|
58
|
-
STATE_ROOT="$(flow_resolve_state_root "${CONFIG_YAML}")"
|
|
59
|
-
CODING_WORKER="${ACP_CODING_WORKER:-codex}"
|
|
60
|
-
ACTIVE_PROVIDER_POOL_NAME="${ACP_ACTIVE_PROVIDER_POOL_NAME:-}"
|
|
61
|
-
|
|
62
|
-
if [[ "${exports_only}" == "1" ]]; then
|
|
63
|
-
printf 'export ACP_PROJECT_ID=%q
|
|
64
|
-
' "${profile_id}"
|
|
65
|
-
printf 'export AGENT_PROJECT_ID=%q
|
|
66
|
-
' "${profile_id}"
|
|
67
|
-
printf 'export ACP_PROFILE_REGISTRY_ROOT=%q
|
|
68
|
-
' "${PROFILE_REGISTRY_ROOT}"
|
|
69
|
-
printf 'export ACP_CONFIG=%q
|
|
70
|
-
' "${CONFIG_YAML}"
|
|
71
|
-
printf 'export ACP_PROFILE_NOTES=%q
|
|
72
|
-
' "${PROFILE_NOTES}"
|
|
73
|
-
printf 'export ACP_PROFILE_REPO_ROOT=%q
|
|
74
|
-
' "${REPO_ROOT}"
|
|
75
|
-
printf 'export ACP_PROFILE_AGENT_ROOT=%q
|
|
76
|
-
' "${AGENT_ROOT}"
|
|
77
|
-
exit 0
|
|
78
|
-
fi
|
|
79
|
-
|
|
80
|
-
printf 'PROFILE_ID=%s
|
|
81
|
-
' "${profile_id}"
|
|
82
|
-
printf 'PROFILE_REGISTRY_ROOT=%s
|
|
83
|
-
' "${PROFILE_REGISTRY_ROOT}"
|
|
84
|
-
printf 'CONFIG_YAML=%s
|
|
85
|
-
' "${CONFIG_YAML}"
|
|
86
|
-
printf 'PROFILE_NOTES=%s
|
|
87
|
-
' "${PROFILE_NOTES}"
|
|
88
|
-
printf 'AVAILABLE_PROFILES=%s
|
|
89
|
-
' "${AVAILABLE_PROFILES}"
|
|
90
|
-
printf 'REPO_SLUG=%s
|
|
91
|
-
' "${REPO_SLUG}"
|
|
92
|
-
printf 'REPO_ROOT=%s
|
|
93
|
-
' "${REPO_ROOT}"
|
|
94
|
-
printf 'AGENT_ROOT=%s
|
|
95
|
-
' "${AGENT_ROOT}"
|
|
96
|
-
printf 'AGENT_REPO_ROOT=%s
|
|
97
|
-
' "${AGENT_REPO_ROOT}"
|
|
98
|
-
printf 'WORKTREE_ROOT=%s
|
|
99
|
-
' "${WORKTREE_ROOT}"
|
|
100
|
-
printf 'RUNS_ROOT=%s
|
|
101
|
-
' "${RUNS_ROOT}"
|
|
102
|
-
printf 'STATE_ROOT=%s
|
|
103
|
-
' "${STATE_ROOT}"
|
|
104
|
-
printf 'CODING_WORKER=%s
|
|
105
|
-
' "${CODING_WORKER}"
|
|
106
|
-
printf 'ACTIVE_PROVIDER_POOL_NAME=%s
|
|
107
|
-
' "${ACTIVE_PROVIDER_POOL_NAME}"
|
|
108
|
-
printf 'NEXT_STEP=eval "$(%s --profile-id %s --exports)"
|
|
109
|
-
' "${SCRIPT_PATH}" "${profile_id}"
|
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -euo pipefail
|
|
3
|
-
|
|
4
|
-
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
5
|
-
# shellcheck source=/dev/null
|
|
6
|
-
source "${SCRIPT_DIR}/flow-config-lib.sh"
|
|
7
|
-
|
|
8
|
-
usage() {
|
|
9
|
-
cat <<'EOF'
|
|
10
|
-
Usage:
|
|
11
|
-
profile-adopt.sh [--profile-id <id>] [options]
|
|
12
|
-
|
|
13
|
-
Prepare an available profile for real scheduler use by creating runtime roots,
|
|
14
|
-
seeding the agent anchor repo when possible, syncing the VS Code workspace file,
|
|
15
|
-
and copying the selected installed profile into the runtime root for quick
|
|
16
|
-
operator access.
|
|
17
|
-
|
|
18
|
-
Options:
|
|
19
|
-
--profile-id <id> Profile id to adopt
|
|
20
|
-
--source-repo-root <path> Optional source repo used when seeding the agent repo
|
|
21
|
-
--skip-anchor-sync Do not run sync-agent-repo.sh
|
|
22
|
-
--skip-workspace-sync Do not run sync-vscode-workspace.sh
|
|
23
|
-
--allow-missing-repo Continue when canonical/source repos are missing
|
|
24
|
-
--help Show this help
|
|
25
|
-
EOF
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
profile_id_override=""
|
|
29
|
-
source_repo_root_override=""
|
|
30
|
-
skip_anchor_sync="0"
|
|
31
|
-
skip_workspace_sync="0"
|
|
32
|
-
allow_missing_repo="0"
|
|
33
|
-
|
|
34
|
-
while [[ $# -gt 0 ]]; do
|
|
35
|
-
case "$1" in
|
|
36
|
-
--profile-id) profile_id_override="${2:-}"; shift 2 ;;
|
|
37
|
-
--source-repo-root) source_repo_root_override="${2:-}"; shift 2 ;;
|
|
38
|
-
--skip-anchor-sync) skip_anchor_sync="1"; shift ;;
|
|
39
|
-
--skip-workspace-sync) skip_workspace_sync="1"; shift ;;
|
|
40
|
-
--allow-missing-repo) allow_missing_repo="1"; shift ;;
|
|
41
|
-
--help|-h) usage; exit 0 ;;
|
|
42
|
-
*) echo "Unknown argument: $1" >&2; usage >&2; exit 1 ;;
|
|
43
|
-
esac
|
|
44
|
-
done
|
|
45
|
-
|
|
46
|
-
if [[ -n "$profile_id_override" ]]; then
|
|
47
|
-
export ACP_PROJECT_ID="$profile_id_override"
|
|
48
|
-
export AGENT_PROJECT_ID="$profile_id_override"
|
|
49
|
-
fi
|
|
50
|
-
|
|
51
|
-
FLOW_SKILL_DIR="$(resolve_flow_skill_dir "${BASH_SOURCE[0]}")"
|
|
52
|
-
CONFIG_YAML="$(resolve_flow_config_yaml "${BASH_SOURCE[0]}")"
|
|
53
|
-
PROFILE_ID="$(flow_resolve_adapter_id "${CONFIG_YAML}")"
|
|
54
|
-
PROFILE_REGISTRY_ROOT="$(resolve_flow_profile_registry_root)"
|
|
55
|
-
if [[ ! -f "${CONFIG_YAML}" ]]; then
|
|
56
|
-
echo "[profile-adopt] missing installed profile config: ${CONFIG_YAML}" >&2
|
|
57
|
-
exit 1
|
|
58
|
-
fi
|
|
59
|
-
|
|
60
|
-
REPO_SLUG="$(flow_resolve_repo_slug "${CONFIG_YAML}")"
|
|
61
|
-
DEFAULT_BRANCH="$(flow_resolve_default_branch "${CONFIG_YAML}")"
|
|
62
|
-
PROJECT_LABEL="$(flow_resolve_project_label "${CONFIG_YAML}")"
|
|
63
|
-
REPO_ROOT="$(flow_resolve_repo_root "${CONFIG_YAML}")"
|
|
64
|
-
AGENT_REPO_ROOT="$(flow_resolve_agent_repo_root "${CONFIG_YAML}")"
|
|
65
|
-
AGENT_ROOT="$(flow_resolve_agent_root "${CONFIG_YAML}")"
|
|
66
|
-
RUNS_ROOT="$(flow_resolve_runs_root "${CONFIG_YAML}")"
|
|
67
|
-
STATE_ROOT="$(flow_resolve_state_root "${CONFIG_YAML}")"
|
|
68
|
-
HISTORY_ROOT="$(flow_resolve_history_root "${CONFIG_YAML}")"
|
|
69
|
-
WORKTREE_ROOT="$(flow_resolve_worktree_root "${CONFIG_YAML}")"
|
|
70
|
-
RETAINED_REPO_ROOT="$(flow_resolve_retained_repo_root "${CONFIG_YAML}")"
|
|
71
|
-
VSCODE_WORKSPACE_FILE="$(flow_resolve_vscode_workspace_file "${CONFIG_YAML}")"
|
|
72
|
-
REMOTE_NAME="${ACP_REMOTE_NAME:-origin}"
|
|
73
|
-
SOURCE_REPO_ROOT="${source_repo_root_override:-${ACP_SOURCE_REPO_ROOT:-${RETAINED_REPO_ROOT}}}"
|
|
74
|
-
PROFILE_LINK="${AGENT_ROOT}/control-plane.yaml"
|
|
75
|
-
WORKSPACE_LINK="${AGENT_ROOT}/workspace.code-workspace"
|
|
76
|
-
INSTALLED_PROFILE_DIR="$(dirname "${CONFIG_YAML}")"
|
|
77
|
-
FLOW_TOOLS_DIR="${FLOW_SKILL_DIR}/tools/bin"
|
|
78
|
-
PROFILE_SMOKE_SCRIPT="${FLOW_TOOLS_DIR}/profile-smoke.sh"
|
|
79
|
-
SYNC_AGENT_REPO_SCRIPT="${FLOW_TOOLS_DIR}/sync-agent-repo.sh"
|
|
80
|
-
SYNC_VSCODE_WORKSPACE_SCRIPT="${FLOW_TOOLS_DIR}/sync-vscode-workspace.sh"
|
|
81
|
-
|
|
82
|
-
canonical_copy_source() {
|
|
83
|
-
local target_path="${1:-}"
|
|
84
|
-
local target_dir=""
|
|
85
|
-
local target_name=""
|
|
86
|
-
|
|
87
|
-
[[ -n "$target_path" ]] || return 1
|
|
88
|
-
target_dir="$(dirname "$target_path")"
|
|
89
|
-
target_name="$(basename "$target_path")"
|
|
90
|
-
target_dir="$(cd "$target_dir" && pwd -P)"
|
|
91
|
-
printf '%s/%s\n' "$target_dir" "$target_name"
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
path_status() {
|
|
95
|
-
local path="${1:-}"
|
|
96
|
-
if [[ -z "$path" ]]; then
|
|
97
|
-
printf 'missing\n'
|
|
98
|
-
elif [[ -d "$path/.git" || -f "$path/.git" ]]; then
|
|
99
|
-
printf 'git\n'
|
|
100
|
-
elif [[ -e "$path" ]]; then
|
|
101
|
-
printf 'exists\n'
|
|
102
|
-
else
|
|
103
|
-
printf 'missing\n'
|
|
104
|
-
fi
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
repo_has_remote() {
|
|
108
|
-
local repo_root="${1:-}"
|
|
109
|
-
local remote_name="${2:-origin}"
|
|
110
|
-
[[ -n "$repo_root" ]] || return 1
|
|
111
|
-
[[ -d "$repo_root/.git" || -f "$repo_root/.git" ]] || return 1
|
|
112
|
-
git -C "$repo_root" remote get-url "$remote_name" >/dev/null 2>&1
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
if ! smoke_output="$(ACP_PROJECT_ID="$PROFILE_ID" bash "$PROFILE_SMOKE_SCRIPT" --profile-id "$PROFILE_ID" 2>&1)"; then
|
|
116
|
-
printf '%s\n' "$smoke_output" >&2
|
|
117
|
-
exit 1
|
|
118
|
-
fi
|
|
119
|
-
|
|
120
|
-
mkdir -p "$AGENT_ROOT" "$RUNS_ROOT" "$STATE_ROOT" "$HISTORY_ROOT" "$WORKTREE_ROOT" "$(dirname "$VSCODE_WORKSPACE_FILE")"
|
|
121
|
-
copy_file_into_runtime() {
|
|
122
|
-
local source_file="${1:?source file required}"
|
|
123
|
-
local target_file="${2:?target file required}"
|
|
124
|
-
mkdir -p "$(dirname "$target_file")"
|
|
125
|
-
if [[ -L "$target_file" || -f "$target_file" ]]; then
|
|
126
|
-
rm -f "$target_file"
|
|
127
|
-
elif [[ -d "$target_file" ]]; then
|
|
128
|
-
rm -rf "$target_file"
|
|
129
|
-
fi
|
|
130
|
-
cp "$source_file" "$target_file"
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
copy_file_into_runtime "$(canonical_copy_source "$CONFIG_YAML")" "$PROFILE_LINK"
|
|
134
|
-
|
|
135
|
-
warnings=0
|
|
136
|
-
anchor_sync_status="skipped"
|
|
137
|
-
workspace_sync_status="skipped"
|
|
138
|
-
|
|
139
|
-
canonical_repo_status="$(path_status "$REPO_ROOT")"
|
|
140
|
-
source_repo_status="$(path_status "$SOURCE_REPO_ROOT")"
|
|
141
|
-
agent_repo_status_before="$(path_status "$AGENT_REPO_ROOT")"
|
|
142
|
-
|
|
143
|
-
if [[ "$skip_anchor_sync" == "1" ]]; then
|
|
144
|
-
anchor_sync_status="skipped"
|
|
145
|
-
else
|
|
146
|
-
if repo_has_remote "$REPO_ROOT" "$REMOTE_NAME" || repo_has_remote "$SOURCE_REPO_ROOT" "$REMOTE_NAME"; then
|
|
147
|
-
ACP_PROJECT_ID="$PROFILE_ID" \
|
|
148
|
-
ACP_REPO_ROOT="$REPO_ROOT" \
|
|
149
|
-
ACP_AGENT_REPO_ROOT="$AGENT_REPO_ROOT" \
|
|
150
|
-
ACP_RETAINED_REPO_ROOT="$RETAINED_REPO_ROOT" \
|
|
151
|
-
ACP_SOURCE_REPO_ROOT="$SOURCE_REPO_ROOT" \
|
|
152
|
-
ACP_DEFAULT_BRANCH="$DEFAULT_BRANCH" \
|
|
153
|
-
ACP_REMOTE_NAME="$REMOTE_NAME" \
|
|
154
|
-
bash "$SYNC_AGENT_REPO_SCRIPT" >/dev/null
|
|
155
|
-
anchor_sync_status="ok"
|
|
156
|
-
elif [[ "$allow_missing_repo" == "1" ]]; then
|
|
157
|
-
anchor_sync_status="skipped-missing-repo"
|
|
158
|
-
warnings=$((warnings + 1))
|
|
159
|
-
else
|
|
160
|
-
echo "[profile-adopt] no Git source with remote '${REMOTE_NAME}' for profile ${PROFILE_ID}" >&2
|
|
161
|
-
exit 1
|
|
162
|
-
fi
|
|
163
|
-
fi
|
|
164
|
-
|
|
165
|
-
if [[ "$skip_workspace_sync" == "1" ]]; then
|
|
166
|
-
workspace_sync_status="skipped"
|
|
167
|
-
else
|
|
168
|
-
ACP_PROJECT_ID="$PROFILE_ID" \
|
|
169
|
-
ACP_REPO_ROOT="$REPO_ROOT" \
|
|
170
|
-
ACP_AGENT_REPO_ROOT="$AGENT_REPO_ROOT" \
|
|
171
|
-
ACP_RETAINED_REPO_ROOT="$RETAINED_REPO_ROOT" \
|
|
172
|
-
ACP_VSCODE_WORKSPACE_FILE="$VSCODE_WORKSPACE_FILE" \
|
|
173
|
-
ACP_DEFAULT_BRANCH="$DEFAULT_BRANCH" \
|
|
174
|
-
bash "$SYNC_VSCODE_WORKSPACE_SCRIPT" >/dev/null
|
|
175
|
-
workspace_sync_status="ok"
|
|
176
|
-
fi
|
|
177
|
-
|
|
178
|
-
if [[ -f "$VSCODE_WORKSPACE_FILE" ]]; then
|
|
179
|
-
copy_file_into_runtime "$(canonical_copy_source "$VSCODE_WORKSPACE_FILE")" "$WORKSPACE_LINK"
|
|
180
|
-
else
|
|
181
|
-
rm -f "$WORKSPACE_LINK"
|
|
182
|
-
fi
|
|
183
|
-
|
|
184
|
-
# Keep the configured anchor root materialized even when anchor sync is skipped
|
|
185
|
-
# so later setup/runtime steps can rely on the path existing.
|
|
186
|
-
if [[ "$anchor_sync_status" != "ok" && ! -e "$AGENT_REPO_ROOT" ]]; then
|
|
187
|
-
mkdir -p "$AGENT_REPO_ROOT"
|
|
188
|
-
fi
|
|
189
|
-
|
|
190
|
-
agent_repo_status_after="$(path_status "$AGENT_REPO_ROOT")"
|
|
191
|
-
workspace_file_status="$(path_status "$VSCODE_WORKSPACE_FILE")"
|
|
192
|
-
adopt_status="ok"
|
|
193
|
-
if (( warnings > 0 )); then
|
|
194
|
-
adopt_status="ok-with-warnings"
|
|
195
|
-
fi
|
|
196
|
-
|
|
197
|
-
printf 'PROFILE_ID=%s\n' "$PROFILE_ID"
|
|
198
|
-
printf 'PROJECT_LABEL=%s\n' "$PROJECT_LABEL"
|
|
199
|
-
printf 'PROFILE_REGISTRY_ROOT=%s\n' "$PROFILE_REGISTRY_ROOT"
|
|
200
|
-
printf 'INSTALLED_PROFILE_DIR=%s\n' "$INSTALLED_PROFILE_DIR"
|
|
201
|
-
printf 'CONFIG_YAML=%s\n' "$CONFIG_YAML"
|
|
202
|
-
printf 'REPO_SLUG=%s\n' "$REPO_SLUG"
|
|
203
|
-
printf 'DEFAULT_BRANCH=%s\n' "$DEFAULT_BRANCH"
|
|
204
|
-
printf 'REMOTE_NAME=%s\n' "$REMOTE_NAME"
|
|
205
|
-
printf 'REPO_ROOT=%s\n' "$REPO_ROOT"
|
|
206
|
-
printf 'SOURCE_REPO_ROOT=%s\n' "$SOURCE_REPO_ROOT"
|
|
207
|
-
printf 'AGENT_REPO_ROOT=%s\n' "$AGENT_REPO_ROOT"
|
|
208
|
-
printf 'AGENT_ROOT=%s\n' "$AGENT_ROOT"
|
|
209
|
-
printf 'RUNS_ROOT=%s\n' "$RUNS_ROOT"
|
|
210
|
-
printf 'STATE_ROOT=%s\n' "$STATE_ROOT"
|
|
211
|
-
printf 'HISTORY_ROOT=%s\n' "$HISTORY_ROOT"
|
|
212
|
-
printf 'WORKTREE_ROOT=%s\n' "$WORKTREE_ROOT"
|
|
213
|
-
printf 'VSCODE_WORKSPACE_FILE=%s\n' "$VSCODE_WORKSPACE_FILE"
|
|
214
|
-
printf 'PROFILE_LINK=%s\n' "$PROFILE_LINK"
|
|
215
|
-
printf 'WORKSPACE_LINK=%s\n' "$WORKSPACE_LINK"
|
|
216
|
-
printf 'CANONICAL_REPO_STATUS=%s\n' "$canonical_repo_status"
|
|
217
|
-
printf 'SOURCE_REPO_STATUS=%s\n' "$source_repo_status"
|
|
218
|
-
printf 'AGENT_REPO_STATUS_BEFORE=%s\n' "$agent_repo_status_before"
|
|
219
|
-
printf 'AGENT_REPO_STATUS_AFTER=%s\n' "$agent_repo_status_after"
|
|
220
|
-
printf 'WORKSPACE_FILE_STATUS=%s\n' "$workspace_file_status"
|
|
221
|
-
printf 'PROFILE_SMOKE_STATUS=ok\n'
|
|
222
|
-
printf 'ANCHOR_SYNC_STATUS=%s\n' "$anchor_sync_status"
|
|
223
|
-
printf 'WORKSPACE_SYNC_STATUS=%s\n' "$workspace_sync_status"
|
|
224
|
-
printf 'WARNING_COUNT=%s\n' "$warnings"
|
|
225
|
-
printf 'ADOPT_STATUS=%s\n' "$adopt_status"
|