From 927d5fa4e5269fb1f1abf97808583d1888c6c0fb Mon Sep 17 00:00:00 2001 From: qiansc Date: Wed, 14 Oct 2026 12:11:38 +0800 Subject: [PATCH] fix(v0.7.67): leave source-region checks to verify instead of package builds context build no longer reads registered sources or adds 'Source regions need review' notices to pages, so publishing builds do not need source checkouts. context verify still reports changed, moved and missing regions. Co-authored-by: Cursor --- CHANGELOG.md | 5 +++ bun.lock | 30 ++++++++--------- package.json | 2 +- .../context-workflow/provider.yaml | 2 +- .../resources/diagnostics/verification.md | 2 ++ packages/context-cli/package.json | 2 +- .../packageLinkWarnings.integration.test.ts | 33 ++++++++++++++++++- .../src/project/indexerBaseContracts.ts | 2 +- .../context-cli/src/project/packageBuilder.ts | 5 ++- .../src/project/packageKnowledgeAdvisories.ts | 18 ---------- packages/context/package.json | 2 +- packages/core/package.json | 2 +- packages/dev-cli/package.json | 2 +- packages/extract-contract/package.json | 2 +- packages/extract-go/package.json | 2 +- packages/extract-mdx/package.json | 2 +- packages/extract-proto/package.json | 2 +- packages/extract-rush/package.json | 2 +- packages/extract-sql/package.json | 2 +- packages/extract-style/package.json | 2 +- packages/extract-thrift/package.json | 2 +- packages/extract-ts/package.json | 2 +- packages/extract/package.json | 2 +- packages/tui/package.json | 2 +- .../claude/.claude-plugin/plugin.json | 2 +- .../codex/.codex-plugin/plugin.json | 4 +-- .../cursor/.cursor-plugin/plugin.json | 2 +- 27 files changed, 78 insertions(+), 59 deletions(-) delete mode 100644 packages/context-cli/src/project/packageKnowledgeAdvisories.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 5957fb2d..47f3a4e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to Context are documented here. +## 0.7.67 - 2026-10-14 + +- Knowledge websites open in light mode regardless of the system color scheme. The reader's light/dark and language choices are remembered per origin by default, so sites on one origin share them. +- `context build` no longer compares cited source regions or adds a "Source regions need review" notice to pages, so publishing builds no longer need the registered source checkouts. `context verify` still reports changed, moved or missing regions; run it before publishing. + ## 0.7.66 - 2026-10-13 - Knowledge websites no longer collapse custom slots, such as a homepage banner, for readers who open them in dark mode. Slots remounted for these readers now finish loading before they replace the prerendered markup, so the old and new content swap in the same frame. diff --git a/bun.lock b/bun.lock index 8b514965..803a68eb 100644 --- a/bun.lock +++ b/bun.lock @@ -18,7 +18,7 @@ }, "packages/context": { "name": "@c4a/context", - "version": "0.7.66", + "version": "0.7.67", "dependencies": { "yaml": "^2.5.1", "zod": "^3.23.8", @@ -26,7 +26,7 @@ }, "packages/context-cli": { "name": "@c4a/context-cli", - "version": "0.7.66", + "version": "0.7.67", "bin": { "context": "dist/cli.js", }, @@ -73,7 +73,7 @@ }, "packages/core": { "name": "@c4a/core", - "version": "0.7.66", + "version": "0.7.67", "dependencies": { "picomatch": "^4.0.4", "yaml": "^2.4.5", @@ -85,7 +85,7 @@ }, "packages/dev-cli": { "name": "@c4a/dev-cli", - "version": "0.7.66", + "version": "0.7.67", "dependencies": { "@c4a/context": "workspace:*", "@c4a/core": "workspace:*", @@ -97,7 +97,7 @@ }, "packages/extract": { "name": "@c4a/extract", - "version": "0.7.66", + "version": "0.7.67", "bin": { "c4a-extract-code": "./dist/bin/c4a-extract-code.js", }, @@ -112,7 +112,7 @@ }, "packages/extract-contract": { "name": "@c4a/extract-contract", - "version": "0.7.66", + "version": "0.7.67", "dependencies": { "@c4a/core": "workspace:*", "graphql": "^16.14.2", @@ -122,7 +122,7 @@ }, "packages/extract-go": { "name": "@c4a/extract-go", - "version": "0.7.66", + "version": "0.7.67", "dependencies": { "@c4a/core": "workspace:*", "@c4a/extract": "workspace:*", @@ -132,7 +132,7 @@ }, "packages/extract-mdx": { "name": "@c4a/extract-mdx", - "version": "0.7.66", + "version": "0.7.67", "dependencies": { "@c4a/core": "workspace:*", "remark-mdx": "^3.1.1", @@ -144,7 +144,7 @@ }, "packages/extract-proto": { "name": "@c4a/extract-proto", - "version": "0.7.66", + "version": "0.7.67", "dependencies": { "@c4a/core": "workspace:*", "zod": "^3.23.8", @@ -152,7 +152,7 @@ }, "packages/extract-rush": { "name": "@c4a/extract-rush", - "version": "0.7.66", + "version": "0.7.67", "dependencies": { "@c4a/core": "workspace:*", "typescript": "^5.5.4", @@ -162,7 +162,7 @@ }, "packages/extract-sql": { "name": "@c4a/extract-sql", - "version": "0.7.66", + "version": "0.7.67", "dependencies": { "@c4a/core": "workspace:*", "node-sql-parser": "^5.4.0", @@ -171,7 +171,7 @@ }, "packages/extract-style": { "name": "@c4a/extract-style", - "version": "0.7.66", + "version": "0.7.67", "dependencies": { "@c4a/core": "workspace:*", "postcss": "^8.5.26", @@ -183,7 +183,7 @@ }, "packages/extract-thrift": { "name": "@c4a/extract-thrift", - "version": "0.7.66", + "version": "0.7.67", "dependencies": { "@c4a/core": "workspace:*", "zod": "^3.23.8", @@ -191,7 +191,7 @@ }, "packages/extract-ts": { "name": "@c4a/extract-ts", - "version": "0.7.66", + "version": "0.7.67", "dependencies": { "@c4a/core": "workspace:*", "@c4a/extract": "workspace:*", @@ -202,7 +202,7 @@ }, "packages/tui": { "name": "@c4a/tui", - "version": "0.7.66", + "version": "0.7.67", "dependencies": { "ink": "^5.0.0", "react": "^18.3.1", diff --git a/package.json b/package.json index 11d745f4..b27e0c6a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "context", - "version": "0.7.66", + "version": "0.7.67", "packageManager": "bun@1.3.9", "repository": { "type": "git", diff --git a/packages/context-cli/context-workflow/provider.yaml b/packages/context-cli/context-workflow/provider.yaml index 6b8d83a4..9d69b4e4 100644 --- a/packages/context-cli/context-workflow/provider.yaml +++ b/packages/context-cli/context-workflow/provider.yaml @@ -1,6 +1,6 @@ schema: agent-graph.provider.v1 id: c4a/context -version: 0.7.66 +version: 0.7.67 name: Context workflow description: Internal work contract for Context knowledge workspaces. graphs: diff --git a/packages/context-cli/context-workflow/resources/diagnostics/verification.md b/packages/context-cli/context-workflow/resources/diagnostics/verification.md index b4a0bdab..a70e7eed 100644 --- a/packages/context-cli/context-workflow/resources/diagnostics/verification.md +++ b/packages/context-cli/context-workflow/resources/diagnostics/verification.md @@ -19,3 +19,5 @@ whether the content needs revision. Changed, missing or ambiguously relocated source regions identify articles to inspect through the normal revision workflow. Warnings do not add a separate maintenance gate, silently rewrite articles or confirm that the prose is current. +Build does not repeat this comparison or read registered sources, so package +pages carry no source-region notice; run verify before publishing. diff --git a/packages/context-cli/package.json b/packages/context-cli/package.json index 7a2a2f71..8d7a651d 100644 --- a/packages/context-cli/package.json +++ b/packages/context-cli/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/context-cli", "description": "Local runtime and Agent integration for traceable knowledge production", - "version": "0.7.66", + "version": "0.7.67", "type": "module", "license": "MIT", "engines": { diff --git a/packages/context-cli/src/__tests__/packageLinkWarnings.integration.test.ts b/packages/context-cli/src/__tests__/packageLinkWarnings.integration.test.ts index 12d114ad..0c6b7a1b 100644 --- a/packages/context-cli/src/__tests__/packageLinkWarnings.integration.test.ts +++ b/packages/context-cli/src/__tests__/packageLinkWarnings.integration.test.ts @@ -1,5 +1,5 @@ import { expect, test } from "bun:test"; -import { cp, readFile, rm, writeFile } from "node:fs/promises"; +import { cp, readdir, readFile, rm, writeFile } from "node:fs/promises"; import { join } from "node:path"; import { createDocumentRevisionWorkspace, DOCUMENT_REVISION_SOURCE_REF } from "./projectDocumentRevisionV074.fixture.js"; import { approveCandidates } from "./projectDocumentRevisionStages.fixture.js"; @@ -7,6 +7,7 @@ import { produceFixtureArticles } from "./productionArticleWorkflow.fixture.js"; import { readCandidateRecords } from "../project/candidateLedger.js"; import { closeProjectWorkspace } from "../project/close.js"; import { acceptStarterPackageTemplates } from "../project/packageTemplateReview.js"; +import { verifyProjectWorkspace } from "../project/verify.js"; import { buildFixturePackages as buildProjectPackages } from "./workspaceVersionDelivery.fixture.js"; test("a successful package build retains navigation diagnostics on unchanged rebuilds", async () => { @@ -41,3 +42,33 @@ test("a successful package build retains navigation diagnostics on unchanged reb expect(await readFile(page, "utf8")).toContain("https://example.org/guide"); } finally { await rm(root, { recursive: true, force: true }); } }, 60000); + +test("package builds leave source-region checks to verify", async () => { + const root = await createDocumentRevisionWorkspace({ sourceCount: 1 }); + try { + await cp(join(import.meta.dir, "../../../context/templates/package-templates/kb"), join(root, "src/package-templates/kb"), { recursive: true }); + const entryPath = join(root, "src/index.ts"); + await writeFile(entryPath, (await readFile(entryPath, "utf8")).replace("defineProject, source", "defineProject, kbPackage, source") + .replace("packages: []", 'packages: [kbPackage({ name: "source-checks", template: { path: "src/package-templates/kb", vars: {} } })]')); + await produceFixtureArticles(root, [{ + path: "architecture/entry.md", question: "How is the public entry used?", + sources: [DOCUMENT_REVISION_SOURCE_REF], + markdown: '---\ntitle: Public entry\ndescription: Public entry usage.\n---\n\n\nUse the public entry point.\n\n', + references: { sections: [{ id: "entry", references: [{ source_ref: DOCUMENT_REVISION_SOURCE_REF, + locator: { path: "src/index.ts", start_line: 1, end_line: 1 } }] }] }, + }]); + await approveCandidates(root, await readCandidateRecords(root)); + await closeProjectWorkspace(root); + await acceptStarterPackageTemplates({ projectRoot: root }); + const first = (await buildProjectPackages(root)).packages[0]!; + await rm(join(root, "fixture-source"), { recursive: true, force: true }); + expect((await verifyProjectWorkspace(root)).issues).toContainEqual(expect.objectContaining({ + code: "approved-source-region-changed", severity: "warning" })); + const rebuilt = (await buildProjectPackages(root)).packages[0]!; + expect(rebuilt.state).toBe("unchanged"); + const pages = (await readdir(join(root, first.outDir), { recursive: true })).filter(path => path.endsWith(".md")); + const contents = await Promise.all(pages.map(path => readFile(join(root, first.outDir, path), "utf8"))); + expect(contents.some(content => content.includes("Use the public entry point."))).toBe(true); + expect(contents.some(content => content.includes("Source regions need review"))).toBe(false); + } finally { await rm(root, { recursive: true, force: true }); } +}, 60000); diff --git a/packages/context-cli/src/project/indexerBaseContracts.ts b/packages/context-cli/src/project/indexerBaseContracts.ts index c726a52c..d31582f0 100644 --- a/packages/context-cli/src/project/indexerBaseContracts.ts +++ b/packages/context-cli/src/project/indexerBaseContracts.ts @@ -21,7 +21,7 @@ import { bundledMarkdownReaderQuestionContracts } from "./indexerBaseMarkdownAuthoringCatalog.js"; const BASE_CONTRACT_VERSION = "1.1.0"; -export const BUNDLED_INDEXER_PARSER_PACKAGE_VERSION = "0.7.66"; +export const BUNDLED_INDEXER_PARSER_PACKAGE_VERSION = "0.7.67"; const BUNDLED_PARSER_REQUIREMENTS = buildIndexerParserCapabilityRequirements( BUNDLED_INDEXER_PARSER_PACKAGE_VERSION, ); diff --git a/packages/context-cli/src/project/packageBuilder.ts b/packages/context-cli/src/project/packageBuilder.ts index 1c63a9b5..802aa176 100644 --- a/packages/context-cli/src/project/packageBuilder.ts +++ b/packages/context-cli/src/project/packageBuilder.ts @@ -14,7 +14,6 @@ import { writePackageSite, PACKAGE_SITE_VERSION } from "./packageSite.js"; import { readSiteExtensions } from "./packageSiteExtensions.js"; import { workspaceVersionFingerprint, writePackageVersion } from "./workspaceBuildVersion.js"; import { PACKAGE_READER_MARKDOWN_VERSION } from "./packageRenderCache.js"; -import { withPackageKnowledgeAdvisories } from "./packageKnowledgeAdvisories.js"; import { writePackageKnowledgeMap } from "./packageKnowledgeMap.js"; import { inspectPackageMarkdownDirectory } from "./packageMarkdownAnchors.js"; import { withStagedPackageOutput } from "./packageBuildStage.js"; @@ -372,7 +371,7 @@ export async function collectPackageFreshness( packages: readonly PackageDefinition[], ): Promise { assertDistinctPackageOutputs(packages); - const approved = await withPackageKnowledgeAdvisories(projectRoot, await listApprovedKnowledge(projectRoot)); + const approved = await listApprovedKnowledge(projectRoot); return Promise.all(packages.map(async (pkg) => { assertPackageOutputDir(pkg); const selected = selectPackageKnowledge(approved, pkg); @@ -468,7 +467,7 @@ async function buildProjectPackagesInternal(projectRoot: string, options: { deli next: "Declare kbPackage() or llmsPackage() in src/index.ts, then rerun context build.", }); } - const approved = await withPackageKnowledgeAdvisories(projectRoot, await listApprovedKnowledge(projectRoot)); + const approved = await listApprovedKnowledge(projectRoot); const templateReviews = await inspectPackageTemplateReviews(projectRoot, packages); const unresolvedTemplateReviews = templateReviews.filter((review) => review.state === "review-required" || review.state === "invalid" diff --git a/packages/context-cli/src/project/packageKnowledgeAdvisories.ts b/packages/context-cli/src/project/packageKnowledgeAdvisories.ts deleted file mode 100644 index 3d7cf881..00000000 --- a/packages/context-cli/src/project/packageKnowledgeAdvisories.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { approvedKnowledgeDependencyWarnings } from "./approvedKnowledgeDependencyWarnings.js"; -import type { ApprovedKnowledgeFile } from "./packageIndexes.js"; - -/** Reader-visible provenance state belongs to the output projection. Never - * change approved prose or its review identity to publish a diagnostic. The - * projected content also participates in the ordinary package fingerprint. */ -export async function withPackageKnowledgeAdvisories(projectRoot: string, files: readonly ApprovedKnowledgeFile[]): Promise { - const stale = new Set((await approvedKnowledgeDependencyWarnings(projectRoot)) - .filter(issue => issue.code === "approved-source-region-changed").map(issue => issue.path)); - return files.map(file => { - if (!stale.has(file.relPath)) return file; - const notice = "> **Source regions need review.** A cited source region changed or is unavailable. Recheck the linked sources before relying on this article.\n\n"; - const frontmatter = /^(---\r?\n[\s\S]*?\r?\n---(?:\r?\n|$))/u.exec(file.content)?.[0] ?? ""; - const body = file.content.slice(frontmatter.length); - const title = /^(\s*# [^\r\n]+(?:\r?\n|$)\s*)/u.exec(body)?.[0] ?? ""; - return { ...file, content: `${frontmatter}${title}${notice}${body.slice(title.length)}` }; - }); -} diff --git a/packages/context/package.json b/packages/context/package.json index c033e651..9b6ceb9b 100644 --- a/packages/context/package.json +++ b/packages/context/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/context", "description": "Declarative SDK for Context knowledge sources, workflows, review, and package outputs", - "version": "0.7.66", + "version": "0.7.67", "type": "module", "license": "MIT", "engines": { diff --git a/packages/core/package.json b/packages/core/package.json index e274027b..1ce690b3 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/core", "description": "Shared extraction types, schemas, and utilities for Context", - "version": "0.7.66", + "version": "0.7.67", "type": "module", "license": "MIT", "engines": { diff --git a/packages/dev-cli/package.json b/packages/dev-cli/package.json index 5e2611b5..e60484be 100644 --- a/packages/dev-cli/package.json +++ b/packages/dev-cli/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/dev-cli", "description": "Developer menu for Context build, verification, link, and release preparation", - "version": "0.7.66", + "version": "0.7.67", "private": true, "type": "module", "license": "MIT", diff --git a/packages/extract-contract/package.json b/packages/extract-contract/package.json index 744dd6b1..26db6eed 100644 --- a/packages/extract-contract/package.json +++ b/packages/extract-contract/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/extract-contract", "description": "OpenAPI and GraphQL contract catalog adapter for Context", - "version": "0.7.66", + "version": "0.7.67", "type": "module", "license": "MIT", "engines": { diff --git a/packages/extract-go/package.json b/packages/extract-go/package.json index 53c5fbe8..4d9fe654 100644 --- a/packages/extract-go/package.json +++ b/packages/extract-go/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/extract-go", "description": "Go extraction plugin and structural index for Context", - "version": "0.7.66", + "version": "0.7.67", "type": "module", "license": "MIT", "engines": { diff --git a/packages/extract-mdx/package.json b/packages/extract-mdx/package.json index e6134034..a8323fe6 100644 --- a/packages/extract-mdx/package.json +++ b/packages/extract-mdx/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/extract-mdx", "description": "MDX component and example catalog bridge for Context", - "version": "0.7.66", + "version": "0.7.67", "type": "module", "license": "MIT", "engines": { diff --git a/packages/extract-proto/package.json b/packages/extract-proto/package.json index e7cd4f2a..7d3825af 100644 --- a/packages/extract-proto/package.json +++ b/packages/extract-proto/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/extract-proto", "description": "Protocol Buffers IDL catalog parser for Context", - "version": "0.7.66", + "version": "0.7.67", "type": "module", "license": "MIT", "engines": { diff --git a/packages/extract-rush/package.json b/packages/extract-rush/package.json index 5e77d287..1c0bf99f 100644 --- a/packages/extract-rush/package.json +++ b/packages/extract-rush/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/extract-rush", "description": "Rush workspace structural index for Context", - "version": "0.7.66", + "version": "0.7.67", "type": "module", "license": "MIT", "engines": { diff --git a/packages/extract-sql/package.json b/packages/extract-sql/package.json index df02b039..4ee1bc21 100644 --- a/packages/extract-sql/package.json +++ b/packages/extract-sql/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/extract-sql", "description": "Dialect-bound lightweight SQL evidence adapter for Context", - "version": "0.7.66", + "version": "0.7.67", "type": "module", "license": "MIT", "engines": { diff --git a/packages/extract-style/package.json b/packages/extract-style/package.json index b67c02f4..c4170667 100644 --- a/packages/extract-style/package.json +++ b/packages/extract-style/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/extract-style", "description": "Lightweight CSS and SCSS evidence adapter for Context", - "version": "0.7.66", + "version": "0.7.67", "type": "module", "license": "MIT", "engines": { diff --git a/packages/extract-thrift/package.json b/packages/extract-thrift/package.json index a457427d..42b5a55d 100644 --- a/packages/extract-thrift/package.json +++ b/packages/extract-thrift/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/extract-thrift", "description": "Apache Thrift IDL catalog parser for Context", - "version": "0.7.66", + "version": "0.7.67", "type": "module", "license": "MIT", "engines": { diff --git a/packages/extract-ts/package.json b/packages/extract-ts/package.json index e4c8725b..03dad028 100644 --- a/packages/extract-ts/package.json +++ b/packages/extract-ts/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/extract-ts", "description": "TypeScript and JavaScript extraction plugin for the Context ExtractionResult v2 contract", - "version": "0.7.66", + "version": "0.7.67", "type": "module", "license": "MIT", "engines": { diff --git a/packages/extract/package.json b/packages/extract/package.json index d55e48a6..777565bf 100644 --- a/packages/extract/package.json +++ b/packages/extract/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/extract", "description": "Language-plugin framework and repository runner for Context code evidence", - "version": "0.7.66", + "version": "0.7.67", "type": "module", "license": "MIT", "engines": { diff --git a/packages/tui/package.json b/packages/tui/package.json index 1624465d..b4f3eae9 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,7 +1,7 @@ { "name": "@c4a/tui", "description": "Shared terminal UI components (Ink + React) for Context development tools", - "version": "0.7.66", + "version": "0.7.67", "private": true, "type": "module", "license": "MIT", diff --git a/plugins/context/repo-install/claude/.claude-plugin/plugin.json b/plugins/context/repo-install/claude/.claude-plugin/plugin.json index 306353d7..a93a0b47 100644 --- a/plugins/context/repo-install/claude/.claude-plugin/plugin.json +++ b/plugins/context/repo-install/claude/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "c4a", "description": "Start or continue a project-local knowledge workspace through one graph-routed entry.", - "version": "0.7.66", + "version": "0.7.67", "author": { "name": "c4a" }, diff --git a/plugins/context/repo-install/codex/.codex-plugin/plugin.json b/plugins/context/repo-install/codex/.codex-plugin/plugin.json index ac3872eb..230cc339 100644 --- a/plugins/context/repo-install/codex/.codex-plugin/plugin.json +++ b/plugins/context/repo-install/codex/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "c4a", - "version": "0.7.66", + "version": "0.7.67", "description": "Start or continue a project-local knowledge workspace through one graph-routed entry.", "author": { "name": "c4a" }, "homepage": "https://github.com/context4ai/c4a", @@ -10,7 +10,7 @@ "skills": "./skills/", "interface": { "displayName": "C4A Context", - "shortDescription": "Initialize and advance a local, source-linked project knowledge workspace.\nv0.7.66", + "shortDescription": "Initialize and advance a local, source-linked project knowledge workspace.\nv0.7.67", "longDescription": "Create a Context workspace and use agent-guided next steps to register sources, run extraction, review candidates, build package outputs, and verify health without silently mutating source repositories.", "developerName": "c4a", "category": "Productivity", diff --git a/plugins/context/repo-install/cursor/.cursor-plugin/plugin.json b/plugins/context/repo-install/cursor/.cursor-plugin/plugin.json index 777d5c95..74baf527 100644 --- a/plugins/context/repo-install/cursor/.cursor-plugin/plugin.json +++ b/plugins/context/repo-install/cursor/.cursor-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "c4a", "displayName": "C4A Context", - "version": "0.7.66", + "version": "0.7.67", "description": "Start or continue a project-local knowledge workspace through one graph-routed entry.", "author": { "name": "Context4AI",