chivgent 0.7.0 → 0.9.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 (64) hide show
  1. package/README.md +96 -3
  2. package/README.zh-CN.md +88 -3
  3. package/dist/agent.d.ts +14 -0
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +33 -1
  6. package/dist/agent.js.map +1 -1
  7. package/dist/auth/credentials.d.ts +26 -0
  8. package/dist/auth/credentials.d.ts.map +1 -0
  9. package/dist/auth/credentials.js +29 -0
  10. package/dist/auth/credentials.js.map +1 -0
  11. package/dist/auth/env-credentials.d.ts +10 -0
  12. package/dist/auth/env-credentials.d.ts.map +1 -0
  13. package/dist/auth/env-credentials.js +18 -0
  14. package/dist/auth/env-credentials.js.map +1 -0
  15. package/dist/auth/file-credentials.d.ts +25 -0
  16. package/dist/auth/file-credentials.d.ts.map +1 -0
  17. package/dist/auth/file-credentials.js +94 -0
  18. package/dist/auth/file-credentials.js.map +1 -0
  19. package/dist/auth/runtime-credentials.d.ts +10 -0
  20. package/dist/auth/runtime-credentials.d.ts.map +1 -0
  21. package/dist/auth/runtime-credentials.js +15 -0
  22. package/dist/auth/runtime-credentials.js.map +1 -0
  23. package/dist/cli-options.d.ts +16 -9
  24. package/dist/cli-options.d.ts.map +1 -1
  25. package/dist/cli-options.js +72 -26
  26. package/dist/cli-options.js.map +1 -1
  27. package/dist/cli.js +14 -42
  28. package/dist/cli.js.map +1 -1
  29. package/dist/context/compaction.d.ts +39 -0
  30. package/dist/context/compaction.d.ts.map +1 -0
  31. package/dist/context/compaction.js +141 -0
  32. package/dist/context/compaction.js.map +1 -0
  33. package/dist/context/context-manager.d.ts +72 -0
  34. package/dist/context/context-manager.d.ts.map +1 -0
  35. package/dist/context/context-manager.js +129 -0
  36. package/dist/context/context-manager.js.map +1 -0
  37. package/dist/context/token-estimator.d.ts +22 -0
  38. package/dist/context/token-estimator.d.ts.map +1 -0
  39. package/dist/context/token-estimator.js +43 -0
  40. package/dist/context/token-estimator.js.map +1 -0
  41. package/dist/providers/client.d.ts +7 -0
  42. package/dist/providers/client.d.ts.map +1 -0
  43. package/dist/providers/client.js +48 -0
  44. package/dist/providers/client.js.map +1 -0
  45. package/dist/providers/definitions.d.ts +25 -0
  46. package/dist/providers/definitions.d.ts.map +1 -0
  47. package/dist/providers/definitions.js +97 -0
  48. package/dist/providers/definitions.js.map +1 -0
  49. package/dist/providers/registry.d.ts +15 -0
  50. package/dist/providers/registry.d.ts.map +1 -0
  51. package/dist/providers/registry.js +34 -0
  52. package/dist/providers/registry.js.map +1 -0
  53. package/dist/workspace/read.d.ts +2 -0
  54. package/dist/workspace/read.d.ts.map +1 -1
  55. package/dist/workspace/read.js +5 -1
  56. package/dist/workspace/read.js.map +1 -1
  57. package/dist/workspace/text.d.ts +15 -0
  58. package/dist/workspace/text.d.ts.map +1 -1
  59. package/dist/workspace/text.js +21 -2
  60. package/dist/workspace/text.js.map +1 -1
  61. package/dist/workspace/write.d.ts.map +1 -1
  62. package/dist/workspace/write.js +38 -11
  63. package/dist/workspace/write.js.map +1 -1
  64. package/package.json +1 -1
@@ -0,0 +1,94 @@
1
+ import { readFile, stat } from "node:fs/promises";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ export class AuthFileError extends Error {
5
+ constructor(message, options) {
6
+ super(message, options);
7
+ this.name = "AuthFileError";
8
+ }
9
+ }
10
+ export function defaultAuthFile(environment = process.env) {
11
+ const configured = environment.CHIVGENT_HOME;
12
+ const home = configured !== undefined && configured.length > 0
13
+ ? configured
14
+ : path.join(os.homedir(), ".chivgent");
15
+ return path.join(home, "auth.json");
16
+ }
17
+ /**
18
+ * Reads API keys from `<chivgent home>/auth.json`.
19
+ *
20
+ * The file deliberately supports only literal keys. Neither `$VAR` expansion
21
+ * nor `!command` substitution is accepted: letting a config file spawn a
22
+ * process is a large attack surface for a small convenience.
23
+ */
24
+ export class FileCredentialSource {
25
+ filePath;
26
+ onWarning;
27
+ name = "auth file";
28
+ constructor(filePath = defaultAuthFile(), onWarning = () => undefined) {
29
+ this.filePath = filePath;
30
+ this.onWarning = onWarning;
31
+ }
32
+ async read(provider) {
33
+ let contents;
34
+ try {
35
+ await this.warnOnLoosePermissions();
36
+ contents = await readFile(this.filePath, "utf8");
37
+ }
38
+ catch (error) {
39
+ if (error.code === "ENOENT") {
40
+ return undefined;
41
+ }
42
+ throw new AuthFileError(`Could not read the auth file at ${this.filePath}.`, { cause: error });
43
+ }
44
+ const entry = this.parse(contents)[provider.id];
45
+ if (entry === undefined) {
46
+ return undefined;
47
+ }
48
+ return { apiKey: entry, origin: this.filePath };
49
+ }
50
+ parse(contents) {
51
+ let parsed;
52
+ try {
53
+ parsed = JSON.parse(contents);
54
+ }
55
+ catch (error) {
56
+ throw new AuthFileError(`The auth file at ${this.filePath} is not valid JSON.`, { cause: error });
57
+ }
58
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
59
+ throw new AuthFileError(`The auth file at ${this.filePath} must contain a JSON object keyed by Provider id.`);
60
+ }
61
+ const keys = {};
62
+ for (const [providerId, value] of Object.entries(parsed)) {
63
+ const apiKey = readApiKey(value);
64
+ if (apiKey === undefined) {
65
+ throw new AuthFileError(`The auth file entry for "${providerId}" must be a string or {"type":"api_key","key":"..."}.`);
66
+ }
67
+ keys[providerId] = apiKey;
68
+ }
69
+ return keys;
70
+ }
71
+ async warnOnLoosePermissions() {
72
+ if (process.platform === "win32") {
73
+ return;
74
+ }
75
+ const stats = await stat(this.filePath);
76
+ if ((stats.mode & 0o077) !== 0) {
77
+ this.onWarning(`The auth file at ${this.filePath} is readable by other users; run chmod 600 on it.`);
78
+ }
79
+ }
80
+ }
81
+ function readApiKey(value) {
82
+ if (typeof value === "string") {
83
+ return value;
84
+ }
85
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
86
+ return undefined;
87
+ }
88
+ const record = value;
89
+ if (record.type !== undefined && record.type !== "api_key") {
90
+ return undefined;
91
+ }
92
+ return typeof record.key === "string" ? record.key : undefined;
93
+ }
94
+ //# sourceMappingURL=file-credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-credentials.js","sourceRoot":"","sources":["../../src/auth/file-credentials.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ProviderDefinition } from "../providers/definitions.js";
2
+ import type { Credential, CredentialSource } from "./credentials.js";
3
+ /** A key supplied for this run only, typically through `--api-key`. */
4
+ export declare class RuntimeCredentialSource implements CredentialSource {
5
+ private readonly apiKey?;
6
+ readonly name = "runtime";
7
+ constructor(apiKey?: string | undefined);
8
+ read(_provider: ProviderDefinition): Promise<Credential | undefined>;
9
+ }
10
+ //# sourceMappingURL=runtime-credentials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-credentials.d.ts","sourceRoot":"","sources":["../../src/auth/runtime-credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAErE,uEAAuE;AACvE,qBAAa,uBAAwB,YAAW,gBAAgB;IAGlD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAFpC,QAAQ,CAAC,IAAI,aAAa;IAE1B,YAA6B,MAAM,CAAC,EAAE,MAAM,YAAA,EAAI;IAE1C,IAAI,CAAC,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAKzE;CACF"}
@@ -0,0 +1,15 @@
1
+ /** A key supplied for this run only, typically through `--api-key`. */
2
+ export class RuntimeCredentialSource {
3
+ apiKey;
4
+ name = "runtime";
5
+ constructor(apiKey) {
6
+ this.apiKey = apiKey;
7
+ }
8
+ async read(_provider) {
9
+ if (this.apiKey === undefined || this.apiKey.length === 0) {
10
+ return undefined;
11
+ }
12
+ return { apiKey: this.apiKey, origin: "--api-key" };
13
+ }
14
+ }
15
+ //# sourceMappingURL=runtime-credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-credentials.js","sourceRoot":"","sources":["../../src/auth/runtime-credentials.ts"],"names":[],"mappings":"AAGA,uEAAuE;AACvE,MAAM,OAAO,uBAAuB;IAGL,MAAM;IAF1B,IAAI,GAAG,SAAS,CAAC;IAE1B,YAA6B,MAAe;sBAAf,MAAM;IAAY,CAAC;IAEhD,KAAK,CAAC,IAAI,CAAC,SAA6B;QACtC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACtD,CAAC;CACF"}
@@ -1,5 +1,7 @@
1
1
  export declare const VERSION: string;
2
- export type Provider = "openai" | "deepseek" | "openai-compatible";
2
+ import { ProviderRegistry } from "./providers/registry.js";
3
+ /** A Provider id known to the registry. */
4
+ export type Provider = string;
3
5
  export declare const DEFAULT_MAX_TURNS = 8;
4
6
  /**
5
7
  * Editing costs turns that reading does not: the model reads, edits, then
@@ -7,12 +9,11 @@ export declare const DEFAULT_MAX_TURNS = 8;
7
9
  * raises the default unless --max-turns says otherwise.
8
10
  */
9
11
  export declare const DEFAULT_WRITE_MAX_TURNS = 16;
10
- export interface CliEnvironment {
11
- readonly OPENAI_MODEL?: string;
12
- readonly OPENAI_BASE_URL?: string;
13
- readonly DEEPSEEK_MODEL?: string;
14
- readonly CHIVGENT_HOME?: string;
15
- }
12
+ /**
13
+ * Provider-specific variables are declared by each Provider definition rather
14
+ * than listed here, so adding a Provider does not touch this module.
15
+ */
16
+ export type CliEnvironment = NodeJS.ProcessEnv;
16
17
  export interface CliOptions {
17
18
  readonly prompt?: string;
18
19
  readonly provider: Provider;
@@ -33,9 +34,15 @@ export interface CliOptions {
33
34
  readonly listSessions: boolean;
34
35
  /** Allow the agent to create and modify files in the workspace. */
35
36
  readonly allowWrites: boolean;
37
+ /** API key supplied for this run only, overriding every other source. */
38
+ readonly apiKey?: string;
39
+ /** Token budget the context is kept inside. */
40
+ readonly contextWindow: number;
41
+ /** Summarise old history when the context approaches the window. */
42
+ readonly compaction: boolean;
36
43
  readonly help: boolean;
37
44
  readonly version: boolean;
38
45
  }
39
- export declare function parseCliArgs(argv: readonly string[], environment: CliEnvironment): CliOptions;
40
- export declare function helpText(): string;
46
+ export declare function parseCliArgs(argv: readonly string[], environment: CliEnvironment, registry?: ProviderRegistry): CliOptions;
47
+ export declare function helpText(registry?: ProviderRegistry): string;
41
48
  //# sourceMappingURL=cli-options.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-options.d.ts","sourceRoot":"","sources":["../src/cli-options.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,QAC6D,CAAC;AAElF,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,mBAAmB,CAAC;AAEnE,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAQ1C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,uCAAuC;IACvC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,WAAW,EAAE,cAAc,GAC1B,UAAU,CAsFZ;AAED,wBAAgB,QAAQ,IAAI,MAAM,CA8BjC"}
1
+ {"version":3,"file":"cli-options.d.ts","sourceRoot":"","sources":["../src/cli-options.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,QAC6D,CAAC;AAElF,OAAO,EAEL,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAGjC,2CAA2C;AAC3C,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAI1C;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC;AAE/C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,uCAAuC;IACvC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,WAAW,EAAE,cAAc,EAC3B,QAAQ,GAAE,gBAA0C,GACnD,UAAU,CAqGZ;AAED,wBAAgB,QAAQ,CACtB,QAAQ,GAAE,gBAA0C,GACnD,MAAM,CAkCR"}
@@ -2,6 +2,8 @@ import { createRequire } from "node:module";
2
2
  const require = createRequire(import.meta.url);
3
3
  const packageMetadata = require("../package.json");
4
4
  export const VERSION = typeof packageMetadata.version === "string" ? packageMetadata.version : "0.0.0";
5
+ import { defaultProviderRegistry, ProviderRegistry, } from "./providers/registry.js";
6
+ import { DEFAULT_CONTEXT_WINDOW } from "./context/context-manager.js";
5
7
  export const DEFAULT_MAX_TURNS = 8;
6
8
  /**
7
9
  * Editing costs turns that reading does not: the model reads, edits, then
@@ -9,14 +11,14 @@ export const DEFAULT_MAX_TURNS = 8;
9
11
  * raises the default unless --max-turns says otherwise.
10
12
  */
11
13
  export const DEFAULT_WRITE_MAX_TURNS = 16;
14
+ const MIN_CONTEXT_WINDOW = 1_000;
12
15
  const MAX_MAX_TURNS = 100;
13
- const DEFAULT_MODELS = {
14
- openai: "gpt-5.6",
15
- deepseek: "deepseek-v4-flash",
16
- };
17
- export function parseCliArgs(argv, environment) {
16
+ export function parseCliArgs(argv, environment, registry = defaultProviderRegistry) {
18
17
  let provider = "openai";
19
18
  let requestedModel;
19
+ let apiKey;
20
+ let contextWindow = DEFAULT_CONTEXT_WINDOW;
21
+ let compaction = true;
20
22
  let maxTurns = DEFAULT_MAX_TURNS;
21
23
  let stream = true;
22
24
  let quiet = false;
@@ -40,13 +42,17 @@ export function parseCliArgs(argv, environment) {
40
42
  }
41
43
  else if (argument === "--provider") {
42
44
  const value = readOptionValue(argv, index, "--provider");
43
- provider = parseProvider(value);
45
+ provider = parseProvider(value, registry);
44
46
  index += 1;
45
47
  }
46
48
  else if (argument === "--model") {
47
49
  requestedModel = readOptionValue(argv, index, "--model");
48
50
  index += 1;
49
51
  }
52
+ else if (argument === "--api-key") {
53
+ apiKey = readOptionValue(argv, index, "--api-key");
54
+ index += 1;
55
+ }
50
56
  else if (argument === "--max-turns") {
51
57
  maxTurns = parseMaxTurns(readOptionValue(argv, index, "--max-turns"));
52
58
  maxTurnsExplicit = true;
@@ -77,6 +83,13 @@ export function parseCliArgs(argv, environment) {
77
83
  else if (argument === "--allow-writes") {
78
84
  allowWrites = true;
79
85
  }
86
+ else if (argument === "--context-window") {
87
+ contextWindow = parseContextWindow(readOptionValue(argv, index, "--context-window"));
88
+ index += 1;
89
+ }
90
+ else if (argument === "--no-compaction") {
91
+ compaction = false;
92
+ }
80
93
  else if (argument?.startsWith("-")) {
81
94
  throw new TypeError(`Unknown option: ${argument}`);
82
95
  }
@@ -84,18 +97,17 @@ export function parseCliArgs(argv, environment) {
84
97
  promptParts.push(argument);
85
98
  }
86
99
  }
87
- const environmentModel = provider === "deepseek"
88
- ? environment.DEEPSEEK_MODEL
89
- : environment.OPENAI_MODEL;
90
- const defaultModel = provider === "openai-compatible" ? undefined : DEFAULT_MODELS[provider];
91
- const model = requestedModel || environmentModel || defaultModel;
100
+ const definition = registry.get(provider);
101
+ const model = requestedModel ||
102
+ firstEnvironmentValue(environment, definition.modelEnvKeys) ||
103
+ definition.defaultModel;
104
+ const baseURL = firstEnvironmentValue(environment, definition.baseUrlEnvKeys) ||
105
+ definition.defaultBaseURL;
92
106
  return {
93
107
  ...(promptParts.length === 0 ? {} : { prompt: promptParts.join(" ") }),
94
108
  provider,
95
109
  ...(model === undefined ? {} : { model }),
96
- ...(provider === "openai-compatible" && environment.OPENAI_BASE_URL
97
- ? { baseURL: environment.OPENAI_BASE_URL }
98
- : {}),
110
+ ...(baseURL === undefined ? {} : { baseURL }),
99
111
  maxTurns: allowWrites && !maxTurnsExplicit ? DEFAULT_WRITE_MAX_TURNS : maxTurns,
100
112
  stream,
101
113
  quiet,
@@ -105,11 +117,14 @@ export function parseCliArgs(argv, environment) {
105
117
  continueSession,
106
118
  listSessions,
107
119
  allowWrites,
120
+ ...(apiKey === undefined ? {} : { apiKey }),
121
+ contextWindow,
122
+ compaction,
108
123
  help,
109
124
  version,
110
125
  };
111
126
  }
112
- export function helpText() {
127
+ export function helpText(registry = defaultProviderRegistry) {
113
128
  return `chivgent ${VERSION}
114
129
 
115
130
  Usage:
@@ -117,8 +132,9 @@ Usage:
117
132
  chivgent [options] Start an interactive session
118
133
 
119
134
  Options:
120
- --provider NAME openai, deepseek, or openai-compatible (default: openai)
135
+ --provider NAME ${registry.ids().join(", ")} (default: openai)
121
136
  --model MODEL Provider model override
137
+ --api-key KEY API key for this run; prefer an environment variable
122
138
  --max-turns N Tool-calling turn limit (default: ${DEFAULT_MAX_TURNS}, ${DEFAULT_WRITE_MAX_TURNS} with --allow-writes)
123
139
  --no-stream Wait for the full answer instead of streaming tokens
124
140
  -q, --quiet Hide tool activity on stderr
@@ -127,19 +143,35 @@ Options:
127
143
  --resume ID Resume a specific session
128
144
  --sessions List recorded sessions and exit
129
145
  --allow-writes Let the agent create and change files (default: read-only)
146
+ --context-window N Token budget for the context (default: ${DEFAULT_CONTEXT_WINDOW})
147
+ --no-compaction Send the whole transcript instead of summarising old turns
130
148
  --no-session Do not record this run
131
149
  -h, --help Show help
132
150
  -v, --version Show version
133
151
 
152
+ API keys are resolved in this order, first match wins:
153
+ --api-key -> environment variable -> <CHIVGENT_HOME>/auth.json
154
+
155
+ Providers:
156
+ ${describeProviders(registry)}
134
157
  Environment:
135
- OPENAI_API_KEY Required for openai and openai-compatible
136
- OPENAI_MODEL OpenAI model (default: ${DEFAULT_MODELS.openai}); required for compatible
137
158
  OPENAI_BASE_URL Required when --provider openai-compatible
138
- DEEPSEEK_API_KEY Required when --provider deepseek
139
- DEEPSEEK_MODEL Optional DeepSeek model (default: ${DEFAULT_MODELS.deepseek})
140
- CHIVGENT_HOME Session directory (default: ~/.chivgent)
159
+ CHIVGENT_HOME Session and auth directory (default: ~/.chivgent)
141
160
  `;
142
161
  }
162
+ function describeProviders(registry) {
163
+ const ids = registry.ids();
164
+ const width = Math.max(...ids.map((id) => id.length)) + 2;
165
+ return ids
166
+ .map((id) => {
167
+ const definition = registry.get(id);
168
+ const model = definition.defaultModel === undefined
169
+ ? "model required"
170
+ : `default ${definition.defaultModel}`;
171
+ return ` ${id.padEnd(width)}${definition.envKeys.join(", ")} (${model})`;
172
+ })
173
+ .join("\n");
174
+ }
143
175
  function readOptionValue(argv, index, option) {
144
176
  const value = argv[index + 1];
145
177
  if (value === undefined || value.startsWith("-")) {
@@ -147,6 +179,13 @@ function readOptionValue(argv, index, option) {
147
179
  }
148
180
  return value;
149
181
  }
182
+ function parseContextWindow(value) {
183
+ const parsed = Number(value);
184
+ if (!Number.isSafeInteger(parsed) || parsed < MIN_CONTEXT_WINDOW) {
185
+ throw new TypeError(`--context-window must be an integer of at least ${MIN_CONTEXT_WINDOW}.`);
186
+ }
187
+ return parsed;
188
+ }
150
189
  function parseMaxTurns(value) {
151
190
  const parsed = Number(value);
152
191
  if (!Number.isSafeInteger(parsed) || parsed < 1 || parsed > MAX_MAX_TURNS) {
@@ -154,12 +193,19 @@ function parseMaxTurns(value) {
154
193
  }
155
194
  return parsed;
156
195
  }
157
- function parseProvider(value) {
158
- if (value !== "openai" &&
159
- value !== "deepseek" &&
160
- value !== "openai-compatible") {
161
- throw new TypeError(`Unsupported provider: ${value}. Expected openai, deepseek, or openai-compatible.`);
196
+ function parseProvider(value, registry) {
197
+ if (!registry.has(value)) {
198
+ throw new TypeError(`Unsupported provider: ${value}. Expected one of ${registry.ids().join(", ")}.`);
162
199
  }
163
200
  return value;
164
201
  }
202
+ function firstEnvironmentValue(environment, keys) {
203
+ for (const key of keys) {
204
+ const value = environment[key];
205
+ if (value !== undefined && value.length > 0) {
206
+ return value;
207
+ }
208
+ }
209
+ return undefined;
210
+ }
165
211
  //# sourceMappingURL=cli-options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-options.js","sourceRoot":"","sources":["../src/cli-options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-options.js","sourceRoot":"","sources":["../src/cli-options.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -1,12 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import process from "node:process";
3
3
  import { helpText, parseCliArgs, VERSION, } from "./cli-options.js";
4
- import { DeepSeekChatClient } from "./providers/deepseek.js";
5
- import { OpenAICompatibleChatClient } from "./providers/openai-compatible-chat.js";
6
- import { OpenAIClient } from "./providers/openai.js";
7
4
  import { createEventRenderer, createJsonEventWriter } from "./render.js";
8
5
  import { runRepl } from "./repl.js";
9
- import { RetryingLLMClient } from "./retry.js";
10
6
  import { AgentSession } from "./session.js";
11
7
  import { defaultSessionHome, FileSessionStore, } from "./session-store.js";
12
8
  import { ListFilesTool } from "./tools/list-files.js";
@@ -15,6 +11,9 @@ import { SearchTextTool } from "./tools/search-text.js";
15
11
  import { WriteFileTool } from "./tools/write-file.js";
16
12
  import { EditFileTool } from "./tools/edit-file.js";
17
13
  import { LocalWorkspace } from "./workspace.js";
14
+ import { createConfiguredClient } from "./providers/client.js";
15
+ import { ContextManager } from "./context/context-manager.js";
16
+ import { Compactor } from "./context/compaction.js";
18
17
  const SYSTEM_PROMPT = `You are a coding assistant working inside a local project.
19
18
  When the project structure or file path is unknown, use list_files first.
20
19
  Use search_text to locate relevant definitions or references, then use read_file to verify the surrounding code.
@@ -69,7 +68,7 @@ async function main(argv) {
69
68
  process.stderr.write("Missing prompt. Run chivgent --help for usage.\n");
70
69
  return 1;
71
70
  }
72
- const llm = createConfiguredClient(options);
71
+ const llm = await createConfiguredClient(options);
73
72
  if (typeof llm === "string") {
74
73
  process.stderr.write(`${llm}\n`);
75
74
  return 1;
@@ -84,6 +83,15 @@ async function main(argv) {
84
83
  new SearchTextTool(),
85
84
  new ReadFileTool(),
86
85
  ];
86
+ const contextManager = new ContextManager({
87
+ contextWindow: options.contextWindow,
88
+ ...(options.compaction ? { compactor: new Compactor(llm) } : {}),
89
+ onCompaction: ({ droppedMessages, tokensBefore, tokensAfter }) => {
90
+ if (!options.quiet) {
91
+ process.stderr.write(`Compacted ${droppedMessages} earlier messages (~${tokensBefore} -> ~${tokensAfter} tokens).\n`);
92
+ }
93
+ },
94
+ });
87
95
  const agentOptions = {
88
96
  systemPrompt: options.allowWrites
89
97
  ? `${SYSTEM_PROMPT}\n${WRITE_SYSTEM_PROMPT}`
@@ -95,6 +103,7 @@ async function main(argv) {
95
103
  : readOnlyTools,
96
104
  workspace: new LocalWorkspace(cwd, { allowWrites: options.allowWrites }),
97
105
  streaming: options.stream,
106
+ contextManager,
98
107
  };
99
108
  const session = new AgentSession({
100
109
  agent: agentOptions,
@@ -201,43 +210,6 @@ async function readPipedPrompt() {
201
210
  }
202
211
  return contents.trim().length === 0 ? undefined : contents.trim();
203
212
  }
204
- /** Returns the configured client, or the message explaining what is missing. */
205
- function createConfiguredClient(options) {
206
- if (options.model === undefined) {
207
- return "OPENAI_MODEL or --model is required for openai-compatible.";
208
- }
209
- if (options.provider === "openai-compatible" && options.baseURL === undefined) {
210
- return "OPENAI_BASE_URL is required for openai-compatible.";
211
- }
212
- const apiKeyName = options.provider === "deepseek" ? "DEEPSEEK_API_KEY" : "OPENAI_API_KEY";
213
- const apiKey = process.env[apiKeyName];
214
- if (apiKey === undefined || apiKey.length === 0) {
215
- return `${apiKeyName} is not set.`;
216
- }
217
- return new RetryingLLMClient(createClient(options.provider, apiKey, options.model, options.baseURL), {
218
- onRetry: ({ attempt, delayMs, reason }) => {
219
- process.stderr.write(`Provider call failed (${reason}); retry ${attempt} in ${delayMs}ms.\n`);
220
- },
221
- });
222
- }
223
- function createClient(provider, apiKey, model, baseURL) {
224
- switch (provider) {
225
- case "openai":
226
- return new OpenAIClient({ apiKey, model });
227
- case "deepseek":
228
- return new DeepSeekChatClient({ apiKey, model });
229
- case "openai-compatible":
230
- if (baseURL === undefined) {
231
- throw new TypeError("OpenAI-compatible Provider requires a base URL.");
232
- }
233
- return new OpenAICompatibleChatClient({
234
- apiKey,
235
- baseURL,
236
- model,
237
- continuationTag: "openai-compatible-chat",
238
- });
239
- }
240
- }
241
213
  main(process.argv.slice(2))
242
214
  .then((exitCode) => {
243
215
  process.exitCode = exitCode;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { LLMClient } from "../llm.js";
2
+ import type { Message } from "../messages.js";
3
+ export interface CompactionState {
4
+ readonly summary: string;
5
+ /** Files the agent read, derived from tool calls rather than from prose. */
6
+ readonly readFiles: readonly string[];
7
+ /** Files the agent changed, derived from tool calls rather than from prose. */
8
+ readonly modifiedFiles: readonly string[];
9
+ readonly decisions: readonly string[];
10
+ readonly pendingTasks: readonly string[];
11
+ }
12
+ /**
13
+ * Which tool names touch which files.
14
+ *
15
+ * File lists are derived from the tool calls themselves instead of being
16
+ * summarised by the model. A summary can forget or invent a path; the calls
17
+ * cannot. For a coding agent this is the part of the history that most needs
18
+ * to survive compaction intact.
19
+ */
20
+ export interface FileEffectMap {
21
+ readonly reads: readonly string[];
22
+ readonly mutates: readonly string[];
23
+ }
24
+ export declare const DEFAULT_FILE_EFFECTS: FileEffectMap;
25
+ export interface CompactorOptions {
26
+ readonly fileEffects?: FileEffectMap;
27
+ }
28
+ export declare class Compactor {
29
+ private readonly llm;
30
+ private readonly fileEffects;
31
+ constructor(llm: LLMClient, options?: CompactorOptions);
32
+ compact(messages: readonly Message[], signal?: AbortSignal): Promise<CompactionState>;
33
+ private summarise;
34
+ }
35
+ /** Falls back to the raw text when the model does not return usable JSON. */
36
+ export declare function parseSummary(content: string): Pick<CompactionState, "summary" | "decisions" | "pendingTasks">;
37
+ /** Renders compaction state as the single message that replaces the history. */
38
+ export declare function renderCompactionState(state: CompactionState): string;
39
+ //# sourceMappingURL=compaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/context/compaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAY,MAAM,gBAAgB,CAAC;AAExD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,+EAA+E;IAC/E,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,eAAO,MAAM,oBAAoB,EAAE,aAGlC,CAAC;AAUF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;CACtC;AAED,qBAAa,SAAS;IAIlB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAE5C,YACmB,GAAG,EAAE,SAAS,EAC/B,OAAO,GAAE,gBAAqB,EAG/B;IAEK,OAAO,CACX,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,eAAe,CAAC,CAI1B;YAEa,SAAS;CAYxB;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,GACd,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC,CAiCjE;AAsED,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAiBpE"}