@indigoai-us/hq-cli 5.345.114 → 5.345.115

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.
Files changed (54) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/assets/scaffold/core/scripts/hq-delegate-send.sh +5 -1
  3. package/dist/commands/bot-jobs.d.ts +1 -11
  4. package/dist/commands/bot-jobs.js +13 -34
  5. package/dist/commands/core-audit-log-native.js +1 -1
  6. package/dist/commands/core-checkpoint-native.d.ts +27 -0
  7. package/dist/commands/core-checkpoint-native.js +85 -2
  8. package/dist/commands/core-dm-bind-native.js +1 -1
  9. package/dist/commands/core-git-pack-extension-check-native.js +1 -1
  10. package/dist/commands/core-job-native-utils.d.ts +2 -2
  11. package/dist/commands/core-job-native-utils.js +3 -11
  12. package/dist/commands/core-job-notify-native.js +1 -2
  13. package/dist/commands/core-job-probe-native.d.ts +2 -3
  14. package/dist/commands/core-job-probe-native.js +14 -22
  15. package/dist/commands/core-job-remediate-native.js +1 -2
  16. package/dist/commands/core-job-run-native.js +58 -54
  17. package/dist/commands/core-jobs-native.d.ts +1 -3
  18. package/dist/commands/core-jobs-native.js +16 -271
  19. package/dist/commands/core-jobs-schedule.d.ts +7 -0
  20. package/dist/commands/core-jobs-schedule.js +243 -0
  21. package/dist/commands/core-native-utilities.d.ts +2 -3
  22. package/dist/commands/core-native-utilities.js +2 -19
  23. package/dist/commands/core-pin-native.js +1 -1
  24. package/dist/commands/core-refresh-vault-access-native.js +1 -1
  25. package/dist/commands/core-resolve-company-command.js +2 -17
  26. package/dist/commands/core-work-mesh-bind-trusted-native.js +1 -1
  27. package/dist/commands/core.js +1 -17
  28. package/dist/fast-scaffold.d.ts +1 -1
  29. package/dist/fast-scaffold.js +0 -38
  30. package/dist/lib/daemon/catalog.d.ts +0 -2
  31. package/dist/lib/daemon/catalog.js +3 -6
  32. package/dist/lib/daemon/run.js +0 -7
  33. package/dist/utils/resident-package-preload.js +2 -7
  34. package/package.json +1 -1
  35. package/assets/scaffold/core/scripts/audit-log.sh +0 -384
  36. package/assets/scaffold/core/scripts/git-pack-extension-check.sh +0 -164
  37. package/assets/scaffold/core/scripts/hq-dm-bind.sh +0 -590
  38. package/assets/scaffold/core/scripts/hq-job-notify.sh +0 -389
  39. package/assets/scaffold/core/scripts/hq-job-probe.sh +0 -865
  40. package/assets/scaffold/core/scripts/hq-job-remediate.sh +0 -359
  41. package/assets/scaffold/core/scripts/hq-job-run.sh +0 -1025
  42. package/assets/scaffold/core/scripts/hq-pin.sh +0 -118
  43. package/assets/scaffold/core/scripts/jobs-schedule-parse.sh +0 -310
  44. package/assets/scaffold/core/scripts/jobs-validate.sh +0 -482
  45. package/assets/scaffold/core/scripts/outpost-jobs-reconcile.sh +0 -836
  46. package/assets/scaffold/core/scripts/refresh-vault-access.sh +0 -188
  47. package/assets/scaffold/core/scripts/resolve-company.sh +0 -331
  48. package/assets/scaffold/core/scripts/work-mesh-live-bind-trusted.sh +0 -184
  49. package/dist/commands/core-job-post-exit-assets.d.ts +0 -8
  50. package/dist/commands/core-job-post-exit-assets.js +0 -37
  51. package/dist/commands/core-native-jobs-flag.d.ts +0 -4
  52. package/dist/commands/core-native-jobs-flag.js +0 -7
  53. package/dist/commands/core-native-utilities-flag.d.ts +0 -4
  54. package/dist/commands/core-native-utilities-flag.js +0 -7
@@ -1,359 +0,0 @@
1
- #!/usr/bin/env bash
2
- # hq-core: public
3
- # hq-job-remediate.sh — bounded self-remediation for Outpost scheduled jobs (US-006).
4
- #
5
- # Allowlist (v1):
6
- # - Cognito / HQ token refresh via `hq auth refresh` when available
7
- # - one `hq sync pull` (personal or --company)
8
- # - single immediate retry for transient infra (signaled via retry_recommended)
9
- # Always-human (never auto-looped):
10
- # - device re-login (Claude/Codex CLI)
11
- # - secret share / missing vault grants
12
- #
13
- # Usage:
14
- # core/scripts/hq-job-remediate.sh --failure-class <class> [--job-id <id>] \
15
- # [--company <slug>] [--hq-root <dir>]
16
- #
17
- # Env / overrides (tests):
18
- # HQ_ROOT, HQ_JOB_REMEDIATE_AUTH_REFRESH_CMD, HQ_JOB_REMEDIATE_SYNC_PULL_CMD
19
- # HQ_JOB_REMEDIATE_DRY=1 — print plan only; do not execute side effects
20
- #
21
- # stdout: JSON {failure_class, attempted, actions[], retry_recommended, always_human, next_action, notes}
22
- # Exit: 0 always on successful classify/plan (even if nothing attempted); 2 usage.
23
-
24
- set -euo pipefail
25
-
26
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
27
- HQ_ROOT="${HQ_ROOT:-$(cd "$SCRIPT_DIR/../.." && pwd)}"
28
-
29
- FAILURE_CLASS=""
30
- JOB_ID=""
31
- COMPANY=""
32
- DRY=0
33
-
34
- usage() {
35
- sed -n '3,24p' "${BASH_SOURCE[0]}" | sed 's/^# \{0,1\}//'
36
- }
37
-
38
- die() {
39
- echo "hq-job-remediate: $*" >&2
40
- exit 2
41
- }
42
-
43
- log() {
44
- echo "hq-job-remediate: $*" >&2
45
- }
46
-
47
- while [ $# -gt 0 ]; do
48
- case "$1" in
49
- --hq-root)
50
- HQ_ROOT="${2:-}"
51
- [ -n "$HQ_ROOT" ] || die "--hq-root requires a directory"
52
- shift 2
53
- ;;
54
- --failure-class)
55
- FAILURE_CLASS="${2:-}"
56
- [ -n "$FAILURE_CLASS" ] || die "--failure-class requires a value"
57
- shift 2
58
- ;;
59
- --job-id)
60
- JOB_ID="${2:-}"
61
- [ -n "$JOB_ID" ] || die "--job-id requires a value"
62
- shift 2
63
- ;;
64
- --company)
65
- COMPANY="${2:-}"
66
- shift 2
67
- ;;
68
- --dry-run)
69
- DRY=1
70
- shift
71
- ;;
72
- -h|--help)
73
- usage
74
- exit 0
75
- ;;
76
- --)
77
- shift
78
- break
79
- ;;
80
- -*)
81
- die "unknown option: $1"
82
- ;;
83
- *)
84
- die "unexpected argument: $1"
85
- ;;
86
- esac
87
- done
88
-
89
- [ -n "$FAILURE_CLASS" ] || die "usage: hq-job-remediate.sh --failure-class <auth|secrets|timeout|agent_error|infra>"
90
-
91
- case "$FAILURE_CLASS" in
92
- auth|secrets|timeout|agent_error|infra) ;;
93
- *)
94
- die "unknown failure_class: $FAILURE_CLASS (want auth|secrets|timeout|agent_error|infra)"
95
- ;;
96
- esac
97
-
98
- # Company slug: reject flag/path injection (e.g. "foo --on-conflict overwrite").
99
- if [ -n "$COMPANY" ] && [ "$COMPANY" != "null" ]; then
100
- if [[ ! "$COMPANY" =~ ^[a-z0-9]([a-z0-9_-]*[a-z0-9])?$ ]]; then
101
- die "invalid --company slug '$COMPANY' (want lowercase kebab/underscore)"
102
- fi
103
- fi
104
-
105
- # Test/env overrides must not contain shell metacharacters; executed as argv arrays only.
106
- assert_safe_override_cmd() {
107
- local cmd="$1"
108
- if printf '%s' "$cmd" | grep -Eq '[;|&$`()<>]'; then
109
- die "unsafe remediate override command rejected"
110
- fi
111
- }
112
-
113
- run_override_or_argv() {
114
- local label="$1"
115
- shift
116
- if [ "$#" -eq 1 ] && [[ "$1" == *" "* ]]; then
117
- # Single string override like "hq auth refresh" — split into argv (no eval).
118
- assert_safe_override_cmd "$1"
119
- # shellcheck disable=SC2206
120
- local -a argv=($1)
121
- run_or_dry "$label" "${argv[@]}"
122
- else
123
- run_or_dry "$label" "$@"
124
- fi
125
- }
126
-
127
- if [ "${HQ_JOB_REMEDIATE_DRY:-}" = "1" ]; then
128
- DRY=1
129
- fi
130
-
131
- ACTIONS_JSON='[]'
132
- ATTEMPTED=0
133
- RETRY=0
134
- ALWAYS_HUMAN=0
135
- NEXT_ACTION=""
136
- NOTES=""
137
-
138
- append_action() {
139
- local a="$1"
140
- ACTIONS_JSON="$(jq -nc --argjson cur "$ACTIONS_JSON" --arg a "$a" '$cur + [$a]')"
141
- }
142
-
143
- run_or_dry() {
144
- local label="$1"
145
- shift
146
- append_action "$label"
147
- if [ "$DRY" -eq 1 ]; then
148
- log "dry-run: would run: $*"
149
- return 0
150
- fi
151
- set +e
152
- "$@" >>"${HQ_JOB_REMEDIATE_LOG:-/dev/null}" 2>&1
153
- local rc=$?
154
- set -e
155
- return "$rc"
156
- }
157
-
158
- # --- always-human classes ----------------------------------------------------
159
- case "$FAILURE_CLASS" in
160
- secrets)
161
- ALWAYS_HUMAN=1
162
- NEXT_ACTION="share the missing secret to this Outpost (hq secrets share KEY) then re-probe"
163
- NOTES="secret share is always-human; no self-remediation"
164
- jq -nc \
165
- --arg failure_class "$FAILURE_CLASS" \
166
- --arg job_id "$JOB_ID" \
167
- --argjson attempted "$ATTEMPTED" \
168
- --argjson actions "$ACTIONS_JSON" \
169
- --argjson retry_recommended "$RETRY" \
170
- --argjson always_human "$ALWAYS_HUMAN" \
171
- --arg next_action "$NEXT_ACTION" \
172
- --arg notes "$NOTES" \
173
- '{
174
- failure_class: $failure_class,
175
- job_id: $job_id,
176
- attempted: ($attempted == 1),
177
- actions: $actions,
178
- retry_recommended: ($retry_recommended == 1),
179
- always_human: ($always_human == 1),
180
- next_action: $next_action,
181
- notes: $notes
182
- }'
183
- exit 0
184
- ;;
185
- auth)
186
- # Cognito/HQ token refresh is allowlisted; device re-login is NOT.
187
- ALWAYS_HUMAN=1
188
- NEXT_ACTION="re-login on Outpost (device code) for the job runtime CLI"
189
- NOTES="attempt Cognito refresh if available; never loop device re-login"
190
-
191
- AUTH_REFRESH_CMD="${HQ_JOB_REMEDIATE_AUTH_REFRESH_CMD:-}"
192
- if [ -z "$AUTH_REFRESH_CMD" ]; then
193
- if command -v hq >/dev/null 2>&1; then
194
- AUTH_REFRESH_CMD="hq auth refresh"
195
- elif command -v hq-auth-refresh >/dev/null 2>&1; then
196
- AUTH_REFRESH_CMD="hq-auth-refresh"
197
- fi
198
- fi
199
-
200
- if [ -n "$AUTH_REFRESH_CMD" ]; then
201
- ATTEMPTED=1
202
- if run_override_or_argv "cognito_token_refresh" "$AUTH_REFRESH_CMD"; then
203
- NOTES="cognito refresh ok; device re-login still required if CLI creds missing"
204
- # Do NOT recommend retry for auth — CLI device login is the real fix.
205
- RETRY=0
206
- else
207
- NOTES="cognito refresh failed or unavailable; device re-login required"
208
- fi
209
- else
210
- NOTES="no hq auth refresh on PATH; device re-login required"
211
- fi
212
-
213
- jq -nc \
214
- --arg failure_class "$FAILURE_CLASS" \
215
- --arg job_id "$JOB_ID" \
216
- --argjson attempted "$ATTEMPTED" \
217
- --argjson actions "$ACTIONS_JSON" \
218
- --argjson retry_recommended "$RETRY" \
219
- --argjson always_human "$ALWAYS_HUMAN" \
220
- --arg next_action "$NEXT_ACTION" \
221
- --arg notes "$NOTES" \
222
- '{
223
- failure_class: $failure_class,
224
- job_id: $job_id,
225
- attempted: ($attempted == 1),
226
- actions: $actions,
227
- retry_recommended: ($retry_recommended == 1),
228
- always_human: ($always_human == 1),
229
- next_action: $next_action,
230
- notes: $notes
231
- }'
232
- exit 0
233
- ;;
234
- timeout)
235
- ALWAYS_HUMAN=0
236
- NEXT_ACTION="raise timeout_seconds or split the job work"
237
- NOTES="timeout is not self-retried in v1 (avoid thrash)"
238
- jq -nc \
239
- --arg failure_class "$FAILURE_CLASS" \
240
- --arg job_id "$JOB_ID" \
241
- --argjson attempted 0 \
242
- --argjson actions "$ACTIONS_JSON" \
243
- --argjson retry_recommended 0 \
244
- --argjson always_human 0 \
245
- --arg next_action "$NEXT_ACTION" \
246
- --arg notes "$NOTES" \
247
- '{
248
- failure_class: $failure_class,
249
- job_id: $job_id,
250
- attempted: false,
251
- actions: $actions,
252
- retry_recommended: false,
253
- always_human: false,
254
- next_action: $next_action,
255
- notes: $notes
256
- }'
257
- exit 0
258
- ;;
259
- agent_error)
260
- ALWAYS_HUMAN=0
261
- NEXT_ACTION="inspect the job log and fix the prompt/skill"
262
- NOTES="agent_error is not self-remediated in v1"
263
- jq -nc \
264
- --arg failure_class "$FAILURE_CLASS" \
265
- --arg job_id "$JOB_ID" \
266
- --argjson attempted 0 \
267
- --argjson actions "$ACTIONS_JSON" \
268
- --argjson retry_recommended 0 \
269
- --argjson always_human 0 \
270
- --arg next_action "$NEXT_ACTION" \
271
- --arg notes "$NOTES" \
272
- '{
273
- failure_class: $failure_class,
274
- job_id: $job_id,
275
- attempted: false,
276
- actions: $actions,
277
- retry_recommended: false,
278
- always_human: false,
279
- next_action: $next_action,
280
- notes: $notes
281
- }'
282
- exit 0
283
- ;;
284
- infra)
285
- ALWAYS_HUMAN=0
286
- NEXT_ACTION="retry after sync; if it persists, check Outpost disk/network"
287
- NOTES="allowlist: cognito refresh + one hq-sync pull + single retry"
288
-
289
- AUTH_REFRESH_CMD="${HQ_JOB_REMEDIATE_AUTH_REFRESH_CMD:-}"
290
- if [ -z "$AUTH_REFRESH_CMD" ]; then
291
- if command -v hq >/dev/null 2>&1; then
292
- AUTH_REFRESH_CMD="hq auth refresh"
293
- elif command -v hq-auth-refresh >/dev/null 2>&1; then
294
- AUTH_REFRESH_CMD="hq-auth-refresh"
295
- fi
296
- fi
297
- if [ -n "$AUTH_REFRESH_CMD" ]; then
298
- ATTEMPTED=1
299
- run_override_or_argv "cognito_token_refresh" "$AUTH_REFRESH_CMD" || true
300
- fi
301
-
302
- SYNC_OVERRIDE="${HQ_JOB_REMEDIATE_SYNC_PULL_CMD:-}"
303
- ATTEMPTED=1
304
- if [ -n "$SYNC_OVERRIDE" ]; then
305
- if run_override_or_argv "hq_sync_pull" "$SYNC_OVERRIDE"; then
306
- RETRY=1
307
- NOTES="sync pull ok; recommend single immediate retry"
308
- else
309
- NOTES="sync pull failed; still recommend one infra retry"
310
- RETRY=1
311
- fi
312
- elif command -v hq >/dev/null 2>&1; then
313
- if [ -n "$COMPANY" ] && [ "$COMPANY" != "null" ]; then
314
- if run_or_dry "hq_sync_pull" hq sync pull --company "$COMPANY" --hq-root "$HQ_ROOT"; then
315
- RETRY=1
316
- NOTES="sync pull ok; recommend single immediate retry"
317
- else
318
- NOTES="sync pull failed; still recommend one infra retry"
319
- RETRY=1
320
- fi
321
- else
322
- if run_or_dry "hq_sync_pull" hq sync pull --personal --hq-root "$HQ_ROOT"; then
323
- RETRY=1
324
- NOTES="sync pull ok; recommend single immediate retry"
325
- else
326
- NOTES="sync pull failed; still recommend one infra retry"
327
- RETRY=1
328
- fi
329
- fi
330
- else
331
- append_action "hq_sync_pull_unavailable"
332
- RETRY=1
333
- NOTES="hq sync pull unavailable; recommend single infra retry anyway"
334
- fi
335
-
336
- jq -nc \
337
- --arg failure_class "$FAILURE_CLASS" \
338
- --arg job_id "$JOB_ID" \
339
- --argjson attempted "$ATTEMPTED" \
340
- --argjson actions "$ACTIONS_JSON" \
341
- --argjson retry_recommended "$RETRY" \
342
- --argjson always_human 0 \
343
- --arg next_action "$NEXT_ACTION" \
344
- --arg notes "$NOTES" \
345
- '{
346
- failure_class: $failure_class,
347
- job_id: $job_id,
348
- attempted: ($attempted == 1),
349
- actions: $actions,
350
- retry_recommended: ($retry_recommended == 1),
351
- always_human: false,
352
- next_action: $next_action,
353
- notes: $notes
354
- }'
355
- exit 0
356
- ;;
357
- esac
358
-
359
- die "unreachable failure_class branch"