ctxpool 0.1.1 → 0.5.0

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.
Files changed (61) hide show
  1. package/README.md +107 -99
  2. package/dist/cli.js +336 -183
  3. package/dist/cli.js.map +1 -1
  4. package/dist/clipboard.js +8 -10
  5. package/dist/clipboard.js.map +1 -1
  6. package/dist/format.d.ts +32 -0
  7. package/dist/format.js +110 -0
  8. package/dist/format.js.map +1 -0
  9. package/dist/handoff.d.ts +18 -13
  10. package/dist/handoff.js +495 -706
  11. package/dist/handoff.js.map +1 -1
  12. package/dist/mcp.js +99 -221
  13. package/dist/mcp.js.map +1 -1
  14. package/dist/pack.d.ts +14 -0
  15. package/dist/pack.js +121 -0
  16. package/dist/pack.js.map +1 -0
  17. package/dist/paths.d.ts +15 -0
  18. package/dist/paths.js +35 -5
  19. package/dist/paths.js.map +1 -1
  20. package/dist/redact.d.ts +6 -0
  21. package/dist/redact.js +85 -0
  22. package/dist/redact.js.map +1 -0
  23. package/dist/repo.d.ts +6 -1
  24. package/dist/repo.js +109 -123
  25. package/dist/repo.js.map +1 -1
  26. package/dist/session.d.ts +45 -1
  27. package/dist/session.js +1307 -302
  28. package/dist/session.js.map +1 -1
  29. package/dist/store.d.ts +14 -6
  30. package/dist/store.js +90 -115
  31. package/dist/store.js.map +1 -1
  32. package/dist/text.d.ts +6 -0
  33. package/dist/text.js +25 -0
  34. package/dist/text.js.map +1 -0
  35. package/dist/types.d.ts +92 -7
  36. package/dist/ui.d.ts +10 -1
  37. package/dist/ui.js +355 -382
  38. package/dist/ui.js.map +1 -1
  39. package/dist/util.d.ts +10 -1
  40. package/dist/util.js +40 -10
  41. package/dist/util.js.map +1 -1
  42. package/dist/verify.d.ts +16 -0
  43. package/dist/verify.js +74 -0
  44. package/dist/verify.js.map +1 -0
  45. package/dist/version.d.ts +1 -0
  46. package/dist/version.js +4 -0
  47. package/dist/version.js.map +1 -0
  48. package/dist-web/assets/Geist-Variable-B48wpBRb.woff2 +0 -0
  49. package/dist-web/assets/GeistMono-Variable-BRXCGrxA.woff2 +0 -0
  50. package/dist-web/assets/antigravity-Vc0oU6JN.svg +1 -0
  51. package/dist-web/assets/contextpool-mark-4vSRiUeZ.svg +1 -0
  52. package/dist-web/assets/index-BztZuBPJ.js +21 -0
  53. package/dist-web/assets/index-LvoT6mmM.css +2 -0
  54. package/dist-web/index.html +4 -3
  55. package/package.json +18 -17
  56. package/dist/logs.d.ts +0 -9
  57. package/dist/logs.js +0 -82
  58. package/dist/logs.js.map +0 -1
  59. package/dist-web/assets/contextpool-mark-Bu_00i5t.svg +0 -16
  60. package/dist-web/assets/index-BfHRocKl.js +0 -14
  61. package/dist-web/assets/index-l1QjYqDb.css +0 -2
package/dist/clipboard.js CHANGED
@@ -1,18 +1,16 @@
1
1
  import { spawnSync } from "node:child_process";
2
2
  export function copyToClipboard(text) {
3
- const platform = process.platform;
4
- if (platform === "darwin")
3
+ if (process.platform === "darwin")
5
4
  return pipe("pbcopy", [], text);
6
- if (platform === "win32")
5
+ if (process.platform === "win32")
7
6
  return pipe("clip", [], text);
8
- return pipe("wl-copy", [], text) || pipe("xclip", ["-selection", "clipboard"], text) || pipe("xsel", ["--clipboard", "--input"], text);
7
+ return ((process.env.WAYLAND_DISPLAY ? pipe("wl-copy", [], text) : false) ||
8
+ pipe("xclip", ["-selection", "clipboard"], text) ||
9
+ pipe("xsel", ["--clipboard", "--input"], text) ||
10
+ pipe("clip.exe", [], text));
9
11
  }
10
12
  function pipe(command, args, input) {
11
- const result = spawnSync(command, args, {
12
- input,
13
- encoding: "utf8",
14
- stdio: ["pipe", "ignore", "ignore"]
15
- });
16
- return result.status === 0;
13
+ const result = spawnSync(command, args, { input, encoding: "utf8", stdio: ["pipe", "ignore", "ignore"], timeout: 3_000 });
14
+ return !result.error && result.status === 0;
17
15
  }
18
16
  //# sourceMappingURL=clipboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../src/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;AACzI,CAAC;AAED,SAAS,IAAI,CAAC,OAAe,EAAE,IAAc,EAAE,KAAa;IAC1D,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE;QACtC,KAAK;QACL,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;KACpC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../src/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IACnE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAChE,OAAO,CACL,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACjE,IAAI,CAAC,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC;QAChD,IAAI,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,CAC3B,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CAAC,OAAe,EAAE,IAAc,EAAE,KAAa;IAC1D,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1H,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,32 @@
1
+ export declare const style: {
2
+ bold: (text: string) => string;
3
+ dim: (text: string) => string;
4
+ italic: (text: string) => string;
5
+ green: (text: string) => string;
6
+ red: (text: string) => string;
7
+ yellow: (text: string) => string;
8
+ };
9
+ export declare const glyph: {
10
+ ok: string;
11
+ fail: string;
12
+ warn: string;
13
+ unknown: string;
14
+ active: string;
15
+ idle: string;
16
+ };
17
+ export declare function width(): number;
18
+ /** Visible length, ignoring ANSI escapes. */
19
+ export declare function visibleLength(text: string): number;
20
+ export declare function print(lines: (string | undefined | false)[]): void;
21
+ export declare function heading(text: string, detail?: string): string;
22
+ /** Aligned label/value rows. Long values wrap under the value column. */
23
+ export declare function rows(pairs: [string, string | undefined][]): string[];
24
+ /** Column-aligned table without borders. */
25
+ export declare function table(data: string[][]): string[];
26
+ export declare function line(text: string): string;
27
+ export declare function note(text: string): string;
28
+ export declare function wrap(text: string, max: number): string[];
29
+ export declare function printError(message: string, hint?: string): void;
30
+ export declare function tildePath(path: string): string;
31
+ export declare function relativeTime(iso: string, now?: number): string;
32
+ export declare function plural(count: number, noun: string): string;
package/dist/format.js ADDED
@@ -0,0 +1,110 @@
1
+ // Terminal output: quiet, aligned, monochrome. Color only marks status. Plain text when piped or NO_COLOR is set.
2
+ import { homedir } from "node:os";
3
+ function colorEnabled(stream) {
4
+ if (process.env.NO_COLOR)
5
+ return false;
6
+ if (process.env.FORCE_COLOR && process.env.FORCE_COLOR !== "0")
7
+ return true;
8
+ return Boolean(stream.isTTY) && process.env.TERM !== "dumb";
9
+ }
10
+ const useColor = colorEnabled(process.stdout);
11
+ const useErrorColor = colorEnabled(process.stderr);
12
+ const sgr = (open, close, enabled = useColor) => (text) => (enabled ? `\u001b[${open}m${text}\u001b[${close}m` : text);
13
+ export const style = {
14
+ bold: sgr(1, 22),
15
+ dim: sgr(2, 22),
16
+ italic: sgr(3, 23),
17
+ green: sgr(32, 39),
18
+ red: sgr(31, 39),
19
+ yellow: sgr(33, 39)
20
+ };
21
+ const errorStyle = { bold: sgr(1, 22, useErrorColor), dim: sgr(2, 22, useErrorColor), red: sgr(31, 39, useErrorColor) };
22
+ export const glyph = {
23
+ ok: style.green("✓"),
24
+ fail: style.red("✗"),
25
+ warn: style.yellow("!"),
26
+ unknown: style.dim("?"),
27
+ active: "●",
28
+ idle: style.dim("○")
29
+ };
30
+ const INDENT = " ";
31
+ export function width() {
32
+ return Math.min(process.stdout.columns || 100, 100);
33
+ }
34
+ /** Visible length, ignoring ANSI escapes. */
35
+ export function visibleLength(text) {
36
+ return text.replace(/\u001b\[[0-9;]*m/g, "").length;
37
+ }
38
+ function pad(text, size) {
39
+ return text + " ".repeat(Math.max(0, size - visibleLength(text)));
40
+ }
41
+ export function print(lines) {
42
+ process.stdout.write(`\n${lines.filter((line) => line !== undefined && line !== false).join("\n")}\n\n`);
43
+ }
44
+ export function heading(text, detail) {
45
+ return `${INDENT}${style.bold(text)}${detail ? ` ${style.dim(detail)}` : ""}`;
46
+ }
47
+ /** Aligned label/value rows. Long values wrap under the value column. */
48
+ export function rows(pairs) {
49
+ const present = pairs.filter((pair) => Boolean(pair[1]));
50
+ const labelWidth = Math.max(...present.map(([label]) => label.length), 0) + 3;
51
+ const valueWidth = Math.max(30, width() - INDENT.length - labelWidth);
52
+ return present.flatMap(([label, value]) => wrap(value, valueWidth).map((line, index) => `${INDENT}${index === 0 ? style.dim(pad(label, labelWidth)) : " ".repeat(labelWidth)}${line}`));
53
+ }
54
+ /** Column-aligned table without borders. */
55
+ export function table(data) {
56
+ const widths = data[0]?.map((_, column) => Math.max(...data.map((row) => visibleLength(row[column] || "")))) || [];
57
+ return data.map((row) => INDENT + row.map((cell, column) => (column === row.length - 1 ? cell : pad(cell, widths[column] + 3))).join("").trimEnd());
58
+ }
59
+ export function line(text) {
60
+ return `${INDENT}${text}`;
61
+ }
62
+ export function note(text) {
63
+ return `${INDENT}${style.dim(text)}`;
64
+ }
65
+ export function wrap(text, max) {
66
+ const words = text.split(/\s+/).filter(Boolean);
67
+ const lines = [];
68
+ let current = "";
69
+ for (const word of words) {
70
+ if (current && visibleLength(current) + 1 + visibleLength(word) > max) {
71
+ lines.push(current);
72
+ current = word;
73
+ }
74
+ else {
75
+ current = current ? `${current} ${word}` : word;
76
+ }
77
+ }
78
+ if (current)
79
+ lines.push(current);
80
+ return lines.length ? lines : [""];
81
+ }
82
+ export function printError(message, hint) {
83
+ process.stderr.write(`\n${INDENT}${errorStyle.red("✗")} ${errorStyle.bold(message)}\n${hint ? `${INDENT} ${errorStyle.dim(hint)}\n` : ""}\n`);
84
+ }
85
+ export function tildePath(path) {
86
+ const home = homedir();
87
+ return path === home || path.startsWith(`${home}/`) ? `~${path.slice(home.length)}` : path;
88
+ }
89
+ export function relativeTime(iso, now = Date.now()) {
90
+ const then = Date.parse(iso);
91
+ if (!Number.isFinite(then))
92
+ return iso;
93
+ const seconds = Math.round((now - then) / 1000);
94
+ if (seconds < 45)
95
+ return "just now";
96
+ const minutes = Math.round(seconds / 60);
97
+ if (minutes < 60)
98
+ return `${minutes}m ago`;
99
+ const hours = Math.round(minutes / 60);
100
+ if (hours < 24)
101
+ return `${hours}h ago`;
102
+ const days = Math.round(hours / 24);
103
+ if (days < 7)
104
+ return `${days}d ago`;
105
+ return new Date(then).toLocaleDateString(undefined, { month: "short", day: "numeric", year: days > 300 ? "numeric" : undefined });
106
+ }
107
+ export function plural(count, noun) {
108
+ return `${count} ${noun}${count === 1 ? "" : "s"}`;
109
+ }
110
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
package/dist/handoff.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- import type { AgentSignal, ContextBlock, ContextPack, ContextPackOutput, EngineeringMemory, GitSnapshot, HandoffContinuitySummary, HandoffPacket, HandoffSections, SourceSession } from "./types.js";
1
+ import type { AgentSignal, ContextBlock, EngineeringMemory, GitSnapshot, HandoffContinuitySummary, HandoffListItem, HandoffPacket, HandoffSections, SourceSession } from "./types.js";
2
2
  import { type SessionFrom } from "./session.js";
3
+ export { createContextPack, normalizeContextPack, renderContextPackOutput } from "./pack.js";
3
4
  export type CreateHandoffOptions = {
4
5
  cwd?: string;
5
6
  task?: string;
@@ -7,30 +8,34 @@ export type CreateHandoffOptions = {
7
8
  from?: SessionFrom;
8
9
  session?: string;
9
10
  includeTranscript?: boolean;
11
+ /** Token budget for the transcript excerpt. */
10
12
  budget?: number;
11
13
  useOllama?: boolean;
14
+ ollamaModel?: string;
12
15
  };
13
16
  export declare function createHandoff(options?: CreateHandoffOptions): Promise<HandoffPacket>;
17
+ /**
18
+ * Pull the working state out of a session. Structured agent data (plans, command exit codes, edits)
19
+ * wins; prose heuristics fill gaps and only read the user's and the agent's own words, never tool output.
20
+ */
14
21
  export declare function buildSections(task: string, filesTouched: string[], diffStat: string, sourceSessionOrSources: SourceSession | AgentSignal[]): HandoffSections;
15
- export declare function renderHandoffMarkdown(packet: Omit<HandoffPacket, "markdownPath"> & {
16
- markdownPath: string;
17
- }, includeTranscript?: boolean): string;
18
- export declare function normalizeHandoffPacket(packet: HandoffPacket): HandoffPacket;
19
22
  export declare function buildHandoffSummary(task: string, repo: GitSnapshot, sourceSession: SourceSession | undefined, sections: HandoffSections): HandoffContinuitySummary;
20
- export declare function renderAgentContextMarkdown(packet: HandoffPacket): string;
23
+ export declare function normalizeHandoffPacket(input: HandoffPacket): HandoffPacket;
24
+ /** The compact shape the web UI lists and charts. */
25
+ export declare function summarizeHandoff(packet: HandoffPacket): HandoffListItem;
26
+ export declare function buildEngineeringMemory(task: string, repo: GitSnapshot, sourceSession: SourceSession | undefined, handoffId: string, summary: HandoffContinuitySummary): EngineeringMemory;
27
+ /**
28
+ * The handoff an agent reads. Ordered by what the next agent needs first; empty sections are omitted.
29
+ */
30
+ export declare function renderHandoffMarkdown(packet: HandoffPacket, includeTranscript?: boolean): string;
31
+ /** Import-ready context for an agent: the handoff without the transcript, plus the structured summary. */
21
32
  export declare function buildAgentContext(packet: HandoffPacket): {
22
33
  markdown: string;
23
34
  summary: HandoffContinuitySummary;
24
35
  engineeringMemory: EngineeringMemory;
25
- packet: HandoffPacket;
26
36
  };
37
+ export declare function renderAgentContextMarkdown(packet: HandoffPacket): string;
27
38
  export declare function deriveContextBlocks(packet: HandoffPacket): ContextBlock[];
28
- export declare function createContextPack(name: string, blocks?: ContextBlock[], options?: {
29
- includeRawTranscript?: boolean;
30
- }): ContextPack;
31
- export declare function renderContextPackOutput(pack: ContextPack): ContextPackOutput;
32
- export declare function normalizeContextPack(pack: ContextPack): ContextPack;
33
39
  export declare function buildTeamTimelineExport(packet: HandoffPacket, options?: {
34
40
  includeRawTranscript?: boolean;
35
41
  }): HandoffPacket;
36
- export declare function buildEngineeringMemory(task: string, repo: GitSnapshot, sourceSession: SourceSession | undefined, handoffId: string, summary: HandoffContinuitySummary): EngineeringMemory;