@c4a/context 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.
|
@@ -194,6 +194,48 @@ coverage by mechanically placing every new page under an unrelated catch-all.
|
|
|
194
194
|
Build reports missing bindings for the Agent to resolve; it does not classify
|
|
195
195
|
content. Moving a menu entry does not change the article URL.
|
|
196
196
|
|
|
197
|
+
### Preserve established navigation intent
|
|
198
|
+
|
|
199
|
+
Before placing new knowledge, read the workspace's AGENTS.md, current
|
|
200
|
+
`src/knowledge-map.yaml`, existing overview pages and relevant category/article
|
|
201
|
+
bodies. Reuse any settled directory intent in the current plan. Establish what
|
|
202
|
+
each affected category helps readers do and why adjacent categories are separate;
|
|
203
|
+
do not infer this from labels alone. Read only affected branches and enough
|
|
204
|
+
neighboring content to distinguish them, not the entire library on every update.
|
|
205
|
+
If intent remains ambiguous, state the proposed interpretation in the plan.
|
|
206
|
+
|
|
207
|
+
Prefer, in order: revise an existing article; add a page to a matching category;
|
|
208
|
+
add a coherent child category; propose a top-level change only when existing
|
|
209
|
+
categories cannot serve a distinct, lasting reader need. Do not create a top-level
|
|
210
|
+
category merely because a source, repository, product, team or batch is new.
|
|
211
|
+
For example, a new assistant's usage guide, frontend integration and runtime
|
|
212
|
+
architecture can belong in existing usage, frontend and backend categories, with
|
|
213
|
+
cross-links for the shared product. Keep them together only when the site's
|
|
214
|
+
established organizing principle supports that choice.
|
|
215
|
+
|
|
216
|
+
In the work-start report or current plan, briefly state the affected articles'
|
|
217
|
+
intended placements and reused category intent. For proposed top-level additions,
|
|
218
|
+
renames, removals or changes of purpose, show the before/after tree, why reuse is
|
|
219
|
+
insufficient, affected existing pages and reading order. Present that change for
|
|
220
|
+
human review before applying it. This uses the existing report feedback where
|
|
221
|
+
available; do not add a new CLI state, schema field or routine per-article gate.
|
|
222
|
+
Explicit user approval of that concrete structure is sufficient; do not ask again.
|
|
223
|
+
General permission to write knowledge or organize batches is not approval to
|
|
224
|
+
change the site's top-level organization. If the need emerges after report
|
|
225
|
+
approval, update the same plan and ask about that structural change only; continue
|
|
226
|
+
independent work within the approved organization.
|
|
227
|
+
|
|
228
|
+
Before delivery, compare the resulting map with the approved plan: article
|
|
229
|
+
placement matches its main reader task, titles match the bodies, sibling ordering
|
|
230
|
+
is deliberate, and directories are neither empty nor accidental duplicates.
|
|
231
|
+
Honor the workspace's chosen directory depth and homogeneous sibling convention;
|
|
232
|
+
where it requires directory-only or article-only siblings, do not mix them.
|
|
233
|
+
Use an "Other" group last only for genuinely useful residual content, not to
|
|
234
|
+
avoid classification. Apply supported map adjustments through the current CLI
|
|
235
|
+
flow, retaining article identities and URLs. Record lasting category intent
|
|
236
|
+
briefly in the workspace AGENTS.md or existing organization guide; do not create
|
|
237
|
+
a separate taxonomy ledger or put planning instructions in reader articles.
|
|
238
|
+
|
|
197
239
|
### Reader tasks, names and reading order
|
|
198
240
|
|
|
199
241
|
Read the affected articles' bodies before changing their categories or titles.
|
|
@@ -251,8 +293,8 @@ change does not require a prose rewrite or file migration; changing its label do
|
|
|
251
293
|
not silently rename the approved article. Needed title or content revisions use
|
|
252
294
|
the existing revision and Review flow. Splits and merges use ordinary article
|
|
253
295
|
tasks, link repair and any explicit retirement after replacement content is
|
|
254
|
-
delivered. These are Agent editorial decisions, not new CLI checks or
|
|
255
|
-
gates.
|
|
296
|
+
delivered. These are Agent editorial decisions, not new CLI checks or routine per-article
|
|
297
|
+
approval gates. Top-level changes follow the focused review described above.
|
|
256
298
|
|
|
257
299
|
## Edit one section or review part of a batch
|
|
258
300
|
|
|
@@ -277,6 +319,12 @@ input without that flag to continue. A preview is not approval and does not make
|
|
|
277
319
|
a stale revision valid.
|
|
278
320
|
|
|
279
321
|
Review can approve checked pages while leaving repair pages pending. The HTML
|
|
322
|
+
report shows the current site navigation, candidate changes and expected file
|
|
323
|
+
paths. Unchanged approved pages retain their titles with omitted bodies. Enter
|
|
324
|
+
revision instructions directly in the report; the copied code and following
|
|
325
|
+
instruction lines must be returned together without edits. The CLI binds them to
|
|
326
|
+
the reviewed content and baseline and returns repair commands while leaving
|
|
327
|
+
those pages pending. Changed candidates require a fresh review. The HTML
|
|
280
328
|
review code includes pending positions; managed Review provides the same current
|
|
281
329
|
scope as a JSON template. Send decisions only for pages actually reviewed. Omit
|
|
282
330
|
means a durable exclusion, not repair. Partial approval alone does not build.
|
|
@@ -124,3 +124,41 @@ fixed. Accepted failures remain visible as warnings and unavailable-resource
|
|
|
124
124
|
notices; they are never represented as downloaded evidence. Review shows
|
|
125
125
|
available previews, references, and warnings so the human or managed policy can
|
|
126
126
|
assess the page with its non-text evidence.
|
|
127
|
+
|
|
128
|
+
## Image choices for a production task
|
|
129
|
+
|
|
130
|
+
The work-start report asks once when a task contains more than 30 distinct images
|
|
131
|
+
and has no explicit image policy. The choices are intelligent conversion and
|
|
132
|
+
inclusion (recommended), include all as images with compression, or include none
|
|
133
|
+
with placeholders. Count the whole task, not each capture or writing batch.
|
|
134
|
+
Review reports show the resulting image handling and any fallbacks.
|
|
135
|
+
|
|
136
|
+
To skip image acquisition while preserving visible source placeholders:
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
captureLark({ source: handbook, resources: { images: "reference-only" } });
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
To retain static images but exclude GIF files:
|
|
143
|
+
|
|
144
|
+
```ts
|
|
145
|
+
captureLark({ source: handbook, resources: { gifs: "reference-only" } });
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Both fields also accept `bundle`; omitted fields retain normal capture behavior.
|
|
149
|
+
Known GIF metadata avoids downloading; when a source only supplies an opaque
|
|
150
|
+
media token, identification may require downloading the file. Such a GIF is then
|
|
151
|
+
excluded from the snapshot assets and knowledge, rather than decoded or retained.
|
|
152
|
+
Existing evidence is not deleted by changing a policy. Already approved image
|
|
153
|
+
references must be revised through the normal Review flow to change their content.
|
|
154
|
+
|
|
155
|
+
Inclusion does not mean lossless original-byte delivery. The package optimizer
|
|
156
|
+
preserves animations without decoding every frame or silently flattening them.
|
|
157
|
+
Codec failures and images that cannot fit delivery budgets become visible output
|
|
158
|
+
placeholders with a build warning; approved source bytes remain unchanged.
|
|
159
|
+
Do not rewrite approved prose to repair a codec error or disable pixel safety
|
|
160
|
+
limits. The reading meaning of an image is handled in writing and Review.
|
|
161
|
+
|
|
162
|
+
Source document links can be retained for viewing under the reader's permissions.
|
|
163
|
+
Temporary signed media links are not durable image hosting. Do not embed access
|
|
164
|
+
tokens in generated pages or claim that excluded images have been interpreted.
|
|
@@ -351,8 +351,10 @@ visible-Skill claim nor the Route report authorizes Bundle materialization.
|
|
|
351
351
|
## Contract overlay validation
|
|
352
352
|
|
|
353
353
|
`validate-indexer-contract-overlays` recomputes the complete data-only overlay
|
|
354
|
-
against the
|
|
355
|
-
|
|
354
|
+
against the current CLI base and operator contracts. Contract versions must match;
|
|
355
|
+
historical base/operator digests are provenance, not compatibility pins. Parser
|
|
356
|
+
release changes and unrelated profile changes do not require rebinding. Invalid DSL, executable
|
|
357
|
+
fields, identity redefinition, threshold weakening, invalid payload integrity or a partial
|
|
356
358
|
Provider identity fails validation. The selected Provider Bundle integrity is
|
|
357
359
|
an exact input, not a self-reported trust assertion.
|
|
358
360
|
|
package/index.js
CHANGED
|
@@ -23838,11 +23838,11 @@ function validateIndexerContractOverlay(input) {
|
|
|
23838
23838
|
if (indexerContractOverlayDigest(overlayPayload) !== overlay.overlay_digest) {
|
|
23839
23839
|
throw new TypeError("contract overlay digest does not match its canonical payload");
|
|
23840
23840
|
}
|
|
23841
|
-
if (overlay.extends.version !== base.version
|
|
23842
|
-
throw new TypeError("contract overlay
|
|
23841
|
+
if (overlay.extends.version !== base.version) {
|
|
23842
|
+
throw new TypeError("contract overlay requires another base contract version");
|
|
23843
23843
|
}
|
|
23844
|
-
if (overlay.operator_contract_version !== operators.version
|
|
23845
|
-
throw new TypeError("contract overlay
|
|
23844
|
+
if (overlay.operator_contract_version !== operators.version) {
|
|
23845
|
+
throw new TypeError("contract overlay requires another operator contract version");
|
|
23846
23846
|
}
|
|
23847
23847
|
const baseProfile = profileById(base, overlay.extends.profile);
|
|
23848
23848
|
const effectiveProfile = mergeOverlayProfile(baseProfile, overlay);
|
|
@@ -31425,6 +31425,12 @@ var captureFile = (definition) => {
|
|
|
31425
31425
|
var captureLark = (definition) => {
|
|
31426
31426
|
const sourceDefinition = bindSourceType(definition.source, "lark", "captureLark source");
|
|
31427
31427
|
const sourceId = getSourceName(sourceDefinition);
|
|
31428
|
+
for (const key of ["images", "gifs"]) {
|
|
31429
|
+
const value = definition.resources?.[key];
|
|
31430
|
+
if (value !== undefined && value !== "bundle" && value !== "reference-only") {
|
|
31431
|
+
throw new TypeError(`captureLark resources.${key} must be bundle or reference-only`);
|
|
31432
|
+
}
|
|
31433
|
+
}
|
|
31428
31434
|
const maxBytesPerResource = definition.resources?.maxBytesPerResource ?? 20 * 1024 * 1024;
|
|
31429
31435
|
const maxTotalBytes = definition.resources?.maxTotalBytes ?? 200 * 1024 * 1024;
|
|
31430
31436
|
if (!Number.isSafeInteger(maxBytesPerResource) || maxBytesPerResource < 1) {
|
|
@@ -31443,6 +31449,8 @@ var captureLark = (definition) => {
|
|
|
31443
31449
|
writes: [sourceSnapshotResource(sourceDefinition, "lark")],
|
|
31444
31450
|
source: sourceDefinition,
|
|
31445
31451
|
resources: {
|
|
31452
|
+
...definition.resources?.images === undefined ? {} : { images: definition.resources.images },
|
|
31453
|
+
...definition.resources?.gifs === undefined ? {} : { gifs: definition.resources.gifs },
|
|
31446
31454
|
videos: definition.resources?.videos ?? "reference-only",
|
|
31447
31455
|
maxBytesPerResource,
|
|
31448
31456
|
maxTotalBytes
|
package/package.json
CHANGED
package/phases.d.ts
CHANGED
|
@@ -50,6 +50,8 @@ export type CaptureLarkPhaseDefinition = {
|
|
|
50
50
|
writes: readonly PhaseResourceReference[];
|
|
51
51
|
source: LarkSourceDefinition | LarkSourceReference;
|
|
52
52
|
resources: {
|
|
53
|
+
images?: "reference-only" | "bundle";
|
|
54
|
+
gifs?: "reference-only" | "bundle";
|
|
53
55
|
videos: "reference-only" | "bundle";
|
|
54
56
|
maxBytesPerResource: number;
|
|
55
57
|
maxTotalBytes: number;
|
|
@@ -76,6 +78,8 @@ export declare const captureFile: (definition: {
|
|
|
76
78
|
export declare const captureLark: (definition: {
|
|
77
79
|
source: LarkSourceDefinition | LarkSourceReference;
|
|
78
80
|
resources?: {
|
|
81
|
+
images?: "reference-only" | "bundle";
|
|
82
|
+
gifs?: "reference-only" | "bundle";
|
|
79
83
|
videos?: "reference-only" | "bundle";
|
|
80
84
|
maxBytesPerResource?: number;
|
|
81
85
|
maxTotalBytes?: number;
|