avorelo 1.0.0-rc.1 → 1.0.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/dist/avorelo.mjs +90 -63
- package/package.json +1 -1
package/dist/avorelo.mjs
CHANGED
|
@@ -6812,7 +6812,7 @@ init_run();
|
|
|
6812
6812
|
init_work_contract();
|
|
6813
6813
|
init_receipts();
|
|
6814
6814
|
init_state_ledger();
|
|
6815
|
-
import { writeFileSync as writeFileSync39, mkdirSync as mkdirSync40, existsSync as existsSync73, readFileSync as
|
|
6815
|
+
import { writeFileSync as writeFileSync39, mkdirSync as mkdirSync40, existsSync as existsSync73, readFileSync as readFileSync53, appendFileSync as appendFileSync11, rmSync as rmSync3, unlinkSync as unlinkSync5 } from "node:fs";
|
|
6816
6816
|
import { join as join71 } from "node:path";
|
|
6817
6817
|
|
|
6818
6818
|
// src/avorelo/capabilities/activation/index.ts
|
|
@@ -13626,7 +13626,9 @@ function buildCoreReadiness(opts) {
|
|
|
13626
13626
|
}
|
|
13627
13627
|
const firstRunCli = ['case "init"', 'case "status"', 'case "run"', 'case "control-center"', 'case "dogfood-check"', 'case "dogfood-summary"', 'case "readiness"', 'case "settings"', 'case "update-check"'].every((c) => cli.includes(c));
|
|
13628
13628
|
const dogfoodTiers = has2(root, "package.json") && /dogfood:all/.test(readFileSync29(join46(root, "package.json"), "utf8")) && /dogfood:extended/.test(readFileSync29(join46(root, "package.json"), "utf8"));
|
|
13629
|
-
const
|
|
13629
|
+
const internalPack = has2(root, "docs/internal/dogfood/external-dogfood-guide.md") && has2(root, "docs/internal/dogfood/tester-pack-v1.md");
|
|
13630
|
+
const publicContributorPack = has2(root, "CONTRIBUTING.md") && has2(root, "docs/development");
|
|
13631
|
+
const externalPack = internalPack || publicContributorPack;
|
|
13630
13632
|
const checks = [
|
|
13631
13633
|
{ id: "safety_invariants_hold", label: "Safety/privacy invariants hold (no secret/source/prompt/diff/env leak; metadata-only sync; no fake savings)", ok: safetyHolds },
|
|
13632
13634
|
{ id: "core_modules_present", label: "Core capabilities present (activation/runtime/control-center/secret-boundary/proof/value/efficiency)", ok: coreModulesPresent },
|
|
@@ -13788,18 +13790,17 @@ function loadProofInput(dir) {
|
|
|
13788
13790
|
}
|
|
13789
13791
|
|
|
13790
13792
|
// src/avorelo/surfaces/public-web/index.ts
|
|
13791
|
-
import { mkdirSync as mkdirSync29, copyFileSync as copyFileSync2, readdirSync as readdirSync11, existsSync as existsSync48, unlinkSync as unlinkSync2, writeFileSync as writeFileSync28 } from "node:fs";
|
|
13793
|
+
import { mkdirSync as mkdirSync29, copyFileSync as copyFileSync2, readdirSync as readdirSync11, existsSync as existsSync48, unlinkSync as unlinkSync2, writeFileSync as writeFileSync28, readFileSync as readFileSync31 } from "node:fs";
|
|
13792
13794
|
import { join as join47, dirname as dirname5 } from "node:path";
|
|
13793
13795
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
13794
13796
|
var __dirname = dirname5(fileURLToPath2(import.meta.url));
|
|
13795
13797
|
var STATIC_DIR = join47(__dirname, "static");
|
|
13798
|
+
var PKG_PATH = join47(__dirname, "..", "..", "..", "..", "package.json");
|
|
13796
13799
|
var RETAINED_PAGES = [
|
|
13797
13800
|
"index.html",
|
|
13798
13801
|
"activate.html",
|
|
13799
13802
|
"capabilities.html",
|
|
13800
13803
|
"articles.html",
|
|
13801
|
-
"pricing.html",
|
|
13802
|
-
"dashboard.html",
|
|
13803
13804
|
"contact.html",
|
|
13804
13805
|
"learn-more.html",
|
|
13805
13806
|
"privacy-policy.html",
|
|
@@ -13807,6 +13808,7 @@ var RETAINED_PAGES = [
|
|
|
13807
13808
|
"license.html",
|
|
13808
13809
|
"api-discontinued.html",
|
|
13809
13810
|
"refund-discontinued.html",
|
|
13811
|
+
"dashboard-discontinued.html",
|
|
13810
13812
|
// Netlify serves this for any unmatched path. It is generated but intentionally noindex,
|
|
13811
13813
|
// and it is excluded from the sitemap.
|
|
13812
13814
|
"404.html"
|
|
@@ -13842,12 +13844,37 @@ function buildSite(outDir) {
|
|
|
13842
13844
|
if (f.endsWith(".html") && !pages.includes(f)) unlinkSync2(join47(outDir, f));
|
|
13843
13845
|
}
|
|
13844
13846
|
const assets = entries.filter((f) => !f.endsWith(".html") && (ASSET_RE.test(f) || NETLIFY_FILES.includes(f)));
|
|
13845
|
-
for (const f of
|
|
13847
|
+
for (const f of assets) copyFileSync2(join47(STATIC_DIR, f), join47(outDir, f));
|
|
13848
|
+
const rel = releaseInfo();
|
|
13849
|
+
const marker = `<meta name="avorelo-release" content="${rel.version}+${rel.commit}">`;
|
|
13850
|
+
for (const f of pages) {
|
|
13851
|
+
let html = readFileSync31(join47(STATIC_DIR, f), "utf8");
|
|
13852
|
+
if (!html.includes('name="avorelo-release"')) html = html.replace("</head>", `${marker}
|
|
13853
|
+
</head>`);
|
|
13854
|
+
writeFileSync28(join47(outDir, f), html);
|
|
13855
|
+
}
|
|
13846
13856
|
writeFileSync28(join47(outDir, "sitemap.xml"), renderSitemap(pages));
|
|
13857
|
+
writeFileSync28(join47(outDir, "release.json"), JSON.stringify(rel, null, 2) + "\n");
|
|
13847
13858
|
return { ok: true, outDir, pages, indexPath: join47(outDir, "index.html"), errors: [] };
|
|
13848
13859
|
}
|
|
13860
|
+
function releaseInfo() {
|
|
13861
|
+
let version = "0.0.0";
|
|
13862
|
+
try {
|
|
13863
|
+
version = JSON.parse(readFileSync31(PKG_PATH, "utf8")).version || version;
|
|
13864
|
+
} catch {
|
|
13865
|
+
}
|
|
13866
|
+
const commit = (process.env.AVORELO_RELEASE_COMMIT || "local").slice(0, 40);
|
|
13867
|
+
return {
|
|
13868
|
+
version,
|
|
13869
|
+
commit,
|
|
13870
|
+
license: "Apache-2.0",
|
|
13871
|
+
npmDistTag: "latest",
|
|
13872
|
+
repository: "https://github.com/HappyLifeSaaS/Avorelo",
|
|
13873
|
+
homepage: "https://avorelo.com"
|
|
13874
|
+
};
|
|
13875
|
+
}
|
|
13849
13876
|
var CANONICAL_ORIGIN = "https://avorelo.com";
|
|
13850
|
-
var SITEMAP_EXCLUDED = ["404.html", "api-discontinued.html", "refund-discontinued.html"];
|
|
13877
|
+
var SITEMAP_EXCLUDED = ["404.html", "api-discontinued.html", "refund-discontinued.html", "dashboard-discontinued.html"];
|
|
13851
13878
|
function publicRoute(page) {
|
|
13852
13879
|
if (page === "index.html") return "/";
|
|
13853
13880
|
return "/" + page;
|
|
@@ -13872,7 +13899,7 @@ init_resume_packet();
|
|
|
13872
13899
|
init_registry();
|
|
13873
13900
|
|
|
13874
13901
|
// src/avorelo/capabilities/registry-freshness/index.ts
|
|
13875
|
-
import { readFileSync as
|
|
13902
|
+
import { readFileSync as readFileSync32 } from "node:fs";
|
|
13876
13903
|
import { join as join48, dirname as dirname6 } from "node:path";
|
|
13877
13904
|
var REGISTRY_FRESHNESS_CONTRACT = "avorelo.registryFreshness.v1";
|
|
13878
13905
|
var FETCH_TIMEOUT_MS = 3e3;
|
|
@@ -13880,7 +13907,7 @@ var REGISTRY_URL = "https://registry.npmjs.org/avorelo/latest";
|
|
|
13880
13907
|
function getCurrentVersion() {
|
|
13881
13908
|
try {
|
|
13882
13909
|
const pkgPath = join48(dirname6(new URL(import.meta.url).pathname.replace(/^\/([A-Z]:)/, "$1")), "../../../../package.json");
|
|
13883
|
-
return JSON.parse(
|
|
13910
|
+
return JSON.parse(readFileSync32(pkgPath, "utf8")).version ?? "0.0.0";
|
|
13884
13911
|
} catch {
|
|
13885
13912
|
return "0.0.0";
|
|
13886
13913
|
}
|
|
@@ -14105,7 +14132,7 @@ function watchWithFixture(dir, fixture) {
|
|
|
14105
14132
|
}
|
|
14106
14133
|
|
|
14107
14134
|
// src/avorelo/capabilities/workspace/monorepo.ts
|
|
14108
|
-
import { existsSync as existsSync50, readFileSync as
|
|
14135
|
+
import { existsSync as existsSync50, readFileSync as readFileSync34, readdirSync as readdirSync13, statSync as statSync9 } from "node:fs";
|
|
14109
14136
|
import { join as join50 } from "node:path";
|
|
14110
14137
|
function expandGlobDirs(dir, patterns) {
|
|
14111
14138
|
const results = [];
|
|
@@ -14137,7 +14164,7 @@ function buildWorkspace(dir, wsPath) {
|
|
|
14137
14164
|
const rel = wsPath.replace(dir, "").replace(/^[/\\]/, "").replace(/\\/g, "/");
|
|
14138
14165
|
let name = rel;
|
|
14139
14166
|
try {
|
|
14140
|
-
const pkg = JSON.parse(
|
|
14167
|
+
const pkg = JSON.parse(readFileSync34(join50(wsPath, "package.json"), "utf8"));
|
|
14141
14168
|
if (pkg.name) name = pkg.name;
|
|
14142
14169
|
} catch {
|
|
14143
14170
|
}
|
|
@@ -14152,7 +14179,7 @@ function buildWorkspace(dir, wsPath) {
|
|
|
14152
14179
|
}
|
|
14153
14180
|
function detectMonorepo(dir) {
|
|
14154
14181
|
try {
|
|
14155
|
-
const pkg = JSON.parse(
|
|
14182
|
+
const pkg = JSON.parse(readFileSync34(join50(dir, "package.json"), "utf8"));
|
|
14156
14183
|
if (Array.isArray(pkg.workspaces)) {
|
|
14157
14184
|
const paths = expandGlobDirs(dir, pkg.workspaces);
|
|
14158
14185
|
if (paths.length > 0) {
|
|
@@ -14180,7 +14207,7 @@ function detectMonorepo(dir) {
|
|
|
14180
14207
|
const pnpmPath = join50(dir, "pnpm-workspace.yaml");
|
|
14181
14208
|
if (existsSync50(pnpmPath)) {
|
|
14182
14209
|
try {
|
|
14183
|
-
const content =
|
|
14210
|
+
const content = readFileSync34(pnpmPath, "utf8");
|
|
14184
14211
|
const match = content.match(/packages:\s*\n((?:\s*-\s*.+\n?)+)/);
|
|
14185
14212
|
if (match) {
|
|
14186
14213
|
const patterns = match[1].split("\n").map((l) => l.replace(/^\s*-\s*/, "").trim()).filter(Boolean);
|
|
@@ -14219,7 +14246,7 @@ function detectMonorepo(dir) {
|
|
|
14219
14246
|
}
|
|
14220
14247
|
|
|
14221
14248
|
// src/avorelo/capabilities/feedback/config.ts
|
|
14222
|
-
import { existsSync as existsSync51, readFileSync as
|
|
14249
|
+
import { existsSync as existsSync51, readFileSync as readFileSync35, writeFileSync as writeFileSync29, mkdirSync as mkdirSync30 } from "node:fs";
|
|
14223
14250
|
import { join as join51, dirname as dirname7 } from "node:path";
|
|
14224
14251
|
var CONFIG_PATH = ".avorelo/config.json";
|
|
14225
14252
|
var DEFAULTS = {
|
|
@@ -14232,7 +14259,7 @@ function readConfig(dir) {
|
|
|
14232
14259
|
const p = join51(dir, CONFIG_PATH);
|
|
14233
14260
|
if (!existsSync51(p)) return {};
|
|
14234
14261
|
try {
|
|
14235
|
-
return JSON.parse(
|
|
14262
|
+
return JSON.parse(readFileSync35(p, "utf8"));
|
|
14236
14263
|
} catch {
|
|
14237
14264
|
return {};
|
|
14238
14265
|
}
|
|
@@ -14267,7 +14294,7 @@ function optOut(dir) {
|
|
|
14267
14294
|
|
|
14268
14295
|
// src/avorelo/capabilities/feedback/bundle.ts
|
|
14269
14296
|
init_redaction();
|
|
14270
|
-
import { existsSync as existsSync52, readFileSync as
|
|
14297
|
+
import { existsSync as existsSync52, readFileSync as readFileSync36, writeFileSync as writeFileSync30, mkdirSync as mkdirSync31, readdirSync as readdirSync14 } from "node:fs";
|
|
14271
14298
|
import { join as join52 } from "node:path";
|
|
14272
14299
|
import { platform as platform3, release, arch } from "node:os";
|
|
14273
14300
|
init_registry();
|
|
@@ -14307,7 +14334,7 @@ function renderSupportMarkdown(bundle) {
|
|
|
14307
14334
|
}
|
|
14308
14335
|
function getVersion() {
|
|
14309
14336
|
try {
|
|
14310
|
-
const pkg = JSON.parse(
|
|
14337
|
+
const pkg = JSON.parse(readFileSync36(join52(process.cwd(), "package.json"), "utf8"));
|
|
14311
14338
|
return pkg.version ?? "unknown";
|
|
14312
14339
|
} catch {
|
|
14313
14340
|
return "unknown";
|
|
@@ -14323,7 +14350,7 @@ function detectPackageManager(dir) {
|
|
|
14323
14350
|
}
|
|
14324
14351
|
function detectFramework(dir) {
|
|
14325
14352
|
try {
|
|
14326
|
-
const pkg = JSON.parse(
|
|
14353
|
+
const pkg = JSON.parse(readFileSync36(join52(dir, "package.json"), "utf8"));
|
|
14327
14354
|
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
14328
14355
|
if (deps["next"]) return "next";
|
|
14329
14356
|
if (deps["nuxt"]) return "nuxt";
|
|
@@ -14344,7 +14371,7 @@ function countReceipts(dir) {
|
|
|
14344
14371
|
try {
|
|
14345
14372
|
for (const f of readdirSync14(receiptsDir).filter((f2) => f2.endsWith(".json"))) {
|
|
14346
14373
|
try {
|
|
14347
|
-
const r2 = JSON.parse(
|
|
14374
|
+
const r2 = JSON.parse(readFileSync36(join52(receiptsDir, f), "utf8"));
|
|
14348
14375
|
if (r2.decision === "STOP_DONE") done++;
|
|
14349
14376
|
else if (r2.decision === "STOP_BLOCKED") blocked++;
|
|
14350
14377
|
else inProgress++;
|
|
@@ -14604,13 +14631,13 @@ function result(classification, risk, reasonCodes, humanGateConditions) {
|
|
|
14604
14631
|
import { randomUUID as randomUUID4 } from "node:crypto";
|
|
14605
14632
|
|
|
14606
14633
|
// src/avorelo/capabilities/loop-control/check-detection.ts
|
|
14607
|
-
import { readFileSync as
|
|
14634
|
+
import { readFileSync as readFileSync37, existsSync as existsSync53 } from "node:fs";
|
|
14608
14635
|
import { join as join53 } from "node:path";
|
|
14609
14636
|
function detectFromPackageJson(cwd) {
|
|
14610
14637
|
const pkgPath = join53(cwd, "package.json");
|
|
14611
14638
|
if (!existsSync53(pkgPath)) return [];
|
|
14612
14639
|
try {
|
|
14613
|
-
const pkg = JSON.parse(
|
|
14640
|
+
const pkg = JSON.parse(readFileSync37(pkgPath, "utf8"));
|
|
14614
14641
|
const scripts = pkg.scripts ?? {};
|
|
14615
14642
|
const checks = [];
|
|
14616
14643
|
if (scripts["test:local"]) {
|
|
@@ -14940,7 +14967,7 @@ function getCurrentHead(cwd) {
|
|
|
14940
14967
|
|
|
14941
14968
|
// src/avorelo/capabilities/loop-control/loop-metadata.ts
|
|
14942
14969
|
init_redaction();
|
|
14943
|
-
import { mkdirSync as mkdirSync32, writeFileSync as writeFileSync31, readFileSync as
|
|
14970
|
+
import { mkdirSync as mkdirSync32, writeFileSync as writeFileSync31, readFileSync as readFileSync38, existsSync as existsSync54, readdirSync as readdirSync15 } from "node:fs";
|
|
14944
14971
|
import { join as join54 } from "node:path";
|
|
14945
14972
|
function classifyFile(file, allowed, disallowed) {
|
|
14946
14973
|
for (const d of disallowed) {
|
|
@@ -15030,7 +15057,7 @@ function readLoopMetadata(dir, loopId) {
|
|
|
15030
15057
|
const path = join54(loopDir(dir), `${loopId}.json`);
|
|
15031
15058
|
if (!existsSync54(path)) return null;
|
|
15032
15059
|
try {
|
|
15033
|
-
const data = JSON.parse(
|
|
15060
|
+
const data = JSON.parse(readFileSync38(path, "utf8"));
|
|
15034
15061
|
return data && data.contract === "avorelo.loopMetadata.v1" ? data : null;
|
|
15035
15062
|
} catch {
|
|
15036
15063
|
return null;
|
|
@@ -15046,7 +15073,7 @@ function readLatestLoopMetadata(dir) {
|
|
|
15046
15073
|
let latestTime = "";
|
|
15047
15074
|
for (const f of files) {
|
|
15048
15075
|
try {
|
|
15049
|
-
const data = JSON.parse(
|
|
15076
|
+
const data = JSON.parse(readFileSync38(join54(d, f), "utf8"));
|
|
15050
15077
|
if (data && data.contract === "avorelo.loopMetadata.v1" && data.createdAt > latestTime) {
|
|
15051
15078
|
latest = data;
|
|
15052
15079
|
latestTime = data.createdAt;
|
|
@@ -15063,7 +15090,7 @@ function readActiveLoop(dir) {
|
|
|
15063
15090
|
const path = join54(loopDir(dir), "active.json");
|
|
15064
15091
|
if (!existsSync54(path)) return null;
|
|
15065
15092
|
try {
|
|
15066
|
-
return JSON.parse(
|
|
15093
|
+
return JSON.parse(readFileSync38(path, "utf8"));
|
|
15067
15094
|
} catch {
|
|
15068
15095
|
return null;
|
|
15069
15096
|
}
|
|
@@ -15419,7 +15446,7 @@ var claudeCodeLoopAdapter = {
|
|
|
15419
15446
|
};
|
|
15420
15447
|
|
|
15421
15448
|
// src/avorelo/capabilities/settings/index.ts
|
|
15422
|
-
import { existsSync as existsSync55, readFileSync as
|
|
15449
|
+
import { existsSync as existsSync55, readFileSync as readFileSync39, writeFileSync as writeFileSync32, mkdirSync as mkdirSync33 } from "node:fs";
|
|
15423
15450
|
import { join as join55, dirname as dirname8 } from "node:path";
|
|
15424
15451
|
var SETTINGS_CONTRACT = "avorelo.settings.v1";
|
|
15425
15452
|
var SETTINGS_PATH = ".avorelo/settings.json";
|
|
@@ -15467,7 +15494,7 @@ function loadSettings(dir) {
|
|
|
15467
15494
|
const p = join55(dir, SETTINGS_PATH);
|
|
15468
15495
|
if (!existsSync55(p)) return null;
|
|
15469
15496
|
try {
|
|
15470
|
-
const raw = JSON.parse(
|
|
15497
|
+
const raw = JSON.parse(readFileSync39(p, "utf8"));
|
|
15471
15498
|
return raw.contract === SETTINGS_CONTRACT ? normalize2(raw) : null;
|
|
15472
15499
|
} catch {
|
|
15473
15500
|
return null;
|
|
@@ -15612,7 +15639,7 @@ function inferContextEfficiencyWorkType(task, refs = []) {
|
|
|
15612
15639
|
}
|
|
15613
15640
|
|
|
15614
15641
|
// src/avorelo/capabilities/context-efficiency/persistence.ts
|
|
15615
|
-
import { existsSync as existsSync56, mkdirSync as mkdirSync34, readFileSync as
|
|
15642
|
+
import { existsSync as existsSync56, mkdirSync as mkdirSync34, readFileSync as readFileSync40, writeFileSync as writeFileSync33 } from "node:fs";
|
|
15616
15643
|
import { join as join56 } from "node:path";
|
|
15617
15644
|
function contextEfficiencyDir(dir) {
|
|
15618
15645
|
return join56(dir, ".avorelo", "context-efficiency");
|
|
@@ -15631,7 +15658,7 @@ function loadLatestContextEfficiencyBrief(dir) {
|
|
|
15631
15658
|
const path = latestContextEfficiencyBriefPath(dir);
|
|
15632
15659
|
if (!existsSync56(path)) return null;
|
|
15633
15660
|
try {
|
|
15634
|
-
return JSON.parse(
|
|
15661
|
+
return JSON.parse(readFileSync40(path, "utf8"));
|
|
15635
15662
|
} catch {
|
|
15636
15663
|
return null;
|
|
15637
15664
|
}
|
|
@@ -16094,7 +16121,7 @@ function renderContextEfficiencyPathCheck(check) {
|
|
|
16094
16121
|
}
|
|
16095
16122
|
|
|
16096
16123
|
// src/avorelo/capabilities/model-routing-input/persistence.ts
|
|
16097
|
-
import { existsSync as existsSync59, mkdirSync as mkdirSync35, readFileSync as
|
|
16124
|
+
import { existsSync as existsSync59, mkdirSync as mkdirSync35, readFileSync as readFileSync41, writeFileSync as writeFileSync34 } from "node:fs";
|
|
16098
16125
|
import { join as join59 } from "node:path";
|
|
16099
16126
|
function modelRoutingDir(dir) {
|
|
16100
16127
|
return join59(dir, ".avorelo", "model-routing");
|
|
@@ -16113,7 +16140,7 @@ function loadLatestModelRoutingInputProfile(dir) {
|
|
|
16113
16140
|
const path = latestModelRoutingInputProfilePath(dir);
|
|
16114
16141
|
if (!existsSync59(path)) return null;
|
|
16115
16142
|
try {
|
|
16116
|
-
return JSON.parse(
|
|
16143
|
+
return JSON.parse(readFileSync41(path, "utf8"));
|
|
16117
16144
|
} catch {
|
|
16118
16145
|
return null;
|
|
16119
16146
|
}
|
|
@@ -16513,7 +16540,7 @@ function workflowRadarDecisionStateIsReady(state) {
|
|
|
16513
16540
|
}
|
|
16514
16541
|
|
|
16515
16542
|
// src/avorelo/capabilities/workflow-radar/persistence.ts
|
|
16516
|
-
import { existsSync as existsSync60, mkdirSync as mkdirSync36, readFileSync as
|
|
16543
|
+
import { existsSync as existsSync60, mkdirSync as mkdirSync36, readFileSync as readFileSync42, writeFileSync as writeFileSync35 } from "node:fs";
|
|
16517
16544
|
import { join as join60 } from "node:path";
|
|
16518
16545
|
function workflowRadarDir(dir) {
|
|
16519
16546
|
return join60(dir, ".avorelo", "workflow-radar");
|
|
@@ -16535,7 +16562,7 @@ function loadLatestWorkflowRadarAssessment(dir) {
|
|
|
16535
16562
|
const path = latestWorkflowRadarPath(dir);
|
|
16536
16563
|
if (!existsSync60(path)) return null;
|
|
16537
16564
|
try {
|
|
16538
|
-
return JSON.parse(
|
|
16565
|
+
return JSON.parse(readFileSync42(path, "utf8"));
|
|
16539
16566
|
} catch {
|
|
16540
16567
|
return null;
|
|
16541
16568
|
}
|
|
@@ -17233,7 +17260,7 @@ function renderWorkflowRadarPathCheck(check) {
|
|
|
17233
17260
|
}
|
|
17234
17261
|
|
|
17235
17262
|
// src/avorelo/capabilities/session-continuity/handoff.ts
|
|
17236
|
-
import { existsSync as existsSync63, readFileSync as
|
|
17263
|
+
import { existsSync as existsSync63, readFileSync as readFileSync44 } from "node:fs";
|
|
17237
17264
|
import { execFileSync as execFileSync5 } from "node:child_process";
|
|
17238
17265
|
import { join as join63 } from "node:path";
|
|
17239
17266
|
init_receipts();
|
|
@@ -17408,7 +17435,7 @@ function safeToContinue(decisionState) {
|
|
|
17408
17435
|
}
|
|
17409
17436
|
|
|
17410
17437
|
// src/avorelo/capabilities/session-continuity/persistence.ts
|
|
17411
|
-
import { existsSync as existsSync62, mkdirSync as mkdirSync37, readFileSync as
|
|
17438
|
+
import { existsSync as existsSync62, mkdirSync as mkdirSync37, readFileSync as readFileSync43, writeFileSync as writeFileSync36 } from "node:fs";
|
|
17412
17439
|
import { join as join62 } from "node:path";
|
|
17413
17440
|
function sessionContinuityDir(dir) {
|
|
17414
17441
|
return join62(dir, ".avorelo", "session-continuity");
|
|
@@ -17427,7 +17454,7 @@ function loadLatestSessionContinuityHandoff(dir) {
|
|
|
17427
17454
|
const path = latestSessionContinuityPath(dir);
|
|
17428
17455
|
if (!existsSync62(path)) return null;
|
|
17429
17456
|
try {
|
|
17430
|
-
return JSON.parse(
|
|
17457
|
+
return JSON.parse(readFileSync43(path, "utf8"));
|
|
17431
17458
|
} catch {
|
|
17432
17459
|
return null;
|
|
17433
17460
|
}
|
|
@@ -17506,7 +17533,7 @@ function loadWorkspaceMapArtifact(dir) {
|
|
|
17506
17533
|
};
|
|
17507
17534
|
}
|
|
17508
17535
|
try {
|
|
17509
|
-
const parsed = JSON.parse(
|
|
17536
|
+
const parsed = JSON.parse(readFileSync44(path, "utf8"));
|
|
17510
17537
|
return {
|
|
17511
17538
|
available: true,
|
|
17512
17539
|
provider: parsed.provider ?? "workspace_map_latest",
|
|
@@ -17979,7 +18006,7 @@ function renderSessionContinuityPathCheck(check) {
|
|
|
17979
18006
|
|
|
17980
18007
|
// src/avorelo/kernel/context-control/discovery.ts
|
|
17981
18008
|
import { createHash as createHash17, randomUUID as randomUUID6 } from "node:crypto";
|
|
17982
|
-
import { existsSync as existsSync64, statSync as statSync10, readFileSync as
|
|
18009
|
+
import { existsSync as existsSync64, statSync as statSync10, readFileSync as readFileSync45, readdirSync as readdirSync16 } from "node:fs";
|
|
17983
18010
|
import { join as join64, resolve as resolve5 } from "node:path";
|
|
17984
18011
|
var INSTRUCTION_FILES = [
|
|
17985
18012
|
"AGENTS.md",
|
|
@@ -18022,7 +18049,7 @@ function discoverFile(repoRoot2, relativePath, kind) {
|
|
|
18022
18049
|
const stat = statSync10(fullPath);
|
|
18023
18050
|
if (!stat.isFile()) return null;
|
|
18024
18051
|
const safeToRead = !isUnsafePath(relativePath);
|
|
18025
|
-
const content = safeToRead ?
|
|
18052
|
+
const content = safeToRead ? readFileSync45(fullPath, "utf-8") : "";
|
|
18026
18053
|
return {
|
|
18027
18054
|
id: `source_${randomUUID6().slice(0, 8)}`,
|
|
18028
18055
|
kind,
|
|
@@ -18107,7 +18134,7 @@ function discoverContextSources(repoRoot2) {
|
|
|
18107
18134
|
|
|
18108
18135
|
// src/avorelo/kernel/context-control/normalization.ts
|
|
18109
18136
|
import { createHash as createHash18, randomUUID as randomUUID7 } from "node:crypto";
|
|
18110
|
-
import { readFileSync as
|
|
18137
|
+
import { readFileSync as readFileSync46 } from "node:fs";
|
|
18111
18138
|
import { join as join65 } from "node:path";
|
|
18112
18139
|
|
|
18113
18140
|
// src/avorelo/kernel/context-control/redaction.ts
|
|
@@ -18259,7 +18286,7 @@ function normalizeSource(repoRoot2, source, branch) {
|
|
|
18259
18286
|
}
|
|
18260
18287
|
let content;
|
|
18261
18288
|
try {
|
|
18262
|
-
content =
|
|
18289
|
+
content = readFileSync46(join65(repoRoot2, source.path), "utf-8");
|
|
18263
18290
|
} catch {
|
|
18264
18291
|
return [];
|
|
18265
18292
|
}
|
|
@@ -19215,7 +19242,7 @@ function createConflictReceipt(conflicts) {
|
|
|
19215
19242
|
import { randomUUID as randomUUID12 } from "node:crypto";
|
|
19216
19243
|
|
|
19217
19244
|
// src/avorelo/kernel/context-control/storage.ts
|
|
19218
|
-
import { writeFileSync as writeFileSync37, mkdirSync as mkdirSync38, existsSync as existsSync65, readFileSync as
|
|
19245
|
+
import { writeFileSync as writeFileSync37, mkdirSync as mkdirSync38, existsSync as existsSync65, readFileSync as readFileSync47, readdirSync as readdirSync17, unlinkSync as unlinkSync3 } from "node:fs";
|
|
19219
19246
|
import { join as join66 } from "node:path";
|
|
19220
19247
|
var MAX_RECEIPTS = 100;
|
|
19221
19248
|
function ensureDir(dir) {
|
|
@@ -19240,7 +19267,7 @@ function loadItems(repoRoot2) {
|
|
|
19240
19267
|
const filePath = join66(repoRoot2, ".avorelo", "context", "items.jsonl");
|
|
19241
19268
|
if (!existsSync65(filePath)) return [];
|
|
19242
19269
|
try {
|
|
19243
|
-
const content =
|
|
19270
|
+
const content = readFileSync47(filePath, "utf-8");
|
|
19244
19271
|
return content.split("\n").filter((line) => line.trim().length > 0).map((line) => JSON.parse(line));
|
|
19245
19272
|
} catch {
|
|
19246
19273
|
return [];
|
|
@@ -19257,7 +19284,7 @@ function loadConflicts(repoRoot2) {
|
|
|
19257
19284
|
const filePath = join66(repoRoot2, ".avorelo", "context", "conflicts.json");
|
|
19258
19285
|
if (!existsSync65(filePath)) return [];
|
|
19259
19286
|
try {
|
|
19260
|
-
const data = JSON.parse(
|
|
19287
|
+
const data = JSON.parse(readFileSync47(filePath, "utf-8"));
|
|
19261
19288
|
return data.conflicts ?? [];
|
|
19262
19289
|
} catch {
|
|
19263
19290
|
return [];
|
|
@@ -19274,7 +19301,7 @@ function loadMode(repoRoot2) {
|
|
|
19274
19301
|
const filePath = join66(repoRoot2, ".avorelo", "context", "mode.json");
|
|
19275
19302
|
if (!existsSync65(filePath)) return null;
|
|
19276
19303
|
try {
|
|
19277
|
-
return JSON.parse(
|
|
19304
|
+
return JSON.parse(readFileSync47(filePath, "utf-8"));
|
|
19278
19305
|
} catch {
|
|
19279
19306
|
return null;
|
|
19280
19307
|
}
|
|
@@ -19293,7 +19320,7 @@ function loadLatestBrief(repoRoot2) {
|
|
|
19293
19320
|
const filePath = join66(repoRoot2, ".avorelo", "work-briefs", "latest.md");
|
|
19294
19321
|
if (!existsSync65(filePath)) return null;
|
|
19295
19322
|
try {
|
|
19296
|
-
return
|
|
19323
|
+
return readFileSync47(filePath, "utf-8");
|
|
19297
19324
|
} catch {
|
|
19298
19325
|
return null;
|
|
19299
19326
|
}
|
|
@@ -19313,7 +19340,7 @@ function loadLatestContextReceipt(repoRoot2) {
|
|
|
19313
19340
|
try {
|
|
19314
19341
|
const files = readdirSync17(dir).filter((f) => f.endsWith(".json")).sort();
|
|
19315
19342
|
if (files.length === 0) return null;
|
|
19316
|
-
return JSON.parse(
|
|
19343
|
+
return JSON.parse(readFileSync47(join66(dir, files[files.length - 1]), "utf-8"));
|
|
19317
19344
|
} catch {
|
|
19318
19345
|
return null;
|
|
19319
19346
|
}
|
|
@@ -19636,7 +19663,7 @@ function generateBrief(repoRoot2, options) {
|
|
|
19636
19663
|
}
|
|
19637
19664
|
|
|
19638
19665
|
// src/avorelo/capabilities/capability-discovery/index.ts
|
|
19639
|
-
import { existsSync as existsSync68, readFileSync as
|
|
19666
|
+
import { existsSync as existsSync68, readFileSync as readFileSync48, readdirSync as readdirSync18 } from "node:fs";
|
|
19640
19667
|
import { join as join69 } from "node:path";
|
|
19641
19668
|
import { createHash as createHash19 } from "node:crypto";
|
|
19642
19669
|
import { execSync as execSync7 } from "node:child_process";
|
|
@@ -19652,7 +19679,7 @@ function readPackageJson(dir) {
|
|
|
19652
19679
|
const p = join69(dir, "package.json");
|
|
19653
19680
|
if (!existsSync68(p)) return null;
|
|
19654
19681
|
try {
|
|
19655
|
-
return JSON.parse(
|
|
19682
|
+
return JSON.parse(readFileSync48(p, "utf-8"));
|
|
19656
19683
|
} catch {
|
|
19657
19684
|
return null;
|
|
19658
19685
|
}
|
|
@@ -20329,7 +20356,7 @@ var buildTestAdapter = {
|
|
|
20329
20356
|
|
|
20330
20357
|
// src/avorelo/kernel/proof-adapters/security-secrets.ts
|
|
20331
20358
|
import { execSync as execSync9 } from "node:child_process";
|
|
20332
|
-
import { readFileSync as
|
|
20359
|
+
import { readFileSync as readFileSync49, existsSync as existsSync69 } from "node:fs";
|
|
20333
20360
|
var SECRET_PATTERNS3 = [
|
|
20334
20361
|
{ pattern: /(?:api[_-]?key|apikey)\s*[:=]\s*["']?[a-zA-Z0-9_\-]{16,}/i, label: "api_key" },
|
|
20335
20362
|
{ pattern: /(?:secret|token|password|passwd|pwd)\s*[:=]\s*["']?[a-zA-Z0-9_\-]{8,}/i, label: "credential" },
|
|
@@ -20343,7 +20370,7 @@ function scanFileForSecrets(filePath) {
|
|
|
20343
20370
|
const findings = [];
|
|
20344
20371
|
if (!existsSync69(filePath)) return findings;
|
|
20345
20372
|
try {
|
|
20346
|
-
const content =
|
|
20373
|
+
const content = readFileSync49(filePath, "utf-8");
|
|
20347
20374
|
for (const { pattern, label } of SECRET_PATTERNS3) {
|
|
20348
20375
|
if (pattern.test(content)) {
|
|
20349
20376
|
findings.push({
|
|
@@ -20448,7 +20475,7 @@ var securitySecretsAdapter = {
|
|
|
20448
20475
|
};
|
|
20449
20476
|
|
|
20450
20477
|
// src/avorelo/kernel/proof-adapters/product-surface.ts
|
|
20451
|
-
import { readFileSync as
|
|
20478
|
+
import { readFileSync as readFileSync50, existsSync as existsSync70 } from "node:fs";
|
|
20452
20479
|
var PLACEHOLDER_PATTERNS = [
|
|
20453
20480
|
{ pattern: /lorem ipsum/i, label: "lorem_ipsum" },
|
|
20454
20481
|
{ pattern: /\bTODO\b.*\b(copy|text|content|placeholder)\b/i, label: "todo_copy" },
|
|
@@ -20480,7 +20507,7 @@ function scanProductSurface(filePath) {
|
|
|
20480
20507
|
const surfaceExts = ["tsx", "jsx", "vue", "svelte", "html", "css", "scss", "md", "txt", "astro"];
|
|
20481
20508
|
if (!surfaceExts.includes(ext) && !filePath.includes("site/")) return findings;
|
|
20482
20509
|
try {
|
|
20483
|
-
const content =
|
|
20510
|
+
const content = readFileSync50(filePath, "utf-8");
|
|
20484
20511
|
for (const { pattern, label } of PLACEHOLDER_PATTERNS) {
|
|
20485
20512
|
if (pattern.test(content)) {
|
|
20486
20513
|
findings.push({
|
|
@@ -20608,7 +20635,7 @@ var uiBrowserAdapter = {
|
|
|
20608
20635
|
};
|
|
20609
20636
|
|
|
20610
20637
|
// src/avorelo/kernel/proof-adapters/api-contract.ts
|
|
20611
|
-
import { existsSync as existsSync71, readFileSync as
|
|
20638
|
+
import { existsSync as existsSync71, readFileSync as readFileSync51 } from "node:fs";
|
|
20612
20639
|
var apiContractAdapter = {
|
|
20613
20640
|
id: "api-contract",
|
|
20614
20641
|
name: "API Contract",
|
|
@@ -20653,7 +20680,7 @@ var apiContractAdapter = {
|
|
|
20653
20680
|
};
|
|
20654
20681
|
}
|
|
20655
20682
|
try {
|
|
20656
|
-
const content =
|
|
20683
|
+
const content = readFileSync51(schemaPath, "utf-8");
|
|
20657
20684
|
const isJson = schemaPath.endsWith(".json");
|
|
20658
20685
|
if (isJson) {
|
|
20659
20686
|
JSON.parse(content);
|
|
@@ -20866,7 +20893,7 @@ function gateResultToJson(gate) {
|
|
|
20866
20893
|
|
|
20867
20894
|
// src/avorelo/kernel/verification-receipt/index.ts
|
|
20868
20895
|
import { createHash as createHash20, randomUUID as randomUUID13 } from "node:crypto";
|
|
20869
|
-
import { writeFileSync as writeFileSync38, mkdirSync as mkdirSync39, existsSync as existsSync72, readdirSync as readdirSync19, unlinkSync as unlinkSync4, readFileSync as
|
|
20896
|
+
import { writeFileSync as writeFileSync38, mkdirSync as mkdirSync39, existsSync as existsSync72, readdirSync as readdirSync19, unlinkSync as unlinkSync4, readFileSync as readFileSync52 } from "node:fs";
|
|
20870
20897
|
import { join as join70 } from "node:path";
|
|
20871
20898
|
function createVerificationReceipt(projectRoot, contract, proofRun, gate) {
|
|
20872
20899
|
return {
|
|
@@ -21559,8 +21586,8 @@ function cmdServe(args) {
|
|
|
21559
21586
|
` Landing: ${h.url}`,
|
|
21560
21587
|
` Activate: ${h.url}activate.html`,
|
|
21561
21588
|
` Capabilities: ${h.url}capabilities.html`,
|
|
21562
|
-
`
|
|
21563
|
-
`
|
|
21589
|
+
` License: ${h.url}license.html`,
|
|
21590
|
+
` Contact: ${h.url}contact.html`,
|
|
21564
21591
|
` Articles: ${h.url}articles.html`,
|
|
21565
21592
|
"",
|
|
21566
21593
|
"Press Ctrl+C to stop.",
|
|
@@ -21578,7 +21605,7 @@ function cmdServe(args) {
|
|
|
21578
21605
|
}
|
|
21579
21606
|
function readStdinJson() {
|
|
21580
21607
|
try {
|
|
21581
|
-
const raw =
|
|
21608
|
+
const raw = readFileSync53(0, "utf8");
|
|
21582
21609
|
return raw.trim() ? JSON.parse(raw) : {};
|
|
21583
21610
|
} catch {
|
|
21584
21611
|
return {};
|
|
@@ -22038,7 +22065,7 @@ function cmdTokenCost(args) {
|
|
|
22038
22065
|
}
|
|
22039
22066
|
let parsed;
|
|
22040
22067
|
try {
|
|
22041
|
-
parsed = JSON.parse(
|
|
22068
|
+
parsed = JSON.parse(readFileSync53(file, "utf8"));
|
|
22042
22069
|
} catch {
|
|
22043
22070
|
process.stderr.write("Invalid JSON file.\n");
|
|
22044
22071
|
return 1;
|
|
@@ -22181,7 +22208,7 @@ function cmdContextCheck(args) {
|
|
|
22181
22208
|
let workContract;
|
|
22182
22209
|
if (wcPath && existsSync73(wcPath)) {
|
|
22183
22210
|
try {
|
|
22184
|
-
workContract = JSON.parse(
|
|
22211
|
+
workContract = JSON.parse(readFileSync53(wcPath, "utf8"));
|
|
22185
22212
|
} catch {
|
|
22186
22213
|
}
|
|
22187
22214
|
}
|
|
@@ -22755,7 +22782,7 @@ function cmdSecretBoundary(args) {
|
|
|
22755
22782
|
const asJson = args.includes("--json");
|
|
22756
22783
|
let content = arg(args, "--content");
|
|
22757
22784
|
const file = arg(args, "--file");
|
|
22758
|
-
if (file && existsSync73(file)) content =
|
|
22785
|
+
if (file && existsSync73(file)) content = readFileSync53(file, "utf8");
|
|
22759
22786
|
if (content === void 0) content = "";
|
|
22760
22787
|
if (sub === "scan" || sub === void 0) {
|
|
22761
22788
|
const r2 = scanContent({ content, sourceKind: file ? "file" : "tool_output" });
|
|
@@ -23450,7 +23477,7 @@ async function cmdProve(args) {
|
|
|
23450
23477
|
function avoreloVersion() {
|
|
23451
23478
|
for (const rel of ["../package.json", "../../package.json", "../../../package.json", "../../../../package.json"]) {
|
|
23452
23479
|
try {
|
|
23453
|
-
const pkg = JSON.parse(
|
|
23480
|
+
const pkg = JSON.parse(readFileSync53(join71(import.meta.dirname, rel), "utf8"));
|
|
23454
23481
|
if (pkg.name === "avorelo" && pkg.version) return pkg.version;
|
|
23455
23482
|
} catch {
|
|
23456
23483
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "avorelo",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"description": "Avorelo — AI Work Control. One command. Keep using your AI coding tool. Avorelo quietly keeps the work focused and saves proof.",
|