pm-context 2026.10.21 → 2026.10.24
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.
- package/CHANGELOG.md +24 -0
- package/README.md +83 -1
- package/dist/context-receipts.d.ts +9 -2
- package/dist/context-receipts.d.ts.map +1 -1
- package/dist/context-receipts.js +14 -9
- package/dist/context-receipts.js.map +1 -1
- package/dist/evidence-packing.d.ts +68 -0
- package/dist/evidence-packing.d.ts.map +1 -0
- package/dist/evidence-packing.js +146 -0
- package/dist/evidence-packing.js.map +1 -0
- package/dist/file-focus.d.ts +1 -1
- package/dist/file-focus.d.ts.map +1 -1
- package/dist/file-focus.js +7 -2
- package/dist/file-focus.js.map +1 -1
- package/dist/freshness.d.ts +82 -0
- package/dist/freshness.d.ts.map +1 -0
- package/dist/freshness.js +299 -0
- package/dist/freshness.js.map +1 -0
- package/dist/index.d.ts +18 -72
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +125 -100
- package/dist/index.js.map +1 -1
- package/dist/since.d.ts +105 -0
- package/dist/since.d.ts.map +1 -0
- package/dist/since.js +593 -0
- package/dist/since.js.map +1 -0
- package/dist/witnesses.d.ts +56 -0
- package/dist/witnesses.d.ts.map +1 -0
- package/dist/witnesses.js +121 -0
- package/dist/witnesses.js.map +1 -0
- package/manifest.json +2 -2
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026.10.23 - 2026-10-23
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Focus context packs on changed and explicit files ([pm-context-ax7z](https://github.com/unbraind/pm-context/blob/main/.agents/pm/features/pm-context-ax7z.toon))
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- Enable the gated GitHub issue sync ([pm-context-53bz](https://github.com/unbraind/pm-context/blob/main/.agents/pm/chores/pm-context-53bz.toon))
|
|
12
|
+
- Adopt pm-github 2026.10.16: default-branch-safe gated sync and daily gated closeout PRs ([pm-context-05ub](https://github.com/unbraind/pm-context/blob/main/.agents/pm/chores/pm-context-05ub.toon))
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- A release that merges but fails to publish is abandoned by the next day's run ([pm-context-7yrb](https://github.com/unbraind/pm-context/blob/main/.agents/pm/issues/pm-context-7yrb.toon))
|
|
17
|
+
- Harden the release merge wait against mergeStateStatus deadlock ([pm-context-jjbl](https://github.com/unbraind/pm-context/blob/main/.agents/pm/issues/pm-context-jjbl.toon))
|
|
18
|
+
- The changelog gate stamps an untagged version with the current date, so its verdict flips every midnight with no commit ([pm-context-a9iw](https://github.com/unbraind/pm-context/blob/main/.agents/pm/issues/pm-context-a9iw.toon))
|
|
19
|
+
- The release job authenticated with a stored npm token that expired, so publishing stopped while every other gate stayed green ([pm-context-594y](https://github.com/unbraind/pm-context/blob/main/.agents/pm/issues/pm-context-594y.toon))
|
|
20
|
+
- A release run bumped and committed a new version every night while publishing was impossible, because the only externally-failable step runs last ([pm-context-p965](https://github.com/unbraind/pm-context/blob/main/.agents/pm/issues/pm-context-p965.toon))
|
|
21
|
+
|
|
22
|
+
### Other
|
|
23
|
+
|
|
24
|
+
- Enable GitHub CodeQL code scanning ([pm-context-f4tl](https://github.com/unbraind/pm-context/blob/main/.agents/pm/chores/pm-context-f4tl.toon))
|
|
25
|
+
- Certify pm-context on PM CLI/SDK 2026.10.4 and consolidate pending dependency updates ([pm-context-ht20](https://github.com/unbraind/pm-context/blob/main/.agents/pm/chores/pm-context-ht20.toon))
|
|
26
|
+
|
|
3
27
|
## 2026.10.21 - 2026-10-21
|
|
4
28
|
|
|
5
29
|
### Fixed
|
package/README.md
CHANGED
|
@@ -66,6 +66,7 @@ tracker root (including custom roots) are excluded from `--changed`.
|
|
|
66
66
|
Use repeated `--files <path>` for an explicit working set, including paths that
|
|
67
67
|
do not exist yet. Paths are relative to the repository root (native absolute
|
|
68
68
|
paths inside that root are also accepted), and backslashes are normalized.
|
|
69
|
+
One trailing LF or CRLF from an edited file list is removed; other whitespace is preserved.
|
|
69
70
|
`--files` and `--changed` combine their unique paths. Linked directories match
|
|
70
71
|
contained files with path boundaries, so `src` matches `src/parser.ts` but
|
|
71
72
|
`sr` does not. File selection intersects any id/status/type/tag filters.
|
|
@@ -73,7 +74,14 @@ contained files with path boundaries, so `src` matches `src/parser.ts` but
|
|
|
73
74
|
Focus items rank by the number of unique matching paths, then status
|
|
74
75
|
(`in_progress`, `open`, `blocked`, `closed` with `--include-closed`), then
|
|
75
76
|
ascending priority and id. Existing neighborhood depth, focus limit, max-items
|
|
76
|
-
and token packing apply afterward.
|
|
77
|
+
and token packing apply afterward. Under `--max-items` token pressure, equal-cost
|
|
78
|
+
focus candidates retain that order: greatest overlap first, then lifecycle
|
|
79
|
+
status, ascending priority, and ascending id as the final deterministic tie-break.
|
|
80
|
+
An empty working set selects no focus items.
|
|
81
|
+
|
|
82
|
+
Repository roots retain meaningful trailing whitespace. With older hosts that
|
|
83
|
+
trim the repository context, file focus recovers the exact root from the current
|
|
84
|
+
working repository when it matches that context.
|
|
77
85
|
|
|
78
86
|
Every focus item exposes `matched_files`. `unlinked_changed_files` lists working
|
|
79
87
|
set paths with no linked item anywhere in the tracker, independently of filters
|
|
@@ -259,6 +267,13 @@ carry no session or fact ids and are never automatically credited to a receipt.
|
|
|
259
267
|
Receipts live exclusively in the tracker's ignored
|
|
260
268
|
`runtime/context-receipts/` directory. Each atomic JSON snapshot stores ids,
|
|
261
269
|
associations, token estimates and deduplicated evidence, **no context text**.
|
|
270
|
+
Receipt writers use a native SDK lock with an explicit owner, a 60-second lifetime,
|
|
271
|
+
a 500 ms total contention ceiling and token-owned release. A verifiably dead writer
|
|
272
|
+
is recovered by the SDK before the lifetime expires; a live owner causes bounded
|
|
273
|
+
refusal. Existing ownerless `runtime/context-receipts/.lock` directories are
|
|
274
|
+
preserved and require explicit recovery after stopping all receipt writers.
|
|
275
|
+
Serving still discloses unavailable measurement when persistence fails.
|
|
276
|
+
|
|
262
277
|
Rotation keeps the current receipt and the most recently written siblings, at
|
|
263
278
|
most 200 snapshots of 256 KiB each (50 MiB maximum retained receipt data).
|
|
264
279
|
Older receipts are deleted; their
|
|
@@ -373,3 +388,70 @@ pm-ops template; its internal callback is part of the outstanding documentation
|
|
|
373
388
|
scope. The alert and workflow-verifier migration also requires coordinating the
|
|
374
389
|
existing `pm-context-qu0a` ownership before migrating its linked paths. No helper
|
|
375
390
|
has been marked removed while that dependency remains unresolved.
|
|
391
|
+
|
|
392
|
+
## Resume since your last session
|
|
393
|
+
|
|
394
|
+
```sh
|
|
395
|
+
pm context-pack since --from 2026-10-20T18:00:00Z --token-budget 4000
|
|
396
|
+
pm context-pack since --cursor "$cursor" --token-budget 4000
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
Returns ranked changes, bounded substantive comments and handoff messages, claims,
|
|
400
|
+
a new opaque cursor and an omission receipt. The whole JSON response fits the
|
|
401
|
+
conservative UTF-8 byte-token ceiling; budget-deferred rows remain resumable.
|
|
402
|
+
See [cursor semantics and recovery](docs/since.md).
|
|
403
|
+
|
|
404
|
+
## Resume only invalidated assumptions
|
|
405
|
+
|
|
406
|
+
Record a digest manifest for a packet whose sections declare item, settings and
|
|
407
|
+
local evidence dependencies. On resume, receive only invalidated sections;
|
|
408
|
+
changes propagate through dependent sections while unchanged assumptions reuse
|
|
409
|
+
safely. Deleted or unreadable sources refuse reuse with a bounded receipt.
|
|
410
|
+
|
|
411
|
+
```sh
|
|
412
|
+
pm context-freshness record --packet packet.json > manifest.json
|
|
413
|
+
pm context-freshness resume --packet packet.json --manifest manifest.json --json
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
No new snapshot store or event delta stream is created. See the
|
|
417
|
+
[packet example, typed SDK and refusal contracts](docs/freshness.md).
|
|
418
|
+
|
|
419
|
+
## Smallest contradictory claim witnesses
|
|
420
|
+
|
|
421
|
+
`pm context-witnesses --packet claims.json` checks an explicitly selected packet
|
|
422
|
+
of cited, co-current assertions and returns its smallest conflicting pair.
|
|
423
|
+
Use `--format json` (or global `--json`) for JSON; default TOON and JSON both
|
|
424
|
+
retain complete citations within `--byte-budget 4000`. Oversized results refuse
|
|
425
|
+
with a typed code and remedy rather than dropping witness evidence.
|
|
426
|
+
|
|
427
|
+
Rules compare exact subject/field/scope coordinates: unequal single-valued state,
|
|
428
|
+
required/forbidden policy, and explicit supersession of another selected claim.
|
|
429
|
+
`NO_DECLARED_CONFLICT` says only that these rules found no conflict; prose and
|
|
430
|
+
model proposals remain unchecked. The command performs no edits or model calls.
|
|
431
|
+
The SDK exports `checkContextWitnesses`, packet parsing and encoding, and typed
|
|
432
|
+
`WitnessError` refusals. See the [packet example and SDK contract](docs/witnesses.md).
|
|
433
|
+
|
|
434
|
+
## Without git
|
|
435
|
+
|
|
436
|
+
Criterion evidence packs, item-selected packs, handoffs, usage reports, `context-pack since`, freshness record/resume and `context-witnesses` work in a
|
|
437
|
+
plain initialized tracker without invoking Git. Corpus reads use `listAllComplete`
|
|
438
|
+
with extension hooks disabled and re-certify its full-corpus receipt before packing,
|
|
439
|
+
including custom item types and terminal statuses. Receipt writes and usage updates
|
|
440
|
+
also work without Git. File focus (`--changed` or `--files`)
|
|
441
|
+
requires a Git working repository and explains that requirement when unavailable.
|
|
442
|
+
|
|
443
|
+
## Coverage-aware evidence packing
|
|
444
|
+
|
|
445
|
+
Pack explicit acceptance criteria and their tracker field citations with
|
|
446
|
+
`pm context-evidence --packet criteria.json --byte-budget 4000` (TOON by default;
|
|
447
|
+
`--format json` or `--json` for compact JSON). Each criterion reports `linked`,
|
|
448
|
+
`budget_omitted`, or `unlinked`. A budget cut retains the exact uncovered
|
|
449
|
+
criterion ID and text. Citations, coverage receipts and output syntax all count
|
|
450
|
+
against the byte ceiling. Whole evidence groups fit or are omitted together.
|
|
451
|
+
|
|
452
|
+
Coverage means all producer-declared bindings are present, not that acceptance
|
|
453
|
+
was semantically verified. Source fields are read for sizing; omitted evidence
|
|
454
|
+
is never described as reviewed. Linked artifacts are not opened and tests are
|
|
455
|
+
not run. The command and typed `packCriterionEvidence` SDK work without Git and
|
|
456
|
+
leave the tracker unchanged. [Packet, CLI and SDK examples, refusal remedies,
|
|
457
|
+
and limitations](docs/criterion-evidence.md).
|
|
@@ -99,15 +99,22 @@ export declare function normalizeReceiptFile(value: string): string;
|
|
|
99
99
|
* manifest, and persist its receipt. Fact hashes exclude clocks and receipt ids.
|
|
100
100
|
* Write failures propagate so callers disclose that measurement is unavailable.
|
|
101
101
|
*/
|
|
102
|
-
export declare function serveContextReceipt(pmRoot: string, output: string, format: "json" | "text", associations: ReceiptAssociations, identity: ReceiptIdentity, outputPath?: string): {
|
|
102
|
+
export declare function serveContextReceipt(pmRoot: string, output: string, format: "json" | "text", associations: ReceiptAssociations, identity: ReceiptIdentity, outputPath?: string): Promise<{
|
|
103
103
|
output: string;
|
|
104
104
|
receipt: ContextReceipt;
|
|
105
|
+
}>;
|
|
106
|
+
/** Native namespace, lease lifetime and hard total contention budget for receipt writers. */
|
|
107
|
+
export declare const RECEIPT_LOCK: {
|
|
108
|
+
readonly id: "pm-context-receipts";
|
|
109
|
+
readonly owner: "pm-context:receipts";
|
|
110
|
+
readonly ttlSeconds: 60;
|
|
111
|
+
readonly waitMs: 500;
|
|
105
112
|
};
|
|
106
113
|
/**
|
|
107
114
|
* Record explicit, receipt-scoped usage. Unknown ids reject the entire update;
|
|
108
115
|
* repeat reports are idempotent. Item/file proxies match only facts in this receipt.
|
|
109
116
|
*/
|
|
110
|
-
export declare function recordReceiptUsage(pmRoot: string, usage: ReceiptUsage): void
|
|
117
|
+
export declare function recordReceiptUsage(pmRoot: string, usage: ReceiptUsage): Promise<void>;
|
|
111
118
|
/** Read retained receipts, report skipped corruption, and aggregate before limiting detail. */
|
|
112
119
|
export declare function reportContextReceipts(pmRoot: string, options: ReceiptReportOptions): ReceiptReport;
|
|
113
120
|
/** Render the receipt denominator, usage proxies and unused estimated cost as a brief. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-receipts.d.ts","sourceRoot":"","sources":["../context-receipts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context-receipts.d.ts","sourceRoot":"","sources":["../context-receipts.ts"],"names":[],"mappings":"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"}
|
package/dist/context-receipts.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Receipt protocol for the final output of pm-context's serving commands.
|
|
3
3
|
* The package owns only runtime/context-receipts, never the SDK usage ledger.
|
|
4
4
|
*/
|
|
5
|
+
import { acquireLock } from "@unbrained/pm-cli/sdk";
|
|
5
6
|
import { createHash, randomUUID } from "node:crypto";
|
|
6
7
|
import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
7
8
|
import { basename, isAbsolute, join, posix } from "node:path";
|
|
@@ -23,7 +24,7 @@ export function normalizeReceiptFile(value) {
|
|
|
23
24
|
* manifest, and persist its receipt. Fact hashes exclude clocks and receipt ids.
|
|
24
25
|
* Write failures propagate so callers disclose that measurement is unavailable.
|
|
25
26
|
*/
|
|
26
|
-
export function serveContextReceipt(pmRoot, output, format, associations, identity, outputPath) {
|
|
27
|
+
export async function serveContextReceipt(pmRoot, output, format, associations, identity, outputPath) {
|
|
27
28
|
const receipt = {
|
|
28
29
|
protocol: "pm-context-usage/v1", receipt_id: randomUUID(), session: "", author: identity.author,
|
|
29
30
|
served_at: new Date().toISOString(), command: identity.command, sections: [], facts: [], protocol_tokens: 0, used: {},
|
|
@@ -100,7 +101,7 @@ export function serveContextReceipt(pmRoot, output, format, associations, identi
|
|
|
100
101
|
rendered = `${lines.join("\n")}\n\nContext receipt: ${receipt.receipt_id}; session: ${receipt.session}; protocol: ${receipt.protocol}\n`;
|
|
101
102
|
receipt.protocol_tokens = Math.ceil((rendered.length - output.length) / 4);
|
|
102
103
|
}
|
|
103
|
-
withReceiptStore(pmRoot, (directory) => {
|
|
104
|
+
await withReceiptStore(pmRoot, (directory) => {
|
|
104
105
|
const path = join(directory, `${receipt.receipt_id}.json`);
|
|
105
106
|
try {
|
|
106
107
|
persistReceipt(path, receipt);
|
|
@@ -134,17 +135,21 @@ function persistReceipt(path, receipt) {
|
|
|
134
135
|
rmSync(temporary, { force: true });
|
|
135
136
|
}
|
|
136
137
|
}
|
|
137
|
-
/**
|
|
138
|
-
|
|
138
|
+
/** Native namespace, lease lifetime and hard total contention budget for receipt writers. */
|
|
139
|
+
export const RECEIPT_LOCK = { id: "pm-context-receipts", owner: "pm-context:receipts", ttlSeconds: 60, waitMs: 500 };
|
|
140
|
+
/** Serialize receipt commits under a token-owned native lock, retaining unverifiable legacy locks. */
|
|
141
|
+
async function withReceiptStore(pmRoot, operation) {
|
|
139
142
|
const directory = join(pmRoot, RECEIPTS_RELATIVE_PATH);
|
|
140
143
|
mkdirSync(directory, { recursive: true, mode: 0o700 });
|
|
141
|
-
const
|
|
142
|
-
mkdirSync(lock);
|
|
144
|
+
const release = await acquireLock(pmRoot, RECEIPT_LOCK.id, RECEIPT_LOCK.ttlSeconds, RECEIPT_LOCK.owner, false, true, RECEIPT_LOCK.waitMs, { maxWaitMs: RECEIPT_LOCK.waitMs });
|
|
143
145
|
try {
|
|
146
|
+
if (existsSync(join(directory, ".lock"))) {
|
|
147
|
+
throw new Error("Legacy context receipt .lock has no verifiable owner. Stop receipt writers and explicitly recover it before retrying.");
|
|
148
|
+
}
|
|
144
149
|
return operation(directory);
|
|
145
150
|
}
|
|
146
151
|
finally {
|
|
147
|
-
|
|
152
|
+
await release();
|
|
148
153
|
}
|
|
149
154
|
}
|
|
150
155
|
/** Validate every field consumed by reports, skipping oversized or corrupt snapshots. */
|
|
@@ -203,10 +208,10 @@ function readReceipt(path) {
|
|
|
203
208
|
* Record explicit, receipt-scoped usage. Unknown ids reject the entire update;
|
|
204
209
|
* repeat reports are idempotent. Item/file proxies match only facts in this receipt.
|
|
205
210
|
*/
|
|
206
|
-
export function recordReceiptUsage(pmRoot, usage) {
|
|
211
|
+
export async function recordReceiptUsage(pmRoot, usage) {
|
|
207
212
|
if (!/^[\da-f-]{36}$/.test(usage.receipt_id))
|
|
208
213
|
throw new Error("Invalid context receipt id");
|
|
209
|
-
withReceiptStore(pmRoot, (directory) => {
|
|
214
|
+
await withReceiptStore(pmRoot, (directory) => {
|
|
210
215
|
const path = join(directory, `${usage.receipt_id}.json`);
|
|
211
216
|
const receipt = readReceipt(path);
|
|
212
217
|
if (!receipt)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-receipts.js","sourceRoot":"","sources":["../context-receipts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context-receipts.js","sourceRoot":"","sources":["../context-receipts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/** Criterion-level packing over explicit tracker bindings; no semantic search or review. */
|
|
2
|
+
import { PmCliError } from "@unbrained/pm-cli/sdk";
|
|
3
|
+
import type { FreshnessReader } from "./freshness.ts";
|
|
4
|
+
/** A top-level authoritative tracker field, including linked tests, docs or files. */
|
|
5
|
+
export interface EvidenceBinding {
|
|
6
|
+
item: string;
|
|
7
|
+
field: string;
|
|
8
|
+
}
|
|
9
|
+
/** All declared bindings must fit before a criterion has linked evidence coverage. */
|
|
10
|
+
export interface EvidenceCriterion {
|
|
11
|
+
id: string;
|
|
12
|
+
text: string;
|
|
13
|
+
evidence: EvidenceBinding[];
|
|
14
|
+
}
|
|
15
|
+
/** Explicit producer-owned acceptance criteria; empty bindings disclose missing evidence. */
|
|
16
|
+
export interface EvidencePacket {
|
|
17
|
+
criteria: EvidenceCriterion[];
|
|
18
|
+
}
|
|
19
|
+
/** Stable refusal categories with host-compatible recovery instructions. */
|
|
20
|
+
export declare class EvidencePackingError extends PmCliError {
|
|
21
|
+
/** Safe machine-readable failure category, independent of source contents. */
|
|
22
|
+
readonly code: "INVALID_PACKET" | "INVALID_ARGUMENT" | "INPUT_UNAVAILABLE" | "SOURCE_UNAVAILABLE" | "BUDGET_TOO_SMALL";
|
|
23
|
+
/** Concrete action that permits retrying without editing the source tracker. */
|
|
24
|
+
readonly remedy: string;
|
|
25
|
+
constructor(code: EvidencePackingError["code"], remedy: string);
|
|
26
|
+
}
|
|
27
|
+
/** Per-criterion omission receipt remains present even when no evidence fits. */
|
|
28
|
+
export interface CriterionCoverage {
|
|
29
|
+
id: string;
|
|
30
|
+
text: string;
|
|
31
|
+
state: "linked" | "budget_omitted" | "unlinked";
|
|
32
|
+
required: number;
|
|
33
|
+
packed: number;
|
|
34
|
+
}
|
|
35
|
+
/** Lossless field value encoded as JSON text so TOON and JSON share one compact schema. */
|
|
36
|
+
export interface PackedEvidence extends EvidenceBinding {
|
|
37
|
+
criterion: string;
|
|
38
|
+
value_json: string;
|
|
39
|
+
}
|
|
40
|
+
/** Complete response, including the conservative self-inclusive byte measurement. */
|
|
41
|
+
export interface EvidencePack {
|
|
42
|
+
protocol: "pm-context-evidence/v1";
|
|
43
|
+
basis: "all-declared-bindings;not-semantic-acceptance";
|
|
44
|
+
ranking: "sdk-value-per-byte;criterion-id-ties";
|
|
45
|
+
source_fields_read: number;
|
|
46
|
+
content_reviewed: false;
|
|
47
|
+
omitted_evidence: "read-for-sizing-only;artifacts-not-opened;tests-not-run";
|
|
48
|
+
criteria: CriterionCoverage[];
|
|
49
|
+
evidence: PackedEvidence[];
|
|
50
|
+
byte_budget: number;
|
|
51
|
+
/** Upper bound includes the newline and this field's own decimal digits. */
|
|
52
|
+
byte_upper_bound: number;
|
|
53
|
+
remedy: string;
|
|
54
|
+
}
|
|
55
|
+
/** Bound both input work and output transport; the ceiling measures UTF-8 bytes, not tokens. */
|
|
56
|
+
export interface EvidencePackOptions {
|
|
57
|
+
byteBudget?: number;
|
|
58
|
+
format?: "json" | "toon";
|
|
59
|
+
}
|
|
60
|
+
/** Validate and normalize declarations before any source read or budget selection. */
|
|
61
|
+
export declare function parseEvidencePacket(value: unknown): EvidencePacket;
|
|
62
|
+
/** Reuse bounded stable JSON input handling without exposing paths in refusals. */
|
|
63
|
+
export declare function readEvidencePacket(path: string): EvidencePacket;
|
|
64
|
+
/** Render exact compact JSON or TOON tables; nested source values stay lossless JSON strings. */
|
|
65
|
+
export declare function encodeEvidencePack(pack: EvidencePack, format: "json" | "toon"): string;
|
|
66
|
+
/** Pack complete criterion groups using SDK selection and exact serialized transport costs. */
|
|
67
|
+
export declare function packCriterionEvidence(input: EvidencePacket, read: FreshnessReader, options?: EvidencePackOptions): Promise<EvidencePack>;
|
|
68
|
+
//# sourceMappingURL=evidence-packing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence-packing.d.ts","sourceRoot":"","sources":["../evidence-packing.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAChE,sFAAsF;AACtF,MAAM,WAAW,iBAAiB;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,eAAe,EAAE,CAAA;CAAE;AAC5F,6FAA6F;AAC7F,MAAM,WAAW,cAAc;IAAG,QAAQ,EAAE,iBAAiB,EAAE,CAAA;CAAE;AACjE,4EAA4E;AAC5E,qBAAa,oBAAqB,SAAQ,UAAU;IAClD,8EAA8E;IAC9E,SAAiB,IAAI,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;IAC/H,gFAAgF;IAChF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,YAAY,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAG7D;CACF;AACD,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,GAAG,gBAAgB,GAAG,UAAU,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,2FAA2F;AAC3F,MAAM,WAAW,cAAe,SAAQ,eAAe;IAAG,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AACjG,qFAAqF;AACrF,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,wBAAwB,CAAC;IACnC,KAAK,EAAE,+CAA+C,CAAC;IACvD,OAAO,EAAE,sCAAsC,CAAC;IAChD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,KAAK,CAAC;IACxB,gBAAgB,EAAE,yDAAyD,CAAC;IAC5E,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,gGAAgG;AAChG,MAAM,WAAW,mBAAmB;IAAG,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE;AAOtF,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAkBlE;AAGD,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAI/D;AACD,iGAAiG;AACjG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAUtF;AACD,+FAA+F;AAC/F,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,YAAY,CAAC,CAoDlJ"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/** Criterion-level packing over explicit tracker bindings; no semantic search or review. */
|
|
2
|
+
import { PmCliError } from "@unbrained/pm-cli/sdk";
|
|
3
|
+
import { packContextCandidates } from "@unbrained/pm-cli/sdk/query";
|
|
4
|
+
import { readFreshnessJson } from "./freshness.js";
|
|
5
|
+
/** Stable refusal categories with host-compatible recovery instructions. */
|
|
6
|
+
export class EvidencePackingError extends PmCliError {
|
|
7
|
+
/** Concrete action that permits retrying without editing the source tracker. */
|
|
8
|
+
remedy;
|
|
9
|
+
constructor(code, remedy) {
|
|
10
|
+
super(`${code}: ${remedy}`, 2, { code, nextSteps: [remedy] });
|
|
11
|
+
this.remedy = remedy;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/** Treat records distinctly from arrays and null during untrusted JSON validation. */
|
|
15
|
+
function object(value) { return value !== null && typeof value === "object" && !Array.isArray(value); }
|
|
16
|
+
/** Coordinates are public identifiers rather than filesystem paths. */
|
|
17
|
+
function identifier(value) { return typeof value === "string" && /^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$/.test(value); }
|
|
18
|
+
/** Refuse unknown qualifiers rather than silently changing the declared coverage contract. */
|
|
19
|
+
function keys(value, allowed) { return Object.keys(value).every((key) => allowed.includes(key)); }
|
|
20
|
+
/** Validate and normalize declarations before any source read or budget selection. */
|
|
21
|
+
export function parseEvidencePacket(value) {
|
|
22
|
+
const fail = () => new EvidencePackingError("INVALID_PACKET", "Supply 1-128 unique criteria with id, text (1-1024 characters), and evidence bindings {item,field}; use at most 512 distinct bindings in total. Remove unknown qualifiers and duplicate bindings.");
|
|
23
|
+
let size;
|
|
24
|
+
try {
|
|
25
|
+
size = Buffer.byteLength(JSON.stringify(value) ?? "");
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
throw fail();
|
|
29
|
+
}
|
|
30
|
+
if (size > 262144 || !object(value) || !keys(value, ["criteria"]) || !Array.isArray(value.criteria) || value.criteria.length < 1 || value.criteria.length > 128)
|
|
31
|
+
throw fail();
|
|
32
|
+
const ids = new Set();
|
|
33
|
+
let count = 0;
|
|
34
|
+
for (const row of value.criteria) {
|
|
35
|
+
if (!object(row) || !keys(row, ["id", "text", "evidence"]) || !identifier(row.id) || ids.has(row.id) || typeof row.text !== "string" || !row.text.trim() || row.text.length > 1024 || !Array.isArray(row.evidence))
|
|
36
|
+
throw fail();
|
|
37
|
+
ids.add(row.id);
|
|
38
|
+
const bindings = new Set();
|
|
39
|
+
for (const binding of row.evidence) {
|
|
40
|
+
if (!object(binding) || !keys(binding, ["item", "field"]) || !identifier(binding.item) || !identifier(binding.field) || bindings.has(JSON.stringify([binding.item, binding.field])))
|
|
41
|
+
throw fail();
|
|
42
|
+
bindings.add(JSON.stringify([binding.item, binding.field]));
|
|
43
|
+
if (++count > 512)
|
|
44
|
+
throw fail();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const packet = value;
|
|
48
|
+
return { criteria: packet.criteria.map((row) => ({ id: row.id, text: row.text, evidence: row.evidence.map((binding) => ({ item: binding.item, field: binding.field })).sort((a, b) => compare(JSON.stringify(a), JSON.stringify(b))) })).sort((a, b) => compare(a.id, b.id)) };
|
|
49
|
+
}
|
|
50
|
+
/** Code-unit ordering avoids locale-dependent ordering of producer declarations. */
|
|
51
|
+
function compare(a, b) { return Number(a > b) - Number(a < b); }
|
|
52
|
+
/** Reuse bounded stable JSON input handling without exposing paths in refusals. */
|
|
53
|
+
export function readEvidencePacket(path) {
|
|
54
|
+
let value;
|
|
55
|
+
try {
|
|
56
|
+
value = readFreshnessJson(path);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
throw new EvidencePackingError("INPUT_UNAVAILABLE", "Provide a stable readable regular UTF-8 JSON packet no larger than 262144 bytes.");
|
|
60
|
+
}
|
|
61
|
+
return parseEvidencePacket(value);
|
|
62
|
+
}
|
|
63
|
+
/** Render exact compact JSON or TOON tables; nested source values stay lossless JSON strings. */
|
|
64
|
+
export function encodeEvidencePack(pack, format) {
|
|
65
|
+
if (format === "json")
|
|
66
|
+
return `${JSON.stringify(pack)}\n`;
|
|
67
|
+
if (format !== "toon")
|
|
68
|
+
throw new EvidencePackingError("INVALID_ARGUMENT", "Use --format json or toon.");
|
|
69
|
+
const { criteria, evidence, ...summary } = pack;
|
|
70
|
+
const lines = Object.entries(summary).map(([key, value]) => `${key}: ${JSON.stringify(value)}`);
|
|
71
|
+
for (const [name, rows, fields] of [["criteria", criteria, ["id", "text", "state", "required", "packed"]], ["evidence", evidence, ["criterion", "item", "field", "value_json"]]]) {
|
|
72
|
+
lines.push(`${name}[${rows.length}]{${fields.join(",")}}:`);
|
|
73
|
+
for (const row of rows)
|
|
74
|
+
lines.push(` ${fields.map((field) => JSON.stringify(row[field])).join(",")}`);
|
|
75
|
+
}
|
|
76
|
+
return `${lines.join("\n")}\n`;
|
|
77
|
+
}
|
|
78
|
+
/** Pack complete criterion groups using SDK selection and exact serialized transport costs. */
|
|
79
|
+
export async function packCriterionEvidence(input, read, options = {}) {
|
|
80
|
+
const packet = parseEvidencePacket(input);
|
|
81
|
+
const budget = options.byteBudget ?? 4000;
|
|
82
|
+
const format = options.format ?? "toon";
|
|
83
|
+
if (!Number.isSafeInteger(budget) || budget < 512 || budget > 262144 || !["json", "toon"].includes(format))
|
|
84
|
+
throw new EvidencePackingError("INVALID_ARGUMENT", "Use json or toon and an integer --byte-budget between 512 and 262144.");
|
|
85
|
+
const values = new Map();
|
|
86
|
+
let sourceBytes = 0;
|
|
87
|
+
const groups = [];
|
|
88
|
+
for (const criterion of packet.criteria) {
|
|
89
|
+
const rows = [];
|
|
90
|
+
for (const binding of criterion.evidence) {
|
|
91
|
+
const key = JSON.stringify(binding);
|
|
92
|
+
if (!values.has(key)) {
|
|
93
|
+
let encoded;
|
|
94
|
+
try {
|
|
95
|
+
const result = await read({ kind: "item", id: binding.item, fields: [binding.field] });
|
|
96
|
+
const field = object(result) ? result[binding.field] : undefined;
|
|
97
|
+
if (!object(field) || field.present !== true)
|
|
98
|
+
throw new Error();
|
|
99
|
+
encoded = JSON.stringify(field.value);
|
|
100
|
+
if (encoded === undefined)
|
|
101
|
+
throw new Error();
|
|
102
|
+
sourceBytes += Buffer.byteLength(encoded);
|
|
103
|
+
if (sourceBytes > 8388608)
|
|
104
|
+
throw new Error();
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
throw new EvidencePackingError("SOURCE_UNAVAILABLE", `Restore readable field ${binding.field} on item ${binding.item}, or narrow the explicit bindings to at most 8388608 source bytes. No coverage result was issued.`);
|
|
108
|
+
}
|
|
109
|
+
values.set(key, encoded);
|
|
110
|
+
}
|
|
111
|
+
rows.push({ criterion: criterion.id, ...binding, value_json: values.get(key) });
|
|
112
|
+
}
|
|
113
|
+
if (rows.length)
|
|
114
|
+
groups.push({ id: criterion.id, rows });
|
|
115
|
+
}
|
|
116
|
+
const pack = {
|
|
117
|
+
protocol: "pm-context-evidence/v1", basis: "all-declared-bindings;not-semantic-acceptance", ranking: "sdk-value-per-byte;criterion-id-ties",
|
|
118
|
+
source_fields_read: values.size, content_reviewed: false, omitted_evidence: "read-for-sizing-only;artifacts-not-opened;tests-not-run",
|
|
119
|
+
criteria: packet.criteria.map((row) => ({ id: row.id, text: row.text, state: row.evidence.length ? "budget_omitted" : "unlinked", required: row.evidence.length, packed: 0 })),
|
|
120
|
+
evidence: [], byte_budget: budget, byte_upper_bound: budget,
|
|
121
|
+
remedy: "Increase byte budget for budget_omitted criteria; declare evidence for unlinked criteria. Review packed evidence before judging acceptance.",
|
|
122
|
+
};
|
|
123
|
+
// The initial receipt uses the longest state and zero counts. Packed count
|
|
124
|
+
// digits and both table-length headers are reserved separately per candidate.
|
|
125
|
+
const overhead = Buffer.byteLength(encodeEvidencePack(pack, format));
|
|
126
|
+
if (overhead > budget)
|
|
127
|
+
throw new EvidencePackingError("BUDGET_TOO_SMALL", "Increase --byte-budget to retain every criterion and the complete coverage receipt.");
|
|
128
|
+
const candidates = groups.map((group, index) => {
|
|
129
|
+
const cost = group.rows.reduce((sum, row) => sum + Buffer.byteLength(format === "json" ? JSON.stringify(row) : ` ${[row.criterion, row.item, row.field, row.value_json].map((value) => JSON.stringify(value)).join(",")}\n`) + 1, 8);
|
|
130
|
+
return { id: group.id, item: group.rows, rank: index + 1, score: 1, token_costs: { identity: cost, summary: cost, full: cost } };
|
|
131
|
+
});
|
|
132
|
+
if (budget > overhead) {
|
|
133
|
+
const selected = packContextCandidates(candidates, { tokenBudget: budget - overhead, profile: "context" });
|
|
134
|
+
const included = new Set(selected.included.map((row) => row.id));
|
|
135
|
+
pack.evidence = selected.included.flatMap((row) => row.item);
|
|
136
|
+
for (const criterion of pack.criteria)
|
|
137
|
+
if (included.has(criterion.id)) {
|
|
138
|
+
criterion.state = "linked";
|
|
139
|
+
criterion.packed = criterion.required;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Starting at the ceiling makes the self-inclusive digit count conservative.
|
|
143
|
+
pack.byte_upper_bound = Buffer.byteLength(encodeEvidencePack(pack, format));
|
|
144
|
+
return pack;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=evidence-packing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence-packing.js","sourceRoot":"","sources":["../evidence-packing.ts"],"names":[],"mappings":"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"}
|
package/dist/file-focus.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export declare function normalizeFocusPath(value: string, root: string): string
|
|
|
16
16
|
/** Check tracker containment using repository-relative paths on native and Windows roots. */
|
|
17
17
|
export declare function isTrackerPath(path: string, pmRoot: string, repoRoot: string): boolean;
|
|
18
18
|
/** Resolve --changed and repeated --files using real Git; an empty working set remains an active filter. */
|
|
19
|
-
export declare function resolveFileFocus(options: Record<string, unknown>, args: string[], cwd: string, pmRoot: string): FileFocus | undefined;
|
|
19
|
+
export declare function resolveFileFocus(options: Record<string, unknown>, args: string[], cwd: string, pmRoot: string, sourceCwd?: string): FileFocus | undefined;
|
|
20
20
|
/** Match exact files and linked directory ancestors, retaining unique changed paths per item. */
|
|
21
21
|
export declare function matchFileFocus(items: PmItem[], focus: FileFocus, links: (value: unknown) => string[]): Map<string, string[]>;
|
|
22
22
|
/** Rank focus by unique overlap, lifecycle status, priority, then deterministic id. */
|
package/dist/file-focus.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-focus.d.ts","sourceRoot":"","sources":["../file-focus.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,8EAA8E;AAC9E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sEAAsE;AACtE,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,QAAQ,KAAK;IACtB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,cAAc,GAAG,YAAY,GAAG,oBAAoB,GAAG,qBAAqB,CAAC;IACnH,YAAY,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAIhF;CACF;AASD,6FAA6F;AAC7F,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"file-focus.d.ts","sourceRoot":"","sources":["../file-focus.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,8EAA8E;AAC9E,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sEAAsE;AACtE,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,QAAQ,KAAK;IACtB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,GAAG,cAAc,GAAG,YAAY,GAAG,oBAAoB,GAAG,qBAAqB,CAAC;IACnH,YAAY,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAIhF;CACF;AASD,6FAA6F;AAC7F,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAclF;AAOD,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOrF;AAED,4GAA4G;AAC5G,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,SAAS,GAAG,SAAS,CA0CtJ;AAED,iGAAiG;AACjG,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAQ5H;AAED,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAKvF;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,MAAM,EAAE,CAItF;AAED,+GAA+G;AAC/G,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA4B1E"}
|
package/dist/file-focus.js
CHANGED
|
@@ -20,6 +20,7 @@ function git(cwd, args) {
|
|
|
20
20
|
}
|
|
21
21
|
/** Convert native or slash-separated links to safe paths relative to the repository root. */
|
|
22
22
|
export function normalizeFocusPath(value, root) {
|
|
23
|
+
value = value.replace(/\r?\n$/, "");
|
|
23
24
|
if (!value || /^[a-z][a-z\d+.-]*:\/\//i.test(value))
|
|
24
25
|
return undefined;
|
|
25
26
|
let path = value.replace(/\\/g, "/");
|
|
@@ -52,7 +53,7 @@ export function isTrackerPath(path, pmRoot, repoRoot) {
|
|
|
52
53
|
return directory === "." || file === directory || file.startsWith(`${directory}/`);
|
|
53
54
|
}
|
|
54
55
|
/** Resolve --changed and repeated --files using real Git; an empty working set remains an active filter. */
|
|
55
|
-
export function resolveFileFocus(options, args, cwd, pmRoot) {
|
|
56
|
+
export function resolveFileFocus(options, args, cwd, pmRoot, sourceCwd = cwd) {
|
|
56
57
|
const changed = options.changed !== undefined && options.changed !== false;
|
|
57
58
|
const explicit = options.files === undefined ? [] : Array.isArray(options.files) ? options.files.map(String) : [String(options.files)];
|
|
58
59
|
if (!changed && explicit.length === 0) {
|
|
@@ -62,7 +63,11 @@ export function resolveFileFocus(options, args, cwd, pmRoot) {
|
|
|
62
63
|
}
|
|
63
64
|
if (args.length > 1 || (!changed && args.length > 0))
|
|
64
65
|
throw new FileFocusError("INVALID_FILE_FOCUS", "Pass one base with --changed, or repeat --files <path>.");
|
|
65
|
-
|
|
66
|
+
// Older hosts trim their root context. Recover it only when the actual working
|
|
67
|
+
// repository matches that context, preserving portable roots for other repos.
|
|
68
|
+
const sourceRoot = git(sourceCwd, ["rev-parse", "--show-toplevel"])?.replace(/\n$/, "");
|
|
69
|
+
const root = sourceRoot?.trimEnd() === cwd ? sourceRoot
|
|
70
|
+
: git(cwd, ["rev-parse", "--show-toplevel"])?.replace(/\n$/, "");
|
|
66
71
|
if (!root)
|
|
67
72
|
throw new FileFocusError("NOT_GIT_REPOSITORY", "File focus requires a Git working repository. Run from the repository containing the changed files.");
|
|
68
73
|
const files = new Set();
|