@gajae-code/coding-agent 0.18.10 → 0.18.12

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 (270) hide show
  1. package/CHANGELOG.md +295 -0
  2. package/dist/types/async/job-manager.d.ts +7 -3
  3. package/dist/types/async/result-formatting.d.ts +2 -0
  4. package/dist/types/autoresearch/git.d.ts +1 -1
  5. package/dist/types/capability/fs.d.ts +2 -2
  6. package/dist/types/cli/accounts-cli.d.ts +2 -2
  7. package/dist/types/cli/doctor/install-repairs.d.ts +4 -1
  8. package/dist/types/cli/install-activation.d.ts +10 -4
  9. package/dist/types/cli/public-command-errors.d.ts +1 -0
  10. package/dist/types/cli/update-cli.d.ts +14 -1
  11. package/dist/types/cli-ordinary.d.ts +2 -2
  12. package/dist/types/commands/accounts.d.ts +2 -1
  13. package/dist/types/commands/migrate.d.ts +1 -1
  14. package/dist/types/commands/sdk.d.ts +5 -0
  15. package/dist/types/commit/changelog/index.d.ts +1 -0
  16. package/dist/types/config/autorouting-tier-map.d.ts +30 -0
  17. package/dist/types/config/config-hot-reload-trust.d.ts +12 -0
  18. package/dist/types/config/config-hot-reload.d.ts +39 -0
  19. package/dist/types/config/file-lock.d.ts +8 -1
  20. package/dist/types/config/model-discovery-manager.d.ts +2 -0
  21. package/dist/types/config/model-profile-activation.d.ts +62 -6
  22. package/dist/types/config/model-registry.d.ts +56 -5
  23. package/dist/types/config/model-resolver.d.ts +2 -0
  24. package/dist/types/config/models-config-schema.d.ts +10 -0
  25. package/dist/types/config/settings-schema.d.ts +46 -3
  26. package/dist/types/config/settings.d.ts +33 -1
  27. package/dist/types/dap/config.d.ts +8 -4
  28. package/dist/types/debug/system-info.d.ts +6 -1
  29. package/dist/types/discovery/mcp-compat.d.ts +3 -1
  30. package/dist/types/edit/modes/patch.d.ts +5 -0
  31. package/dist/types/edit/modes/replace.d.ts +3 -0
  32. package/dist/types/exec/bash-executor.d.ts +12 -0
  33. package/dist/types/gjc-runtime/managed-owner-admission.d.ts +3 -0
  34. package/dist/types/gjc-runtime/session-state-lock.d.ts +2 -0
  35. package/dist/types/gjc-runtime/state-runtime.d.ts +0 -2
  36. package/dist/types/migrate/adapters/codex.d.ts +2 -1
  37. package/dist/types/migrate/adapters/index.d.ts +10 -1
  38. package/dist/types/migrate/executor.d.ts +3 -1
  39. package/dist/types/migrate/types.d.ts +15 -3
  40. package/dist/types/modes/components/settings-selector.d.ts +6 -0
  41. package/dist/types/modes/controllers/selector-controller.d.ts +2 -0
  42. package/dist/types/modes/theme/theme.d.ts +1 -0
  43. package/dist/types/runtime-mcp/content-limits.d.ts +4 -0
  44. package/dist/types/runtime-mcp/manager.d.ts +7 -0
  45. package/dist/types/runtime-mcp/plugin-mcp-name-filter.d.ts +22 -0
  46. package/dist/types/runtime-mcp/tool-bridge.d.ts +4 -0
  47. package/dist/types/sdk/broker/broker-exit.d.ts +2 -2
  48. package/dist/types/sdk/broker/broker.d.ts +7 -1
  49. package/dist/types/sdk/broker/daemon-entry.d.ts +11 -1
  50. package/dist/types/sdk/broker/doctor-restart.d.ts +1 -1
  51. package/dist/types/sdk/broker/ensure.d.ts +136 -7
  52. package/dist/types/sdk/broker/hop.d.ts +36 -0
  53. package/dist/types/sdk/broker/lifecycle-ledger.d.ts +18 -10
  54. package/dist/types/sdk/broker/lock-host-identity.d.ts +5 -0
  55. package/dist/types/sdk/broker/session-index.d.ts +4 -1
  56. package/dist/types/sdk/bus/chat-command-policy.d.ts +2 -1
  57. package/dist/types/sdk/bus/index.d.ts +23 -0
  58. package/dist/types/sdk/bus/reconciliation-store.d.ts +10 -0
  59. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +3 -1
  60. package/dist/types/sdk/cli/session-cli.d.ts +0 -1
  61. package/dist/types/sdk/host/session-runtime.d.ts +32 -0
  62. package/dist/types/sdk/prompt-deadline-flush.d.ts +42 -4
  63. package/dist/types/sdk/prompt-deadline-manager.d.ts +2 -0
  64. package/dist/types/sdk/protocol/adapter-validation.d.ts +10 -4
  65. package/dist/types/sdk/reconciliation-extensions.d.ts +1 -1
  66. package/dist/types/sdk/session-list.d.ts +1 -1
  67. package/dist/types/session/agent-session.d.ts +58 -2
  68. package/dist/types/session/internal/managed-session-scope.d.ts +2 -2
  69. package/dist/types/session/internal/managed-session-storage.d.ts +1 -1
  70. package/dist/types/session/internal/native-publish-outcome.d.ts +1 -1
  71. package/dist/types/session/messages.d.ts +5 -1
  72. package/dist/types/session/session-manager.d.ts +13 -3
  73. package/dist/types/session/startup-auth-config.d.ts +24 -2
  74. package/dist/types/session/streaming-output.d.ts +11 -0
  75. package/dist/types/session/terminal-abort.d.ts +3 -1
  76. package/dist/types/session-import/service.d.ts +1 -1
  77. package/dist/types/skill-state/workflow-mutation-guard.d.ts +7 -3
  78. package/dist/types/slash-commands/helpers/provider-auth-status.d.ts +8 -0
  79. package/dist/types/task/executor.d.ts +19 -2
  80. package/dist/types/tools/ast-edit-write-path.d.ts +10 -0
  81. package/dist/types/tools/atomic-file-write.d.ts +9 -7
  82. package/dist/types/tools/bash-allowed-prefixes.d.ts +11 -0
  83. package/dist/types/tools/descriptors.d.ts +2 -0
  84. package/dist/types/tools/fetch.d.ts +1 -1
  85. package/dist/types/tools/index.d.ts +2 -0
  86. package/dist/types/tools/python.d.ts +1 -1
  87. package/dist/types/tools/report-issue.d.ts +41 -0
  88. package/dist/types/tools/subagent.d.ts +23 -0
  89. package/dist/types/web/scrapers/types.d.ts +8 -1
  90. package/dist/types/web/search/providers/insane.d.ts +7 -1
  91. package/dist/types/web/search/providers/searxng.d.ts +5 -0
  92. package/package.json +8 -8
  93. package/scripts/build-binary.ts +2 -1
  94. package/scripts/capture-subagent-compact-panel-showcase.ts +105 -0
  95. package/scripts/generate-docs-index.ts +8 -1
  96. package/scripts/generate-sdk-operation-inventory.ts +22 -4
  97. package/src/async/job-manager.ts +356 -56
  98. package/src/async/result-formatting.ts +40 -0
  99. package/src/autoresearch/git.ts +9 -2
  100. package/src/autoresearch/prompts/prompt-setup.md +1 -1
  101. package/src/capability/fs.ts +27 -19
  102. package/src/capability/index.ts +2 -2
  103. package/src/cli/accounts-cli.ts +176 -8
  104. package/src/cli/auth-broker-cli.ts +21 -11
  105. package/src/cli/doctor/install-repairs.ts +35 -5
  106. package/src/cli/fast-help.ts +1 -1
  107. package/src/cli/install-activation.ts +47 -4
  108. package/src/cli/migrate-cli.ts +7 -5
  109. package/src/cli/public-command-errors.ts +4 -0
  110. package/src/cli/root-flags.ts +2 -2
  111. package/src/cli/stats-cli.ts +9 -5
  112. package/src/cli/update-cli.ts +224 -7
  113. package/src/cli-ordinary.ts +7 -2
  114. package/src/commands/accounts.ts +10 -5
  115. package/src/commands/migrate.ts +3 -3
  116. package/src/commands/sdk.ts +199 -42
  117. package/src/commands/ultragoal.ts +16 -8
  118. package/src/commit/changelog/index.ts +39 -1
  119. package/src/commit/message.ts +10 -3
  120. package/src/config/autorouting-tier-map.ts +30 -0
  121. package/src/config/config-hot-reload-trust.ts +148 -0
  122. package/src/config/config-hot-reload.ts +734 -0
  123. package/src/config/file-lock.ts +216 -56
  124. package/src/config/model-bindings-applier.ts +85 -47
  125. package/src/config/model-discovery-manager.ts +10 -0
  126. package/src/config/model-profile-activation.ts +716 -113
  127. package/src/config/model-registry.ts +1334 -158
  128. package/src/config/model-resolver.ts +3 -1
  129. package/src/config/models-config-schema.ts +6 -0
  130. package/src/config/settings-schema.ts +60 -3
  131. package/src/config/settings.ts +458 -24
  132. package/src/coordinator-mcp/policy.ts +26 -1
  133. package/src/crash/sanitize.ts +4 -0
  134. package/src/customization/import.ts +3 -1
  135. package/src/dap/config.ts +31 -11
  136. package/src/dap/defaults.json +1 -1
  137. package/src/debug/crash-diagnostics.ts +2 -1
  138. package/src/debug/report-bundle.ts +19 -0
  139. package/src/debug/system-info.ts +8 -3
  140. package/src/defaults/gjc/extensions/grok-cli-vendor/src/shared/base-url.ts +21 -7
  141. package/src/discovery/agents-md.ts +1 -1
  142. package/src/discovery/helpers.ts +1 -2
  143. package/src/discovery/mcp-compat.ts +120 -17
  144. package/src/edit/apply-patch/index.ts +12 -1
  145. package/src/edit/index.ts +13 -17
  146. package/src/edit/modes/patch.ts +187 -8
  147. package/src/edit/modes/replace.ts +136 -0
  148. package/src/eval/js/context-manager.ts +29 -3
  149. package/src/eval/js/worker-entry.ts +51 -18
  150. package/src/eval/py/executor.ts +14 -4
  151. package/src/eval/py/runner.py +144 -5
  152. package/src/exec/bash-executor.ts +81 -4
  153. package/src/exec/bash-shell-guardian.ts +4 -1
  154. package/src/exec/bash-shell-supervisor.ts +8 -4
  155. package/src/exec/isolated-shell.ts +5 -1
  156. package/src/export/html/index.ts +46 -6
  157. package/src/extensibility/custom-tools/wrapper.ts +3 -1
  158. package/src/extensibility/extensions/loader.ts +8 -1
  159. package/src/extensibility/plugins/marketplace/fetcher.ts +2 -2
  160. package/src/gjc-runtime/gc-runtime.ts +33 -6
  161. package/src/gjc-runtime/launch-tmux.ts +7 -2
  162. package/src/gjc-runtime/launch-worktree.test.ts +148 -0
  163. package/src/gjc-runtime/launch-worktree.ts +101 -14
  164. package/src/gjc-runtime/managed-owner-admission.ts +46 -2
  165. package/src/gjc-runtime/session-resolution.ts +38 -6
  166. package/src/gjc-runtime/session-state-lock.ts +59 -14
  167. package/src/gjc-runtime/state-runtime.ts +23 -19
  168. package/src/hooks/native-skill-hook.ts +14 -11
  169. package/src/internal-urls/docs-index.generated.ts +14 -13
  170. package/src/internal-urls/local-protocol.ts +142 -8
  171. package/src/lsp/index.ts +29 -0
  172. package/src/lsp/workspace-path.ts +23 -0
  173. package/src/migrate/action-planner.ts +57 -0
  174. package/src/migrate/adapters/claude-code.ts +23 -4
  175. package/src/migrate/adapters/codex.ts +22 -4
  176. package/src/migrate/adapters/index.ts +22 -4
  177. package/src/migrate/adapters/opencode.ts +6 -1
  178. package/src/migrate/executor.ts +84 -7
  179. package/src/migrate/report.ts +19 -2
  180. package/src/migrate/types.ts +14 -4
  181. package/src/modes/DESIGN.md +51 -0
  182. package/src/modes/acp/permission-mode.ts +18 -1
  183. package/src/modes/components/assistant-message.ts +55 -1
  184. package/src/modes/components/settings-selector.ts +103 -37
  185. package/src/modes/controllers/command-controller.ts +38 -2
  186. package/src/modes/controllers/plan-mode-controller.ts +17 -7
  187. package/src/modes/controllers/selector-controller.ts +62 -6
  188. package/src/modes/interactive-mode.ts +68 -0
  189. package/src/modes/theme/theme.ts +15 -0
  190. package/src/prompts/tools/debug.md +1 -1
  191. package/src/prompts/tools/read.md +1 -1
  192. package/src/prompts/tools/report-issue.md +13 -0
  193. package/src/prompts/tools/task.md +1 -1
  194. package/src/runtime-credential-selector.ts +2 -2
  195. package/src/runtime-mcp/content-limits.ts +7 -0
  196. package/src/runtime-mcp/manager-pool.test.ts +5 -4
  197. package/src/runtime-mcp/manager.ts +32 -0
  198. package/src/runtime-mcp/oauth-flow.ts +32 -6
  199. package/src/runtime-mcp/plugin-mcp-name-filter.ts +62 -0
  200. package/src/runtime-mcp/render.ts +16 -1
  201. package/src/runtime-mcp/tool-bridge.ts +126 -17
  202. package/src/sdk/broker/broker-exit.ts +8 -5
  203. package/src/sdk/broker/broker.ts +342 -82
  204. package/src/sdk/broker/daemon-entry.ts +338 -116
  205. package/src/sdk/broker/doctor-restart.ts +2 -1
  206. package/src/sdk/broker/ensure.ts +1143 -265
  207. package/src/sdk/broker/hop.ts +274 -0
  208. package/src/sdk/broker/lifecycle-ledger.ts +35 -11
  209. package/src/sdk/broker/lock-host-identity.ts +29 -0
  210. package/src/sdk/broker/session-index.ts +62 -12
  211. package/src/sdk/bus/chat-command-policy.ts +16 -3
  212. package/src/sdk/bus/index.ts +52 -21
  213. package/src/sdk/bus/reconciliation-store.ts +201 -8
  214. package/src/sdk/bus/telegram-daemon-contract.ts +3 -1
  215. package/src/sdk/cli/session-cli.ts +21 -6
  216. package/src/sdk/host/session-runtime.test.ts +118 -23
  217. package/src/sdk/host/session-runtime.ts +352 -47
  218. package/src/sdk/lifecycle/service.ts +1 -0
  219. package/src/sdk/prompt-deadline-flush.ts +78 -5
  220. package/src/sdk/prompt-deadline-manager.ts +68 -14
  221. package/src/sdk/protocol/adapter-validation.ts +53 -11
  222. package/src/sdk/protocol/operation-inventory.generated.json +101 -2
  223. package/src/sdk/reconciliation-extensions.ts +1 -0
  224. package/src/sdk/session-list.ts +1 -0
  225. package/src/sdk/session.ts +114 -61
  226. package/src/session/agent-session.ts +1043 -81
  227. package/src/session/internal/managed-session-scope.ts +126 -39
  228. package/src/session/internal/managed-session-storage.ts +14 -11
  229. package/src/session/internal/native-publish-outcome.ts +5 -1
  230. package/src/session/messages.ts +47 -6
  231. package/src/session/session-manager.ts +236 -14
  232. package/src/session/startup-auth-config.ts +116 -8
  233. package/src/session/streaming-output.ts +262 -4
  234. package/src/session/terminal-abort.ts +14 -2
  235. package/src/session-import/service.ts +1 -0
  236. package/src/skill-state/workflow-mutation-guard.ts +491 -32
  237. package/src/slash-commands/builtin-registry.ts +15 -3
  238. package/src/slash-commands/helpers/credential-switch.ts +10 -5
  239. package/src/slash-commands/helpers/provider-auth-status.ts +456 -0
  240. package/src/task/executor.ts +103 -12
  241. package/src/task/index.ts +389 -175
  242. package/src/tools/ast-edit-write-path.ts +64 -0
  243. package/src/tools/ast-edit.ts +18 -1
  244. package/src/tools/atomic-file-write.ts +46 -15
  245. package/src/tools/auto-generated-guard.ts +3 -0
  246. package/src/tools/bash-allowed-prefixes.ts +153 -5
  247. package/src/tools/bash-interactive.ts +14 -2
  248. package/src/tools/bash.ts +14 -0
  249. package/src/tools/debug.ts +7 -6
  250. package/src/tools/descriptors.test.ts +44 -0
  251. package/src/tools/descriptors.ts +34 -2
  252. package/src/tools/fetch.ts +3 -2
  253. package/src/tools/index.ts +2 -0
  254. package/src/tools/output-meta.ts +23 -2
  255. package/src/tools/python.ts +1 -1
  256. package/src/tools/read.ts +17 -35
  257. package/src/tools/report-issue.ts +184 -0
  258. package/src/tools/subagent-render.ts +114 -12
  259. package/src/tools/subagent.ts +108 -1
  260. package/src/tools/todo-write.ts +41 -3
  261. package/src/tools/tool-catalog.generated.ts +31 -3
  262. package/src/tools/write.ts +35 -3
  263. package/src/utils/commit-message-generator.ts +9 -2
  264. package/src/utils/file-mentions.ts +29 -1
  265. package/src/utils/title-generator.ts +7 -2
  266. package/src/web/scrapers/index.ts +3 -1
  267. package/src/web/scrapers/types.ts +8 -0
  268. package/src/web/scrapers/youtube.ts +3 -2
  269. package/src/web/search/providers/insane.ts +91 -28
  270. package/src/web/search/providers/searxng.ts +62 -10
@@ -12,6 +12,7 @@
12
12
  */
13
13
  import type { AuthStorage } from "@gajae-code/ai/core";
14
14
  import type { SearchResponse, SearchSource } from "../../../web/search/types";
15
+ import type { AddressResolver } from "../../insane/url-guard";
15
16
  import type { SearchParams } from "./base";
16
17
  import { SearchProvider } from "./base";
17
18
  export interface InsaneRouteAttempt {
@@ -35,13 +36,18 @@ interface RouteFailure {
35
36
  attempts: InsaneRouteAttempt[];
36
37
  }
37
38
  type RouteResult = RouteSuccess | RouteFailure | null;
38
- export declare function routeInsanePublicUrl(rawUrl: string, signal?: AbortSignal): Promise<RouteResult>;
39
+ export declare function routeInsanePublicUrl(rawUrl: string, signal?: AbortSignal, resolverOption?: {
40
+ resolver?: AddressResolver;
41
+ }): Promise<RouteResult>;
39
42
  /** Execute safe Insane Search public-route discovery. */
40
43
  export declare function searchInsane(params: {
41
44
  query: string;
42
45
  num_results?: number;
43
46
  recency?: "day" | "week" | "month" | "year";
44
47
  signal?: AbortSignal;
48
+ resolverOption?: {
49
+ resolver?: AddressResolver;
50
+ };
45
51
  }): Promise<SearchResponse>;
46
52
  /** Keyless provider that ports safe upstream public-route fallbacks only. */
47
53
  export declare class InsaneProvider extends SearchProvider {
@@ -22,6 +22,11 @@
22
22
  * SEARXNG_BASIC_USERNAME - Optional RFC 7617 Basic auth username
23
23
  * SEARXNG_BASIC_PASSWORD - Optional RFC 7617 Basic auth password
24
24
  *
25
+ * A project settings endpoint must not receive a credential that exists only in
26
+ * the operator environment. The project file can still authenticate with a
27
+ * credential it sets itself, and an operator endpoint still receives an
28
+ * operator environment credential.
29
+ *
25
30
  * Reference: https://docs.searxng.org/dev/search_api.html
26
31
  */
27
32
  import type { AuthStorage } from "@gajae-code/ai/core";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@gajae-code/coding-agent",
4
- "version": "0.18.10",
4
+ "version": "0.18.12",
5
5
  "description": "Gajae Code CLI with read, bash, edit, write tools and session management",
6
6
  "homepage": "https://gajae-code.com",
7
7
  "author": "Yeachan-Heo and Gajae Code Contributors",
@@ -32,7 +32,7 @@
32
32
  "build": "bun run verify:markit-vendor && bun scripts/build-binary.ts",
33
33
  "check": "bun run verify:markit-vendor && biome check . && bun run check:types",
34
34
  "check:runtime": "bun run generate-hotkeys-docs --check && bun run verify:sdk-canonicalization",
35
- "check:types": "tsc -p tsconfig.json --noEmit",
35
+ "check:types": "bun run generate-docs-index && tsc -p tsconfig.json --noEmit",
36
36
  "check:autorouting-map": "bun scripts/check-autorouting-tier-map.ts",
37
37
  "lint": "biome lint .",
38
38
  "test": "bun test",
@@ -57,12 +57,12 @@
57
57
  "@agentclientprotocol/sdk": "1.3.0",
58
58
  "@babel/parser": "^7.29.3",
59
59
  "@mozilla/readability": "^0.6.0",
60
- "@gajae-code/stats": "0.18.10",
61
- "@gajae-code/agent-core": "0.18.10",
62
- "@gajae-code/ai": "0.18.10",
63
- "@gajae-code/natives": "0.18.10",
64
- "@gajae-code/tui": "0.18.10",
65
- "@gajae-code/utils": "0.18.10",
60
+ "@gajae-code/stats": "0.18.12",
61
+ "@gajae-code/agent-core": "0.18.12",
62
+ "@gajae-code/ai": "0.18.12",
63
+ "@gajae-code/natives": "0.18.12",
64
+ "@gajae-code/tui": "0.18.12",
65
+ "@gajae-code/utils": "0.18.12",
66
66
  "@puppeteer/browsers": "^2.13.0",
67
67
  "@types/turndown": "5.0.6",
68
68
  "@xterm/headless": "^6.0.0",
@@ -13,7 +13,8 @@ function shouldAdhocSignDarwinBinary(): boolean {
13
13
  }
14
14
 
15
15
  async function runCommand(command: string[], env: NodeJS.ProcessEnv = Bun.env): Promise<void> {
16
- const proc = Bun.spawn(command, {
16
+ const argv = command[0] === "bun" ? [process.execPath, ...command.slice(1)] : command;
17
+ const proc = Bun.spawn(argv, {
17
18
  cwd: packageDir,
18
19
  env,
19
20
  stdout: "inherit",
@@ -0,0 +1,105 @@
1
+ import * as fs from "node:fs/promises";
2
+ import * as path from "node:path";
3
+ import {
4
+ renderSubagentCompactPanelShowcase,
5
+ SUBAGENT_COMPACT_PANEL_FIXED_NOW_MS,
6
+ SUBAGENT_COMPACT_PANEL_SHOWCASE_ENTRIES,
7
+ type SubagentCompactPanelShowcaseEntry,
8
+ } from "../test/fixtures/tui/subagent-compact-panel-showcase";
9
+ import { ansiToHtml } from "./capture-sticky-viewport-showcase";
10
+
11
+ const CANONICAL_COMMAND =
12
+ "bun packages/coding-agent/scripts/capture-subagent-compact-panel-showcase.ts --out .gjc/qa/subagent-compact-panel-<run>";
13
+ const CAPTURE_TOOL_VERSION = "subagent-compact-panel-showcase-v1";
14
+
15
+ interface ArtifactFile {
16
+ path: string;
17
+ sha256: string;
18
+ byteLength: number;
19
+ }
20
+
21
+ function usage(): never {
22
+ throw new Error(`Usage: ${CANONICAL_COMMAND}`);
23
+ }
24
+
25
+ function outputPath(args: string[]): string {
26
+ if (args.length !== 2 || args[0] !== "--out" || !args[1]) usage();
27
+ return path.resolve(args[1]);
28
+ }
29
+
30
+ function json(value: unknown): string {
31
+ return `${JSON.stringify(value, null, 2)}\n`;
32
+ }
33
+
34
+ function sha256(value: string): string {
35
+ return new Bun.CryptoHasher("sha256").update(value).digest("hex");
36
+ }
37
+
38
+ function entryKey(entry: SubagentCompactPanelShowcaseEntry): string {
39
+ return `${entry.stateId}/${entry.columns}x${entry.rows}/${entry.renderMode}`;
40
+ }
41
+
42
+ async function writeArtifact(root: string, relativePath: string, content: string): Promise<ArtifactFile> {
43
+ const target = path.join(root, relativePath);
44
+ await fs.mkdir(path.dirname(target), { recursive: true });
45
+ await Bun.write(target, content);
46
+ return { path: relativePath, sha256: sha256(content), byteLength: Buffer.byteLength(content, "utf8") };
47
+ }
48
+
49
+ async function main(): Promise<void> {
50
+ const root = outputPath(process.argv.slice(2));
51
+ await fs.mkdir(root, { recursive: true });
52
+ const entries = [];
53
+ const capturedAt = new Date().toISOString();
54
+ for (const entry of SUBAGENT_COMPACT_PANEL_SHOWCASE_ENTRIES) {
55
+ const key = entryKey(entry);
56
+ const rendered = await renderSubagentCompactPanelShowcase(entry);
57
+ for (const viewport of rendered.viewports) {
58
+ const viewportKey = `${key}/${viewport.scroll}`;
59
+ const metadata = json({
60
+ entryKey: viewportKey,
61
+ commandOrReplaySource: CANONICAL_COMMAND,
62
+ fixtureSource: "packages/coding-agent/test/fixtures/tui/subagent-compact-panel-showcase.ts",
63
+ toolVersion: CAPTURE_TOOL_VERSION,
64
+ captureMode: "fixture",
65
+ capturedAt,
66
+ terminal: { columns: entry.columns, rows: entry.rows },
67
+ renderMode: entry.renderMode,
68
+ fontRenderingAssumptions: "red-claw truecolor theme; HTML uses a monospace terminal fallback stack.",
69
+ wrappingPolicy:
70
+ "Real subagentToolRenderer output at the recorded terminal-cell width; lines are truncated by the renderer, never wrapped.",
71
+ fixtureClockTimestamp: new Date(SUBAGENT_COMPACT_PANEL_FIXED_NOW_MS).toISOString(),
72
+ panelLines: rendered.panelLines,
73
+ viewportOverflowRows: rendered.viewportOverflowRows,
74
+ scroll: { position: viewport.scroll, firstRow: viewport.firstRow },
75
+ });
76
+ const files = [
77
+ await writeArtifact(root, `${viewportKey}/terminal.txt`, viewport.terminalText),
78
+ await writeArtifact(root, `${viewportKey}/terminal-ansi.txt`, viewport.terminalAnsiText),
79
+ await writeArtifact(root, `${viewportKey}/terminal.html`, ansiToHtml(viewport.terminalAnsiText)),
80
+ await writeArtifact(root, `${viewportKey}/metadata.json`, metadata),
81
+ ];
82
+ entries.push({
83
+ key: viewportKey,
84
+ stateId: entry.stateId,
85
+ viewport: { columns: entry.columns, rows: entry.rows },
86
+ renderMode: entry.renderMode,
87
+ scroll: viewport.scroll,
88
+ panelLines: rendered.panelLines,
89
+ viewportOverflowRows: rendered.viewportOverflowRows,
90
+ files,
91
+ });
92
+ }
93
+ }
94
+ await writeArtifact(
95
+ root,
96
+ "manifest.json",
97
+ json({ tool: CAPTURE_TOOL_VERSION, command: CANONICAL_COMMAND, capturedAt, entryCount: entries.length, entries }),
98
+ );
99
+ process.stdout.write(`Captured ${entries.length} subagent compact panel showcase entries at ${root}\n`);
100
+ }
101
+
102
+ void main().catch(error => {
103
+ process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
104
+ process.exit(1);
105
+ });
@@ -68,5 +68,12 @@ const output = [
68
68
  "",
69
69
  ].join("\n");
70
70
 
71
- await Bun.write(outputPath, output);
71
+ // Workspace checks run concurrently; publish only complete modules to readers.
72
+ const temporaryPath = `${outputPath}.${process.pid}.tmp`;
73
+ try {
74
+ await Bun.write(temporaryPath, output);
75
+ await fs.rename(temporaryPath, outputPath);
76
+ } finally {
77
+ await fs.rm(temporaryPath, { force: true });
78
+ }
72
79
  process.stderr.write(`Generated ${path.relative(process.cwd(), outputPath)} (${entries.length} docs)\n`);
@@ -25,6 +25,8 @@ const LOCKED_EXCLUSIONS: Readonly<Record<string, string>> = {
25
25
  "internal terminal-abort fencing seam, threaded via terminalAbortSeams; not a user-facing SDK control seam",
26
26
  "agent_session:pendingToolExecutions":
27
27
  "internal read-only run-resource-ledger view, threaded via terminalAbortSeams so the prompt deadline can find a tool-call boundary; not a user-facing SDK control seam",
28
+ "agent_session:markProfileRoleOverrideManual":
29
+ "internal profile role-layer ownership tracking after explicit user assignments; not a user-facing SDK control seam",
28
30
  "slash_command:routing":
29
31
  "visual/local-only autorouting settings toggle and smart-routing panel entry, not a user-facing SDK control seam",
30
32
  "slash_command:mcp":
@@ -79,6 +81,26 @@ const LOCKED_EXCLUSIONS: Readonly<Record<string, string>> = {
79
81
  "internal terminal-abort steering snapshot cleanup, not a user-facing SDK control seam",
80
82
  "agent_session:getConfiguredModelChainState":
81
83
  "internal model-profile transaction snapshot, not a user-facing SDK control seam",
84
+ "agent_session:setUnavailableModelProfile":
85
+ "internal session-scoped startup-profile recovery marker, not a user-facing SDK control seam",
86
+ "agent_session:getUnavailableModelProfile":
87
+ "internal session-scoped startup-profile recovery status for UI rendering, not a public SDK operation",
88
+ "agent_session:getConfigurationPaths":
89
+ "internal config hot-reload path identity projection, not a user-facing SDK control seam",
90
+ "agent_session:validateConfiguration":
91
+ "internal read-only config hot-reload preflight, not an independent SDK operation",
92
+ "agent_session:reloadConfiguration":
93
+ "internal transactional config hot-reload publication, not a user-facing SDK control seam",
94
+ "agent_session:getProfileInstalledOverrideState":
95
+ "internal model-profile activation rollback snapshot, not a user-facing SDK control seam",
96
+ "agent_session:restoreProfileInstalledOverrideState":
97
+ "internal model-profile activation rollback restoration, not a user-facing SDK control seam",
98
+ "agent_session:prepareModelSelectionForProfileActivation":
99
+ "internal staged model-selection preparation for profile activation, not a user-facing SDK control seam",
100
+ "agent_session:commitPreparedProfileModelSelection":
101
+ "internal model-selection commit for profile activation, not a user-facing SDK control seam",
102
+ "agent_session:finishPreparedProfileModelSelection":
103
+ "internal post-commit model-selection refresh for profile activation, not a user-facing SDK control seam",
82
104
  "agent_session:getDefaultFallbackRuntimeState":
83
105
  "internal model-profile transaction snapshot, not a user-facing SDK control seam",
84
106
  "agent_session:restoreDefaultFallbackRuntimeState":
@@ -327,10 +349,6 @@ const LOCKED_EXCLUSIONS: Readonly<Record<string, string>> = {
327
349
  "internal profile-derived eager delegation synchronization, not a user-facing SDK control seam",
328
350
  "agent_session:submitUserMessage":
329
351
  "public in-process embedder lifecycle API; direct handle surface, not an SDK transport operation",
330
- "agent_session:setUnavailableModelProfile":
331
- "internal session-scoped unavailable profile tracking; mutated by the session lifecycle on model-load failure, not a public SDK control seam",
332
- "agent_session:getUnavailableModelProfile":
333
- "internal session-scoped unavailable profile query for UI status rendering; not a public SDK operation",
334
352
  };
335
353
  /** Maps reviewed source seams to registry SDK operation IDs. */
336
354
  const SEAM_TO_SDK: Readonly<Record<string, string>> = {