@c4a/context-cli 0.7.50 → 0.7.60

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 (46) hide show
  1. package/cli.js +3358 -2136
  2. package/indexers/contracts/profile-contract.json +245 -245
  3. package/indexers/release-manifest.json +1 -1
  4. package/package.json +12 -12
  5. package/parserEntryWorker.js +73 -2
  6. package/plugins/VERSION +1 -1
  7. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  8. package/plugins/claude/commands/context-inspect-search.md +8 -0
  9. package/plugins/claude/commands/context.md +335 -266
  10. package/plugins/claude/resources/context/imports.md +87 -0
  11. package/plugins/claude/resources/context/local-install.md +21 -0
  12. package/plugins/claude/skills/context-inspect-search/SKILL.md +8 -0
  13. package/plugins/claude/skills/context-repo-content/SKILL.md +2 -1
  14. package/plugins/codex/.codex-plugin/plugin.json +2 -2
  15. package/plugins/codex/skills/context/SKILL.md +335 -266
  16. package/plugins/codex/skills/context/references/imports.md +87 -0
  17. package/plugins/codex/skills/context/references/local-install.md +21 -0
  18. package/plugins/codex/skills/context-inspect-search/SKILL.md +8 -0
  19. package/plugins/codex/skills/context-repo-content/SKILL.md +2 -1
  20. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  21. package/plugins/cursor/commands/c4a-context-inspect-search.md +8 -0
  22. package/plugins/cursor/commands/c4a-context.md +335 -266
  23. package/plugins/cursor/resources/context/imports.md +87 -0
  24. package/plugins/cursor/resources/context/local-install.md +21 -0
  25. package/plugins/cursor/skills/context-inspect-search/SKILL.md +8 -0
  26. package/plugins/cursor/skills/context-repo-content/SKILL.md +2 -1
  27. package/plugins/skills/context/SKILL.md +335 -266
  28. package/plugins/skills/context/references/imports.md +87 -0
  29. package/plugins/skills/context/references/local-install.md +21 -0
  30. package/plugins/skills/context-inspect-search/SKILL.md +8 -0
  31. package/plugins/skills/context-repo-content/SKILL.md +2 -1
  32. package/providers/context/actions/repair-project-entry.yaml +1 -0
  33. package/providers/context/actions/translate-site-locales.yaml +5 -0
  34. package/providers/context/codes.yaml +1 -0
  35. package/providers/context/graphs/workspace.yaml +14 -1
  36. package/providers/context/manifest.json +44 -18
  37. package/providers/context/provider.yaml +1 -1
  38. package/providers/context/resources/manuals/guides/imports.md +90 -0
  39. package/providers/context/resources/manuals/guides/knowledge-updates.md +13 -0
  40. package/providers/context/resources/manuals/guides/package-outputs.md +42 -4
  41. package/providers/context/resources/manuals/guides/page-customization.md +16 -0
  42. package/providers/context/resources/manuals/guides/site-translation.md +78 -0
  43. package/providers/context/resources/manuals/reference/project-api.md +2 -1
  44. package/providers/context/resources/procedures/knowledge-updates.md +13 -0
  45. package/providers/context/skills/record-workspace-version/SKILL.md +3 -2
  46. package/providers/context/skills/translate-site-locales/SKILL.md +36 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "protocol": "context.indexer.cli-release-manifest/v1",
3
3
  "package": "@c4a/context-cli",
4
- "version": "0.7.50",
4
+ "version": "0.7.60",
5
5
  "issuer": "context4ai/context",
6
6
  "bundles": [
7
7
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c4a/context-cli",
3
- "version": "0.7.50",
3
+ "version": "0.7.60",
4
4
  "type": "module",
5
5
  "description": "Local runtime and Agent integration for traceable knowledge production",
6
6
  "license": "MIT",
@@ -24,17 +24,17 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@c4a/agent-graph": "0.3.0",
27
- "@c4a/context": "0.7.50",
28
- "@c4a/extract": "0.7.50",
29
- "@c4a/extract-contract": "0.7.50",
30
- "@c4a/extract-go": "0.7.50",
31
- "@c4a/extract-mdx": "0.7.50",
32
- "@c4a/extract-proto": "0.7.50",
33
- "@c4a/extract-rush": "0.7.50",
34
- "@c4a/extract-sql": "0.7.50",
35
- "@c4a/extract-style": "0.7.50",
36
- "@c4a/extract-thrift": "0.7.50",
37
- "@c4a/extract-ts": "0.7.50",
27
+ "@c4a/context": "0.7.60",
28
+ "@c4a/extract": "0.7.60",
29
+ "@c4a/extract-contract": "0.7.60",
30
+ "@c4a/extract-go": "0.7.60",
31
+ "@c4a/extract-mdx": "0.7.60",
32
+ "@c4a/extract-proto": "0.7.60",
33
+ "@c4a/extract-rush": "0.7.60",
34
+ "@c4a/extract-sql": "0.7.60",
35
+ "@c4a/extract-style": "0.7.60",
36
+ "@c4a/extract-thrift": "0.7.60",
37
+ "@c4a/extract-ts": "0.7.60",
38
38
  "@mermaid-js/layout-elk": "0.2.0",
39
39
  "commander": "^11.0.0",
40
40
  "fast-xml-parser": "^5.10.1",
@@ -4535,7 +4535,7 @@ var init_siteTheme = __esm(() => {
4535
4535
  });
4536
4536
 
4537
4537
  // ../context/src/packageSite.ts
4538
- var siteHrefSchema, packageSiteHomeActionSchema, packageSiteHomeResourceSchema, packageSiteHomeSchema, packageSiteSchema;
4538
+ var siteHrefSchema, packageSiteHomeActionSchema, packageSiteHomeResourceSchema, packageSiteHomeSchema, localeTagSchema, localizedTextSchema, packageSiteLocaleSchema, packageSiteNavLinkSchema, packageSiteMoreItemSchema, packageSiteSocialLinkSchema, packageSiteSchema;
4539
4539
  var init_packageSite = __esm(() => {
4540
4540
  init_siteTheme();
4541
4541
  init_zod();
@@ -4562,6 +4562,32 @@ var init_packageSite = __esm(() => {
4562
4562
  actions: exports_external.array(packageSiteHomeActionSchema).optional(),
4563
4563
  resources: exports_external.array(packageSiteHomeResourceSchema).optional()
4564
4564
  }).strict();
4565
+ localeTagSchema = exports_external.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/u, "Use a BCP 47 language tag, such as zh-CN");
4566
+ localizedTextSchema = exports_external.record(localeTagSchema, exports_external.string().trim().min(1));
4567
+ packageSiteLocaleSchema = exports_external.object({
4568
+ label: exports_external.string().trim().min(1).optional(),
4569
+ title: exports_external.string().trim().min(1).optional(),
4570
+ description: exports_external.string().optional(),
4571
+ home: packageSiteHomeSchema.optional()
4572
+ }).strict();
4573
+ packageSiteNavLinkSchema = exports_external.object({
4574
+ text: exports_external.string().trim().min(1),
4575
+ link: siteHrefSchema,
4576
+ locales: localizedTextSchema.optional()
4577
+ }).strict();
4578
+ packageSiteMoreItemSchema = exports_external.object({
4579
+ text: exports_external.string().trim().min(1),
4580
+ link: siteHrefSchema.optional(),
4581
+ target: exports_external.object({ artifact_ref: exports_external.string().trim().min(1) }).strict().optional(),
4582
+ locales: localizedTextSchema.optional()
4583
+ }).strict().refine((value) => value.link === undefined !== (value.target === undefined), {
4584
+ message: "A More menu item requires exactly one of link or target"
4585
+ });
4586
+ packageSiteSocialLinkSchema = exports_external.object({
4587
+ icon: exports_external.enum(["github", "discord", "x", "youtube", "slack", "linkedin", "mastodon", "npm"]),
4588
+ link: exports_external.string().regex(/^https:\/\//u, "Use an https URL"),
4589
+ ariaLabel: exports_external.string().trim().min(1).optional()
4590
+ }).strict();
4565
4591
  packageSiteSchema = exports_external.object({
4566
4592
  theme: siteThemeSchema.optional(),
4567
4593
  title: exports_external.string().trim().min(1).optional(),
@@ -4569,9 +4595,16 @@ var init_packageSite = __esm(() => {
4569
4595
  lang: exports_external.string().min(1).default("en-US"),
4570
4596
  base: exports_external.string().regex(/^\/(?:[a-zA-Z0-9_-]+\/)*$/, "Use / or a slash-delimited deployment path, such as /docs/").default("/"),
4571
4597
  home: packageSiteHomeSchema.optional(),
4598
+ locales: exports_external.record(localeTagSchema, packageSiteLocaleSchema).optional(),
4599
+ titleLink: siteHrefSchema.optional(),
4600
+ nav: exports_external.array(packageSiteNavLinkSchema).optional(),
4601
+ more: exports_external.array(packageSiteMoreItemSchema).optional(),
4602
+ socialLinks: exports_external.array(packageSiteSocialLinkSchema).optional(),
4603
+ localePreferenceKey: exports_external.string().regex(/^[a-zA-Z0-9:._-]+$/u).optional(),
4572
4604
  extensions: exports_external.object({
4573
4605
  root: exports_external.string().regex(/^src\/(?:[a-zA-Z0-9_-]+\/)*[a-zA-Z0-9_-]+$/).default("src/site"),
4574
4606
  slots: exports_external.object({
4607
+ brand: exports_external.string().min(1).optional(),
4575
4608
  banner: exports_external.union([exports_external.string().min(1), exports_external.literal(false)]).optional(),
4576
4609
  knowledge: exports_external.union([exports_external.string().min(1), exports_external.literal(false)]).optional(),
4577
4610
  resources: exports_external.union([exports_external.string().min(1), exports_external.literal(false)]).optional(),
@@ -4580,7 +4613,13 @@ var init_packageSite = __esm(() => {
4580
4613
  }).strict().optional(),
4581
4614
  pages: exports_external.record(exports_external.string().regex(/^[a-zA-Z0-9_-]+$/), exports_external.string().min(1)).optional()
4582
4615
  }).strict().optional()
4583
- }).strict();
4616
+ }).strict().superRefine((value, context) => {
4617
+ for (const tag of Object.keys(value.locales ?? {})) {
4618
+ if (tag.toLowerCase() === value.lang.toLowerCase()) {
4619
+ context.addIssue({ code: exports_external.ZodIssueCode.custom, path: ["locales", tag], message: "An additional locale must differ from the primary site lang" });
4620
+ }
4621
+ }
4622
+ });
4584
4623
  });
4585
4624
 
4586
4625
  // ../context/src/contracts.ts
@@ -16739,6 +16778,37 @@ var init_repoContent = __esm(() => {
16739
16778
  }).strict();
16740
16779
  });
16741
16780
 
16781
+ // ../context/src/imports.ts
16782
+ var importUrlSchema, importIdSchema, importEntrySchema, importsRegistrySchema;
16783
+ var init_imports = __esm(() => {
16784
+ init_zod();
16785
+ init_repoContent();
16786
+ importUrlSchema = exports_external.string().min(1).refine((value) => {
16787
+ if (!/^https?:\/\/[^/?#\\]/iu.test(value) || /[\s\u0000-\u001f\u007f<>\\]/u.test(value))
16788
+ return false;
16789
+ try {
16790
+ const url = new URL(value);
16791
+ return ["https:", "http:"].includes(url.protocol) && !!url.hostname && !url.username && !url.password;
16792
+ } catch {
16793
+ return false;
16794
+ }
16795
+ }, "Use an absolute http:// or https:// entrance without credentials, whitespace or backslashes");
16796
+ importIdSchema = exports_external.string().regex(/^[A-Za-z0-9][A-Za-z0-9._-]*$/u);
16797
+ importEntrySchema = exports_external.object({
16798
+ url: importUrlSchema,
16799
+ kind: exports_external.string().min(1).optional(),
16800
+ format: exports_external.string().min(1).optional(),
16801
+ title: exports_external.string().min(1).optional(),
16802
+ description: exports_external.string().optional(),
16803
+ path: repoContentPathSchema.optional(),
16804
+ version: exports_external.string().min(1).optional()
16805
+ }).strict();
16806
+ importsRegistrySchema = exports_external.object({
16807
+ protocol: exports_external.literal("context.imports/v1"),
16808
+ imports: exports_external.record(importIdSchema, importEntrySchema)
16809
+ }).strict();
16810
+ });
16811
+
16742
16812
  // ../context/src/indexerRequirementComparison.ts
16743
16813
  function setRelation(oldValues, newValues) {
16744
16814
  const oldContained = [...oldValues].every((value) => newValues.has(value));
@@ -20608,6 +20678,7 @@ var init_src = __esm(() => {
20608
20678
  init_packageSite();
20609
20679
  init_contracts();
20610
20680
  init_contracts();
20681
+ init_imports();
20611
20682
  init_repoContent();
20612
20683
  init_indexerProvider();
20613
20684
  init_indexerRegistry();
package/plugins/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.50
1
+ 0.7.60
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "c4a",
3
3
  "description": "Start or continue a project-local knowledge workspace through one graph-routed entry.",
4
- "version": "0.7.50",
4
+ "version": "0.7.60",
5
5
  "author": {
6
6
  "name": "c4a"
7
7
  },
@@ -59,6 +59,14 @@ access policies, not additional source-order modes or production settings.
59
59
 
60
60
  ## Search available material according to the configured mode
61
61
 
62
+ Workspace `imports.yaml` and a package's optional `wikis/imports.md` list external
63
+ entrances, not bundled or verified knowledge. When a relevant article links to
64
+ `context:import/<id>`, read that declaration (at the same workspace commit for
65
+ remote reads) and use its URL through available authorized tools. Do not append
66
+ the declared path/version to the URL or visit unrelated entries. Local tools and
67
+ MCP follow the same rule; neither reading nor registration authorizes installation
68
+ or execution of a Skill/plugin. Temporary query reads do not update declarations.
69
+
62
70
  Same-repository original documents and authored Skills may be registered in
63
71
  workspace-root `repo-content.yaml`, with a `repo-content/` symlink view. They are
64
72
  another readable entrance, not duplicated approved knowledge. Select them when