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.
Files changed (2) hide show
  1. package/dist/avorelo.mjs +90 -63
  2. 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 readFileSync52, appendFileSync as appendFileSync11, rmSync as rmSync3, unlinkSync as unlinkSync5 } from "node:fs";
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 externalPack = has2(root, "docs/internal/dogfood/external-dogfood-guide.md") && has2(root, "docs/internal/dogfood/tester-pack-v1.md");
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 [...pages, ...assets]) copyFileSync2(join47(STATIC_DIR, f), join47(outDir, f));
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 readFileSync31 } from "node:fs";
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(readFileSync31(pkgPath, "utf8")).version ?? "0.0.0";
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 readFileSync33, readdirSync as readdirSync13, statSync as statSync9 } from "node:fs";
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(readFileSync33(join50(wsPath, "package.json"), "utf8"));
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(readFileSync33(join50(dir, "package.json"), "utf8"));
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 = readFileSync33(pnpmPath, "utf8");
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 readFileSync34, writeFileSync as writeFileSync29, mkdirSync as mkdirSync30 } from "node:fs";
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(readFileSync34(p, "utf8"));
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 readFileSync35, writeFileSync as writeFileSync30, mkdirSync as mkdirSync31, readdirSync as readdirSync14 } from "node:fs";
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(readFileSync35(join52(process.cwd(), "package.json"), "utf8"));
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(readFileSync35(join52(dir, "package.json"), "utf8"));
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(readFileSync35(join52(receiptsDir, f), "utf8"));
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 readFileSync36, existsSync as existsSync53 } from "node:fs";
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(readFileSync36(pkgPath, "utf8"));
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 readFileSync37, existsSync as existsSync54, readdirSync as readdirSync15 } from "node:fs";
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(readFileSync37(path, "utf8"));
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(readFileSync37(join54(d, f), "utf8"));
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(readFileSync37(path, "utf8"));
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 readFileSync38, writeFileSync as writeFileSync32, mkdirSync as mkdirSync33 } from "node:fs";
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(readFileSync38(p, "utf8"));
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 readFileSync39, writeFileSync as writeFileSync33 } from "node:fs";
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(readFileSync39(path, "utf8"));
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 readFileSync40, writeFileSync as writeFileSync34 } from "node:fs";
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(readFileSync40(path, "utf8"));
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 readFileSync41, writeFileSync as writeFileSync35 } from "node:fs";
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(readFileSync41(path, "utf8"));
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 readFileSync43 } from "node:fs";
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 readFileSync42, writeFileSync as writeFileSync36 } from "node:fs";
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(readFileSync42(path, "utf8"));
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(readFileSync43(path, "utf8"));
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 readFileSync44, readdirSync as readdirSync16 } from "node:fs";
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 ? readFileSync44(fullPath, "utf-8") : "";
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 readFileSync45 } from "node:fs";
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 = readFileSync45(join65(repoRoot2, source.path), "utf-8");
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 readFileSync46, readdirSync as readdirSync17, unlinkSync as unlinkSync3 } from "node:fs";
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 = readFileSync46(filePath, "utf-8");
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(readFileSync46(filePath, "utf-8"));
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(readFileSync46(filePath, "utf-8"));
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 readFileSync46(filePath, "utf-8");
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(readFileSync46(join66(dir, files[files.length - 1]), "utf-8"));
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 readFileSync47, readdirSync as readdirSync18 } from "node:fs";
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(readFileSync47(p, "utf-8"));
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 readFileSync48, existsSync as existsSync69 } from "node:fs";
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 = readFileSync48(filePath, "utf-8");
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 readFileSync49, existsSync as existsSync70 } from "node:fs";
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 = readFileSync49(filePath, "utf-8");
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 readFileSync50 } from "node:fs";
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 = readFileSync50(schemaPath, "utf-8");
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 readFileSync51 } from "node:fs";
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
- ` Local viewer: ${h.url}dashboard.html`,
21563
- ` Pricing: ${h.url}pricing.html`,
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 = readFileSync52(0, "utf8");
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(readFileSync52(file, "utf8"));
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(readFileSync52(wcPath, "utf8"));
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 = readFileSync52(file, "utf8");
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(readFileSync52(join71(import.meta.dirname, rel), "utf8"));
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-rc.1",
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.",