@spences10/pi-context 0.0.5 → 0.0.7

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/README.md CHANGED
@@ -39,18 +39,25 @@ pi -e ./packages/pi-context
39
39
  - `context_purge` / `/context purge [days]` — delete old indexed
40
40
  output. Also supports source/project/session filters and
41
41
  `/context purge expired`.
42
+ - `/context settings` — choose retention/size presets or inspect the
43
+ effective saved/env-backed policy.
42
44
 
43
45
  Use `/context` in interactive mode for a small modal with list, stats,
44
- and purge actions.
46
+ settings, and purge actions.
45
47
 
46
- Receipts suggest the main retrieval path:
48
+ Receipts include the source id, first exact chunk id, and the main
49
+ retrieval path:
47
50
 
48
51
  ```text
52
+ First chunk id: ctx_..._0001
49
53
  context_search query:"..." source_id:"ctx_..."
50
54
  context_get source_id:"ctx_..."
51
55
  context_list
52
56
  ```
53
57
 
58
+ `context_get` accepts exact chunk ids plus ordinal aliases such as `1`
59
+ or `0001`, and legacy guessed references such as `ctx_...:chunk:000`.
60
+
54
61
  ## Coverage policy
55
62
 
56
63
  Intentional sidecar-backed output:
@@ -89,7 +96,21 @@ back to the current project path. Retrieval tools use that scope by
89
96
  default to avoid leaking other projects or sessions into results; pass
90
97
  `global: true` when you intend to search or list everything.
91
98
 
92
- Retention is env-backed:
99
+ Retention, storage cap, and capture thresholds are saved at
100
+ `~/.config/my-pi/context.json` via `/context settings`. Presets
101
+ include `default`, `light`, `balanced`, `research`, and `archive`;
102
+ custom values are available with:
103
+
104
+ ```text
105
+ /context settings custom <days|off> <max-mb|off> [capture-kb] [capture-lines] [purge-on-shutdown]
106
+ ```
107
+
108
+ Capture thresholds control when large tool output is moved into the
109
+ sidecar instead of staying inline in the model context. Defaults match
110
+ historical behavior: generic tools capture after `24 KiB` or `300`
111
+ lines; MCP output captures after `50 KiB` or `2000` lines.
112
+
113
+ Environment variables override saved settings:
93
114
 
94
115
  - `MY_PI_CONTEXT_RETENTION_DAYS` — default `7`; set `0`, `off`, or
95
116
  `disabled` to disable age cleanup.
@@ -97,6 +118,11 @@ Retention is env-backed:
97
118
  cleanup on shutdown.
98
119
  - `MY_PI_CONTEXT_MAX_MB` — optional max stored raw bytes; oldest
99
120
  sources are removed first when exceeded.
121
+ - `MY_PI_CONTEXT_CAPTURE_MAX_KB` / `MY_PI_CONTEXT_CAPTURE_MAX_LINES` —
122
+ generic tool-output capture threshold.
123
+ - `MY_PI_CONTEXT_MCP_MAX_KB` / `MY_PI_CONTEXT_MCP_MAX_LINES` — MCP
124
+ output capture threshold.
125
+ - `MY_PI_CONTEXT_CONFIG` — override the saved settings file path.
100
126
 
101
127
  ## Safety model
102
128
 
@@ -0,0 +1,36 @@
1
+ export type ContextSettingsPreset = 'default' | 'light' | 'balanced' | 'research' | 'archive';
2
+ export interface ContextOutputLimits {
3
+ max_bytes: number;
4
+ max_lines: number;
5
+ }
6
+ export interface ContextSettingsValues {
7
+ retention_days: number | null;
8
+ max_mb: number | null;
9
+ purge_on_shutdown: boolean;
10
+ capture_max_bytes: number;
11
+ capture_max_lines: number;
12
+ mcp_max_bytes: number;
13
+ mcp_max_lines: number;
14
+ }
15
+ export interface ContextSettingsConfig extends ContextSettingsValues {
16
+ version: 1;
17
+ preset: ContextSettingsPreset | 'custom';
18
+ }
19
+ export interface ContextSettingsPresetDefinition extends ContextSettingsValues {
20
+ label: string;
21
+ description: string;
22
+ }
23
+ export declare const DEFAULT_CONTEXT_CAPTURE_MAX_BYTES: number;
24
+ export declare const DEFAULT_CONTEXT_CAPTURE_MAX_LINES = 300;
25
+ export declare const DEFAULT_CONTEXT_MCP_MAX_BYTES: number;
26
+ export declare const DEFAULT_CONTEXT_MCP_MAX_LINES = 2000;
27
+ export declare const CONTEXT_SETTINGS_PRESETS: Record<ContextSettingsPreset, ContextSettingsPresetDefinition>;
28
+ export declare const DEFAULT_CONTEXT_SETTINGS: ContextSettingsConfig;
29
+ export declare function get_context_settings_config_path(): string;
30
+ export declare function context_settings_from_preset(preset: ContextSettingsPreset): ContextSettingsConfig;
31
+ export declare function load_context_settings_config(): ContextSettingsConfig | null;
32
+ export declare function save_context_settings_config(config: ContextSettingsConfig): void;
33
+ export declare function get_context_capture_limits(env?: NodeJS.ProcessEnv): ContextOutputLimits;
34
+ export declare function get_context_mcp_output_limits(env?: NodeJS.ProcessEnv): ContextOutputLimits;
35
+ export declare function normalize_context_settings_config(value: Partial<ContextSettingsConfig>): ContextSettingsConfig;
36
+ export declare function is_context_settings_preset(value: unknown): value is ContextSettingsPreset;
package/dist/config.js ADDED
@@ -0,0 +1,184 @@
1
+ import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync, } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { dirname, join } from 'node:path';
4
+ export const DEFAULT_CONTEXT_CAPTURE_MAX_BYTES = 24 * 1024;
5
+ export const DEFAULT_CONTEXT_CAPTURE_MAX_LINES = 300;
6
+ export const DEFAULT_CONTEXT_MCP_MAX_BYTES = 50 * 1024;
7
+ export const DEFAULT_CONTEXT_MCP_MAX_LINES = 2_000;
8
+ export const CONTEXT_SETTINGS_PRESETS = {
9
+ default: {
10
+ label: 'Default',
11
+ description: '7 days, no size cap; capture after 24 KiB / 300 lines',
12
+ retention_days: 7,
13
+ max_mb: null,
14
+ purge_on_shutdown: false,
15
+ capture_max_bytes: DEFAULT_CONTEXT_CAPTURE_MAX_BYTES,
16
+ capture_max_lines: DEFAULT_CONTEXT_CAPTURE_MAX_LINES,
17
+ mcp_max_bytes: DEFAULT_CONTEXT_MCP_MAX_BYTES,
18
+ mcp_max_lines: DEFAULT_CONTEXT_MCP_MAX_LINES,
19
+ },
20
+ light: {
21
+ label: 'Light',
22
+ description: '1 day, 50 MiB cap; capture after 16 KiB / 200 lines',
23
+ retention_days: 1,
24
+ max_mb: 50,
25
+ purge_on_shutdown: false,
26
+ capture_max_bytes: 16 * 1024,
27
+ capture_max_lines: 200,
28
+ mcp_max_bytes: 32 * 1024,
29
+ mcp_max_lines: 1_000,
30
+ },
31
+ balanced: {
32
+ label: 'Balanced',
33
+ description: '7 days, 250 MiB cap; capture after 24 KiB / 300 lines',
34
+ retention_days: 7,
35
+ max_mb: 250,
36
+ purge_on_shutdown: false,
37
+ capture_max_bytes: DEFAULT_CONTEXT_CAPTURE_MAX_BYTES,
38
+ capture_max_lines: DEFAULT_CONTEXT_CAPTURE_MAX_LINES,
39
+ mcp_max_bytes: DEFAULT_CONTEXT_MCP_MAX_BYTES,
40
+ mcp_max_lines: DEFAULT_CONTEXT_MCP_MAX_LINES,
41
+ },
42
+ research: {
43
+ label: 'Research',
44
+ description: '30 days, 1 GiB cap; capture after 48 KiB / 600 lines',
45
+ retention_days: 30,
46
+ max_mb: 1024,
47
+ purge_on_shutdown: false,
48
+ capture_max_bytes: 48 * 1024,
49
+ capture_max_lines: 600,
50
+ mcp_max_bytes: 96 * 1024,
51
+ mcp_max_lines: 3_000,
52
+ },
53
+ archive: {
54
+ label: 'Archive',
55
+ description: '90 days, 5 GiB cap; capture after 64 KiB / 1,000 lines',
56
+ retention_days: 90,
57
+ max_mb: 5120,
58
+ purge_on_shutdown: false,
59
+ capture_max_bytes: 64 * 1024,
60
+ capture_max_lines: 1_000,
61
+ mcp_max_bytes: 128 * 1024,
62
+ mcp_max_lines: 4_000,
63
+ },
64
+ };
65
+ export const DEFAULT_CONTEXT_SETTINGS = {
66
+ version: 1,
67
+ preset: 'default',
68
+ retention_days: CONTEXT_SETTINGS_PRESETS.default.retention_days,
69
+ max_mb: CONTEXT_SETTINGS_PRESETS.default.max_mb,
70
+ purge_on_shutdown: CONTEXT_SETTINGS_PRESETS.default.purge_on_shutdown,
71
+ capture_max_bytes: CONTEXT_SETTINGS_PRESETS.default.capture_max_bytes,
72
+ capture_max_lines: CONTEXT_SETTINGS_PRESETS.default.capture_max_lines,
73
+ mcp_max_bytes: CONTEXT_SETTINGS_PRESETS.default.mcp_max_bytes,
74
+ mcp_max_lines: CONTEXT_SETTINGS_PRESETS.default.mcp_max_lines,
75
+ };
76
+ export function get_context_settings_config_path() {
77
+ if (process.env.MY_PI_CONTEXT_CONFIG)
78
+ return process.env.MY_PI_CONTEXT_CONFIG;
79
+ const xdg = process.env.XDG_CONFIG_HOME || join(homedir(), '.config');
80
+ return join(xdg, 'my-pi', 'context.json');
81
+ }
82
+ export function context_settings_from_preset(preset) {
83
+ const definition = CONTEXT_SETTINGS_PRESETS[preset];
84
+ return {
85
+ version: 1,
86
+ preset,
87
+ retention_days: definition.retention_days,
88
+ max_mb: definition.max_mb,
89
+ purge_on_shutdown: definition.purge_on_shutdown,
90
+ capture_max_bytes: definition.capture_max_bytes,
91
+ capture_max_lines: definition.capture_max_lines,
92
+ mcp_max_bytes: definition.mcp_max_bytes,
93
+ mcp_max_lines: definition.mcp_max_lines,
94
+ };
95
+ }
96
+ export function load_context_settings_config() {
97
+ const path = get_context_settings_config_path();
98
+ if (!existsSync(path))
99
+ return null;
100
+ try {
101
+ const parsed = JSON.parse(readFileSync(path, 'utf-8'));
102
+ return normalize_context_settings_config(parsed);
103
+ }
104
+ catch {
105
+ return null;
106
+ }
107
+ }
108
+ export function save_context_settings_config(config) {
109
+ const path = get_context_settings_config_path();
110
+ const dir = dirname(path);
111
+ if (!existsSync(dir))
112
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
113
+ const tmp = `${path}.tmp-${Date.now()}`;
114
+ writeFileSync(tmp, JSON.stringify(config, null, '\t') + '\n', {
115
+ mode: 0o600,
116
+ });
117
+ renameSync(tmp, path);
118
+ }
119
+ export function get_context_capture_limits(env = process.env) {
120
+ const saved = load_context_settings_config();
121
+ const fallback = saved ?? DEFAULT_CONTEXT_SETTINGS;
122
+ return {
123
+ max_bytes: parse_positive_byte_env(env.MY_PI_CONTEXT_CAPTURE_MAX_KB, fallback.capture_max_bytes),
124
+ max_lines: parse_positive_number_env(env.MY_PI_CONTEXT_CAPTURE_MAX_LINES, fallback.capture_max_lines),
125
+ };
126
+ }
127
+ export function get_context_mcp_output_limits(env = process.env) {
128
+ const saved = load_context_settings_config();
129
+ const fallback = saved ?? DEFAULT_CONTEXT_SETTINGS;
130
+ return {
131
+ max_bytes: parse_positive_byte_env(env.MY_PI_CONTEXT_MCP_MAX_KB, fallback.mcp_max_bytes),
132
+ max_lines: parse_positive_number_env(env.MY_PI_CONTEXT_MCP_MAX_LINES, fallback.mcp_max_lines),
133
+ };
134
+ }
135
+ export function normalize_context_settings_config(value) {
136
+ const preset = is_context_settings_preset(value.preset)
137
+ ? value.preset
138
+ : value.preset === 'custom'
139
+ ? 'custom'
140
+ : 'custom';
141
+ const base = preset !== 'custom'
142
+ ? context_settings_from_preset(preset)
143
+ : DEFAULT_CONTEXT_SETTINGS;
144
+ return {
145
+ version: 1,
146
+ preset,
147
+ retention_days: normalize_optional_positive_number(value.retention_days, base.retention_days),
148
+ max_mb: normalize_optional_positive_number(value.max_mb, base.max_mb),
149
+ purge_on_shutdown: typeof value.purge_on_shutdown === 'boolean'
150
+ ? value.purge_on_shutdown
151
+ : base.purge_on_shutdown,
152
+ capture_max_bytes: normalize_positive_number(value.capture_max_bytes, base.capture_max_bytes),
153
+ capture_max_lines: normalize_positive_number(value.capture_max_lines, base.capture_max_lines),
154
+ mcp_max_bytes: normalize_positive_number(value.mcp_max_bytes, base.mcp_max_bytes),
155
+ mcp_max_lines: normalize_positive_number(value.mcp_max_lines, base.mcp_max_lines),
156
+ };
157
+ }
158
+ export function is_context_settings_preset(value) {
159
+ return (typeof value === 'string' &&
160
+ Object.hasOwn(CONTEXT_SETTINGS_PRESETS, value));
161
+ }
162
+ function normalize_optional_positive_number(value, fallback) {
163
+ if (value === null)
164
+ return null;
165
+ if (typeof value !== 'number')
166
+ return fallback;
167
+ return Number.isFinite(value) && value > 0 ? value : fallback;
168
+ }
169
+ function normalize_positive_number(value, fallback) {
170
+ if (typeof value !== 'number')
171
+ return fallback;
172
+ return Number.isFinite(value) && value > 0 ? value : fallback;
173
+ }
174
+ function parse_positive_number_env(value, fallback) {
175
+ if (value === undefined || value.trim() === '')
176
+ return fallback;
177
+ const parsed = Number(value.trim());
178
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
179
+ }
180
+ function parse_positive_byte_env(value, fallback) {
181
+ const kb = parse_positive_number_env(value, fallback / 1024);
182
+ return Math.round(kb * 1024);
183
+ }
184
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,aAAa,GACb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAkC1C,MAAM,CAAC,MAAM,iCAAiC,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3D,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,CAAC;AACrD,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,GAAG,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAEnD,MAAM,CAAC,MAAM,wBAAwB,GAGjC;IACH,OAAO,EAAE;QACR,KAAK,EAAE,SAAS;QAChB,WAAW,EACV,uDAAuD;QACxD,cAAc,EAAE,CAAC;QACjB,MAAM,EAAE,IAAI;QACZ,iBAAiB,EAAE,KAAK;QACxB,iBAAiB,EAAE,iCAAiC;QACpD,iBAAiB,EAAE,iCAAiC;QACpD,aAAa,EAAE,6BAA6B;QAC5C,aAAa,EAAE,6BAA6B;KAC5C;IACD,KAAK,EAAE;QACN,KAAK,EAAE,OAAO;QACd,WAAW,EACV,qDAAqD;QACtD,cAAc,EAAE,CAAC;QACjB,MAAM,EAAE,EAAE;QACV,iBAAiB,EAAE,KAAK;QACxB,iBAAiB,EAAE,EAAE,GAAG,IAAI;QAC5B,iBAAiB,EAAE,GAAG;QACtB,aAAa,EAAE,EAAE,GAAG,IAAI;QACxB,aAAa,EAAE,KAAK;KACpB;IACD,QAAQ,EAAE;QACT,KAAK,EAAE,UAAU;QACjB,WAAW,EACV,uDAAuD;QACxD,cAAc,EAAE,CAAC;QACjB,MAAM,EAAE,GAAG;QACX,iBAAiB,EAAE,KAAK;QACxB,iBAAiB,EAAE,iCAAiC;QACpD,iBAAiB,EAAE,iCAAiC;QACpD,aAAa,EAAE,6BAA6B;QAC5C,aAAa,EAAE,6BAA6B;KAC5C;IACD,QAAQ,EAAE;QACT,KAAK,EAAE,UAAU;QACjB,WAAW,EACV,sDAAsD;QACvD,cAAc,EAAE,EAAE;QAClB,MAAM,EAAE,IAAI;QACZ,iBAAiB,EAAE,KAAK;QACxB,iBAAiB,EAAE,EAAE,GAAG,IAAI;QAC5B,iBAAiB,EAAE,GAAG;QACtB,aAAa,EAAE,EAAE,GAAG,IAAI;QACxB,aAAa,EAAE,KAAK;KACpB;IACD,OAAO,EAAE;QACR,KAAK,EAAE,SAAS;QAChB,WAAW,EACV,wDAAwD;QACzD,cAAc,EAAE,EAAE;QAClB,MAAM,EAAE,IAAI;QACZ,iBAAiB,EAAE,KAAK;QACxB,iBAAiB,EAAE,EAAE,GAAG,IAAI;QAC5B,iBAAiB,EAAE,KAAK;QACxB,aAAa,EAAE,GAAG,GAAG,IAAI;QACzB,aAAa,EAAE,KAAK;KACpB;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAA0B;IAC9D,OAAO,EAAE,CAAC;IACV,MAAM,EAAE,SAAS;IACjB,cAAc,EAAE,wBAAwB,CAAC,OAAO,CAAC,cAAc;IAC/D,MAAM,EAAE,wBAAwB,CAAC,OAAO,CAAC,MAAM;IAC/C,iBAAiB,EAChB,wBAAwB,CAAC,OAAO,CAAC,iBAAiB;IACnD,iBAAiB,EAChB,wBAAwB,CAAC,OAAO,CAAC,iBAAiB;IACnD,iBAAiB,EAChB,wBAAwB,CAAC,OAAO,CAAC,iBAAiB;IACnD,aAAa,EAAE,wBAAwB,CAAC,OAAO,CAAC,aAAa;IAC7D,aAAa,EAAE,wBAAwB,CAAC,OAAO,CAAC,aAAa;CAC7D,CAAC;AAEF,MAAM,UAAU,gCAAgC;IAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB;QACnC,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IACzC,MAAM,GAAG,GACR,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC3C,MAA6B;IAE7B,MAAM,UAAU,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACpD,OAAO;QACN,OAAO,EAAE,CAAC;QACV,MAAM;QACN,cAAc,EAAE,UAAU,CAAC,cAAc;QACzC,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;QAC/C,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;QAC/C,iBAAiB,EAAE,UAAU,CAAC,iBAAiB;QAC/C,aAAa,EAAE,UAAU,CAAC,aAAa;QACvC,aAAa,EAAE,UAAU,CAAC,aAAa;KACvC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC3C,MAAM,IAAI,GAAG,gCAAgC,EAAE,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACxB,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CACO,CAAC;QACpC,OAAO,iCAAiC,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC3C,MAA6B;IAE7B,MAAM,IAAI,GAAG,gCAAgC,EAAE,CAAC;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACnB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAElD,MAAM,GAAG,GAAG,GAAG,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACxC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;QAC7D,IAAI,EAAE,KAAK;KACX,CAAC,CAAC;IACH,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,0BAA0B,CACzC,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,KAAK,GAAG,4BAA4B,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,KAAK,IAAI,wBAAwB,CAAC;IACnD,OAAO;QACN,SAAS,EAAE,uBAAuB,CACjC,GAAG,CAAC,4BAA4B,EAChC,QAAQ,CAAC,iBAAiB,CAC1B;QACD,SAAS,EAAE,yBAAyB,CACnC,GAAG,CAAC,+BAA+B,EACnC,QAAQ,CAAC,iBAAiB,CAC1B;KACD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC5C,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,KAAK,GAAG,4BAA4B,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,KAAK,IAAI,wBAAwB,CAAC;IACnD,OAAO;QACN,SAAS,EAAE,uBAAuB,CACjC,GAAG,CAAC,wBAAwB,EAC5B,QAAQ,CAAC,aAAa,CACtB;QACD,SAAS,EAAE,yBAAyB,CACnC,GAAG,CAAC,2BAA2B,EAC/B,QAAQ,CAAC,aAAa,CACtB;KACD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iCAAiC,CAChD,KAAqC;IAErC,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC;QACtD,CAAC,CAAC,KAAK,CAAC,MAAM;QACd,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ;YAC1B,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,QAAQ,CAAC;IACb,MAAM,IAAI,GACT,MAAM,KAAK,QAAQ;QAClB,CAAC,CAAC,4BAA4B,CAAC,MAAM,CAAC;QACtC,CAAC,CAAC,wBAAwB,CAAC;IAE7B,OAAO;QACN,OAAO,EAAE,CAAC;QACV,MAAM;QACN,cAAc,EAAE,kCAAkC,CACjD,KAAK,CAAC,cAAc,EACpB,IAAI,CAAC,cAAc,CACnB;QACD,MAAM,EAAE,kCAAkC,CACzC,KAAK,CAAC,MAAM,EACZ,IAAI,CAAC,MAAM,CACX;QACD,iBAAiB,EAChB,OAAO,KAAK,CAAC,iBAAiB,KAAK,SAAS;YAC3C,CAAC,CAAC,KAAK,CAAC,iBAAiB;YACzB,CAAC,CAAC,IAAI,CAAC,iBAAiB;QAC1B,iBAAiB,EAAE,yBAAyB,CAC3C,KAAK,CAAC,iBAAiB,EACvB,IAAI,CAAC,iBAAiB,CACtB;QACD,iBAAiB,EAAE,yBAAyB,CAC3C,KAAK,CAAC,iBAAiB,EACvB,IAAI,CAAC,iBAAiB,CACtB;QACD,aAAa,EAAE,yBAAyB,CACvC,KAAK,CAAC,aAAa,EACnB,IAAI,CAAC,aAAa,CAClB;QACD,aAAa,EAAE,yBAAyB,CACvC,KAAK,CAAC,aAAa,EACnB,IAAI,CAAC,aAAa,CAClB;KACD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CACzC,KAAc;IAEd,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,MAAM,CAAC,MAAM,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAC9C,CAAC;AACH,CAAC;AAED,SAAS,kCAAkC,CAC1C,KAAc,EACd,QAAuB;IAEvB,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC/C,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/D,CAAC;AAED,SAAS,yBAAyB,CACjC,KAAc,EACd,QAAgB;IAEhB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC/C,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/D,CAAC;AAED,SAAS,yBAAyB,CACjC,KAAyB,EACzB,QAAgB;IAEhB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClE,CAAC;AAED,SAAS,uBAAuB,CAC/B,KAAyB,EACzB,QAAgB;IAEhB,MAAM,EAAE,GAAG,yBAAyB,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;AAC9B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  import type { ExtensionAPI } from '@mariozechner/pi-coding-agent';
2
2
  export default function context_sidecar(pi: ExtensionAPI): void;
3
+ export { CONTEXT_SETTINGS_PRESETS, context_settings_from_preset, get_context_capture_limits, get_context_mcp_output_limits, get_context_settings_config_path, load_context_settings_config, save_context_settings_config, } from './config.js';
4
+ export type { ContextOutputLimits, ContextSettingsConfig, ContextSettingsPreset, ContextSettingsValues, } from './config.js';
3
5
  export { get_context_store, is_context_sidecar_enabled, maybe_store_context_output, parse_context_retention_policy, set_context_sidecar_enabled, should_index_text, } from './store.js';
4
6
  export type { ContextCleanupResult, ContextListResult, ContextPurgeDetails, ContextRetentionPolicy, ContextScopeOptions, ContextSearchResult, ContextStats, StoreContextInput, StoredContextOutput, } from './store.js';