context-loader 1.3.6__tar.gz → 1.3.8__tar.gz
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.
- {context_loader-1.3.6 → context_loader-1.3.8}/PKG-INFO +30 -12
- {context_loader-1.3.6 → context_loader-1.3.8}/README.md +29 -11
- {context_loader-1.3.6 → context_loader-1.3.8}/context_loader/__init__.py +1 -1
- context_loader-1.3.6/context_loader/collect.py → context_loader-1.3.8/context_loader/agents.py +11 -435
- {context_loader-1.3.6 → context_loader-1.3.8}/context_loader/application.py +13 -3
- {context_loader-1.3.6 → context_loader-1.3.8}/context_loader/cli.py +1 -0
- context_loader-1.3.8/context_loader/collect.py +487 -0
- {context_loader-1.3.6 → context_loader-1.3.8}/context_loader/filesystem.py +1 -0
- {context_loader-1.3.6 → context_loader-1.3.8}/context_loader/git.py +61 -24
- {context_loader-1.3.6 → context_loader-1.3.8}/context_loader/model.py +1 -0
- {context_loader-1.3.6 → context_loader-1.3.8}/context_loader/render.py +5 -3
- {context_loader-1.3.6 → context_loader-1.3.8}/pyproject.toml +1 -1
- {context_loader-1.3.6 → context_loader-1.3.8}/pyproject.toml.orig +1 -1
- {context_loader-1.3.6 → context_loader-1.3.8}/tool_cli_contract.json +1 -1
- {context_loader-1.3.6 → context_loader-1.3.8}/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: context-loader
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.8
|
|
4
4
|
Summary: Render deterministic local Git context for any executor
|
|
5
5
|
License: Apache License
|
|
6
6
|
Version 2.0, January 2004
|
|
@@ -219,14 +219,14 @@ Python standard library.
|
|
|
219
219
|
|
|
220
220
|
## Open-source quick start
|
|
221
221
|
|
|
222
|
-
Current stable release: **1.3.
|
|
222
|
+
Current stable release: **1.3.8**. Local CLI for coding-agent workflows; renders deterministic Markdown or JSON.
|
|
223
223
|
|
|
224
224
|
```bash
|
|
225
|
-
uv tool install 'context-loader==1.3.
|
|
225
|
+
uv tool install 'context-loader==1.3.8'
|
|
226
226
|
```
|
|
227
227
|
|
|
228
228
|
```bash
|
|
229
|
-
pip install 'context-loader==1.3.
|
|
229
|
+
pip install 'context-loader==1.3.8'
|
|
230
230
|
```
|
|
231
231
|
|
|
232
232
|
```bash
|
|
@@ -239,21 +239,21 @@ project-context --repo /path/to/repo --format json
|
|
|
239
239
|
|
|
240
240
|
## Install
|
|
241
241
|
|
|
242
|
-
Source version: `1.3.
|
|
242
|
+
Source version: `1.3.8`. Install its matching published release or an exact source commit.
|
|
243
243
|
|
|
244
244
|
Install via `uv`:
|
|
245
245
|
|
|
246
246
|
```bash
|
|
247
|
-
uv tool install 'context-loader==1.3.
|
|
247
|
+
uv tool install 'context-loader==1.3.8'
|
|
248
248
|
```
|
|
249
249
|
|
|
250
250
|
Install via `pip`:
|
|
251
251
|
|
|
252
252
|
```bash
|
|
253
|
-
pip install 'context-loader==1.3.
|
|
253
|
+
pip install 'context-loader==1.3.8'
|
|
254
254
|
```
|
|
255
255
|
|
|
256
|
-
For development or source-based installs tracking current repository (`1.3.
|
|
256
|
+
For development or source-based installs tracking current repository (`1.3.8`):
|
|
257
257
|
|
|
258
258
|
```bash
|
|
259
259
|
uv tool install git+https://github.com/xuanheng-tech/context-loader.git
|
|
@@ -336,6 +336,8 @@ order:
|
|
|
336
336
|
7. `Directory Tree`
|
|
337
337
|
|
|
338
338
|
The output has no generated timestamp, AI summary, architecture inference, or diff body.
|
|
339
|
+
The Markdown CLI skips the nested-instruction presence scan, which contributes only to
|
|
340
|
+
the machine formats; this does not change Markdown content or its byte budgets.
|
|
339
341
|
|
|
340
342
|
## JSON Output
|
|
341
343
|
|
|
@@ -350,7 +352,7 @@ set differs, as described under “Compact model consumption”. The declared co
|
|
|
350
352
|
"schema_version": 3,
|
|
351
353
|
"tool": {
|
|
352
354
|
"name": "context-loader",
|
|
353
|
-
"version": "1.3.
|
|
355
|
+
"version": "1.3.8"
|
|
354
356
|
},
|
|
355
357
|
"repository": {
|
|
356
358
|
"requested_path": "/canonical/requested/path",
|
|
@@ -445,6 +447,9 @@ semantics.
|
|
|
445
447
|
|
|
446
448
|
### Compact model consumption (`--format json-compact`)
|
|
447
449
|
|
|
450
|
+
Model callers should prefer `json-compact` when they consume the assembled `context`;
|
|
451
|
+
use full `json` when a consumer explicitly needs separate source bodies.
|
|
452
|
+
|
|
448
453
|
`--format json-compact` emits a `schema_version` 4 document: exactly the version-3 document with
|
|
449
454
|
`sources[*].content` omitted. Every other field — `context`, `context_sha256`, `statuses`,
|
|
450
455
|
`nested_context`, `warnings`, `tool`, `repository`, and each source's `ordinal`, `kind`, `scope`,
|
|
@@ -470,7 +475,7 @@ although 1.1.0 added the top-level `statuses` key. From release 1.2.0 onward eac
|
|
|
470
475
|
names exactly one key set, and a new number is issued whenever a key set would otherwise be reused.
|
|
471
476
|
|
|
472
477
|
The JSON schema version and package version are independent: this build emits `schema_version` `3`
|
|
473
|
-
for `--format json` and `4` for `--format json-compact`, while `tool.version` is `1.3.
|
|
478
|
+
for `--format json` and `4` for `--format json-compact`, while `tool.version` is `1.3.8`. Version 1
|
|
474
479
|
and 2 are the exact shapes already published in release 1.2.0 and are never reused: because
|
|
475
480
|
`nested_context` changes the default document's key set, version 3 names the current full-document
|
|
476
481
|
key set and version 4 names the compact projection.
|
|
@@ -526,6 +531,13 @@ so `CI` does not match `special`. Existing stopwords, scoring and byte budgets s
|
|
|
526
531
|
a Han term in a heading and body does not increase its score. This is literal matching without word
|
|
527
532
|
segmentation, synonyms or translation.
|
|
528
533
|
|
|
534
|
+
Two distinct eligible focus terms in the same section body can select that section even when its
|
|
535
|
+
heading does not contain them; a single incidental body term is not enough on its own. Heading
|
|
536
|
+
terms keep their stronger weighting. Generic directory components such as `packages`,
|
|
537
|
+
`data` and `research` are ignored as path terms; exact path occurrences and specific components
|
|
538
|
+
remain eligible. For long instructions, use terms from the actual headings or rule text and inspect
|
|
539
|
+
the omitted-heading index before assuming a rule is absent.
|
|
540
|
+
|
|
529
541
|
`Omitted source characters` is measured against the whole normalized source, so a bounded source
|
|
530
542
|
scan that ends before EOF still reports the characters it could not select.
|
|
531
543
|
|
|
@@ -588,16 +600,22 @@ bullet is a per-component, read or capture bound, as each one states:
|
|
|
588
600
|
removes that many bytes of entries, and the `truncated` status plus the marker inside the
|
|
589
601
|
fence say so. The heading and the code-fence lines are not metered, so the whole Markdown
|
|
590
602
|
section can exceed 12 KiB by that fixed few dozen bytes.
|
|
591
|
-
- Nested `AGENTS.md` presence scan: depth 4, 2,000
|
|
603
|
+
- Nested `AGENTS.md` presence scan: depth 4, 2,000 directory-open attempts (including the root
|
|
604
|
+
and failed attempts), at most 32 reported paths, a
|
|
592
605
|
4 KiB budget metered on the emitted array, and at most 1,024 entries retained and classified
|
|
593
606
|
per directory. Names are scanned to select that prefix, subject to the separate hard
|
|
594
607
|
name-scan bound below; file contents are never read
|
|
608
|
+
- A tree entry whose type cannot be determined is shown as `Skipped: unable to classify.`
|
|
609
|
+
and reports an `unreadable` tree-entry status; it is not presented as an ordinary file.
|
|
595
610
|
- Directory name scans stop on the first entry beyond 65,536 names per directory. An
|
|
596
611
|
over-limit directory's entire partial prefix is discarded to keep results independent of
|
|
597
612
|
operating system order. The tree emits `Skipped: directory name scan limit reached.` and
|
|
598
613
|
a `directory_scan_limit_exceeded` status; the nested presence scan sets `scan_truncated`.
|
|
599
614
|
This bounds name iteration, not elapsed time on a blocked filesystem call.
|
|
600
615
|
- Working-tree changes: 100 paths and 4 KiB
|
|
616
|
+
- Working-tree status is parsed incrementally, retaining only the first 100 paths sorted
|
|
617
|
+
by raw filesystem bytes. All records remain subject to validation, the shared Git
|
|
618
|
+
deadline and the 16 MiB output limit, including records beyond the displayed prefix.
|
|
601
619
|
- Recent commits: 8
|
|
602
620
|
- JSON-only listings have no byte budget of their own: `statuses` subjects are escaped names bounded
|
|
603
621
|
by the entry counts above, while `repository` and `sources[*].path` are emitted verbatim, so a
|
|
@@ -655,7 +673,7 @@ or candidate-file content.
|
|
|
655
673
|
|
|
656
674
|
## Not Included
|
|
657
675
|
|
|
658
|
-
Version 1.3.
|
|
676
|
+
Version 1.3.8 does not provide AI summaries, project-type detection, loading or transport of
|
|
659
677
|
nested `AGENTS.md` contents (the JSON `nested_context` field reports bounded existence only),
|
|
660
678
|
Memory retrieval, semantic ranking, ignore-rule parsing, plugins, profiles, caches, databases,
|
|
661
679
|
network services, MCP, daemons, GUIs, CI/CD, telemetry, or automatic updates.
|
|
@@ -8,14 +8,14 @@ Python standard library.
|
|
|
8
8
|
|
|
9
9
|
## Open-source quick start
|
|
10
10
|
|
|
11
|
-
Current stable release: **1.3.
|
|
11
|
+
Current stable release: **1.3.8**. Local CLI for coding-agent workflows; renders deterministic Markdown or JSON.
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
uv tool install 'context-loader==1.3.
|
|
14
|
+
uv tool install 'context-loader==1.3.8'
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
pip install 'context-loader==1.3.
|
|
18
|
+
pip install 'context-loader==1.3.8'
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
```bash
|
|
@@ -28,21 +28,21 @@ project-context --repo /path/to/repo --format json
|
|
|
28
28
|
|
|
29
29
|
## Install
|
|
30
30
|
|
|
31
|
-
Source version: `1.3.
|
|
31
|
+
Source version: `1.3.8`. Install its matching published release or an exact source commit.
|
|
32
32
|
|
|
33
33
|
Install via `uv`:
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
|
-
uv tool install 'context-loader==1.3.
|
|
36
|
+
uv tool install 'context-loader==1.3.8'
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
Install via `pip`:
|
|
40
40
|
|
|
41
41
|
```bash
|
|
42
|
-
pip install 'context-loader==1.3.
|
|
42
|
+
pip install 'context-loader==1.3.8'
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
For development or source-based installs tracking current repository (`1.3.
|
|
45
|
+
For development or source-based installs tracking current repository (`1.3.8`):
|
|
46
46
|
|
|
47
47
|
```bash
|
|
48
48
|
uv tool install git+https://github.com/xuanheng-tech/context-loader.git
|
|
@@ -125,6 +125,8 @@ order:
|
|
|
125
125
|
7. `Directory Tree`
|
|
126
126
|
|
|
127
127
|
The output has no generated timestamp, AI summary, architecture inference, or diff body.
|
|
128
|
+
The Markdown CLI skips the nested-instruction presence scan, which contributes only to
|
|
129
|
+
the machine formats; this does not change Markdown content or its byte budgets.
|
|
128
130
|
|
|
129
131
|
## JSON Output
|
|
130
132
|
|
|
@@ -139,7 +141,7 @@ set differs, as described under “Compact model consumption”. The declared co
|
|
|
139
141
|
"schema_version": 3,
|
|
140
142
|
"tool": {
|
|
141
143
|
"name": "context-loader",
|
|
142
|
-
"version": "1.3.
|
|
144
|
+
"version": "1.3.8"
|
|
143
145
|
},
|
|
144
146
|
"repository": {
|
|
145
147
|
"requested_path": "/canonical/requested/path",
|
|
@@ -234,6 +236,9 @@ semantics.
|
|
|
234
236
|
|
|
235
237
|
### Compact model consumption (`--format json-compact`)
|
|
236
238
|
|
|
239
|
+
Model callers should prefer `json-compact` when they consume the assembled `context`;
|
|
240
|
+
use full `json` when a consumer explicitly needs separate source bodies.
|
|
241
|
+
|
|
237
242
|
`--format json-compact` emits a `schema_version` 4 document: exactly the version-3 document with
|
|
238
243
|
`sources[*].content` omitted. Every other field — `context`, `context_sha256`, `statuses`,
|
|
239
244
|
`nested_context`, `warnings`, `tool`, `repository`, and each source's `ordinal`, `kind`, `scope`,
|
|
@@ -259,7 +264,7 @@ although 1.1.0 added the top-level `statuses` key. From release 1.2.0 onward eac
|
|
|
259
264
|
names exactly one key set, and a new number is issued whenever a key set would otherwise be reused.
|
|
260
265
|
|
|
261
266
|
The JSON schema version and package version are independent: this build emits `schema_version` `3`
|
|
262
|
-
for `--format json` and `4` for `--format json-compact`, while `tool.version` is `1.3.
|
|
267
|
+
for `--format json` and `4` for `--format json-compact`, while `tool.version` is `1.3.8`. Version 1
|
|
263
268
|
and 2 are the exact shapes already published in release 1.2.0 and are never reused: because
|
|
264
269
|
`nested_context` changes the default document's key set, version 3 names the current full-document
|
|
265
270
|
key set and version 4 names the compact projection.
|
|
@@ -315,6 +320,13 @@ so `CI` does not match `special`. Existing stopwords, scoring and byte budgets s
|
|
|
315
320
|
a Han term in a heading and body does not increase its score. This is literal matching without word
|
|
316
321
|
segmentation, synonyms or translation.
|
|
317
322
|
|
|
323
|
+
Two distinct eligible focus terms in the same section body can select that section even when its
|
|
324
|
+
heading does not contain them; a single incidental body term is not enough on its own. Heading
|
|
325
|
+
terms keep their stronger weighting. Generic directory components such as `packages`,
|
|
326
|
+
`data` and `research` are ignored as path terms; exact path occurrences and specific components
|
|
327
|
+
remain eligible. For long instructions, use terms from the actual headings or rule text and inspect
|
|
328
|
+
the omitted-heading index before assuming a rule is absent.
|
|
329
|
+
|
|
318
330
|
`Omitted source characters` is measured against the whole normalized source, so a bounded source
|
|
319
331
|
scan that ends before EOF still reports the characters it could not select.
|
|
320
332
|
|
|
@@ -377,16 +389,22 @@ bullet is a per-component, read or capture bound, as each one states:
|
|
|
377
389
|
removes that many bytes of entries, and the `truncated` status plus the marker inside the
|
|
378
390
|
fence say so. The heading and the code-fence lines are not metered, so the whole Markdown
|
|
379
391
|
section can exceed 12 KiB by that fixed few dozen bytes.
|
|
380
|
-
- Nested `AGENTS.md` presence scan: depth 4, 2,000
|
|
392
|
+
- Nested `AGENTS.md` presence scan: depth 4, 2,000 directory-open attempts (including the root
|
|
393
|
+
and failed attempts), at most 32 reported paths, a
|
|
381
394
|
4 KiB budget metered on the emitted array, and at most 1,024 entries retained and classified
|
|
382
395
|
per directory. Names are scanned to select that prefix, subject to the separate hard
|
|
383
396
|
name-scan bound below; file contents are never read
|
|
397
|
+
- A tree entry whose type cannot be determined is shown as `Skipped: unable to classify.`
|
|
398
|
+
and reports an `unreadable` tree-entry status; it is not presented as an ordinary file.
|
|
384
399
|
- Directory name scans stop on the first entry beyond 65,536 names per directory. An
|
|
385
400
|
over-limit directory's entire partial prefix is discarded to keep results independent of
|
|
386
401
|
operating system order. The tree emits `Skipped: directory name scan limit reached.` and
|
|
387
402
|
a `directory_scan_limit_exceeded` status; the nested presence scan sets `scan_truncated`.
|
|
388
403
|
This bounds name iteration, not elapsed time on a blocked filesystem call.
|
|
389
404
|
- Working-tree changes: 100 paths and 4 KiB
|
|
405
|
+
- Working-tree status is parsed incrementally, retaining only the first 100 paths sorted
|
|
406
|
+
by raw filesystem bytes. All records remain subject to validation, the shared Git
|
|
407
|
+
deadline and the 16 MiB output limit, including records beyond the displayed prefix.
|
|
390
408
|
- Recent commits: 8
|
|
391
409
|
- JSON-only listings have no byte budget of their own: `statuses` subjects are escaped names bounded
|
|
392
410
|
by the entry counts above, while `repository` and `sources[*].path` are emitted verbatim, so a
|
|
@@ -444,7 +462,7 @@ or candidate-file content.
|
|
|
444
462
|
|
|
445
463
|
## Not Included
|
|
446
464
|
|
|
447
|
-
Version 1.3.
|
|
465
|
+
Version 1.3.8 does not provide AI summaries, project-type detection, loading or transport of
|
|
448
466
|
nested `AGENTS.md` contents (the JSON `nested_context` field reports bounded existence only),
|
|
449
467
|
Memory retrieval, semantic ranking, ignore-rule parsing, plugins, profiles, caches, databases,
|
|
450
468
|
network services, MCP, daemons, GUIs, CI/CD, telemetry, or automatic updates.
|