@gajae-code/coding-agent 0.2.4 → 0.2.5

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 (179) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +1 -1
  3. package/dist/types/async/job-manager.d.ts +61 -0
  4. package/dist/types/config/settings-schema.d.ts +7 -3
  5. package/dist/types/config/settings.d.ts +1 -1
  6. package/dist/types/discovery/helpers.d.ts +1 -0
  7. package/dist/types/exec/bash-executor.d.ts +8 -1
  8. package/dist/types/gjc-runtime/restricted-role-agent-bash.d.ts +2 -0
  9. package/dist/types/modes/acp/acp-client-bridge.d.ts +1 -1
  10. package/dist/types/modes/components/skill-hud/render.d.ts +1 -1
  11. package/dist/types/modes/interactive-mode.d.ts +1 -0
  12. package/dist/types/modes/theme/defaults/index.d.ts +45 -9477
  13. package/dist/types/modes/theme/theme.d.ts +1 -5
  14. package/dist/types/modes/types.d.ts +1 -0
  15. package/dist/types/sdk.d.ts +2 -0
  16. package/dist/types/session/streaming-output.d.ts +11 -0
  17. package/dist/types/skill-state/active-state.d.ts +1 -0
  18. package/dist/types/task/types.d.ts +1 -0
  19. package/dist/types/tools/bash-allowed-prefixes.d.ts +5 -0
  20. package/dist/types/tools/bash.d.ts +24 -0
  21. package/dist/types/tools/cron.d.ts +110 -0
  22. package/dist/types/tools/index.d.ts +4 -0
  23. package/dist/types/tools/monitor.d.ts +54 -0
  24. package/dist/types/web/search/index.d.ts +1 -0
  25. package/dist/types/web/search/provider.d.ts +11 -4
  26. package/dist/types/web/search/providers/duckduckgo.d.ts +57 -0
  27. package/dist/types/web/search/types.d.ts +1 -1
  28. package/package.json +7 -7
  29. package/src/async/job-manager.ts +224 -0
  30. package/src/cli/agents-cli.ts +3 -0
  31. package/src/config/settings-schema.ts +8 -2
  32. package/src/config/settings.ts +44 -7
  33. package/src/defaults/gjc/skills/deep-interview/SKILL.md +9 -2
  34. package/src/defaults/gjc/skills/ralplan/SKILL.md +8 -4
  35. package/src/discovery/helpers.ts +5 -0
  36. package/src/eval/js/shared/rewrite-imports.ts +1 -2
  37. package/src/exec/bash-executor.ts +20 -9
  38. package/src/gjc-runtime/ralplan-runtime.ts +2 -0
  39. package/src/gjc-runtime/restricted-role-agent-bash.ts +5 -0
  40. package/src/hooks/skill-state.ts +1 -1
  41. package/src/internal-urls/docs-index.generated.ts +5 -3
  42. package/src/lsp/render.ts +1 -1
  43. package/src/modes/acp/acp-agent.ts +1 -1
  44. package/src/modes/acp/acp-client-bridge.ts +1 -1
  45. package/src/modes/components/agent-dashboard.ts +1 -1
  46. package/src/modes/components/diff.ts +2 -2
  47. package/src/modes/components/skill-hud/render.ts +7 -2
  48. package/src/modes/controllers/input-controller.ts +10 -2
  49. package/src/modes/controllers/selector-controller.ts +1 -1
  50. package/src/modes/interactive-mode.ts +20 -2
  51. package/src/modes/theme/defaults/index.ts +0 -196
  52. package/src/modes/theme/theme.ts +35 -35
  53. package/src/modes/types.ts +1 -0
  54. package/src/prompts/agents/architect.md +5 -1
  55. package/src/prompts/agents/critic.md +5 -1
  56. package/src/prompts/agents/frontmatter.md +1 -0
  57. package/src/prompts/agents/planner.md +5 -1
  58. package/src/prompts/tools/bash.md +9 -0
  59. package/src/prompts/tools/cron.md +25 -0
  60. package/src/prompts/tools/monitor.md +30 -0
  61. package/src/runtime-mcp/oauth-flow.ts +4 -2
  62. package/src/sdk.ts +3 -0
  63. package/src/session/agent-session.ts +16 -5
  64. package/src/session/streaming-output.ts +21 -0
  65. package/src/skill-state/active-state.ts +163 -12
  66. package/src/task/agents.ts +1 -0
  67. package/src/task/executor.ts +1 -0
  68. package/src/task/types.ts +1 -0
  69. package/src/tools/bash-allowed-prefixes.ts +169 -0
  70. package/src/tools/bash.ts +190 -29
  71. package/src/tools/browser/tab-worker.ts +1 -1
  72. package/src/tools/cron.ts +665 -0
  73. package/src/tools/index.ts +20 -2
  74. package/src/tools/monitor.ts +136 -0
  75. package/src/vim/engine.ts +3 -3
  76. package/src/web/search/index.ts +31 -18
  77. package/src/web/search/provider.ts +57 -12
  78. package/src/web/search/providers/duckduckgo.ts +279 -0
  79. package/src/web/search/types.ts +2 -0
  80. package/src/modes/theme/dark.json +0 -95
  81. package/src/modes/theme/defaults/alabaster.json +0 -93
  82. package/src/modes/theme/defaults/amethyst.json +0 -96
  83. package/src/modes/theme/defaults/anthracite.json +0 -93
  84. package/src/modes/theme/defaults/basalt.json +0 -91
  85. package/src/modes/theme/defaults/birch.json +0 -95
  86. package/src/modes/theme/defaults/dark-abyss.json +0 -91
  87. package/src/modes/theme/defaults/dark-arctic.json +0 -104
  88. package/src/modes/theme/defaults/dark-aurora.json +0 -95
  89. package/src/modes/theme/defaults/dark-catppuccin.json +0 -107
  90. package/src/modes/theme/defaults/dark-cavern.json +0 -91
  91. package/src/modes/theme/defaults/dark-copper.json +0 -95
  92. package/src/modes/theme/defaults/dark-cosmos.json +0 -90
  93. package/src/modes/theme/defaults/dark-cyberpunk.json +0 -102
  94. package/src/modes/theme/defaults/dark-dracula.json +0 -98
  95. package/src/modes/theme/defaults/dark-eclipse.json +0 -91
  96. package/src/modes/theme/defaults/dark-ember.json +0 -95
  97. package/src/modes/theme/defaults/dark-equinox.json +0 -90
  98. package/src/modes/theme/defaults/dark-forest.json +0 -96
  99. package/src/modes/theme/defaults/dark-github.json +0 -105
  100. package/src/modes/theme/defaults/dark-gruvbox.json +0 -112
  101. package/src/modes/theme/defaults/dark-lavender.json +0 -95
  102. package/src/modes/theme/defaults/dark-lunar.json +0 -89
  103. package/src/modes/theme/defaults/dark-midnight.json +0 -95
  104. package/src/modes/theme/defaults/dark-monochrome.json +0 -94
  105. package/src/modes/theme/defaults/dark-monokai.json +0 -98
  106. package/src/modes/theme/defaults/dark-nebula.json +0 -90
  107. package/src/modes/theme/defaults/dark-nord.json +0 -97
  108. package/src/modes/theme/defaults/dark-ocean.json +0 -101
  109. package/src/modes/theme/defaults/dark-one.json +0 -100
  110. package/src/modes/theme/defaults/dark-poimandres.json +0 -141
  111. package/src/modes/theme/defaults/dark-rainforest.json +0 -91
  112. package/src/modes/theme/defaults/dark-reef.json +0 -91
  113. package/src/modes/theme/defaults/dark-retro.json +0 -92
  114. package/src/modes/theme/defaults/dark-rose-pine.json +0 -96
  115. package/src/modes/theme/defaults/dark-sakura.json +0 -95
  116. package/src/modes/theme/defaults/dark-slate.json +0 -95
  117. package/src/modes/theme/defaults/dark-solarized.json +0 -97
  118. package/src/modes/theme/defaults/dark-solstice.json +0 -90
  119. package/src/modes/theme/defaults/dark-starfall.json +0 -91
  120. package/src/modes/theme/defaults/dark-sunset.json +0 -99
  121. package/src/modes/theme/defaults/dark-swamp.json +0 -90
  122. package/src/modes/theme/defaults/dark-synthwave.json +0 -103
  123. package/src/modes/theme/defaults/dark-taiga.json +0 -91
  124. package/src/modes/theme/defaults/dark-terminal.json +0 -95
  125. package/src/modes/theme/defaults/dark-tokyo-night.json +0 -101
  126. package/src/modes/theme/defaults/dark-tundra.json +0 -91
  127. package/src/modes/theme/defaults/dark-twilight.json +0 -91
  128. package/src/modes/theme/defaults/dark-volcanic.json +0 -91
  129. package/src/modes/theme/defaults/graphite.json +0 -92
  130. package/src/modes/theme/defaults/light-arctic.json +0 -107
  131. package/src/modes/theme/defaults/light-aurora-day.json +0 -91
  132. package/src/modes/theme/defaults/light-canyon.json +0 -91
  133. package/src/modes/theme/defaults/light-catppuccin.json +0 -106
  134. package/src/modes/theme/defaults/light-cirrus.json +0 -90
  135. package/src/modes/theme/defaults/light-coral.json +0 -95
  136. package/src/modes/theme/defaults/light-cyberpunk.json +0 -96
  137. package/src/modes/theme/defaults/light-dawn.json +0 -90
  138. package/src/modes/theme/defaults/light-dunes.json +0 -91
  139. package/src/modes/theme/defaults/light-eucalyptus.json +0 -95
  140. package/src/modes/theme/defaults/light-forest.json +0 -100
  141. package/src/modes/theme/defaults/light-frost.json +0 -95
  142. package/src/modes/theme/defaults/light-github.json +0 -115
  143. package/src/modes/theme/defaults/light-glacier.json +0 -91
  144. package/src/modes/theme/defaults/light-gruvbox.json +0 -108
  145. package/src/modes/theme/defaults/light-haze.json +0 -90
  146. package/src/modes/theme/defaults/light-honeycomb.json +0 -95
  147. package/src/modes/theme/defaults/light-lagoon.json +0 -91
  148. package/src/modes/theme/defaults/light-lavender.json +0 -95
  149. package/src/modes/theme/defaults/light-meadow.json +0 -91
  150. package/src/modes/theme/defaults/light-mint.json +0 -95
  151. package/src/modes/theme/defaults/light-monochrome.json +0 -101
  152. package/src/modes/theme/defaults/light-ocean.json +0 -99
  153. package/src/modes/theme/defaults/light-one.json +0 -99
  154. package/src/modes/theme/defaults/light-opal.json +0 -91
  155. package/src/modes/theme/defaults/light-orchard.json +0 -91
  156. package/src/modes/theme/defaults/light-paper.json +0 -95
  157. package/src/modes/theme/defaults/light-poimandres.json +0 -141
  158. package/src/modes/theme/defaults/light-prism.json +0 -90
  159. package/src/modes/theme/defaults/light-retro.json +0 -98
  160. package/src/modes/theme/defaults/light-sand.json +0 -95
  161. package/src/modes/theme/defaults/light-savanna.json +0 -91
  162. package/src/modes/theme/defaults/light-solarized.json +0 -102
  163. package/src/modes/theme/defaults/light-soleil.json +0 -90
  164. package/src/modes/theme/defaults/light-sunset.json +0 -99
  165. package/src/modes/theme/defaults/light-synthwave.json +0 -98
  166. package/src/modes/theme/defaults/light-tokyo-night.json +0 -111
  167. package/src/modes/theme/defaults/light-wetland.json +0 -91
  168. package/src/modes/theme/defaults/light-zenith.json +0 -89
  169. package/src/modes/theme/defaults/limestone.json +0 -94
  170. package/src/modes/theme/defaults/mahogany.json +0 -97
  171. package/src/modes/theme/defaults/marble.json +0 -93
  172. package/src/modes/theme/defaults/obsidian.json +0 -91
  173. package/src/modes/theme/defaults/onyx.json +0 -91
  174. package/src/modes/theme/defaults/pearl.json +0 -93
  175. package/src/modes/theme/defaults/porcelain.json +0 -91
  176. package/src/modes/theme/defaults/quartz.json +0 -96
  177. package/src/modes/theme/defaults/sandstone.json +0 -95
  178. package/src/modes/theme/defaults/titanium.json +0 -90
  179. package/src/modes/theme/light.json +0 -93
package/CHANGELOG.md CHANGED
@@ -2,6 +2,22 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.2.5] - 2026-06-02
6
+
7
+ ### Added
8
+
9
+ - Added Claude Code parity `monitor` plus `CronCreate`, `CronList`, and `CronDelete` tools with frozen upstream schema fixtures, inline scheduling, background output monitoring, and ACP permission coverage.
10
+
11
+ ### Changed
12
+
13
+ - Pruned bundled built-in themes to `red-claw` and `blue-crab`, with `blue-crab` now the default light-appearance theme.
14
+ - Clarified ralplan role-agent handoff guidance so Planner/Architect/Critic return compact artifact receipts after `gjc ralplan --write --json` instead of duplicating full persisted verdict markdown into the parent context.
15
+ - Made `web_search` permissionless by default with a keyless DuckDuckGo fallback, active-model-gated native provider selection, and explicit-only legacy provider selection so custom providers no longer auto-hit stray OpenAI/Codex OAuth credentials.
16
+
17
+ ### Fixed
18
+
19
+ - Fixed the skill HUD rail showing already-handed-off planning workflows so it renders only the currently-active stage. Handoffs now supersede every same-session-scope row of the caller and callee skills (not just the exact `skill::session_id` key), the visible-state read collapses duplicate same-skill rows to the most-recent one (so a handoff demotion drops a stale `active:true` row and on-disk state self-heals), and the HUD renderer collapses the `deep-interview → ralplan → ultragoal` pipeline to its most-recent stage. Activating a later stage (e.g. `gjc ultragoal` after ralplan) now supersedes the earlier one even when the activation path does not run the `handoff` verb, while `team` still coexists with ultragoal.
20
+
5
21
  ## [0.2.4] - 2026-06-02
6
22
 
7
23
  ### Added
@@ -40,6 +56,7 @@
40
56
  ### Fixed
41
57
 
42
58
  - Enforced the deep-interview phase boundary so active interviews block mutation tools until a handoff/spec is produced.
59
+ - Allowed read-only `architect`, `planner`, and `critic` role agents to persist ralplan/state workflow receipts through a restricted `bash` allowlist while blocking general shell and product-file mutations.
43
60
  - Made settings theme browsing confirm-only so arrowing through themes no longer changes the rendered theme before the displayed/persisted theme name changes.
44
61
  - Made startup CHANGELOG display deterministic by embedding `packages/coding-agent/CHANGELOG.md` into the binary so post-update launches show the shipped history regardless of cwd or `GJC_PACKAGE_DIR`/`PI_PACKAGE_DIR` overrides.
45
62
  - Registered `gjc update` as a public root subcommand so it invokes the bundled updater instead of routing into the interactive launcher.
package/README.md CHANGED
@@ -34,4 +34,4 @@ Switching backends mid-session is honoured on the next system-prompt rebuild and
34
34
 
35
35
  ## Red-claw TUI theme
36
36
 
37
- The interactive TUI defaults to the bundled `red-claw` crustacean theme for dark terminals, with matching welcome/icon assets. Explicit user theme settings still win; set `theme.dark: red-claw` in `~/.gjc/agent/config.yml` to pin it.
37
+ The interactive TUI defaults to the bundled `red-claw` crustacean theme for dark terminals and the bundled `blue-crab` theme for light-appearance terminals, with matching welcome/icon assets. Explicit user theme settings still win; set `theme.dark: red-claw` and `theme.light: blue-crab` in `~/.gjc/agent/config.yml` to pin them.
@@ -54,6 +54,27 @@ export interface AsyncJobRegisterOptions {
54
54
  export interface AsyncJobFilter {
55
55
  ownerId?: string;
56
56
  }
57
+ /**
58
+ * A slice of process-stream output for a background job, as recorded by
59
+ * `appendOutput` / read by `readOutputSince`.
60
+ *
61
+ * The cursor model is monotonic UTF-8 byte offsets. `nextOffset` is the offset
62
+ * to pass to the next read to receive only fresh bytes; `startOffset` is the
63
+ * first byte the manager still retains for this job. When the requested offset
64
+ * is older than `startOffset`, the manager returns the retained tail and sets
65
+ * `truncated: true`.
66
+ */
67
+ export interface AsyncJobOutputSlice {
68
+ jobId: string;
69
+ status: AsyncJob["status"];
70
+ text: string;
71
+ startOffset: number;
72
+ nextOffset: number;
73
+ truncated: boolean;
74
+ }
75
+ /** Default retention cap for per-job captured output. ~512 KiB matches the
76
+ * bash tail-buffer order of magnitude without dominating session memory. */
77
+ export declare const DEFAULT_JOB_OUTPUT_RETENTION_BYTES: number;
57
78
  export declare class AsyncJobManager {
58
79
  #private;
59
80
  /** Process-global instance shared by internal URL protocol handlers and tools. */
@@ -78,6 +99,46 @@ export declare class AsyncJobManager {
78
99
  getRunningJobs(filter?: AsyncJobFilter): AsyncJob[];
79
100
  getRecentJobs(limit?: number, filter?: AsyncJobFilter): AsyncJob[];
80
101
  getAllJobs(filter?: AsyncJobFilter): AsyncJob[];
102
+ /**
103
+ * Append a sanitized process-stream chunk for a background job. Called from
104
+ * the unthrottled bash-executor capture hook (`onRawChunk`) so monitor sees
105
+ * every chunk even when preview/progress callbacks are throttled.
106
+ *
107
+ * Offsets are in UTF-8 bytes. Storing chunk metadata avoids unsafe byte
108
+ * slicing across multibyte characters at read time. The retention window is
109
+ * a per-job rolling cap (`DEFAULT_JOB_OUTPUT_RETENTION_BYTES`); when it
110
+ * overflows, oldest whole chunks are evicted and `startOffset` advances —
111
+ * subsequent reads from a stale offset get `truncated: true`.
112
+ */
113
+ appendOutput(jobId: string, chunk: string): void;
114
+ /**
115
+ * Read fresh process-stream output for a job since `offset` (in UTF-8
116
+ * bytes). Returns `undefined` when the job does not exist or when an
117
+ * `ownerId` filter is set and the job belongs to a different owner — this
118
+ * mirrors the manager-level "not found" pattern used by `cancel`.
119
+ *
120
+ * - `offset < startOffset` returns the retained tail with `truncated: true`.
121
+ * - `offset > nextOffset` clamps to `nextOffset` and returns an empty text
122
+ * slice with `truncated: false`.
123
+ * - Assembled text slices the leading retained chunk at a UTF-8 codepoint
124
+ * boundary when needed, so multibyte characters cannot be split.
125
+ */
126
+ readOutputSince(jobId: string, offset: number, filter?: AsyncJobFilter): AsyncJobOutputSlice | undefined;
127
+ /**
128
+ * Register an owner-scoped cleanup callback. Returns an unregister function.
129
+ *
130
+ * Used by Cron* tools to clear session-scoped timers when the owning agent
131
+ * is torn down. Invoked by `runOwnerCleanups({ ownerId })` before
132
+ * `cancelAll({ ownerId })` so timers cannot register new jobs during
133
+ * teardown.
134
+ */
135
+ registerOwnerCleanup(ownerId: string, cleanup: () => void): () => void;
136
+ /**
137
+ * Run and clear every registered cleanup for the given filter. Idempotent
138
+ * and error-isolated: a throwing cleanup does not prevent siblings from
139
+ * running and never escalates to the caller.
140
+ */
141
+ runOwnerCleanups(filter?: AsyncJobFilter): void;
81
142
  getDeliveryState(filter?: AsyncJobFilter): AsyncJobDeliveryState;
82
143
  hasPendingDeliveries(filter?: AsyncJobFilter): boolean;
83
144
  watchJobs(jobIds: string[]): number;
@@ -212,7 +212,7 @@ export declare const SETTINGS_SCHEMA: {
212
212
  };
213
213
  readonly "theme.light": {
214
214
  readonly type: "string";
215
- readonly default: "light";
215
+ readonly default: "blue-crab";
216
216
  readonly ui: {
217
217
  readonly tab: "appearance";
218
218
  readonly label: "Light Theme";
@@ -2917,7 +2917,7 @@ export declare const SETTINGS_SCHEMA: {
2917
2917
  };
2918
2918
  readonly "providers.webSearch": {
2919
2919
  readonly type: "enum";
2920
- readonly values: readonly ["auto", "exa", "brave", "jina", "kimi", "zai", "perplexity", "anthropic", "gemini", "codex", "tavily", "kagi", "synthetic", "parallel", "searxng"];
2920
+ readonly values: readonly ["auto", "duckduckgo", "exa", "brave", "jina", "kimi", "zai", "perplexity", "anthropic", "gemini", "codex", "tavily", "kagi", "synthetic", "parallel", "searxng"];
2921
2921
  readonly default: "auto";
2922
2922
  readonly ui: {
2923
2923
  readonly tab: "providers";
@@ -2926,7 +2926,11 @@ export declare const SETTINGS_SCHEMA: {
2926
2926
  readonly options: readonly [{
2927
2927
  readonly value: "auto";
2928
2928
  readonly label: "Auto";
2929
- readonly description: "Preferred web-search provider";
2929
+ readonly description: "Active model's native search if its creds exist, else keyless DuckDuckGo";
2930
+ }, {
2931
+ readonly value: "duckduckgo";
2932
+ readonly label: "DuckDuckGo";
2933
+ readonly description: "Keyless default \u2014 no API key or OAuth required";
2930
2934
  }, {
2931
2935
  readonly value: "exa";
2932
2936
  readonly label: "Exa";
@@ -5,7 +5,7 @@
5
5
  * import { settings } from "./settings";
6
6
  *
7
7
  * const enabled = settings.get("compaction.enabled"); // sync read
8
- * settings.set("theme.dark", "titanium"); // sync write, saves in background
8
+ * settings.set("theme.dark", "red-claw"); // sync write, saves in background
9
9
  *
10
10
  * For tests:
11
11
  * const isolated = Settings.isolated({ "compaction.enabled": false });
@@ -106,6 +106,7 @@ export interface ParsedAgentFields {
106
106
  blocking?: boolean;
107
107
  hide?: boolean;
108
108
  forkContext?: ForkContextPolicy;
109
+ bashAllowedPrefixes?: string[];
109
110
  }
110
111
  /**
111
112
  * Parse agent fields from frontmatter.
@@ -2,8 +2,15 @@ import { type MinimizerOptions } from "@gajae-code/natives";
2
2
  import { type ShellMinimizerSettings } from "../config/settings";
3
3
  export interface BashExecutorOptions {
4
4
  cwd?: string;
5
- timeout?: number;
5
+ timeout?: number | null;
6
6
  onChunk?: (chunk: string) => void;
7
+ /**
8
+ * Unthrottled per-chunk callback that fires for every sanitized stdout/stderr
9
+ * chunk *before* preview throttling. Background-job substrate uses this to
10
+ * record the complete process stream for the Monitor tool while keeping
11
+ * `onChunk` cheap for UI/progress rendering.
12
+ */
13
+ onRawChunk?: (chunk: string) => void;
7
14
  signal?: AbortSignal;
8
15
  /** Session key suffix to isolate shell sessions per agent */
9
16
  sessionKey?: string;
@@ -0,0 +1,2 @@
1
+ export declare const GJC_RESTRICTED_ROLE_AGENT_BASH_ENV = "GJC_RESTRICTED_ROLE_AGENT_BASH";
2
+ export declare function isRestrictedRoleAgentBash(): boolean;
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * ACP-side `ClientBridge` implementation. Wraps `AgentSideConnection` so the
3
- * `read`/`write`/`bash`/`edit` tools (and the permission gate in
3
+ * `read`/`write`/`bash`/`monitor`/`edit` tools (and the permission gate in
4
4
  * `AgentSession`) can route through the client when it advertises the
5
5
  * relevant capabilities at `initialize` time.
6
6
  */
@@ -1,2 +1,2 @@
1
- import type { SkillActiveEntry } from "../../../skill-state/active-state";
1
+ import { type SkillActiveEntry } from "../../../skill-state/active-state";
2
2
  export declare function renderSkillHudBar(entries: readonly SkillActiveEntry[], width: number): string | null;
@@ -61,6 +61,7 @@ export declare class InteractiveMode implements InteractiveModeContext {
61
61
  isInitialized: boolean;
62
62
  isBackgrounded: boolean;
63
63
  isBashMode: boolean;
64
+ isBashNoContext: boolean;
64
65
  toolOutputExpanded: boolean;
65
66
  todoExpanded: boolean;
66
67
  planModeEnabled: boolean;