@c4a/context-cli 0.7.61 → 0.7.62

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/cli.js CHANGED
@@ -86607,6 +86607,9 @@ var init_packageBuildReceipt = __esm(() => {
86607
86607
  // src/project/knowledgeMapCoverage.ts
86608
86608
  import { readFile as readFile55 } from "node:fs/promises";
86609
86609
  import { join as join66 } from "node:path";
86610
+ function packageMenuTargets(packages) {
86611
+ return new Set(packages.flatMap((pkg) => pkg.kind === "package.kb" ? (pkg.site?.more ?? []).flatMap((item) => item.target ? [item.target.artifact_ref] : []) : []));
86612
+ }
86610
86613
  function knowledgeMapArticleTargets(files) {
86611
86614
  return files.flatMap((file) => {
86612
86615
  const meta = parseKnowledgeFrontmatter(file.content);
@@ -86677,6 +86680,7 @@ var init_knowledgeMapCoverage = __esm(() => {
86677
86680
  var exports_knowledgeMap = {};
86678
86681
  __export(exports_knowledgeMap, {
86679
86682
  readKnowledgeMap: () => readKnowledgeMap,
86683
+ projectMenuTargets: () => projectMenuTargets,
86680
86684
  inspectKnowledgeMap: () => inspectKnowledgeMap,
86681
86685
  applyKnowledgeMapUpdate: () => applyKnowledgeMapUpdate,
86682
86686
  acceptStructureDecision: () => acceptStructureDecision,
@@ -86697,6 +86701,12 @@ async function readKnowledgeMap(root) {
86697
86701
  const content3 = await optionalText(root, KNOWLEDGE_MAP_PATH);
86698
86702
  return content3 === undefined ? undefined : validateKnowledgeMap(import_yaml39.parse(content3));
86699
86703
  }
86704
+ async function projectMenuTargets(root) {
86705
+ const { isContextProjectRoot: isContextProjectRoot2, loadContextProjectModule: loadContextProjectModule2 } = await Promise.resolve().then(() => (init_workspace(), exports_workspace));
86706
+ if (!isContextProjectRoot2(root))
86707
+ return new Set;
86708
+ return packageMenuTargets((await loadContextProjectModule2(root)).project.packages);
86709
+ }
86700
86710
  async function inspectKnowledgeMap(root) {
86701
86711
  const current2 = await readKnowledgeMap(root);
86702
86712
  return {
@@ -86728,7 +86738,8 @@ async function acceptStructureDecision(input) {
86728
86738
  const next = input.knowledge_map === undefined ? current2 : updateKnowledgeMap(current2, input.knowledge_map);
86729
86739
  if (input.article_targets !== undefined) {
86730
86740
  const known = [...await approvedKnowledgeMapTargets(input.projectRoot), ...input.article_targets];
86731
- assertKnowledgeMapCoverage(next, known, { known, require_update: true, has_update: input.knowledge_map !== undefined, revision: input.revision, current_revision: current2?.revision ?? null });
86741
+ const menu = await projectMenuTargets(input.projectRoot);
86742
+ assertKnowledgeMapCoverage(next, known.filter((target) => !menu.has(target.artifact_ref)), { known, require_update: true, has_update: input.knowledge_map !== undefined, revision: input.revision, current_revision: current2?.revision ?? null });
86732
86743
  }
86733
86744
  const writes = [{ path: input.decisionPath, content: canonicalIndexerJson({ revision: input.revision, decision: "approved" }) }];
86734
86745
  if (input.knowledge_map !== undefined)
@@ -86762,7 +86773,8 @@ async function applyKnowledgeMapUpdate(projectRoot, update) {
86762
86773
  title: candidate.review.title,
86763
86774
  section_keys: candidate.indexer_candidate.sections.map((section) => section.section_key)
86764
86775
  }));
86765
- assertKnowledgeMapCoverage(next, approved, { known: [...approved, ...planned, ...accepted], current_revision: current2?.revision ?? null });
86776
+ const menu = await projectMenuTargets(projectRoot);
86777
+ assertKnowledgeMapCoverage(next, approved.filter((target) => !menu.has(target.artifact_ref)), { known: [...approved, ...planned, ...accepted], current_revision: current2?.revision ?? null });
86766
86778
  const content3 = import_yaml39.stringify(next);
86767
86779
  const previous2 = await optionalText(projectRoot, KNOWLEDGE_MAP_PATH);
86768
86780
  await runDurableMultiFileTransaction({
@@ -86820,7 +86832,8 @@ function packageKnowledgeMapTargets(pkg, files) {
86820
86832
  return targets;
86821
86833
  }
86822
86834
  async function writePackageKnowledgeMap(input) {
86823
- assertKnowledgeMapCoverage(input.structure, knowledgeMapArticleTargets(input.selected));
86835
+ const menu = packageMenuTargets([input.pkg]);
86836
+ assertKnowledgeMapCoverage(input.structure, knowledgeMapArticleTargets(input.selected).filter((target) => !menu.has(target.artifact_ref)));
86824
86837
  if (input.structure === undefined || input.pkg.kind !== "package.kb")
86825
86838
  return [];
86826
86839
  const projected = projectKnowledgeMap(input.structure, packageKnowledgeMapTargets(input.pkg, input.selected));
@@ -108952,7 +108965,8 @@ async function writeReviewHtml(input) {
108952
108965
  }
108953
108966
  await writeFile28(outPath, renderReviewHtml(model, diagramScript), "utf8");
108954
108967
  await saveReviewReportScope(input.projectRoot, reviewScope, candidates, model.baselineHash);
108955
- const unplaced = model.pages.filter((page) => page.candidate_id && !model.nodes.some((node3) => node3.page === page.id && node3.parent !== "review-unplaced" && !node3.removed)).map((page) => ({ article_id: page.id, candidate_id: page.candidate_id, path: page.path, title: page.title }));
108968
+ const menu = await projectMenuTargets(input.projectRoot);
108969
+ const unplaced = model.pages.filter((page) => page.candidate_id && !menu.has(page.id) && !model.nodes.some((node3) => node3.page === page.id && node3.parent !== "review-unplaced" && !node3.removed)).map((page) => ({ article_id: page.id, candidate_id: page.candidate_id, path: page.path, title: page.title }));
108956
108970
  return {
108957
108971
  navigation: {
108958
108972
  current_revision: (await readKnowledgeMap(input.projectRoot))?.revision ?? null,