@chances-ai/config 3.4.0 → 3.6.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.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type ChancesConfig } from "./types.js";
2
- export { type AgentConfig, type ChancesConfig, type ExternalPluginEntry, type McpConfig, type McpServerConfigJson, type PermissionPolicy, type PermissionDecision, type PluginsConfig, type ToolCategory, defaultPolicy, } from "./types.js";
2
+ export { type AgentConfig, type ChancesConfig, type CompactionConfig, type ExternalPluginEntry, type McpConfig, type McpServerConfigJson, type PermissionPolicy, type PermissionDecision, type PluginsConfig, type ToolCategory, defaultPolicy, } from "./types.js";
3
3
  export { AuthStore } from "./auth.js";
4
4
  /** Walks upward from `cwd` to find a workspace root (`.git` or `.chances`). */
5
5
  export declare function discoverWorkspace(cwd?: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,aAAa,EAMnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAQrE;AAoBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,EAAE,GAAG,oBAAc,GAAG,aAAa,CAkBxF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,aAAa,EAOnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAQrE;AAoBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,EAAE,GAAG,oBAAc,GAAG,aAAa,CAkBxF"}
package/dist/index.js CHANGED
@@ -96,7 +96,87 @@ function mergeAgent(global, project, env) {
96
96
  out.maxBackgroundTasks = cand;
97
97
  break;
98
98
  }
99
- return out.maxTurns === undefined && out.maxBackgroundTasks === undefined ? undefined : out;
99
+ const compaction = mergeCompaction(global?.compaction, project?.compaction, env);
100
+ if (compaction)
101
+ out.compaction = compaction;
102
+ return out.maxTurns === undefined && out.maxBackgroundTasks === undefined && out.compaction === undefined
103
+ ? undefined
104
+ : out;
105
+ }
106
+ /**
107
+ * (3.5) Merge compaction settings. Env > project > global per field.
108
+ * Out-of-range / non-finite values fall through, same shape as
109
+ * `mergeAgent`. Strict-int / strict-bool env parsing (no
110
+ * `parseInt`-style footguns).
111
+ */
112
+ function mergeCompaction(global, project, env) {
113
+ const enabledCandidates = [
114
+ parseStrictBool(env.CHANCES_COMPACTION_ENABLED),
115
+ project?.enabled,
116
+ global?.enabled,
117
+ ];
118
+ const reserveCandidates = [
119
+ parseStrictInt(env.CHANCES_COMPACTION_RESERVE_TOKENS),
120
+ project?.reserveTokens,
121
+ global?.reserveTokens,
122
+ ];
123
+ const keepCandidates = [
124
+ parseStrictInt(env.CHANCES_COMPACTION_KEEP_RECENT_TURNS),
125
+ project?.keepRecentTurns,
126
+ global?.keepRecentTurns,
127
+ ];
128
+ const savingsCandidates = [
129
+ parseStrictInt(env.CHANCES_COMPACTION_PRUNE_MIN_SAVINGS),
130
+ project?.pruneMinSavings,
131
+ global?.pruneMinSavings,
132
+ ];
133
+ const out = {};
134
+ for (const cand of enabledCandidates) {
135
+ if (cand === undefined)
136
+ continue;
137
+ out.enabled = cand;
138
+ break;
139
+ }
140
+ for (const cand of reserveCandidates) {
141
+ if (cand === undefined)
142
+ continue;
143
+ if (!Number.isFinite(cand) || !Number.isInteger(cand))
144
+ continue;
145
+ if (cand < 0 || cand > 1_000_000)
146
+ continue;
147
+ out.reserveTokens = cand;
148
+ break;
149
+ }
150
+ for (const cand of keepCandidates) {
151
+ if (cand === undefined)
152
+ continue;
153
+ if (!Number.isFinite(cand) || !Number.isInteger(cand))
154
+ continue;
155
+ if (cand < 0 || cand > 200)
156
+ continue;
157
+ out.keepRecentTurns = cand;
158
+ break;
159
+ }
160
+ for (const cand of savingsCandidates) {
161
+ if (cand === undefined)
162
+ continue;
163
+ if (!Number.isFinite(cand) || !Number.isInteger(cand))
164
+ continue;
165
+ if (cand < 0 || cand > 1_000_000)
166
+ continue;
167
+ out.pruneMinSavings = cand;
168
+ break;
169
+ }
170
+ // Allowlist: project wins over global wholesale (no field-level
171
+ // merge — a project that wants to add MCP tools should restate the
172
+ // full list rather than have global silently leak in).
173
+ const tools = project?.compactableTools ?? global?.compactableTools;
174
+ if (tools !== undefined) {
175
+ if (Array.isArray(tools) && tools.every((t) => typeof t === "string")) {
176
+ out.compactableTools = [...tools];
177
+ }
178
+ }
179
+ return Object.keys(out).length === 0 ? undefined : out;
100
180
  }
101
181
  /** Strict env-string → integer parser. Rejects `1e2`, `12.5`, empty/whitespace,
102
182
  * and anything with non-digit characters. Returns undefined on any non-match
@@ -111,6 +191,20 @@ function parseStrictInt(raw) {
111
191
  const n = Number(trimmed);
112
192
  return Number.isInteger(n) ? n : undefined;
113
193
  }
194
+ /** (3.5) Strict env-string → boolean. Accepts `0`/`1`/`true`/`false`/
195
+ * `yes`/`no` (case-insensitive); everything else returns undefined so
196
+ * the merge falls through. Mirrors `parseStrictInt`'s "be loud about
197
+ * unrecognized input" stance. */
198
+ function parseStrictBool(raw) {
199
+ if (raw === undefined)
200
+ return undefined;
201
+ const trimmed = raw.trim().toLowerCase();
202
+ if (trimmed === "1" || trimmed === "true" || trimmed === "yes")
203
+ return true;
204
+ if (trimmed === "0" || trimmed === "false" || trimmed === "no")
205
+ return false;
206
+ return undefined;
207
+ }
114
208
  function mergePlugins(global, project) {
115
209
  if (!global && !project)
116
210
  return undefined;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -45,6 +45,39 @@ export interface McpConfig {
45
45
  /** Marker alias — see McpConfig. The mcp package narrows this into its own
46
46
  * discriminated union when consuming. */
47
47
  export type McpServerConfigJson = Record<string, unknown>;
48
+ /**
49
+ * (3.5) Auto-compaction tuning. Defaults live in `@chances-ai/core`'s
50
+ * `Compactor` so the engine can be constructed without a `Compactor`
51
+ * (e.g. subagent engines bypass compaction entirely).
52
+ *
53
+ * Allowlist not denylist (codex Round-1 SHOULD-FIX #2): we name the
54
+ * tools whose outputs MAY be pruned. Everything else is shielded.
55
+ * A denylist would silently swallow new high-value tools the moment
56
+ * they're registered.
57
+ */
58
+ export interface CompactionConfig {
59
+ /** Master switch. Default true. */
60
+ enabled?: boolean;
61
+ /**
62
+ * Tokens reserved for LLM response + safety margin. Subtracted from
63
+ * the model's `contextWindow` to compute the threshold. Default:
64
+ * `max(16384, floor(contextWindow * 0.10))` — applied per-request
65
+ * by the compactor, so a config override here is a hard floor.
66
+ */
67
+ reserveTokens?: number;
68
+ /** How many turns survive a compaction. Default 5. */
69
+ keepRecentTurns?: number;
70
+ /** Stage 1 minimum savings gate. Skip pruning unless ≥ this. Default 20000. */
71
+ pruneMinSavings?: number;
72
+ /**
73
+ * Allowlist (codex Round-1 SHOULD-FIX #2): tool names eligible for
74
+ * pruning. Default: ["bash", "grep"]. Adding to this list accepts
75
+ * the responsibility for losing those tools' historical outputs.
76
+ * Not env-overridable (comma-parsing of tool names invites quoting
77
+ * bugs).
78
+ */
79
+ compactableTools?: string[];
80
+ }
48
81
  /** Agent-loop tuning. Optional; defaults live in `@chances-ai/core`'s engine. */
49
82
  export interface AgentConfig {
50
83
  /**
@@ -66,6 +99,8 @@ export interface AgentConfig {
66
99
  * Range: 1..16. Out-of-range values fall back to the registry default (4).
67
100
  */
68
101
  maxBackgroundTasks?: number;
102
+ /** (3.5) Auto-compaction. Opt-out via `enabled: false`. */
103
+ compaction?: CompactionConfig;
69
104
  }
70
105
  export interface ChancesConfig {
71
106
  /** Provider id, e.g. "mock", "anthropic", "openai". */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;yEACyE;AACzE,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC;AAE9E,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,YAAY,GACZ,OAAO,GACP,QAAQ,GACR,aAAa,GACb,aAAa,GACb,cAAc,GACd,cAAc,CAAC;AAEnB,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACnD,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC5C;AAED;;;sCAGsC;AACtC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC/C;AAED;yCACyC;AACzC,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D,iFAAiF;AACjF,MAAM,WAAW,WAAW;IAC1B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,gBAAgB,CAAC;IAC9B,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,kCAAkC;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,4EAA4E;IAC5E,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,eAAO,MAAM,aAAa,EAAE,gBAuB3B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;yEACyE;AACzE,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC;AAE9E,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,YAAY,GACZ,OAAO,GACP,QAAQ,GACR,aAAa,GACb,aAAa,GACb,cAAc,GACd,cAAc,CAAC;AAEnB,MAAM,WAAW,gBAAgB;IAC/B,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACnD,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;CAC5C;AAED;;;sCAGsC;AACtC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC/C;AAED;yCACyC;AACzC,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,iFAAiF;AACjF,MAAM,WAAW,WAAW;IAC1B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2DAA2D;IAC3D,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,gBAAgB,CAAC;IAC9B,sDAAsD;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,kCAAkC;IAClC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,4EAA4E;IAC5E,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,eAAO,MAAM,aAAa,EAAE,gBAuB3B,CAAC"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAkGA,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,QAAQ,EAAE;QACR,WAAW,EAAE,OAAO;QACpB,YAAY,EAAE,QAAQ;QACtB,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,OAAO;QACf,qEAAqE;QACrE,wEAAwE;QACxE,iEAAiE;QACjE,uEAAuE;QACvE,uEAAuE;QACvE,qEAAqE;QACrE,WAAW,EAAE,QAAQ;QACrB,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,OAAO;QACvB,yEAAyE;QACzE,sEAAsE;QACtE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,sCAAsC;QACtC,cAAc,EAAE,QAAQ;KACzB;CACF,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAsIA,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C,QAAQ,EAAE;QACR,WAAW,EAAE,OAAO;QACpB,YAAY,EAAE,QAAQ;QACtB,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,OAAO;QACf,qEAAqE;QACrE,wEAAwE;QACxE,iEAAiE;QACjE,uEAAuE;QACvE,uEAAuE;QACvE,qEAAqE;QACrE,WAAW,EAAE,QAAQ;QACrB,aAAa,EAAE,OAAO;QACtB,cAAc,EAAE,OAAO;QACvB,yEAAyE;QACzE,sEAAsE;QACtE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,sCAAsC;QACtC,cAAc,EAAE,QAAQ;KACzB;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chances-ai/config",
3
- "version": "3.4.0",
3
+ "version": "3.6.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -14,7 +14,7 @@
14
14
  "dist"
15
15
  ],
16
16
  "dependencies": {
17
- "@chances-ai/runtime": "3.4.0"
17
+ "@chances-ai/runtime": "3.6.0"
18
18
  },
19
19
  "scripts": {
20
20
  "build": "tsc -b",