@ghl-ai/aw 0.1.49-beta.0 → 0.1.49
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/c4/templates/scripts/aw-c4-bootstrap.sh +4 -4
- package/commands/c4.mjs +3 -3
- package/commands/push.mjs +0 -87
- package/constants.mjs +1 -1
- package/integrate.mjs +0 -7
- package/package.json +1 -1
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
# - .codex/scripts/codex-web-bootstrap.sh (passes --harness codex-web)
|
|
13
13
|
#
|
|
14
14
|
# Override knobs (env):
|
|
15
|
-
# AW_PACKAGE npm spec to install. Defaults to @ghl-ai/aw@
|
|
16
|
-
# with @ghl-ai/aw@
|
|
17
|
-
# @ghl-ai/aw@0.1.x for reproducible CI runs.
|
|
15
|
+
# AW_PACKAGE npm spec to install. Defaults to @ghl-ai/aw@0.1.49-beta.0.
|
|
16
|
+
# Override with @ghl-ai/aw@latest for the stable channel or pin
|
|
17
|
+
# to another @ghl-ai/aw@0.1.x for reproducible CI runs.
|
|
18
18
|
set -Eeuo pipefail
|
|
19
19
|
|
|
20
20
|
# GitHub auth is resolved inside `aw c4` so GITHUB_PAT, GITHUB_TOKEN, and
|
|
@@ -106,7 +106,7 @@ if [ -f "$ENVOY_CA" ] && [ -z "${NODE_EXTRA_CA_CERTS:-}" ]; then
|
|
|
106
106
|
echo "[aw-c4-bootstrap] enabled NODE_EXTRA_CA_CERTS=$ENVOY_CA"
|
|
107
107
|
fi
|
|
108
108
|
|
|
109
|
-
AW_PACKAGE="${AW_PACKAGE:-@ghl-ai/aw@
|
|
109
|
+
AW_PACKAGE="${AW_PACKAGE:-@ghl-ai/aw@0.1.49-beta.0}"
|
|
110
110
|
|
|
111
111
|
echo "[aw-c4-bootstrap] installing ${AW_PACKAGE}"
|
|
112
112
|
npm install -g "${AW_PACKAGE}"
|
package/commands/c4.mjs
CHANGED
|
@@ -350,10 +350,10 @@ export async function c4Command(rawArgs, overrides = {}) {
|
|
|
350
350
|
return exit(0);
|
|
351
351
|
}
|
|
352
352
|
|
|
353
|
-
// Step 6 — npm install -g @ghl-ai/aw.
|
|
354
|
-
const npmRes = spawnSync('npm', ['install', '-g', '@ghl-ai/aw'], { stdio: 'pipe' });
|
|
353
|
+
// Step 6 — npm install -g @ghl-ai/aw@0.1.49-beta.0.
|
|
354
|
+
const npmRes = spawnSync('npm', ['install', '-g', '@ghl-ai/aw@0.1.49-beta.0'], { stdio: 'pipe' });
|
|
355
355
|
if (npmRes && npmRes.status !== 0) {
|
|
356
|
-
writer.stderr('[aw-c4] npm install -g @ghl-ai/aw failed (non-fatal); using existing aw if present\n');
|
|
356
|
+
writer.stderr('[aw-c4] npm install -g @ghl-ai/aw@0.1.49-beta.0 failed (non-fatal); using existing aw if present\n');
|
|
357
357
|
}
|
|
358
358
|
|
|
359
359
|
// Step 7 — aw init --silent.
|
package/commands/push.mjs
CHANGED
|
@@ -518,91 +518,6 @@ function writeAwDocsLinkSummary(projectRoot, links, publishConfig) {
|
|
|
518
518
|
}
|
|
519
519
|
}
|
|
520
520
|
|
|
521
|
-
function normalizeAwDocsRelPath(value) {
|
|
522
|
-
if (!value) return null;
|
|
523
|
-
let relPath = String(value).replace(/\\/g, '/').replace(/^\.\//, '');
|
|
524
|
-
if (relPath.startsWith(`${AW_DOCS_DIR}/`)) relPath = relPath.slice(AW_DOCS_DIR.length + 1);
|
|
525
|
-
return relPath.replace(/^\/+/, '');
|
|
526
|
-
}
|
|
527
|
-
|
|
528
|
-
function featureSlugForAwDocsRelPath(relPath) {
|
|
529
|
-
const normalized = normalizeAwDocsRelPath(relPath);
|
|
530
|
-
if (!normalized) return null;
|
|
531
|
-
const parts = normalized.split('/');
|
|
532
|
-
if (parts[0] !== 'features' || !parts[1]) return null;
|
|
533
|
-
return parts[1];
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
function setIfChanged(target, key, value) {
|
|
537
|
-
if (target[key] === value) return false;
|
|
538
|
-
target[key] = value;
|
|
539
|
-
return true;
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
function inferredMarkdownSourcePath(projectRoot, htmlRelPath) {
|
|
543
|
-
const sourceRelPath = htmlRelPath.replace(/\.html$/i, '.md');
|
|
544
|
-
if (sourceRelPath === htmlRelPath) return null;
|
|
545
|
-
if (!existsSync(join(projectRoot, AW_DOCS_DIR, sourceRelPath))) return null;
|
|
546
|
-
return `${AW_DOCS_DIR}/${sourceRelPath}`;
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
function hydrateAwDocsFeatureStateLinks(projectRoot, links, publishConfig) {
|
|
550
|
-
const htmlLinksByFeature = new Map();
|
|
551
|
-
for (const link of links) {
|
|
552
|
-
if (!/\.html$/i.test(link.relPath)) continue;
|
|
553
|
-
const featureSlug = featureSlugForAwDocsRelPath(link.relPath);
|
|
554
|
-
if (!featureSlug) continue;
|
|
555
|
-
const featureLinks = htmlLinksByFeature.get(featureSlug) || [];
|
|
556
|
-
featureLinks.push(link);
|
|
557
|
-
htmlLinksByFeature.set(featureSlug, featureLinks);
|
|
558
|
-
}
|
|
559
|
-
|
|
560
|
-
for (const [featureSlug, featureLinks] of htmlLinksByFeature) {
|
|
561
|
-
const statePath = join(projectRoot, AW_DOCS_DIR, 'features', featureSlug, 'state.json');
|
|
562
|
-
if (!existsSync(statePath)) continue;
|
|
563
|
-
|
|
564
|
-
let state;
|
|
565
|
-
try {
|
|
566
|
-
state = JSON.parse(readFileSync(statePath, 'utf8'));
|
|
567
|
-
} catch (e) {
|
|
568
|
-
throw new Error(`Invalid ${AW_DOCS_DIR}/features/${featureSlug}/state.json: ${e.message}`);
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
const artifacts = Array.isArray(state.html_companion_artifacts)
|
|
572
|
-
? state.html_companion_artifacts
|
|
573
|
-
: [];
|
|
574
|
-
let changed = !Array.isArray(state.html_companion_artifacts);
|
|
575
|
-
|
|
576
|
-
for (const link of featureLinks) {
|
|
577
|
-
const htmlPath = `${AW_DOCS_DIR}/${link.relPath}`;
|
|
578
|
-
const existing = artifacts.find(artifact => normalizeAwDocsRelPath(artifact?.html_path) === link.relPath);
|
|
579
|
-
const artifact = existing || {};
|
|
580
|
-
if (!existing) {
|
|
581
|
-
const sourcePath = inferredMarkdownSourcePath(projectRoot, link.relPath);
|
|
582
|
-
if (sourcePath) artifact.source_path = sourcePath;
|
|
583
|
-
artifacts.push(artifact);
|
|
584
|
-
changed = true;
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
changed = setIfChanged(artifact, 'html_path', htmlPath) || changed;
|
|
588
|
-
changed = setIfChanged(artifact, 'publish_status', 'published') || changed;
|
|
589
|
-
changed = setIfChanged(artifact, 'remote_repo', publishConfig.repo) || changed;
|
|
590
|
-
changed = setIfChanged(artifact, 'remote_branch', publishConfig.branch) || changed;
|
|
591
|
-
changed = setIfChanged(artifact, 'remote_path', link.publishedPath) || changed;
|
|
592
|
-
changed = setIfChanged(artifact, 'platform_docs_path', link.publishedPath) || changed;
|
|
593
|
-
changed = setIfChanged(artifact, 'remote_url', link.remoteUrl) || changed;
|
|
594
|
-
changed = setIfChanged(artifact, 'teamofone_url', link.remoteUrl) || changed;
|
|
595
|
-
changed = setIfChanged(artifact, 'github_url', link.repositoryUrl) || changed;
|
|
596
|
-
changed = setIfChanged(artifact, 'repository_url', link.repositoryUrl) || changed;
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
if (!changed) continue;
|
|
600
|
-
state.html_companion_artifacts = artifacts;
|
|
601
|
-
state.updated_at = new Date().toISOString();
|
|
602
|
-
writeFileSync(statePath, JSON.stringify(state, null, 2) + '\n');
|
|
603
|
-
}
|
|
604
|
-
}
|
|
605
|
-
|
|
606
521
|
async function commitAndPushAwDocsRepo(docsRepoDir, { message, branch }) {
|
|
607
522
|
await execFile('git', ['add', '-A'], { cwd: docsRepoDir, encoding: 'utf8' });
|
|
608
523
|
await execFile('git', ['commit', '-m', message], {
|
|
@@ -697,8 +612,6 @@ async function publishProjectAwDocs(cwd, home, dryRun, scope = null) {
|
|
|
697
612
|
return { hasDocs: true, publishedPaths, links };
|
|
698
613
|
}
|
|
699
614
|
|
|
700
|
-
hydrateAwDocsFeatureStateLinks(projectRoot, links, publishConfig);
|
|
701
|
-
|
|
702
615
|
const s = fmt.spinner();
|
|
703
616
|
s.start(`Publishing ${files.length} AW doc${files.length > 1 ? 's' : ''} to ${publishConfig.repo}...`);
|
|
704
617
|
try {
|
package/constants.mjs
CHANGED
|
@@ -33,7 +33,7 @@ export const AW_DOCS_BASE_BRANCH = 'master-sync';
|
|
|
33
33
|
export const AW_DOCS_SEED_BRANCH = process.env.AW_DOCS_SEED_BRANCH || 'scaffold';
|
|
34
34
|
export const AW_DOCS_PUBLISH_DIR = 'aw_docs';
|
|
35
35
|
export const AW_DOCS_PUBLIC_BASE_URL = process.env.AW_DOCS_PUBLIC_BASE_URL || `https://github.com/${AW_DOCS_REPO}/blob/${AW_DOCS_BASE_BRANCH}`;
|
|
36
|
-
export const AW_DOCS_TEAMOFONE_ORIGIN = process.env.AW_DOCS_TEAMOFONE_ORIGIN || 'https://teamofone.
|
|
36
|
+
export const AW_DOCS_TEAMOFONE_ORIGIN = process.env.AW_DOCS_TEAMOFONE_ORIGIN || 'https://teamofone.msgsndr.net';
|
|
37
37
|
export const AW_DOCS_TEAMOFONE_BASE_URL = process.env.AW_DOCS_TEAMOFONE_BASE_URL || `${AW_DOCS_TEAMOFONE_ORIGIN}/too/docs/GoHighLevel/ghl-aw-docs`;
|
|
38
38
|
|
|
39
39
|
export function defaultAwDocsGithubDocsConfig() {
|
package/integrate.mjs
CHANGED
|
@@ -649,9 +649,6 @@ No active runs. Use \`/aw:<team>-<command>\` to start a workflow.
|
|
|
649
649
|
// config.json — registry paths, sync settings
|
|
650
650
|
const configPath = join(awDocsDir, 'config.json');
|
|
651
651
|
const defaultConfig = {
|
|
652
|
-
docs: {
|
|
653
|
-
outputMode: 'dual',
|
|
654
|
-
},
|
|
655
652
|
sync: {
|
|
656
653
|
eager: true,
|
|
657
654
|
batch_threshold: 10,
|
|
@@ -671,10 +668,6 @@ No active runs. Use \`/aw:<team>-<command>\` to start a workflow.
|
|
|
671
668
|
const existing = JSON.parse(readFileSync(configPath, 'utf8'));
|
|
672
669
|
nextConfig = {
|
|
673
670
|
...existing,
|
|
674
|
-
docs: {
|
|
675
|
-
...defaultConfig.docs,
|
|
676
|
-
...(existing.docs || {}),
|
|
677
|
-
},
|
|
678
671
|
sync: {
|
|
679
672
|
...defaultConfig.sync,
|
|
680
673
|
...(existing.sync || {}),
|