chivgent 1.0.1 → 1.1.1

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 (160) hide show
  1. package/README.md +115 -131
  2. package/README.zh-CN.md +103 -817
  3. package/dist/agent.d.ts +16 -1
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +95 -43
  6. package/dist/agent.js.map +1 -1
  7. package/dist/auth/oauth.d.ts +51 -0
  8. package/dist/auth/oauth.d.ts.map +1 -0
  9. package/dist/auth/oauth.js +444 -0
  10. package/dist/auth/oauth.js.map +1 -0
  11. package/dist/cli-options.d.ts +11 -6
  12. package/dist/cli-options.d.ts.map +1 -1
  13. package/dist/cli-options.js +46 -4
  14. package/dist/cli-options.js.map +1 -1
  15. package/dist/cli-runtime.d.ts +9 -0
  16. package/dist/cli-runtime.d.ts.map +1 -1
  17. package/dist/cli-runtime.js +32 -6
  18. package/dist/cli-runtime.js.map +1 -1
  19. package/dist/cli.d.ts +1 -1
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +129 -34
  22. package/dist/cli.js.map +1 -1
  23. package/dist/context/context-manager.d.ts +21 -0
  24. package/dist/context/context-manager.d.ts.map +1 -1
  25. package/dist/context/context-manager.js +199 -35
  26. package/dist/context/context-manager.js.map +1 -1
  27. package/dist/evals/tools.d.ts.map +1 -1
  28. package/dist/evals/tools.js +4 -2
  29. package/dist/evals/tools.js.map +1 -1
  30. package/dist/events.d.ts +5 -0
  31. package/dist/events.d.ts.map +1 -1
  32. package/dist/events.js.map +1 -1
  33. package/dist/permissions.d.ts +45 -0
  34. package/dist/permissions.d.ts.map +1 -0
  35. package/dist/permissions.js +97 -0
  36. package/dist/permissions.js.map +1 -0
  37. package/dist/prompts.d.ts +1 -1
  38. package/dist/prompts.d.ts.map +1 -1
  39. package/dist/prompts.js +1 -0
  40. package/dist/prompts.js.map +1 -1
  41. package/dist/providers/client.d.ts +1 -1
  42. package/dist/providers/client.d.ts.map +1 -1
  43. package/dist/providers/client.js +19 -1
  44. package/dist/providers/client.js.map +1 -1
  45. package/dist/providers/definitions.d.ts +2 -0
  46. package/dist/providers/definitions.d.ts.map +1 -1
  47. package/dist/providers/definitions.js +3 -1
  48. package/dist/providers/definitions.js.map +1 -1
  49. package/dist/providers/interactive.d.ts +4 -0
  50. package/dist/providers/interactive.d.ts.map +1 -1
  51. package/dist/providers/interactive.js +86 -2
  52. package/dist/providers/interactive.js.map +1 -1
  53. package/dist/providers/oauth-client.d.ts +14 -0
  54. package/dist/providers/oauth-client.d.ts.map +1 -0
  55. package/dist/providers/oauth-client.js +52 -0
  56. package/dist/providers/oauth-client.js.map +1 -0
  57. package/dist/providers/openai-compatible-chat.d.ts +1 -0
  58. package/dist/providers/openai-compatible-chat.d.ts.map +1 -1
  59. package/dist/providers/openai-compatible-chat.js +1 -0
  60. package/dist/providers/openai-compatible-chat.js.map +1 -1
  61. package/dist/providers/openai.d.ts +3 -0
  62. package/dist/providers/openai.d.ts.map +1 -1
  63. package/dist/providers/openai.js +72 -10
  64. package/dist/providers/openai.js.map +1 -1
  65. package/dist/remote/repl.d.ts.map +1 -1
  66. package/dist/remote/repl.js +9 -0
  67. package/dist/remote/repl.js.map +1 -1
  68. package/dist/repl.d.ts +43 -1
  69. package/dist/repl.d.ts.map +1 -1
  70. package/dist/repl.js +303 -21
  71. package/dist/repl.js.map +1 -1
  72. package/dist/runtime/desktop-runtime.d.ts +23 -0
  73. package/dist/runtime/desktop-runtime.d.ts.map +1 -0
  74. package/dist/runtime/desktop-runtime.js +63 -0
  75. package/dist/runtime/desktop-runtime.js.map +1 -0
  76. package/dist/session-store.d.ts +22 -1
  77. package/dist/session-store.d.ts.map +1 -1
  78. package/dist/session-store.js +80 -1
  79. package/dist/session-store.js.map +1 -1
  80. package/dist/session.d.ts +21 -0
  81. package/dist/session.d.ts.map +1 -1
  82. package/dist/session.js +110 -4
  83. package/dist/session.js.map +1 -1
  84. package/dist/shell/approval.d.ts +2 -2
  85. package/dist/shell/approval.d.ts.map +1 -1
  86. package/dist/shell/approval.js +2 -2
  87. package/dist/shell/approval.js.map +1 -1
  88. package/dist/shell/docker.d.ts +2 -0
  89. package/dist/shell/docker.d.ts.map +1 -1
  90. package/dist/shell/docker.js +17 -3
  91. package/dist/shell/docker.js.map +1 -1
  92. package/dist/shell/factory.d.ts +9 -0
  93. package/dist/shell/factory.d.ts.map +1 -0
  94. package/dist/shell/factory.js +13 -0
  95. package/dist/shell/factory.js.map +1 -0
  96. package/dist/shell/local.d.ts +4 -0
  97. package/dist/shell/local.d.ts.map +1 -1
  98. package/dist/shell/local.js +16 -1
  99. package/dist/shell/local.js.map +1 -1
  100. package/dist/shell/native.d.ts +15 -0
  101. package/dist/shell/native.d.ts.map +1 -0
  102. package/dist/shell/native.js +99 -0
  103. package/dist/shell/native.js.map +1 -0
  104. package/dist/shell/types.d.ts +1 -0
  105. package/dist/shell/types.d.ts.map +1 -1
  106. package/dist/tools/bash.d.ts +19 -0
  107. package/dist/tools/bash.d.ts.map +1 -1
  108. package/dist/tools/bash.js +30 -11
  109. package/dist/tools/bash.js.map +1 -1
  110. package/dist/tools/edit-file.d.ts.map +1 -1
  111. package/dist/tools/edit-file.js +1 -1
  112. package/dist/tools/edit-file.js.map +1 -1
  113. package/dist/tools/parallel.d.ts +2 -0
  114. package/dist/tools/parallel.d.ts.map +1 -1
  115. package/dist/tools/parallel.js +8 -0
  116. package/dist/tools/parallel.js.map +1 -1
  117. package/dist/tools/write-file.d.ts.map +1 -1
  118. package/dist/tools/write-file.js +1 -1
  119. package/dist/tools/write-file.js.map +1 -1
  120. package/dist/transcript-hash.d.ts +4 -0
  121. package/dist/transcript-hash.d.ts.map +1 -0
  122. package/dist/transcript-hash.js +6 -0
  123. package/dist/transcript-hash.js.map +1 -0
  124. package/dist/tui/activity.d.ts +1 -1
  125. package/dist/tui/activity.d.ts.map +1 -1
  126. package/dist/tui/activity.js +2 -2
  127. package/dist/tui/activity.js.map +1 -1
  128. package/dist/tui/editor-input.d.ts +8 -0
  129. package/dist/tui/editor-input.d.ts.map +1 -1
  130. package/dist/tui/editor-input.js +122 -18
  131. package/dist/tui/editor-input.js.map +1 -1
  132. package/dist/tui/editor.d.ts +11 -1
  133. package/dist/tui/editor.d.ts.map +1 -1
  134. package/dist/tui/editor.js +77 -29
  135. package/dist/tui/editor.js.map +1 -1
  136. package/dist/tui/live.d.ts +2 -0
  137. package/dist/tui/live.d.ts.map +1 -1
  138. package/dist/tui/live.js +5 -0
  139. package/dist/tui/live.js.map +1 -1
  140. package/dist/tui/selection.d.ts +24 -0
  141. package/dist/tui/selection.d.ts.map +1 -0
  142. package/dist/tui/selection.js +19 -0
  143. package/dist/tui/selection.js.map +1 -0
  144. package/dist/tui/slash.js +1 -1
  145. package/dist/tui/slash.js.map +1 -1
  146. package/dist/tui/welcome.d.ts +2 -2
  147. package/dist/tui/welcome.d.ts.map +1 -1
  148. package/dist/tui/welcome.js +14 -23
  149. package/dist/tui/welcome.js.map +1 -1
  150. package/dist/workspace/paths.d.ts.map +1 -1
  151. package/dist/workspace/paths.js +4 -0
  152. package/dist/workspace/paths.js.map +1 -1
  153. package/dist/workspace/types.d.ts +2 -2
  154. package/dist/workspace/types.d.ts.map +1 -1
  155. package/dist/workspace/types.js.map +1 -1
  156. package/dist/workspace.d.ts +2 -2
  157. package/dist/workspace.d.ts.map +1 -1
  158. package/dist/workspace.js +2 -2
  159. package/dist/workspace.js.map +1 -1
  160. package/package.json +6 -2
@@ -4,6 +4,7 @@ const packageMetadata = require("../package.json");
4
4
  export const VERSION = typeof packageMetadata.version === "string" ? packageMetadata.version : "0.0.0";
5
5
  import { defaultProviderRegistry, ProviderRegistry, } from "./providers/registry.js";
6
6
  import { DEFAULT_CONTEXT_WINDOW } from "./context/context-manager.js";
7
+ import { parsePermissionMode } from "./permissions.js";
7
8
  export const DEFAULT_MAX_TURNS = 8;
8
9
  /**
9
10
  * Editing costs turns that reading does not: the model reads, edits, then
@@ -30,7 +31,11 @@ export function parseCliArgs(argv, environment, registry = defaultProviderRegist
30
31
  let allowWrites = false;
31
32
  let allowShell = false;
32
33
  let approveAllShell = false;
34
+ let shellBackend = "auto";
35
+ let shellNetwork = false;
36
+ let permissionMode;
33
37
  let tui = false;
38
+ let simple = false;
34
39
  let extensions = true;
35
40
  let serve = false;
36
41
  let connect;
@@ -79,6 +84,9 @@ export function parseCliArgs(argv, environment, registry = defaultProviderRegist
79
84
  else if (argument === "--tui") {
80
85
  tui = true;
81
86
  }
87
+ else if (argument === "--simple") {
88
+ simple = true;
89
+ }
82
90
  else if (argument === "--quiet" || argument === "-q") {
83
91
  quiet = true;
84
92
  }
@@ -107,6 +115,20 @@ export function parseCliArgs(argv, environment, registry = defaultProviderRegist
107
115
  else if (argument === "--approve-all-shell") {
108
116
  approveAllShell = true;
109
117
  }
118
+ else if (argument === "--shell-backend") {
119
+ const value = readOptionValue(argv, index, "--shell-backend");
120
+ if (value !== "auto" && value !== "native" && value !== "docker")
121
+ throw new TypeError("--shell-backend must be auto, native, or docker.");
122
+ shellBackend = value;
123
+ index += 1;
124
+ }
125
+ else if (argument === "--shell-network") {
126
+ shellNetwork = true;
127
+ }
128
+ else if (argument === "--permission-mode") {
129
+ permissionMode = parsePermissionMode(readOptionValue(argv, index, "--permission-mode"));
130
+ index += 1;
131
+ }
110
132
  else if (argument === "--serve") {
111
133
  serve = true;
112
134
  }
@@ -147,6 +169,18 @@ export function parseCliArgs(argv, environment, registry = defaultProviderRegist
147
169
  if (approveAllShell && !allowShell) {
148
170
  throw new TypeError("--approve-all-shell requires --allow-shell.");
149
171
  }
172
+ if (tui && simple) {
173
+ throw new TypeError("--tui and --simple cannot be used together.");
174
+ }
175
+ if (permissionMode !== undefined && (allowWrites || allowShell || approveAllShell || shellNetwork)) {
176
+ throw new TypeError("--permission-mode cannot be combined with --allow-writes, --allow-shell, --approve-all-shell, or --shell-network; select the complete policy mode instead.");
177
+ }
178
+ if (permissionMode !== undefined && connect !== undefined) {
179
+ throw new TypeError("--permission-mode applies to local sessions and cannot be used with --connect.");
180
+ }
181
+ if (permissionMode !== undefined && serve) {
182
+ throw new TypeError("--permission-mode cannot be used with --serve because served sessions do not have an interactive approval channel.");
183
+ }
150
184
  const definition = registry.get(provider);
151
185
  const model = requestedModel ||
152
186
  firstEnvironmentValue(environment, definition.modelEnvKeys) ||
@@ -158,7 +192,7 @@ export function parseCliArgs(argv, environment, registry = defaultProviderRegist
158
192
  provider,
159
193
  ...(model === undefined ? {} : { model }),
160
194
  ...(baseURL === undefined ? {} : { baseURL }),
161
- maxTurns: (allowWrites || allowShell) && !maxTurnsExplicit
195
+ maxTurns: (allowWrites || allowShell || permissionMode !== undefined) && !maxTurnsExplicit
162
196
  ? DEFAULT_WRITE_MAX_TURNS
163
197
  : maxTurns,
164
198
  stream,
@@ -171,7 +205,11 @@ export function parseCliArgs(argv, environment, registry = defaultProviderRegist
171
205
  allowWrites,
172
206
  allowShell,
173
207
  approveAllShell,
208
+ shellBackend,
209
+ shellNetwork,
210
+ ...(permissionMode === undefined ? {} : { permissionMode }),
174
211
  tui,
212
+ simple,
175
213
  extensions,
176
214
  serve,
177
215
  ...(connect === undefined ? {} : { connect }),
@@ -199,16 +237,20 @@ Options:
199
237
  --api-key KEY API key for this run; prefer an environment variable
200
238
  --max-turns N Tool-calling turn limit (default: ${DEFAULT_MAX_TURNS}, ${DEFAULT_WRITE_MAX_TURNS} with --allow-writes or --allow-shell)
201
239
  --no-stream Wait for the full answer instead of streaming tokens
202
- --tui Live status region above the prompt (interactive TTY only)
240
+ --tui Explicitly request the rich interface (default in local TTY sessions)
241
+ --simple Use the simple append-only interface
203
242
  -q, --quiet Hide tool activity on stderr
204
243
  --json Write the run as JSON lines instead of rendered text
205
244
  -c, --continue Resume the most recent session for this workspace
206
245
  --resume ID Resume a specific session
207
246
  --sessions List recorded sessions and exit
208
247
  --allow-writes Let the agent create and change files (default: read-only)
209
- --allow-shell Expose bash inside an offline Docker container (Docker required).
248
+ --allow-shell Expose bash inside a native macOS sandbox or Docker (network denied).
210
249
  Interactive commands require individual confirmation.
211
- --approve-all-shell Explicitly approve all Docker shell commands this session;
250
+ --shell-backend MODE auto, native, or docker (default: auto; macOS uses native).
251
+ --shell-network Allow shell network access (explicit opt-in for either backend).
252
+ --permission-mode MODE ask-first, workspace, or unrestricted (network enabled).
253
+ --approve-all-shell Explicitly approve all shell commands this session;
212
254
  use only with --allow-shell when individual prompts are unavailable.
213
255
  --serve Expose this session on a local socket and keep running
214
256
  --connect TARGET Attach to a served session, by id or socket path
@@ -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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"}
@@ -2,8 +2,11 @@ import type { CliOptions } from "./cli-options.js";
2
2
  import type { ExtensionRegistry } from "./extensions/registry.js";
3
3
  import type { LLMClient } from "./llm.js";
4
4
  import type { Message } from "./messages.js";
5
+ import type { AppliedCompaction } from "./context/context-manager.js";
6
+ import type { UsageTotal } from "./providers/usage.js";
5
7
  import { AgentSession } from "./session.js";
6
8
  import { ShellApprovalGate } from "./shell/approval.js";
9
+ import { type PermissionPolicy } from "./permissions.js";
7
10
  import type { SessionStore } from "./session-store.js";
8
11
  interface LocalSessionConfig {
9
12
  readonly options: CliOptions;
@@ -13,10 +16,16 @@ interface LocalSessionConfig {
13
16
  readonly restored: {
14
17
  readonly id?: string;
15
18
  readonly messages?: readonly Message[];
19
+ readonly compaction?: AppliedCompaction;
20
+ readonly promptCount?: number;
21
+ readonly usage?: UsageTotal;
22
+ readonly title?: string;
23
+ readonly planMode?: boolean;
16
24
  readonly resumed: boolean;
17
25
  };
18
26
  readonly store?: SessionStore;
19
27
  readonly shellApproval?: ShellApprovalGate;
28
+ readonly permissionPolicy?: PermissionPolicy;
20
29
  }
21
30
  /** Assemble the local agent once; cli.ts handles only process and UI lifecycle. */
22
31
  export declare function createLocalSession(config: LocalSessionConfig): AgentSession;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-runtime.d.ts","sourceRoot":"","sources":["../src/cli-runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAWvD,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;QACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;CAC5C;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAgD3E"}
1
+ {"version":3,"file":"cli-runtime.d.ts","sourceRoot":"","sources":["../src/cli-runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAInD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAWvD,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;QACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;QACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAC3C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CAC9C;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAwE3E"}
@@ -4,6 +4,8 @@ import { ScopedProjectInstructions } from "./context/project-instructions.js";
4
4
  import { SHELL_SYSTEM_PROMPT, SYSTEM_PROMPT, WRITE_SYSTEM_PROMPT } from "./prompts.js";
5
5
  import { AgentSession } from "./session.js";
6
6
  import { ShellApprovalGate } from "./shell/approval.js";
7
+ import { PermissionWorkspace } from "./permissions.js";
8
+ import { createShellOperations } from "./shell/factory.js";
7
9
  import { BashTool } from "./tools/bash.js";
8
10
  import { ApplyPatchTool } from "./tools/apply-patch.js";
9
11
  import { EditFileTool } from "./tools/edit-file.js";
@@ -17,10 +19,15 @@ import { LocalWorkspace } from "./workspace.js";
17
19
  export function createLocalSession(config) {
18
20
  const { options, cwd, llm, extensions, restored, store } = config;
19
21
  const prompt = [SYSTEM_PROMPT];
20
- if (options.allowWrites)
22
+ const modernPolicy = config.permissionPolicy !== undefined;
23
+ const allowWrites = modernPolicy || options.allowWrites;
24
+ const allowShell = modernPolicy || options.allowShell;
25
+ if (allowWrites)
21
26
  prompt.push(WRITE_SYSTEM_PROMPT);
22
- if (options.allowShell)
27
+ if (allowShell)
23
28
  prompt.push(SHELL_SYSTEM_PROMPT);
29
+ if (modernPolicy)
30
+ prompt.push(`A process-local permission policy governs file changes, shell commands, and extension tools; its mode can change during the conversation and is not restored from a saved session. For files or network outside the workspace, request bash with scope "host" and explain why in justification; this asks for one-command broad host access. Never retry denied actions using another tool.`);
24
31
  prompt.push(...(extensions?.systemPromptContributions ?? []));
25
32
  const contextManager = new ContextManager({
26
33
  contextWindow: options.contextWindow,
@@ -40,14 +47,28 @@ export function createLocalSession(config) {
40
47
  new SearchTextTool(),
41
48
  new ReadFileTool(),
42
49
  new UpdatePlanTool(),
43
- ...(options.allowWrites ? [new WriteFileTool(), new EditFileTool(), new ApplyPatchTool()] : []),
44
- ...(options.allowShell ? [new BashTool({
50
+ ...(allowWrites ? [new WriteFileTool(), new EditFileTool(), new ApplyPatchTool()] : []),
51
+ ...(allowShell ? [new BashTool({
45
52
  cwd,
46
- approve: (command, signal) => config.shellApproval?.approve(command, signal) ?? Promise.resolve(false),
53
+ allowWrites,
54
+ allowNetwork: modernPolicy ? config.permissionPolicy.shellNetwork : options.shellNetwork,
55
+ backend: options.shellBackend,
56
+ ...(modernPolicy ? {
57
+ operationsForCall: (scope = "workspace") => createShellOperations({ backend: options.shellBackend, allowWrites: true, allowNetwork: scope === "host" || config.permissionPolicy.shellNetwork, allowHostAccess: scope === "host" }),
58
+ defaultScopeForCall: () => config.permissionPolicy.mode === "unrestricted" ? "host" : "workspace",
59
+ } : {}),
60
+ approve: modernPolicy
61
+ ? (command, signal, context) => config.permissionPolicy.authorizeShell(command, context?.startsWith("Expanded host access") ? "host" : "workspace", signal, context)
62
+ : (command, signal, context) => config.shellApproval?.approve(command, signal, context) ?? Promise.resolve(false),
47
63
  })] : []),
48
64
  ...(extensions?.registeredTools ?? []).map((entry) => entry.tool),
49
65
  ],
50
- workspace: new LocalWorkspace(cwd, { allowWrites: options.allowWrites }),
66
+ workspace: modernPolicy ? new PermissionWorkspace(cwd, config.permissionPolicy) : new LocalWorkspace(cwd, { allowWrites: options.allowWrites }),
67
+ ...(modernPolicy && extensions !== undefined ? {
68
+ authorizeToolCall: (name, args, signal) => extensions.registeredTools.some((entry) => entry.tool.name === name)
69
+ ? config.permissionPolicy.authorizeExtension(name, args, signal)
70
+ : Promise.resolve(true),
71
+ } : {}),
51
72
  streaming: options.stream,
52
73
  contextManager,
53
74
  projectInstructions: new ScopedProjectInstructions(cwd, Math.min(16_384, options.contextWindow)),
@@ -58,6 +79,11 @@ export function createLocalSession(config) {
58
79
  resumed: restored.resumed,
59
80
  ...(restored.id === undefined ? {} : { id: restored.id }),
60
81
  ...(restored.messages === undefined ? {} : { messages: restored.messages }),
82
+ ...(options.compaction && restored.compaction !== undefined ? { compaction: restored.compaction } : {}),
83
+ ...(restored.promptCount === undefined ? {} : { promptCount: restored.promptCount }),
84
+ ...(restored.usage === undefined ? {} : { usage: restored.usage }),
85
+ ...(restored.title === undefined ? {} : { title: restored.title }),
86
+ planMode: restored.planMode ?? false,
61
87
  ...(store === undefined ? {} : { store }),
62
88
  });
63
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cli-runtime.js","sourceRoot":"","sources":["../src/cli-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-runtime.js","sourceRoot":"","sources":["../src/cli-runtime.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ export declare function main(argv: readonly string[]): Promise<number>;
3
3
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA8KA,wBAAsB,IAAI,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkQnE"}
package/dist/cli.js CHANGED
@@ -1,9 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import process from "node:process";
3
+ import { realpathSync } from "node:fs";
4
+ import { resolve } from "node:path";
5
+ import { fileURLToPath } from "node:url";
3
6
  import { helpText, parseCliArgs, VERSION, } from "./cli-options.js";
4
7
  import { createEventRenderer, createJsonEventWriter } from "./render.js";
5
8
  import { welcome } from "./tui/welcome.js";
9
+ import { fitLine, fitLineTail, terminalText, displayWidth } from "./tui/text.js";
6
10
  import { createLiveRegion, terminalWidth } from "./tui/live.js";
11
+ import { terminalColorEnabled, useTui } from "./tui/selection.js";
7
12
  import { runRepl } from "./repl.js";
8
13
  import { AgentSession } from "./session.js";
9
14
  import { createLocalSession } from "./cli-runtime.js";
@@ -11,6 +16,7 @@ import { defaultSessionHome, FileSessionStore, } from "./session-store.js";
11
16
  import { killTrackedChildren } from "./shell/process.js";
12
17
  import { killTrackedDockerContainers } from "./shell/docker.js";
13
18
  import { ShellApprovalGate } from "./shell/approval.js";
19
+ import { initialPermissionMode, PermissionPolicy } from "./permissions.js";
14
20
  import { decideTrust } from "./extensions/decide-trust.js";
15
21
  import { discoverExtensions } from "./extensions/discover.js";
16
22
  import { loadExtensions } from "./extensions/loader.js";
@@ -68,6 +74,9 @@ function tuiRefusal(options, interactive) {
68
74
  if (process.stdin.isTTY !== true || process.stderr.isTTY !== true) {
69
75
  return "--tui needs a terminal on both stdin and stderr.";
70
76
  }
77
+ if (process.env.TERM === "dumb") {
78
+ return "--tui cannot run with TERM=dumb; remove --tui or unset TERM.";
79
+ }
71
80
  return undefined;
72
81
  }
73
82
  /** Check project trust before importing any extension code. */
@@ -117,7 +126,7 @@ function ignoreBrokenPipe(stream) {
117
126
  process.exit(0);
118
127
  });
119
128
  }
120
- async function main(argv) {
129
+ export async function main(argv) {
121
130
  ignoreBrokenPipe(process.stdout);
122
131
  ignoreBrokenPipe(process.stderr);
123
132
  if (argv[0] === "update") {
@@ -164,6 +173,18 @@ async function main(argv) {
164
173
  process.stderr.write("Missing prompt. Run chivgent --help for usage.\n");
165
174
  return 1;
166
175
  }
176
+ const richTui = useTui({
177
+ explicit: options.tui,
178
+ simple: options.simple,
179
+ interactive,
180
+ stdinIsTTY: process.stdin.isTTY === true,
181
+ stdoutIsTTY: process.stdout.isTTY === true,
182
+ stderrIsTTY: process.stderr.isTTY === true,
183
+ json: options.json,
184
+ serve: options.serve,
185
+ connect: options.connect !== undefined,
186
+ term: process.env.TERM,
187
+ });
167
188
  if (options.tui) {
168
189
  // Refused rather than quietly ignored: a switch that silently does nothing
169
190
  // makes a mistyped command look like it worked.
@@ -191,17 +212,29 @@ async function main(argv) {
191
212
  process.stderr.write(`${restored}\n`);
192
213
  return 1;
193
214
  }
194
- if (options.allowShell) {
215
+ const initialMode = initialPermissionMode({
216
+ interactive,
217
+ tui: richTui,
218
+ permissionMode: options.permissionMode,
219
+ allowWrites: options.allowWrites,
220
+ allowShell: options.allowShell,
221
+ approveAllShell: options.approveAllShell,
222
+ shellNetwork: options.shellNetwork,
223
+ });
224
+ const permissionPolicy = initialMode === undefined ? undefined : new PermissionPolicy(initialMode);
225
+ if (options.allowShell || permissionPolicy !== undefined) {
195
226
  installShellCleanup();
196
227
  }
197
- const shellApproval = options.allowShell
228
+ const shellApproval = options.allowShell || permissionPolicy !== undefined
198
229
  ? new ShellApprovalGate(options.approveAllShell)
199
230
  : undefined;
231
+ permissionPolicy?.setApproval((action, signal, context) => shellApproval?.approve(action, signal, context) ?? Promise.resolve(false));
200
232
  const session = createLocalSession({
201
233
  options,
202
234
  cwd,
203
235
  llm,
204
236
  ...(shellApproval === undefined ? {} : { shellApproval }),
237
+ ...(permissionPolicy === undefined ? {} : { permissionPolicy }),
205
238
  ...(registry === undefined ? {} : { extensions: registry }),
206
239
  restored,
207
240
  ...(store === undefined ? {} : { store }),
@@ -209,18 +242,18 @@ async function main(argv) {
209
242
  // In TUI mode the live region *is* the renderer: it owns both the region and
210
243
  // the transcript it flushes to scrollback, so attaching the append-only
211
244
  // renderer as well would print every answer twice.
212
- const liveRegion = options.tui
245
+ const liveRegion = richTui
213
246
  ? createLiveRegion({
214
247
  stream: process.stderr,
215
248
  width: () => terminalWidth(process.stderr),
216
249
  height: () => process.stderr.rows || 24,
217
250
  answerStream: process.stdout,
218
251
  markdown: process.stdout.isTTY === true && process.env.TERM !== "dumb",
219
- color: process.stderr.isTTY === true && process.env.NO_COLOR === undefined && process.env.TERM !== "dumb",
252
+ color: terminalColorEnabled(process.stderr.isTTY === true, process.env),
220
253
  })
221
254
  : undefined;
222
- session.subscribe(options.json
223
- ? createJsonEventWriter(process.stdout, session.header())
255
+ const renderer = options.json
256
+ ? undefined
224
257
  : (liveRegion?.listener ??
225
258
  createEventRenderer({ stdout: process.stdout, stderr: process.stderr }, {
226
259
  stream: options.stream,
@@ -228,16 +261,27 @@ async function main(argv) {
228
261
  // A progress line rewrites itself with a carriage return, which is
229
262
  // only meaningful on a terminal; piped stderr keeps one line per event.
230
263
  showToolProgress: !options.quiet && process.stderr.isTTY === true,
231
- color: process.stderr.isTTY === true,
232
- })));
264
+ color: terminalColorEnabled(process.stderr.isTTY === true, process.env),
265
+ }));
266
+ let detachSession = () => undefined;
267
+ let hasAttachedSession = false;
268
+ const attachSession = (target) => {
269
+ detachSession();
270
+ if (hasAttachedSession)
271
+ liveRegion?.reset();
272
+ const detachRender = target.subscribe(options.json
273
+ ? createJsonEventWriter(process.stdout, target.header())
274
+ : renderer);
275
+ const detachExtensions = registry === undefined ? undefined : target.subscribe(registry.eventListener);
276
+ detachSession = () => { detachRender(); detachExtensions?.(); };
277
+ hasAttachedSession = true;
278
+ };
279
+ attachSession(session);
233
280
  if (liveRegion !== undefined) {
234
281
  // A resize reflows what is on screen, so the diff baseline no longer
235
282
  // describes it. This is the one moment a full repaint is correct.
236
283
  process.stderr.on("resize", liveRegion.resized);
237
284
  }
238
- if (registry !== undefined) {
239
- session.subscribe(registry.eventListener);
240
- }
241
285
  if (options.serve) {
242
286
  return serveSession(options, session);
243
287
  }
@@ -247,18 +291,50 @@ async function main(argv) {
247
291
  return await runRepl({
248
292
  session,
249
293
  ...(shellApproval === undefined ? {} : { shellApproval }),
294
+ ...(permissionPolicy === undefined ? {} : { permissionPolicy }),
250
295
  ...(liveRegion === undefined ? {} : { liveRegion }),
251
296
  signIn: providerControl,
252
297
  providers: providerControl,
298
+ compactionEnabled: options.compaction,
299
+ providerName: options.provider,
300
+ modelName: options.model,
301
+ permissions: [
302
+ ...(options.permissionMode === undefined ? [] : [`mode:${options.permissionMode}`]),
303
+ ...(options.allowWrites ? ["file-write"] : []),
304
+ ...(options.allowShell ? ["shell"] : []),
305
+ ...(options.shellNetwork ? ["network"] : []),
306
+ ],
307
+ sessionOptions: store === undefined ? undefined : {
308
+ list: async () => (await store.list({ cwd })).map(({ id, title }) => ({ id, ...(title === undefined ? {} : { title }) })),
309
+ create: async (title) => {
310
+ await store.flush?.();
311
+ const next = createLocalSession({ options, cwd, llm, ...(shellApproval === undefined ? {} : { shellApproval }), ...(permissionPolicy === undefined ? {} : { permissionPolicy }), ...(registry === undefined ? {} : { extensions: registry }), restored: { resumed: false }, store });
312
+ await next.initialize();
313
+ if (title)
314
+ await next.rename(title);
315
+ attachSession(next);
316
+ return next;
317
+ },
318
+ resume: async (id) => {
319
+ await store.flush?.();
320
+ const record = await store.read(id);
321
+ if (record === undefined || record.header.cwd !== cwd)
322
+ return undefined;
323
+ const next = createLocalSession({ options, cwd, llm, ...(shellApproval === undefined ? {} : { shellApproval }), ...(permissionPolicy === undefined ? {} : { permissionPolicy }), ...(registry === undefined ? {} : { extensions: registry }), restored: { id, messages: record.messages, compaction: record.compaction, promptCount: record.promptCount, usage: record.usage, title: record.title, planMode: record.planMode, resumed: true }, store });
324
+ attachSession(next);
325
+ return next;
326
+ },
327
+ },
328
+ sessionFileForSession: store === undefined ? undefined : (current) => store.location(current.id),
253
329
  input: process.stdin,
254
330
  // In JSON mode stdout carries the event stream and nothing else:
255
331
  // readline writes its prompt and echo to the same stream it is given,
256
332
  // which would otherwise prefix the first event with escape codes.
257
- output: options.json || options.tui ? process.stderr : process.stdout,
258
- tui: options.tui,
259
- inlineComposer: options.tui,
333
+ output: options.json || richTui ? process.stderr : process.stdout,
334
+ tui: richTui,
335
+ inlineComposer: richTui,
260
336
  stderr: process.stderr,
261
- banner: options.tui ? welcome({
337
+ banner: richTui ? welcome({
262
338
  version: VERSION,
263
339
  provider: options.provider,
264
340
  model: options.model ?? "unknown model",
@@ -269,8 +345,8 @@ async function main(argv) {
269
345
  : options.provider === "openai-compatible" && options.baseURL === undefined
270
346
  ? { setupIssue: "base-url" } : {}),
271
347
  width: terminalWidth(process.stderr),
272
- color: process.stderr.isTTY === true && process.env.NO_COLOR === undefined && process.env.TERM !== "dumb",
273
- }) : banner(options, session.id, restored.resumed, signedOutMessage),
348
+ color: terminalColorEnabled(process.stderr.isTTY === true, process.env),
349
+ }) : banner(options, cwd, restored.resumed, signedOutMessage),
274
350
  ...(store === undefined ? {} : { sessionFile: store.location(session.id) }),
275
351
  ...(registry === undefined
276
352
  ? {}
@@ -503,7 +579,7 @@ async function restoreSession(options, store, cwd) {
503
579
  if (transcript === undefined) {
504
580
  return `Unknown session: ${id}`;
505
581
  }
506
- return { id, messages: transcript.messages, resumed: true };
582
+ return { id, messages: transcript.messages, compaction: transcript.compaction, promptCount: transcript.promptCount, usage: transcript.usage, title: transcript.title, planMode: transcript.planMode, resumed: true };
507
583
  }
508
584
  async function listSessions(store, cwd) {
509
585
  const sessions = await store.list({ cwd });
@@ -513,15 +589,22 @@ async function listSessions(store, cwd) {
513
589
  }
514
590
  for (const summary of sessions) {
515
591
  const prompt = summary.lastPrompt ?? "";
516
- process.stdout.write(`${summary.id} ${summary.updatedAt} ${summary.promptCount} prompt(s) ${prompt.split("\n", 1)[0] ?? ""}\n`);
592
+ process.stdout.write(`${summary.id} ${summary.updatedAt} ${summary.promptCount} prompt(s) ${summary.title ? `${summary.title} ` : ""}${prompt.split("\n", 1)[0] ?? ""}\n`);
517
593
  }
518
594
  return 0;
519
595
  }
520
- function banner(options, sessionId, resumed, signedOutMessage) {
521
- const model = options.model ?? "unknown model";
596
+ function banner(options, cwd, resumed, signedOutMessage) {
597
+ const width = terminalWidth(process.stdout);
598
+ const model = terminalText(options.model ?? "unknown model");
599
+ const provider = terminalText(options.provider);
600
+ const cleanCwd = terminalText(cwd);
601
+ const prefix = `${provider} · ${model} · `;
602
+ const detailsWidth = Math.max(1, width - 2);
603
+ const availablePathWidth = detailsWidth - Math.min(displayWidth(prefix), detailsWidth - 1);
604
+ const pathWidth = Math.min(detailsWidth - 1, Math.max(9, availablePathWidth));
522
605
  const lines = [
523
- `chivgent ${VERSION} · ${options.provider} · ${model}`,
524
- `${resumed ? "resumed" : "session"} ${sessionId}`,
606
+ `◆ chivgent v${VERSION}${resumed ? " · resumed" : ""}`,
607
+ `${fitLine(prefix, detailsWidth - pathWidth)}${fitLineTail(cleanCwd, pathWidth)}`,
525
608
  ];
526
609
  if (signedOutMessage !== undefined) {
527
610
  // First thing on screen, because nothing else works until it is dealt
@@ -529,7 +612,7 @@ function banner(options, sessionId, resumed, signedOutMessage) {
529
612
  // it has nobody to ask tells you to start chivgent, which you just did.
530
613
  lines.push("", `No API key for ${options.provider} yet.`, "Run /login to store one, or leave and set an environment variable.");
531
614
  }
532
- lines.push("Type /help for commands, Ctrl+C or Ctrl+D to leave.", "");
615
+ lines.push("");
533
616
  return lines.join("\n");
534
617
  }
535
618
  /** Reads a prompt piped into stdin, so `cat question.txt | chivgent` works. */
@@ -544,13 +627,25 @@ async function readPipedPrompt() {
544
627
  }
545
628
  return contents.trim().length === 0 ? undefined : contents.trim();
546
629
  }
547
- main(process.argv.slice(2))
548
- .then((exitCode) => {
549
- process.exitCode = exitCode;
550
- })
551
- .catch((error) => {
552
- const message = error instanceof Error ? error.message : "Unknown error";
553
- process.stderr.write(`CLI error: ${message}\n`);
554
- process.exitCode = 1;
555
- });
630
+ const cliEntry = process.argv[1] === undefined
631
+ ? undefined
632
+ : (() => {
633
+ try {
634
+ return realpathSync(resolve(process.argv[1]));
635
+ }
636
+ catch {
637
+ return resolve(process.argv[1]);
638
+ }
639
+ })();
640
+ if (cliEntry === fileURLToPath(import.meta.url)) {
641
+ main(process.argv.slice(2))
642
+ .then((exitCode) => {
643
+ process.exitCode = exitCode;
644
+ })
645
+ .catch((error) => {
646
+ const message = error instanceof Error ? error.message : "Unknown error";
647
+ process.stderr.write(`CLI error: ${message}\n`);
648
+ process.exitCode = 1;
649
+ });
650
+ }
556
651
  //# sourceMappingURL=cli.js.map