@c4a/context-cli 0.7.14-beta.1 → 0.7.15

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 (26) hide show
  1. package/cli.js +1082 -1242
  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 +8 -0
  6. package/plugins/VERSION +1 -1
  7. package/plugins/claude/.claude-plugin/plugin.json +1 -1
  8. package/plugins/claude/commands/context.md +11 -0
  9. package/plugins/codex/.codex-plugin/plugin.json +2 -2
  10. package/plugins/codex/skills/context/SKILL.md +11 -0
  11. package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
  12. package/plugins/cursor/commands/c4a-context.md +11 -0
  13. package/plugins/skills/context/SKILL.md +11 -0
  14. package/providers/context/manifest.json +23 -23
  15. package/providers/context/provider.yaml +1 -1
  16. package/providers/context/resources/dialogue/knowledge-review.md +14 -6
  17. package/providers/context/resources/manuals/guides/knowledge-updates.md +50 -2
  18. package/providers/context/resources/manuals/guides/lark-resources.md +38 -0
  19. package/providers/context/resources/procedures/document-capture.md +7 -0
  20. package/providers/context/resources/procedures/knowledge-review.md +26 -5
  21. package/providers/context/resources/procedures/knowledge-updates.md +50 -2
  22. package/providers/context/resources/procedures/production-requirements.md +23 -0
  23. package/providers/context/resources/procedures/runtime-event-delivery.md +7 -1
  24. package/providers/context/resources/procedures/work-start-report.md +83 -0
  25. package/providers/context/resources/templates/work-start-report.md +7 -1
  26. package/providers/context/skills/work-production-stage/SKILL.md +3 -1
@@ -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.14-beta.1",
4
+ "version": "0.7.15",
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.14-beta.1",
3
+ "version": "0.7.15",
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.14-beta.1",
28
- "@c4a/extract": "0.7.14-beta.1",
29
- "@c4a/extract-contract": "0.7.14-beta.1",
30
- "@c4a/extract-go": "0.7.14-beta.1",
31
- "@c4a/extract-mdx": "0.7.14-beta.1",
32
- "@c4a/extract-proto": "0.7.14-beta.1",
33
- "@c4a/extract-rush": "0.7.14-beta.1",
34
- "@c4a/extract-sql": "0.7.14-beta.1",
35
- "@c4a/extract-style": "0.7.14-beta.1",
36
- "@c4a/extract-thrift": "0.7.14-beta.1",
37
- "@c4a/extract-ts": "0.7.14-beta.1",
27
+ "@c4a/context": "0.7.15",
28
+ "@c4a/extract": "0.7.15",
29
+ "@c4a/extract-contract": "0.7.15",
30
+ "@c4a/extract-go": "0.7.15",
31
+ "@c4a/extract-mdx": "0.7.15",
32
+ "@c4a/extract-proto": "0.7.15",
33
+ "@c4a/extract-rush": "0.7.15",
34
+ "@c4a/extract-sql": "0.7.15",
35
+ "@c4a/extract-style": "0.7.15",
36
+ "@c4a/extract-thrift": "0.7.15",
37
+ "@c4a/extract-ts": "0.7.15",
38
38
  "commander": "^11.0.0",
39
39
  "fast-xml-parser": "^5.10.1",
40
40
  "handlebars": "^4.7.8",
@@ -19955,6 +19955,12 @@ var getSourceType = (sourceDefinition) => {
19955
19955
  }), captureLark = (definition) => {
19956
19956
  const sourceDefinition = bindSourceType(definition.source, "lark", "captureLark source");
19957
19957
  const sourceId = getSourceName(sourceDefinition);
19958
+ for (const key of ["images", "gifs"]) {
19959
+ const value = definition.resources?.[key];
19960
+ if (value !== undefined && value !== "bundle" && value !== "reference-only") {
19961
+ throw new TypeError(`captureLark resources.${key} must be bundle or reference-only`);
19962
+ }
19963
+ }
19958
19964
  const maxBytesPerResource = definition.resources?.maxBytesPerResource ?? 20 * 1024 * 1024;
19959
19965
  const maxTotalBytes = definition.resources?.maxTotalBytes ?? 200 * 1024 * 1024;
19960
19966
  if (!Number.isSafeInteger(maxBytesPerResource) || maxBytesPerResource < 1) {
@@ -19973,6 +19979,8 @@ var getSourceType = (sourceDefinition) => {
19973
19979
  writes: [sourceSnapshotResource(sourceDefinition, "lark")],
19974
19980
  source: sourceDefinition,
19975
19981
  resources: {
19982
+ ...definition.resources?.images === undefined ? {} : { images: definition.resources.images },
19983
+ ...definition.resources?.gifs === undefined ? {} : { gifs: definition.resources.gifs },
19976
19984
  videos: definition.resources?.videos ?? "reference-only",
19977
19985
  maxBytesPerResource,
19978
19986
  maxTotalBytes
package/plugins/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.14-beta.1
1
+ 0.7.15
@@ -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.14-beta.1",
4
+ "version": "0.7.15",
5
5
  "author": {
6
6
  "name": "c4a"
7
7
  },
@@ -49,6 +49,17 @@ Within an active Context workflow, requests include, but are not limited to:
49
49
  | Commit workspace results | Save selected workspace files in local Git, without pushing or including unrelated changes. |
50
50
  | Restore a historical workspace version | Select a saved commit, restore only the agreed workspace scope and make its sources usable again. |
51
51
 
52
+ ## Preserve existing reading organization
53
+
54
+ For additions as well as navigation edits, first read the workspace AGENTS.md,
55
+ current map and relevant overview/category articles. Reuse their category intent;
56
+ a new source or product does not by itself justify a top-level menu. Follow the
57
+ knowledge-updates guidance returned by `context entry` or the current Route,
58
+ especially "Preserve established navigation intent". Include proposed top-level
59
+ changes in the work-start report or current plan for explicit human review before
60
+ applying them; reuse a concrete structure the user has already approved. Ordinary
61
+ placements within the approved organization do not require another review gate.
62
+
52
63
  ## Read the task before registering sources
53
64
 
54
65
  For a knowledge-map-only request, use the existing workspace directly. Read
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "c4a",
3
- "version": "0.7.14-beta.1",
3
+ "version": "0.7.15",
4
4
  "description": "Start or continue a project-local knowledge workspace through one graph-routed entry.",
5
5
  "author": { "name": "c4a" },
6
6
  "homepage": "https://github.com/context4ai/c4a",
@@ -10,7 +10,7 @@
10
10
  "skills": "./skills/",
11
11
  "interface": {
12
12
  "displayName": "C4A Context",
13
- "shortDescription": "Initialize and advance a local, source-linked project knowledge workspace.\nv0.7.14-beta.1",
13
+ "shortDescription": "Initialize and advance a local, source-linked project knowledge workspace.\nv0.7.15",
14
14
  "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.",
15
15
  "developerName": "c4a",
16
16
  "category": "Productivity",
@@ -47,6 +47,17 @@ Within an active Context workflow, requests include, but are not limited to:
47
47
  | Commit workspace results | Save selected workspace files in local Git, without pushing or including unrelated changes. |
48
48
  | Restore a historical workspace version | Select a saved commit, restore only the agreed workspace scope and make its sources usable again. |
49
49
 
50
+ ## Preserve existing reading organization
51
+
52
+ For additions as well as navigation edits, first read the workspace AGENTS.md,
53
+ current map and relevant overview/category articles. Reuse their category intent;
54
+ a new source or product does not by itself justify a top-level menu. Follow the
55
+ knowledge-updates guidance returned by `context entry` or the current Route,
56
+ especially "Preserve established navigation intent". Include proposed top-level
57
+ changes in the work-start report or current plan for explicit human review before
58
+ applying them; reuse a concrete structure the user has already approved. Ordinary
59
+ placements within the approved organization do not require another review gate.
60
+
50
61
  ## Read the task before registering sources
51
62
 
52
63
  For a knowledge-map-only request, use the existing workspace directly. Read
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "c4a",
3
3
  "displayName": "C4A Context",
4
- "version": "0.7.14-beta.1",
4
+ "version": "0.7.15",
5
5
  "description": "Start or continue a project-local knowledge workspace through one graph-routed entry.",
6
6
  "author": {
7
7
  "name": "Context4AI",
@@ -44,6 +44,17 @@ Within an active Context workflow, requests include, but are not limited to:
44
44
  | Commit workspace results | Save selected workspace files in local Git, without pushing or including unrelated changes. |
45
45
  | Restore a historical workspace version | Select a saved commit, restore only the agreed workspace scope and make its sources usable again. |
46
46
 
47
+ ## Preserve existing reading organization
48
+
49
+ For additions as well as navigation edits, first read the workspace AGENTS.md,
50
+ current map and relevant overview/category articles. Reuse their category intent;
51
+ a new source or product does not by itself justify a top-level menu. Follow the
52
+ knowledge-updates guidance returned by `context entry` or the current Route,
53
+ especially "Preserve established navigation intent". Include proposed top-level
54
+ changes in the work-start report or current plan for explicit human review before
55
+ applying them; reuse a concrete structure the user has already approved. Ordinary
56
+ placements within the approved organization do not require another review gate.
57
+
47
58
  ## Read the task before registering sources
48
59
 
49
60
  For a knowledge-map-only request, use the existing workspace directly. Read
@@ -47,6 +47,17 @@ Within an active Context workflow, requests include, but are not limited to:
47
47
  | Commit workspace results | Save selected workspace files in local Git, without pushing or including unrelated changes. |
48
48
  | Restore a historical workspace version | Select a saved commit, restore only the agreed workspace scope and make its sources usable again. |
49
49
 
50
+ ## Preserve existing reading organization
51
+
52
+ For additions as well as navigation edits, first read the workspace AGENTS.md,
53
+ current map and relevant overview/category articles. Reuse their category intent;
54
+ a new source or product does not by itself justify a top-level menu. Follow the
55
+ knowledge-updates guidance returned by `context entry` or the current Route,
56
+ especially "Preserve established navigation intent". Include proposed top-level
57
+ changes in the work-start report or current plan for explicit human review before
58
+ applying them; reuse a concrete structure the user has already approved. Ordinary
59
+ placements within the approved organization do not require another review gate.
60
+
50
61
  ## Read the task before registering sources
51
62
 
52
63
  For a knowledge-map-only request, use the existing workspace directly. Read
@@ -2,7 +2,7 @@
2
2
  "schema": "agent-graph.bundle.v1",
3
3
  "provider": {
4
4
  "id": "c4a/context",
5
- "version": "0.7.14-beta.1"
5
+ "version": "0.7.15"
6
6
  },
7
7
  "providerManifest": "provider.yaml",
8
8
  "graphs": [
@@ -183,7 +183,7 @@
183
183
  {
184
184
  "id": "context.sdk.lark-resources",
185
185
  "path": "resources/manuals/guides/lark-resources.md",
186
- "digest": "sha256:3a80574fd70c160b362cee23ab01cbdc3ec366b503daa11aaaf242b7cf5dbe50"
186
+ "digest": "sha256:b1ffb74a145962ff89a5db29cffd1318e4ec038b97884dcd43804170cb0f6f64"
187
187
  },
188
188
  {
189
189
  "id": "context.sdk.package-outputs",
@@ -258,7 +258,7 @@
258
258
  {
259
259
  "id": "dialogue.knowledge-review",
260
260
  "path": "resources/dialogue/knowledge-review.md",
261
- "digest": "sha256:2938843d7c07f03ea70144cd4f1800dedf2fca35610b815800c78c0ad6c2d723"
261
+ "digest": "sha256:d61cd56bc74ea0653ac6d02588115575ca7d7c21b4ac071d3868c4a2524242b6"
262
262
  },
263
263
  {
264
264
  "id": "dialogue.package-output",
@@ -288,7 +288,7 @@
288
288
  {
289
289
  "id": "procedure.document-capture",
290
290
  "path": "resources/procedures/document-capture.md",
291
- "digest": "sha256:f09100425c2b89a126c35c4490b0644519a4eee214114f2f0f52b6ea20467a04"
291
+ "digest": "sha256:9d0d1b9187bbe540a4afffb366cd549385dbf61bfaffa96ae51de848b2dd5460"
292
292
  },
293
293
  {
294
294
  "id": "procedure.homogeneous-source-review",
@@ -303,12 +303,12 @@
303
303
  {
304
304
  "id": "procedure.knowledge-review",
305
305
  "path": "resources/procedures/knowledge-review.md",
306
- "digest": "sha256:56185e8ea580015e89429a18faf3c7598f8200dc3ee458dbee04d6cbffadcb58"
306
+ "digest": "sha256:69dc39212547ea8a304c20d6fadc2bd3eb1de83eaf0c62dade8fcf5e8695c5d6"
307
307
  },
308
308
  {
309
309
  "id": "procedure.knowledge-updates",
310
310
  "path": "resources/procedures/knowledge-updates.md",
311
- "digest": "sha256:f43943fdf9265e5181c2e8cf3753d981fc9f59a44ee11b5beac404ec481344ea"
311
+ "digest": "sha256:e3bf78d43ebc4263bc5d4c08984e51af6d4df16bd2d5d708622816442b777949"
312
312
  },
313
313
  {
314
314
  "id": "procedure.note",
@@ -328,7 +328,7 @@
328
328
  {
329
329
  "id": "procedure.production-requirements",
330
330
  "path": "resources/procedures/production-requirements.md",
331
- "digest": "sha256:be0eda60679808dfe4f8fbe30639ad6f24590d8e7f2b588c233a4f611c045c92"
331
+ "digest": "sha256:a01bcdf788d9c8fd1cc6ba4ba47f19da6df99cd2397ed35eaaa3d3fdc8b6ec25"
332
332
  },
333
333
  {
334
334
  "id": "procedure.production-stage-files",
@@ -348,7 +348,7 @@
348
348
  {
349
349
  "id": "procedure.runtime-event-delivery",
350
350
  "path": "resources/procedures/runtime-event-delivery.md",
351
- "digest": "sha256:bb7e695270d9d8780fa7b7cdd4cde883cc05a5f63e97fb18088838623f4ce381"
351
+ "digest": "sha256:06cf0f47ce2d88915645dcf17012159141ce0a02d427cb7784130345928c0700"
352
352
  },
353
353
  {
354
354
  "id": "procedure.sessions",
@@ -383,7 +383,7 @@
383
383
  {
384
384
  "id": "procedure.work-start-report",
385
385
  "path": "resources/procedures/work-start-report.md",
386
- "digest": "sha256:d41a91d89eb917bcc15a601ef85d4ac5187bec18365098442e45647eb19b1e90"
386
+ "digest": "sha256:dd9de0f63a5de562f84ac1e860e8802934d5a6302e92a666028cd72e0cf18e48"
387
387
  },
388
388
  {
389
389
  "id": "procedure.workspace-commit",
@@ -413,7 +413,7 @@
413
413
  {
414
414
  "id": "template.work-start-report",
415
415
  "path": "resources/templates/work-start-report.md",
416
- "digest": "sha256:fb7c5bba6d1c6b9f71e28539c5edda63c162e6a3ccc6623d81e6d649638c8802"
416
+ "digest": "sha256:f9acb9a959dee3d93e1877cd9737dfff7702733ae2121b454a9cc90adbaf89b2"
417
417
  }
418
418
  ],
419
419
  "schemas": [
@@ -570,7 +570,7 @@
570
570
  },
571
571
  {
572
572
  "path": "provider.yaml",
573
- "digest": "sha256:820cc81bd72613211c7f1a48406bc881f6f4baf09ef415e635aa8da01aa08f0a"
573
+ "digest": "sha256:a2518b2b208567cf4ef63ab83d7c087de2f9ace2043e0e2b07f2218337d353f3"
574
574
  },
575
575
  {
576
576
  "path": "resources/contracts/indexer-provider-guide.yaml",
@@ -602,7 +602,7 @@
602
602
  },
603
603
  {
604
604
  "path": "resources/dialogue/knowledge-review.md",
605
- "digest": "sha256:2938843d7c07f03ea70144cd4f1800dedf2fca35610b815800c78c0ad6c2d723"
605
+ "digest": "sha256:d61cd56bc74ea0653ac6d02588115575ca7d7c21b4ac071d3868c4a2524242b6"
606
606
  },
607
607
  {
608
608
  "path": "resources/dialogue/package-output.md",
@@ -626,11 +626,11 @@
626
626
  },
627
627
  {
628
628
  "path": "resources/manuals/guides/knowledge-updates.md",
629
- "digest": "sha256:fe8c9e4dbe7413bce3c2007bf230f1312fca31de69d434d0c41171a27e1a68f5"
629
+ "digest": "sha256:3fa4b18e1919578e8939fffba40d250e8898ed6e85376fd2758abe3d12b908d8"
630
630
  },
631
631
  {
632
632
  "path": "resources/manuals/guides/lark-resources.md",
633
- "digest": "sha256:3a80574fd70c160b362cee23ab01cbdc3ec366b503daa11aaaf242b7cf5dbe50"
633
+ "digest": "sha256:b1ffb74a145962ff89a5db29cffd1318e4ec038b97884dcd43804170cb0f6f64"
634
634
  },
635
635
  {
636
636
  "path": "resources/manuals/guides/markdown-indexer-skill-authoring.md",
@@ -690,7 +690,7 @@
690
690
  },
691
691
  {
692
692
  "path": "resources/procedures/document-capture.md",
693
- "digest": "sha256:f09100425c2b89a126c35c4490b0644519a4eee214114f2f0f52b6ea20467a04"
693
+ "digest": "sha256:9d0d1b9187bbe540a4afffb366cd549385dbf61bfaffa96ae51de848b2dd5460"
694
694
  },
695
695
  {
696
696
  "path": "resources/procedures/homogeneous-source-review.md",
@@ -702,11 +702,11 @@
702
702
  },
703
703
  {
704
704
  "path": "resources/procedures/knowledge-review.md",
705
- "digest": "sha256:56185e8ea580015e89429a18faf3c7598f8200dc3ee458dbee04d6cbffadcb58"
705
+ "digest": "sha256:69dc39212547ea8a304c20d6fadc2bd3eb1de83eaf0c62dade8fcf5e8695c5d6"
706
706
  },
707
707
  {
708
708
  "path": "resources/procedures/knowledge-updates.md",
709
- "digest": "sha256:f43943fdf9265e5181c2e8cf3753d981fc9f59a44ee11b5beac404ec481344ea"
709
+ "digest": "sha256:e3bf78d43ebc4263bc5d4c08984e51af6d4df16bd2d5d708622816442b777949"
710
710
  },
711
711
  {
712
712
  "path": "resources/procedures/note.md",
@@ -722,7 +722,7 @@
722
722
  },
723
723
  {
724
724
  "path": "resources/procedures/production-requirements.md",
725
- "digest": "sha256:be0eda60679808dfe4f8fbe30639ad6f24590d8e7f2b588c233a4f611c045c92"
725
+ "digest": "sha256:a01bcdf788d9c8fd1cc6ba4ba47f19da6df99cd2397ed35eaaa3d3fdc8b6ec25"
726
726
  },
727
727
  {
728
728
  "path": "resources/procedures/production-stage-files.md",
@@ -738,7 +738,7 @@
738
738
  },
739
739
  {
740
740
  "path": "resources/procedures/runtime-event-delivery.md",
741
- "digest": "sha256:bb7e695270d9d8780fa7b7cdd4cde883cc05a5f63e97fb18088838623f4ce381"
741
+ "digest": "sha256:06cf0f47ce2d88915645dcf17012159141ce0a02d427cb7784130345928c0700"
742
742
  },
743
743
  {
744
744
  "path": "resources/procedures/sessions.md",
@@ -766,7 +766,7 @@
766
766
  },
767
767
  {
768
768
  "path": "resources/procedures/work-start-report.md",
769
- "digest": "sha256:d41a91d89eb917bcc15a601ef85d4ac5187bec18365098442e45647eb19b1e90"
769
+ "digest": "sha256:dd9de0f63a5de562f84ac1e860e8802934d5a6302e92a666028cd72e0cf18e48"
770
770
  },
771
771
  {
772
772
  "path": "resources/procedures/workspace-commit.md",
@@ -790,7 +790,7 @@
790
790
  },
791
791
  {
792
792
  "path": "resources/templates/work-start-report.md",
793
- "digest": "sha256:fb7c5bba6d1c6b9f71e28539c5edda63c162e6a3ccc6623d81e6d649638c8802"
793
+ "digest": "sha256:f9acb9a959dee3d93e1877cd9737dfff7702733ae2121b454a9cc90adbaf89b2"
794
794
  },
795
795
  {
796
796
  "path": "resources/views/package-current.yaml",
@@ -862,12 +862,12 @@
862
862
  },
863
863
  {
864
864
  "path": "skills/work-production-stage/SKILL.md",
865
- "digest": "sha256:5bb250f42d5d28243daca30427b5fd9db52127460862748fc36935f0e0d0f754"
865
+ "digest": "sha256:cacf6ce1b106cfe7af7b07009e6a3658c04007c6eb49127069fa16e3b2892f31"
866
866
  }
867
867
  ],
868
868
  "graphDependencies": {
869
869
  "indexer": [],
870
870
  "workspace": []
871
871
  },
872
- "digest": "sha256:0ce9bbc43630874ad90cf5663348b2c6f96dcdf7dd911f5e6b33c71154a3ea9e"
872
+ "digest": "sha256:40dfe816123dd5ab631d088d2c2337290dbc91516bb968b7be5f31be45282f6b"
873
873
  }
@@ -1,6 +1,6 @@
1
1
  schema: agent-graph.provider.v1
2
2
  id: c4a/context
3
- version: 0.7.14-beta.1
3
+ version: 0.7.15
4
4
  name: Context workflow
5
5
  description: Internal work contract for Context knowledge workspaces.
6
6
  graphs:
@@ -10,17 +10,18 @@ Explain that Review is the boundary between draft candidates and approved
10
10
  Markdown. In ordinary mode:
11
11
 
12
12
  1. open the complete current Review report;
13
- 2. let the user approve or reject candidates;
13
+ 2. let the user approve, reject, or request revisions to candidates;
14
14
  3. ask them to copy the review code back into the conversation; and
15
15
  4. apply only that exact review code through the returned command.
16
16
 
17
17
  The user does not need to create a payload file; the Agent may write the pasted
18
18
  review code to ignored scratch storage for the CLI command. Preserve it exactly;
19
- do not decode, regenerate, summarize, or edit it. Each segment is at most 980
20
- characters. If there are multiple segments, collect all of them and write one
21
- segment per line in the same input file before applying once. Never apply a
22
- partial set. If CLI reports missing, mixed, damaged, or stale segments, follow
23
- its diagnostic; ask for missing segments or a fresh review code as appropriate.
19
+ do not decode, regenerate, summarize, or edit it. The code carries decisions and
20
+ revision instructions together. If it exceeds 1,000 characters, use a direct
21
+ reply (mention the Bot when relevant) instead of a length-limited form. Older
22
+ segmented codes still require every segment in the same input file. If the CLI
23
+ reports damaged or stale feedback, follow its diagnostic and request a fresh
24
+ report/code; never repair a code by hand.
24
25
  Never derive a payload
25
26
  from HTML, candidate ids, snapshots, or a default decision.
26
27
 
@@ -50,3 +51,10 @@ the index's current scope template. Approve only pages actually reviewed; leave
50
51
  undecided and repair pages pending. Do not open HTML or persist a parallel review
51
52
  ledger. A partial review code in ordinary mode likewise leaves pending pages
52
53
  unchanged; all segments of that code are still required.
54
+
55
+ After applying feedback, follow each returned repair command with the user's
56
+ exact instruction. Repairs remain pending; neither copying nor applying the
57
+ code approves them. Pending instructions are retained by the CLI and exposed in
58
+ the current review resource after a session restart. Re-read and review the
59
+ resulting candidate before approval. Do not silently replace a revision request
60
+ with rejection or bulk approval.
@@ -200,6 +200,48 @@ coverage by mechanically placing every new page under an unrelated catch-all.
200
200
  Build reports missing bindings for the Agent to resolve; it does not classify
201
201
  content. Moving a menu entry does not change the article URL.
202
202
 
203
+ ### Preserve established navigation intent
204
+
205
+ Before placing new knowledge, read the workspace's AGENTS.md, current
206
+ `src/knowledge-map.yaml`, existing overview pages and relevant category/article
207
+ bodies. Reuse any settled directory intent in the current plan. Establish what
208
+ each affected category helps readers do and why adjacent categories are separate;
209
+ do not infer this from labels alone. Read only affected branches and enough
210
+ neighboring content to distinguish them, not the entire library on every update.
211
+ If intent remains ambiguous, state the proposed interpretation in the plan.
212
+
213
+ Prefer, in order: revise an existing article; add a page to a matching category;
214
+ add a coherent child category; propose a top-level change only when existing
215
+ categories cannot serve a distinct, lasting reader need. Do not create a top-level
216
+ category merely because a source, repository, product, team or batch is new.
217
+ For example, a new assistant's usage guide, frontend integration and runtime
218
+ architecture can belong in existing usage, frontend and backend categories, with
219
+ cross-links for the shared product. Keep them together only when the site's
220
+ established organizing principle supports that choice.
221
+
222
+ In the work-start report or current plan, briefly state the affected articles'
223
+ intended placements and reused category intent. For proposed top-level additions,
224
+ renames, removals or changes of purpose, show the before/after tree, why reuse is
225
+ insufficient, affected existing pages and reading order. Present that change for
226
+ human review before applying it. This uses the existing report feedback where
227
+ available; do not add a new CLI state, schema field or routine per-article gate.
228
+ Explicit user approval of that concrete structure is sufficient; do not ask again.
229
+ General permission to write knowledge or organize batches is not approval to
230
+ change the site's top-level organization. If the need emerges after report
231
+ approval, update the same plan and ask about that structural change only; continue
232
+ independent work within the approved organization.
233
+
234
+ Before delivery, compare the resulting map with the approved plan: article
235
+ placement matches its main reader task, titles match the bodies, sibling ordering
236
+ is deliberate, and directories are neither empty nor accidental duplicates.
237
+ Honor the workspace's chosen directory depth and homogeneous sibling convention;
238
+ where it requires directory-only or article-only siblings, do not mix them.
239
+ Use an "Other" group last only for genuinely useful residual content, not to
240
+ avoid classification. Apply supported map adjustments through the current CLI
241
+ flow, retaining article identities and URLs. Record lasting category intent
242
+ briefly in the workspace AGENTS.md or existing organization guide; do not create
243
+ a separate taxonomy ledger or put planning instructions in reader articles.
244
+
203
245
  ### Reader tasks, names and reading order
204
246
 
205
247
  Read the affected articles' bodies before changing their categories or titles.
@@ -257,8 +299,8 @@ change does not require a prose rewrite or file migration; changing its label do
257
299
  not silently rename the approved article. Needed title or content revisions use
258
300
  the existing revision and Review flow. Splits and merges use ordinary article
259
301
  tasks, link repair and any explicit retirement after replacement content is
260
- delivered. These are Agent editorial decisions, not new CLI checks or approval
261
- gates.
302
+ delivered. These are Agent editorial decisions, not new CLI checks or routine per-article
303
+ approval gates. Top-level changes follow the focused review described above.
262
304
 
263
305
  ## Edit one section or review part of a batch
264
306
 
@@ -283,6 +325,12 @@ input without that flag to continue. A preview is not approval and does not make
283
325
  a stale revision valid.
284
326
 
285
327
  Review can approve checked pages while leaving repair pages pending. The HTML
328
+ report shows the current site navigation, candidate changes and expected file
329
+ paths. Unchanged approved pages retain their titles with omitted bodies. Enter
330
+ revision instructions directly in the report; the copied code and following
331
+ instruction lines must be returned together without edits. The CLI binds them to
332
+ the reviewed content and baseline and returns repair commands while leaving
333
+ those pages pending. Changed candidates require a fresh review. The HTML
286
334
  review code includes pending positions; managed Review provides the same current
287
335
  scope as a JSON template. Send decisions only for pages actually reviewed. Omit
288
336
  means a durable exclusion, not repair. Partial approval alone does not build.
@@ -130,3 +130,41 @@ fixed. Accepted failures remain visible as warnings and unavailable-resource
130
130
  notices; they are never represented as downloaded evidence. Review shows
131
131
  available previews, references, and warnings so the human or managed policy can
132
132
  assess the page with its non-text evidence.
133
+
134
+ ## Image choices for a production task
135
+
136
+ The work-start report asks once when a task contains more than 30 distinct images
137
+ and has no explicit image policy. The choices are intelligent conversion and
138
+ inclusion (recommended), include all as images with compression, or include none
139
+ with placeholders. Count the whole task, not each capture or writing batch.
140
+ Review reports show the resulting image handling and any fallbacks.
141
+
142
+ To skip image acquisition while preserving visible source placeholders:
143
+
144
+ ```ts
145
+ captureLark({ source: handbook, resources: { images: "reference-only" } });
146
+ ```
147
+
148
+ To retain static images but exclude GIF files:
149
+
150
+ ```ts
151
+ captureLark({ source: handbook, resources: { gifs: "reference-only" } });
152
+ ```
153
+
154
+ Both fields also accept `bundle`; omitted fields retain normal capture behavior.
155
+ Known GIF metadata avoids downloading; when a source only supplies an opaque
156
+ media token, identification may require downloading the file. Such a GIF is then
157
+ excluded from the snapshot assets and knowledge, rather than decoded or retained.
158
+ Existing evidence is not deleted by changing a policy. Already approved image
159
+ references must be revised through the normal Review flow to change their content.
160
+
161
+ Inclusion does not mean lossless original-byte delivery. The package optimizer
162
+ preserves animations without decoding every frame or silently flattening them.
163
+ Codec failures and images that cannot fit delivery budgets become visible output
164
+ placeholders with a build warning; approved source bytes remain unchanged.
165
+ Do not rewrite approved prose to repair a codec error or disable pixel safety
166
+ limits. The reading meaning of an image is handled in writing and Review.
167
+
168
+ Source document links can be retained for viewing under the reader's permissions.
169
+ Temporary signed media links are not durable image hosting. Do not embed access
170
+ tokens in generated pages or claim that excluded images have been interpreted.
@@ -62,3 +62,10 @@ are available while another capture remains pending. Keep unresolved sources in
62
62
  `pending_scopes`; do not cite their unavailable snapshots. The Route returns to
63
63
  pending capture after the active production/review work, before delivery completes.
64
64
  This does not mark failed captures as complete or waive source-read authorization.
65
+
66
+ For image-heavy tasks, reuse the image choice in the work-start report. When
67
+ source descriptors already show more than 30 distinct images across the task,
68
+ resolve that question before bulk media acquisition. If counts emerge only from
69
+ capture, stop further image processing to confirm the choice during planning.
70
+ Use explicit image/GIF reference-only policies for exclusions; never substitute
71
+ temporary signed media URLs as permanent public image links.
@@ -23,7 +23,7 @@ authorization.
23
23
  Without explicit session-managed authority:
24
24
 
25
25
  - open the report returned by the route;
26
- - let the user publish or durably omit candidates;
26
+ - let the user approve, reject, or request revisions to candidates;
27
27
  - apply the exact copied review code through the returned review apply command; and
28
28
  - retain the exact report reference and reviewed scope in this conversation for
29
29
  the final completion summary.
@@ -58,10 +58,24 @@ Use the explicit retirement preview after replacement delivery, and repair its
58
58
  reported incoming references. Navigation removal alone does not remove content
59
59
  from search or packages. A renamed menu does not require a new article identity.
60
60
 
61
- The Review UI names the internal `rejected` decision **Omit** because it is a
62
- durable content decision, not a request to rewrite the page. When a page needs
63
- changes, leave that page pending and use `context revise` so the owning
64
- Author or Composer produces a new Candidate through the same lifecycle.
61
+ The report opens on a change overview, with the existing navigation and an
62
+ expected workspace file tree. The CLI collects approved titles, navigation and
63
+ candidate bodies; it renders their changes mechanically. Do not write a second
64
+ summary in place of candidate content or rewrite the HTML. New workspaces show
65
+ all candidate pages as New. Existing unchanged pages show titles only; changed
66
+ blocks and previous text remain available for comparison. Navigation without a
67
+ Git baseline is labelled as current context, not an invented historical diff.
68
+
69
+ Approve accepts a candidate. Reject durably omits it; it does not request a
70
+ rewrite or retire an approved article. Entering revision instructions requests
71
+ repair and locks the other choices for that page until cancelled. Bulk approval
72
+ requires confirmation and affects only undecided pages. When the report contains
73
+ new top-level categories, the dialog lists them and requires explicit
74
+ acknowledgment plus an eight-second wait before confirmation is enabled.
75
+ New descendant pages under an existing category do not trigger this extra step. The copied code binds
76
+ the candidate scope, exact content, displayed baseline and revision instructions;
77
+ the CLI validates these together before writing any decision. Follow returned
78
+ repair commands, then obtain review of the repaired candidates.
65
79
 
66
80
  Use the affected page's `Repair` command in the review material, replacing only
67
81
  the correction instruction. Current candidates are repaired within this batch;
@@ -132,3 +146,10 @@ only its own titles. When revising or merging, preserve useful existing detail
132
146
  instead of replacing it with generic lookup advice. Repair affected pages or
133
147
  use the current planning route for missing topics. These are Agent judgments,
134
148
  not minimum article counts, a new coverage ledger or an extra CLI approval gate.
149
+
150
+ For image-heavy work, show the selected task image policy and actual retained,
151
+ converted and placeholder counts from the candidates and capture reports. Explain
152
+ any fallback affecting reader understanding. Reuse the planning choice; do not
153
+ turn image handling into another per-article approval. Missing image content must
154
+ not be presented as read or fully covered. Build-only media fallbacks are reported
155
+ in the build receipt and do not rewrite approved evidence.