@code-yeongyu/senpi-agent-core 2026.9.15 → 2026.9.16-3
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/dist/empty-assistant-recovery.d.ts.map +1 -1
- package/dist/empty-assistant-recovery.js +51 -12
- package/dist/empty-assistant-recovery.js.map +1 -1
- package/dist/harness/tools/read.d.ts +3 -0
- package/dist/harness/tools/read.d.ts.map +1 -1
- package/dist/harness/tools/read.js +18 -3
- package/dist/harness/tools/read.js.map +1 -1
- package/dist/harness/utils/read-folders/brace-scanner.d.ts +4 -0
- package/dist/harness/utils/read-folders/brace-scanner.d.ts.map +1 -0
- package/dist/harness/utils/read-folders/brace-scanner.js +268 -0
- package/dist/harness/utils/read-folders/brace-scanner.js.map +1 -0
- package/dist/harness/utils/read-folders/header-protection.d.ts +18 -0
- package/dist/harness/utils/read-folders/header-protection.d.ts.map +1 -0
- package/dist/harness/utils/read-folders/header-protection.js +69 -0
- package/dist/harness/utils/read-folders/header-protection.js.map +1 -0
- package/dist/harness/utils/read-folders/index.d.ts +27 -0
- package/dist/harness/utils/read-folders/index.d.ts.map +1 -0
- package/dist/harness/utils/read-folders/index.js +118 -0
- package/dist/harness/utils/read-folders/index.js.map +1 -0
- package/dist/harness/utils/read-folders/lexical-context.d.ts +21 -0
- package/dist/harness/utils/read-folders/lexical-context.d.ts.map +1 -0
- package/dist/harness/utils/read-folders/lexical-context.js +24 -0
- package/dist/harness/utils/read-folders/lexical-context.js.map +1 -0
- package/dist/harness/utils/read-folders/lexical-spans.d.ts +12 -0
- package/dist/harness/utils/read-folders/lexical-spans.d.ts.map +1 -0
- package/dist/harness/utils/read-folders/lexical-spans.js +92 -0
- package/dist/harness/utils/read-folders/lexical-spans.js.map +1 -0
- package/dist/harness/utils/read-folders/types.d.ts +47 -0
- package/dist/harness/utils/read-folders/types.d.ts.map +1 -0
- package/dist/harness/utils/read-folders/types.js +8 -0
- package/dist/harness/utils/read-folders/types.js.map +1 -0
- package/dist/harness/utils/segmented-read-view.d.ts +52 -0
- package/dist/harness/utils/segmented-read-view.d.ts.map +1 -0
- package/dist/harness/utils/segmented-read-view.js +155 -0
- package/dist/harness/utils/segmented-read-view.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { isReadSummaryPath } from "./read-folders/index.js";
|
|
2
|
+
import { READ_FOLD_SETTINGS, } from "./read-folders/types.js";
|
|
3
|
+
/** Compose only untruncated default text reads; each reader owns its existing raw path. */
|
|
4
|
+
export function createDefaultReadSummary(input) {
|
|
5
|
+
const { path, text, offset, limit, folder, truncated } = input;
|
|
6
|
+
if (!folder || offset !== undefined || limit !== undefined || truncated || !isReadSummaryPath(path))
|
|
7
|
+
return undefined;
|
|
8
|
+
if (text.includes("\0") || text.split("\n").length < READ_FOLD_SETTINGS.minTotalLines)
|
|
9
|
+
return undefined;
|
|
10
|
+
const view = createSegmentedReadView({ text, parsed: folder.fold({ path, text, settings: READ_FOLD_SETTINGS }) });
|
|
11
|
+
switch (view.status) {
|
|
12
|
+
case "summary":
|
|
13
|
+
return view.rendered;
|
|
14
|
+
case "no_summary":
|
|
15
|
+
return undefined;
|
|
16
|
+
default:
|
|
17
|
+
return view;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export class InvalidReadSegmentsError extends Error {
|
|
21
|
+
constructor() {
|
|
22
|
+
super("Read segments must cover the source exactly, in order, without altering kept lines");
|
|
23
|
+
this.code = "invalid_segments";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function validRange(range, total) {
|
|
27
|
+
return (Number.isSafeInteger(range.startLine) &&
|
|
28
|
+
Number.isSafeInteger(range.endLine) &&
|
|
29
|
+
range.startLine >= 1 &&
|
|
30
|
+
range.endLine >= range.startLine &&
|
|
31
|
+
range.endLine <= total);
|
|
32
|
+
}
|
|
33
|
+
/** The sole validator/renderer/footer implementation. Synthetic lines are never source slices. */
|
|
34
|
+
export function renderSegmentedReadView({ text, segments, }) {
|
|
35
|
+
const lines = text.split("\n");
|
|
36
|
+
const parts = [];
|
|
37
|
+
const elidedRanges = [];
|
|
38
|
+
let cursor = 1;
|
|
39
|
+
for (const segment of segments) {
|
|
40
|
+
if (!validRange(segment, lines.length) || segment.startLine !== cursor)
|
|
41
|
+
throw new InvalidReadSegmentsError();
|
|
42
|
+
switch (segment.kind) {
|
|
43
|
+
case "kept":
|
|
44
|
+
if (segment.text !== lines.slice(segment.startLine - 1, segment.endLine).join("\n"))
|
|
45
|
+
throw new InvalidReadSegmentsError();
|
|
46
|
+
parts.push(segment.text);
|
|
47
|
+
break;
|
|
48
|
+
case "elided":
|
|
49
|
+
parts.push("…");
|
|
50
|
+
elidedRanges.push({ startLine: segment.startLine, endLine: segment.endLine });
|
|
51
|
+
break;
|
|
52
|
+
default:
|
|
53
|
+
segment;
|
|
54
|
+
throw new InvalidReadSegmentsError();
|
|
55
|
+
}
|
|
56
|
+
cursor = segment.endLine + 1;
|
|
57
|
+
}
|
|
58
|
+
if (cursor !== lines.length + 1)
|
|
59
|
+
throw new InvalidReadSegmentsError();
|
|
60
|
+
const rereads = elidedRanges.map((range) => ({
|
|
61
|
+
offset: range.startLine,
|
|
62
|
+
limit: range.endLine - range.startLine + 1,
|
|
63
|
+
}));
|
|
64
|
+
const footerText = rereads.length
|
|
65
|
+
? `[Elided source: ${rereads.map((r) => `offset=${r.offset} limit=${r.limit}`).join("; ")}. Reread source before editing; markers are not source.]`
|
|
66
|
+
: "";
|
|
67
|
+
if (footerText)
|
|
68
|
+
parts.push("", footerText);
|
|
69
|
+
return { text: parts.join("\n"), elidedRanges, footer: { text: footerText, rereads } };
|
|
70
|
+
}
|
|
71
|
+
function validHierarchy(ranges, total) {
|
|
72
|
+
const queue = [{ ranges, startLine: 0, endLine: total + 1 }];
|
|
73
|
+
for (let i = 0; i < queue.length; i++) {
|
|
74
|
+
const parent = queue[i];
|
|
75
|
+
let previous = parent.startLine;
|
|
76
|
+
for (const range of parent.ranges) {
|
|
77
|
+
if (!validRange(range, total) || range.startLine <= previous || range.endLine >= parent.endLine)
|
|
78
|
+
return false;
|
|
79
|
+
previous = range.endLine;
|
|
80
|
+
queue.push({ ranges: range.children, startLine: range.startLine, endLine: range.endLine });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
const lengthOf = (range) => range.endLine - range.startLine + 1;
|
|
86
|
+
/** Breadth-first refinement counts only retained source lines, never sentinels/footer lines. */
|
|
87
|
+
export function createSegmentedReadView({ text, parsed, }) {
|
|
88
|
+
const raw = (reason) => ({ status: "no_summary", reason });
|
|
89
|
+
switch (parsed.status) {
|
|
90
|
+
case "unsupported":
|
|
91
|
+
return raw(parsed.reason);
|
|
92
|
+
case "parse_failure":
|
|
93
|
+
return raw("parse_failure");
|
|
94
|
+
case "parsed":
|
|
95
|
+
break;
|
|
96
|
+
default:
|
|
97
|
+
return parsed;
|
|
98
|
+
}
|
|
99
|
+
if (parsed.text !== text)
|
|
100
|
+
return raw("stale_source");
|
|
101
|
+
const lines = text.split("\n");
|
|
102
|
+
if (!validHierarchy(parsed.ranges, lines.length))
|
|
103
|
+
return raw("invalid_ranges");
|
|
104
|
+
if (lines.length < READ_FOLD_SETTINGS.minTotalLines)
|
|
105
|
+
return raw("too_short");
|
|
106
|
+
if (!parsed.ranges.length)
|
|
107
|
+
return raw("no_elision");
|
|
108
|
+
let visible = lines.length - parsed.ranges.reduce((sum, r) => sum + lengthOf(r), 0);
|
|
109
|
+
if (visible > READ_FOLD_SETTINGS.unfoldLimit)
|
|
110
|
+
return raw("skeleton_exceeds_budget");
|
|
111
|
+
const selected = new Set(parsed.ranges);
|
|
112
|
+
const queue = [...parsed.ranges];
|
|
113
|
+
for (let i = 0; visible < READ_FOLD_SETTINGS.unfoldUntil && i < queue.length; i++) {
|
|
114
|
+
const parent = queue[i];
|
|
115
|
+
const nextVisible = visible + lengthOf(parent) - parent.children.reduce((sum, r) => sum + lengthOf(r), 0);
|
|
116
|
+
// Later steps only increase visibility, so an oversized step cannot become safe later.
|
|
117
|
+
if (nextVisible > READ_FOLD_SETTINGS.unfoldLimit)
|
|
118
|
+
continue;
|
|
119
|
+
selected.delete(parent);
|
|
120
|
+
for (const child of parent.children)
|
|
121
|
+
selected.add(child);
|
|
122
|
+
queue.push(...parent.children);
|
|
123
|
+
visible = nextVisible;
|
|
124
|
+
}
|
|
125
|
+
if (visible < READ_FOLD_SETTINGS.unfoldUntil)
|
|
126
|
+
return raw("visible_budget_unreachable");
|
|
127
|
+
if (!selected.size)
|
|
128
|
+
return raw("no_elision");
|
|
129
|
+
const segments = [];
|
|
130
|
+
let cursor = 1;
|
|
131
|
+
for (const range of [...selected].sort((a, b) => a.startLine - b.startLine)) {
|
|
132
|
+
if (cursor < range.startLine)
|
|
133
|
+
segments.push({
|
|
134
|
+
kind: "kept",
|
|
135
|
+
startLine: cursor,
|
|
136
|
+
endLine: range.startLine - 1,
|
|
137
|
+
text: lines.slice(cursor - 1, range.startLine - 1).join("\n"),
|
|
138
|
+
});
|
|
139
|
+
segments.push({ kind: "elided", startLine: range.startLine, endLine: range.endLine });
|
|
140
|
+
cursor = range.endLine + 1;
|
|
141
|
+
}
|
|
142
|
+
if (cursor <= lines.length)
|
|
143
|
+
segments.push({
|
|
144
|
+
kind: "kept",
|
|
145
|
+
startLine: cursor,
|
|
146
|
+
endLine: lines.length,
|
|
147
|
+
text: lines.slice(cursor - 1).join("\n"),
|
|
148
|
+
});
|
|
149
|
+
const rendered = renderSegmentedReadView({ text, segments });
|
|
150
|
+
const encoder = new TextEncoder();
|
|
151
|
+
if (encoder.encode(rendered.text).length >= encoder.encode(text).length)
|
|
152
|
+
return raw("no_output_saving");
|
|
153
|
+
return { status: "summary", segments, visibleSourceLines: visible, rendered };
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=segmented-read-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segmented-read-view.js","sourceRoot":"","sources":["../../../src/harness/utils/segmented-read-view.ts"],"names":[],"mappings":"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","sourcesContent":["import { isReadSummaryPath } from \"./read-folders/index.ts\";\nimport {\n\tREAD_FOLD_SETTINGS,\n\ttype ReadFolder,\n\ttype ReadFolderResult,\n\ttype ReadFoldRange,\n\ttype ReadLineRange,\n} from \"./read-folders/types.ts\";\n\nexport type ReadSegment =\n\t| (ReadLineRange & { readonly kind: \"kept\"; readonly text: string })\n\t| (ReadLineRange & { readonly kind: \"elided\" });\nexport type RenderedReadView = {\n\treadonly text: string;\n\treadonly elidedRanges: readonly ReadLineRange[];\n\treadonly footer: {\n\t\treadonly text: string;\n\t\treadonly rereads: readonly { readonly offset: number; readonly limit: number }[];\n\t};\n};\nexport type ReadSummaryFallback =\n\t| \"unsupported_language\"\n\t| \"prose_exempt\"\n\t| \"parse_failure\"\n\t| \"stale_source\"\n\t| \"invalid_ranges\"\n\t| \"too_short\"\n\t| \"no_elision\"\n\t| \"skeleton_exceeds_budget\"\n\t| \"visible_budget_unreachable\"\n\t| \"no_output_saving\";\nexport type SegmentedReadView =\n\t| {\n\t\t\treadonly status: \"summary\";\n\t\t\treadonly segments: readonly ReadSegment[];\n\t\t\treadonly visibleSourceLines: number;\n\t\t\treadonly rendered: RenderedReadView;\n\t }\n\t| { readonly status: \"no_summary\"; readonly reason: ReadSummaryFallback };\n\n/** Compose only untruncated default text reads; each reader owns its existing raw path. */\nexport function createDefaultReadSummary(input: {\n\treadonly path: string;\n\treadonly text: string;\n\treadonly offset?: number;\n\treadonly limit?: number;\n\treadonly folder?: ReadFolder;\n\treadonly truncated: boolean;\n}): RenderedReadView | undefined {\n\tconst { path, text, offset, limit, folder, truncated } = input;\n\tif (!folder || offset !== undefined || limit !== undefined || truncated || !isReadSummaryPath(path))\n\t\treturn undefined;\n\tif (text.includes(\"\\0\") || text.split(\"\\n\").length < READ_FOLD_SETTINGS.minTotalLines) return undefined;\n\tconst view = createSegmentedReadView({ text, parsed: folder.fold({ path, text, settings: READ_FOLD_SETTINGS }) });\n\tswitch (view.status) {\n\t\tcase \"summary\":\n\t\t\treturn view.rendered;\n\t\tcase \"no_summary\":\n\t\t\treturn undefined;\n\t\tdefault:\n\t\t\treturn view satisfies never;\n\t}\n}\n\nexport class InvalidReadSegmentsError extends Error {\n\treadonly code = \"invalid_segments\";\n\tconstructor() {\n\t\tsuper(\"Read segments must cover the source exactly, in order, without altering kept lines\");\n\t}\n}\n\nfunction validRange(range: ReadLineRange, total: number): boolean {\n\treturn (\n\t\tNumber.isSafeInteger(range.startLine) &&\n\t\tNumber.isSafeInteger(range.endLine) &&\n\t\trange.startLine >= 1 &&\n\t\trange.endLine >= range.startLine &&\n\t\trange.endLine <= total\n\t);\n}\n\n/** The sole validator/renderer/footer implementation. Synthetic lines are never source slices. */\nexport function renderSegmentedReadView({\n\ttext,\n\tsegments,\n}: {\n\treadonly text: string;\n\treadonly segments: readonly ReadSegment[];\n}): RenderedReadView {\n\tconst lines = text.split(\"\\n\");\n\tconst parts: string[] = [];\n\tconst elidedRanges: ReadLineRange[] = [];\n\tlet cursor = 1;\n\tfor (const segment of segments) {\n\t\tif (!validRange(segment, lines.length) || segment.startLine !== cursor) throw new InvalidReadSegmentsError();\n\t\tswitch (segment.kind) {\n\t\t\tcase \"kept\":\n\t\t\t\tif (segment.text !== lines.slice(segment.startLine - 1, segment.endLine).join(\"\\n\"))\n\t\t\t\t\tthrow new InvalidReadSegmentsError();\n\t\t\t\tparts.push(segment.text);\n\t\t\t\tbreak;\n\t\t\tcase \"elided\":\n\t\t\t\tparts.push(\"…\");\n\t\t\t\telidedRanges.push({ startLine: segment.startLine, endLine: segment.endLine });\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tsegment satisfies never;\n\t\t\t\tthrow new InvalidReadSegmentsError();\n\t\t}\n\t\tcursor = segment.endLine + 1;\n\t}\n\tif (cursor !== lines.length + 1) throw new InvalidReadSegmentsError();\n\tconst rereads = elidedRanges.map((range) => ({\n\t\toffset: range.startLine,\n\t\tlimit: range.endLine - range.startLine + 1,\n\t}));\n\tconst footerText = rereads.length\n\t\t? `[Elided source: ${rereads.map((r) => `offset=${r.offset} limit=${r.limit}`).join(\"; \")}. Reread source before editing; markers are not source.]`\n\t\t: \"\";\n\tif (footerText) parts.push(\"\", footerText);\n\treturn { text: parts.join(\"\\n\"), elidedRanges, footer: { text: footerText, rereads } };\n}\n\nfunction validHierarchy(ranges: readonly ReadFoldRange[], total: number): boolean {\n\tconst queue = [{ ranges, startLine: 0, endLine: total + 1 }];\n\tfor (let i = 0; i < queue.length; i++) {\n\t\tconst parent = queue[i];\n\t\tlet previous = parent.startLine;\n\t\tfor (const range of parent.ranges) {\n\t\t\tif (!validRange(range, total) || range.startLine <= previous || range.endLine >= parent.endLine) return false;\n\t\t\tprevious = range.endLine;\n\t\t\tqueue.push({ ranges: range.children, startLine: range.startLine, endLine: range.endLine });\n\t\t}\n\t}\n\treturn true;\n}\n\nconst lengthOf = (range: ReadLineRange) => range.endLine - range.startLine + 1;\n\n/** Breadth-first refinement counts only retained source lines, never sentinels/footer lines. */\nexport function createSegmentedReadView({\n\ttext,\n\tparsed,\n}: {\n\treadonly text: string;\n\treadonly parsed: ReadFolderResult;\n}): SegmentedReadView {\n\tconst raw = (reason: ReadSummaryFallback): SegmentedReadView => ({ status: \"no_summary\", reason });\n\tswitch (parsed.status) {\n\t\tcase \"unsupported\":\n\t\t\treturn raw(parsed.reason);\n\t\tcase \"parse_failure\":\n\t\t\treturn raw(\"parse_failure\");\n\t\tcase \"parsed\":\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn parsed satisfies never;\n\t}\n\tif (parsed.text !== text) return raw(\"stale_source\");\n\tconst lines = text.split(\"\\n\");\n\tif (!validHierarchy(parsed.ranges, lines.length)) return raw(\"invalid_ranges\");\n\tif (lines.length < READ_FOLD_SETTINGS.minTotalLines) return raw(\"too_short\");\n\tif (!parsed.ranges.length) return raw(\"no_elision\");\n\tlet visible = lines.length - parsed.ranges.reduce((sum, r) => sum + lengthOf(r), 0);\n\tif (visible > READ_FOLD_SETTINGS.unfoldLimit) return raw(\"skeleton_exceeds_budget\");\n\tconst selected = new Set(parsed.ranges);\n\tconst queue = [...parsed.ranges];\n\tfor (let i = 0; visible < READ_FOLD_SETTINGS.unfoldUntil && i < queue.length; i++) {\n\t\tconst parent = queue[i];\n\t\tconst nextVisible = visible + lengthOf(parent) - parent.children.reduce((sum, r) => sum + lengthOf(r), 0);\n\t\t// Later steps only increase visibility, so an oversized step cannot become safe later.\n\t\tif (nextVisible > READ_FOLD_SETTINGS.unfoldLimit) continue;\n\t\tselected.delete(parent);\n\t\tfor (const child of parent.children) selected.add(child);\n\t\tqueue.push(...parent.children);\n\t\tvisible = nextVisible;\n\t}\n\tif (visible < READ_FOLD_SETTINGS.unfoldUntil) return raw(\"visible_budget_unreachable\");\n\tif (!selected.size) return raw(\"no_elision\");\n\tconst segments: ReadSegment[] = [];\n\tlet cursor = 1;\n\tfor (const range of [...selected].sort((a, b) => a.startLine - b.startLine)) {\n\t\tif (cursor < range.startLine)\n\t\t\tsegments.push({\n\t\t\t\tkind: \"kept\",\n\t\t\t\tstartLine: cursor,\n\t\t\t\tendLine: range.startLine - 1,\n\t\t\t\ttext: lines.slice(cursor - 1, range.startLine - 1).join(\"\\n\"),\n\t\t\t});\n\t\tsegments.push({ kind: \"elided\", startLine: range.startLine, endLine: range.endLine });\n\t\tcursor = range.endLine + 1;\n\t}\n\tif (cursor <= lines.length)\n\t\tsegments.push({\n\t\t\tkind: \"kept\",\n\t\t\tstartLine: cursor,\n\t\t\tendLine: lines.length,\n\t\t\ttext: lines.slice(cursor - 1).join(\"\\n\"),\n\t\t});\n\tconst rendered = renderSegmentedReadView({ text, segments });\n\tconst encoder = new TextEncoder();\n\tif (encoder.encode(rendered.text).length >= encoder.encode(text).length) return raw(\"no_output_saving\");\n\treturn { status: \"summary\", segments, visibleSourceLines: visible, rendered };\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ export { AGENT_TELEMETRY_SCHEMAS, AI_TELEMETRY_SCHEMA, HARNESS_TELEMETRY_SCHEMA,
|
|
|
20
20
|
export * from "./harness/tools/index.ts";
|
|
21
21
|
export { type AgentHarnessResources, type AgentHarnessStreamOptions, type AgentHarnessStreamOptionsPatch, type AgentHarnessTool, type AgentHarnessToolContextSource, type AgentHarnessToolInvocation, type AgentHarnessToolUpdateCallback, type AgentHarnessToolUpdateOptions, BranchSummaryError, type BranchSummaryErrorCode, CompactionError, type CompactionErrorCode, type ExecutionEnv, ExecutionError, type ExecutionErrorCode, err, FileError, type FileErrorCode, type FileInfo, type FileKind, type FileSystem, getOrThrow, getOrUndefined, ok, type PromptTemplate, type Shell, type ShellExecOptions, type ShellExecResult, type ShellOutputCaptureOptions, type ShellOutputLimits, type ShellOutputMetadata, type ShellOutputRetention, type ShellOutputTruncation, type ShellOutputUpdate, type ShellOutputView, type Skill, toError, } from "./harness/types.ts";
|
|
22
22
|
export { applyShellOutputUpdate } from "./harness/utils/output-capture.ts";
|
|
23
|
+
export * from "./harness/utils/read-folders/index.ts";
|
|
24
|
+
export * from "./harness/utils/segmented-read-view.ts";
|
|
23
25
|
export * from "./harness/utils/shell-output.ts";
|
|
24
26
|
export * from "./harness/utils/truncate.ts";
|
|
25
27
|
export * from "./proxy.ts";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -18,6 +18,8 @@ export { AGENT_TELEMETRY_SCHEMAS, AI_TELEMETRY_SCHEMA, HARNESS_TELEMETRY_SCHEMA,
|
|
|
18
18
|
export * from "./harness/tools/index.js";
|
|
19
19
|
export { BranchSummaryError, CompactionError, ExecutionError, err, FileError, getOrThrow, getOrUndefined, ok, toError, } from "./harness/types.js";
|
|
20
20
|
export { applyShellOutputUpdate } from "./harness/utils/output-capture.js";
|
|
21
|
+
export * from "./harness/utils/read-folders/index.js";
|
|
22
|
+
export * from "./harness/utils/segmented-read-view.js";
|
|
21
23
|
export * from "./harness/utils/shell-output.js";
|
|
22
24
|
export * from "./harness/utils/truncate.js";
|
|
23
25
|
export * from "./proxy.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAkC/C,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,GACtB,MAAM,8BAA8B,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,kCAAkC,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AACpH,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAKN,8BAA8B,EAG9B,qBAAqB,EACrB,oBAAoB,GACpB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAIN,sBAAsB,EACtB,OAAO,EACP,2BAA2B,EAC3B,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,GACb,MAAM,oCAAoC,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAA8B,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAmB3C,OAAO,EACN,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,WAAW,EACX,gBAAgB,GAChB,MAAM,wBAAwB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EASN,kBAAkB,EAElB,eAAe,EAGf,cAAc,EAEd,GAAG,EACH,SAAS,EAKT,UAAU,EACV,cAAc,EACd,EAAE,EAaF,OAAO,GACP,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,cAAc,YAAY,CAAC","sourcesContent":["export { uuidv7 } from \"@earendil-works/pi-ai\";\nexport type {\n\tAttributeValue,\n\tExactTelemetryAttributes,\n\tInferEventAttributes,\n\tInferOptionalAttributes,\n\tInferRequiredAndOptionalAttributes,\n\tInferStartAttributes,\n\tRecordedTelemetryEvent,\n\tRecordedTelemetrySpan,\n\tSchemaTelemetrySpan,\n\tSpanAttributes,\n\tSpanAttributes as TelemetrySpanAttributes,\n\tSpanOptions,\n\tSpanStatus,\n\tTelemetryAttributeDefinition,\n\tTelemetryAttributeMetadata,\n\tTelemetryAttributeType,\n\tTelemetryContext,\n\tTelemetryEventAttributeDefinition,\n\tTelemetryEventDefinition,\n\tTelemetryParentDefinition,\n\tTelemetrySchemaDefinition,\n\tTelemetrySchemaSpanEndAttributes,\n\tTelemetrySchemaSpanEventAttributes,\n\tTelemetrySchemaSpanEventName,\n\tTelemetrySchemaSpanName,\n\tTelemetrySchemaSpanStartAttributes,\n\tTelemetrySchemaSpanUnion,\n\tTelemetrySpan,\n\tTelemetrySpanDefinition,\n\tTelemetryStartAttributeDefinition,\n\tTypedSpanStarter,\n} from \"@earendil-works/pi-telemetry\";\nexport {\n\tcreateTypedSpanStarter,\n\tdefineTelemetrySchema,\n\tInMemoryTelemetryContext,\n\tNOOP_TELEMETRY_CONTEXT,\n} from \"@earendil-works/pi-telemetry\";\nexport * from \"./agent.ts\";\nexport * from \"./agent-loop.ts\";\nexport { EMPTY_TOOL_USE_DEMOTION_DIAGNOSTIC, ProviderRetryWatchdogAbortError } from \"./assistant-terminal-state.ts\";\nexport * from \"./harness/agent-harness.ts\";\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryDetails,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\tcollectEntriesForBranchSummary,\n\ttype FileOperations,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tprepareBranchEntries,\n} from \"./harness/compaction/branch-summarization.ts\";\nexport {\n\ttype CompactionPreparation,\n\ttype CompactionSettings,\n\ttype CompactResult,\n\tcalculateContextTokens,\n\tcompact,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateContextTokens,\n\testimateTokens,\n\tfindCutPoint,\n\tfindTurnStartIndex,\n\tgenerateSummary,\n\tgenerateSummaryWithUsage,\n\tgetLastAssistantUsage,\n\tprepareCompaction,\n\tserializeConversation,\n\tshouldCompact,\n} from \"./harness/compaction/compaction.ts\";\nexport * from \"./harness/context.ts\";\nexport * from \"./harness/messages.ts\";\nexport * from \"./harness/prompt-templates.ts\";\nexport * from \"./harness/result.ts\";\nexport { type LaneSnapshotReduction, reduceLaneSnapshot } from \"./harness/runtime/reducer.ts\";\nexport * from \"./harness/session/index.ts\";\nexport * from \"./harness/skills.ts\";\nexport * from \"./harness/system-prompt.ts\";\nexport type {\n\tAiSpan,\n\tAiSpanAttributes,\n\tAiSpanEndAttributes,\n\tAiSpanEventAttributes,\n\tAiSpanEventName,\n\tAiSpanName,\n\tAiSpanStartAttributes,\n\tAiTelemetrySpan,\n\tHarnessSpan,\n\tHarnessSpanAttributes,\n\tHarnessSpanEndAttributes,\n\tHarnessSpanEventAttributes,\n\tHarnessSpanEventName,\n\tHarnessSpanName,\n\tHarnessSpanStartAttributes,\n\tHarnessTelemetrySpan,\n} from \"./harness/telemetry.ts\";\nexport {\n\tAGENT_TELEMETRY_SCHEMAS,\n\tAI_TELEMETRY_SCHEMA,\n\tHARNESS_TELEMETRY_SCHEMA,\n\tstartAiSpan,\n\tstartHarnessSpan,\n} from \"./harness/telemetry.ts\";\nexport * from \"./harness/tools/index.ts\";\nexport {\n\ttype AgentHarnessResources,\n\ttype AgentHarnessStreamOptions,\n\ttype AgentHarnessStreamOptionsPatch,\n\ttype AgentHarnessTool,\n\ttype AgentHarnessToolContextSource,\n\ttype AgentHarnessToolInvocation,\n\ttype AgentHarnessToolUpdateCallback,\n\ttype AgentHarnessToolUpdateOptions,\n\tBranchSummaryError,\n\ttype BranchSummaryErrorCode,\n\tCompactionError,\n\ttype CompactionErrorCode,\n\ttype ExecutionEnv,\n\tExecutionError,\n\ttype ExecutionErrorCode,\n\terr,\n\tFileError,\n\ttype FileErrorCode,\n\ttype FileInfo,\n\ttype FileKind,\n\ttype FileSystem,\n\tgetOrThrow,\n\tgetOrUndefined,\n\tok,\n\ttype PromptTemplate,\n\ttype Shell,\n\ttype ShellExecOptions,\n\ttype ShellExecResult,\n\ttype ShellOutputCaptureOptions,\n\ttype ShellOutputLimits,\n\ttype ShellOutputMetadata,\n\ttype ShellOutputRetention,\n\ttype ShellOutputTruncation,\n\ttype ShellOutputUpdate,\n\ttype ShellOutputView,\n\ttype Skill,\n\ttoError,\n} from \"./harness/types.ts\";\nexport { applyShellOutputUpdate } from \"./harness/utils/output-capture.ts\";\nexport * from \"./harness/utils/shell-output.ts\";\nexport * from \"./harness/utils/truncate.ts\";\nexport * from \"./proxy.ts\";\nexport * from \"./search/index.ts\";\nexport { setDefaultStreamFn } from \"./stream-fn.ts\";\nexport * from \"./types.ts\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAkC/C,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,GACtB,MAAM,8BAA8B,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,kCAAkC,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AACpH,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAKN,8BAA8B,EAG9B,qBAAqB,EACrB,oBAAoB,GACpB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAIN,sBAAsB,EACtB,OAAO,EACP,2BAA2B,EAC3B,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,qBAAqB,EACrB,aAAa,GACb,MAAM,oCAAoC,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAA8B,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAmB3C,OAAO,EACN,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,WAAW,EACX,gBAAgB,GAChB,MAAM,wBAAwB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EASN,kBAAkB,EAElB,eAAe,EAGf,cAAc,EAEd,GAAG,EACH,SAAS,EAKT,UAAU,EACV,cAAc,EACd,EAAE,EAaF,OAAO,GACP,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,cAAc,uCAAuC,CAAC;AACtD,cAAc,wCAAwC,CAAC;AACvD,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,cAAc,YAAY,CAAC","sourcesContent":["export { uuidv7 } from \"@earendil-works/pi-ai\";\nexport type {\n\tAttributeValue,\n\tExactTelemetryAttributes,\n\tInferEventAttributes,\n\tInferOptionalAttributes,\n\tInferRequiredAndOptionalAttributes,\n\tInferStartAttributes,\n\tRecordedTelemetryEvent,\n\tRecordedTelemetrySpan,\n\tSchemaTelemetrySpan,\n\tSpanAttributes,\n\tSpanAttributes as TelemetrySpanAttributes,\n\tSpanOptions,\n\tSpanStatus,\n\tTelemetryAttributeDefinition,\n\tTelemetryAttributeMetadata,\n\tTelemetryAttributeType,\n\tTelemetryContext,\n\tTelemetryEventAttributeDefinition,\n\tTelemetryEventDefinition,\n\tTelemetryParentDefinition,\n\tTelemetrySchemaDefinition,\n\tTelemetrySchemaSpanEndAttributes,\n\tTelemetrySchemaSpanEventAttributes,\n\tTelemetrySchemaSpanEventName,\n\tTelemetrySchemaSpanName,\n\tTelemetrySchemaSpanStartAttributes,\n\tTelemetrySchemaSpanUnion,\n\tTelemetrySpan,\n\tTelemetrySpanDefinition,\n\tTelemetryStartAttributeDefinition,\n\tTypedSpanStarter,\n} from \"@earendil-works/pi-telemetry\";\nexport {\n\tcreateTypedSpanStarter,\n\tdefineTelemetrySchema,\n\tInMemoryTelemetryContext,\n\tNOOP_TELEMETRY_CONTEXT,\n} from \"@earendil-works/pi-telemetry\";\nexport * from \"./agent.ts\";\nexport * from \"./agent-loop.ts\";\nexport { EMPTY_TOOL_USE_DEMOTION_DIAGNOSTIC, ProviderRetryWatchdogAbortError } from \"./assistant-terminal-state.ts\";\nexport * from \"./harness/agent-harness.ts\";\nexport {\n\ttype BranchPreparation,\n\ttype BranchSummaryDetails,\n\ttype BranchSummaryResult,\n\ttype CollectEntriesResult,\n\tcollectEntriesForBranchSummary,\n\ttype FileOperations,\n\ttype GenerateBranchSummaryOptions,\n\tgenerateBranchSummary,\n\tprepareBranchEntries,\n} from \"./harness/compaction/branch-summarization.ts\";\nexport {\n\ttype CompactionPreparation,\n\ttype CompactionSettings,\n\ttype CompactResult,\n\tcalculateContextTokens,\n\tcompact,\n\tDEFAULT_COMPACTION_SETTINGS,\n\testimateContextTokens,\n\testimateTokens,\n\tfindCutPoint,\n\tfindTurnStartIndex,\n\tgenerateSummary,\n\tgenerateSummaryWithUsage,\n\tgetLastAssistantUsage,\n\tprepareCompaction,\n\tserializeConversation,\n\tshouldCompact,\n} from \"./harness/compaction/compaction.ts\";\nexport * from \"./harness/context.ts\";\nexport * from \"./harness/messages.ts\";\nexport * from \"./harness/prompt-templates.ts\";\nexport * from \"./harness/result.ts\";\nexport { type LaneSnapshotReduction, reduceLaneSnapshot } from \"./harness/runtime/reducer.ts\";\nexport * from \"./harness/session/index.ts\";\nexport * from \"./harness/skills.ts\";\nexport * from \"./harness/system-prompt.ts\";\nexport type {\n\tAiSpan,\n\tAiSpanAttributes,\n\tAiSpanEndAttributes,\n\tAiSpanEventAttributes,\n\tAiSpanEventName,\n\tAiSpanName,\n\tAiSpanStartAttributes,\n\tAiTelemetrySpan,\n\tHarnessSpan,\n\tHarnessSpanAttributes,\n\tHarnessSpanEndAttributes,\n\tHarnessSpanEventAttributes,\n\tHarnessSpanEventName,\n\tHarnessSpanName,\n\tHarnessSpanStartAttributes,\n\tHarnessTelemetrySpan,\n} from \"./harness/telemetry.ts\";\nexport {\n\tAGENT_TELEMETRY_SCHEMAS,\n\tAI_TELEMETRY_SCHEMA,\n\tHARNESS_TELEMETRY_SCHEMA,\n\tstartAiSpan,\n\tstartHarnessSpan,\n} from \"./harness/telemetry.ts\";\nexport * from \"./harness/tools/index.ts\";\nexport {\n\ttype AgentHarnessResources,\n\ttype AgentHarnessStreamOptions,\n\ttype AgentHarnessStreamOptionsPatch,\n\ttype AgentHarnessTool,\n\ttype AgentHarnessToolContextSource,\n\ttype AgentHarnessToolInvocation,\n\ttype AgentHarnessToolUpdateCallback,\n\ttype AgentHarnessToolUpdateOptions,\n\tBranchSummaryError,\n\ttype BranchSummaryErrorCode,\n\tCompactionError,\n\ttype CompactionErrorCode,\n\ttype ExecutionEnv,\n\tExecutionError,\n\ttype ExecutionErrorCode,\n\terr,\n\tFileError,\n\ttype FileErrorCode,\n\ttype FileInfo,\n\ttype FileKind,\n\ttype FileSystem,\n\tgetOrThrow,\n\tgetOrUndefined,\n\tok,\n\ttype PromptTemplate,\n\ttype Shell,\n\ttype ShellExecOptions,\n\ttype ShellExecResult,\n\ttype ShellOutputCaptureOptions,\n\ttype ShellOutputLimits,\n\ttype ShellOutputMetadata,\n\ttype ShellOutputRetention,\n\ttype ShellOutputTruncation,\n\ttype ShellOutputUpdate,\n\ttype ShellOutputView,\n\ttype Skill,\n\ttoError,\n} from \"./harness/types.ts\";\nexport { applyShellOutputUpdate } from \"./harness/utils/output-capture.ts\";\nexport * from \"./harness/utils/read-folders/index.ts\";\nexport * from \"./harness/utils/segmented-read-view.ts\";\nexport * from \"./harness/utils/shell-output.ts\";\nexport * from \"./harness/utils/truncate.ts\";\nexport * from \"./proxy.ts\";\nexport * from \"./search/index.ts\";\nexport { setDefaultStreamFn } from \"./stream-fn.ts\";\nexport * from \"./types.ts\";\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/senpi-agent-core",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.16-3",
|
|
4
4
|
"description": "General-purpose agent with transport abstraction, state management, and attachment support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@earendil-works/chord": "0.85.1",
|
|
59
|
-
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.9.
|
|
60
|
-
"@earendil-works/pi-telemetry": "npm:@code-yeongyu/senpi-telemetry@2026.9.
|
|
59
|
+
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.9.16-3",
|
|
60
|
+
"@earendil-works/pi-telemetry": "npm:@code-yeongyu/senpi-telemetry@2026.9.16-3",
|
|
61
61
|
"diff": "9.0.0",
|
|
62
62
|
"ignore": "7.0.8",
|
|
63
63
|
"typebox": "1.3.27",
|