@oh-my-pi/pi-coding-agent 13.18.0 → 14.0.2

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/CHANGELOG.md +316 -1
  2. package/package.json +86 -24
  3. package/scripts/format-prompts.ts +2 -2
  4. package/src/autoresearch/apply-contract-to-state.ts +24 -0
  5. package/src/autoresearch/contract.ts +0 -44
  6. package/src/autoresearch/dashboard.ts +1 -2
  7. package/src/autoresearch/git.ts +116 -30
  8. package/src/autoresearch/helpers.ts +49 -0
  9. package/src/autoresearch/index.ts +28 -187
  10. package/src/autoresearch/prompt.md +26 -9
  11. package/src/autoresearch/state.ts +0 -6
  12. package/src/autoresearch/tools/init-experiment.ts +202 -117
  13. package/src/autoresearch/tools/log-experiment.ts +123 -178
  14. package/src/autoresearch/tools/run-experiment.ts +48 -10
  15. package/src/autoresearch/types.ts +2 -2
  16. package/src/capability/index.ts +4 -2
  17. package/src/cli/file-processor.ts +3 -3
  18. package/src/cli/grep-cli.ts +8 -8
  19. package/src/cli/grievances-cli.ts +78 -0
  20. package/src/cli/read-cli.ts +67 -0
  21. package/src/cli/setup-cli.ts +4 -4
  22. package/src/cli/update-cli.ts +3 -3
  23. package/src/cli.ts +2 -0
  24. package/src/commands/grep.ts +6 -1
  25. package/src/commands/grievances.ts +20 -0
  26. package/src/commands/read.ts +33 -0
  27. package/src/commit/agentic/agent.ts +5 -8
  28. package/src/commit/agentic/index.ts +22 -26
  29. package/src/commit/agentic/tools/analyze-file.ts +3 -3
  30. package/src/commit/agentic/tools/git-file-diff.ts +3 -6
  31. package/src/commit/agentic/tools/git-hunk.ts +3 -3
  32. package/src/commit/agentic/tools/git-overview.ts +6 -9
  33. package/src/commit/agentic/tools/index.ts +6 -8
  34. package/src/commit/agentic/tools/propose-commit.ts +4 -7
  35. package/src/commit/agentic/tools/recent-commits.ts +3 -3
  36. package/src/commit/agentic/tools/split-commit.ts +4 -4
  37. package/src/commit/agentic/validation.ts +1 -1
  38. package/src/commit/analysis/conventional.ts +4 -4
  39. package/src/commit/analysis/summary.ts +3 -3
  40. package/src/commit/changelog/generate.ts +4 -4
  41. package/src/commit/changelog/index.ts +5 -9
  42. package/src/commit/map-reduce/map-phase.ts +4 -4
  43. package/src/commit/map-reduce/reduce-phase.ts +4 -4
  44. package/src/commit/pipeline.ts +13 -16
  45. package/src/config/keybindings.ts +7 -6
  46. package/src/config/prompt-templates.ts +44 -226
  47. package/src/config/resolve-config-value.ts +4 -2
  48. package/src/config/settings-schema.ts +98 -2
  49. package/src/config/settings.ts +25 -26
  50. package/src/dap/client.ts +674 -0
  51. package/src/dap/config.ts +150 -0
  52. package/src/dap/defaults.json +211 -0
  53. package/src/dap/index.ts +4 -0
  54. package/src/dap/session.ts +1255 -0
  55. package/src/dap/types.ts +600 -0
  56. package/src/debug/log-viewer.ts +3 -2
  57. package/src/discovery/builtin.ts +1 -2
  58. package/src/discovery/codex.ts +2 -2
  59. package/src/discovery/github.ts +2 -1
  60. package/src/discovery/helpers.ts +2 -2
  61. package/src/discovery/opencode.ts +2 -2
  62. package/src/edit/diff.ts +818 -0
  63. package/src/edit/index.ts +309 -0
  64. package/src/edit/line-hash.ts +67 -0
  65. package/src/edit/modes/chunk.ts +454 -0
  66. package/src/{patch → edit/modes}/hashline.ts +741 -361
  67. package/src/{patch/applicator.ts → edit/modes/patch.ts} +420 -117
  68. package/src/{patch/fuzzy.ts → edit/modes/replace.ts} +519 -197
  69. package/src/{patch → edit}/normalize.ts +97 -76
  70. package/src/{patch/shared.ts → edit/renderer.ts} +181 -108
  71. package/src/exec/bash-executor.ts +4 -2
  72. package/src/exec/idle-timeout-watchdog.ts +126 -0
  73. package/src/exec/non-interactive-env.ts +5 -0
  74. package/src/extensibility/custom-commands/bundled/ci-green/index.ts +6 -18
  75. package/src/extensibility/custom-commands/bundled/review/index.ts +45 -43
  76. package/src/extensibility/custom-commands/loader.ts +1 -2
  77. package/src/extensibility/custom-tools/loader.ts +34 -11
  78. package/src/extensibility/custom-tools/types.ts +1 -1
  79. package/src/extensibility/extensions/loader.ts +9 -4
  80. package/src/extensibility/extensions/runner.ts +24 -1
  81. package/src/extensibility/extensions/types.ts +4 -2
  82. package/src/extensibility/hooks/loader.ts +5 -6
  83. package/src/extensibility/hooks/types.ts +2 -2
  84. package/src/extensibility/plugins/doctor.ts +2 -1
  85. package/src/extensibility/plugins/marketplace/fetcher.ts +2 -57
  86. package/src/extensibility/plugins/marketplace/source-resolver.ts +4 -4
  87. package/src/extensibility/slash-commands.ts +3 -7
  88. package/src/index.ts +3 -1
  89. package/src/internal-urls/docs-index.generated.ts +11 -11
  90. package/src/ipy/executor.ts +58 -17
  91. package/src/ipy/gateway-coordinator.ts +6 -4
  92. package/src/ipy/kernel.ts +45 -22
  93. package/src/ipy/runtime.ts +2 -2
  94. package/src/lsp/client.ts +7 -4
  95. package/src/lsp/clients/lsp-linter-client.ts +4 -4
  96. package/src/lsp/config.ts +2 -2
  97. package/src/lsp/defaults.json +688 -154
  98. package/src/lsp/index.ts +234 -45
  99. package/src/lsp/lspmux.ts +2 -2
  100. package/src/lsp/startup-events.ts +13 -0
  101. package/src/lsp/types.ts +12 -1
  102. package/src/lsp/utils.ts +8 -1
  103. package/src/main.ts +125 -47
  104. package/src/memories/index.ts +4 -5
  105. package/src/modes/acp/acp-agent.ts +563 -163
  106. package/src/modes/acp/acp-event-mapper.ts +9 -1
  107. package/src/modes/acp/acp-mode.ts +4 -2
  108. package/src/modes/components/agent-dashboard.ts +3 -4
  109. package/src/modes/components/diff.ts +6 -7
  110. package/src/modes/components/footer.ts +9 -29
  111. package/src/modes/components/hook-editor.ts +3 -3
  112. package/src/modes/components/hook-selector.ts +6 -1
  113. package/src/modes/components/read-tool-group.ts +6 -12
  114. package/src/modes/components/session-observer-overlay.ts +472 -0
  115. package/src/modes/components/settings-defs.ts +24 -0
  116. package/src/modes/components/status-line.ts +15 -61
  117. package/src/modes/components/tool-execution.ts +1 -1
  118. package/src/modes/components/welcome.ts +1 -1
  119. package/src/modes/controllers/btw-controller.ts +2 -2
  120. package/src/modes/controllers/command-controller.ts +4 -2
  121. package/src/modes/controllers/event-controller.ts +59 -2
  122. package/src/modes/controllers/extension-ui-controller.ts +1 -0
  123. package/src/modes/controllers/input-controller.ts +15 -8
  124. package/src/modes/controllers/selector-controller.ts +26 -0
  125. package/src/modes/index.ts +20 -2
  126. package/src/modes/interactive-mode.ts +278 -69
  127. package/src/modes/rpc/host-tools.ts +186 -0
  128. package/src/modes/rpc/rpc-client.ts +178 -13
  129. package/src/modes/rpc/rpc-mode.ts +73 -3
  130. package/src/modes/rpc/rpc-types.ts +53 -1
  131. package/src/modes/session-observer-registry.ts +146 -0
  132. package/src/modes/shared.ts +0 -42
  133. package/src/modes/theme/theme.ts +80 -8
  134. package/src/modes/types.ts +4 -2
  135. package/src/modes/utils/keybinding-matchers.ts +9 -0
  136. package/src/prompts/system/custom-system-prompt.md +5 -0
  137. package/src/prompts/system/system-prompt.md +8 -1
  138. package/src/prompts/tools/chunk-edit.md +219 -0
  139. package/src/prompts/tools/debug.md +43 -0
  140. package/src/prompts/tools/grep.md +3 -0
  141. package/src/prompts/tools/lsp.md +5 -5
  142. package/src/prompts/tools/read-chunk.md +17 -0
  143. package/src/prompts/tools/read.md +19 -5
  144. package/src/sdk.ts +216 -165
  145. package/src/secrets/index.ts +1 -1
  146. package/src/secrets/obfuscator.ts +25 -17
  147. package/src/session/agent-session.ts +381 -286
  148. package/src/session/agent-storage.ts +12 -12
  149. package/src/session/compaction/branch-summarization.ts +3 -3
  150. package/src/session/compaction/compaction.ts +5 -6
  151. package/src/session/compaction/utils.ts +3 -3
  152. package/src/session/history-storage.ts +62 -19
  153. package/src/session/messages.ts +3 -3
  154. package/src/session/session-dump-format.ts +203 -0
  155. package/src/session/session-manager.ts +15 -5
  156. package/src/session/session-storage.ts +4 -2
  157. package/src/session/streaming-output.ts +1 -1
  158. package/src/session/tool-choice-queue.ts +213 -0
  159. package/src/slash-commands/builtin-registry.ts +56 -8
  160. package/src/ssh/connection-manager.ts +2 -2
  161. package/src/ssh/sshfs-mount.ts +5 -5
  162. package/src/stt/downloader.ts +4 -4
  163. package/src/stt/recorder.ts +4 -4
  164. package/src/stt/transcriber.ts +2 -2
  165. package/src/system-prompt.ts +25 -13
  166. package/src/task/agents.ts +5 -6
  167. package/src/task/commands.ts +2 -5
  168. package/src/task/executor.ts +32 -4
  169. package/src/task/index.ts +91 -82
  170. package/src/task/template.ts +2 -2
  171. package/src/task/types.ts +25 -0
  172. package/src/task/worktree.ts +131 -149
  173. package/src/tools/ask.ts +2 -3
  174. package/src/tools/ast-edit.ts +7 -7
  175. package/src/tools/ast-grep.ts +7 -7
  176. package/src/tools/auto-generated-guard.ts +36 -41
  177. package/src/tools/await-tool.ts +2 -2
  178. package/src/tools/bash.ts +5 -23
  179. package/src/tools/browser.ts +4 -5
  180. package/src/tools/calculator.ts +2 -3
  181. package/src/tools/cancel-job.ts +2 -2
  182. package/src/tools/checkpoint.ts +3 -3
  183. package/src/tools/debug.ts +1007 -0
  184. package/src/tools/exit-plan-mode.ts +3 -3
  185. package/src/tools/fetch.ts +67 -3
  186. package/src/tools/find.ts +4 -5
  187. package/src/tools/fs-cache-invalidation.ts +5 -0
  188. package/src/tools/gemini-image.ts +13 -5
  189. package/src/tools/gh.ts +130 -308
  190. package/src/tools/grep.ts +57 -9
  191. package/src/tools/index.ts +44 -22
  192. package/src/tools/inspect-image.ts +4 -4
  193. package/src/tools/output-meta.ts +1 -1
  194. package/src/tools/python.ts +19 -6
  195. package/src/tools/read.ts +211 -146
  196. package/src/tools/render-mermaid.ts +2 -3
  197. package/src/tools/render-utils.ts +20 -6
  198. package/src/tools/renderers.ts +3 -1
  199. package/src/tools/report-tool-issue.ts +80 -0
  200. package/src/tools/resolve.ts +70 -39
  201. package/src/tools/search-tool-bm25.ts +2 -2
  202. package/src/tools/ssh.ts +2 -2
  203. package/src/tools/todo-write.ts +2 -2
  204. package/src/tools/tool-timeouts.ts +1 -0
  205. package/src/tools/write.ts +5 -6
  206. package/src/tui/tree-list.ts +3 -1
  207. package/src/utils/clipboard.ts +80 -0
  208. package/src/utils/commit-message-generator.ts +2 -3
  209. package/src/utils/edit-mode.ts +49 -0
  210. package/src/utils/external-editor.ts +11 -5
  211. package/src/utils/file-display-mode.ts +6 -5
  212. package/src/utils/file-mentions.ts +8 -7
  213. package/src/utils/git.ts +1400 -0
  214. package/src/utils/image-loading.ts +98 -0
  215. package/src/utils/title-generator.ts +2 -3
  216. package/src/utils/tools-manager.ts +6 -6
  217. package/src/web/scrapers/choosealicense.ts +1 -1
  218. package/src/web/search/index.ts +3 -3
  219. package/src/web/search/render.ts +6 -4
  220. package/src/autoresearch/command-initialize.md +0 -34
  221. package/src/commit/git/errors.ts +0 -9
  222. package/src/commit/git/index.ts +0 -210
  223. package/src/commit/git/operations.ts +0 -54
  224. package/src/patch/diff.ts +0 -433
  225. package/src/patch/index.ts +0 -888
  226. package/src/patch/parser.ts +0 -532
  227. package/src/patch/types.ts +0 -292
  228. package/src/prompts/agents/oracle.md +0 -77
  229. package/src/tools/gh-cli.ts +0 -125
  230. package/src/tools/pending-action.ts +0 -49
  231. package/src/utils/child-process.ts +0 -88
  232. package/src/utils/frontmatter.ts +0 -117
  233. package/src/utils/image-input.ts +0 -274
  234. package/src/utils/mime.ts +0 -53
  235. package/src/utils/prompt-format.ts +0 -170
@@ -9,9 +9,9 @@ import type { ImageContent, Message, Model, TextContent, ToolResultMessage } fro
9
9
  import type { Component, TUI } from "@oh-my-pi/pi-tui";
10
10
  import type { Rule } from "../../capability/rule";
11
11
  import type { ModelRegistry } from "../../config/model-registry";
12
+ import type { EditToolDetails } from "../../edit";
12
13
  import type { ExecOptions, ExecResult } from "../../exec/exec";
13
14
  import type { Theme } from "../../modes/theme/theme";
14
- import type { EditToolDetails } from "../../patch";
15
15
  import type { CompactionPreparation, CompactionResult } from "../../session/compaction";
16
16
  import type { HookMessage } from "../../session/messages";
17
17
  import type {
@@ -394,7 +394,7 @@ export interface TurnEndEvent {
394
394
  /** Event data for auto_compaction_start event. */
395
395
  export interface AutoCompactionStartEvent {
396
396
  type: "auto_compaction_start";
397
- reason: "threshold" | "overflow";
397
+ reason: "threshold" | "overflow" | "idle";
398
398
  action: "context-full" | "handoff";
399
399
  }
400
400
 
@@ -1,3 +1,4 @@
1
+ import { $which } from "@oh-my-pi/pi-utils";
1
2
  import { theme } from "../../modes/theme/theme";
2
3
  import type { DoctorCheck } from "./types";
3
4
 
@@ -12,7 +13,7 @@ export async function runDoctorChecks(): Promise<DoctorCheck[]> {
12
13
  ];
13
14
 
14
15
  for (const tool of tools) {
15
- const path = Bun.which(tool.name);
16
+ const path = $which(tool.name);
16
17
  checks.push({
17
18
  name: tool.name,
18
19
  status: path ? "ok" : "warning",
@@ -8,7 +8,7 @@ import * as fs from "node:fs/promises";
8
8
  import * as os from "node:os";
9
9
  import * as path from "node:path";
10
10
  import { isEnoent, logger } from "@oh-my-pi/pi-utils";
11
- import { $ } from "bun";
11
+ import * as git from "../../../utils/git";
12
12
 
13
13
  import type { MarketplaceCatalog, MarketplaceSourceType } from "./types";
14
14
  import { isValidNameSegment } from "./types";
@@ -274,21 +274,11 @@ export async function fetchMarketplace(source: string, cacheDir: string): Promis
274
274
  * `promoteCloneToCache` after any duplicate/drift checks pass.
275
275
  */
276
276
  async function cloneAndReadCatalog(url: string, cacheDir: string): Promise<FetchResult> {
277
- if (!Bun.which("git")) {
278
- throw new Error("git is not installed. Install git to use git-based marketplace sources.");
279
- }
280
-
281
277
  const tmpDir = path.join(cacheDir, `.tmp-clone-${Date.now()}`);
282
278
  await fs.mkdir(cacheDir, { recursive: true });
283
279
 
284
280
  logger.debug(`[marketplace] cloning ${url} → ${tmpDir}`);
285
-
286
- const result = await $`git clone --depth 1 --single-branch ${url} ${tmpDir}`.quiet().nothrow();
287
- if (result.exitCode !== 0) {
288
- await fs.rm(tmpDir, { recursive: true, force: true });
289
- const stderr = result.stderr.toString().trim();
290
- throw new Error(`git clone failed (exit ${result.exitCode}): ${stderr || "unknown error"}`);
291
- }
281
+ await git.clone(url, tmpDir);
292
282
 
293
283
  const catalogPath = path.join(tmpDir, CATALOG_RELATIVE_PATH);
294
284
  let content: string;
@@ -325,48 +315,3 @@ export async function promoteCloneToCache(tmpDir: string, cacheDir: string, name
325
315
  await fs.rename(tmpDir, finalDir);
326
316
  return finalDir;
327
317
  }
328
-
329
- /**
330
- * Clone a git repository to a target directory. Shared by fetcher (marketplace clones)
331
- * and source-resolver (plugin source clones).
332
- *
333
- * @param url - Git clone URL (HTTPS, SSH, or GitHub shorthand expanded to HTTPS)
334
- * @param targetDir - Directory to clone into (must not exist)
335
- * @param options.ref - Optional branch/tag to clone
336
- * @param options.sha - Optional commit SHA to checkout after clone
337
- */
338
- export async function cloneGitRepo(
339
- url: string,
340
- targetDir: string,
341
- options?: { ref?: string; sha?: string },
342
- ): Promise<void> {
343
- if (!Bun.which("git")) {
344
- throw new Error("git is not installed. Install git to use git-based plugin sources.");
345
- }
346
-
347
- const cloneArgs = ["git", "clone", "--depth", "1"];
348
- if (options?.ref) {
349
- cloneArgs.push("--branch", options.ref, "--single-branch");
350
- } else {
351
- cloneArgs.push("--single-branch");
352
- }
353
- cloneArgs.push(url, targetDir);
354
-
355
- logger.debug("[marketplace] cloning plugin source", { url, targetDir });
356
-
357
- const result = await $`${cloneArgs}`.quiet().nothrow();
358
- if (result.exitCode !== 0) {
359
- await fs.rm(targetDir, { recursive: true, force: true });
360
- const stderr = result.stderr.toString().trim();
361
- throw new Error(`git clone failed (exit ${result.exitCode}): ${stderr || "unknown error"}`);
362
- }
363
-
364
- // If a specific SHA is requested, checkout that commit
365
- if (options?.sha) {
366
- const checkout = await $`git -C ${targetDir} checkout ${options.sha}`.quiet().nothrow();
367
- if (checkout.exitCode !== 0) {
368
- await fs.rm(targetDir, { recursive: true, force: true });
369
- throw new Error(`Failed to checkout SHA ${options.sha} — shallow clone may not contain this commit`);
370
- }
371
- }
372
- }
@@ -14,8 +14,8 @@ import * as fs from "node:fs/promises";
14
14
  import * as path from "node:path";
15
15
 
16
16
  import { isEnoent, pathIsWithin } from "@oh-my-pi/pi-utils";
17
+ import * as git from "../../../utils/git";
17
18
 
18
- import { cloneGitRepo } from "./fetcher";
19
19
  import type { MarketplaceCatalogMetadata, MarketplacePluginEntry, PluginSource } from "./types";
20
20
 
21
21
  export interface ResolveContext {
@@ -87,7 +87,7 @@ async function resolveObjectSource(
87
87
  // { source: "url", url: "https://github.com/owner/repo.git" }
88
88
  // Despite the name, this is typically a git clone URL
89
89
  const targetDir = path.join(context.tmpDir, `plugin-${crypto.randomUUID()}`);
90
- await cloneGitRepo(source.url, targetDir, { ref: source.ref, sha: source.sha });
90
+ await git.clone(source.url, targetDir, { ref: source.ref, sha: source.sha });
91
91
  return { dir: targetDir, tempCloneRoot: targetDir };
92
92
  }
93
93
 
@@ -95,7 +95,7 @@ async function resolveObjectSource(
95
95
  // { source: "github", repo: "owner/repo" }
96
96
  const url = `https://github.com/${source.repo}.git`;
97
97
  const targetDir = path.join(context.tmpDir, `plugin-${crypto.randomUUID()}`);
98
- await cloneGitRepo(url, targetDir, { ref: source.ref, sha: source.sha });
98
+ await git.clone(url, targetDir, { ref: source.ref, sha: source.sha });
99
99
  return { dir: targetDir, tempCloneRoot: targetDir };
100
100
  }
101
101
 
@@ -106,7 +106,7 @@ async function resolveObjectSource(
106
106
  ? source.url
107
107
  : `https://github.com/${source.url}.git`;
108
108
  const cloneDir = path.join(context.tmpDir, `plugin-repo-${crypto.randomUUID()}`);
109
- await cloneGitRepo(url, cloneDir, { ref: source.ref, sha: source.sha });
109
+ await git.clone(url, cloneDir, { ref: source.ref, sha: source.sha });
110
110
 
111
111
  const subdirPath = path.resolve(cloneDir, source.path);
112
112
  if (!pathIsWithin(cloneDir, subdirPath)) {
@@ -1,10 +1,7 @@
1
1
  import type { AutocompleteItem } from "@oh-my-pi/pi-tui";
2
+ import { parseFrontmatter, prompt } from "@oh-my-pi/pi-utils";
2
3
  import { slashCommandCapability } from "../capability/slash-command";
3
- import {
4
- appendInlineArgsFallback,
5
- renderPromptTemplate,
6
- templateUsesInlineArgPlaceholders,
7
- } from "../config/prompt-templates";
4
+ import { appendInlineArgsFallback, templateUsesInlineArgPlaceholders } from "../config/prompt-templates";
8
5
  import type { SlashCommand } from "../discovery";
9
6
  import { loadCapability } from "../discovery";
10
7
  import {
@@ -14,7 +11,6 @@ import {
14
11
  } from "../slash-commands/builtin-registry";
15
12
  import { EMBEDDED_COMMAND_TEMPLATES } from "../task/commands";
16
13
  import { parseCommandArgs, substituteArgs } from "../utils/command-args";
17
- import { parseFrontmatter } from "../utils/frontmatter";
18
14
 
19
15
  export type SlashCommandSource = "extension" | "prompt" | "skill";
20
16
 
@@ -223,7 +219,7 @@ export function expandSlashCommand(text: string, fileCommands: FileSlashCommand[
223
219
  const argsText = args.join(" ");
224
220
  const usesInlineArgPlaceholders = templateUsesInlineArgPlaceholders(fileCommand.content);
225
221
  const substituted = substituteArgs(fileCommand.content, args);
226
- const rendered = renderPromptTemplate(substituted, { args, ARGUMENTS: argsText, arguments: argsText });
222
+ const rendered = prompt.render(substituted, { args, ARGUMENTS: argsText, arguments: argsText });
227
223
  return appendInlineArgsFallback(rendered, argsText, usesInlineArgPlaceholders);
228
224
  }
229
225
 
package/src/index.ts CHANGED
@@ -16,6 +16,7 @@ export type * from "./config/prompt-templates";
16
16
  export * from "./config/prompt-templates";
17
17
  export type { RetrySettings, SkillsSettings } from "./config/settings";
18
18
  export { Settings, settings } from "./config/settings";
19
+ export * from "./edit/modes/hashline";
19
20
  // Custom commands
20
21
  export type * from "./extensibility/custom-commands/types";
21
22
  export type * from "./extensibility/custom-tools";
@@ -37,7 +38,6 @@ export * from "./modes";
37
38
  export * from "./modes/components";
38
39
  // Theme utilities for custom tools
39
40
  export * from "./modes/theme/theme";
40
- export * from "./patch/hashline";
41
41
  // SDK for programmatic usage
42
42
  export * from "./sdk";
43
43
  export * from "./session/agent-session";
@@ -46,11 +46,13 @@ export * from "./session/auth-storage";
46
46
  // Compaction
47
47
  export * from "./session/compaction";
48
48
  export * from "./session/messages";
49
+ export * from "./session/session-dump-format";
49
50
  export * from "./session/session-manager";
50
51
  export * from "./task/executor";
51
52
  export type * from "./task/types";
52
53
  // Tools (detail types and utilities)
53
54
  export * from "./tools";
55
+ export * from "./utils/git";
54
56
  // UI components for extensions
55
57
  export {
56
58
  HookEditorComponent as ExtensionEditorComponent,