@indigoai-us/hq-cli 5.345.114 → 5.345.116
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/CHANGELOG.md +13 -0
- package/assets/scaffold/core/scripts/hq-delegate-send.sh +5 -1
- package/dist/commands/bot-jobs.d.ts +1 -11
- package/dist/commands/bot-jobs.js +13 -34
- package/dist/commands/core-audit-log-native.js +1 -1
- package/dist/commands/core-checkpoint-native.d.ts +27 -0
- package/dist/commands/core-checkpoint-native.js +85 -2
- package/dist/commands/core-dm-bind-native.js +1 -1
- package/dist/commands/core-git-pack-extension-check-native.js +1 -1
- package/dist/commands/core-job-native-utils.d.ts +2 -2
- package/dist/commands/core-job-native-utils.js +3 -11
- package/dist/commands/core-job-notify-native.js +1 -2
- package/dist/commands/core-job-probe-native.d.ts +2 -3
- package/dist/commands/core-job-probe-native.js +14 -22
- package/dist/commands/core-job-remediate-native.js +1 -2
- package/dist/commands/core-job-run-native.js +58 -54
- package/dist/commands/core-jobs-native.d.ts +1 -3
- package/dist/commands/core-jobs-native.js +16 -271
- package/dist/commands/core-jobs-schedule.d.ts +7 -0
- package/dist/commands/core-jobs-schedule.js +243 -0
- package/dist/commands/core-native-utilities.d.ts +2 -3
- package/dist/commands/core-native-utilities.js +2 -19
- package/dist/commands/core-pin-native.js +1 -1
- package/dist/commands/core-refresh-vault-access-native.js +1 -1
- package/dist/commands/core-resolve-company-command.js +2 -17
- package/dist/commands/core-work-mesh-bind-trusted-native.js +1 -1
- package/dist/commands/core.js +1 -17
- package/dist/fast-scaffold.d.ts +1 -1
- package/dist/fast-scaffold.js +0 -38
- package/dist/lib/daemon/catalog.d.ts +0 -2
- package/dist/lib/daemon/catalog.js +3 -6
- package/dist/lib/daemon/run.js +0 -7
- package/dist/lib/scan-packages/index.js +6 -0
- package/dist/lib/workers-registry/index.d.ts +16 -0
- package/dist/lib/workers-registry/index.js +1 -1
- package/dist/utils/resident-package-preload.js +2 -7
- package/package.json +1 -1
- package/assets/scaffold/core/scripts/audit-log.sh +0 -384
- package/assets/scaffold/core/scripts/git-pack-extension-check.sh +0 -164
- package/assets/scaffold/core/scripts/hq-dm-bind.sh +0 -590
- package/assets/scaffold/core/scripts/hq-job-notify.sh +0 -389
- package/assets/scaffold/core/scripts/hq-job-probe.sh +0 -865
- package/assets/scaffold/core/scripts/hq-job-remediate.sh +0 -359
- package/assets/scaffold/core/scripts/hq-job-run.sh +0 -1025
- package/assets/scaffold/core/scripts/hq-pin.sh +0 -118
- package/assets/scaffold/core/scripts/jobs-schedule-parse.sh +0 -310
- package/assets/scaffold/core/scripts/jobs-validate.sh +0 -482
- package/assets/scaffold/core/scripts/outpost-jobs-reconcile.sh +0 -836
- package/assets/scaffold/core/scripts/refresh-vault-access.sh +0 -188
- package/assets/scaffold/core/scripts/resolve-company.sh +0 -331
- package/assets/scaffold/core/scripts/work-mesh-live-bind-trusted.sh +0 -184
- package/dist/commands/core-job-post-exit-assets.d.ts +0 -8
- package/dist/commands/core-job-post-exit-assets.js +0 -37
- package/dist/commands/core-native-jobs-flag.d.ts +0 -4
- package/dist/commands/core-native-jobs-flag.js +0 -7
- package/dist/commands/core-native-utilities-flag.d.ts +0 -4
- package/dist/commands/core-native-utilities-flag.js +0 -7
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
# hq-core: public
|
|
3
|
-
# US-011 — write session meta + reconcile with observation.trustedContext.
|
|
4
|
-
# No --trusted CLI flag in hq-cli; trusted bind is the observation field.
|
|
5
|
-
set -euo pipefail
|
|
6
|
-
|
|
7
|
-
ROOT="${HQ_ROOT:-${CLAUDE_PROJECT_DIR:-}}"
|
|
8
|
-
if [ -z "$ROOT" ]; then
|
|
9
|
-
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
10
|
-
fi
|
|
11
|
-
|
|
12
|
-
COMPANY=""
|
|
13
|
-
PROJECT=""
|
|
14
|
-
TASK=""
|
|
15
|
-
SESSION_ID=""
|
|
16
|
-
NO_RECONCILE=0
|
|
17
|
-
|
|
18
|
-
while [ $# -gt 0 ]; do
|
|
19
|
-
case "$1" in
|
|
20
|
-
--company|--company-slug) COMPANY="${2:-}"; shift 2 ;;
|
|
21
|
-
--project) PROJECT="${2:-}"; shift 2 ;;
|
|
22
|
-
--task) TASK="${2:-}"; shift 2 ;;
|
|
23
|
-
--session|--session-id) SESSION_ID="${2:-}"; shift 2 ;;
|
|
24
|
-
--no-reconcile) NO_RECONCILE=1; shift ;;
|
|
25
|
-
--root) ROOT="${2:-}"; shift 2 ;;
|
|
26
|
-
-h|--help)
|
|
27
|
-
sed -n '2,8p' "$0" | sed 's/^# \{0,1\}//'
|
|
28
|
-
exit 0
|
|
29
|
-
;;
|
|
30
|
-
*) shift ;;
|
|
31
|
-
esac
|
|
32
|
-
done
|
|
33
|
-
|
|
34
|
-
HQ_SESSION="$ROOT/core/scripts/hq-session.sh"
|
|
35
|
-
|
|
36
|
-
# Resolve session id before metadata writes so a known session is pinned even
|
|
37
|
-
# when the caller omitted --session-id. Empty `pin` must still be safe on
|
|
38
|
-
# macOS Bash 3.2 (`set -u` + `"${pin[@]}"` is an unbound-variable abort).
|
|
39
|
-
if [ -z "$SESSION_ID" ]; then
|
|
40
|
-
SESSION_ID="${HQ_SESSION_ID:-${CLAUDE_CODE_SESSION_ID:-${CLAUDE_SESSION_ID:-${CODEX_SESSION_ID:-${CODEX_THREAD_ID:-}}}}}"
|
|
41
|
-
SESSION_ID="$(printf '%s' "$SESSION_ID" | tr -d '[:space:]')"
|
|
42
|
-
if [ -z "$SESSION_ID" ] && [ -f "$ROOT/workspace/sessions/.current" ]; then
|
|
43
|
-
SESSION_ID="$(tr -d '[:space:]' <"$ROOT/workspace/sessions/.current")"
|
|
44
|
-
fi
|
|
45
|
-
fi
|
|
46
|
-
|
|
47
|
-
pin=()
|
|
48
|
-
if [ -n "$SESSION_ID" ]; then
|
|
49
|
-
pin=(--session-id "$SESSION_ID")
|
|
50
|
-
fi
|
|
51
|
-
|
|
52
|
-
if [ -n "$COMPANY" ]; then
|
|
53
|
-
bash "$HQ_SESSION" ${pin[@]+"${pin[@]}"} set company_slug "$COMPANY"
|
|
54
|
-
fi
|
|
55
|
-
if [ -n "$PROJECT" ]; then
|
|
56
|
-
bash "$HQ_SESSION" ${pin[@]+"${pin[@]}"} set project "$PROJECT"
|
|
57
|
-
fi
|
|
58
|
-
if [ -n "$TASK" ]; then
|
|
59
|
-
bash "$HQ_SESSION" ${pin[@]+"${pin[@]}"} set task "$TASK"
|
|
60
|
-
fi
|
|
61
|
-
|
|
62
|
-
if [ "$NO_RECONCILE" -eq 1 ]; then
|
|
63
|
-
exit 0
|
|
64
|
-
fi
|
|
65
|
-
|
|
66
|
-
[ -n "$SESSION_ID" ] || exit 0
|
|
67
|
-
|
|
68
|
-
# shellcheck source=lib/work-mesh-enqueue.sh
|
|
69
|
-
. "$ROOT/core/scripts/lib/work-mesh-enqueue.sh" 2>/dev/null || true
|
|
70
|
-
|
|
71
|
-
HARNESS="${HQ_HARNESS:-${HQ_WORK_MESH_HARNESS:-claude-code}}"
|
|
72
|
-
case "$HARNESS" in
|
|
73
|
-
claude|Claude|ClaudeCode) HARNESS=claude-code ;;
|
|
74
|
-
Codex) HARNESS=codex ;;
|
|
75
|
-
Grok) HARNESS=grok ;;
|
|
76
|
-
esac
|
|
77
|
-
ADAPTER="${HQ_ADAPTER_CONTRACT_VERSION:-1.0.0}"
|
|
78
|
-
|
|
79
|
-
if command -v work_mesh_ulid >/dev/null 2>&1; then
|
|
80
|
-
work_mesh_ulid >/dev/null; CLIENT_OP=$REPLY
|
|
81
|
-
else
|
|
82
|
-
CLIENT_OP="cop_$(date +%s)_$$"
|
|
83
|
-
fi
|
|
84
|
-
|
|
85
|
-
json_quote() {
|
|
86
|
-
if command -v work_mesh_json_quote >/dev/null 2>&1; then
|
|
87
|
-
work_mesh_json_quote "$1"; printf '%s' "$REPLY"
|
|
88
|
-
return 0
|
|
89
|
-
fi
|
|
90
|
-
if command -v jq >/dev/null 2>&1; then
|
|
91
|
-
jq -n --arg s "$1" '$s'
|
|
92
|
-
return 0
|
|
93
|
-
fi
|
|
94
|
-
# bash-only fallback (hooks-no-python)
|
|
95
|
-
local s=$1
|
|
96
|
-
s=${s//'\'/'\\'}
|
|
97
|
-
s=${s//'"'/'\"'}
|
|
98
|
-
s=${s//$'\n'/'\n'}
|
|
99
|
-
s=${s//$'\r'/'\r'}
|
|
100
|
-
s=${s//$'\t'/'\t'}
|
|
101
|
-
printf '"%s"' "$s"
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
_q_sid="$(json_quote "$SESSION_ID")"
|
|
105
|
-
_q_har="$(json_quote "$HARNESS")"
|
|
106
|
-
_q_ad="$(json_quote "$ADAPTER")"
|
|
107
|
-
_q_op="$(json_quote "$CLIENT_OP")"
|
|
108
|
-
_q_cwd="$(json_quote "${PWD:-}")"
|
|
109
|
-
_q_root="$(json_quote "$ROOT")"
|
|
110
|
-
|
|
111
|
-
OBS='{"contractVersion":1,"clientOperationId":'"$_q_op"',"identity":{"sessionId":'"$_q_sid"',"harness":'"$_q_har"',"adapterVersion":'"$_q_ad"'},"cwd":'"$_q_cwd"',"hqRoot":'"$_q_root"
|
|
112
|
-
if [ -n "$COMPANY" ] || [ -n "$PROJECT" ] || [ -n "$TASK" ]; then
|
|
113
|
-
OBS+=',"trustedContext":{'
|
|
114
|
-
_first=1
|
|
115
|
-
if [ -n "$COMPANY" ]; then
|
|
116
|
-
OBS+='"companySlug":'"$(json_quote "$COMPANY")"
|
|
117
|
-
_first=0
|
|
118
|
-
fi
|
|
119
|
-
if [ -n "$PROJECT" ]; then
|
|
120
|
-
[ "$_first" -eq 1 ] || OBS+=','
|
|
121
|
-
OBS+='"project":'"$(json_quote "$PROJECT")"
|
|
122
|
-
_first=0
|
|
123
|
-
fi
|
|
124
|
-
if [ -n "$TASK" ]; then
|
|
125
|
-
[ "$_first" -eq 1 ] || OBS+=','
|
|
126
|
-
OBS+='"task":'"$(json_quote "$TASK")"
|
|
127
|
-
fi
|
|
128
|
-
OBS+='}'
|
|
129
|
-
fi
|
|
130
|
-
OBS+='}'
|
|
131
|
-
|
|
132
|
-
OBS_DIR="${TMPDIR:-/tmp}/hq-work-mesh-obs"
|
|
133
|
-
mkdir -p -- "$OBS_DIR" 2>/dev/null || true
|
|
134
|
-
chmod 700 -- "$OBS_DIR" 2>/dev/null || true
|
|
135
|
-
OBS_FILE="$OBS_DIR/$SESSION_ID.bind.$$.json"
|
|
136
|
-
printf '%s\n' "$OBS" >"$OBS_FILE"
|
|
137
|
-
|
|
138
|
-
if [ -n "${HQ_WORK_MESH_RECONCILE_LOG:-}" ]; then
|
|
139
|
-
printf 'reconcile-trusted %s\n' "$OBS_FILE" >>"$HQ_WORK_MESH_RECONCILE_LOG" 2>/dev/null || true
|
|
140
|
-
fi
|
|
141
|
-
|
|
142
|
-
if [ "${HQ_WORK_MESH_RECONCILE_STUB:-}" = "1" ]; then
|
|
143
|
-
exit 0
|
|
144
|
-
fi
|
|
145
|
-
|
|
146
|
-
HQ_BIN="$(command -v hq 2>/dev/null || true)"
|
|
147
|
-
if [ -z "$HQ_BIN" ]; then
|
|
148
|
-
printf '%s\n' 'Work Mesh reconcile skipped: hq CLI not found on PATH.' >&2
|
|
149
|
-
else
|
|
150
|
-
flag_reader="$ROOT/.claude/hooks/work-mesh-daemon-not-loaded-flag.cjs"
|
|
151
|
-
daemon_warning_enabled=false
|
|
152
|
-
if [[ -n "${HQ_FLAGS_API_URL:-}" \
|
|
153
|
-
&& "${HQ_COMPANY_UID:-}" =~ ^cmp_[A-Za-z0-9]{3,128}$ ]] \
|
|
154
|
-
&& command -v node >/dev/null 2>&1 && [[ -f "$flag_reader" ]]; then
|
|
155
|
-
daemon_warning_enabled="$(HQ_CLI_BIN="$HQ_BIN" node "$flag_reader")" || daemon_warning_enabled=false
|
|
156
|
-
fi
|
|
157
|
-
if [ "$daemon_warning_enabled" = "true" ]; then
|
|
158
|
-
# Status only reads the installed service and its live state. Keep this hook
|
|
159
|
-
# bounded, and fail quiet when the CLI or service manager cannot answer.
|
|
160
|
-
daemon_status_file="$(mktemp "${TMPDIR:-/tmp}/hq-work-mesh-daemon-status.XXXXXX" 2>/dev/null)" || daemon_status_file=""
|
|
161
|
-
if [ -n "$daemon_status_file" ]; then
|
|
162
|
-
HQ_NO_UPDATE_CHECK=1 "$HQ_BIN" mesh daemon status --json >"$daemon_status_file" 2>/dev/null &
|
|
163
|
-
daemon_status_pid=$!
|
|
164
|
-
( sleep 2; kill "$daemon_status_pid" 2>/dev/null || true ) &
|
|
165
|
-
daemon_status_watchdog=$!
|
|
166
|
-
daemon_status_rc=0
|
|
167
|
-
wait "$daemon_status_pid" || daemon_status_rc=$?
|
|
168
|
-
kill "$daemon_status_watchdog" 2>/dev/null || true
|
|
169
|
-
wait "$daemon_status_watchdog" 2>/dev/null || true
|
|
170
|
-
if [ "$daemon_status_rc" -eq 0 ] && command -v jq >/dev/null 2>&1 && \
|
|
171
|
-
jq -e '(.ok == true) and (.running == false) and (.message | type == "string" and contains("installed ("))' \
|
|
172
|
-
"$daemon_status_file" >/dev/null 2>&1; then
|
|
173
|
-
printf '%s\n' 'Work Mesh daemon is installed but not loaded; start it with: hq mesh daemon install' >&2
|
|
174
|
-
fi
|
|
175
|
-
rm -f "$daemon_status_file" 2>/dev/null || true
|
|
176
|
-
fi
|
|
177
|
-
fi
|
|
178
|
-
if [ -f "$OBS_FILE" ]; then
|
|
179
|
-
nohup "$HQ_BIN" mesh context reconcile --observation-file "$OBS_FILE" --machine \
|
|
180
|
-
>/dev/null 2>&1 </dev/null &
|
|
181
|
-
disown 2>/dev/null || true
|
|
182
|
-
fi
|
|
183
|
-
fi
|
|
184
|
-
exit 0
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export interface CoreJobPostExitHelpers {
|
|
2
|
-
notifyBin: string;
|
|
3
|
-
remediateBin: string;
|
|
4
|
-
cleanup(): void;
|
|
5
|
-
}
|
|
6
|
-
/** Copy package-backed helpers before the runner releases its package-use lease. */
|
|
7
|
-
export declare function materializeCoreJobPostExitHelpers(scriptPath: string, env: NodeJS.ProcessEnv): CoreJobPostExitHelpers;
|
|
8
|
-
//# sourceMappingURL=core-job-post-exit-assets.d.ts.map
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import * as fs from "node:fs";
|
|
2
|
-
import * as os from "node:os";
|
|
3
|
-
import * as path from "node:path";
|
|
4
|
-
/** Copy package-backed helpers before the runner releases its package-use lease. */
|
|
5
|
-
export function materializeCoreJobPostExitHelpers(scriptPath, env) {
|
|
6
|
-
const sourceDir = path.dirname(scriptPath);
|
|
7
|
-
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "hq-job-post-exit-"));
|
|
8
|
-
const materialize = (name, override) => {
|
|
9
|
-
if (override)
|
|
10
|
-
return override;
|
|
11
|
-
const source = path.join(sourceDir, name);
|
|
12
|
-
const target = path.join(tempDir, name);
|
|
13
|
-
fs.copyFileSync(source, target);
|
|
14
|
-
fs.chmodSync(target, fs.statSync(source).mode & 0o777);
|
|
15
|
-
return target;
|
|
16
|
-
};
|
|
17
|
-
try {
|
|
18
|
-
const notifyBin = materialize("hq-job-notify.sh", env.HQ_JOB_NOTIFY_BIN);
|
|
19
|
-
const remediateBin = materialize("hq-job-remediate.sh", env.HQ_JOB_REMEDIATE_BIN);
|
|
20
|
-
let cleaned = false;
|
|
21
|
-
return {
|
|
22
|
-
notifyBin,
|
|
23
|
-
remediateBin,
|
|
24
|
-
cleanup() {
|
|
25
|
-
if (cleaned)
|
|
26
|
-
return;
|
|
27
|
-
cleaned = true;
|
|
28
|
-
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
catch (error) {
|
|
33
|
-
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
34
|
-
throw error;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=core-job-post-exit-assets.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/** Default-off rollout gate for the native scheduled-jobs helpers. */
|
|
2
|
-
export const CORE_NATIVE_JOBS_FLAG = "core-native-jobs";
|
|
3
|
-
export async function coreNativeJobsEnabled() {
|
|
4
|
-
const { coreNativeFamilyEnabled } = await import("./core-native-family-flag.js");
|
|
5
|
-
return coreNativeFamilyEnabled(CORE_NATIVE_JOBS_FLAG);
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=core-native-jobs-flag.js.map
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/** Default-off rollout gate for native operator utility commands. */
|
|
2
|
-
export declare const CORE_NATIVE_UTILITIES_FLAG = "core-native-utilities";
|
|
3
|
-
export declare function coreNativeUtilitiesEnabled(): Promise<boolean>;
|
|
4
|
-
//# sourceMappingURL=core-native-utilities-flag.d.ts.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/** Default-off rollout gate for native operator utility commands. */
|
|
2
|
-
export const CORE_NATIVE_UTILITIES_FLAG = "core-native-utilities";
|
|
3
|
-
export async function coreNativeUtilitiesEnabled() {
|
|
4
|
-
const { coreNativeFamilyEnabled } = await import("./core-native-family-flag.js");
|
|
5
|
-
return coreNativeFamilyEnabled(CORE_NATIVE_UTILITIES_FLAG);
|
|
6
|
-
}
|
|
7
|
-
//# sourceMappingURL=core-native-utilities-flag.js.map
|