@gajae-code/coding-agent 0.5.4 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/types/cli/web-search-cli.d.ts +12 -0
- package/dist/types/commands/rlm.d.ts +10 -0
- package/dist/types/commands/web-search.d.ts +54 -0
- package/dist/types/config/keybindings.d.ts +10 -0
- package/dist/types/config/model-profiles.d.ts +2 -1
- package/dist/types/config/model-registry.d.ts +3 -0
- package/dist/types/config/models-config-schema.d.ts +3 -0
- package/dist/types/config/settings-schema.d.ts +61 -3
- package/dist/types/edit/notebook.d.ts +3 -0
- package/dist/types/eval/py/executor.d.ts +3 -0
- package/dist/types/eval/py/kernel.d.ts +3 -1
- package/dist/types/eval/py/runtime.d.ts +9 -1
- package/dist/types/exec/bash-executor.d.ts +4 -0
- package/dist/types/extensibility/custom-tools/types.d.ts +2 -0
- package/dist/types/extensibility/custom-tools/wrapper.d.ts +1 -0
- package/dist/types/extensibility/extensions/types.d.ts +2 -0
- package/dist/types/extensibility/extensions/wrapper.d.ts +1 -0
- package/dist/types/gjc-runtime/launch-tmux.d.ts +6 -0
- package/dist/types/gjc-runtime/session-state-sidecar.d.ts +14 -0
- package/dist/types/gjc-runtime/tmux-common.d.ts +6 -0
- package/dist/types/gjc-runtime/tmux-gc.d.ts +3 -3
- package/dist/types/gjc-runtime/tmux-sessions.d.ts +4 -0
- package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +18 -0
- package/dist/types/goals/state.d.ts +1 -1
- package/dist/types/goals/tools/goal-tool.d.ts +2 -0
- package/dist/types/main.d.ts +11 -0
- package/dist/types/modes/components/custom-editor.d.ts +4 -2
- package/dist/types/modes/components/custom-model-preset-wizard.d.ts +12 -0
- package/dist/types/modes/components/model-selector.d.ts +5 -2
- package/dist/types/modes/components/status-line.d.ts +4 -1
- package/dist/types/modes/controllers/input-controller.d.ts +3 -0
- package/dist/types/modes/controllers/selector-controller.d.ts +1 -0
- package/dist/types/modes/print-mode.d.ts +6 -0
- package/dist/types/modes/rpc/rpc-client.d.ts +21 -0
- package/dist/types/modes/rpc/rpc-socket-security.d.ts +7 -0
- package/dist/types/modes/rpc/rpc-types.d.ts +13 -0
- package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +2 -0
- package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +1 -0
- package/dist/types/rlm/artifacts.d.ts +9 -0
- package/dist/types/rlm/complete-research-tool.d.ts +35 -0
- package/dist/types/rlm/data-context.d.ts +6 -0
- package/dist/types/rlm/index.d.ts +35 -0
- package/dist/types/rlm/notebook.d.ts +12 -0
- package/dist/types/rlm/preset.d.ts +23 -0
- package/dist/types/rlm/python-tool.d.ts +16 -0
- package/dist/types/rlm/report.d.ts +14 -0
- package/dist/types/rlm/types.d.ts +37 -0
- package/dist/types/sdk.d.ts +7 -0
- package/dist/types/session/agent-session.d.ts +21 -0
- package/dist/types/tools/bash-allowed-prefixes.d.ts +6 -1
- package/dist/types/tools/browser/attach.d.ts +19 -3
- package/dist/types/tools/browser/registry.d.ts +15 -0
- package/dist/types/tools/browser/render.d.ts +3 -0
- package/dist/types/tools/browser.d.ts +18 -1
- package/dist/types/tools/computer/render.d.ts +17 -0
- package/dist/types/tools/computer.d.ts +465 -0
- package/dist/types/tools/index.d.ts +24 -1
- package/dist/types/tools/job.d.ts +13 -0
- package/dist/types/tools/tool-timeouts.d.ts +5 -0
- package/dist/types/web/search/index.d.ts +32 -2
- package/dist/types/web/search/providers/base.d.ts +22 -0
- package/dist/types/web/search/providers/xai.d.ts +64 -0
- package/dist/types/web/search/types.d.ts +11 -3
- package/package.json +7 -7
- package/src/cli/web-search-cli.ts +123 -8
- package/src/cli.ts +2 -0
- package/src/commands/rlm.ts +19 -0
- package/src/commands/web-search.ts +66 -0
- package/src/config/keybindings.ts +11 -0
- package/src/config/model-profiles.ts +11 -3
- package/src/config/model-registry.ts +55 -1
- package/src/config/models-config-schema.ts +1 -0
- package/src/config/settings-schema.ts +67 -1
- package/src/edit/notebook.ts +6 -2
- package/src/eval/py/executor.ts +8 -1
- package/src/eval/py/kernel.ts +9 -4
- package/src/eval/py/runtime.ts +153 -32
- package/src/exec/bash-executor.ts +10 -4
- package/src/extensibility/custom-tools/types.ts +2 -0
- package/src/extensibility/custom-tools/wrapper.ts +2 -0
- package/src/extensibility/extensions/types.ts +2 -0
- package/src/extensibility/extensions/wrapper.ts +1 -0
- package/src/gjc-runtime/launch-tmux.ts +129 -1
- package/src/gjc-runtime/session-state-sidecar.ts +61 -1
- package/src/gjc-runtime/tmux-common.ts +26 -2
- package/src/gjc-runtime/tmux-gc.ts +40 -27
- package/src/gjc-runtime/tmux-sessions.ts +13 -1
- package/src/gjc-runtime/ultragoal-runtime.ts +340 -18
- package/src/goals/runtime.ts +4 -3
- package/src/goals/state.ts +1 -1
- package/src/goals/tools/goal-tool.ts +16 -3
- package/src/internal-urls/docs-index.generated.ts +13 -9
- package/src/main.ts +28 -3
- package/src/modes/components/custom-editor.ts +13 -4
- package/src/modes/components/custom-model-preset-wizard.ts +293 -0
- package/src/modes/components/hook-selector.ts +1 -1
- package/src/modes/components/model-selector.ts +72 -29
- package/src/modes/components/skill-message.ts +62 -8
- package/src/modes/components/status-line.ts +13 -1
- package/src/modes/controllers/input-controller.ts +60 -11
- package/src/modes/controllers/selector-controller.ts +39 -0
- package/src/modes/interactive-mode.ts +1 -1
- package/src/modes/print-mode.ts +14 -4
- package/src/modes/rpc/rpc-client.ts +250 -80
- package/src/modes/rpc/rpc-mode.ts +6 -12
- package/src/modes/rpc/rpc-socket-security.ts +103 -0
- package/src/modes/rpc/rpc-types.ts +10 -0
- package/src/modes/shared/agent-wire/command-dispatch.ts +7 -0
- package/src/modes/shared/agent-wire/command-validation.ts +1 -0
- package/src/modes/shared/agent-wire/scopes.ts +1 -0
- package/src/modes/shared/agent-wire/unattended-session.ts +9 -0
- package/src/modes/utils/hotkeys-markdown.ts +4 -2
- package/src/modes/utils/ui-helpers.ts +2 -2
- package/src/prompts/goals/goal-continuation.md +1 -0
- package/src/prompts/goals/goal-mode-active.md +1 -0
- package/src/prompts/system/rlm-report-command.md +1 -0
- package/src/prompts/system/rlm-research.md +23 -0
- package/src/prompts/tools/bash.md +23 -2
- package/src/prompts/tools/browser.md +7 -3
- package/src/prompts/tools/computer.md +74 -0
- package/src/prompts/tools/goal.md +3 -0
- package/src/prompts/tools/job.md +9 -1
- package/src/prompts/tools/web-search.md +7 -0
- package/src/rlm/artifacts.ts +60 -0
- package/src/rlm/complete-research-tool.ts +163 -0
- package/src/rlm/data-context.ts +26 -0
- package/src/rlm/index.ts +339 -0
- package/src/rlm/notebook.ts +108 -0
- package/src/rlm/preset.ts +76 -0
- package/src/rlm/python-tool.ts +68 -0
- package/src/rlm/report.ts +70 -0
- package/src/rlm/types.ts +40 -0
- package/src/sdk.ts +12 -0
- package/src/session/agent-session.ts +48 -3
- package/src/slash-commands/builtin-registry.ts +17 -0
- package/src/tools/bash-allowed-prefixes.ts +84 -1
- package/src/tools/bash.ts +80 -13
- package/src/tools/browser/attach.ts +103 -3
- package/src/tools/browser/registry.ts +176 -2
- package/src/tools/browser/render.ts +9 -1
- package/src/tools/browser.ts +33 -0
- package/src/tools/computer/render.ts +78 -0
- package/src/tools/computer.ts +640 -0
- package/src/tools/index.ts +41 -1
- package/src/tools/job.ts +88 -5
- package/src/tools/json-tree.ts +42 -29
- package/src/tools/renderers.ts +2 -0
- package/src/tools/tool-timeouts.ts +1 -0
- package/src/web/search/index.ts +27 -2
- package/src/web/search/provider.ts +16 -1
- package/src/web/search/providers/base.ts +22 -0
- package/src/web/search/providers/xai.ts +511 -0
- package/src/web/search/render.ts +7 -0
- package/src/web/search/types.ts +11 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.6.1] - 2026-06-18
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Fixed the `computer` tool (and any other `z.union`/discriminated-union tool) shipping a bare top-level `anyOf`/`oneOf`/`allOf` `input_schema` root that strict providers (Amazon Bedrock Converse incl. Kiro/CodeWhisperer relays, OpenAI strict mode, Gemini) reject. Tool schema roots are now flattened to a single `type: "object"` across all providers via the shared `flattenToolRootCombinators`. See `@gajae-code/ai` 0.6.1.
|
|
10
|
+
|
|
11
|
+
## [0.6.0] - 2026-06-18
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- Exposed the existing goal-pause capability through the `goal` tool as `goal({op:"pause"})`. The runtime `pauseGoal()` method and `paused` status already existed and were reachable via the `/goal pause` slash command and the goal menu, but the agent-facing `goal` tool only enumerated `create | get | complete | resume | drop` — so an agent could not park a goal whose remaining work was blocked on human input. It was forced to either `drop` (clearing the goal) or leave the goal `active`, which re-fired the hidden autonomous-continuation steer every turn with no exit condition. `pause` reuses the existing `paused` status and continuation gate (`buildContinuationPrompt` already returns `undefined` when `enabled=false`), parks the goal without dropping it, persists as `goal_paused`, and is resumable via the existing `resume` op. The active-goal and continuation prompts now instruct the agent to pause when every outstanding deliverable is genuinely human-blocked. `pauseGoal()` now rejects any goal whose status is not `active`, so a completed or dropped goal cannot be driven into a paused-mode lifecycle when paused through the tool.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Restored steer-by-default while the agent is busy: `busyPromptMode` now defaults to `steer`, so Enter on a normal prompt interrupts the active turn. Queueing for the next turn is reserved for the explicit Ctrl+Enter follow-up keystroke (or `busyPromptMode: "queue"`); existing steer/cancel plus explicit queue/dequeue controls remain separate (#829).
|
|
19
|
+
- Fixed `gjc rlm "<question>"` consuming the seeded question as a one-shot autonomous run that exited immediately; a seeded prompt now lands in the interactive composer so the research session stays interactive.
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- Added an opt-in `gjc rlm` research mode (v1, interactive): a Jupyter-notebook-style research session over the existing agent loop, backed by the shared persistent Python kernel. It loads a distinct research system prompt, restricts the toolset to a hard-gated allowlist (`python` + `read` + `web_search`, asserted after tool-registry assembly — no `bash`/edit/arbitrary mutation), optionally loads a project-root `DATA.md` (overridable via `--data <path>`), aggregates every executed cell live into `.gjc/rlm/<session>/notebook.ipynb` (single-queue atomic temp-rename writes with post-write validation), and synthesizes `.gjc/rlm/<session>/report.md` on session exit. Autonomous goal-arg runs, `--resume`, managed per-workspace venv provisioning, and the optional `>=N` completion gate are deferred follow-ups.
|
|
24
|
+
- Added an experimental opt-in `computer` desktop-control tool surface for local macOS screenshot/input coordination, backed by native `ComputerController`/`computerScreenshot` bindings and gated through settings/tool registration so it can continue stabilizing on `dev` outside the 0.5.4 patch release.
|
|
25
|
+
- Dropped deprecated GitHub Actions Intel macOS (`macos-13` / `darwin-x64`) release-binary coverage after the runner pool repeatedly blocked v0.6.0 publish; Intel macOS users should install through npm/Bun or build from source.
|
|
26
|
+
|
|
5
27
|
## [0.5.4] - 2026-06-17
|
|
6
28
|
|
|
7
29
|
### Fixed
|
|
@@ -10,6 +32,7 @@
|
|
|
10
32
|
- `AgentSession` now forwards the live provider session state (`providerSessionState`), session affinity id (`providerSessionId ?? sessionId`), and configured WebSocket transport preference (`preferWebsockets`) into local maintenance one-shot calls — manual/automatic compaction summaries, handoff generation, and tree branch summaries — via a shared `#maintenanceProviderTransport()` helper. Previously these Codex/OpenAI-compatible maintenance calls could fall back to HTTP/SSE and lose `session_id` affinity even when `providers.openaiWebsockets: "on"` routed live turns over WebSocket (#736).
|
|
11
33
|
- Fixed `ollama-cloud` first-event timeouts driving an unbounded, usage-spiking retry loop. The ollama-chat backend (exclusively `ollama-cloud`; local Ollama uses the `openai-responses` API) can stall before its first token even for tiny prompts, surfacing `Provider stream timed out while waiting for the first event`. That message matched the generic transient classifier, which retries forever (capped only on delay), so every continuation re-issued the full request to a billable backend and silently spiked usage — disabling retries was the only workaround. First-event timeouts on the ollama-chat API are now a distinct fail-closed class bounded by `retry.maxRetries`: they still retry transient cold starts a few times, then surface instead of looping. First-party providers keep their existing unbounded first-event-timeout retry behavior (#713).
|
|
12
34
|
- Interactive sessions no longer orphan the `browser` tool's headless/spawned Chrome (and the Python eval kernel) to PID 1 when killed by a signal. The interactive entry now registers a bounded, idempotent `postmortem` cleanup (`session-subprocess-teardown`) that runs `AgentSession.disposeChildSubprocesses()` on `SIGINT`/`SIGTERM`/`SIGHUP`, force-releasing the session's browser tabs (`kill:true`) and disposing its Python/JS kernels — the teardown the graceful `/quit` (`dispose()`) path already performs but that an external `kill`/terminal-close used to bypass. Headless `disposeBrowserHandle` now also SIGTERM/SIGKILLs the captured Chrome process tree as a fallback when forced, so a wedged renderer can't survive a bounded CDP `close()`; graceful release behavior is unchanged. The teardown is time-boxed (5s) so a stuck subprocess can't hang process exit (#698).
|
|
35
|
+
- Added first-class xAI search provider support for the `web_search` tool and `gjc q`, including OAuth/API-key auth, web/X/combined search modes, xAI web/X filters, image/video options, citation controls, usage reporting, Settings provider selection, CLI flags, config schema wiring, and edge-case coverage.
|
|
13
36
|
|
|
14
37
|
## [0.5.3] - 2026-06-16
|
|
15
38
|
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Handles `gjc q`/`gjc web-search` subcommands for testing web search providers.
|
|
5
5
|
*/
|
|
6
|
+
import { type SearchQueryParams } from "../web/search/index";
|
|
6
7
|
import type { SearchProviderId } from "../web/search/types";
|
|
7
8
|
export interface SearchCommandArgs {
|
|
8
9
|
query: string;
|
|
@@ -10,6 +11,17 @@ export interface SearchCommandArgs {
|
|
|
10
11
|
recency?: "day" | "week" | "month" | "year";
|
|
11
12
|
limit?: number;
|
|
12
13
|
expanded: boolean;
|
|
14
|
+
xaiSearchMode?: SearchQueryParams["xai_search_mode"];
|
|
15
|
+
allowedDomains?: string[];
|
|
16
|
+
excludedDomains?: string[];
|
|
17
|
+
allowedXHandles?: string[];
|
|
18
|
+
excludedXHandles?: string[];
|
|
19
|
+
fromDate?: string;
|
|
20
|
+
toDate?: string;
|
|
21
|
+
enableImageUnderstanding?: boolean;
|
|
22
|
+
enableImageSearch?: boolean;
|
|
23
|
+
enableVideoUnderstanding?: boolean;
|
|
24
|
+
noInlineCitations?: boolean;
|
|
13
25
|
}
|
|
14
26
|
/**
|
|
15
27
|
* Parse web search subcommand arguments.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `gjc rlm` — opt-in Jupyter-style research session with a persistent Python kernel.
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from "@gajae-code/utils/cli";
|
|
5
|
+
export default class Rlm extends Command {
|
|
6
|
+
static description: string;
|
|
7
|
+
static strict: boolean;
|
|
8
|
+
static examples: string[];
|
|
9
|
+
run(): Promise<void>;
|
|
10
|
+
}
|
|
@@ -25,6 +25,60 @@ export default class Search extends Command {
|
|
|
25
25
|
char: string;
|
|
26
26
|
description: string;
|
|
27
27
|
};
|
|
28
|
+
"xai-mode": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
29
|
+
description: string;
|
|
30
|
+
options: string[];
|
|
31
|
+
};
|
|
32
|
+
"allowed-domain": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
33
|
+
description: string;
|
|
34
|
+
multiple: true;
|
|
35
|
+
};
|
|
36
|
+
"allowed-domains": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
37
|
+
description: string;
|
|
38
|
+
multiple: true;
|
|
39
|
+
};
|
|
40
|
+
"excluded-domain": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
41
|
+
description: string;
|
|
42
|
+
multiple: true;
|
|
43
|
+
};
|
|
44
|
+
"excluded-domains": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
45
|
+
description: string;
|
|
46
|
+
multiple: true;
|
|
47
|
+
};
|
|
48
|
+
"allowed-x-handle": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
49
|
+
description: string;
|
|
50
|
+
multiple: true;
|
|
51
|
+
};
|
|
52
|
+
"allowed-x-handles": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
53
|
+
description: string;
|
|
54
|
+
multiple: true;
|
|
55
|
+
};
|
|
56
|
+
"excluded-x-handle": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
57
|
+
description: string;
|
|
58
|
+
multiple: true;
|
|
59
|
+
};
|
|
60
|
+
"excluded-x-handles": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
61
|
+
description: string;
|
|
62
|
+
multiple: true;
|
|
63
|
+
};
|
|
64
|
+
"from-date": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
65
|
+
description: string;
|
|
66
|
+
};
|
|
67
|
+
"to-date": import("@gajae-code/utils/cli").FlagDescriptor<"string"> & {
|
|
68
|
+
description: string;
|
|
69
|
+
};
|
|
70
|
+
"image-understanding": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
|
|
71
|
+
description: string;
|
|
72
|
+
};
|
|
73
|
+
"image-search": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
|
|
74
|
+
description: string;
|
|
75
|
+
};
|
|
76
|
+
"video-understanding": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
|
|
77
|
+
description: string;
|
|
78
|
+
};
|
|
79
|
+
"no-inline-citations": import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
|
|
80
|
+
description: string;
|
|
81
|
+
};
|
|
28
82
|
compact: import("@gajae-code/utils/cli").FlagDescriptor<"boolean"> & {
|
|
29
83
|
description: string;
|
|
30
84
|
};
|
|
@@ -15,8 +15,10 @@ interface AppKeybindings {
|
|
|
15
15
|
"app.model.select": true;
|
|
16
16
|
"app.model.selectTemporary": true;
|
|
17
17
|
"app.tools.expand": true;
|
|
18
|
+
"app.tool.backgroundFold": true;
|
|
18
19
|
"app.editor.external": true;
|
|
19
20
|
"app.message.followUp": true;
|
|
21
|
+
"app.message.queue": true;
|
|
20
22
|
"app.message.dequeue": true;
|
|
21
23
|
"app.clipboard.pasteImage": true;
|
|
22
24
|
"app.clipboard.copyLine": true;
|
|
@@ -215,6 +217,10 @@ export declare const KEYBINDINGS: {
|
|
|
215
217
|
readonly defaultKeys: "ctrl+o";
|
|
216
218
|
readonly description: "Expand tools";
|
|
217
219
|
};
|
|
220
|
+
readonly "app.tool.backgroundFold": {
|
|
221
|
+
readonly defaultKeys: "ctrl+b";
|
|
222
|
+
readonly description: "Fold/background supported foreground tool";
|
|
223
|
+
};
|
|
218
224
|
readonly "app.editor.external": {
|
|
219
225
|
readonly defaultKeys: "ctrl+g";
|
|
220
226
|
readonly description: "Open external editor";
|
|
@@ -223,6 +229,10 @@ export declare const KEYBINDINGS: {
|
|
|
223
229
|
readonly defaultKeys: "ctrl+enter";
|
|
224
230
|
readonly description: "Send follow-up message";
|
|
225
231
|
};
|
|
232
|
+
readonly "app.message.queue": {
|
|
233
|
+
readonly defaultKeys: "alt+enter";
|
|
234
|
+
readonly description: "Queue message for next turn";
|
|
235
|
+
};
|
|
226
236
|
readonly "app.message.dequeue": {
|
|
227
237
|
readonly defaultKeys: "alt+up";
|
|
228
238
|
readonly description: "Dequeue message";
|
|
@@ -4,6 +4,7 @@ export type ModelProfileRole = GjcModelAssignmentTargetId;
|
|
|
4
4
|
export interface ModelProfileDefinition {
|
|
5
5
|
name: string;
|
|
6
6
|
requiredProviders: string[];
|
|
7
|
+
displayName?: string;
|
|
7
8
|
/**
|
|
8
9
|
* Optional groups of providers that are interchangeable fallbacks.
|
|
9
10
|
* Each group is an array of provider ids where at least one must be
|
|
@@ -28,7 +29,7 @@ export interface ModelProfilePresentation {
|
|
|
28
29
|
displayName: string;
|
|
29
30
|
providerGroup: string;
|
|
30
31
|
}
|
|
31
|
-
export declare function getModelProfilePresentation(
|
|
32
|
+
export declare function getModelProfilePresentation(profile: string | Pick<ModelProfileDefinition, "name" | "displayName">): ModelProfilePresentation;
|
|
32
33
|
export declare function groupModelProfilesForPresetLanding(profiles: ReadonlyMap<string, ModelProfileDefinition>): Map<string, ModelProfileDefinition[]>;
|
|
33
34
|
export declare function recommendModelProfileForProvider(providerId: string, profiles: ReadonlyMap<string, ModelProfileDefinition>): ModelProfileDefinition | undefined;
|
|
34
35
|
export declare function mergeModelProfiles(userProfiles?: ModelsConfig["profiles"]): Map<string, ModelProfileDefinition>;
|
|
@@ -6,6 +6,7 @@ import type { ActiveSearchModelContext, WebSearchMode } from "../web/search/type
|
|
|
6
6
|
import { type ConfigError, ConfigFile } from "./config-file";
|
|
7
7
|
import { type CanonicalModelIndex, type CanonicalModelRecord, type CanonicalModelVariant, type ModelEquivalenceConfig } from "./model-equivalence";
|
|
8
8
|
import { type ModelProfileDefinition } from "./model-profiles";
|
|
9
|
+
import { type ModelProfileConfig } from "./models-config-schema";
|
|
9
10
|
import { type Settings } from "./settings";
|
|
10
11
|
export type { CanonicalModelIndex, CanonicalModelRecord, CanonicalModelVariant, ModelEquivalenceConfig };
|
|
11
12
|
export declare const kNoAuth = "N/A";
|
|
@@ -263,6 +264,7 @@ export declare const ModelsConfigFile: ConfigFile<{
|
|
|
263
264
|
} | undefined;
|
|
264
265
|
profiles?: Record<string, {
|
|
265
266
|
required_providers: string[];
|
|
267
|
+
display_name?: string | undefined;
|
|
266
268
|
model_mapping: Partial<Record<"architect" | "critic" | "default" | "executor" | "planner", string>>;
|
|
267
269
|
}> | undefined;
|
|
268
270
|
}>;
|
|
@@ -331,6 +333,7 @@ export declare class ModelRegistry {
|
|
|
331
333
|
getModelProfiles(): Map<string, ModelProfileDefinition>;
|
|
332
334
|
getModelProfile(name: string): ModelProfileDefinition | undefined;
|
|
333
335
|
getAvailableModelProfileNames(): string[];
|
|
336
|
+
saveCustomModelProfile(name: string, definition: ModelProfileConfig): Promise<ModelProfileDefinition>;
|
|
334
337
|
applyConfiguredModelBindings(targetSettings: Settings): void;
|
|
335
338
|
/**
|
|
336
339
|
* Get all models (built-in + custom).
|
|
@@ -78,6 +78,7 @@ export declare const ProfileModelMappingSchema: z.ZodRecord<z.ZodEnum<{
|
|
|
78
78
|
}> & z.core.$partial, z.ZodString>;
|
|
79
79
|
export declare const ProfileDefinitionSchema: z.ZodObject<{
|
|
80
80
|
required_providers: z.ZodArray<z.ZodString>;
|
|
81
|
+
display_name: z.ZodOptional<z.ZodString>;
|
|
81
82
|
model_mapping: z.ZodRecord<z.ZodEnum<{
|
|
82
83
|
architect: "architect";
|
|
83
84
|
critic: "critic";
|
|
@@ -88,6 +89,7 @@ export declare const ProfileDefinitionSchema: z.ZodObject<{
|
|
|
88
89
|
}, z.core.$strict>;
|
|
89
90
|
export declare const ProfilesSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
90
91
|
required_providers: z.ZodArray<z.ZodString>;
|
|
92
|
+
display_name: z.ZodOptional<z.ZodString>;
|
|
91
93
|
model_mapping: z.ZodRecord<z.ZodEnum<{
|
|
92
94
|
architect: "architect";
|
|
93
95
|
critic: "critic";
|
|
@@ -673,6 +675,7 @@ export declare const ModelsConfigSchema: z.ZodObject<{
|
|
|
673
675
|
}, z.core.$strip>>;
|
|
674
676
|
profiles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
675
677
|
required_providers: z.ZodArray<z.ZodString>;
|
|
678
|
+
display_name: z.ZodOptional<z.ZodString>;
|
|
676
679
|
model_mapping: z.ZodRecord<z.ZodEnum<{
|
|
677
680
|
architect: "architect";
|
|
678
681
|
critic: "critic";
|
|
@@ -1126,7 +1126,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
1126
1126
|
readonly ui: {
|
|
1127
1127
|
readonly tab: "interaction";
|
|
1128
1128
|
readonly label: "Busy Prompt Mode";
|
|
1129
|
-
readonly description: "What a submitted prompt does while the agent is busy:
|
|
1129
|
+
readonly description: "What a submitted prompt does while the agent is busy: queue normal chat for the next turn, or steer to interrupt the active turn";
|
|
1130
1130
|
};
|
|
1131
1131
|
};
|
|
1132
1132
|
readonly doubleEscapeAction: {
|
|
@@ -2465,7 +2465,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
2465
2465
|
readonly type: "array";
|
|
2466
2466
|
readonly default: string[];
|
|
2467
2467
|
readonly items: {
|
|
2468
|
-
readonly enum: readonly ["duckduckgo", "exa", "brave", "jina", "kimi", "zai", "anthropic", "perplexity", "gemini", "codex", "tavily", "parallel", "kagi", "synthetic", "searxng"];
|
|
2468
|
+
readonly enum: readonly ["duckduckgo", "exa", "brave", "jina", "kimi", "zai", "anthropic", "perplexity", "gemini", "codex", "xai", "tavily", "parallel", "kagi", "synthetic", "searxng"];
|
|
2469
2469
|
};
|
|
2470
2470
|
readonly ui: {
|
|
2471
2471
|
readonly tab: "tools";
|
|
@@ -2500,6 +2500,60 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
2500
2500
|
readonly description: "Directory to save screenshots. If unset, screenshots go to a temp file. Supports ~. Examples: ~/Downloads, ~/Desktop, /sdcard/Download (Android)";
|
|
2501
2501
|
};
|
|
2502
2502
|
};
|
|
2503
|
+
readonly "computer.enabled": {
|
|
2504
|
+
readonly type: "boolean";
|
|
2505
|
+
readonly default: false;
|
|
2506
|
+
readonly ui: {
|
|
2507
|
+
readonly tab: "tools";
|
|
2508
|
+
readonly label: "Computer";
|
|
2509
|
+
readonly description: "Enable the macOS computer tool for this session. Off by default.";
|
|
2510
|
+
};
|
|
2511
|
+
};
|
|
2512
|
+
readonly "computer.alwaysOn": {
|
|
2513
|
+
readonly type: "boolean";
|
|
2514
|
+
readonly default: false;
|
|
2515
|
+
readonly ui: {
|
|
2516
|
+
readonly tab: "tools";
|
|
2517
|
+
readonly label: "Computer Always On";
|
|
2518
|
+
readonly description: "Keep the macOS computer tool callable without per-session enablement.";
|
|
2519
|
+
};
|
|
2520
|
+
};
|
|
2521
|
+
readonly "computer.autoScreenshot": {
|
|
2522
|
+
readonly type: "boolean";
|
|
2523
|
+
readonly default: false;
|
|
2524
|
+
readonly ui: {
|
|
2525
|
+
readonly tab: "tools";
|
|
2526
|
+
readonly label: "Computer Auto Screenshot";
|
|
2527
|
+
readonly description: "Automatically request bounded screenshots after computer actions when supported.";
|
|
2528
|
+
};
|
|
2529
|
+
};
|
|
2530
|
+
readonly "computer.screenshotMaxBytes": {
|
|
2531
|
+
readonly type: "number";
|
|
2532
|
+
readonly default: 5000000;
|
|
2533
|
+
readonly ui: {
|
|
2534
|
+
readonly tab: "tools";
|
|
2535
|
+
readonly label: "Computer Screenshot Max Bytes";
|
|
2536
|
+
readonly description: "Maximum screenshot payload size for computer action results.";
|
|
2537
|
+
};
|
|
2538
|
+
};
|
|
2539
|
+
readonly "computer.killSwitchHotkey": {
|
|
2540
|
+
readonly type: "string";
|
|
2541
|
+
readonly default: "Control+Option+Command+Escape";
|
|
2542
|
+
readonly ui: {
|
|
2543
|
+
readonly tab: "tools";
|
|
2544
|
+
readonly label: "Computer Kill Switch Hotkey";
|
|
2545
|
+
readonly description: "Native stop/suspend hotkey shown to users for computer-use sessions.";
|
|
2546
|
+
};
|
|
2547
|
+
};
|
|
2548
|
+
readonly "computer.auditLog.enabled": {
|
|
2549
|
+
readonly type: "boolean";
|
|
2550
|
+
readonly default: true;
|
|
2551
|
+
readonly ui: {
|
|
2552
|
+
readonly tab: "tools";
|
|
2553
|
+
readonly label: "Computer Audit Log";
|
|
2554
|
+
readonly description: "Persist audit records for enabled computer-use actions.";
|
|
2555
|
+
};
|
|
2556
|
+
};
|
|
2503
2557
|
readonly "tools.intentTracing": {
|
|
2504
2558
|
readonly type: "boolean";
|
|
2505
2559
|
readonly default: true;
|
|
@@ -3014,7 +3068,7 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3014
3068
|
};
|
|
3015
3069
|
readonly "providers.webSearch": {
|
|
3016
3070
|
readonly type: "enum";
|
|
3017
|
-
readonly values: readonly ["auto", "duckduckgo", "exa", "brave", "jina", "kimi", "zai", "perplexity", "anthropic", "gemini", "codex", "tavily", "kagi", "synthetic", "parallel", "searxng"];
|
|
3071
|
+
readonly values: readonly ["auto", "duckduckgo", "exa", "brave", "jina", "kimi", "zai", "perplexity", "anthropic", "gemini", "codex", "xai", "tavily", "kagi", "synthetic", "parallel", "searxng"];
|
|
3018
3072
|
readonly default: "auto";
|
|
3019
3073
|
readonly ui: {
|
|
3020
3074
|
readonly tab: "providers";
|
|
@@ -3056,6 +3110,10 @@ export declare const SETTINGS_SCHEMA: {
|
|
|
3056
3110
|
readonly value: "codex";
|
|
3057
3111
|
readonly label: "OpenAI";
|
|
3058
3112
|
readonly description: "OpenAI's native web_search (uses ChatGPT OAuth via /login openai-codex)";
|
|
3113
|
+
}, {
|
|
3114
|
+
readonly value: "xai";
|
|
3115
|
+
readonly label: "xAI";
|
|
3116
|
+
readonly description: "xAI Responses web_search/x_search (uses xAI OAuth via /login xai or XAI_API_KEY)";
|
|
3059
3117
|
}, {
|
|
3060
3118
|
readonly value: "gemini";
|
|
3061
3119
|
readonly label: "Gemini";
|
|
@@ -16,6 +16,9 @@ export interface NotebookDocument {
|
|
|
16
16
|
}
|
|
17
17
|
export declare function isNotebookPath(filePath: string): boolean;
|
|
18
18
|
export declare function splitNotebookSource(content: string): string[];
|
|
19
|
+
export declare function createNotebookCell(cellType: NotebookCellType, source: string): NotebookCell;
|
|
20
|
+
export declare function createEmptyNotebook(): NotebookDocument;
|
|
21
|
+
export declare function serializeNotebookDocument(notebook: NotebookDocument): string;
|
|
19
22
|
export declare function readNotebookDocument(absolutePath: string, displayPath: string): Promise<NotebookDocument>;
|
|
20
23
|
export declare function notebookToEditableText(notebook: NotebookDocument): string;
|
|
21
24
|
export declare function applyNotebookEditableText(notebook: NotebookDocument, text: string, displayPath: string): NotebookDocument;
|
|
@@ -2,6 +2,7 @@ import type { ToolSession } from "../../tools";
|
|
|
2
2
|
import type { JsStatusEvent } from "../js/shared/types";
|
|
3
3
|
import type { KernelDisplayOutput } from "./display";
|
|
4
4
|
import { type KernelExecuteOptions, type KernelExecuteResult } from "./kernel";
|
|
5
|
+
import type { PythonRuntimeOptions } from "./runtime";
|
|
5
6
|
export type PythonKernelMode = "session" | "per-call";
|
|
6
7
|
export interface PythonExecutorOptions {
|
|
7
8
|
/** Working directory for command execution */
|
|
@@ -31,6 +32,8 @@ export interface PythonExecutorOptions {
|
|
|
31
32
|
* preferred over `PI_SESSION_FILE`-derived paths.
|
|
32
33
|
*/
|
|
33
34
|
artifactsDir?: string;
|
|
35
|
+
/** Runtime resolution/provisioning options (RLM managed workspace venv, package seeding). */
|
|
36
|
+
runtimeOptions?: PythonRuntimeOptions;
|
|
34
37
|
/** Artifact path/id for full output storage */
|
|
35
38
|
artifactPath?: string;
|
|
36
39
|
artifactId?: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type KernelDisplayOutput } from "./display";
|
|
2
|
+
import { type PythonRuntimeOptions } from "./runtime";
|
|
2
3
|
export type { KernelDisplayOutput, PythonStatusEvent } from "./display";
|
|
3
4
|
export { renderKernelDisplay } from "./display";
|
|
4
5
|
export interface KernelExecuteOptions {
|
|
@@ -38,6 +39,7 @@ interface KernelLifecycleOptions {
|
|
|
38
39
|
interface KernelStartOptions extends KernelLifecycleOptions {
|
|
39
40
|
cwd: string;
|
|
40
41
|
env?: Record<string, string | undefined>;
|
|
42
|
+
runtimeOptions?: PythonRuntimeOptions;
|
|
41
43
|
}
|
|
42
44
|
interface KernelShutdownOptions {
|
|
43
45
|
signal?: AbortSignal;
|
|
@@ -48,7 +50,7 @@ export interface PythonKernelAvailability {
|
|
|
48
50
|
pythonPath?: string;
|
|
49
51
|
reason?: string;
|
|
50
52
|
}
|
|
51
|
-
export declare function checkPythonKernelAvailability(cwd: string): Promise<PythonKernelAvailability>;
|
|
53
|
+
export declare function checkPythonKernelAvailability(cwd: string, runtimeOptions?: PythonRuntimeOptions): Promise<PythonKernelAvailability>;
|
|
52
54
|
export declare class PythonKernel {
|
|
53
55
|
#private;
|
|
54
56
|
readonly id: string;
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
export declare const RLM_MANAGED_PYTHON_PACKAGES: readonly string[];
|
|
2
|
+
export interface PythonRuntimeOptions {
|
|
3
|
+
/** Create/use <cwd>/.gjc/python-env when no BYO venv/conda env is present. */
|
|
4
|
+
managedWorkspaceVenv?: boolean;
|
|
5
|
+
/** Packages to seed into the managed workspace venv when provisioning it. */
|
|
6
|
+
seedPackages?: readonly string[];
|
|
7
|
+
}
|
|
1
8
|
export interface PythonRuntime {
|
|
2
9
|
/** Path to python executable */
|
|
3
10
|
pythonPath: string;
|
|
@@ -18,4 +25,5 @@ export declare function resolveVenvPath(cwd: string): string | undefined;
|
|
|
18
25
|
/**
|
|
19
26
|
* Resolve Python runtime including executable path, environment, and venv detection.
|
|
20
27
|
*/
|
|
21
|
-
export declare function resolvePythonRuntime(cwd: string, baseEnv: Record<string, string | undefined
|
|
28
|
+
export declare function resolvePythonRuntime(cwd: string, baseEnv: Record<string, string | undefined>, options?: PythonRuntimeOptions): PythonRuntime;
|
|
29
|
+
export declare function ensurePythonRuntime(cwd: string, baseEnv: Record<string, string | undefined>, options?: PythonRuntimeOptions): Promise<PythonRuntime>;
|
|
@@ -21,6 +21,10 @@ export interface BashExecutorOptions {
|
|
|
21
21
|
artifactId?: string;
|
|
22
22
|
/** Execute without retaining a native Shell in the persistent session registry. */
|
|
23
23
|
oneShot?: boolean;
|
|
24
|
+
/** Ignore user-configured shell command prefixes. Used by constrained read-only shells. */
|
|
25
|
+
ignoreShellPrefix?: boolean;
|
|
26
|
+
/** Skip sourced shell snapshots. Used by constrained read-only shells. */
|
|
27
|
+
disableShellSnapshot?: boolean;
|
|
24
28
|
/**
|
|
25
29
|
* Invoked when the native minimizer rewrote the command's output, giving
|
|
26
30
|
* the caller a chance to persist the lossless original capture (typically
|
|
@@ -163,6 +163,8 @@ export interface CustomTool<TParams extends TSchema = TSchema, TDetails = any> {
|
|
|
163
163
|
label: string;
|
|
164
164
|
/** If true, tool is strictly typed and validated against the parameters schema before execution */
|
|
165
165
|
strict?: boolean;
|
|
166
|
+
/** Tool scheduling mode; exclusive tools do not run in parallel with other tools in a model turn. */
|
|
167
|
+
concurrency?: "shared" | "exclusive";
|
|
166
168
|
/** Description for LLM */
|
|
167
169
|
description: string;
|
|
168
170
|
/** Parameter schema (Zod or TypeBox; TypeBox is auto-lifted to Zod at registration). */
|
|
@@ -13,6 +13,7 @@ export declare class CustomToolAdapter<TParams extends TSchema = TSchema, TDetai
|
|
|
13
13
|
description: string;
|
|
14
14
|
parameters: TParams;
|
|
15
15
|
readonly strict: boolean | undefined;
|
|
16
|
+
readonly concurrency: "shared" | "exclusive" | undefined;
|
|
16
17
|
constructor(tool: CustomTool<TParams, TDetails>, getContext: () => CustomToolContext);
|
|
17
18
|
execute(toolCallId: string, params: Static<TParams>, signal?: AbortSignal, onUpdate?: AgentToolUpdateCallback<TDetails, TParams>, context?: CustomToolContext): Promise<import("@gajae-code/agent-core").AgentToolResult<TDetails, TParams>>;
|
|
18
19
|
/**
|
|
@@ -270,6 +270,8 @@ export interface ToolDefinition<TParams extends TSchema = TSchema, TDetails = un
|
|
|
270
270
|
description: string;
|
|
271
271
|
/** Parameter schema (Zod, or TypeBox for legacy/extension compat). */
|
|
272
272
|
parameters: TParams;
|
|
273
|
+
/** Tool scheduling mode; exclusive tools do not run in parallel with other tools in a model turn. */
|
|
274
|
+
concurrency?: "shared" | "exclusive";
|
|
273
275
|
/** If true, tool is excluded unless explicitly listed in --tools or agent's tools field */
|
|
274
276
|
hidden?: boolean;
|
|
275
277
|
/** If true, tool is registered but not auto-included in the initial active set.
|
|
@@ -16,6 +16,7 @@ export declare class RegisteredToolAdapter implements AgentTool<any, any, any> {
|
|
|
16
16
|
parameters: any;
|
|
17
17
|
label: string;
|
|
18
18
|
strict: boolean;
|
|
19
|
+
concurrency: "shared" | "exclusive" | undefined;
|
|
19
20
|
renderCall?: (args: any, options: any, theme: any) => any;
|
|
20
21
|
renderResult?: (result: any, options: any, theme: any, args?: any) => any;
|
|
21
22
|
constructor(registeredTool: RegisteredTool, runner: ExtensionRunner);
|
|
@@ -3,6 +3,7 @@ import { buildGjcTmuxProfileCommands, GJC_DEFAULT_TMUX_SESSION, GJC_TMUX_COMMAND
|
|
|
3
3
|
export { buildGjcTmuxProfileCommands, GJC_DEFAULT_TMUX_SESSION, GJC_TMUX_COMMAND_ENV, GJC_TMUX_MOUSE_ENV, GJC_TMUX_PROFILE_ENV, GJC_TMUX_SESSION_PREFIX, };
|
|
4
4
|
export declare const GJC_TMUX_LAUNCHED_ENV = "GJC_TMUX_LAUNCHED";
|
|
5
5
|
export declare const GJC_LAUNCH_POLICY_ENV = "GJC_LAUNCH_POLICY";
|
|
6
|
+
export declare const GJC_TMUX_WINDOW_LABEL_MAX_WIDTH = 48;
|
|
6
7
|
interface TtyState {
|
|
7
8
|
stdin: boolean;
|
|
8
9
|
stdout: boolean;
|
|
@@ -46,6 +47,8 @@ export interface TmuxLaunchPlan {
|
|
|
46
47
|
branch?: string | null;
|
|
47
48
|
attachSessionName?: string;
|
|
48
49
|
project?: string | null;
|
|
50
|
+
sessionId?: string | null;
|
|
51
|
+
sessionStateFile?: string | null;
|
|
49
52
|
}
|
|
50
53
|
export interface GjcTmuxProfileResult {
|
|
51
54
|
skipped: boolean;
|
|
@@ -64,7 +67,10 @@ export interface GjcTmuxProfileContext {
|
|
|
64
67
|
branch?: string | null;
|
|
65
68
|
branchSlug?: string | null;
|
|
66
69
|
project?: string | null;
|
|
70
|
+
sessionId?: string | null;
|
|
71
|
+
sessionStateFile?: string | null;
|
|
67
72
|
}
|
|
68
73
|
export declare function applyGjcTmuxProfile(context: GjcTmuxProfileContext): GjcTmuxProfileResult;
|
|
74
|
+
export declare function buildGjcTmuxWindowTitle(cwd: string, branch: string | null | undefined): string;
|
|
69
75
|
export declare function buildDefaultTmuxLaunchPlan(context: TmuxLaunchContext): TmuxLaunchPlan | undefined;
|
|
70
76
|
export declare function launchDefaultTmuxIfNeeded(context: TmuxLaunchContext): boolean;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const GJC_COORDINATOR_SESSION_STATE_FILE_ENV = "GJC_COORDINATOR_SESSION_STATE_FILE";
|
|
2
2
|
export declare const GJC_COORDINATOR_SESSION_ID_ENV = "GJC_COORDINATOR_SESSION_ID";
|
|
3
|
+
export type RuntimeState = "ready_for_input" | "running" | "needs_user_input" | "completed" | "errored";
|
|
3
4
|
interface RuntimeStateEvent {
|
|
4
5
|
type: string;
|
|
5
6
|
messages?: unknown[];
|
|
@@ -9,5 +10,18 @@ interface RuntimeStateContext {
|
|
|
9
10
|
cwd: string;
|
|
10
11
|
sessionFile?: string | null;
|
|
11
12
|
}
|
|
13
|
+
export type TerminalRuntimeStateStatus = {
|
|
14
|
+
terminal: true;
|
|
15
|
+
state: "completed" | "errored";
|
|
16
|
+
} | {
|
|
17
|
+
terminal: false;
|
|
18
|
+
reason: "missing_state_file" | "invalid_json" | "session_id_mismatch" | "cwd_mismatch" | "session_file_mismatch" | "non_terminal_state";
|
|
19
|
+
};
|
|
20
|
+
export declare function readTerminalRuntimeStateMarker(input: {
|
|
21
|
+
stateFile?: string | null;
|
|
22
|
+
sessionId?: string | null;
|
|
23
|
+
cwd?: string | null;
|
|
24
|
+
sessionFile?: string | null;
|
|
25
|
+
}): Promise<TerminalRuntimeStateStatus>;
|
|
12
26
|
export declare function persistCoordinatorRuntimeStateFromEvent(event: RuntimeStateEvent, context: RuntimeStateContext): Promise<void>;
|
|
13
27
|
export {};
|
|
@@ -8,6 +8,8 @@ export declare const GJC_TMUX_PROFILE_VALUE = "1";
|
|
|
8
8
|
export declare const GJC_TMUX_BRANCH_OPTION = "@gjc-branch";
|
|
9
9
|
export declare const GJC_TMUX_BRANCH_SLUG_OPTION = "@gjc-branch-slug";
|
|
10
10
|
export declare const GJC_TMUX_PROJECT_OPTION = "@gjc-project";
|
|
11
|
+
export declare const GJC_TMUX_SESSION_ID_OPTION = "@gjc-session-id";
|
|
12
|
+
export declare const GJC_TMUX_SESSION_STATE_FILE_OPTION = "@gjc-session-state-file";
|
|
11
13
|
export interface GjcTmuxProfileCommand {
|
|
12
14
|
description: string;
|
|
13
15
|
args: string[];
|
|
@@ -46,10 +48,14 @@ export declare function buildGjcTmuxRequiredProfileCommands(target: string, meta
|
|
|
46
48
|
branch?: string | null;
|
|
47
49
|
branchSlug?: string | null;
|
|
48
50
|
project?: string | null;
|
|
51
|
+
sessionId?: string | null;
|
|
52
|
+
sessionStateFile?: string | null;
|
|
49
53
|
}): GjcTmuxProfileCommand[];
|
|
50
54
|
export declare function buildGjcTmuxProfileCommands(target: string, env?: NodeJS.ProcessEnv, metadata?: {
|
|
51
55
|
branch?: string | null;
|
|
52
56
|
branchSlug?: string | null;
|
|
53
57
|
project?: string | null;
|
|
58
|
+
sessionId?: string | null;
|
|
59
|
+
sessionStateFile?: string | null;
|
|
54
60
|
}): GjcTmuxProfileCommand[];
|
|
55
61
|
export declare function normalizeTmuxCreatedAt(raw: string): string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* GC adapter for gjc-tagged tmux sessions.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* GC adapter for gjc-tagged tmux sessions. Destructive cleanup is authorized
|
|
3
|
+
* only for detached pane-less sessions whose exact runtime marker revalidates a
|
|
4
|
+
* terminal state. Project/branch/orphan heuristics are discovery signals only.
|
|
5
5
|
*/
|
|
6
6
|
import type { GcStoreAdapter } from "./gc-runtime";
|
|
7
7
|
export declare const tmuxSessionsGcAdapter: GcStoreAdapter;
|
|
@@ -8,6 +8,8 @@ export interface GjcTmuxSessionStatus {
|
|
|
8
8
|
branch?: string;
|
|
9
9
|
branchSlug?: string;
|
|
10
10
|
project?: string;
|
|
11
|
+
sessionId?: string;
|
|
12
|
+
sessionStateFile?: string;
|
|
11
13
|
panePids: number[];
|
|
12
14
|
profile?: string;
|
|
13
15
|
}
|
|
@@ -16,6 +18,8 @@ export interface GjcTmuxSessionTagsForGc {
|
|
|
16
18
|
project?: string;
|
|
17
19
|
branch?: string;
|
|
18
20
|
branchSlug?: string;
|
|
21
|
+
sessionId?: string;
|
|
22
|
+
sessionStateFile?: string;
|
|
19
23
|
createdAt?: string;
|
|
20
24
|
attached?: boolean;
|
|
21
25
|
panePids?: number[];
|
|
@@ -121,6 +121,23 @@ export declare function startNextUltragoalGoal(input: {
|
|
|
121
121
|
allComplete: boolean;
|
|
122
122
|
}>;
|
|
123
123
|
type SurfaceFamily = "web" | "cli" | "native" | "api-package" | "algorithm-math" | "unknown";
|
|
124
|
+
type UltragoalChangeStatus = "added" | "modified" | "deleted" | "renamed" | "copied" | "unknown";
|
|
125
|
+
type UltragoalChangeCategory = "code" | "generated-binding" | "tool" | "settings-registry" | "prompt-doc-behavior" | "docs-static" | "other";
|
|
126
|
+
interface UltragoalChangeSetPath extends JsonObject {
|
|
127
|
+
path: string;
|
|
128
|
+
status: UltragoalChangeStatus;
|
|
129
|
+
oldPath?: string;
|
|
130
|
+
category?: UltragoalChangeCategory;
|
|
131
|
+
}
|
|
132
|
+
interface UltragoalChangeSet extends JsonObject {
|
|
133
|
+
source: "checkpoint-git" | "review-pr" | "review-branch" | "review-worktree" | "review-spec";
|
|
134
|
+
baseRef?: string;
|
|
135
|
+
headRef?: string;
|
|
136
|
+
mergeBase?: string;
|
|
137
|
+
paths: UltragoalChangeSetPath[];
|
|
138
|
+
rawDiffStat?: string;
|
|
139
|
+
trusted: true;
|
|
140
|
+
}
|
|
124
141
|
export declare function normalizeSurfaceToken(value: string): string;
|
|
125
142
|
export declare function surfaceFamily(value: string): SurfaceFamily;
|
|
126
143
|
export interface ReplayProcessHandle {
|
|
@@ -130,6 +147,7 @@ export interface ReplayProcessHandle {
|
|
|
130
147
|
export declare function waitForReplayProcessWithTimeout(process: ReplayProcessHandle, timeoutMs: number, graceMs?: number): Promise<number>;
|
|
131
148
|
export declare function validateExecutorQaRedTeamEvidenceForReview(cwd: string, executorQa: Record<string, unknown>, options?: {
|
|
132
149
|
mode?: "review";
|
|
150
|
+
changeSet?: UltragoalChangeSet;
|
|
133
151
|
}): Promise<void>;
|
|
134
152
|
export declare function checkpointUltragoalGoal(input: {
|
|
135
153
|
cwd: string;
|
|
@@ -16,7 +16,7 @@ export interface GoalModeState {
|
|
|
16
16
|
goal: Goal;
|
|
17
17
|
}
|
|
18
18
|
export interface GoalToolDetails {
|
|
19
|
-
op: "create" | "get" | "complete" | "resume" | "drop";
|
|
19
|
+
op: "create" | "get" | "complete" | "resume" | "drop" | "pause";
|
|
20
20
|
goal?: Goal | null;
|
|
21
21
|
}
|
|
22
22
|
export type GoalRuntimeEvent = {
|
|
@@ -11,6 +11,7 @@ declare const goalSchema: z.ZodObject<{
|
|
|
11
11
|
create: "create";
|
|
12
12
|
drop: "drop";
|
|
13
13
|
get: "get";
|
|
14
|
+
pause: "pause";
|
|
14
15
|
resume: "resume";
|
|
15
16
|
}>;
|
|
16
17
|
objective: z.ZodOptional<z.ZodString>;
|
|
@@ -32,6 +33,7 @@ export declare class GoalTool implements AgentTool<typeof goalSchema, GoalToolDe
|
|
|
32
33
|
create: "create";
|
|
33
34
|
drop: "drop";
|
|
34
35
|
get: "get";
|
|
36
|
+
pause: "pause";
|
|
35
37
|
resume: "resume";
|
|
36
38
|
}>;
|
|
37
39
|
objective: z.ZodOptional<z.ZodString>;
|