@gajae-code/coding-agent 0.16.0 → 0.16.3
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 +52 -1
- package/dist/types/async/job-manager.d.ts +32 -1
- package/dist/types/browser-backend.d.ts +12 -0
- package/dist/types/cli/update-cli.d.ts +1 -0
- package/dist/types/commands/sdk.d.ts +2 -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/model-registry.d.ts +16 -0
- package/dist/types/config/settings-schema.d.ts +17 -7
- package/dist/types/extensibility/extensions/types.d.ts +8 -3
- package/dist/types/gjc-runtime/launch-worktree.d.ts +25 -1
- package/dist/types/gjc-runtime/session-state-lock.d.ts +22 -0
- package/dist/types/main.d.ts +1 -0
- package/dist/types/modes/acp/acp-agent.d.ts +21 -21
- package/dist/types/modes/components/model-selector.d.ts +4 -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/interactive-mode.d.ts +16 -2
- package/dist/types/modes/theme/theme.d.ts +2 -1
- package/dist/types/modes/types.d.ts +2 -0
- package/dist/types/sdk/broker/broker.d.ts +2 -1
- package/dist/types/sdk/broker/ensure.d.ts +3 -0
- package/dist/types/sdk/broker/lifecycle-ledger.d.ts +6 -0
- package/dist/types/sdk/broker/lifecycle.d.ts +14 -0
- package/dist/types/sdk/broker/startup-budget.d.ts +52 -0
- package/dist/types/sdk/broker/state-version.d.ts +17 -0
- package/dist/types/sdk/bus/discord-daemon.d.ts +1 -1
- package/dist/types/sdk/bus/index.d.ts +3 -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/rows.d.ts +15 -2
- package/dist/types/sdk/cli/session-cli.d.ts +2 -1
- package/dist/types/sdk/host/events.d.ts +2 -0
- package/dist/types/sdk/host/host.d.ts +2 -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 +18 -17
- package/dist/types/sdk/lifecycle-session.d.ts +1 -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 +4 -0
- package/dist/types/sdk/turn-result.d.ts +6 -0
- package/dist/types/session/agent-session.d.ts +47 -7
- package/dist/types/session/fold-coordinator.d.ts +29 -2
- package/dist/types/session/session-manager.d.ts +14 -2
- package/dist/types/tools/ask.d.ts +1 -0
- package/dist/types/tools/bash.d.ts +12 -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/index.d.ts +4 -10
- package/dist/types/tools/job.d.ts +3 -1
- package/dist/types/utils/external-editor.d.ts +12 -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 +7 -1
- package/src/async/job-manager.ts +107 -9
- package/src/browser-backend.ts +29 -0
- package/src/cli/plugin-cli.ts +29 -0
- package/src/cli/update-cli.ts +63 -12
- package/src/commands/sdk.ts +22 -7
- package/src/config/billing-path.ts +42 -0
- package/src/config/config-schema-version.ts +18 -1
- package/src/config/model-preset-registry.ts +177 -18
- package/src/config/model-registry.ts +268 -42
- package/src/config/settings-schema.ts +19 -7
- package/src/config/settings.ts +46 -15
- package/src/coordinator-mcp/projection-scan.ts +6 -6
- package/src/coordinator-mcp/server.ts +21 -1
- 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.ts +285 -4
- package/src/gjc-runtime/session-state-lock.ts +156 -32
- package/src/gjc-runtime/session-state-sidecar.ts +10 -17
- package/src/gjc-runtime/tmux-owner-isolation.ts +16 -1
- package/src/internal-urls/docs-index.generated.ts +11 -11
- package/src/main.ts +4 -1
- package/src/modes/acp/acp-agent.ts +34 -19
- package/src/modes/components/model-selector.ts +76 -8
- package/src/modes/components/session-selector.ts +23 -15
- package/src/modes/components/sessions-dashboard.ts +8 -5
- 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 +2 -2
- package/src/modes/controllers/selector-controller.ts +10 -3
- package/src/modes/interactive-mode.ts +36 -12
- 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/utils/ui-helpers.ts +22 -3
- package/src/prompts/agent-fragments/browser-aside.md +22 -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 +6 -1
- package/src/sdk/broker/broker.ts +10 -1
- package/src/sdk/broker/ensure.ts +76 -3
- package/src/sdk/broker/lifecycle-ledger.ts +6 -0
- package/src/sdk/broker/lifecycle.ts +254 -34
- package/src/sdk/broker/spawn-substrate.ts +45 -2
- package/src/sdk/broker/startup-budget.ts +144 -2
- package/src/sdk/broker/state-version.ts +17 -0
- package/src/sdk/bus/chat-daemon-control.ts +2 -2
- package/src/sdk/bus/chat-daemon-runtime.ts +118 -24
- package/src/sdk/bus/discord-daemon.ts +50 -10
- package/src/sdk/bus/index.ts +33 -3
- 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/rows.ts +75 -7
- package/src/sdk/cli/session-cli.ts +68 -35
- package/src/sdk/host/control/dispatch.ts +2 -2
- package/src/sdk/host/events.ts +26 -2
- package/src/sdk/host/host.ts +6 -1
- 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 +497 -31
- package/src/sdk/host/session-runtime.ts +387 -54
- package/src/sdk/host/surface-policy.ts +3 -3
- package/src/sdk/lifecycle-session.ts +7 -2
- package/src/sdk/prompt-deadline-manager.ts +2 -1
- package/src/sdk/protocol/operation-inventory.generated.json +54 -3
- package/src/sdk/protocol/operation-registry.ts +1 -1
- package/src/sdk/receipt-state.ts +10 -0
- package/src/sdk/router/session-router.ts +210 -94
- package/src/sdk/session.ts +59 -41
- package/src/sdk/turn-result.ts +22 -0
- package/src/session/agent-session.ts +1033 -260
- package/src/session/fold-coordinator.ts +40 -3
- package/src/session/session-manager.ts +517 -77
- package/src/slash-commands/builtin-registry.ts +41 -0
- package/src/task/executor.ts +9 -4
- 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 +158 -33
- 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/index.ts +4 -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 +86 -1
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* delivery therefore still carries its receipt and can never silently
|
|
24
24
|
* degrade into an ordinary receipt-less completion.
|
|
25
25
|
*/
|
|
26
|
-
import type { AsyncJob } from "../async/job-manager";
|
|
26
|
+
import type { AsyncJob, FoldReason } from "../async/job-manager";
|
|
27
27
|
import foldReceiptPrompt from "../prompts/tools/fold-receipt.md" with { type: "text" };
|
|
28
28
|
|
|
29
29
|
/**
|
|
@@ -68,6 +68,8 @@ export interface FoldReceipt {
|
|
|
68
68
|
foldedAt: number;
|
|
69
69
|
/** Only command kinds can change directory; task-style waits never do. */
|
|
70
70
|
cwdSensitive: boolean;
|
|
71
|
+
/** What triggered the fold; recorded on the job as `metadata.foldReason`. */
|
|
72
|
+
reason: FoldReason;
|
|
71
73
|
}
|
|
72
74
|
|
|
73
75
|
/** A terminal completion observed for a folded job. */
|
|
@@ -106,6 +108,34 @@ export type FoldRequestResult =
|
|
|
106
108
|
| { status: "already-terminal"; reason: string }
|
|
107
109
|
| { status: "capture-failed"; reason: string };
|
|
108
110
|
|
|
111
|
+
/**
|
|
112
|
+
* Session-level answer to "fold the foreground bash now". Consumed by the SDK
|
|
113
|
+
* `bash.background` control, whose declared error codes are exactly these
|
|
114
|
+
* non-folded statuses.
|
|
115
|
+
*/
|
|
116
|
+
export type ForegroundFoldOutcome =
|
|
117
|
+
| { status: "folded"; jobId: string }
|
|
118
|
+
| { status: "already_backgrounded" }
|
|
119
|
+
| { status: "no_active_bash" }
|
|
120
|
+
| { status: "not_foldable"; reason: string };
|
|
121
|
+
|
|
122
|
+
/** Map a non-folded outcome onto the C52 `bash.background` error contract (`not_foldable` | `already_backgrounded` | `no_active_bash`). */
|
|
123
|
+
export function bashBackgroundControlError(outcome: Exclude<ForegroundFoldOutcome, { status: "folded" }>): Error {
|
|
124
|
+
switch (outcome.status) {
|
|
125
|
+
case "already_backgrounded":
|
|
126
|
+
return Object.assign(new Error("The active bash command has already been moved to a background job."), {
|
|
127
|
+
code: "already_backgrounded",
|
|
128
|
+
});
|
|
129
|
+
case "no_active_bash":
|
|
130
|
+
return Object.assign(new Error("No foreground bash command is running."), { code: "no_active_bash" });
|
|
131
|
+
case "not_foldable":
|
|
132
|
+
return Object.assign(
|
|
133
|
+
new Error(`The active bash command cannot be moved to a managed background job: ${outcome.reason}`),
|
|
134
|
+
{ code: "not_foldable" },
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
109
139
|
/** What a delivery should carry, decided by the durable slot state (T2). */
|
|
110
140
|
export type FoldDeliveryDisposition =
|
|
111
141
|
| { kind: "ordinary" }
|
|
@@ -225,8 +255,13 @@ export class FoldCoordinator {
|
|
|
225
255
|
* Nothing awaits before the slot is reserved and the fence is armed, so a
|
|
226
256
|
* completion or a steering submission that races the capture cannot slip
|
|
227
257
|
* past into the old turn.
|
|
258
|
+
*
|
|
259
|
+
* A `steer` fold is the one trigger that does NOT end the turn: the steer
|
|
260
|
+
* that caused it must be consumed by the same run at the tool boundary
|
|
261
|
+
* right after the fold result (subagent-await parity), so no fence is
|
|
262
|
+
* armed, no stop is requested, and no remaining intent is captured.
|
|
228
263
|
*/
|
|
229
|
-
async requestFold(explicit?: FoldAdapter): Promise<FoldRequestResult> {
|
|
264
|
+
async requestFold(explicit?: FoldAdapter, reason: FoldReason = "chord"): Promise<FoldRequestResult> {
|
|
230
265
|
// S1 resolve target.
|
|
231
266
|
const adapter = explicit ?? this.resolveTarget();
|
|
232
267
|
if (!adapter) return { status: "unavailable", reason: "no foldable wait is registered" };
|
|
@@ -244,7 +279,8 @@ export class FoldCoordinator {
|
|
|
244
279
|
// S3 claim + reserve, S4 hand-off is the reservation itself, S5 arm the fence.
|
|
245
280
|
this.#folding.add(job);
|
|
246
281
|
this.#slots.set(job, { state: "reserved", adapter, parked: undefined, parkedAt: undefined });
|
|
247
|
-
const fencesOriginatingTurn =
|
|
282
|
+
const fencesOriginatingTurn =
|
|
283
|
+
reason !== "steer" && (adapter.originatingTurn ?? this.#deps.hasActiveTurn?.() ?? true);
|
|
248
284
|
const releaseFence = fencesOriginatingTurn ? this.#deps.armSteeringFence() : () => {};
|
|
249
285
|
|
|
250
286
|
let remainingIntent: string | undefined;
|
|
@@ -293,6 +329,7 @@ export class FoldCoordinator {
|
|
|
293
329
|
remainingIntent,
|
|
294
330
|
foldedAt: Date.now(),
|
|
295
331
|
cwdSensitive: adapter.cwdSensitive,
|
|
332
|
+
reason,
|
|
296
333
|
};
|
|
297
334
|
|
|
298
335
|
// A2 promote to present, preserving any payload parked during capture.
|