@indigoai-us/hq-cli 5.77.14 → 5.78.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/CHANGELOG.md +23 -0
- package/assets/scaffold/core/scripts/archive-old-threads.sh +86 -0
- package/assets/scaffold/core/scripts/backfill-company-skill-mirrors.sh +73 -0
- package/assets/scaffold/core/scripts/backfill-workspace-mirror.sh +51 -0
- package/assets/scaffold/core/scripts/codex-skill-bridge.sh +550 -0
- package/assets/scaffold/core/scripts/detect-stale-core-policy-mirror.sh +185 -0
- package/assets/scaffold/core/scripts/hq-status-summary.sh +187 -0
- package/assets/scaffold/core/scripts/ontology-readme-drift.sh +264 -0
- package/assets/scaffold/core/scripts/qmd-reindex-after-sync.sh +93 -0
- package/assets/scaffold/core/scripts/rebuild-all-indexes.sh +69 -0
- package/assets/scaffold/core/scripts/rebuild-companies-index.sh +206 -0
- package/assets/scaffold/core/scripts/rebuild-company-knowledge-index.sh +127 -0
- package/assets/scaffold/core/scripts/rebuild-orchestrator-index.sh +86 -0
- package/assets/scaffold/core/scripts/rebuild-projects-index.sh +105 -0
- package/assets/scaffold/core/scripts/rebuild-public-knowledge-index.sh +83 -0
- package/assets/scaffold/core/scripts/rebuild-reports-index.sh +114 -0
- package/assets/scaffold/core/scripts/rebuild-social-drafts-index.sh +135 -0
- package/assets/scaffold/core/scripts/rebuild-threads-index.sh +82 -0
- package/assets/scaffold/core/scripts/rebuild-workers-index.sh +97 -0
- package/assets/scaffold/core/scripts/resize-screenshot.sh +47 -0
- package/assets/scaffold/core/scripts/token-usage-report.sh +254 -0
- package/assets/scaffold/core/scripts/worktree.sh +136 -0
- package/dist/commands/agents.js +28 -12
- package/dist/commands/api-keys.js +100 -20
- package/dist/commands/core.d.ts +90 -0
- package/dist/commands/core.js +279 -0
- package/dist/commands/files-browse.d.ts +21 -0
- package/dist/commands/files-browse.js +145 -24
- package/dist/commands/files.js +33 -7
- package/dist/commands/members.js +16 -5
- package/dist/commands/pack-install.d.ts +14 -0
- package/dist/commands/pack-install.js +42 -2
- package/dist/commands/pkg-install.js +39 -2
- package/dist/commands/run.js +6 -2
- package/dist/commands/secrets.js +120 -65
- package/dist/main.js +6 -0
- package/dist/utils/api-key-command-gate.d.ts +45 -0
- package/dist/utils/api-key-command-gate.js +51 -0
- package/dist/utils/hq-roots.d.ts +91 -0
- package/dist/utils/hq-roots.js +212 -0
- package/dist/utils/resolve-vault-credential.d.ts +63 -3
- package/dist/utils/resolve-vault-credential.js +152 -6
- package/dist/utils/run-bundled-script.d.ts +66 -0
- package/dist/utils/run-bundled-script.js +80 -0
- package/dist/utils/vault-api.d.ts +21 -0
- package/dist/utils/vault-api.js +74 -3
- package/package.json +7 -1
- package/.claude/policies/hq-cli-interactive-reads-use-sts-vend.md +0 -49
- package/.github/workflows/ci.yml +0 -46
- package/.github/workflows/publish.yml +0 -36
- package/.github/workflows/scripts/smoke-test-pkg.sh +0 -97
- package/e2e/cli.test.ts +0 -128
- package/eslint.config.js +0 -37
- package/pnpm-workspace.yaml +0 -4
- package/scripts/chmod-bins.mjs +0 -49
- package/scripts/generate-dsn.mjs +0 -26
- package/scripts/generate-scan-packages-table.mjs +0 -113
- package/scripts/smoke-sources-signals.sh +0 -103
- package/src/bin/hq-auth-refresh.ts +0 -43
- package/src/cli-version.ts +0 -13
- package/src/commands/__fixtures__/make-tar.ts +0 -126
- package/src/commands/_patterns.ts +0 -10
- package/src/commands/add.ts +0 -75
- package/src/commands/agents.test.ts +0 -527
- package/src/commands/agents.ts +0 -923
- package/src/commands/api-keys.test.ts +0 -291
- package/src/commands/api-keys.ts +0 -382
- package/src/commands/artifact-verify.test.ts +0 -177
- package/src/commands/auth.test.ts +0 -82
- package/src/commands/auth.ts +0 -213
- package/src/commands/billing.test.ts +0 -158
- package/src/commands/billing.ts +0 -146
- package/src/commands/channels.test.ts +0 -74
- package/src/commands/channels.ts +0 -91
- package/src/commands/cloud-demote.test.ts +0 -401
- package/src/commands/cloud-demote.ts +0 -278
- package/src/commands/cloud-provision.test.ts +0 -1117
- package/src/commands/cloud-provision.ts +0 -942
- package/src/commands/cloud.pull-all.test.ts +0 -711
- package/src/commands/cloud.pull-per-company.test.ts +0 -188
- package/src/commands/cloud.push-all.test.ts +0 -485
- package/src/commands/cloud.scope-excluded-warning.test.ts +0 -22
- package/src/commands/cloud.selectors.test.ts +0 -208
- package/src/commands/cloud.status.test.ts +0 -160
- package/src/commands/cloud.test.ts +0 -41
- package/src/commands/cloud.ts +0 -2130
- package/src/commands/company.test.ts +0 -202
- package/src/commands/company.ts +0 -148
- package/src/commands/creators.test.ts +0 -60
- package/src/commands/creators.ts +0 -117
- package/src/commands/crm.test.ts +0 -179
- package/src/commands/crm.ts +0 -236
- package/src/commands/db-migrate.ts +0 -55
- package/src/commands/db-provision.ts +0 -114
- package/src/commands/db-sql.ts +0 -124
- package/src/commands/db-status.ts +0 -108
- package/src/commands/db.ts +0 -26
- package/src/commands/dm.test.ts +0 -748
- package/src/commands/dm.ts +0 -1226
- package/src/commands/feedback.test.ts +0 -413
- package/src/commands/feedback.ts +0 -169
- package/src/commands/files-browse.test.ts +0 -1249
- package/src/commands/files-browse.ts +0 -1506
- package/src/commands/files-delete.test.ts +0 -484
- package/src/commands/files-recovery.test.ts +0 -370
- package/src/commands/files.test.ts +0 -722
- package/src/commands/files.ts +0 -1446
- package/src/commands/group-grants.test.ts +0 -330
- package/src/commands/group-grants.ts +0 -455
- package/src/commands/groups.test.ts +0 -44
- package/src/commands/groups.ts +0 -368
- package/src/commands/integrations.test.ts +0 -633
- package/src/commands/integrations.ts +0 -507
- package/src/commands/list.ts +0 -85
- package/src/commands/login.ts +0 -52
- package/src/commands/logout.ts +0 -30
- package/src/commands/marketplace-install.test.ts +0 -543
- package/src/commands/marketplace-security.test.ts +0 -646
- package/src/commands/mcp-registration.test.ts +0 -2787
- package/src/commands/mcp-registration.ts +0 -2612
- package/src/commands/mcp-status.test.ts +0 -483
- package/src/commands/mcp-status.ts +0 -575
- package/src/commands/mcp-status.us011.test.ts +0 -243
- package/src/commands/meetings.test.ts +0 -522
- package/src/commands/meetings.ts +0 -789
- package/src/commands/members.test.ts +0 -1474
- package/src/commands/members.ts +0 -1181
- package/src/commands/onboard-identity-guard.test.ts +0 -99
- package/src/commands/onboard-identity-guard.ts +0 -103
- package/src/commands/onboard-join.test.ts +0 -96
- package/src/commands/onboard-join.ts +0 -101
- package/src/commands/onboard-warning.test.ts +0 -26
- package/src/commands/onboard-warning.ts +0 -12
- package/src/commands/onboard.ts +0 -267
- package/src/commands/outposts-heartbeat.test.ts +0 -299
- package/src/commands/outposts-heartbeat.ts +0 -310
- package/src/commands/outposts-replica-sync.test.ts +0 -272
- package/src/commands/outposts-self-deploy.test.ts +0 -243
- package/src/commands/outposts.test.ts +0 -1039
- package/src/commands/outposts.ts +0 -1935
- package/src/commands/pack-install-secret-authorization.test.ts +0 -115
- package/src/commands/pack-install.test.ts +0 -1469
- package/src/commands/pack-install.ts +0 -2256
- package/src/commands/pack-update-cache.test.ts +0 -149
- package/src/commands/packs-update-api-key.test.ts +0 -105
- package/src/commands/packs.test.ts +0 -88
- package/src/commands/packs.ts +0 -622
- package/src/commands/people.test.ts +0 -807
- package/src/commands/people.ts +0 -422
- package/src/commands/pkg-install.dispatch.test.ts +0 -103
- package/src/commands/pkg-install.ts +0 -221
- package/src/commands/pkg-list.test.ts +0 -79
- package/src/commands/pkg-list.ts +0 -13
- package/src/commands/pkg-remove.ts +0 -71
- package/src/commands/pkg-update.ts +0 -189
- package/src/commands/publish.test.ts +0 -650
- package/src/commands/publish.ts +0 -580
- package/src/commands/reindex.test.ts +0 -259
- package/src/commands/reindex.ts +0 -274
- package/src/commands/rescue.test.ts +0 -39
- package/src/commands/rescue.ts +0 -210
- package/src/commands/run.env-local.test.ts +0 -88
- package/src/commands/run.test.ts +0 -45
- package/src/commands/run.ts +0 -190
- package/src/commands/safe-extract.test.ts +0 -459
- package/src/commands/safe-extract.ts +0 -444
- package/src/commands/secrets-scope.test.ts +0 -56
- package/src/commands/secrets-scope.ts +0 -32
- package/src/commands/secrets.parse-destination.test.ts +0 -38
- package/src/commands/secrets.test.ts +0 -2050
- package/src/commands/secrets.ts +0 -2249
- package/src/commands/signals.ts +0 -351
- package/src/commands/skill.test.ts +0 -770
- package/src/commands/skill.ts +0 -796
- package/src/commands/sources.ts +0 -362
- package/src/commands/sync-mode.test.ts +0 -366
- package/src/commands/sync-mode.ts +0 -387
- package/src/commands/sync-narrow.test.ts +0 -633
- package/src/commands/sync-narrow.ts +0 -555
- package/src/commands/sync.ts +0 -165
- package/src/commands/team-sync.ts +0 -628
- package/src/commands/update.ts +0 -71
- package/src/commands/whoami.ts +0 -83
- package/src/commands/workers.test.ts +0 -158
- package/src/commands/workers.ts +0 -301
- package/src/index.test.ts +0 -32
- package/src/index.ts +0 -20
- package/src/lib/db/control-plane.test.ts +0 -59
- package/src/lib/db/control-plane.ts +0 -113
- package/src/lib/db/local.test.ts +0 -81
- package/src/lib/db/local.ts +0 -148
- package/src/lib/db/migrate.test.ts +0 -133
- package/src/lib/db/migrate.ts +0 -137
- package/src/lib/db/paths.test.ts +0 -112
- package/src/lib/db/paths.ts +0 -128
- package/src/lib/db/remote-engine.test.ts +0 -44
- package/src/lib/db/remote-engine.ts +0 -148
- package/src/lib/db/remote-sql.test.ts +0 -32
- package/src/lib/db/remote-sql.ts +0 -62
- package/src/lib/db/sql.test.ts +0 -106
- package/src/lib/db/sql.ts +0 -192
- package/src/lib/hq-cloud-dep.smoke.test.ts +0 -75
- package/src/lib/local-tree-diff.test.ts +0 -301
- package/src/lib/local-tree-diff.ts +0 -362
- package/src/lib/narrow-hint-banner.test.ts +0 -235
- package/src/lib/narrow-hint-banner.ts +0 -212
- package/src/lib/plan-limit-nag.test.ts +0 -317
- package/src/lib/plan-limit-nag.ts +0 -264
- package/src/main.ts +0 -371
- package/src/node-preflight.test.ts +0 -60
- package/src/node-preflight.ts +0 -67
- package/src/outpost/session-heartbeat-bounds.test.ts +0 -195
- package/src/outpost/session-heartbeat-guard.test.ts +0 -105
- package/src/outpost/session-heartbeat-publisher.test.ts +0 -178
- package/src/outpost/session-heartbeat-publisher.ts +0 -186
- package/src/outpost/session-heartbeat-retain-guard.test.ts +0 -126
- package/src/outpost/session-heartbeat.test.ts +0 -459
- package/src/outpost/session-heartbeat.ts +0 -877
- package/src/packaging.test.ts +0 -109
- package/src/run/__fixtures__/discover-schemas/example.env.schema +0 -4
- package/src/run/discover-schemas.test.ts +0 -153
- package/src/run/discover-schemas.ts +0 -79
- package/src/run/hq-plugin.test.ts +0 -371
- package/src/run/hq-plugin.ts +0 -277
- package/src/run/varlock-shape.test.ts +0 -57
- package/src/schemas/hq-package.schema.json +0 -155
- package/src/sentry-before-send.test.ts +0 -359
- package/src/sentry-before-send.ts +0 -221
- package/src/sentry-epipe.test.ts +0 -37
- package/src/sentry-release.test.ts +0 -54
- package/src/sentry.test.ts +0 -24
- package/src/sentry.ts +0 -54
- package/src/strategies/link.ts +0 -62
- package/src/strategies/merge.ts +0 -142
- package/src/types.ts +0 -146
- package/src/utils/__fixtures__/scan-packages.generated-block.sh +0 -23
- package/src/utils/auth-error.test.ts +0 -40
- package/src/utils/auth-error.ts +0 -42
- package/src/utils/billing-gate.test.ts +0 -95
- package/src/utils/billing-gate.ts +0 -228
- package/src/utils/breadcrumb-buffer.ts +0 -18
- package/src/utils/cli-telemetry.test.ts +0 -153
- package/src/utils/cli-telemetry.ts +0 -61
- package/src/utils/cognito-session.machine.test.ts +0 -109
- package/src/utils/cognito-session.refresh.test.ts +0 -84
- package/src/utils/cognito-session.test.ts +0 -328
- package/src/utils/cognito-session.ts +0 -448
- package/src/utils/company-selection-error.test.ts +0 -42
- package/src/utils/company-selection-error.ts +0 -45
- package/src/utils/contribution-table.ts +0 -83
- package/src/utils/environmental-error.test.ts +0 -45
- package/src/utils/environmental-error.ts +0 -39
- package/src/utils/epipe.test.ts +0 -28
- package/src/utils/epipe.ts +0 -29
- package/src/utils/expected-cli-error.test.ts +0 -28
- package/src/utils/expected-cli-error.ts +0 -39
- package/src/utils/feedback-diagnostics.test.ts +0 -183
- package/src/utils/feedback-diagnostics.ts +0 -123
- package/src/utils/feedback-screenshots.test.ts +0 -134
- package/src/utils/feedback-screenshots.ts +0 -124
- package/src/utils/feedback-versions.test.ts +0 -98
- package/src/utils/feedback-versions.ts +0 -68
- package/src/utils/git.ts +0 -74
- package/src/utils/integrity.ts +0 -59
- package/src/utils/intercepted-process-exit.test.ts +0 -37
- package/src/utils/intercepted-process-exit.ts +0 -36
- package/src/utils/login-provider.test.ts +0 -42
- package/src/utils/login-provider.ts +0 -30
- package/src/utils/manifest.test.ts +0 -167
- package/src/utils/manifest.ts +0 -131
- package/src/utils/pack-contributions.test.ts +0 -603
- package/src/utils/pack-contributions.ts +0 -450
- package/src/utils/people.ts +0 -215
- package/src/utils/registry-client.ts +0 -204
- package/src/utils/registry.ts +0 -90
- package/src/utils/resolve-vault-credential.test.ts +0 -69
- package/src/utils/resolve-vault-credential.ts +0 -60
- package/src/utils/sandbox-runner-client.test.ts +0 -279
- package/src/utils/sandbox-runner-client.ts +0 -260
- package/src/utils/secrets-cache.ts +0 -183
- package/src/utils/sentry-identity.ts +0 -45
- package/src/utils/settle-with-timeout.test.ts +0 -21
- package/src/utils/settle-with-timeout.ts +0 -22
- package/src/utils/user-yaml-error.test.ts +0 -24
- package/src/utils/user-yaml-error.ts +0 -30
- package/src/utils/vault-api.test.ts +0 -536
- package/src/utils/vault-api.ts +0 -382
- package/src/utils/version-check.test.ts +0 -176
- package/src/utils/version-check.ts +0 -155
- package/src/utils/version-gate.test.ts +0 -1024
- package/src/utils/version-gate.ts +0 -702
- package/test/commands/db-tenant-isolation.test.ts +0 -94
- package/test/commands/db.test.ts +0 -85
- package/test/commands/signals.test.ts +0 -207
- package/test/commands/sources.test.ts +0 -231
- package/test/e2e/smoke-install-mcp.sh +0 -113
- package/test/fixtures/hq-pack-smoke-mcp/mcp/smoke-http.json +0 -1
- package/test/fixtures/hq-pack-smoke-mcp/package.yaml +0 -11
- package/test/fixtures/signals/action_item/sample.md +0 -16
- package/test/fixtures/signals/summary/sample.md +0 -12
- package/test/fixtures/sources/meetings/sample.md +0 -25
- package/test/helpers/cli-runner.ts +0 -150
- package/test/helpers/s3-list-mock.ts +0 -79
- package/test/helpers/vault-service-mock.ts +0 -295
- package/test/sources-signals/smoke.test.ts +0 -228
- package/tsconfig.json +0 -20
- package/vitest.config.ts +0 -11
- package/vitest.e2e.config.ts +0 -7
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [5.78.0]
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Hidden `hq core` command group bundles 21 HQ scaffold scripts from
|
|
10
|
+
`assets/scaffold/`; its ten index rebuilders run through
|
|
11
|
+
`hq core rebuild-index <target>`. The group is absent from `hq --help`. (#279)
|
|
12
|
+
- Capability-scoped `HQ_API_KEY` surfaces now cover vault secrets, files,
|
|
13
|
+
agents, members, and pack installs. (#278)
|
|
14
|
+
- Clarified `hq api-keys create --scope`: scopes grant the exact secret name and
|
|
15
|
+
slash descendants, not underscore siblings. (#277)
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Kept `convert-codex` scaffold-owned because its validator remains in the HQ
|
|
20
|
+
tree. (#279)
|
|
21
|
+
- `rebuild-threads-index` no longer skips `recent.md` when `pipefail` meets a
|
|
22
|
+
large result set. (#279)
|
|
23
|
+
- `generate-openai-yaml` now resolves the correct HQ root instead of finding
|
|
24
|
+
zero skills. (#279)
|
|
25
|
+
- Source maps no longer enter the npm tarball when the package `files` allowlist
|
|
26
|
+
is present. (#279)
|
|
27
|
+
|
|
5
28
|
## [5.77.14]
|
|
6
29
|
|
|
7
30
|
### Fixed
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# archive-old-threads.sh — move thread JSONs older than CUTOFF_DAYS into
|
|
3
|
+
# workspace/threads/archive/YYYY-MM/.
|
|
4
|
+
#
|
|
5
|
+
# Default cutoff: 60 days. Idempotent — files already in archive/ are ignored.
|
|
6
|
+
# Safe to run repeatedly; gated to once-per-day via a touchfile when invoked
|
|
7
|
+
# with --gated.
|
|
8
|
+
#
|
|
9
|
+
# Usage:
|
|
10
|
+
# core/scripts/archive-old-threads.sh # run archive, 60-day cutoff
|
|
11
|
+
# core/scripts/archive-old-threads.sh --days 90 # custom cutoff
|
|
12
|
+
# core/scripts/archive-old-threads.sh --gated # skip if ran within 24h
|
|
13
|
+
# core/scripts/archive-old-threads.sh --dry-run # preview without moving
|
|
14
|
+
|
|
15
|
+
set -euo pipefail
|
|
16
|
+
|
|
17
|
+
HQ_ROOT="${HQ_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
|
|
18
|
+
cd "$HQ_ROOT"
|
|
19
|
+
|
|
20
|
+
CUTOFF_DAYS=60
|
|
21
|
+
DRY_RUN="false"
|
|
22
|
+
GATED="false"
|
|
23
|
+
|
|
24
|
+
while [[ $# -gt 0 ]]; do
|
|
25
|
+
case "$1" in
|
|
26
|
+
--days) CUTOFF_DAYS="$2"; shift 2 ;;
|
|
27
|
+
--dry-run) DRY_RUN="true"; shift ;;
|
|
28
|
+
--gated) GATED="true"; shift ;;
|
|
29
|
+
*) echo "Unknown arg: $1" >&2; exit 2 ;;
|
|
30
|
+
esac
|
|
31
|
+
done
|
|
32
|
+
|
|
33
|
+
TOUCHFILE="workspace/.last-archive-run"
|
|
34
|
+
if [[ "$GATED" == "true" && -f "$TOUCHFILE" ]]; then
|
|
35
|
+
# macOS `stat -f %m` gives mtime epoch; GNU `stat -c %Y`. Try both.
|
|
36
|
+
mtime=$(stat -f %m "$TOUCHFILE" 2>/dev/null || stat -c %Y "$TOUCHFILE" 2>/dev/null || echo 0)
|
|
37
|
+
now=$(date +%s)
|
|
38
|
+
if [[ $((now - mtime)) -lt 86400 ]]; then
|
|
39
|
+
echo "archive-old-threads: gated (ran <24h ago, skipping)" >&2
|
|
40
|
+
exit 0
|
|
41
|
+
fi
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
THREADS_DIR="workspace/threads"
|
|
45
|
+
ARCHIVE_ROOT="${THREADS_DIR}/archive"
|
|
46
|
+
mkdir -p "$ARCHIVE_ROOT"
|
|
47
|
+
|
|
48
|
+
# Thread files are named T-YYYYMMDD-HHMMSS-slug.json.
|
|
49
|
+
# Extract YYYYMMDD from name, compare to cutoff.
|
|
50
|
+
CUTOFF_EPOCH=$(date -v-"${CUTOFF_DAYS}"d +%Y%m%d 2>/dev/null || date -d "-${CUTOFF_DAYS} days" +%Y%m%d 2>/dev/null)
|
|
51
|
+
if [[ -z "$CUTOFF_EPOCH" ]]; then
|
|
52
|
+
echo "archive-old-threads: could not compute cutoff date" >&2
|
|
53
|
+
exit 1
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
moved=0
|
|
57
|
+
skipped=0
|
|
58
|
+
while IFS= read -r f; do
|
|
59
|
+
base=$(basename "$f")
|
|
60
|
+
# Extract YYYYMMDD (after "T-")
|
|
61
|
+
date_part=$(echo "$base" | sed -E 's/^T-([0-9]{8})-.*/\1/')
|
|
62
|
+
if [[ ! "$date_part" =~ ^[0-9]{8}$ ]]; then
|
|
63
|
+
skipped=$((skipped + 1))
|
|
64
|
+
continue
|
|
65
|
+
fi
|
|
66
|
+
if [[ "$date_part" -lt "$CUTOFF_EPOCH" ]]; then
|
|
67
|
+
# Archive bucket: YYYY-MM
|
|
68
|
+
yyyy="${date_part:0:4}"
|
|
69
|
+
mm="${date_part:4:2}"
|
|
70
|
+
bucket="${ARCHIVE_ROOT}/${yyyy}-${mm}"
|
|
71
|
+
if [[ "$DRY_RUN" == "true" ]]; then
|
|
72
|
+
echo "WOULD MOVE: $f -> $bucket/" >&2
|
|
73
|
+
else
|
|
74
|
+
mkdir -p "$bucket"
|
|
75
|
+
mv "$f" "$bucket/"
|
|
76
|
+
fi
|
|
77
|
+
moved=$((moved + 1))
|
|
78
|
+
fi
|
|
79
|
+
done < <(ls "$THREADS_DIR"/T-*.json 2>/dev/null || true)
|
|
80
|
+
|
|
81
|
+
if [[ "$DRY_RUN" != "true" && "$GATED" == "true" ]]; then
|
|
82
|
+
mkdir -p "$(dirname "$TOUCHFILE")"
|
|
83
|
+
touch "$TOUCHFILE"
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
echo "archive-old-threads: cutoff=${CUTOFF_DAYS}d (before ${CUTOFF_EPOCH}) moved=${moved} skipped=${skipped} dry_run=${DRY_RUN}" >&2
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# backfill-company-skill-mirrors.sh
|
|
3
|
+
#
|
|
4
|
+
# One-shot, idempotent. Walks every company under companies/{co}/skills/ and
|
|
5
|
+
# companies/{co}/commands/ and ensures a mirror symlink exists at
|
|
6
|
+
# .claude/skills/{prefix}-{name}/ (or .claude/commands/{prefix}-{name}.md).
|
|
7
|
+
#
|
|
8
|
+
# Logic is delegated to .claude/hooks/auto-mirror-company-skill.sh — this
|
|
9
|
+
# script just discovers candidate paths and feeds them in. Re-run safely.
|
|
10
|
+
#
|
|
11
|
+
# Usage: bash core/scripts/backfill-company-skill-mirrors.sh
|
|
12
|
+
|
|
13
|
+
set -euo pipefail
|
|
14
|
+
|
|
15
|
+
PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"
|
|
16
|
+
HOOK="$PROJECT_DIR/.claude/hooks/auto-mirror-company-skill.sh"
|
|
17
|
+
|
|
18
|
+
if [[ ! -x "$HOOK" ]]; then
|
|
19
|
+
echo "ERROR: auto-mirror hook not found or not executable: $HOOK" >&2
|
|
20
|
+
exit 1
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
cd "$PROJECT_DIR"
|
|
24
|
+
|
|
25
|
+
CREATED=0
|
|
26
|
+
SKIPPED=0
|
|
27
|
+
|
|
28
|
+
emit() {
|
|
29
|
+
local rel_path="$1"
|
|
30
|
+
rel_path="${rel_path//\/\//\/}"
|
|
31
|
+
local out
|
|
32
|
+
out=$(echo "{\"tool_input\":{\"file_path\":\"$rel_path\"}}" | CLAUDE_PROJECT_DIR="$PROJECT_DIR" bash "$HOOK" 2>&1 || true)
|
|
33
|
+
if [[ -n "$out" ]]; then
|
|
34
|
+
echo "$out"
|
|
35
|
+
if [[ "$out" == *"linked"* ]]; then
|
|
36
|
+
CREATED=$((CREATED + 1))
|
|
37
|
+
else
|
|
38
|
+
SKIPPED=$((SKIPPED + 1))
|
|
39
|
+
fi
|
|
40
|
+
fi
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
shopt -s nullglob
|
|
44
|
+
for co_dir in companies/*/; do
|
|
45
|
+
co="${co_dir%/}"
|
|
46
|
+
co="${co##*/}"
|
|
47
|
+
|
|
48
|
+
# Skip if no manifest entry (defensive — shouldn't happen).
|
|
49
|
+
[[ -d "$co_dir" ]] || continue
|
|
50
|
+
|
|
51
|
+
# Top-level skills: directory form (skills/{name}/SKILL.md) and flat-file form (skills/{name}.md).
|
|
52
|
+
if [[ -d "$co_dir/skills" ]]; then
|
|
53
|
+
for skill_md in "$co_dir/skills"/*/SKILL.md; do
|
|
54
|
+
[[ -f "$skill_md" ]] || continue
|
|
55
|
+
emit "$skill_md"
|
|
56
|
+
done
|
|
57
|
+
for flat_md in "$co_dir/skills"/*.md; do
|
|
58
|
+
[[ -f "$flat_md" ]] || continue
|
|
59
|
+
emit "$flat_md"
|
|
60
|
+
done
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
# Top-level commands: commands/{name}.md
|
|
64
|
+
if [[ -d "$co_dir/commands" ]]; then
|
|
65
|
+
for cmd_md in "$co_dir/commands"/*.md; do
|
|
66
|
+
[[ -f "$cmd_md" ]] || continue
|
|
67
|
+
emit "$cmd_md"
|
|
68
|
+
done
|
|
69
|
+
fi
|
|
70
|
+
done
|
|
71
|
+
|
|
72
|
+
echo ""
|
|
73
|
+
echo "backfill complete: $CREATED linked, $SKIPPED skipped (already-correct or no-prefix)"
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# One-time backfill: walk workspace/threads/*.json and replay each through
|
|
3
|
+
# the mirror hook so existing sessions are represented in their companies'
|
|
4
|
+
# workspace/ folders.
|
|
5
|
+
#
|
|
6
|
+
# Idempotent: hardlinks use ln -f, index.jsonl rows are deduped by
|
|
7
|
+
# (thread_id, ts, kind). Safe to re-run.
|
|
8
|
+
#
|
|
9
|
+
# Usage: bash core/scripts/backfill-workspace-mirror.sh [HQ_ROOT]
|
|
10
|
+
|
|
11
|
+
set -euo pipefail
|
|
12
|
+
|
|
13
|
+
HQ_ROOT="${1:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"
|
|
14
|
+
HOOK="$HQ_ROOT/.claude/hooks/mirror-thread-to-company.sh"
|
|
15
|
+
THREADS_DIR="$HQ_ROOT/workspace/threads"
|
|
16
|
+
|
|
17
|
+
[ -x "$HOOK" ] || { echo "Mirror hook missing or not executable: $HOOK" >&2; exit 1; }
|
|
18
|
+
[ -d "$THREADS_DIR" ] || { echo "No threads dir at $THREADS_DIR" >&2; exit 1; }
|
|
19
|
+
|
|
20
|
+
mirrored=0
|
|
21
|
+
skipped=0
|
|
22
|
+
total=0
|
|
23
|
+
|
|
24
|
+
for thread in "$THREADS_DIR"/T-*.json; do
|
|
25
|
+
[ -f "$thread" ] || continue
|
|
26
|
+
total=$((total + 1))
|
|
27
|
+
|
|
28
|
+
has_company=$(jq -r 'if .metadata.company then "yes" else "no" end' "$thread" 2>/dev/null || echo "no")
|
|
29
|
+
if [ "$has_company" != "yes" ]; then
|
|
30
|
+
skipped=$((skipped + 1))
|
|
31
|
+
continue
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
printf '{"tool_name":"Write","tool_input":{"file_path":"%s"}}' "$thread" \
|
|
35
|
+
| bash "$HOOK"
|
|
36
|
+
|
|
37
|
+
mirrored=$((mirrored + 1))
|
|
38
|
+
done
|
|
39
|
+
|
|
40
|
+
echo "Backfill complete:"
|
|
41
|
+
echo " Total threads: $total"
|
|
42
|
+
echo " Mirrored: $mirrored"
|
|
43
|
+
echo " Skipped (no co): $skipped"
|
|
44
|
+
echo
|
|
45
|
+
echo "Per-company index.jsonl row counts:"
|
|
46
|
+
for index_file in "$HQ_ROOT"/companies/*/workspace/index.jsonl; do
|
|
47
|
+
[ -f "$index_file" ] || continue
|
|
48
|
+
co=$(basename "$(dirname "$(dirname "$index_file")")")
|
|
49
|
+
rows=$(wc -l < "$index_file" | tr -d ' ')
|
|
50
|
+
printf " %-20s %s rows\n" "$co" "$rows"
|
|
51
|
+
done
|