@gajae-code/coding-agent 0.15.6 → 0.16.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 +99 -0
- package/dist/types/async/job-manager.d.ts +32 -1
- package/dist/types/browser-backend.d.ts +12 -0
- package/dist/types/cli/args.d.ts +2 -0
- package/dist/types/cli/root-flags.d.ts +14 -0
- package/dist/types/cli/update-cli.d.ts +14 -0
- package/dist/types/cli.d.ts +7 -0
- package/dist/types/commands/launch.d.ts +10 -0
- package/dist/types/commands/sdk.d.ts +2 -0
- package/dist/types/config/autorouting-tier-map.d.ts +24 -0
- package/dist/types/config/billing-path.d.ts +25 -0
- package/dist/types/config/config-schema-version.d.ts +13 -1
- package/dist/types/config/file-lock.d.ts +5 -0
- package/dist/types/config/model-registry.d.ts +22 -0
- package/dist/types/config/settings-schema.d.ts +27 -8
- package/dist/types/config/settings.d.ts +2 -0
- package/dist/types/coordinator-mcp/projection-scan.d.ts +8 -0
- package/dist/types/crash/record-loader.d.ts +15 -0
- package/dist/types/extensibility/extensions/types.d.ts +8 -3
- package/dist/types/gjc-runtime/launch-worktree-reservation.d.ts +21 -0
- package/dist/types/gjc-runtime/launch-worktree.d.ts +25 -1
- package/dist/types/gjc-runtime/managed-owner-supervisor.d.ts +2 -0
- package/dist/types/gjc-runtime/session-state-lock.d.ts +22 -0
- package/dist/types/gjc-runtime/session-state-sidecar.d.ts +66 -1
- package/dist/types/gjc-runtime/tmux-owner-isolation.d.ts +1 -0
- package/dist/types/gjc-runtime/tmux-sessions.d.ts +27 -0
- package/dist/types/main.d.ts +1 -0
- package/dist/types/master-mode/context.d.ts +21 -0
- package/dist/types/master-mode/first-request.d.ts +34 -0
- package/dist/types/master-mode/snapshot.d.ts +32 -0
- package/dist/types/modes/acp/acp-agent.d.ts +21 -21
- package/dist/types/modes/components/frictionless-onboarding-selector.d.ts +10 -0
- package/dist/types/modes/components/model-selector.d.ts +4 -0
- package/dist/types/modes/components/oauth-selector.d.ts +1 -0
- package/dist/types/modes/components/session-selector.d.ts +1 -1
- package/dist/types/modes/components/sessions-dashboard.d.ts +2 -1
- package/dist/types/modes/components/status-line/model-name.d.ts +18 -0
- package/dist/types/modes/components/status-line/priority-row.d.ts +34 -0
- package/dist/types/modes/components/status-line/segments.d.ts +10 -0
- package/dist/types/modes/interactive-mode.d.ts +16 -2
- package/dist/types/modes/print-mode.d.ts +17 -0
- package/dist/types/modes/theme/theme.d.ts +2 -1
- package/dist/types/modes/types.d.ts +2 -0
- package/dist/types/modes/ui-language.d.ts +7 -1
- package/dist/types/sdk/broker/broker.d.ts +79 -2
- package/dist/types/sdk/broker/endpoint-authority.d.ts +24 -0
- package/dist/types/sdk/broker/ensure.d.ts +3 -0
- package/dist/types/sdk/broker/index.d.ts +3 -0
- package/dist/types/sdk/broker/lifecycle-ledger.d.ts +6 -0
- package/dist/types/sdk/broker/lifecycle.d.ts +40 -0
- package/dist/types/sdk/broker/master-capability.d.ts +10 -0
- package/dist/types/sdk/broker/session-index.d.ts +40 -11
- package/dist/types/sdk/broker/session-scope.d.ts +72 -0
- package/dist/types/sdk/broker/spawn-authority.d.ts +201 -0
- package/dist/types/sdk/broker/spawn-substrate.d.ts +30 -0
- package/dist/types/sdk/broker/startup-budget.d.ts +52 -0
- package/dist/types/sdk/broker/state-version.d.ts +21 -1
- package/dist/types/sdk/broker/worktree-occupancy.d.ts +28 -0
- package/dist/types/sdk/bus/chat-daemon-control.d.ts +3 -0
- package/dist/types/sdk/bus/discord-daemon.d.ts +1 -1
- package/dist/types/sdk/bus/index.d.ts +9 -1
- package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +1 -1
- package/dist/types/sdk/bus/prompt-reconciliation.d.ts +1 -1
- package/dist/types/sdk/bus/slack-conversation.d.ts +1 -1
- package/dist/types/sdk/bus/slack-daemon.d.ts +1 -1
- package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +1 -1
- package/dist/types/sdk/cli/index.d.ts +1 -0
- package/dist/types/sdk/cli/master-cli.d.ts +63 -0
- package/dist/types/sdk/cli/rows.d.ts +12 -5
- package/dist/types/sdk/cli/session-cli.d.ts +20 -3
- package/dist/types/sdk/client/client.d.ts +3 -2
- package/dist/types/sdk/host/control/dispatch.d.ts +10 -0
- package/dist/types/sdk/host/control/index.d.ts +1 -1
- package/dist/types/sdk/host/control/operations.d.ts +2 -0
- package/dist/types/sdk/host/control/runtime-gate.d.ts +21 -7
- package/dist/types/sdk/host/events.d.ts +1 -0
- package/dist/types/sdk/host/host.d.ts +10 -0
- package/dist/types/sdk/host/query/cursor.d.ts +4 -2
- package/dist/types/sdk/host/query/handlers.d.ts +1 -0
- package/dist/types/sdk/host/query/revision-store.d.ts +1 -0
- package/dist/types/sdk/host/session-runtime.d.ts +70 -17
- package/dist/types/sdk/lifecycle/broker-client.d.ts +6 -0
- package/dist/types/sdk/lifecycle/service.d.ts +15 -3
- package/dist/types/sdk/lifecycle-session.d.ts +3 -1
- package/dist/types/sdk/prompt-deadline-manager.d.ts +2 -5
- package/dist/types/sdk/receipt-state.d.ts +2 -0
- package/dist/types/sdk/router/session-router.d.ts +6 -0
- package/dist/types/sdk/session.d.ts +16 -0
- package/dist/types/sdk/startup-capability.d.ts +2 -1
- package/dist/types/sdk/turn-result.d.ts +6 -0
- package/dist/types/session/agent-session.d.ts +52 -7
- package/dist/types/session/credential-store-errors.d.ts +1 -0
- package/dist/types/session/fold-coordinator.d.ts +29 -2
- package/dist/types/session/session-manager.d.ts +79 -2
- package/dist/types/session/yield-queue.d.ts +5 -4
- package/dist/types/setup/frictionless-onboarding.d.ts +1 -0
- package/dist/types/tools/ask.d.ts +1 -0
- package/dist/types/tools/bash.d.ts +16 -0
- package/dist/types/tools/browser/launch.d.ts +10 -0
- package/dist/types/tools/browser/registry.d.ts +8 -0
- package/dist/types/tools/gh.d.ts +8 -0
- package/dist/types/tools/index.d.ts +10 -10
- package/dist/types/tools/job.d.ts +3 -1
- package/dist/types/utils/external-editor.d.ts +7 -0
- package/examples/extensions/README.md +1 -1
- package/examples/extensions/pirate.ts +7 -4
- package/package.json +7 -7
- package/scripts/generate-sdk-operation-inventory.ts +13 -1
- package/scripts/verify-gjc-sdk-canonicalization.ts +35 -1
- package/src/async/job-manager.ts +107 -9
- package/src/browser-backend.ts +29 -0
- package/src/cli/accounts-cli.ts +9 -5
- package/src/cli/args.ts +17 -0
- package/src/cli/fast-help.ts +1 -0
- package/src/cli/plugin-cli.ts +29 -0
- package/src/cli/root-flags.ts +5 -0
- package/src/cli/update-cli.ts +140 -23
- package/src/commands/launch.ts +86 -18
- package/src/commands/sdk.ts +135 -28
- package/src/config/autorouting-tier-map.ts +12 -0
- package/src/config/billing-path.ts +42 -0
- package/src/config/config-schema-version.ts +18 -1
- package/src/config/file-lock.ts +158 -83
- package/src/config/model-preset-registry.ts +178 -23
- package/src/config/model-profiles.ts +5 -5
- package/src/config/model-registry.ts +291 -42
- package/src/config/model-resolver.ts +5 -0
- package/src/config/settings-schema.ts +27 -8
- package/src/config/settings.ts +51 -15
- package/src/coordinator-mcp/projection-scan.ts +27 -6
- package/src/coordinator-mcp/question-state.ts +9 -11
- package/src/coordinator-mcp/server.ts +115 -21
- package/src/crash/index-store.ts +2 -0
- package/src/crash/record-loader.ts +10 -0
- package/src/defaults/gjc/skills/deep-interview/SKILL.md +1 -1
- package/src/extensibility/extensions/runner.ts +27 -0
- package/src/extensibility/extensions/types.ts +8 -3
- package/src/extensibility/gjc-plugins/installer.ts +51 -11
- package/src/extensibility/runtime-skill-discovery.ts +110 -3
- package/src/extensibility/skills.ts +22 -12
- package/src/gjc-runtime/launch-worktree-reservation.ts +242 -0
- package/src/gjc-runtime/launch-worktree.ts +285 -4
- package/src/gjc-runtime/managed-owner-supervisor.ts +63 -51
- package/src/gjc-runtime/session-state-lock.ts +213 -14
- package/src/gjc-runtime/session-state-sidecar.ts +938 -39
- package/src/gjc-runtime/tmux-owner-isolation-cli.ts +4 -7
- package/src/gjc-runtime/tmux-owner-isolation.ts +18 -3
- package/src/gjc-runtime/tmux-sessions.ts +252 -13
- package/src/hooks/skill-state.ts +6 -0
- package/src/internal-urls/docs-index.generated.ts +15 -15
- package/src/internal-urls/issue-pr-protocol.ts +4 -2
- package/src/main.ts +61 -3
- package/src/master-mode/context.ts +50 -0
- package/src/master-mode/first-request.ts +65 -0
- package/src/master-mode/snapshot.ts +205 -0
- package/src/modes/acp/acp-agent.ts +610 -161
- package/src/modes/components/footer.ts +4 -2
- package/src/modes/components/frictionless-onboarding-selector.ts +48 -2
- package/src/modes/components/model-selector.ts +76 -8
- package/src/modes/components/oauth-selector.ts +6 -1
- package/src/modes/components/session-selector.ts +23 -15
- package/src/modes/components/sessions-dashboard.ts +8 -5
- package/src/modes/components/settings-selector.ts +1 -0
- package/src/modes/components/status-line/model-name.ts +53 -0
- package/src/modes/components/status-line/priority-row.ts +107 -0
- package/src/modes/components/status-line/segments.ts +23 -9
- package/src/modes/components/tool-status-header.ts +151 -15
- package/src/modes/controllers/command-controller.ts +1 -1
- package/src/modes/controllers/event-controller.ts +30 -4
- package/src/modes/controllers/extension-ui-controller.ts +13 -13
- package/src/modes/controllers/input-controller.ts +30 -2
- package/src/modes/controllers/selector-controller.ts +200 -98
- package/src/modes/interactive-mode.ts +36 -12
- package/src/modes/print-mode.ts +64 -0
- package/src/modes/prompt-action-autocomplete.ts +30 -4
- package/src/modes/runtime-init.ts +12 -9
- package/src/modes/theme/theme.ts +5 -0
- package/src/modes/types.ts +2 -0
- package/src/modes/ui-language.ts +49 -2
- package/src/modes/utils/ui-helpers.ts +22 -3
- package/src/prompts/agent-fragments/browser-aside.md +22 -0
- package/src/prompts/system/master-mode.md +28 -0
- package/src/prompts/tools/ask.md +1 -1
- package/src/prompts/tools/bash.md +1 -0
- package/src/prompts/tools/job.md +1 -1
- package/src/sdk/acp/adapter.ts +5 -0
- package/src/sdk/broker/broker.ts +1646 -27
- package/src/sdk/broker/endpoint-authority.ts +86 -0
- package/src/sdk/broker/ensure.ts +81 -3
- package/src/sdk/broker/index.ts +3 -0
- package/src/sdk/broker/lifecycle-ledger.ts +6 -0
- package/src/sdk/broker/lifecycle.ts +440 -75
- package/src/sdk/broker/master-capability.ts +232 -0
- package/src/sdk/broker/session-index.ts +121 -17
- package/src/sdk/broker/session-scope.ts +272 -0
- package/src/sdk/broker/spawn-authority.ts +1031 -0
- package/src/sdk/broker/spawn-substrate.ts +591 -0
- package/src/sdk/broker/startup-budget.ts +144 -2
- package/src/sdk/broker/state-version.ts +43 -14
- package/src/sdk/broker/transport.ts +1 -0
- package/src/sdk/broker/worktree-occupancy.ts +90 -0
- package/src/sdk/bus/chat-daemon-control.ts +5 -2
- package/src/sdk/bus/chat-daemon-runtime.ts +136 -18
- package/src/sdk/bus/discord-daemon.ts +50 -10
- package/src/sdk/bus/index.ts +84 -7
- package/src/sdk/bus/kind-aware-reconciliation.ts +296 -48
- package/src/sdk/bus/lifecycle-commands.ts +4 -0
- package/src/sdk/bus/notification-service.ts +22 -5
- package/src/sdk/bus/prompt-reconciliation.ts +7 -2
- package/src/sdk/bus/reconciliation-store.ts +55 -31
- package/src/sdk/bus/slack-conversation.ts +1 -1
- package/src/sdk/bus/slack-daemon.ts +72 -38
- package/src/sdk/bus/telegram-daemon-contract.ts +1 -1
- package/src/sdk/cli/index.ts +1 -0
- package/src/sdk/cli/master-cli.ts +259 -0
- package/src/sdk/cli/rows.ts +41 -15
- package/src/sdk/cli/session-cli.ts +297 -26
- package/src/sdk/client/client.ts +14 -8
- package/src/sdk/host/control/dispatch.ts +101 -40
- package/src/sdk/host/control/index.ts +2 -0
- package/src/sdk/host/control/operations.ts +2 -0
- package/src/sdk/host/control/runtime-gate.ts +203 -11
- package/src/sdk/host/events.ts +1 -0
- package/src/sdk/host/host.ts +29 -2
- package/src/sdk/host/query/cursor.ts +52 -7
- package/src/sdk/host/query/handlers.ts +33 -12
- package/src/sdk/host/query/revision-store.ts +12 -0
- package/src/sdk/host/session-runtime.test.ts +673 -14
- package/src/sdk/host/session-runtime.ts +674 -103
- package/src/sdk/host/surface-policy.ts +3 -3
- package/src/sdk/lifecycle/broker-client.ts +28 -0
- package/src/sdk/lifecycle/service.ts +279 -20
- package/src/sdk/lifecycle-session.ts +17 -4
- package/src/sdk/prompt-deadline-manager.ts +2 -1
- package/src/sdk/protocol/operation-inventory.generated.json +105 -3
- package/src/sdk/protocol/operation-registry.ts +14 -4
- package/src/sdk/receipt-state.ts +10 -0
- package/src/sdk/router/session-router.ts +219 -118
- package/src/sdk/session.ts +416 -195
- package/src/sdk/startup-capability.ts +1 -0
- package/src/sdk/turn-result.ts +22 -0
- package/src/session/agent-session.ts +1628 -318
- package/src/session/blob-store.ts +15 -5
- package/src/session/credential-store-errors.ts +2 -0
- package/src/session/fold-coordinator.ts +40 -3
- package/src/session/internal/managed-session-storage.ts +153 -78
- package/src/session/session-manager.ts +850 -97
- package/src/session/yield-queue.ts +24 -10
- package/src/setup/frictionless-onboarding.ts +2 -0
- package/src/slash-commands/builtin-registry.ts +41 -0
- package/src/task/executor.ts +9 -4
- package/src/telemetry/events.ts +1138 -12
- package/src/tools/ask-contract.test.ts +64 -0
- package/src/tools/ask-contract.ts +36 -1
- package/src/tools/ask.ts +10 -8
- package/src/tools/bash-interactive.ts +11 -2
- package/src/tools/bash.ts +412 -75
- package/src/tools/browser/launch.ts +37 -0
- package/src/tools/browser/registry.ts +99 -9
- package/src/tools/cron.ts +6 -4
- package/src/tools/descriptors.test.ts +15 -0
- package/src/tools/descriptors.ts +5 -1
- package/src/tools/gh.ts +104 -48
- package/src/tools/github-cache.ts +2 -2
- package/src/tools/index.ts +10 -6
- package/src/tools/job.ts +4 -1
- package/src/tools/monitor.ts +12 -9
- package/src/tools/resolve.ts +30 -10
- package/src/tools/tool-catalog.generated.ts +2 -2
- package/src/utils/external-editor.ts +72 -1
|
@@ -18,8 +18,9 @@ export interface YieldDispatcher<P> {
|
|
|
18
18
|
export interface YieldQueueOptions {
|
|
19
19
|
isStreaming: () => boolean;
|
|
20
20
|
injectStreaming(msg: AgentMessage): void;
|
|
21
|
-
injectIdle(messages: AgentMessage[]): Promise<void>;
|
|
22
|
-
scheduleIdleFlush(run: () => Promise<void
|
|
21
|
+
injectIdle(messages: AgentMessage[], signal?: AbortSignal): Promise<void>;
|
|
22
|
+
scheduleIdleFlush(run: (signal?: AbortSignal) => Promise<void>, onSkip: () => void): void;
|
|
23
|
+
getIdleFlushSignal?(): AbortSignal | undefined;
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
type YieldFlushMode = "streaming" | "idle";
|
|
@@ -39,6 +40,7 @@ export class YieldQueue {
|
|
|
39
40
|
readonly #dispatchers = new Map<string, StoredDispatcher>();
|
|
40
41
|
readonly #entries = new Map<string, unknown[]>();
|
|
41
42
|
#idleFlushPending = false;
|
|
43
|
+
#idleFlushPendingOwner: symbol | undefined;
|
|
42
44
|
|
|
43
45
|
constructor(options: YieldQueueOptions) {
|
|
44
46
|
this.#options = options;
|
|
@@ -82,9 +84,10 @@ export class YieldQueue {
|
|
|
82
84
|
return false;
|
|
83
85
|
}
|
|
84
86
|
|
|
85
|
-
async flush(mode: YieldFlushMode): Promise<void> {
|
|
87
|
+
async flush(mode: YieldFlushMode, signal?: AbortSignal): Promise<void> {
|
|
86
88
|
if (mode === "idle") {
|
|
87
89
|
this.#idleFlushPending = false;
|
|
90
|
+
this.#idleFlushPendingOwner = undefined;
|
|
88
91
|
}
|
|
89
92
|
const idleMessages: AgentMessage[] = [];
|
|
90
93
|
for (const [kind, dispatcher] of this.#dispatchers) {
|
|
@@ -105,16 +108,20 @@ export class YieldQueue {
|
|
|
105
108
|
}
|
|
106
109
|
if (mode === "idle" && idleMessages.length > 0) {
|
|
107
110
|
try {
|
|
108
|
-
await this.#options.injectIdle(idleMessages);
|
|
111
|
+
await this.#options.injectIdle(idleMessages, signal ?? this.#options.getIdleFlushSignal?.());
|
|
109
112
|
} catch (error) {
|
|
110
113
|
logger.warn("Yield queue idle dispatch failed", { error: formatError(error) });
|
|
111
114
|
}
|
|
112
115
|
}
|
|
113
116
|
}
|
|
114
117
|
|
|
115
|
-
clear(): void {
|
|
118
|
+
clear(onDrop?: (kind: string, entries: readonly unknown[]) => void): void {
|
|
119
|
+
if (onDrop) {
|
|
120
|
+
for (const [kind, entries] of this.#entries) onDrop(kind, entries);
|
|
121
|
+
}
|
|
116
122
|
this.#entries.clear();
|
|
117
123
|
this.#idleFlushPending = false;
|
|
124
|
+
this.#idleFlushPendingOwner = undefined;
|
|
118
125
|
}
|
|
119
126
|
|
|
120
127
|
/** Drop only the queued entries of a single kind, leaving other kinds intact. */
|
|
@@ -140,14 +147,21 @@ export class YieldQueue {
|
|
|
140
147
|
#scheduleIdleFlush(): void {
|
|
141
148
|
if (this.#idleFlushPending) return;
|
|
142
149
|
this.#idleFlushPending = true;
|
|
150
|
+
const owner = Symbol("idle-flush");
|
|
151
|
+
this.#idleFlushPendingOwner = owner;
|
|
152
|
+
const releaseOwner = () => {
|
|
153
|
+
if (this.#idleFlushPendingOwner !== owner) return;
|
|
154
|
+
this.#idleFlushPendingOwner = undefined;
|
|
155
|
+
this.#idleFlushPending = false;
|
|
156
|
+
};
|
|
143
157
|
try {
|
|
144
|
-
this.#options.scheduleIdleFlush(async
|
|
145
|
-
|
|
158
|
+
this.#options.scheduleIdleFlush(async signal => {
|
|
159
|
+
releaseOwner();
|
|
146
160
|
if (this.#options.isStreaming()) return;
|
|
147
|
-
await this.flush("idle");
|
|
148
|
-
});
|
|
161
|
+
await this.flush("idle", signal);
|
|
162
|
+
}, releaseOwner);
|
|
149
163
|
} catch (error) {
|
|
150
|
-
|
|
164
|
+
releaseOwner();
|
|
151
165
|
logger.warn("Yield queue idle flush scheduling failed", { error: formatError(error) });
|
|
152
166
|
}
|
|
153
167
|
}
|
|
@@ -748,6 +748,7 @@ export function shouldOfferOnboarding(state: FrictionlessOnboardingState): boole
|
|
|
748
748
|
|
|
749
749
|
export interface AutomaticOnboardingInput {
|
|
750
750
|
normalInteractive: boolean;
|
|
751
|
+
automation?: boolean;
|
|
751
752
|
initialMessage?: string;
|
|
752
753
|
initialMessages: readonly string[];
|
|
753
754
|
initialImages?: readonly unknown[];
|
|
@@ -757,6 +758,7 @@ export interface AutomaticOnboardingInput {
|
|
|
757
758
|
export function shouldOfferAutomaticOnboarding(input: AutomaticOnboardingInput): boolean {
|
|
758
759
|
return (
|
|
759
760
|
input.normalInteractive &&
|
|
761
|
+
!input.automation &&
|
|
760
762
|
!input.initialMessage &&
|
|
761
763
|
input.initialMessages.length === 0 &&
|
|
762
764
|
(input.initialImages?.length ?? 0) === 0 &&
|
|
@@ -139,6 +139,29 @@ function toSlashCommandRuntime(runtime: TuiSlashCommandRuntime): SlashCommandRun
|
|
|
139
139
|
};
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
+
async function updateSessionStar(
|
|
143
|
+
starred: boolean,
|
|
144
|
+
command: ParsedSlashCommand,
|
|
145
|
+
runtime: SlashCommandRuntime,
|
|
146
|
+
): Promise<SlashCommandResult> {
|
|
147
|
+
if (command.args) return usage(`Usage: /${starred ? "star" : "unstar"}`, runtime);
|
|
148
|
+
if (!runtime.sessionManager.isPersisted()) {
|
|
149
|
+
await runtime.output("Session stars require a persisted session.");
|
|
150
|
+
return commandConsumed();
|
|
151
|
+
}
|
|
152
|
+
const changed = await runtime.sessionManager.setSessionStarred(starred);
|
|
153
|
+
await runtime.output(
|
|
154
|
+
changed
|
|
155
|
+
? starred
|
|
156
|
+
? "Session starred."
|
|
157
|
+
: "Session unstarred."
|
|
158
|
+
: starred
|
|
159
|
+
? "Session is already starred."
|
|
160
|
+
: "Session is not starred.",
|
|
161
|
+
);
|
|
162
|
+
return commandConsumed();
|
|
163
|
+
}
|
|
164
|
+
|
|
142
165
|
function parseProviderSetupSlashArgs(args: string): {
|
|
143
166
|
preset?: string;
|
|
144
167
|
compat?: string;
|
|
@@ -1961,6 +1984,24 @@ const BUILTIN_SLASH_COMMAND_REGISTRY: ReadonlyArray<SlashCommandSpec> = [
|
|
|
1961
1984
|
await runtime.ctx.handleContributionPrepCommand(command.args || undefined);
|
|
1962
1985
|
},
|
|
1963
1986
|
},
|
|
1987
|
+
{
|
|
1988
|
+
name: "star",
|
|
1989
|
+
priority: 91,
|
|
1990
|
+
description: "Star the current session for easier discovery",
|
|
1991
|
+
// Accept args at dispatch so the handler can consume them as a usage error
|
|
1992
|
+
// instead of silently forwarding `/star ...` to the model.
|
|
1993
|
+
allowArgs: true,
|
|
1994
|
+
handle: (command, runtime) => updateSessionStar(true, command, runtime),
|
|
1995
|
+
},
|
|
1996
|
+
{
|
|
1997
|
+
name: "unstar",
|
|
1998
|
+
priority: 91,
|
|
1999
|
+
description: "Remove the star from the current session",
|
|
2000
|
+
// Accept args at dispatch so the handler can consume them as a usage error
|
|
2001
|
+
// instead of silently forwarding `/unstar ...` to the model.
|
|
2002
|
+
allowArgs: true,
|
|
2003
|
+
handle: (command, runtime) => updateSessionStar(false, command, runtime),
|
|
2004
|
+
},
|
|
1964
2005
|
{
|
|
1965
2006
|
name: "resume",
|
|
1966
2007
|
priority: 92,
|
package/src/task/executor.ts
CHANGED
|
@@ -2114,12 +2114,17 @@ export async function runSubprocessOnce(options: ExecutorOptions): Promise<Singl
|
|
|
2114
2114
|
if (extensionRunner && !options.preflightProbe) {
|
|
2115
2115
|
extensionRunner.initialize(
|
|
2116
2116
|
{
|
|
2117
|
+
// Extension sends are INDEPENDENT producers (see runtime-init):
|
|
2118
|
+
// classify them at the trusted adapter so a terminal abort keeps
|
|
2119
|
+
// them rather than dropping them as turn-owned continuations.
|
|
2117
2120
|
sendMessage: (message, options) => {
|
|
2118
|
-
const sendPromise = session
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
+
const sendPromise = session
|
|
2122
|
+
.sendCustomMessage(message, { ...options, origin: "external" })
|
|
2123
|
+
.catch(e => {
|
|
2124
|
+
logger.error("Extension sendMessage failed", {
|
|
2125
|
+
error: e instanceof Error ? e.message : String(e),
|
|
2126
|
+
});
|
|
2121
2127
|
});
|
|
2122
|
-
});
|
|
2123
2128
|
pendingExtensionMessages.push(sendPromise);
|
|
2124
2129
|
},
|
|
2125
2130
|
sendUserMessage: (content, options) => {
|