diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json
index 1a1701b0..018f0384 100644
--- a/.claude-plugin/plugin.json
+++ b/.claude-plugin/plugin.json
@@ -1,7 +1,7 @@
{
"name": "commitlore",
"displayName": "CommitLore",
- "version": "1.2.2",
+ "version": "1.2.3",
"description": "Recorded decisions from git history, delivered to the agent before it edits. Constraints, alternatives already ruled out, and warnings left by whoever was here last.",
"author": {
"name": "MongLong0214",
diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json
index 1a79f028..15cc39b1 100644
--- a/.codex-plugin/plugin.json
+++ b/.codex-plugin/plugin.json
@@ -1,6 +1,6 @@
{
"name": "commitlore",
- "version": "1.2.2",
+ "version": "1.2.3",
"description": "Decision memory from Git history, with verified capture for coding sessions.",
"author": {
"name": "MongLong0214",
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 51d244d1..8150c2b6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,59 @@ Release notes for 1.0.0, 1.0.1 and 1.0.2 are on the
[GitHub releases page](https://github.com/MongLong0214/commitlore/releases); they
were not written here.
+## 1.2.3
+
+The capture prompt was the session, so on a long session there was no prompt.
+
+**`capture` embedded the whole transcript in its prompt (#873).** Measured by the
+reporter: a 67,981,436-byte transcript produced a 67,468,122-byte prompt — 99.3%
+of the file, and larger than any model can consume, so the pipeline could not be
+completed and no record was ever written. The pipeline itself was fine, which is
+how they proved it: `tail -n 400` on the same transcript gave 537,250 bytes and
+the same command in the same repository worked.
+
+**The failure was silent, which is why it reads as the reason capture is not
+used.** Prompt-only mode reports `outcome: "empty"`, `staged: false`, exit 0. An
+operator who tried capture once on a real session got a prompt they could not
+use and no statement that anything was wrong, and did not try again. In the
+repository where this was measured, `stale` reported 1 record in 1000 commits
+while roughly twenty commits in one recent session carried real decision context
+and produced none — with `{"mode":"auto","unattended":true}` already set, so
+permission was never the obstacle.
+
+**The prompt now carries the end of the transcript within a byte budget**, 256
+KiB by default and `COMMITLORE_TRANSCRIPT_BUDGET_BYTES` to change it. The end
+rather than the beginning: a decision is taken near the end of the session that
+implements it, and the diff being captured is that end.
+
+**Three things the bound deliberately does not do.** It does not renumber — the
+window keeps the line numbers it has in the whole transcript, because
+verification reads the whole transcript and a window renumbered from 1 would
+have every `L-L` locator name a different line of the file it is
+checked against. It does not reach the hash — `source_hashes` and every quote
+check are still over the whole transcript, so a quote from outside the window
+still verifies and a caller passing the session it actually had is never told
+the transcript was substituted. And it does not stay quiet — the prompt says
+which lines it shows and how many were left out, and `transcript_window` says
+the same to `capture --json` and to `commitlore_prepare_capture`. A bounded
+prompt that did not say so would be the old silence in a smaller package.
+
+**One line can outrun the budget by itself.** A JSONL transcript line can hold an
+entire tool result. That line is shown from its end rather than dropped, and the
+window marks it partial, because a window of no lines is worse than a window of
+one partial line. The byte slice never leaves a split codepoint at the front: a
+replacement character inside a quotable line is a character nobody can copy back.
+
+**Not claimed.** Where the useful boundary is. 256 KiB is comfortably readable by
+current models and carries far more than the ~537 KB slice measured to work; the
+reporter said they had not measured where a good record stops needing context,
+and neither has this. Also unchanged, and worth stating because automation is
+built on it: `outcome` is `staged`, `empty` or `rejected`, and all three exit 0
+— anything driving capture must read `--json`, because an exit-code check reads
+a rejected record as a success.
+
+**Not reviewed.** No cross-provider review was run on this change.
+
## 1.2.2
One line of configuration, and the plugin's MCP server had never started for
diff --git a/README.ja.md b/README.ja.md
index b443698a..1ccf4a88 100644
--- a/README.ja.md
+++ b/README.ja.md
@@ -47,18 +47,18 @@
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh | sh -s v1.2.2
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh | sh -s v1.2.3
```
先にインストーラーを読みたいですか?
```bash
-curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh
-sh install.sh v1.2.2
+curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh
+sh install.sh v1.2.3
# あるいはスクリプトを使わずに。スクリプトが作るチェックアウトは自分でも作れます。
-git clone --depth 1 --branch v1.2.2 https://github.com/MongLong0214/commitlore
+git clone --depth 1 --branch v1.2.3 https://github.com/MongLong0214/commitlore
node commitlore/dist/commitlore.mjs --version
```
@@ -107,13 +107,13 @@ CommitLore はその判断をコードのそばに残します。
macOS と Linux:
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh | sh -s v1.2.2
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh | sh -s v1.2.3
```
Windows:
```powershell
-& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.ps1))) v1.2.2
+& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.ps1))) v1.2.3
```
Node.js 22.23.2+ と Git が必要です。スクリプトは何かを書き込む前に両方を確認します。
diff --git a/README.ko.md b/README.ko.md
index 396becd9..c5bb0b9f 100644
--- a/README.ko.md
+++ b/README.ko.md
@@ -47,18 +47,18 @@
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh | sh -s v1.2.2
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh | sh -s v1.2.3
```
먼저 설치기를 읽어 보고 싶나요?
```bash
-curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh
-sh install.sh v1.2.2
+curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh
+sh install.sh v1.2.3
# 또는 스크립트를 건너뜁니다. 스크립트가 만드는 체크아웃은 직접 만들 수 있습니다.
-git clone --depth 1 --branch v1.2.2 https://github.com/MongLong0214/commitlore
+git clone --depth 1 --branch v1.2.3 https://github.com/MongLong0214/commitlore
node commitlore/dist/commitlore.mjs --version
```
@@ -107,13 +107,13 @@ CommitLore는 그 판단을 코드 곁에 보관합니다.
macOS와 Linux:
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh | sh -s v1.2.2
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh | sh -s v1.2.3
```
Windows:
```powershell
-& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.ps1))) v1.2.2
+& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.ps1))) v1.2.3
```
Node.js 22.23.2+와 Git이 필요합니다. 스크립트는 무엇이든 쓰기 전에 둘을 확인합니다.
diff --git a/README.md b/README.md
index ce9331e3..9c0d0634 100644
--- a/README.md
+++ b/README.md
@@ -48,18 +48,18 @@
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh | sh -s v1.2.2
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh | sh -s v1.2.3
```
Prefer to read the installer first?
```bash
-curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh
-sh install.sh v1.2.2
+curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh
+sh install.sh v1.2.3
# Or skip the script: the checkout it makes is one you can make yourself.
-git clone --depth 1 --branch v1.2.2 https://github.com/MongLong0214/commitlore
+git clone --depth 1 --branch v1.2.3 https://github.com/MongLong0214/commitlore
node commitlore/dist/commitlore.mjs --version
```
@@ -109,13 +109,13 @@ preserve, not for narrating every change.
macOS and Linux:
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh | sh -s v1.2.2
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh | sh -s v1.2.3
```
Windows:
```powershell
-& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.ps1))) v1.2.2
+& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.ps1))) v1.2.3
```
Requires Node.js 22.23.2+ and Git. The script checks both before it writes anything.
diff --git a/README.zh-CN.md b/README.zh-CN.md
index 8448a86b..337ab275 100644
--- a/README.zh-CN.md
+++ b/README.zh-CN.md
@@ -47,18 +47,18 @@
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh | sh -s v1.2.2
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh | sh -s v1.2.3
```
想先阅读安装器吗?
```bash
-curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh
-sh install.sh v1.2.2
+curl -fsSLO https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh
+sh install.sh v1.2.3
# 或者跳过脚本:它创建的检出,你自己也能创建。
-git clone --depth 1 --branch v1.2.2 https://github.com/MongLong0214/commitlore
+git clone --depth 1 --branch v1.2.3 https://github.com/MongLong0214/commitlore
node commitlore/dist/commitlore.mjs --version
```
@@ -105,13 +105,13 @@ CommitLore 把那份判断留在代码旁边。
macOS 和 Linux:
```bash
-curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh | sh -s v1.2.2
+curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh | sh -s v1.2.3
```
Windows:
```powershell
-& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.ps1))) v1.2.2
+& ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.ps1))) v1.2.3
```
需要 Node.js 22.23.2+ 和 Git。脚本会在写入任何内容前检查两者。
diff --git a/dist/commands/capture.d.ts b/dist/commands/capture.d.ts
index 6d56c408..552351ed 100644
--- a/dist/commands/capture.d.ts
+++ b/dist/commands/capture.d.ts
@@ -19,6 +19,7 @@
import type { Command } from 'commander';
import { type CaptureOutcome } from '../core/capture-outcome.js';
import { type CaptureShadowResult } from '../core/capture-shadow.js';
+import { type TranscriptWindow } from '../core/harvest.js';
import type { GuardAdvisory } from '../core/pending.js';
/** Why a drafted record did not survive. Empty when everything was accepted. */
export interface CaptureRejectionReport {
@@ -41,6 +42,13 @@ export interface CaptureResult {
nonce: string | null;
staged: boolean;
prompt?: string;
+ /**
+ * What of the transcript `prompt` carries, present whenever `prompt` is
+ * (#873). The prompt is bounded; verification is not — it reads the whole
+ * transcript. Without this a caller could not tell a slice from the session,
+ * and the prompt was previously the session, at whatever size that was.
+ */
+ transcript_window?: TranscriptWindow;
guard_advisory?: GuardAdvisory | null;
/**
* Every reason a record was refused (#309). Both sources are included: the
diff --git a/dist/commands/capture.js b/dist/commands/capture.js
index f57e0124..e13a16a2 100644
--- a/dist/commands/capture.js
+++ b/dist/commands/capture.js
@@ -131,6 +131,7 @@ const runCapturePipeline = (opts) => {
nonce: null,
staged: false,
prompt: prepareResult.prompt,
+ transcript_window: prepareResult.transcript_window,
guard_advisory: prepareResult.guard_advisory,
};
}
@@ -264,7 +265,8 @@ export const register = (program) => {
// when a subcommand was invoked, so `capture gc` — which needs no transcript
// — would fail before its own action ran. The requirement is enforced in the
// action below instead, where it applies only to the capture flow itself.
- .option('--transcript ', 'path to the session transcript file')
+ .option('--transcript ', 'path to the session transcript file (the prompt carries its last 256 KiB; ' +
+ 'COMMITLORE_TRANSCRIPT_BUDGET_BYTES changes that, and verification always reads all of it)')
.option('--diff ', 'path to the diff file (defaults to the staged diff)')
.option('--draft ', 'path to the draft JSON file (omit for prompt-only mode)')
.option('--out ', 'write the pending nonce to a file')
diff --git a/dist/commands/capture.js.map b/dist/commands/capture.js.map
index 48df5940..401907c1 100644
--- a/dist/commands/capture.js.map
+++ b/dist/commands/capture.js.map
@@ -1 +1 @@
-{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/commands/capture.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/commitlore.mjs b/dist/commitlore.mjs
index 036633b0..805633f5 100755
--- a/dist/commitlore.mjs
+++ b/dist/commitlore.mjs
@@ -12140,11 +12140,71 @@ var vocabularyBlock = (entries) => {
}
return lines;
};
-var numberLines = (text) => {
+var numberLines = (text, firstLine6 = 1) => {
const lines = text.split("\n");
if (lines.length > 1 && lines[lines.length - 1] === "") lines.pop();
- const width = String(lines.length).length;
- return lines.map((line2, index) => `${String(index + 1).padStart(width)} | ${line2}`).join("\n");
+ const width = String(firstLine6 + lines.length - 1).length;
+ return lines.map((line2, index) => `${String(firstLine6 + index).padStart(width)} | ${line2}`).join("\n");
+};
+var DEFAULT_TRANSCRIPT_BUDGET_BYTES = 256 * 1024;
+var transcriptBudgetBytes = () => {
+ const raw = Number(process.env["COMMITLORE_TRANSCRIPT_BUDGET_BYTES"]);
+ return Number.isFinite(raw) && raw > 0 ? Math.floor(raw) : DEFAULT_TRANSCRIPT_BUDGET_BYTES;
+};
+var lineBytes = (line2) => Buffer.byteLength(line2, "utf8") + 1;
+var tailBytes = (line2, budget) => Buffer.from(line2, "utf8").subarray(-budget).toString("utf8").replace(/^\uFFFD+/, "");
+var windowTranscript = (transcript, budget = transcriptBudgetBytes()) => {
+ const lines = transcript.split("\n");
+ if (lines.length > 1 && lines[lines.length - 1] === "") lines.pop();
+ const totalLines = lines.length;
+ const totalBytes = Buffer.byteLength(transcript, "utf8");
+ let kept = 0;
+ let bytes = 0;
+ for (let index = totalLines - 1; index >= 0; index -= 1) {
+ const next = bytes + lineBytes(lines[index]);
+ if (next > budget && kept > 0) break;
+ if (next > budget) break;
+ bytes = next;
+ kept += 1;
+ }
+ if (kept === 0) {
+ const last = lines[totalLines - 1] ?? "";
+ const text2 = tailBytes(last, budget);
+ return {
+ text: text2,
+ window: {
+ first_line: totalLines,
+ last_line: totalLines,
+ total_lines: totalLines,
+ total_bytes: totalBytes,
+ window_bytes: Buffer.byteLength(text2, "utf8"),
+ truncated: true,
+ first_line_partial: true
+ }
+ };
+ }
+ const firstLine6 = totalLines - kept + 1;
+ const text = lines.slice(firstLine6 - 1).join("\n");
+ return {
+ text,
+ window: {
+ first_line: firstLine6,
+ last_line: totalLines,
+ total_lines: totalLines,
+ total_bytes: totalBytes,
+ window_bytes: Buffer.byteLength(text, "utf8"),
+ truncated: firstLine6 > 1,
+ first_line_partial: false
+ }
+ };
+};
+var windowNotice = (window) => {
+ if (!window.truncated) return [];
+ const omitted = window.first_line - 1;
+ return [
+ `(This is the end of the transcript: lines ${window.first_line}-${window.last_line} of ${window.total_lines}, ${omitted} earlier line(s) omitted to bound this prompt${window.first_line_partial ? `, and line ${window.first_line} is shown from its middle` : ""}. The numbers below are the transcript's own, so a locator you write still names the line in the whole file. Cite only what you can see here.)`,
+ ""
+ ];
};
var outputBlock = (entries) => {
const claims = entries.filter((entry) => entry.claim).map((entry) => entry.key);
@@ -12206,10 +12266,11 @@ var buildHarvestContract = () => {
""
].join("\n");
};
-var buildHarvestPrompt = (input) => {
+var buildHarvestPromptWithWindow = (input) => {
const entries = loadVocabulary().filter((entry) => entry.key !== "Verified");
const diff = input.diff.trim() === "" ? "(no diff)" : input.diff.replace(/\n+$/, "");
- return [
+ const { text, window } = windowTranscript(input.transcript);
+ const prompt = [
"# CommitLore harvest",
"",
"You are recording the decision context for a change that is about to be",
@@ -12230,14 +12291,17 @@ var buildHarvestPrompt = (input) => {
"",
"## TRANSCRIPT",
"",
- numberLines(input.transcript),
+ ...windowNotice(window),
+ numberLines(text, window.first_line),
"",
"## DIFF",
"",
diff,
""
].join("\n");
+ return { prompt, window };
};
+var buildHarvestPrompt = (input) => buildHarvestPromptWithWindow(input).prompt;
var RECORD_FIELDS = ["trailers", "evidence"];
var EVIDENCE_FIELDS = ["key", "source", "quote", "locator"];
var EVIDENCE_SOURCES = ["transcript", "diff"];
@@ -16963,13 +17027,15 @@ var prepareValues = (opts) => {
...opts.requireSignedDirective === true ? { requireSignedDirective: true } : {},
...opts.trustedSignerFingerprints === void 0 ? {} : { trustedSignerFingerprints: opts.trustedSignerFingerprints }
});
+ const harvest2 = buildHarvestPromptWithWindow({ transcript, diff });
return {
base_head: baseHead,
staged_diff_hash: stagedDiffHash,
staged_tree_oid: stagedTreeOid,
policy_identity_hash: policy.identityHash,
source_hashes: sourceHashes,
- prompt: buildHarvestPrompt({ transcript, diff }),
+ prompt: harvest2.prompt,
+ transcript_window: harvest2.window,
guard_advisory: advisory,
policy_error: policy.error
};
@@ -16994,6 +17060,7 @@ var prepareCaptureContext = (opts) => {
policy_identity_hash: prepared.policy_identity_hash,
source_hashes: prepared.source_hashes,
prompt: prepared.prompt,
+ transcript_window: prepared.transcript_window,
policy_error: prepared.policy_error,
guard_advisory: prepared.guard_advisory
};
@@ -17019,6 +17086,7 @@ var prepareCaptureContextReadOnly = (opts) => {
policy_identity_hash: prepared.policy_identity_hash,
source_hashes: prepared.source_hashes,
prompt: prepared.prompt,
+ transcript_window: prepared.transcript_window,
policy_error: prepared.policy_error,
guard_advisory: prepared.guard_advisory,
pending: pending2
@@ -18078,6 +18146,7 @@ commitlore capture: the built-in defaults were used for this capture
nonce: null,
staged: false,
prompt: prepareResult.prompt,
+ transcript_window: prepareResult.transcript_window,
guard_advisory: prepareResult.guard_advisory
};
}
@@ -18191,7 +18260,10 @@ var emitCaptureOutcome = (result, opts) => {
var register3 = (program3) => {
const capture = program3.command("capture").description(
"prepare \u2192 verify \u2192 stage a record from a transcript and draft (no trailer syntax needed)"
- ).option("--transcript ", "path to the session transcript file").option("--diff ", "path to the diff file (defaults to the staged diff)").option("--draft ", "path to the draft JSON file (omit for prompt-only mode)").option("--out ", "write the pending nonce to a file").option("--shadow", "measure historical capture candidates without writing anything").option("--since ", "exclusive historical lower bound for --shadow").option("--json", "emit structured JSON output").option(
+ ).option(
+ "--transcript ",
+ "path to the session transcript file (the prompt carries its last 256 KiB; COMMITLORE_TRANSCRIPT_BUDGET_BYTES changes that, and verification always reads all of it)"
+ ).option("--diff ", "path to the diff file (defaults to the staged diff)").option("--draft ", "path to the draft JSON file (omit for prompt-only mode)").option("--out ", "write the pending nonce to a file").option("--shadow", "measure historical capture candidates without writing anything").option("--since ", "exclusive historical lower bound for --shadow").option("--json", "emit structured JSON output").option(
"--unattended",
`declare this capture unattended: prepared, verified and staged without asking. Refused unless the repository opted in (${POLICY_FILE_NAME}: "unattended": true, mode "auto")`
).addHelpText(
@@ -35744,7 +35816,7 @@ var TOOLS = [
},
{
name: PREPARE_CAPTURE_TOOL,
- description: 'Prepare a capture transaction: computes binding conditions (HEAD, staged diff, tree, policy hash), generates the prompt contract for the agent to use, and persists a phase:"prepared" pending transaction. Returns the nonce needed for verify and stage.',
+ description: 'Prepare a capture transaction: computes binding conditions (HEAD, staged diff, tree, policy hash), generates the prompt contract for the agent to use, and persists a phase:"prepared" pending transaction. Returns the nonce needed for verify and stage. The prompt carries the end of the transcript rather than all of it; transcript_window says which lines, numbered as the whole transcript numbers them. Verification still reads the whole transcript, so quote only what the prompt shows you.',
inputSchema: {
type: "object",
properties: {
@@ -35946,6 +36018,11 @@ Recording: when a change carries decision context the diff cannot show \u2014 a
policy_identity_hash: result.policy_identity_hash,
source_hashes: result.source_hashes,
prompt: result.prompt,
+ // What of the transcript that prompt carries (#873). It travels here
+ // for the same reason the two fields below do: MCP is the first-class
+ // surface for every agent but the plugin, and an agent handed a slice
+ // of its own session with no way to tell would cite the whole of it.
+ transcript_window: result.transcript_window,
// MCP is the first-class surface for every agent other than the Claude
// Code plugin, so both of these must travel here and not only to the
// pending file and the CLI. `guard_advisory` is always present, never
diff --git a/dist/core/capture-prepare.d.ts b/dist/core/capture-prepare.d.ts
index a4edb03c..522115a3 100644
--- a/dist/core/capture-prepare.d.ts
+++ b/dist/core/capture-prepare.d.ts
@@ -5,6 +5,7 @@
* contract via `buildHarvestPrompt`, and persists the prepared transaction
* through `createPending`.
*/
+import { type TranscriptWindow } from './harvest.js';
import { type GuardAdvisory, type PendingRecord } from './pending.js';
export interface PrepareCaptureOptions {
cwd: string;
@@ -43,6 +44,13 @@ export interface PrepareResult {
diff: string;
};
prompt: string;
+ /**
+ * What of the transcript the prompt carries (#873). The prompt is bounded;
+ * `source_hashes.transcript` and every verification are not — they are over
+ * the whole transcript. A caller that assumed the prompt was the session had
+ * no way to tell, so this says it.
+ */
+ transcript_window: TranscriptWindow;
guard_advisory: GuardAdvisory | null;
/**
* A named reason when a policy file exists but could not be used (T-1110).
diff --git a/dist/core/capture-prepare.js b/dist/core/capture-prepare.js
index f8706320..64361834 100644
--- a/dist/core/capture-prepare.js
+++ b/dist/core/capture-prepare.js
@@ -9,7 +9,7 @@ import { createHash, randomBytes } from 'node:crypto';
import { markCaptureError } from './capture-outcome.js';
import { execGitOrThrow } from './git.js';
import { guard, renderGuardMatch } from './guard.js';
-import { buildHarvestPrompt } from './harvest.js';
+import { buildHarvestPromptWithWindow } from './harvest.js';
import { policySourceLabel, resolvePolicy } from './capture-policy.js';
import { createPending, makePreparedPending, } from './pending.js';
import { isFullObjectId } from './types.js';
@@ -127,13 +127,15 @@ const prepareValues = (opts) => {
? {}
: { trustedSignerFingerprints: opts.trustedSignerFingerprints }),
});
+ const harvest = buildHarvestPromptWithWindow({ transcript, diff });
return {
base_head: baseHead,
staged_diff_hash: stagedDiffHash,
staged_tree_oid: stagedTreeOid,
policy_identity_hash: policy.identityHash,
source_hashes: sourceHashes,
- prompt: buildHarvestPrompt({ transcript, diff }),
+ prompt: harvest.prompt,
+ transcript_window: harvest.window,
guard_advisory: advisory,
policy_error: policy.error,
};
@@ -172,6 +174,7 @@ export const prepareCaptureContext = (opts) => {
policy_identity_hash: prepared.policy_identity_hash,
source_hashes: prepared.source_hashes,
prompt: prepared.prompt,
+ transcript_window: prepared.transcript_window,
policy_error: prepared.policy_error,
guard_advisory: prepared.guard_advisory,
};
@@ -204,6 +207,7 @@ export const prepareCaptureContextReadOnly = (opts) => {
policy_identity_hash: prepared.policy_identity_hash,
source_hashes: prepared.source_hashes,
prompt: prepared.prompt,
+ transcript_window: prepared.transcript_window,
policy_error: prepared.policy_error,
guard_advisory: prepared.guard_advisory,
pending,
diff --git a/dist/core/capture-prepare.js.map b/dist/core/capture-prepare.js.map
index 3478e2aa..5a5db6e6 100644
--- a/dist/core/capture-prepare.js.map
+++ b/dist/core/capture-prepare.js.map
@@ -1 +1 @@
-{"version":3,"file":"capture-prepare.js","sourceRoot":"","sources":["../../src/core/capture-prepare.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"capture-prepare.js","sourceRoot":"","sources":["../../src/core/capture-prepare.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/core/harvest.d.ts b/dist/core/harvest.d.ts
index 915756a4..0e7df6af 100644
--- a/dist/core/harvest.d.ts
+++ b/dist/core/harvest.d.ts
@@ -88,6 +88,37 @@ export declare const loadVocabulary: () => VocabularyEntry[];
export declare const EXAMPLE_DRAFT: {
records: DraftRecord[];
};
+/**
+ * What the prompt actually showed, so a caller is never left to assume it was
+ * the session. Nothing here changes what verification reads — the whole
+ * transcript is still hashed and still searched for every quote.
+ */
+export interface TranscriptWindow {
+ /** 1-based number, in the whole transcript, of the window's first line. */
+ first_line: number;
+ last_line: number;
+ total_lines: number;
+ /** Bytes of the whole transcript, so the caller can see the size it did not get. */
+ total_bytes: number;
+ /** Bytes of the window as the prompt carries it. */
+ window_bytes: number;
+ /** False when the whole transcript fitted and the window is the session. */
+ truncated: boolean;
+ /**
+ * True when `first_line` is shown from its middle. One JSONL line can hold a
+ * whole tool result and outrun the budget by itself, and a window of no lines
+ * at all would be worse than a window of one partial one.
+ */
+ first_line_partial: boolean;
+}
+/**
+ * The tail of `transcript` that fits in `budget` bytes, in whole lines where
+ * whole lines fit.
+ */
+export declare const windowTranscript: (transcript: string, budget?: number) => {
+ text: string;
+ window: TranscriptWindow;
+};
/**
* Builds the static prompt contract — everything an agent session needs to know
* about CommitLore's rules, vocabulary, and expected output format, without any
@@ -100,10 +131,16 @@ export declare const EXAMPLE_DRAFT: {
*/
export declare const buildHarvestContract: () => string;
/**
- * Builds the prompt contract handed to the user's agent session. Deterministic
- * by construction — no clock, no randomness, no model — so the same transcript
- * and diff always produce the same bytes.
+ * Builds the prompt contract handed to the user's agent session, and says what
+ * of the transcript it carries. Deterministic by construction — no clock, no
+ * randomness, no model — so the same transcript, diff and budget always produce
+ * the same bytes.
*/
+export declare const buildHarvestPromptWithWindow: (input: HarvestInput) => {
+ prompt: string;
+ window: TranscriptWindow;
+};
+/** The prompt alone, for the callers that only emit it. */
export declare const buildHarvestPrompt: (input: HarvestInput) => string;
/**
* Structural check for records already decoded from JSON, before any of them
diff --git a/dist/core/harvest.js b/dist/core/harvest.js
index 89d552ae..eb3fdb13 100644
--- a/dist/core/harvest.js
+++ b/dist/core/harvest.js
@@ -225,13 +225,124 @@ const vocabularyBlock = (entries) => {
}
return lines;
};
-/** Line-numbered so a citation can name a range the verifier can find again. */
-const numberLines = (text) => {
+/**
+ * Line-numbered so a citation can name a range the verifier can find again.
+ *
+ * `firstLine` is the number the first line of `text` carries in the whole
+ * transcript, which is 1 unless the prompt is showing a window of it. The
+ * numbers have to be the transcript's own: verification reads the whole
+ * transcript, and a locator renumbered to a window would name a different line
+ * of the file it is checked against (#873).
+ */
+const numberLines = (text, firstLine = 1) => {
const lines = text.split('\n');
if (lines.length > 1 && lines[lines.length - 1] === '')
lines.pop();
- const width = String(lines.length).length;
- return lines.map((line, index) => `${String(index + 1).padStart(width)} | ${line}`).join('\n');
+ const width = String(firstLine + lines.length - 1).length;
+ return lines
+ .map((line, index) => `${String(firstLine + index).padStart(width)} | ${line}`)
+ .join('\n');
+};
+/**
+ * How much transcript the prompt may carry.
+ *
+ * #873: the prompt embedded the transcript whole, so a 67,981,436-byte session
+ * produced a 67,468,122-byte prompt — larger than any model can read, which
+ * makes the capture pipeline unusable exactly on the long sessions that have
+ * the most to record. The reporter measured the pipeline working again at
+ * roughly half a megabyte and said, correctly, that they had not measured where
+ * the useful boundary is. Neither has this: 256 KiB is a bound chosen to be
+ * comfortably readable by current models while still carrying far more than the
+ * ~537,250-byte slice that was shown to work, not a claim about how much
+ * context a good record needs.
+ *
+ * It is the last bytes rather than the first: a decision is taken near the end
+ * of the session that implements it, and the diff being captured is that end.
+ */
+const DEFAULT_TRANSCRIPT_BUDGET_BYTES = 256 * 1024;
+/** An override, for an operator whose model reads more, or less, than this. */
+const transcriptBudgetBytes = () => {
+ const raw = Number(process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES']);
+ return Number.isFinite(raw) && raw > 0 ? Math.floor(raw) : DEFAULT_TRANSCRIPT_BUDGET_BYTES;
+};
+/** Byte length as the prompt will carry it, newline included. */
+const lineBytes = (line) => Buffer.byteLength(line, 'utf8') + 1;
+/**
+ * The last `budget` bytes of one line, without a split codepoint at the front.
+ * Slicing a UTF-8 buffer mid-character yields U+FFFD, and a replacement
+ * character inside a quotable line is a character nobody can copy back.
+ */
+const tailBytes = (line, budget) => Buffer.from(line, 'utf8').subarray(-budget).toString('utf8').replace(/^\uFFFD+/, '');
+/**
+ * The tail of `transcript` that fits in `budget` bytes, in whole lines where
+ * whole lines fit.
+ */
+export const windowTranscript = (transcript, budget = transcriptBudgetBytes()) => {
+ const lines = transcript.split('\n');
+ if (lines.length > 1 && lines[lines.length - 1] === '')
+ lines.pop();
+ const totalLines = lines.length;
+ const totalBytes = Buffer.byteLength(transcript, 'utf8');
+ let kept = 0;
+ let bytes = 0;
+ for (let index = totalLines - 1; index >= 0; index -= 1) {
+ const next = bytes + lineBytes(lines[index]);
+ if (next > budget && kept > 0)
+ break;
+ if (next > budget)
+ break; // not even the last line fits whole
+ bytes = next;
+ kept += 1;
+ }
+ if (kept === 0) {
+ // One line longer than the whole budget. Showing its tail keeps the window
+ // anchored where the decision is, and the line number stays the file's.
+ const last = lines[totalLines - 1] ?? '';
+ const text = tailBytes(last, budget);
+ return {
+ text,
+ window: {
+ first_line: totalLines,
+ last_line: totalLines,
+ total_lines: totalLines,
+ total_bytes: totalBytes,
+ window_bytes: Buffer.byteLength(text, 'utf8'),
+ truncated: true,
+ first_line_partial: true,
+ },
+ };
+ }
+ const firstLine = totalLines - kept + 1;
+ const text = lines.slice(firstLine - 1).join('\n');
+ return {
+ text,
+ window: {
+ first_line: firstLine,
+ last_line: totalLines,
+ total_lines: totalLines,
+ total_bytes: totalBytes,
+ window_bytes: Buffer.byteLength(text, 'utf8'),
+ truncated: firstLine > 1,
+ first_line_partial: false,
+ },
+ };
+};
+/**
+ * The line the prompt carries when it is showing a window, so the reader is
+ * told rather than left to infer it from a transcript that starts mid-sentence.
+ */
+const windowNotice = (window) => {
+ if (!window.truncated)
+ return [];
+ const omitted = window.first_line - 1;
+ return [
+ `(This is the end of the transcript: lines ${window.first_line}-${window.last_line} of ` +
+ `${window.total_lines}, ${omitted} earlier line(s) omitted to bound this prompt` +
+ `${window.first_line_partial ? `, and line ${window.first_line} is shown from its middle` : ''}. ` +
+ 'The numbers below are the transcript\'s own, so a locator you write still names ' +
+ 'the line in the whole file. Cite only what you can see here.)',
+ '',
+ ];
};
const outputBlock = (entries) => {
const claims = entries.filter((entry) => entry.claim).map((entry) => entry.key);
@@ -304,14 +415,16 @@ export const buildHarvestContract = () => {
].join('\n');
};
/**
- * Builds the prompt contract handed to the user's agent session. Deterministic
- * by construction — no clock, no randomness, no model — so the same transcript
- * and diff always produce the same bytes.
+ * Builds the prompt contract handed to the user's agent session, and says what
+ * of the transcript it carries. Deterministic by construction — no clock, no
+ * randomness, no model — so the same transcript, diff and budget always produce
+ * the same bytes.
*/
-export const buildHarvestPrompt = (input) => {
+export const buildHarvestPromptWithWindow = (input) => {
const entries = loadVocabulary().filter((entry) => entry.key !== 'Verified');
const diff = input.diff.trim() === '' ? '(no diff)' : input.diff.replace(/\n+$/, '');
- return [
+ const { text, window } = windowTranscript(input.transcript);
+ const prompt = [
'# CommitLore harvest',
'',
'You are recording the decision context for a change that is about to be',
@@ -332,14 +445,18 @@ export const buildHarvestPrompt = (input) => {
'',
'## TRANSCRIPT',
'',
- numberLines(input.transcript),
+ ...windowNotice(window),
+ numberLines(text, window.first_line),
'',
'## DIFF',
'',
diff,
'',
].join('\n');
+ return { prompt, window };
};
+/** The prompt alone, for the callers that only emit it. */
+export const buildHarvestPrompt = (input) => buildHarvestPromptWithWindow(input).prompt;
const RECORD_FIELDS = ['trailers', 'evidence'];
const EVIDENCE_FIELDS = ['key', 'source', 'quote', 'locator'];
const EVIDENCE_SOURCES = ['transcript', 'diff'];
diff --git a/dist/core/harvest.js.map b/dist/core/harvest.js.map
index 9527b6ec..5ddbf8b0 100644
--- a/dist/core/harvest.js.map
+++ b/dist/core/harvest.js.map
@@ -1 +1 @@
-{"version":3,"file":"harvest.js","sourceRoot":"","sources":["../../src/core/harvest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACV,sBAAsB,EACtB,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,WAAW,GAGZ,MAAM,YAAY,CAAC;AAqEpB;;;;GAIG;AACH,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,SAAS,CAAU,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAC7C,MAAM,mBAAmB,GAAG,qCAAqC,CAAC;AAClE,MAAM,mBAAmB,GAAG,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;AAEjE;;;;;GAKG;AACH,MAAM,kBAAkB,GAAqC;IAC3D,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;IAC7B,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;IACvC,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACtE,UAAU,EAAE,sBAAsB;CACnC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,MAAc,EAAS,EAAE,CACtC,IAAI,KAAK,CAAC,+CAA+C,MAAM,EAAE,CAAC,CAAC;AAErE;;;;GAIG;AACH,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAY,EAAE,CAC1C,IAAI;KACD,IAAI,EAAE;KACN,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;KAClB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;KACzB,KAAK,CAAC,WAAW,CAAC;KAClB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAExE,yEAAyE;AACzE,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAY,EAAE;IACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxD,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAqB,EAAE;IACrE,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,OAAO,GAAG,EAAE,CAAC;IAEjB,KAAK,MAAM,IAAI,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAEpC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEjC,MAAM,CAAC,MAAM,GAAG,EAAE,EAAE,WAAW,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;QAC7E,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,SAAS;QAEtD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,GAAG,KAAK,EAAE;YAAE,MAAM,KAAK,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAC;QACxE,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,KAAK,CAAC,GAAG,GAAG,mBAAmB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YACzD,MAAM,KAAK,CAAC,GAAG,GAAG,eAAe,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,mBAAmB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9G,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC;YACX,GAAG;YACH,OAAO,EAAE,SAAS,IAAI,WAAW;YACjC,UAAU,EAAE,UAAU,KAAK,KAAK;YAChC,OAAO;YACP,OAAO;YACP,KAAK,EAAE,OAAO,KAAK,aAAa;SACjC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,OAA0B,EAAE,QAAkB,EAAQ,EAAE;IAClF,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,KAAK,CAAC,kBAAkB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,CAAC,YAAY,UAAU,CAAC,MAAM,8CAA8C,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,KAAK,CAAC,aAAa,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtG,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,UAAU,KAAK,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,CACT,GAAG,KAAK,CAAC,GAAG,0BAA0B,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI;gBACvE,0BAA0B,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,KAAK,CACrF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpG,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzD,MAAM,KAAK,CACT,4BAA4B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAClD,oCAAoC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACxE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,UAAU,GAA6B,IAAI,CAAC;AAEhD,wDAAwD;AACxD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAsB,EAAE;IACpD,IAAI,UAAU,KAAK,IAAI;QAAE,UAAU,GAAG,eAAe,CAAC,iBAAiB,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;IACxF,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAA+B;IACvD,OAAO,EAAE;QACP;YACE,QAAQ,EAAE;gBACR,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,0BAA0B,EAAE;gBACnD;oBACE,GAAG,EAAE,WAAW;oBAChB,KAAK,EAAE,iEAAiE;iBACzE;aACF;YACD,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,OAAO;oBACZ,MAAM,EAAE,YAAY;oBACpB,KAAK,EAAE,0BAA0B;oBACjC,OAAO,EAAE,OAAO;iBACjB;gBACD;oBACE,GAAG,EAAE,WAAW;oBAChB,MAAM,EAAE,YAAY;oBACpB,KAAK,EAAE,kDAAkD;oBACzD,OAAO,EAAE,OAAO;iBACjB;aACF;SACF;KACF;CACF,CAAC;AAEF,MAAM,KAAK,GAAG;IACZ,gFAAgF;IAChF,iDAAiD;IACjD,+EAA+E;IAC/E,iFAAiF;IACjF,8BAA8B;IAC9B,gFAAgF;IAChF,iFAAiF;IACjF,iFAAiF;IACjF,8EAA8E;IAC9E,gEAAgE;IAChE,4EAA4E;IAC5E,+CAA+C;IAC/C,8EAA8E;IAC9E,qBAAqB;IACrB,iFAAiF;IACjF,gFAAgF;CACjF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,cAAc,GAAG,CAAC,OAA0B,EAAY,EAAE,CAC9D,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;IACzB,OAAO,KAAK,CAAC,GAAG,SAAS,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,GAAG;IAC/F,KAAK,KAAK,CAAC,OAAO,EAAE;CACrB,CAAC,CAAC;AAEL,MAAM,eAAe,GAAG,CAAC,OAA0B,EAAY,EAAE;IAC/D,MAAM,KAAK,GAAa;QACtB,eAAe;QACf,EAAE;QACF,GAAG,OAAO,CAAC,MAAM,qEAAqE;KACvF,CAAC;IACF,KAAK,MAAM,OAAO,IAAI,mBAAmB,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QAClE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,OAAO,EAAE,EAAE,EAAE,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,gFAAgF;AAChF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,GAAG,EAAE,CAAC;IACpE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjG,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,OAA0B,EAAY,EAAE;IAC3D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChF,OAAO;QACL,WAAW;QACX,EAAE;QACF,yEAAyE;QACzE,gCAAgC;QAChC,EAAE;QACF,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,EAAE;QACF,cAAc;QACd,EAAE;QACF,4EAA4E;QAC5E,yDAAyD;QACzD,8EAA8E;QAC9E,iEAAiE;QACjE,wEAAwE;QACxE,8EAA8E;QAC9E,wBAAwB;QACxB,0EAA0E;QAC1E,mBAAmB;QACnB,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACzB,0EAA0E;QAC1E,iDAAiD;QACjD,qEAAqE;QACrE,4EAA4E;QAC5E,uBAAuB;KACxB,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAW,EAAE;IAC/C,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;IAE7E,OAAO;QACL,sBAAsB;QACtB,EAAE;QACF,yEAAyE;QACzE,8EAA8E;QAC9E,yEAAyE;QACzE,6EAA6E;QAC7E,YAAY;QACZ,EAAE;QACF,uEAAuE;QACvE,EAAE;QACF,UAAU;QACV,EAAE;QACF,GAAG,KAAK;QACR,EAAE;QACF,GAAG,eAAe,CAAC,OAAO,CAAC;QAC3B,EAAE;QACF,GAAG,WAAW,CAAC,OAAO,CAAC;QACvB,EAAE;QACF,eAAe;QACf,EAAE;QACF,4BAA4B;QAC5B,EAAE;QACF,SAAS;QACT,EAAE;QACF,4BAA4B;QAC5B,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAmB,EAAU,EAAE;IAChE,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAErF,OAAO;QACL,sBAAsB;QACtB,EAAE;QACF,yEAAyE;QACzE,8EAA8E;QAC9E,yEAAyE;QACzE,6EAA6E;QAC7E,YAAY;QACZ,EAAE;QACF,uEAAuE;QACvE,EAAE;QACF,UAAU;QACV,EAAE;QACF,GAAG,KAAK;QACR,EAAE;QACF,GAAG,eAAe,CAAC,OAAO,CAAC;QAC3B,EAAE;QACF,GAAG,WAAW,CAAC,OAAO,CAAC;QACvB,EAAE;QACF,eAAe;QACf,EAAE;QACF,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC;QAC7B,EAAE;QACF,SAAS;QACT,EAAE;QACF,IAAI;QACJ,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AAC/C,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAC9D,MAAM,gBAAgB,GAA8B,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAE3E,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAA2B,EAAE,CACnE,gBAAgB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AAEtD,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAEvE,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAmB,EAAE,CAC3D,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;AAEnD,MAAM,aAAa,GAAG,CAAC,KAA8B,EAAE,OAAiB,EAAY,EAAE,CACpF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;KACf,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC3C,IAAI,EAAE,CAAC;AAEZ,MAAM,MAAM,GAAG,CACb,KAAa,EACb,IAAmB,EACnB,MAAc,EACd,aAA0B,EAAE,EACZ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AAE3D;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAC,KAAc,EAAsB,EAAE;IAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,iBAAiB,OAAO,KAAK,iBAAiB,CAAC;IACjF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,iEAAiE,CAAC;IAEjG,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,YAAY,KAAK,oBAAoB,CAAC;QACnE,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QACrD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,YAAY,KAAK,2BAA2B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5F,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,YAAY,KAAK,iCAAiC,CAAC;QAC/F,IAAI,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,YAAY,KAAK,yBAAyB,CAAC;QAC1F,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAc,EAA4B,EAAE;IAChE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,iBAAiB,OAAO,KAAK,iBAAiB,CAAC;IAEjF,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,YAAY,KAAK,oBAAoB,CAAC;QACnE,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,YAAY,KAAK,2BAA2B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAE5F,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,OAAO,YAAY,KAAK,eAAe,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACzG,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;YAAE,OAAO,YAAY,KAAK,iCAAiC,CAAC;QACtF,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAAE,OAAO,YAAY,KAAK,mCAAmC,CAAC;QAC1F,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;YAAE,OAAO,YAAY,KAAK,qCAAqC,CAAC;QAE9F,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,mFAAmF;AACnF,MAAM,iBAAiB,GAAG,CAAC,SAAoB,EAAU,EAAE,CACzD,SAAS,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG;IAC7B,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,KAAK,SAAS,CAAC,IAAI,UAAU,SAAS,CAAC,IAAI,GAAG;IAChE,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,IAAI,UAAU,SAAS,CAAC,IAAI,GAAG,CAAC;AAEvG,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,KAAa,EAAgC,EAAE;IACnF,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,aAAa,OAAO,KAAK,EAAE,CAAC,CAAC;IAEzF,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACjD,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,EAAE,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAEvF,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC,KAAK,EAAE,kBAAkB,EAAE,gDAAgD,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACjD,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,EAAE,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IACvF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,KAAK,EAAE,kBAAkB,EAAE,sDAAsD,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CACX,KAAK,EACL,iBAAiB,EACjB,kBAAkB,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAmC,CACjG,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,cAAc,EAAE;SACb,MAAM,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;SAClD,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CACjD,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACjF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CACX,KAAK,EACL,cAAc,EACd,qBAAqB,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CACX,KAAK,EACL,YAAY,EACZ,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5C,UAAU,CACX,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAA2B,EAAiB,EAAE;IAC9E,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAU,CAAC;IAEvE,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,MAAM,EAAE,GAAG,UAAU,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,GAAG,EAAE,mBAAmB,CAAC;QAEvD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,GAAG,EAAE,+BAA+B,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,GAAG,EAAE,+BAA+B,CAAC;QAE1E,KAAK,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,OAAO,GAAG,EAAE,cAAc,CAAC,oBAAoB,CAAC;YACxE,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,QAAQ;gBAAE,OAAO,GAAG,EAAE,cAAc,CAAC,uBAAuB,CAAC;YAC3F,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ;gBAAE,OAAO,GAAG,EAAE,cAAc,CAAC,yBAAyB,CAAC;QACjG,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,GAAG,EAAE,cAAc,CAAC,oBAAoB,CAAC;YACrE,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;gBACpC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACpC,OAAO,GAAG,EAAE,cAAc,CAAC,oBAAoB,KAAK,GAAG,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,GAAW,EAAa,EAAE;IAC/C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YAC9C,CAAC,CAAC,kEAAkE;YACpE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAe,EAAE;IACrD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAqB,EAAE,CAAC;IAEtC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC1C,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,MAAM,IAAI,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;YAC3C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC,CAAC"}
\ No newline at end of file
+{"version":3,"file":"harvest.js","sourceRoot":"","sources":["../../src/core/harvest.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/dist/mcp/server.js b/dist/mcp/server.js
index c917b845..99654132 100644
--- a/dist/mcp/server.js
+++ b/dist/mcp/server.js
@@ -311,7 +311,10 @@ const TOOLS = [
name: PREPARE_CAPTURE_TOOL,
description: 'Prepare a capture transaction: computes binding conditions (HEAD, staged diff, tree, ' +
'policy hash), generates the prompt contract for the agent to use, and persists a ' +
- 'phase:"prepared" pending transaction. Returns the nonce needed for verify and stage.',
+ 'phase:"prepared" pending transaction. Returns the nonce needed for verify and stage. ' +
+ 'The prompt carries the end of the transcript rather than all of it; transcript_window ' +
+ 'says which lines, numbered as the whole transcript numbers them. Verification still ' +
+ 'reads the whole transcript, so quote only what the prompt shows you.',
inputSchema: {
type: 'object',
properties: {
@@ -550,6 +553,11 @@ export const createServer = (opts = {}) => {
policy_identity_hash: result.policy_identity_hash,
source_hashes: result.source_hashes,
prompt: result.prompt,
+ // What of the transcript that prompt carries (#873). It travels here
+ // for the same reason the two fields below do: MCP is the first-class
+ // surface for every agent but the plugin, and an agent handed a slice
+ // of its own session with no way to tell would cite the whole of it.
+ transcript_window: result.transcript_window,
// MCP is the first-class surface for every agent other than the Claude
// Code plugin, so both of these must travel here and not only to the
// pending file and the CLI. `guard_advisory` is always present, never
diff --git a/dist/mcp/server.js.map b/dist/mcp/server.js.map
index ea6e7e29..6b3c09c3 100644
--- a/dist/mcp/server.js.map
+++ b/dist/mcp/server.js.map
@@ -1 +1 @@
-{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/install.ps1 b/install.ps1
index 0e7bc0fd..055f8561 100644
--- a/install.ps1
+++ b/install.ps1
@@ -1,8 +1,8 @@
<#
Installs commitlore from source on Windows, for any agent that is not Claude Code.
- irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.ps1 | iex
- & ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.ps1))) v1.2.2
+ irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.ps1 | iex
+ & ([scriptblock]::Create((irm https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.ps1))) v1.2.3
Claude Code users do not need this script. The repository is itself a plugin
marketplace (ADR-0011), so two /plugin commands register the MCP server, the
diff --git a/install.sh b/install.sh
index c05ff382..f77ed7cb 100755
--- a/install.sh
+++ b/install.sh
@@ -1,8 +1,8 @@
#!/bin/sh
# Installs commitlore from source, for any agent that is not Claude Code.
#
-# curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh | sh
-# curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh | sh -s v1.2.2
+# curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh | sh
+# curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh | sh -s v1.2.3
#
# **Claude Code users do not need this script.** The repository is itself a
# plugin marketplace (ADR-0011), so two `/plugin` commands register the MCP
diff --git a/installer/canonical-artifact.json b/installer/canonical-artifact.json
index 070eb95c..f0c599be 100644
--- a/installer/canonical-artifact.json
+++ b/installer/canonical-artifact.json
@@ -15,10 +15,10 @@
"tsconfig.json",
"src"
],
- "sha256": "45e30addd45df3174eaa17f131a907b4edb090cf50ef0a87737819da5b138a0d"
+ "sha256": "7a52859972c6d27bceb02a6385ada26d043a3074040dd543e1b8aa363a57adb8"
},
"artifact": {
- "sha256": "00306399c5cbb24b9c1ed0a6b6429cb54e81f71faef61a7cecd82dc6d5bb44ed",
+ "sha256": "840230caf73d42cfd29a2be799d204f15f9aa544448fcb4e6d735bedc1ab0847",
"files": [
{
"path": "dist/cli.d.ts",
@@ -58,15 +58,15 @@
},
{
"path": "dist/commands/capture.d.ts",
- "sha256": "694856a94b576aa910ef96417302af30c4b28959d86cf5d073f8bf455d0709a2"
+ "sha256": "13cf68e83d22ee0b81a1e44a409351786f2ebec6ddb75f5eb3dc355b9eaec341"
},
{
"path": "dist/commands/capture.js",
- "sha256": "102acc2705e0881b541b3a239003d2f10e155972c7e9922ccbea076e30465fce"
+ "sha256": "4ce293e005e3cbc898f2a9fd230b5c98dd83ebb4d3e35c57b87b6b8b23057676"
},
{
"path": "dist/commands/capture.js.map",
- "sha256": "a4d64aa0a4cfb54bcf7572f8c4dd4c7f036075e03d780599c8271f37284985f4"
+ "sha256": "94fe0ee505c05caa6916bda2dc979648bf75e3a2855695f60771c312126648e3"
},
{
"path": "dist/commands/demo.d.ts",
@@ -622,7 +622,7 @@
},
{
"path": "dist/commitlore.mjs",
- "sha256": "6af330ff5dedf4b7b4202ad193b1cdf780c6333fd6bf94d3679293198400bbf8"
+ "sha256": "f9fbb5b0753abd257b66d28a4f5056e3e76a905ff4df3f979730ee216a84a7fb"
},
{
"path": "dist/core/agent-configs.d.ts",
@@ -698,15 +698,15 @@
},
{
"path": "dist/core/capture-prepare.d.ts",
- "sha256": "e8ce2f93118619ad807f6113a7d38161c5859663d3f1a31c443e683727c1907e"
+ "sha256": "259c18c2c6e7e148ddd0b86f32b9f2930a626d1721b6f8f852356ff9aa9f922a"
},
{
"path": "dist/core/capture-prepare.js",
- "sha256": "32b8c3fb0f5dff02f6f66098cfc72b19fa1c9df0ac3219e55877fc3f37e917a0"
+ "sha256": "dbfd507ae6b20f19d6aab3edc776f815279e2f2d631c4c37a866be2ca7b94297"
},
{
"path": "dist/core/capture-prepare.js.map",
- "sha256": "ecea31bd27f8315286d0e6cf35ce123e42d6e04919bbdd745ce5def510aa700a"
+ "sha256": "9e3ba12b2a7dceea12de96c417235a95e3409febaeb7d3cd606724ca35379ad1"
},
{
"path": "dist/core/capture-shadow.d.ts",
@@ -806,15 +806,15 @@
},
{
"path": "dist/core/harvest.d.ts",
- "sha256": "43b92d4334c7ea87c26cd65d022a6ec958d774f9646979555866e0a1c1285d24"
+ "sha256": "3acccd3fd069dcd81636aa8262c9c425604731fab47eaf9e75b817d57916823c"
},
{
"path": "dist/core/harvest.js",
- "sha256": "8a4f9bd665ee7467d58f3a80a64fe3fc708067819790bd0a2b9d04deb10d3136"
+ "sha256": "47dd78f3dfe82757b7d71d2c2e96a3d8fef69d42a49e6611a6463352b139baea"
},
{
"path": "dist/core/harvest.js.map",
- "sha256": "8a1c03acccac7fba59c39cd8fc2b738a1cfa69702e3e1f81e3dceebc32db54df"
+ "sha256": "27166b15d3c43f9949ec5650d490286f68c34e753845e928189c2b809917957c"
},
{
"path": "dist/core/hermes-config.d.ts",
@@ -1242,11 +1242,11 @@
},
{
"path": "dist/mcp/server.js",
- "sha256": "148970dbd5036f9bb697c7da1ac284d0acec175ca5ed1e747ce8ae5872c48591"
+ "sha256": "3ea4b603be9029facd7a4804eebe97b8a529b121e45f04287ca58bc9b8b77f6b"
},
{
"path": "dist/mcp/server.js.map",
- "sha256": "5e26cad74836fcee54909b84c06d6555801f9d08e7f36f3b6d5bb19ab615618c"
+ "sha256": "5598bfa86214f1783a73f2658c5de648567a24f7c8da7d4ae6a4b2bc3862550d"
},
{
"path": "dist/mcp/validate-args.d.ts",
diff --git a/package-lock.json b/package-lock.json
index 24b1d386..282256ab 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "commitlore",
- "version": "1.2.2",
+ "version": "1.2.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "commitlore",
- "version": "1.2.2",
+ "version": "1.2.3",
"license": "MIT",
"dependencies": {
"@modelcontextprotocol/sdk": "^1.30.0",
diff --git a/package.json b/package.json
index b2e96388..e3d0c2a1 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "commitlore",
- "version": "1.2.2",
+ "version": "1.2.3",
"description": "Git-native, lifecycle-aware decision memory for coding agents",
"license": "MIT",
"private": true,
diff --git a/server.json b/server.json
index f597fef4..503946f5 100644
--- a/server.json
+++ b/server.json
@@ -8,7 +8,7 @@
"source": "github"
},
"websiteUrl": "https://github.com/MongLong0214/commitlore#readme",
- "version": "1.2.2",
+ "version": "1.2.3",
"_meta": {
"io.modelcontextprotocol.registry/publisher-provided": {
"registryFit": "Distribution is a tagged git checkout plus a Claude Code plugin marketplace (ADR-0011 registry-free git distribution, ADR-0026 no compiled executables and no uploaded release asset), so no official package type applies and this record relies on websiteUrl plus publisher metadata.",
@@ -18,8 +18,8 @@
"/plugin marketplace add MongLong0214/commitlore",
"/plugin install commitlore@commitlore"
],
- "installer": "curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.2/install.sh | sh -s v1.2.2",
- "release": "https://github.com/MongLong0214/commitlore/releases/tag/v1.2.2"
+ "installer": "curl -fsSL https://raw.githubusercontent.com/MongLong0214/commitlore/v1.2.3/install.sh | sh -s v1.2.3",
+ "release": "https://github.com/MongLong0214/commitlore/releases/tag/v1.2.3"
},
"runtime": {
"transport": "stdio",
diff --git a/src/commands/capture.ts b/src/commands/capture.ts
index f7e8de75..90e70de9 100644
--- a/src/commands/capture.ts
+++ b/src/commands/capture.ts
@@ -39,7 +39,7 @@ import {
configuredTrustedSignerFingerprints,
configuredTrustedAuthors,
} from '../core/trusted-authors.js';
-import { parseDraft } from '../core/harvest.js';
+import { parseDraft, type TranscriptWindow } from '../core/harvest.js';
import { gcPending } from '../core/pending-gc.js';
import type { GuardAdvisory } from '../core/pending.js';
@@ -80,6 +80,13 @@ export interface CaptureResult {
nonce: string | null;
staged: boolean;
prompt?: string;
+ /**
+ * What of the transcript `prompt` carries, present whenever `prompt` is
+ * (#873). The prompt is bounded; verification is not — it reads the whole
+ * transcript. Without this a caller could not tell a slice from the session,
+ * and the prompt was previously the session, at whatever size that was.
+ */
+ transcript_window?: TranscriptWindow;
guard_advisory?: GuardAdvisory | null;
/**
* Every reason a record was refused (#309). Both sources are included: the
@@ -238,6 +245,7 @@ const runCapturePipeline = (opts: {
nonce: null,
staged: false,
prompt: prepareResult.prompt,
+ transcript_window: prepareResult.transcript_window,
guard_advisory: prepareResult.guard_advisory,
};
}
@@ -383,7 +391,11 @@ export const register = (program: Command): void => {
// when a subcommand was invoked, so `capture gc` — which needs no transcript
// — would fail before its own action ran. The requirement is enforced in the
// action below instead, where it applies only to the capture flow itself.
- .option('--transcript ', 'path to the session transcript file')
+ .option(
+ '--transcript ',
+ 'path to the session transcript file (the prompt carries its last 256 KiB; ' +
+ 'COMMITLORE_TRANSCRIPT_BUDGET_BYTES changes that, and verification always reads all of it)',
+ )
.option('--diff ', 'path to the diff file (defaults to the staged diff)')
.option('--draft ', 'path to the draft JSON file (omit for prompt-only mode)')
.option('--out ', 'write the pending nonce to a file')
diff --git a/src/core/capture-prepare.ts b/src/core/capture-prepare.ts
index da1f1f82..6045de63 100644
--- a/src/core/capture-prepare.ts
+++ b/src/core/capture-prepare.ts
@@ -10,7 +10,7 @@ import { createHash, randomBytes } from 'node:crypto';
import { markCaptureError } from './capture-outcome.js';
import { execGitOrThrow } from './git.js';
import { guard, renderGuardMatch, type GuardResult } from './guard.js';
-import { buildHarvestPrompt } from './harvest.js';
+import { buildHarvestPromptWithWindow, type TranscriptWindow } from './harvest.js';
import { policySourceLabel, resolvePolicy } from './capture-policy.js';
import {
createPending,
@@ -136,6 +136,13 @@ export interface PrepareResult {
policy_identity_hash: string;
source_hashes: { transcript: string; diff: string };
prompt: string;
+ /**
+ * What of the transcript the prompt carries (#873). The prompt is bounded;
+ * `source_hashes.transcript` and every verification are not — they are over
+ * the whole transcript. A caller that assumed the prompt was the session had
+ * no way to tell, so this says it.
+ */
+ transcript_window: TranscriptWindow;
guard_advisory: GuardAdvisory | null;
/**
* A named reason when a policy file exists but could not be used (T-1110).
@@ -158,6 +165,7 @@ interface PreparedValues {
policy_identity_hash: string;
source_hashes: { transcript: string; diff: string };
prompt: string;
+ transcript_window: TranscriptWindow;
guard_advisory: GuardAdvisory | null;
policy_error: string | null;
}
@@ -248,13 +256,16 @@ const prepareValues = (opts: {
: { trustedSignerFingerprints: opts.trustedSignerFingerprints }),
});
+ const harvest = buildHarvestPromptWithWindow({ transcript, diff });
+
return {
base_head: baseHead,
staged_diff_hash: stagedDiffHash,
staged_tree_oid: stagedTreeOid,
policy_identity_hash: policy.identityHash,
source_hashes: sourceHashes,
- prompt: buildHarvestPrompt({ transcript, diff }),
+ prompt: harvest.prompt,
+ transcript_window: harvest.window,
guard_advisory: advisory,
policy_error: policy.error,
};
@@ -297,6 +308,7 @@ export const prepareCaptureContext = (opts: PrepareCaptureOptions): PrepareResul
policy_identity_hash: prepared.policy_identity_hash,
source_hashes: prepared.source_hashes,
prompt: prepared.prompt,
+ transcript_window: prepared.transcript_window,
policy_error: prepared.policy_error,
guard_advisory: prepared.guard_advisory,
};
@@ -335,6 +347,7 @@ export const prepareCaptureContextReadOnly = (opts: PrepareCaptureOptions & {
policy_identity_hash: prepared.policy_identity_hash,
source_hashes: prepared.source_hashes,
prompt: prepared.prompt,
+ transcript_window: prepared.transcript_window,
policy_error: prepared.policy_error,
guard_advisory: prepared.guard_advisory,
pending,
diff --git a/src/core/harvest.ts b/src/core/harvest.ts
index dbc51c1a..b07552d6 100644
--- a/src/core/harvest.ts
+++ b/src/core/harvest.ts
@@ -332,12 +332,156 @@ const vocabularyBlock = (entries: VocabularyEntry[]): string[] => {
return lines;
};
-/** Line-numbered so a citation can name a range the verifier can find again. */
-const numberLines = (text: string): string => {
+/**
+ * Line-numbered so a citation can name a range the verifier can find again.
+ *
+ * `firstLine` is the number the first line of `text` carries in the whole
+ * transcript, which is 1 unless the prompt is showing a window of it. The
+ * numbers have to be the transcript's own: verification reads the whole
+ * transcript, and a locator renumbered to a window would name a different line
+ * of the file it is checked against (#873).
+ */
+const numberLines = (text: string, firstLine = 1): string => {
const lines = text.split('\n');
if (lines.length > 1 && lines[lines.length - 1] === '') lines.pop();
- const width = String(lines.length).length;
- return lines.map((line, index) => `${String(index + 1).padStart(width)} | ${line}`).join('\n');
+ const width = String(firstLine + lines.length - 1).length;
+ return lines
+ .map((line, index) => `${String(firstLine + index).padStart(width)} | ${line}`)
+ .join('\n');
+};
+
+/**
+ * How much transcript the prompt may carry.
+ *
+ * #873: the prompt embedded the transcript whole, so a 67,981,436-byte session
+ * produced a 67,468,122-byte prompt — larger than any model can read, which
+ * makes the capture pipeline unusable exactly on the long sessions that have
+ * the most to record. The reporter measured the pipeline working again at
+ * roughly half a megabyte and said, correctly, that they had not measured where
+ * the useful boundary is. Neither has this: 256 KiB is a bound chosen to be
+ * comfortably readable by current models while still carrying far more than the
+ * ~537,250-byte slice that was shown to work, not a claim about how much
+ * context a good record needs.
+ *
+ * It is the last bytes rather than the first: a decision is taken near the end
+ * of the session that implements it, and the diff being captured is that end.
+ */
+const DEFAULT_TRANSCRIPT_BUDGET_BYTES = 256 * 1024;
+
+/** An override, for an operator whose model reads more, or less, than this. */
+const transcriptBudgetBytes = (): number => {
+ const raw = Number(process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES']);
+ return Number.isFinite(raw) && raw > 0 ? Math.floor(raw) : DEFAULT_TRANSCRIPT_BUDGET_BYTES;
+};
+
+/**
+ * What the prompt actually showed, so a caller is never left to assume it was
+ * the session. Nothing here changes what verification reads — the whole
+ * transcript is still hashed and still searched for every quote.
+ */
+export interface TranscriptWindow {
+ /** 1-based number, in the whole transcript, of the window's first line. */
+ first_line: number;
+ last_line: number;
+ total_lines: number;
+ /** Bytes of the whole transcript, so the caller can see the size it did not get. */
+ total_bytes: number;
+ /** Bytes of the window as the prompt carries it. */
+ window_bytes: number;
+ /** False when the whole transcript fitted and the window is the session. */
+ truncated: boolean;
+ /**
+ * True when `first_line` is shown from its middle. One JSONL line can hold a
+ * whole tool result and outrun the budget by itself, and a window of no lines
+ * at all would be worse than a window of one partial one.
+ */
+ first_line_partial: boolean;
+}
+
+/** Byte length as the prompt will carry it, newline included. */
+const lineBytes = (line: string): number => Buffer.byteLength(line, 'utf8') + 1;
+
+/**
+ * The last `budget` bytes of one line, without a split codepoint at the front.
+ * Slicing a UTF-8 buffer mid-character yields U+FFFD, and a replacement
+ * character inside a quotable line is a character nobody can copy back.
+ */
+const tailBytes = (line: string, budget: number): string =>
+ Buffer.from(line, 'utf8').subarray(-budget).toString('utf8').replace(/^\uFFFD+/, '');
+
+/**
+ * The tail of `transcript` that fits in `budget` bytes, in whole lines where
+ * whole lines fit.
+ */
+export const windowTranscript = (
+ transcript: string,
+ budget: number = transcriptBudgetBytes(),
+): { text: string; window: TranscriptWindow } => {
+ const lines = transcript.split('\n');
+ if (lines.length > 1 && lines[lines.length - 1] === '') lines.pop();
+ const totalLines = lines.length;
+ const totalBytes = Buffer.byteLength(transcript, 'utf8');
+
+ let kept = 0;
+ let bytes = 0;
+ for (let index = totalLines - 1; index >= 0; index -= 1) {
+ const next = bytes + lineBytes(lines[index]!);
+ if (next > budget && kept > 0) break;
+ if (next > budget) break; // not even the last line fits whole
+ bytes = next;
+ kept += 1;
+ }
+
+ if (kept === 0) {
+ // One line longer than the whole budget. Showing its tail keeps the window
+ // anchored where the decision is, and the line number stays the file's.
+ const last = lines[totalLines - 1] ?? '';
+ const text = tailBytes(last, budget);
+ return {
+ text,
+ window: {
+ first_line: totalLines,
+ last_line: totalLines,
+ total_lines: totalLines,
+ total_bytes: totalBytes,
+ window_bytes: Buffer.byteLength(text, 'utf8'),
+ truncated: true,
+ first_line_partial: true,
+ },
+ };
+ }
+
+ const firstLine = totalLines - kept + 1;
+ const text = lines.slice(firstLine - 1).join('\n');
+ return {
+ text,
+ window: {
+ first_line: firstLine,
+ last_line: totalLines,
+ total_lines: totalLines,
+ total_bytes: totalBytes,
+ window_bytes: Buffer.byteLength(text, 'utf8'),
+ truncated: firstLine > 1,
+ first_line_partial: false,
+ },
+ };
+};
+
+/**
+ * The line the prompt carries when it is showing a window, so the reader is
+ * told rather than left to infer it from a transcript that starts mid-sentence.
+ */
+const windowNotice = (window: TranscriptWindow): string[] => {
+ if (!window.truncated) return [];
+ const omitted = window.first_line - 1;
+ return [
+ `(This is the end of the transcript: lines ${window.first_line}-${window.last_line} of ` +
+ `${window.total_lines}, ${omitted} earlier line(s) omitted to bound this prompt` +
+ `${window.first_line_partial ? `, and line ${window.first_line} is shown from its middle` : ''}. ` +
+ 'The numbers below are the transcript\'s own, so a locator you write still names ' +
+ 'the line in the whole file. Cite only what you can see here.)',
+ '',
+ ];
};
const outputBlock = (entries: VocabularyEntry[]): string[] => {
@@ -414,15 +558,19 @@ export const buildHarvestContract = (): string => {
};
/**
- * Builds the prompt contract handed to the user's agent session. Deterministic
- * by construction — no clock, no randomness, no model — so the same transcript
- * and diff always produce the same bytes.
+ * Builds the prompt contract handed to the user's agent session, and says what
+ * of the transcript it carries. Deterministic by construction — no clock, no
+ * randomness, no model — so the same transcript, diff and budget always produce
+ * the same bytes.
*/
-export const buildHarvestPrompt = (input: HarvestInput): string => {
+export const buildHarvestPromptWithWindow = (
+ input: HarvestInput,
+): { prompt: string; window: TranscriptWindow } => {
const entries = loadVocabulary().filter((entry) => entry.key !== 'Verified');
const diff = input.diff.trim() === '' ? '(no diff)' : input.diff.replace(/\n+$/, '');
+ const { text, window } = windowTranscript(input.transcript);
- return [
+ const prompt = [
'# CommitLore harvest',
'',
'You are recording the decision context for a change that is about to be',
@@ -443,15 +591,22 @@ export const buildHarvestPrompt = (input: HarvestInput): string => {
'',
'## TRANSCRIPT',
'',
- numberLines(input.transcript),
+ ...windowNotice(window),
+ numberLines(text, window.first_line),
'',
'## DIFF',
'',
diff,
'',
].join('\n');
+
+ return { prompt, window };
};
+/** The prompt alone, for the callers that only emit it. */
+export const buildHarvestPrompt = (input: HarvestInput): string =>
+ buildHarvestPromptWithWindow(input).prompt;
+
const RECORD_FIELDS = ['trailers', 'evidence'];
const EVIDENCE_FIELDS = ['key', 'source', 'quote', 'locator'];
const EVIDENCE_SOURCES: readonly EvidenceSource[] = ['transcript', 'diff'];
diff --git a/src/mcp/server.ts b/src/mcp/server.ts
index 5f2767f9..92292b34 100644
--- a/src/mcp/server.ts
+++ b/src/mcp/server.ts
@@ -379,7 +379,10 @@ const TOOLS: readonly Tool[] = [
description:
'Prepare a capture transaction: computes binding conditions (HEAD, staged diff, tree, ' +
'policy hash), generates the prompt contract for the agent to use, and persists a ' +
- 'phase:"prepared" pending transaction. Returns the nonce needed for verify and stage.',
+ 'phase:"prepared" pending transaction. Returns the nonce needed for verify and stage. ' +
+ 'The prompt carries the end of the transcript rather than all of it; transcript_window ' +
+ 'says which lines, numbered as the whole transcript numbers them. Verification still ' +
+ 'reads the whole transcript, so quote only what the prompt shows you.',
inputSchema: {
type: 'object',
properties: {
@@ -638,6 +641,11 @@ export const createServer = (opts: McpServerOptions = {}): Server => {
policy_identity_hash: result.policy_identity_hash,
source_hashes: result.source_hashes,
prompt: result.prompt,
+ // What of the transcript that prompt carries (#873). It travels here
+ // for the same reason the two fields below do: MCP is the first-class
+ // surface for every agent but the plugin, and an agent handed a slice
+ // of its own session with no way to tell would cite the whole of it.
+ transcript_window: result.transcript_window,
// MCP is the first-class surface for every agent other than the Claude
// Code plugin, so both of these must travel here and not only to the
// pending file and the CLI. `guard_advisory` is always present, never
diff --git a/test/capture-prompt-budget.test.ts b/test/capture-prompt-budget.test.ts
new file mode 100644
index 00000000..87c69d50
--- /dev/null
+++ b/test/capture-prompt-budget.test.ts
@@ -0,0 +1,230 @@
+/**
+ * #873: `capture` embedded the transcript in the prompt whole, so the prompt
+ * was the session. Measured by the reporter: a 67,981,436-byte transcript
+ * produced a 67,468,122-byte prompt — 99.3% of the file, and larger than any
+ * model can read. The pipeline itself was fine; the reporter confirmed that by
+ * slicing the transcript to `tail -n 400` (537,250 bytes) and watching the same
+ * command work.
+ *
+ * That made the failure worse than a size: it is silent. Prompt-only mode
+ * returns `outcome: "empty"`, `staged: false`, **exit 0**, so an operator who
+ * tried capture once on a real session got a prompt they could not use and no
+ * statement that anything was wrong. In the repository where it was measured,
+ * `stale` reported 1 record in 1000 commits with unattended capture already
+ * enabled — permission was never the obstacle.
+ *
+ * Three properties are load-bearing here, and each has a test below that fails
+ * when its half of the fix is reverted:
+ *
+ * 1. The prompt is bounded, whatever the transcript weighs.
+ * 2. The line numbers in that window are the *whole transcript's* numbers.
+ * Verification reads the whole transcript, so a window renumbered from 1
+ * would have every locator name a different line of the file it is checked
+ * against.
+ * 3. The caller is told it received a window. The old prompt was the session,
+ * so nothing downstream had any reason to ask; a bounded prompt that does
+ * not say so is the same silence in a smaller package.
+ */
+
+import { execSync } from 'node:child_process';
+import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
+import { tmpdir } from 'node:os';
+import { join } from 'node:path';
+
+import { afterAll, afterEach, describe, expect, it } from 'vitest';
+
+import { prepareCaptureContext } from '../src/core/capture-prepare.js';
+import { verifyCaptureRecords } from '../src/core/capture-verify.js';
+import { buildHarvestPromptWithWindow, windowTranscript, type DraftRecord } from '../src/core/harvest.js';
+
+const scratch: string[] = [];
+afterAll(() => {
+ for (const dir of scratch) rmSync(dir, { recursive: true, force: true });
+});
+
+const makeRepo = (): string => {
+ const dir = mkdtempSync(join(tmpdir(), 'capture-prompt-budget-'));
+ scratch.push(dir);
+ execSync('git init --quiet --initial-branch=main', { cwd: dir });
+ execSync('git config user.name "Test"', { cwd: dir });
+ execSync('git config user.email "test@test.com"', { cwd: dir });
+ execSync('git config commit.gpgsign false', { cwd: dir });
+ writeFileSync(join(dir, 'a.txt'), 'hello\n');
+ execSync('git add a.txt', { cwd: dir });
+ execSync('git commit -m "init" --quiet', { cwd: dir });
+ writeFileSync(join(dir, 'a.txt'), 'hello\nworld\n');
+ execSync('git add a.txt', { cwd: dir });
+ return dir;
+};
+
+/** A transcript of `lines` numbered lines, each recognisable by its own number. */
+const transcriptOf = (lines: number, padTo = 0): string =>
+ Array.from({ length: lines }, (_, index) => {
+ const body = `line ${index + 1} of the session`;
+ return padTo > body.length ? body + ' '.repeat(padTo - body.length) : body;
+ }).join('\n');
+
+const DIFF = 'diff --git a/x b/x\n--- a/x\n+++ b/x\n@@ -1 +1 @@\n-old\n+new\n';
+
+describe('#873 windowTranscript bounds what the prompt can carry', () => {
+ it('is the whole transcript, unmarked, when the whole transcript fits', () => {
+ const transcript = transcriptOf(20);
+ const { text, window } = windowTranscript(transcript, 64 * 1024);
+
+ expect(text).toBe(transcript);
+ expect(window.truncated).toBe(false);
+ expect(window.first_line).toBe(1);
+ expect(window.last_line).toBe(20);
+ expect(window.total_lines).toBe(20);
+ expect(window.first_line_partial).toBe(false);
+ });
+
+ it('keeps the end of a transcript that does not fit, within the budget', () => {
+ const transcript = transcriptOf(5000);
+ const { text, window } = windowTranscript(transcript, 4096);
+
+ expect(Buffer.byteLength(text, 'utf8')).toBeLessThanOrEqual(4096);
+ expect(window.truncated).toBe(true);
+ expect(window.last_line).toBe(5000);
+ expect(window.total_lines).toBe(5000);
+ expect(window.first_line).toBeGreaterThan(1);
+ // The end, not the beginning: the decision is taken where the session ends.
+ expect(text.endsWith('line 5000 of the session')).toBe(true);
+ expect(text.startsWith(`line ${window.first_line} of the session`)).toBe(true);
+ expect(window.total_bytes).toBe(Buffer.byteLength(transcript, 'utf8'));
+ expect(window.window_bytes).toBe(Buffer.byteLength(text, 'utf8'));
+ });
+
+ it('shows the tail of one line that outruns the budget by itself', () => {
+ // A single JSONL line can hold an entire tool result. A window of no lines
+ // at all would be worse than a window of one partial line.
+ const transcript = `first\n${'x'.repeat(20_000)}`;
+ const { text, window } = windowTranscript(transcript, 1024);
+
+ expect(Buffer.byteLength(text, 'utf8')).toBeLessThanOrEqual(1024);
+ expect(window.first_line).toBe(2);
+ expect(window.last_line).toBe(2);
+ expect(window.first_line_partial).toBe(true);
+ expect(window.truncated).toBe(true);
+ });
+
+ it('never leaves a split codepoint at the front of a partial line', () => {
+ // Slicing a UTF-8 buffer mid-character yields U+FFFD, and a replacement
+ // character inside a quotable line is a character nobody can copy back.
+ const transcript = '한'.repeat(4000);
+ const { text } = windowTranscript(transcript, 1000);
+
+ expect(text.startsWith('�')).toBe(false);
+ expect(Buffer.byteLength(text, 'utf8')).toBeLessThanOrEqual(1000);
+ });
+
+ it('honours COMMITLORE_TRANSCRIPT_BUDGET_BYTES', () => {
+ const previous = process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'];
+ process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'] = '2048';
+ try {
+ const { window } = windowTranscript(transcriptOf(5000));
+ expect(window.window_bytes).toBeLessThanOrEqual(2048);
+ expect(window.truncated).toBe(true);
+ } finally {
+ if (previous === undefined) delete process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'];
+ else process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'] = previous;
+ }
+ });
+});
+
+describe('#873 the prompt numbers the window as the transcript numbers it', () => {
+ const budgeted = (lines: number): ReturnType => {
+ const previous = process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'];
+ process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'] = '4096';
+ try {
+ return buildHarvestPromptWithWindow({ transcript: transcriptOf(lines), diff: DIFF });
+ } finally {
+ if (previous === undefined) delete process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'];
+ else process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'] = previous;
+ }
+ };
+
+ it('gives the window\'s first line its number in the whole transcript', () => {
+ const { prompt, window } = budgeted(5000);
+
+ // The exact property a renumbered window would break: the line the prompt
+ // labels N really is line N of the transcript verification will read.
+ expect(prompt).toContain(`${window.first_line} | line ${window.first_line} of the session`);
+ expect(prompt).toContain(`${window.last_line} | line ${window.last_line} of the session`);
+ expect(prompt).not.toContain('1 | line 1 of the session');
+ });
+
+ it('says it is a window, and how much was left out', () => {
+ const { prompt, window } = budgeted(5000);
+
+ expect(prompt).toContain(`lines ${window.first_line}-${window.last_line} of ${window.total_lines}`);
+ expect(prompt).toContain('earlier line(s) omitted to bound this prompt');
+ });
+
+ it('says nothing about a window when there is no window', () => {
+ const { prompt } = buildHarvestPromptWithWindow({ transcript: transcriptOf(5), diff: DIFF });
+
+ expect(prompt).not.toContain('omitted to bound this prompt');
+ expect(prompt).toContain('1 | line 1 of the session');
+ });
+});
+
+describe('#873 capture returns a prompt a model can read, and says what it is', () => {
+ const previous = process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'];
+ afterEach(() => {
+ if (previous === undefined) delete process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'];
+ else process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'] = previous;
+ });
+
+ it('does not return a prompt the size of the transcript', () => {
+ // The reporter's ratio, at a size a test can afford: the prompt used to be
+ // ~99.3% of the transcript, so it grew without bound with the session.
+ const cwd = makeRepo();
+ process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'] = '8192';
+ const transcript = transcriptOf(40_000, 200);
+
+ const result = prepareCaptureContext({ cwd, transcript });
+
+ expect(Buffer.byteLength(transcript, 'utf8')).toBeGreaterThan(4_000_000);
+ expect(Buffer.byteLength(result.prompt, 'utf8')).toBeLessThan(64 * 1024);
+ expect(result.transcript_window.truncated).toBe(true);
+ expect(result.transcript_window.total_lines).toBe(40_000);
+ expect(result.transcript_window.last_line).toBe(40_000);
+ });
+
+ it('hashes and verifies the whole transcript, not the window', () => {
+ // The bound is on the prompt alone. If it ever reached the hash, `verify`
+ // would be checking quotes against a slice — and a caller passing the
+ // session it actually had would be told the transcript was substituted.
+ const cwd = makeRepo();
+ process.env['COMMITLORE_TRANSCRIPT_BUDGET_BYTES'] = '4096';
+ const quote = 'we ruled out the queue worker because it loses ordering';
+ const transcript = `${quote}\n${transcriptOf(5000)}`;
+
+ const prepared = prepareCaptureContext({ cwd, transcript });
+ expect(prepared.transcript_window.first_line).toBeGreaterThan(1);
+
+ const draft: DraftRecord[] = [
+ {
+ trailers: [
+ { key: 'Ruled-out', value: 'queue worker | loses ordering' },
+ { key: 'Record-Id', value: 'r-window1' },
+ ],
+ evidence: [{ key: 'Ruled-out', source: 'transcript', quote, locator: 'L1-L1' }],
+ },
+ ];
+
+ const verified = verifyCaptureRecords({
+ nonce: prepared.nonce,
+ draft,
+ transcript,
+ diff: execSync('git diff --cached', { cwd, encoding: 'utf8' }),
+ cwd,
+ });
+
+ // The quote is on line 1, which the window does not show — and it verifies,
+ // because verification never looked at the window.
+ expect(verified.rejected).toHaveLength(0);
+ expect(verified.accepted).toHaveLength(1);
+ });
+});