chivgent 1.0.0 → 1.1.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 (235) hide show
  1. package/README.md +97 -897
  2. package/README.zh-CN.md +97 -801
  3. package/dist/agent.d.ts +30 -2
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +255 -36
  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 +9 -4
  12. package/dist/cli-options.d.ts.map +1 -1
  13. package/dist/cli-options.js +46 -3
  14. package/dist/cli-options.js.map +1 -1
  15. package/dist/cli-runtime.d.ts +33 -0
  16. package/dist/cli-runtime.d.ts.map +1 -0
  17. package/dist/cli-runtime.js +90 -0
  18. package/dist/cli-runtime.js.map +1 -0
  19. package/dist/cli.js +76 -81
  20. package/dist/cli.js.map +1 -1
  21. package/dist/context/compaction.d.ts +5 -2
  22. package/dist/context/compaction.d.ts.map +1 -1
  23. package/dist/context/compaction.js +58 -32
  24. package/dist/context/compaction.js.map +1 -1
  25. package/dist/context/context-manager.d.ts +23 -0
  26. package/dist/context/context-manager.d.ts.map +1 -1
  27. package/dist/context/context-manager.js +200 -35
  28. package/dist/context/context-manager.js.map +1 -1
  29. package/dist/context/project-instructions.d.ts +17 -0
  30. package/dist/context/project-instructions.d.ts.map +1 -0
  31. package/dist/context/project-instructions.js +191 -0
  32. package/dist/context/project-instructions.js.map +1 -0
  33. package/dist/evals/baseline.d.ts +41 -0
  34. package/dist/evals/baseline.d.ts.map +1 -0
  35. package/dist/evals/baseline.js +121 -0
  36. package/dist/evals/baseline.js.map +1 -0
  37. package/dist/evals/cli.js +27 -1
  38. package/dist/evals/cli.js.map +1 -1
  39. package/dist/evals/parse-args.d.ts +2 -0
  40. package/dist/evals/parse-args.d.ts.map +1 -1
  41. package/dist/evals/parse-args.js +5 -0
  42. package/dist/evals/parse-args.js.map +1 -1
  43. package/dist/evals/report.d.ts +2 -0
  44. package/dist/evals/report.d.ts.map +1 -1
  45. package/dist/evals/report.js +12 -8
  46. package/dist/evals/report.js.map +1 -1
  47. package/dist/evals/runner.d.ts +3 -0
  48. package/dist/evals/runner.d.ts.map +1 -1
  49. package/dist/evals/runner.js +5 -1
  50. package/dist/evals/runner.js.map +1 -1
  51. package/dist/evals/task.d.ts.map +1 -1
  52. package/dist/evals/task.js +1 -0
  53. package/dist/evals/task.js.map +1 -1
  54. package/dist/evals/tools.d.ts +4 -1
  55. package/dist/evals/tools.d.ts.map +1 -1
  56. package/dist/evals/tools.js +13 -4
  57. package/dist/evals/tools.js.map +1 -1
  58. package/dist/events.d.ts +12 -1
  59. package/dist/events.d.ts.map +1 -1
  60. package/dist/events.js.map +1 -1
  61. package/dist/patch/parse.d.ts +26 -0
  62. package/dist/patch/parse.d.ts.map +1 -0
  63. package/dist/patch/parse.js +117 -0
  64. package/dist/patch/parse.js.map +1 -0
  65. package/dist/permissions.d.ts +35 -0
  66. package/dist/permissions.d.ts.map +1 -0
  67. package/dist/permissions.js +89 -0
  68. package/dist/permissions.js.map +1 -0
  69. package/dist/prompts.d.ts +3 -3
  70. package/dist/prompts.d.ts.map +1 -1
  71. package/dist/prompts.js +5 -3
  72. package/dist/prompts.js.map +1 -1
  73. package/dist/providers/client.d.ts +1 -1
  74. package/dist/providers/client.d.ts.map +1 -1
  75. package/dist/providers/client.js +19 -1
  76. package/dist/providers/client.js.map +1 -1
  77. package/dist/providers/definitions.d.ts +2 -0
  78. package/dist/providers/definitions.d.ts.map +1 -1
  79. package/dist/providers/definitions.js +3 -1
  80. package/dist/providers/definitions.js.map +1 -1
  81. package/dist/providers/interactive.d.ts +4 -0
  82. package/dist/providers/interactive.d.ts.map +1 -1
  83. package/dist/providers/interactive.js +86 -2
  84. package/dist/providers/interactive.js.map +1 -1
  85. package/dist/providers/oauth-client.d.ts +14 -0
  86. package/dist/providers/oauth-client.d.ts.map +1 -0
  87. package/dist/providers/oauth-client.js +52 -0
  88. package/dist/providers/oauth-client.js.map +1 -0
  89. package/dist/providers/openai-compatible-chat.d.ts +1 -0
  90. package/dist/providers/openai-compatible-chat.d.ts.map +1 -1
  91. package/dist/providers/openai-compatible-chat.js +1 -0
  92. package/dist/providers/openai-compatible-chat.js.map +1 -1
  93. package/dist/providers/openai.d.ts +3 -0
  94. package/dist/providers/openai.d.ts.map +1 -1
  95. package/dist/providers/openai.js +72 -10
  96. package/dist/providers/openai.js.map +1 -1
  97. package/dist/remote/repl.d.ts.map +1 -1
  98. package/dist/remote/repl.js +9 -0
  99. package/dist/remote/repl.js.map +1 -1
  100. package/dist/repl.d.ts +53 -1
  101. package/dist/repl.d.ts.map +1 -1
  102. package/dist/repl.js +554 -10
  103. package/dist/repl.js.map +1 -1
  104. package/dist/session-store.d.ts +27 -2
  105. package/dist/session-store.d.ts.map +1 -1
  106. package/dist/session-store.js +85 -2
  107. package/dist/session-store.js.map +1 -1
  108. package/dist/session.d.ts +20 -0
  109. package/dist/session.d.ts.map +1 -1
  110. package/dist/session.js +141 -13
  111. package/dist/session.js.map +1 -1
  112. package/dist/shell/approval.d.ts +15 -0
  113. package/dist/shell/approval.d.ts.map +1 -0
  114. package/dist/shell/approval.js +25 -0
  115. package/dist/shell/approval.js.map +1 -0
  116. package/dist/shell/docker.d.ts +20 -0
  117. package/dist/shell/docker.d.ts.map +1 -0
  118. package/dist/shell/docker.js +97 -0
  119. package/dist/shell/docker.js.map +1 -0
  120. package/dist/shell/factory.d.ts +9 -0
  121. package/dist/shell/factory.d.ts.map +1 -0
  122. package/dist/shell/factory.js +13 -0
  123. package/dist/shell/factory.js.map +1 -0
  124. package/dist/shell/local.d.ts +5 -1
  125. package/dist/shell/local.d.ts.map +1 -1
  126. package/dist/shell/local.js +17 -2
  127. package/dist/shell/local.js.map +1 -1
  128. package/dist/shell/native.d.ts +15 -0
  129. package/dist/shell/native.d.ts.map +1 -0
  130. package/dist/shell/native.js +99 -0
  131. package/dist/shell/native.js.map +1 -0
  132. package/dist/shell/types.d.ts +1 -0
  133. package/dist/shell/types.d.ts.map +1 -1
  134. package/dist/tools/apply-patch.d.ts +18 -0
  135. package/dist/tools/apply-patch.d.ts.map +1 -0
  136. package/dist/tools/apply-patch.js +53 -0
  137. package/dist/tools/apply-patch.js.map +1 -0
  138. package/dist/tools/bash.d.ts +23 -0
  139. package/dist/tools/bash.d.ts.map +1 -1
  140. package/dist/tools/bash.js +55 -11
  141. package/dist/tools/bash.js.map +1 -1
  142. package/dist/tools/edit-file.d.ts.map +1 -1
  143. package/dist/tools/edit-file.js +1 -1
  144. package/dist/tools/edit-file.js.map +1 -1
  145. package/dist/tools/parallel.d.ts +16 -0
  146. package/dist/tools/parallel.d.ts.map +1 -0
  147. package/dist/tools/parallel.js +28 -0
  148. package/dist/tools/parallel.js.map +1 -0
  149. package/dist/tools/tool.d.ts +7 -0
  150. package/dist/tools/tool.d.ts.map +1 -1
  151. package/dist/tools/tool.js +7 -1
  152. package/dist/tools/tool.js.map +1 -1
  153. package/dist/tools/update-plan.d.ts +57 -0
  154. package/dist/tools/update-plan.d.ts.map +1 -0
  155. package/dist/tools/update-plan.js +99 -0
  156. package/dist/tools/update-plan.js.map +1 -0
  157. package/dist/tools/write-file.d.ts.map +1 -1
  158. package/dist/tools/write-file.js +1 -1
  159. package/dist/tools/write-file.js.map +1 -1
  160. package/dist/transcript-hash.d.ts +4 -0
  161. package/dist/transcript-hash.d.ts.map +1 -0
  162. package/dist/transcript-hash.js +6 -0
  163. package/dist/transcript-hash.js.map +1 -0
  164. package/dist/tui/activity.d.ts +17 -0
  165. package/dist/tui/activity.d.ts.map +1 -0
  166. package/dist/tui/activity.js +188 -0
  167. package/dist/tui/activity.js.map +1 -0
  168. package/dist/tui/diff.d.ts +14 -0
  169. package/dist/tui/diff.d.ts.map +1 -0
  170. package/dist/tui/diff.js +57 -0
  171. package/dist/tui/diff.js.map +1 -0
  172. package/dist/tui/editor-input.d.ts +53 -0
  173. package/dist/tui/editor-input.d.ts.map +1 -0
  174. package/dist/tui/editor-input.js +353 -0
  175. package/dist/tui/editor-input.js.map +1 -0
  176. package/dist/tui/editor.d.ts +72 -0
  177. package/dist/tui/editor.d.ts.map +1 -0
  178. package/dist/tui/editor.js +321 -0
  179. package/dist/tui/editor.js.map +1 -0
  180. package/dist/tui/git-diff.d.ts +7 -0
  181. package/dist/tui/git-diff.d.ts.map +1 -0
  182. package/dist/tui/git-diff.js +48 -0
  183. package/dist/tui/git-diff.js.map +1 -0
  184. package/dist/tui/input.d.ts +14 -0
  185. package/dist/tui/input.d.ts.map +1 -1
  186. package/dist/tui/input.js +77 -1
  187. package/dist/tui/input.js.map +1 -1
  188. package/dist/tui/live.d.ts +10 -0
  189. package/dist/tui/live.d.ts.map +1 -1
  190. package/dist/tui/live.js +42 -5
  191. package/dist/tui/live.js.map +1 -1
  192. package/dist/tui/markdown.d.ts +7 -0
  193. package/dist/tui/markdown.d.ts.map +1 -0
  194. package/dist/tui/markdown.js +55 -0
  195. package/dist/tui/markdown.js.map +1 -0
  196. package/dist/tui/menu.js +1 -1
  197. package/dist/tui/review.d.ts +27 -0
  198. package/dist/tui/review.d.ts.map +1 -0
  199. package/dist/tui/review.js +114 -0
  200. package/dist/tui/review.js.map +1 -0
  201. package/dist/tui/slash.d.ts +11 -0
  202. package/dist/tui/slash.d.ts.map +1 -0
  203. package/dist/tui/slash.js +13 -0
  204. package/dist/tui/slash.js.map +1 -0
  205. package/dist/tui/state.d.ts +5 -0
  206. package/dist/tui/state.d.ts.map +1 -1
  207. package/dist/tui/state.js +10 -1
  208. package/dist/tui/state.js.map +1 -1
  209. package/dist/tui/syntax.d.ts +6 -0
  210. package/dist/tui/syntax.d.ts.map +1 -0
  211. package/dist/tui/syntax.js +48 -0
  212. package/dist/tui/syntax.js.map +1 -0
  213. package/dist/tui/view.d.ts +1 -1
  214. package/dist/tui/view.d.ts.map +1 -1
  215. package/dist/tui/view.js +21 -9
  216. package/dist/tui/view.js.map +1 -1
  217. package/dist/tui/welcome.d.ts +5 -0
  218. package/dist/tui/welcome.d.ts.map +1 -1
  219. package/dist/tui/welcome.js +35 -20
  220. package/dist/tui/welcome.js.map +1 -1
  221. package/dist/workspace/patch.d.ts +11 -0
  222. package/dist/workspace/patch.d.ts.map +1 -0
  223. package/dist/workspace/patch.js +124 -0
  224. package/dist/workspace/patch.js.map +1 -0
  225. package/dist/workspace/paths.d.ts.map +1 -1
  226. package/dist/workspace/paths.js +4 -0
  227. package/dist/workspace/paths.js.map +1 -1
  228. package/dist/workspace/types.d.ts +9 -2
  229. package/dist/workspace/types.d.ts.map +1 -1
  230. package/dist/workspace/types.js.map +1 -1
  231. package/dist/workspace.d.ts +4 -3
  232. package/dist/workspace.d.ts.map +1 -1
  233. package/dist/workspace.js +7 -2
  234. package/dist/workspace.js.map +1 -1
  235. package/package.json +6 -2
package/dist/agent.d.ts CHANGED
@@ -2,9 +2,10 @@ import { type AgentEventListener } from "./events.js";
2
2
  import { type LLMClient } from "./llm.js";
3
3
  import { type UsageTotal } from "./providers/usage.js";
4
4
  import type { AssistantMessage, Message } from "./messages.js";
5
- import type { Tool } from "./tools/tool.js";
5
+ import { type Tool } from "./tools/tool.js";
6
6
  import type { Workspace } from "./workspace.js";
7
- import type { ContextManager } from "./context/context-manager.js";
7
+ import { type AppliedCompaction, type ContextManager } from "./context/context-manager.js";
8
+ import { type ProjectInstructionsProvider } from "./context/project-instructions.js";
8
9
  export interface AgentOptions {
9
10
  readonly systemPrompt: string;
10
11
  readonly maxTurns: number;
@@ -19,6 +20,10 @@ export interface AgentOptions {
19
20
  * Decides what the model sees each turn. Omit to send the whole transcript.
20
21
  */
21
22
  readonly contextManager?: ContextManager;
23
+ /** Scoped repository guidance, read separately from trusted system prompts. */
24
+ readonly projectInstructions?: ProjectInstructionsProvider;
25
+ /** Additional execution-time boundary for tools such as trusted extensions. */
26
+ readonly authorizeToolCall?: (name: string, argumentsValue: unknown, signal?: AbortSignal) => Promise<boolean>;
22
27
  }
23
28
  export interface AgentRunOptions {
24
29
  /** Cancels the run between turns, during a Provider call, and between tools. */
@@ -28,6 +33,9 @@ export interface AgentRunOptions {
28
33
  * given; a session owns its transcript and passes a snapshot in.
29
34
  */
30
35
  readonly history?: readonly Message[];
36
+ readonly compaction?: AppliedCompaction;
37
+ /** Enforced in the execution path; provider tool schemas are filtered too. */
38
+ readonly planMode?: boolean;
31
39
  }
32
40
  export type AgentRunResult = {
33
41
  readonly status: "completed";
@@ -36,11 +44,13 @@ export type AgentRunResult = {
36
44
  readonly turnCount: number;
37
45
  /** What the run cost, when the Provider reported it. */
38
46
  readonly usage?: UsageTotal;
47
+ readonly compaction?: AppliedCompaction;
39
48
  } | {
40
49
  readonly status: "max_turns" | "aborted";
41
50
  readonly messages: readonly Message[];
42
51
  readonly turnCount: number;
43
52
  readonly usage?: UsageTotal;
53
+ readonly compaction?: AppliedCompaction;
44
54
  };
45
55
  export declare class AgentProtocolError extends Error {
46
56
  constructor(message: string);
@@ -55,8 +65,17 @@ export declare class Agent {
55
65
  private readonly onEvent?;
56
66
  private readonly streaming;
57
67
  private readonly contextManager?;
68
+ private readonly projectInstructions?;
69
+ private readonly authorizeToolCall?;
58
70
  constructor(options: AgentOptions);
59
71
  get toolNames(): readonly string[];
72
+ compactHistory(messages: readonly Message[], previous?: AppliedCompaction, signal?: AbortSignal): Promise<{
73
+ readonly compacted: false;
74
+ } | {
75
+ readonly compacted: true;
76
+ readonly compaction: AppliedCompaction;
77
+ readonly usage?: import("./llm.js").Usage;
78
+ }>;
60
79
  run(userInput: string, options?: AgentRunOptions): Promise<AgentRunResult>;
61
80
  private loop;
62
81
  /**
@@ -69,6 +88,15 @@ export declare class Agent {
69
88
  private buildContext;
70
89
  private requestAssistantMessage;
71
90
  private assertUniqueToolCallIds;
91
+ /**
92
+ * Run contiguous built-in read groups concurrently, with an exclusive
93
+ * barrier around every write/shell/extension/unknown call.
94
+ *
95
+ * Promise.allSettled is intentional: it drains every started read before
96
+ * agent_end, so no background events arrive after the session is persisted.
97
+ * Results are committed in the model's call order, not completion order.
98
+ */
99
+ private executeToolCalls;
72
100
  private executeToolCall;
73
101
  private emit;
74
102
  private emitEnd;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/agent.js CHANGED
@@ -1,6 +1,11 @@
1
1
  import { emitEvent, } from "./events.js";
2
2
  import { isAbortError } from "./llm.js";
3
3
  import { addUsage } from "./providers/usage.js";
4
+ import { ToolExecutionError } from "./tools/tool.js";
5
+ import { isParallelReadTool, isPlanModeTool, MAX_PARALLEL_READS } from "./tools/parallel.js";
6
+ import { UpdatePlanTool } from "./tools/update-plan.js";
7
+ import { ContextBudgetError } from "./context/context-manager.js";
8
+ import { INCOMPLETE_PROJECT_GUIDANCE } from "./context/project-instructions.js";
4
9
  export class AgentProtocolError extends Error {
5
10
  constructor(message) {
6
11
  super(message);
@@ -17,6 +22,8 @@ export class Agent {
17
22
  onEvent;
18
23
  streaming;
19
24
  contextManager;
25
+ projectInstructions;
26
+ authorizeToolCall;
20
27
  constructor(options) {
21
28
  if (!Number.isSafeInteger(options.maxTurns) || options.maxTurns <= 0) {
22
29
  throw new TypeError("maxTurns must be a positive safe integer.");
@@ -38,21 +45,39 @@ export class Agent {
38
45
  if (options.contextManager !== undefined) {
39
46
  this.contextManager = options.contextManager;
40
47
  }
48
+ if (options.projectInstructions !== undefined) {
49
+ this.projectInstructions = options.projectInstructions;
50
+ }
51
+ this.authorizeToolCall = options.authorizeToolCall;
41
52
  }
42
53
  get toolNames() {
43
54
  return [...this.registry.keys()];
44
55
  }
56
+ async compactHistory(messages, previous, signal) {
57
+ if (this.contextManager === undefined)
58
+ throw new ContextBudgetError("Manual compaction is disabled.");
59
+ return this.contextManager.compactHistory(messages, previous, signal);
60
+ }
45
61
  async run(userInput, options = {}) {
46
62
  if (userInput.trim().length === 0) {
47
63
  throw new TypeError("User input must not be empty.");
48
64
  }
65
+ // Older logs or crashed executions can end with an assistant tool call
66
+ // without a corresponding tool result. Repair those pairs before sending
67
+ // any new user message to a Provider.
68
+ const history = structuredClone([...(options.history ?? [])]);
69
+ const originalHistory = JSON.stringify(history);
70
+ closePendingToolCalls(history);
49
71
  const state = {
50
72
  messages: [
51
- ...structuredClone(options.history ?? []),
73
+ ...history,
52
74
  { role: "user", content: userInput },
53
75
  ],
54
76
  seenToolCallIds: new Set(),
55
77
  turnCount: 0,
78
+ planMode: options.planMode === true,
79
+ ...(options.compaction === undefined || JSON.stringify(history) !== originalHistory
80
+ ? {} : { compaction: structuredClone(options.compaction) }),
56
81
  };
57
82
  const signal = options.signal;
58
83
  this.emit({
@@ -62,10 +87,18 @@ export class Agent {
62
87
  });
63
88
  try {
64
89
  const result = await this.loop(state, signal);
90
+ if (result.status === "aborted") {
91
+ closePendingToolCalls(state.messages);
92
+ this.emitEnd("aborted", state);
93
+ return abortedResult(state);
94
+ }
65
95
  this.emitEnd(result.status, state);
66
96
  return result;
67
97
  }
68
98
  catch (error) {
99
+ // A failed/aborted tool may leave other calls in the same assistant
100
+ // message unanswered. Every call needs a result for future replay.
101
+ closePendingToolCalls(state.messages);
69
102
  if (isAbortError(error) || isAborted(signal)) {
70
103
  this.emitEnd("aborted", state);
71
104
  return abortedResult(state);
@@ -85,6 +118,11 @@ export class Agent {
85
118
  this.emit({ type: "message_start", turn });
86
119
  const response = await this.requestAssistantMessage(state, turn, signal);
87
120
  state.usage = addUsage(state.usage, response.usage);
121
+ // A Provider might ignore AbortSignal and resolve successfully anyway.
122
+ // Do not commit that answer as a completed turn after cancellation.
123
+ if (isAborted(signal)) {
124
+ return abortedResult(state);
125
+ }
88
126
  const assistant = validateAndCloneAssistantMessage(response.message);
89
127
  this.assertUniqueToolCallIds(assistant.toolCalls, state.seenToolCallIds);
90
128
  state.messages.push(assistant);
@@ -108,16 +146,14 @@ export class Agent {
108
146
  messages: snapshotMessages(state.messages),
109
147
  turnCount: state.turnCount,
110
148
  ...(state.usage === undefined ? {} : { usage: state.usage }),
149
+ ...(state.compaction === undefined ? {} : { compaction: state.compaction }),
111
150
  };
112
151
  }
113
- const toolResults = [];
114
- for (const toolCall of assistant.toolCalls) {
115
- if (isAborted(signal)) {
116
- return abortedResult(state);
117
- }
118
- const result = await this.executeToolCall(toolCall, turn, signal);
119
- toolResults.push(result);
120
- state.messages.push(result);
152
+ const toolResults = await this.executeToolCalls(assistant.toolCalls, turn, signal, state);
153
+ // A read may finish after the user cancels, even when the tool itself
154
+ // ignores AbortSignal. Never send another model request after that.
155
+ if (isAborted(signal)) {
156
+ return abortedResult(state);
121
157
  }
122
158
  this.emit({ type: "turn_end", turn, message: assistant, toolResults });
123
159
  }
@@ -126,6 +162,7 @@ export class Agent {
126
162
  messages: snapshotMessages(state.messages),
127
163
  turnCount: state.turnCount,
128
164
  ...(state.usage === undefined ? {} : { usage: state.usage }),
165
+ ...(state.compaction === undefined ? {} : { compaction: state.compaction }),
129
166
  };
130
167
  }
131
168
  /**
@@ -135,15 +172,33 @@ export class Agent {
135
172
  * messages sent with it, so a fresh compaction has to drop the continuation
136
173
  * to take effect at all.
137
174
  */
138
- async buildContext(state, signal) {
175
+ async buildContext(state, signal, prefixMessages = []) {
139
176
  const snapshot = snapshotMessages(state.messages);
140
177
  if (this.contextManager === undefined) {
141
178
  return snapshot;
142
179
  }
143
- const context = await this.contextManager.build(snapshot, {
144
- ...(state.compaction === undefined ? {} : { previous: state.compaction }),
145
- ...(signal === undefined ? {} : { signal }),
146
- });
180
+ let context;
181
+ try {
182
+ context = await this.contextManager.build(snapshot, {
183
+ ...(state.compaction === undefined ? {} : { previous: state.compaction }),
184
+ ...(signal === undefined ? {} : { signal }),
185
+ prefixMessages,
186
+ fixedMessages: [
187
+ { role: "user", content: this.systemPrompt },
188
+ { role: "user", content: JSON.stringify(this.toolDefinitions) },
189
+ ],
190
+ });
191
+ }
192
+ catch (error) {
193
+ if (error instanceof ContextBudgetError &&
194
+ (error.compactionUsage !== undefined || error.compactionUsageComplete === false)) {
195
+ state.usage = addUsage(state.usage, error.compactionUsage);
196
+ if (error.compactionUsageComplete === false) {
197
+ state.usage = { usage: state.usage.usage, complete: false };
198
+ }
199
+ }
200
+ throw error;
201
+ }
147
202
  if (context.compaction === undefined) {
148
203
  delete state.compaction;
149
204
  }
@@ -156,17 +211,38 @@ export class Agent {
156
211
  // Summarising is a Provider call this run paid for. Only add when there
157
212
  // was one: passing undefined would mark the total incomplete on every
158
213
  // turn that simply did not need compacting.
159
- if (context.usage !== undefined) {
214
+ if (context.usage !== undefined || context.usageComplete === false) {
160
215
  state.usage = addUsage(state.usage, context.usage);
216
+ if (context.usageComplete === false) {
217
+ state.usage = {
218
+ usage: state.usage.usage,
219
+ complete: false,
220
+ };
221
+ }
161
222
  }
162
223
  return context.messages;
163
224
  }
164
225
  async requestAssistantMessage(state, turn, signal) {
165
- const messages = await this.buildContext(state, signal);
226
+ const projectText = await this.projectInstructions?.load(state.messages);
227
+ if (projectText !== state.projectInstructionsText) {
228
+ // A chained Provider holds its own prompt history; discard that chain
229
+ // when a new scoped AGENTS.md becomes applicable or a document changes.
230
+ delete state.continuation;
231
+ if (projectText === undefined)
232
+ delete state.projectInstructionsText;
233
+ else
234
+ state.projectInstructionsText = projectText;
235
+ }
236
+ const prefixMessages = projectText === undefined
237
+ ? [] : [{ role: "user", content: projectText }];
238
+ const messages = await this.buildContext(state, signal, prefixMessages);
239
+ const modelMessages = [...prefixMessages, ...messages];
166
240
  const request = {
167
- systemPrompt: this.systemPrompt,
168
- messages,
169
- tools: this.toolDefinitions,
241
+ systemPrompt: state.planMode ? `${this.systemPrompt}\n\n${PLAN_MODE_PROMPT}` : this.systemPrompt,
242
+ messages: modelMessages,
243
+ tools: state.planMode
244
+ ? this.toolDefinitions.filter((definition) => isPlanModeTool(this.registry.get(definition.name)))
245
+ : this.toolDefinitions,
170
246
  ...(state.continuation === undefined
171
247
  ? {}
172
248
  : { continuation: state.continuation }),
@@ -191,7 +267,63 @@ export class Agent {
191
267
  seenIds.add(toolCall.id);
192
268
  }
193
269
  }
194
- async executeToolCall(toolCall, turn, signal) {
270
+ /**
271
+ * Run contiguous built-in read groups concurrently, with an exclusive
272
+ * barrier around every write/shell/extension/unknown call.
273
+ *
274
+ * Promise.allSettled is intentional: it drains every started read before
275
+ * agent_end, so no background events arrive after the session is persisted.
276
+ * Results are committed in the model's call order, not completion order.
277
+ */
278
+ async executeToolCalls(calls, turn, signal, state) {
279
+ const results = [];
280
+ let next = 0;
281
+ while (next < calls.length) {
282
+ if (isAborted(signal))
283
+ break;
284
+ const call = calls[next];
285
+ if (call === undefined)
286
+ break;
287
+ if (!isParallelReadTool(this.registry.get(call.name))) {
288
+ const result = await this.executeToolCall(call, turn, signal, state);
289
+ state.messages.push(result);
290
+ results.push(result);
291
+ next += 1;
292
+ continue;
293
+ }
294
+ // Stop at the next exclusive call; a write must never overlap a read
295
+ // and can never be overtaken by a later read.
296
+ const batch = [];
297
+ while (next < calls.length && batch.length < MAX_PARALLEL_READS) {
298
+ const candidate = calls[next];
299
+ if (candidate === undefined ||
300
+ !isParallelReadTool(this.registry.get(candidate.name)))
301
+ break;
302
+ batch.push(candidate);
303
+ next += 1;
304
+ }
305
+ const settled = await Promise.allSettled(batch.map((toolCall) => this.executeToolCall(toolCall, turn, signal, state)));
306
+ let firstFailure;
307
+ let hasFailure = false;
308
+ for (const outcome of settled) {
309
+ if (outcome.status === "fulfilled") {
310
+ results.push(outcome.value);
311
+ state.messages.push(outcome.value);
312
+ }
313
+ else if (!hasFailure) {
314
+ firstFailure = outcome.reason;
315
+ hasFailure = true;
316
+ }
317
+ }
318
+ if (hasFailure) {
319
+ // The caller closes unmatched calls before persisting agent_end.
320
+ // Successfully completed reads are preserved in their original order.
321
+ throw firstFailure;
322
+ }
323
+ }
324
+ return results;
325
+ }
326
+ async executeToolCall(toolCall, turn, signal, state) {
195
327
  this.emit({
196
328
  type: "tool_execution_start",
197
329
  turn,
@@ -201,7 +333,10 @@ export class Agent {
201
333
  });
202
334
  const tool = this.registry.get(toolCall.name);
203
335
  let output;
204
- if (tool === undefined) {
336
+ if (state.planMode && !isPlanModeTool(tool)) {
337
+ output = { content: `Plan Mode blocked tool: ${toolCall.name}. Only built-in read tools and update_plan can run.`, isError: true };
338
+ }
339
+ else if (tool === undefined) {
205
340
  output = {
206
341
  content: `Unknown tool: ${toolCall.name}`,
207
342
  isError: true,
@@ -209,26 +344,69 @@ export class Agent {
209
344
  }
210
345
  else {
211
346
  try {
212
- output = validateToolOutput(await tool.execute(toolCall.arguments, {
213
- workspace: this.workspace,
214
- ...(signal === undefined ? {} : { signal }),
215
- onUpdate: (content) => {
216
- this.emit({
217
- type: "tool_execution_update",
218
- turn,
219
- toolCallId: toolCall.id,
220
- toolName: toolCall.name,
221
- content,
222
- });
223
- },
224
- }));
347
+ const authorized = this.authorizeToolCall === undefined ||
348
+ await this.authorizeToolCall(toolCall.name, toolCall.arguments, signal);
349
+ if (!authorized) {
350
+ output = { content: `Tool call denied: ${toolCall.name}. Approval was declined or unavailable.`, isError: true };
351
+ }
352
+ else {
353
+ // A model may issue its very first write into a nested folder whose
354
+ // AGENTS.md wasn't visible at sampling time. Defer the mutation until
355
+ // the next LLM request has included those scoped instructions.
356
+ const currentGuidance = this.projectInstructions !== undefined &&
357
+ ["write_file", "edit_file", "apply_patch"].includes(toolCall.name)
358
+ ? await this.projectInstructions.load(state.messages, toolCall)
359
+ : undefined;
360
+ const unseenGuidance = currentGuidance !== undefined && (currentGuidance.includes(INCOMPLETE_PROJECT_GUIDANCE) ||
361
+ currentGuidance !== state.projectInstructionsText);
362
+ if (unseenGuidance) {
363
+ output = {
364
+ content: currentGuidance?.includes(INCOMPLETE_PROJECT_GUIDANCE)
365
+ ? "The current operation's scoped project instructions exceed the safe loading limits. No files were changed; narrow the operation or reduce the instruction size before retrying."
366
+ : "New scoped AGENTS.md instructions were discovered. No files were changed. Review the new project guidance in the next turn before retrying.",
367
+ isError: true,
368
+ };
369
+ }
370
+ else {
371
+ output = validateToolOutput(await tool.execute(toolCall.arguments, {
372
+ workspace: this.workspace,
373
+ ...(signal === undefined ? {} : { signal }),
374
+ ...(tool.constructor === UpdatePlanTool ? {
375
+ onPlanUpdate: (update) => {
376
+ this.emit({ type: "plan_update", turn, ...update });
377
+ },
378
+ } : {}),
379
+ onUpdate: (content) => {
380
+ this.emit({
381
+ type: "tool_execution_update",
382
+ turn,
383
+ toolCallId: toolCall.id,
384
+ toolName: toolCall.name,
385
+ content,
386
+ });
387
+ },
388
+ }));
389
+ }
390
+ }
225
391
  }
226
392
  catch (error) {
227
- if (isAbortError(error)) {
393
+ if (isAbortError(error) || isAborted(signal)) {
394
+ this.emit({
395
+ type: "tool_execution_end",
396
+ turn,
397
+ toolCallId: toolCall.id,
398
+ toolName: toolCall.name,
399
+ content: INTERRUPTED_TOOL_RESULT,
400
+ isError: true,
401
+ });
228
402
  throw error;
229
403
  }
230
404
  output = {
231
- content: `Tool execution failed: ${toolCall.name}`,
405
+ // Only explicitly public messages reach the model. Unexpected errors
406
+ // may contain file paths, tokens, or other implementation details.
407
+ content: error instanceof ToolExecutionError
408
+ ? error.message
409
+ : `Tool execution failed: ${toolCall.name}`,
232
410
  isError: true,
233
411
  };
234
412
  }
@@ -259,10 +437,50 @@ export class Agent {
259
437
  turnCount: state.turnCount,
260
438
  messages: snapshotMessages(state.messages),
261
439
  ...(state.usage === undefined ? {} : { usage: state.usage }),
440
+ ...(state.compaction === undefined ? {} : { compaction: state.compaction }),
262
441
  ...(error === undefined ? {} : { error }),
263
442
  });
264
443
  }
265
444
  }
445
+ const INTERRUPTED_TOOL_RESULT = "Tool execution interrupted before completion.";
446
+ const PLAN_MODE_PROMPT = `Plan Mode is active. Investigate using available built-in read tools, then propose a concise plan or ask the user a question in natural language. Do not modify files or run commands. Use update_plan for a checklist when useful, then wait for the user to turn Plan Mode off with /plan off before carrying out changes.`;
447
+ /**
448
+ * Ensure every function call has a corresponding output before history is
449
+ * replayed. The synthetic failure is deliberately explicit: we did not run
450
+ * the unfinished tool, and must never imply that its side effects happened.
451
+ *
452
+ * Also handles historical logs with an interrupted assistant call followed by
453
+ * a user message, inserting the missing output *before* that user message.
454
+ */
455
+ function closePendingToolCalls(messages) {
456
+ for (let index = 0; index < messages.length; index += 1) {
457
+ const current = messages[index];
458
+ if (current?.role !== "assistant" || current.toolCalls.length === 0) {
459
+ continue;
460
+ }
461
+ let afterTools = index + 1;
462
+ const completed = new Map();
463
+ while (messages[afterTools]?.role === "tool") {
464
+ const message = messages[afterTools];
465
+ if (message?.role === "tool") {
466
+ completed.set(message.toolCallId, message);
467
+ }
468
+ afterTools += 1;
469
+ }
470
+ // The order of settled parallel reads is not necessarily the order in
471
+ // which the model requested them. Rebuild in call order, including
472
+ // explicit failure placeholders for tools that never finished.
473
+ const normalized = current.toolCalls.map((call) => completed.get(call.id) ?? {
474
+ role: "tool",
475
+ toolCallId: call.id,
476
+ toolName: call.name,
477
+ content: INTERRUPTED_TOOL_RESULT,
478
+ isError: true,
479
+ });
480
+ messages.splice(index + 1, afterTools - (index + 1), ...normalized);
481
+ index += normalized.length;
482
+ }
483
+ }
266
484
  /** Kept as a call so narrowing never hides a signal that aborts mid-run. */
267
485
  function isAborted(signal) {
268
486
  return signal !== undefined && signal.aborted;
@@ -273,6 +491,7 @@ function abortedResult(state) {
273
491
  messages: snapshotMessages(state.messages),
274
492
  turnCount: state.turnCount,
275
493
  ...(state.usage === undefined ? {} : { usage: state.usage }),
494
+ ...(state.compaction === undefined ? {} : { compaction: state.compaction }),
276
495
  };
277
496
  }
278
497
  function createToolRegistry(tools) {
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /** OAuth credentials have a separate schema and lifecycle from API keys. */
2
+ export interface OAuthCredential {
3
+ readonly type: "oauth";
4
+ readonly provider: "openai" | "xai";
5
+ readonly clientId: string;
6
+ readonly accessToken: string;
7
+ readonly refreshToken?: string;
8
+ readonly idToken?: string;
9
+ readonly expiresAt: number;
10
+ readonly scopes: readonly string[];
11
+ readonly subject?: string;
12
+ readonly email?: string;
13
+ }
14
+ export declare function oauthFilePath(home?: string | undefined): string;
15
+ export declare function readOAuthCredentials(file?: string): Promise<OAuthCredential[]>;
16
+ export declare function writeOAuthCredential(credential: OAuthCredential, file?: string): Promise<void>;
17
+ export declare function removeOAuthCredential(provider: OAuthCredential["provider"], file?: string): Promise<void>;
18
+ export declare function refreshSavedOAuthCredential(provider: OAuthCredential["provider"], file?: string, fetcher?: typeof fetch, signal?: AbortSignal): Promise<OAuthCredential | undefined>;
19
+ export declare function refreshOAuthCredential(credential: OAuthCredential, fetcher?: typeof fetch, signal?: AbortSignal): Promise<OAuthCredential>;
20
+ export declare function revokeOAuthCredential(credential: OAuthCredential, fetcher?: typeof fetch): Promise<boolean>;
21
+ /** Current OpenAI OSS SIWC registration flow; callback remains loopback-only. */
22
+ export declare function signInOpenAI(options: {
23
+ appName: string;
24
+ file?: string;
25
+ openBrowser?: (url: string) => Promise<void>;
26
+ fetch?: typeof fetch;
27
+ signal?: AbortSignal;
28
+ startCallback?: (state: string) => Promise<{
29
+ redirectUri: string;
30
+ result: Promise<CallbackResult>;
31
+ close(): void;
32
+ }>;
33
+ }): Promise<OAuthCredential>;
34
+ interface CallbackResult {
35
+ code?: string;
36
+ state?: string;
37
+ client_id?: string;
38
+ error?: string;
39
+ }
40
+ /** xAI RFC 8628 device login; endpoints/scopes currently follow public grok-cli OAuth metadata. */
41
+ export declare function signInXAI(options: {
42
+ file?: string;
43
+ write: (text: string) => void;
44
+ fetch?: typeof fetch;
45
+ sleep?: (ms: number) => Promise<void>;
46
+ signal?: AbortSignal;
47
+ }): Promise<OAuthCredential>;
48
+ /** OAuth bearer tokens may only reach their provider API; reject redirects too. */
49
+ export declare function oauthApiFetch(expectedOrigin: string): typeof fetch;
50
+ export {};
51
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/auth/oauth.ts"],"names":[],"mappings":"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"}