@c4a/context-cli 0.7.14 → 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.
@@ -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",
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",
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",
28
- "@c4a/extract": "0.7.14",
29
- "@c4a/extract-contract": "0.7.14",
30
- "@c4a/extract-go": "0.7.14",
31
- "@c4a/extract-mdx": "0.7.14",
32
- "@c4a/extract-proto": "0.7.14",
33
- "@c4a/extract-rush": "0.7.14",
34
- "@c4a/extract-sql": "0.7.14",
35
- "@c4a/extract-style": "0.7.14",
36
- "@c4a/extract-thrift": "0.7.14",
37
- "@c4a/extract-ts": "0.7.14",
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
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",
4
+ "version": "0.7.15",
5
5
  "author": {
6
6
  "name": "c4a"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "c4a",
3
- "version": "0.7.14",
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",
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",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "c4a",
3
3
  "displayName": "C4A Context",
4
- "version": "0.7.14",
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",
@@ -2,7 +2,7 @@
2
2
  "schema": "agent-graph.bundle.v1",
3
3
  "provider": {
4
4
  "id": "c4a/context",
5
- "version": "0.7.14"
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:6132bad75635e1ef388c5bf7dd6cd0d3d1fc521a16b44c3bc4d934a7467e516e"
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:7e27909f3e0209ff88c98a87db8cab3bbf84a915ae2abb5c2453b7525315e45e"
386
+ "digest": "sha256:dd9de0f63a5de562f84ac1e860e8802934d5a6302e92a666028cd72e0cf18e48"
387
387
  },
388
388
  {
389
389
  "id": "procedure.workspace-commit",
@@ -570,7 +570,7 @@
570
570
  },
571
571
  {
572
572
  "path": "provider.yaml",
573
- "digest": "sha256:d7932685876d1ce6ae7d06442f8d59249de936893d22cf46fcca25a8949ba18f"
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:263410c1a4c34ae843297552b6575fa23a780c4095c694e03cc64e9cb292325c"
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:6132bad75635e1ef388c5bf7dd6cd0d3d1fc521a16b44c3bc4d934a7467e516e"
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:7e27909f3e0209ff88c98a87db8cab3bbf84a915ae2abb5c2453b7525315e45e"
769
+ "digest": "sha256:dd9de0f63a5de562f84ac1e860e8802934d5a6302e92a666028cd72e0cf18e48"
770
770
  },
771
771
  {
772
772
  "path": "resources/procedures/workspace-commit.md",
@@ -869,5 +869,5 @@
869
869
  "indexer": [],
870
870
  "workspace": []
871
871
  },
872
- "digest": "sha256:4b30698cc222807e84c58c14e0d5a367786e65d3173aca206ee68ab3b44bd052"
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
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.
@@ -325,6 +325,12 @@ input without that flag to continue. A preview is not approval and does not make
325
325
  a stale revision valid.
326
326
 
327
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
328
334
  review code includes pending positions; managed Review provides the same current
329
335
  scope as a JSON template. Send decisions only for pages actually reviewed. Omit
330
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.
@@ -325,6 +325,12 @@ input without that flag to continue. A preview is not approval and does not make
325
325
  a stale revision valid.
326
326
 
327
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
328
334
  review code includes pending positions; managed Review provides the same current
329
335
  scope as a JSON template. Send decisions only for pages actually reviewed. Omit
330
336
  means a durable exclusion, not repair. Partial approval alone does not build.
@@ -59,3 +59,26 @@ contains `path`, `question`, `sources` and `batch`, with optional `brief` and
59
59
  command to prepare those tasks without a separate investigation-plan submission.
60
60
  This does not approve the report or permit writing before user feedback.
61
61
  When targets are unclear, use normal preparation and investigate the skeletons.
62
+
63
+ ## Configured coverage and the current request
64
+
65
+ `src/indexers.yaml` describes the workspace's standing coverage configuration.
66
+ Source registration or presence in that configuration does not, by itself, mean
67
+ that the source needs investigation again for this request. For a bounded document
68
+ addition or revision, identify its reader task and actual evidence dependencies;
69
+ reuse existing approved articles and applicable completed work. Do not broaden a
70
+ document task to unrelated code repositories merely because they are configured.
71
+
72
+ In planning and completion reports distinguish:
73
+ - work requested and completed in this task;
74
+ - specific content gaps established by reading, with their affected reader tasks;
75
+ - source/environment failures, and whether this task depends on those sources.
76
+
77
+ A `pending_scopes` count is workflow state, not a count of missing topics,
78
+ repositories to rewrite, or articles to produce. A Git spawn/baseline-read error
79
+ means source availability could not be checked; it does not prove that existing
80
+ knowledge is absent or obsolete. If unrelated configured sources remain blocked,
81
+ say so as a workflow limitation rather than announcing new investigation work.
82
+ Do not delete configured sources, invent exclusions, clear stage files, or mark
83
+ unread material investigated to make the current task appear complete. Follow the
84
+ returned resolution action when the workflow still needs a decision.
@@ -22,12 +22,18 @@ remove the Agent host's network approval boundary. Satisfy that boundary by
22
22
  requesting host network escalation in the tool invocation that executes the
23
23
  flush, not by turning it into another conversational approval gate.
24
24
 
25
- Before requesting network access, run:
25
+ When first requesting host network access, or diagnosing an unknown destination, run:
26
26
 
27
27
  ```bash
28
28
  context logs plan --format json
29
29
  ```
30
30
 
31
+ When delivery is already authorized and the fixed destination and data policy are
32
+ unchanged, execute `context logs flush --format json` directly. A prior plan
33
+ receipt is not a CLI prerequisite. Do not repeatedly plan or ask for consent on
34
+ retries. `invalid_batch` from the command bridge is local protocol rejection before
35
+ HTTP; repair/update the compatible sink client rather than retrying network access.
36
+
31
37
  The plan is the audit contract. It reports the canonical workspace outbox,
32
38
  normally `.tmp/context-runtime/logs/outbox.jsonl`, the event count and kinds,
33
39
  the allowlisted property names, the sink command, and the resolved HTTP
@@ -78,6 +78,42 @@ Estimate timing or savings only when supported by measurements and conditions.
78
78
  For a small addition to an existing site, describe only the affected reading
79
79
  position; reuse its layout and delivery choices instead of proposing them again.
80
80
 
81
+ ## Confirm image handling for large tasks
82
+
83
+ Before bulk image interpretation or article writing, count distinct image resources
84
+ across the current authorized task (all its sources, not each document or batch).
85
+ Use source descriptors and capture reports; do not download images just to count
86
+ or recount unchanged snapshots. If the count exceeds 30 and the user has not
87
+ already selected a policy for this task, include one image-handling question in
88
+ this planning confirmation, in the user's language:
89
+
90
+ - **Process all (default): intelligent conversion and inclusion.** Read images as
91
+ needed; retain useful images or convert suitable content into text, tables or
92
+ diagrams. Conversion is an Agent writing decision supported by actual reading.
93
+ - **Include all:** retain the image presentation; automatic compression and safe
94
+ processing still apply. An image that cannot be processed within limits becomes
95
+ a visible placeholder, not an unlimited original-byte delivery promise.
96
+ - **Include none (placeholders):** skip image bytes and interpretation; preserve
97
+ placeholders and source document links. Do not claim image-content coverage.
98
+
99
+ Default means the recommended option, not consent after silence. Wait for this
100
+ choice together with the existing plan confirmation; never add per-image or
101
+ per-batch approval. Reuse an explicit choice and any GIF exclusions throughout
102
+ retries. Persist the choice in the existing plan/requirements. If discovery only
103
+ reveals the threshold after initial capture, ask before further image work and
104
+ writing; do not restart completed capture solely to show this question.
105
+
106
+ Report the known count and unknown resources separately. If the scale was unknown
107
+ and later crosses 30, ask once at that point. At content Review summarize retained,
108
+ converted and placeholder outcomes with reasons, including automatic fallbacks;
109
+ do not ask the same policy question again. A later material policy change belongs
110
+ in the existing plan and normal Review, not a separate approval protocol.
111
+
112
+ Use `captureLark.resources.images: reference-only` for excluded images and
113
+ `resources.gifs: reference-only` for an explicit GIF exclusion. Both inclusion
114
+ choices use normal capture and package optimization; the Agent controls semantic
115
+ conversion. See the Lark resource guide for configuration and limitations.
116
+
81
117
  ## Review navigation changes in context
82
118
 
83
119
  Read the knowledge-updates guidance on preserving established navigation intent.
@@ -119,3 +155,39 @@ Reports, plans, skills, candidates, confirmation and transaction process stay in
119
155
  `.tmp`. Only formal results and necessary long-term source/requirement decisions
120
156
  belong in non-temporary storage. On a new machine, start new production from those
121
157
  formal inputs, without requiring the previous report or production session.
158
+
159
+ ## Inputs for the content Review report
160
+
161
+ Keep approved article titles, paths, reading order and intended placements in the
162
+ normal article plan and knowledge map. Complete their existing structure workflow
163
+ before presenting content Review. The CLI collects those inputs and the actual
164
+ candidate bodies to render the report; do not ask an Agent to fabricate a site
165
+ snapshot, infer approved content from titles, or maintain a second report model.
166
+ For a new workspace, plan the initial categories through the same workflow; the
167
+ report will label its candidate pages New. If it shows unplaced articles, finish
168
+ those placements rather than presenting the fallback as an approved new category.
169
+ Content Review displays changes; it does not replace specific authorization for
170
+ a top-level navigation change already required by this procedure.
171
+
172
+ ## Configured coverage and the current request
173
+
174
+ `src/indexers.yaml` describes the workspace's standing coverage configuration.
175
+ Source registration or presence in that configuration does not, by itself, mean
176
+ that the source needs investigation again for this request. For a bounded document
177
+ addition or revision, identify its reader task and actual evidence dependencies;
178
+ reuse existing approved articles and applicable completed work. Do not broaden a
179
+ document task to unrelated code repositories merely because they are configured.
180
+
181
+ In planning and completion reports distinguish:
182
+ - work requested and completed in this task;
183
+ - specific content gaps established by reading, with their affected reader tasks;
184
+ - source/environment failures, and whether this task depends on those sources.
185
+
186
+ A `pending_scopes` count is workflow state, not a count of missing topics,
187
+ repositories to rewrite, or articles to produce. A Git spawn/baseline-read error
188
+ means source availability could not be checked; it does not prove that existing
189
+ knowledge is absent or obsolete. If unrelated configured sources remain blocked,
190
+ say so as a workflow limitation rather than announcing new investigation work.
191
+ Do not delete configured sources, invent exclusions, clear stage files, or mark
192
+ unread material investigated to make the current task appear complete. Follow the
193
+ returned resolution action when the workflow still needs a decision.