codeden 0.6.3 → 0.7.0
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/README.md +12 -5
- package/dist/cli.js +1 -1
- package/dist/drizzle/20261113075317_transcript_search/migration.sql +29 -0
- package/dist/drizzle/20261113075317_transcript_search/snapshot.json +3635 -0
- package/dist/drizzle/20261113083655_runners/migration.sql +17 -0
- package/dist/drizzle/20261113083655_runners/snapshot.json +3792 -0
- package/dist/drizzle/20261113165404_search_newest_first/migration.sql +43 -0
- package/dist/drizzle/20261113165404_search_newest_first/snapshot.json +3785 -0
- package/dist/{main-Bx58CdV4.js → main-BITVD_Bx.js} +4781 -1305
- package/dist/main-BITVD_Bx.js.map +1 -0
- package/dist/{main-CMt4z1Z9.js → main-NN0iK2tB.js} +2 -2
- package/dist/{main-CMt4z1Z9.js.map → main-NN0iK2tB.js.map} +1 -1
- package/dist/{mediaType-BCz-hbZl.js → mediaType-N0hKQqG9.js} +2 -2
- package/dist/{mediaType-BCz-hbZl.js.map → mediaType-N0hKQqG9.js.map} +1 -1
- package/dist/{runner-CiaiUWOE.js → runner-CQYh087M.js} +1302 -304
- package/dist/runner-CQYh087M.js.map +1 -0
- package/dist/runner.js +1 -1
- package/dist/{server-test-b0hHPqXb.js → server-test-BwyCFssm.js} +3 -3
- package/dist/{server-test-b0hHPqXb.js.map → server-test-BwyCFssm.js.map} +1 -1
- package/dist/{tree-31WAOm5k.js → tree-Bjv-rXir.js} +457 -21
- package/dist/tree-Bjv-rXir.js.map +1 -0
- package/dist/web/assets/{core-FqX7NQzW.js → core-EsMgAasL.js} +1 -1
- package/dist/web/assets/engine-oniguruma-C2eJcn5h.js +1 -0
- package/dist/web/assets/{highlighted-body-JLMTFACH-BMKFJRL-.js → highlighted-body-JLMTFACH-Co1oXN1b.js} +1 -1
- package/dist/web/assets/{highlights-9yuGk1pg.js → highlights-DUjJZrPQ.js} +1 -1
- package/dist/web/assets/index-29XyPQXD.css +1 -0
- package/dist/web/assets/index-DK4GsIYY.js +943 -0
- package/dist/web/assets/langs-BduZAjBk.js +1 -0
- package/dist/web/assets/mermaid-WFAXDIZX-D00b7K53.js +1 -0
- package/dist/web/assets/{shiki-Qa-y3xHo.js → shiki-DP8JfDZC.js} +2 -2
- package/dist/web/assets/{stream-tokenizer-VL43-ily.js → stream-tokenizer-IR1cpBIQ.js} +1 -1
- package/dist/web/assets/{themes-Di4DO5zr.js → themes-D2aixyve.js} +2 -2
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/main-Bx58CdV4.js.map +0 -1
- package/dist/runner-CiaiUWOE.js.map +0 -1
- package/dist/tree-31WAOm5k.js.map +0 -1
- package/dist/web/assets/engine-oniguruma-C5UP18m1.js +0 -1
- package/dist/web/assets/index-C3QkKvUn.js +0 -942
- package/dist/web/assets/index-CmllrYFx.css +0 -1
- package/dist/web/assets/langs-DfCgj44a.js +0 -1
- package/dist/web/assets/mermaid-WFAXDIZX-zTA5f8lD.js +0 -1
|
@@ -6686,7 +6686,14 @@ const UserInput = object({
|
|
|
6686
6686
|
* sender without reading the text, a session's opening brief included. Absent on the user's
|
|
6687
6687
|
* own messages and on every message stored before senders were recorded.
|
|
6688
6688
|
*/
|
|
6689
|
-
from: MessageSender.optional()
|
|
6689
|
+
from: MessageSender.optional(),
|
|
6690
|
+
/**
|
|
6691
|
+
* Set by CodeDen on a message the orchestrator passes on to a PM from a turn the user's own
|
|
6692
|
+
* message started (§8.2): the PM's turn it starts carries the user's request, like a message
|
|
6693
|
+
* the user wrote to the PM. Only such turns may start work on issues by authors who aren't
|
|
6694
|
+
* trusted. Absent on every other message.
|
|
6695
|
+
*/
|
|
6696
|
+
relayedForUser: boolean().optional()
|
|
6690
6697
|
});
|
|
6691
6698
|
/**
|
|
6692
6699
|
* The first line of a message from a PM or the orchestrator, telling the agent who wrote it.
|
|
@@ -6747,7 +6754,8 @@ const ToolOutput = object({
|
|
|
6747
6754
|
/** Artifact holding the full output when truncated. */
|
|
6748
6755
|
artifactId: Id.optional()
|
|
6749
6756
|
});
|
|
6750
|
-
|
|
6757
|
+
/** What kind of work a tool call performs; drives rendering, never provider-specific. */
|
|
6758
|
+
const ToolKind = _enum([
|
|
6751
6759
|
"command",
|
|
6752
6760
|
"file_edit",
|
|
6753
6761
|
"file_read",
|
|
@@ -6973,6 +6981,24 @@ const UserQuestionItem = object({
|
|
|
6973
6981
|
mcpServer: string().min(1).optional()
|
|
6974
6982
|
});
|
|
6975
6983
|
/**
|
|
6984
|
+
* Tokens one model used in a subagent run, in the four billed categories (§7.3, §12.6). The
|
|
6985
|
+
* server prices them when it reports the run's cost, like a turn's: the provider's USD figure
|
|
6986
|
+
* when it gave one, else the price table.
|
|
6987
|
+
*/
|
|
6988
|
+
const SubagentModelUsage = object({
|
|
6989
|
+
/** Model id as the provider reports it; absent when it doesn't say (the session's model). */
|
|
6990
|
+
model: string().min(1).optional(),
|
|
6991
|
+
/** Uncached input tokens (excludes cache reads and writes). */
|
|
6992
|
+
inputTokens: int().nonnegative(),
|
|
6993
|
+
outputTokens: int().nonnegative(),
|
|
6994
|
+
cacheReadTokens: int().nonnegative(),
|
|
6995
|
+
cacheWriteTokens: int().nonnegative(),
|
|
6996
|
+
/** Reasoning/thinking tokens where reported; already counted in `outputTokens`. */
|
|
6997
|
+
reasoningTokens: int().nonnegative().optional(),
|
|
6998
|
+
/** USD the provider reported for these calls, when it reports one. */
|
|
6999
|
+
costUsd: number$1().nonnegative().optional()
|
|
7000
|
+
});
|
|
7001
|
+
/**
|
|
6976
7002
|
* What a finished subagent used, as its provider reports it (§7.3). Each figure is optional:
|
|
6977
7003
|
* a provider that reports none leaves `SubagentItem.stats` out. Display only: never added to
|
|
6978
7004
|
* usage totals (`usage.updated`), which come from the provider's own turn figures.
|
|
@@ -6983,7 +7009,12 @@ const SubagentStats = object({
|
|
|
6983
7009
|
/** Tool calls the subagent made. */
|
|
6984
7010
|
toolUses: int().nonnegative().optional(),
|
|
6985
7011
|
/** How long the subagent ran, in milliseconds. */
|
|
6986
|
-
durationMs: int().nonnegative().optional()
|
|
7012
|
+
durationMs: int().nonnegative().optional(),
|
|
7013
|
+
/**
|
|
7014
|
+
* Tokens per model across the run's own model calls (a nested subagent's are on its own
|
|
7015
|
+
* card), for the card's cost (`SessionUsage.subagents`). Display only, like the rest.
|
|
7016
|
+
*/
|
|
7017
|
+
usage: array(SubagentModelUsage).optional()
|
|
6987
7018
|
});
|
|
6988
7019
|
/** A subagent run; its transcript lives in the child thread `childThreadId` (§7.3). */
|
|
6989
7020
|
const SubagentItem = object({
|
|
@@ -7796,6 +7827,17 @@ const McpServerConfig = discriminatedUnion("transport", [object({
|
|
|
7796
7827
|
args: array(string()).default([]),
|
|
7797
7828
|
env: record(string(), string()).optional()
|
|
7798
7829
|
})]);
|
|
7830
|
+
/**
|
|
7831
|
+
* CodeDen's own credential files, relative to its data directory (§15): the install token the
|
|
7832
|
+
* local API accepts, the runner lock holding the runner's bearer token, and the remote access
|
|
7833
|
+
* store (password hash and device sessions). An agent that read the tokens could drive CodeDen
|
|
7834
|
+
* itself, so agents never read or write these without the user, at any level (§11.2).
|
|
7835
|
+
*/
|
|
7836
|
+
const CODEDEN_CREDENTIAL_FILES = [
|
|
7837
|
+
"install-token",
|
|
7838
|
+
"runner/runner.json",
|
|
7839
|
+
"remote-access.json"
|
|
7840
|
+
];
|
|
7799
7841
|
/** Options for `ProviderAdapter.openSession`. */
|
|
7800
7842
|
const SessionOptions = object({
|
|
7801
7843
|
/** CodeDen session id. */
|
|
@@ -7835,7 +7877,13 @@ const SessionOptions = object({
|
|
|
7835
7877
|
* No writes to the workspace (orchestrator and PMs, §11.2): file edits and writing commands
|
|
7836
7878
|
* are denied natively (Claude permission policy, Codex read-only sandbox).
|
|
7837
7879
|
*/
|
|
7838
|
-
readOnly: boolean().optional()
|
|
7880
|
+
readOnly: boolean().optional(),
|
|
7881
|
+
/**
|
|
7882
|
+
* CodeDen's data directory (§6). Touching its credential files (`CODEDEN_CREDENTIAL_FILES`)
|
|
7883
|
+
* asks at every level and is refused for read-only sessions (§11.2, §15); `$CODEDEN_HOME` in
|
|
7884
|
+
* the agent's commands resolves to it.
|
|
7885
|
+
*/
|
|
7886
|
+
codedenHome: string().min(1).optional()
|
|
7839
7887
|
});
|
|
7840
7888
|
/** Response to an `approval_request` or `user_question` item (`ProviderSession.respond`). */
|
|
7841
7889
|
const RuntimeResponse = discriminatedUnion("kind", [
|
|
@@ -8003,6 +8051,86 @@ const BrowserHandoffTab = object({
|
|
|
8003
8051
|
/** The tab the panel showed. */
|
|
8004
8052
|
active: boolean()
|
|
8005
8053
|
});
|
|
8054
|
+
/** A key held down during an agent pointer action (`browser.mouse`). */
|
|
8055
|
+
const BrowserModifierKey = _enum([
|
|
8056
|
+
"Alt",
|
|
8057
|
+
"Control",
|
|
8058
|
+
"Meta",
|
|
8059
|
+
"Shift"
|
|
8060
|
+
]);
|
|
8061
|
+
/** What an agent does at page coordinates (`browser.mouse`, §12.2 computer use, step 1). */
|
|
8062
|
+
const BrowserMouseAction = _enum([
|
|
8063
|
+
"click",
|
|
8064
|
+
"hover",
|
|
8065
|
+
"drag",
|
|
8066
|
+
"scroll"
|
|
8067
|
+
]);
|
|
8068
|
+
/** Longest text `browser.type` types as key presses at the focused element (no `ref`). */
|
|
8069
|
+
const MAX_FOCUS_TYPE_CHARS = 2e3;
|
|
8070
|
+
/** Largest scroll per axis in one agent `scroll` (CSS pixels). */
|
|
8071
|
+
const MAX_AGENT_SCROLL = 1e4;
|
|
8072
|
+
/** A coordinate in the page viewport's CSS pixels; the runner checks it against the viewport. */
|
|
8073
|
+
const ViewportCoordinate = number$1().min(0).max(1e5);
|
|
8074
|
+
/**
|
|
8075
|
+
* The fields of an agent pointer action. Coordinates are CSS pixels of the tab's viewport,
|
|
8076
|
+
* origin top-left: the pixels of a viewport `browser.screenshot`, and the units of
|
|
8077
|
+
* `getBoundingClientRect`. Which fields an action takes is checked by `checkBrowserMouse`.
|
|
8078
|
+
*/
|
|
8079
|
+
const BrowserMouseFields = {
|
|
8080
|
+
action: BrowserMouseAction,
|
|
8081
|
+
/** The point to act at; the start point of a drag. */
|
|
8082
|
+
x: ViewportCoordinate,
|
|
8083
|
+
y: ViewportCoordinate,
|
|
8084
|
+
/** Where a drag ends (`drag` only, required there). */
|
|
8085
|
+
toX: ViewportCoordinate.optional(),
|
|
8086
|
+
toY: ViewportCoordinate.optional(),
|
|
8087
|
+
/** Scroll amount in CSS pixels (`scroll` only, at least one non-zero); positive `deltaY` scrolls down. */
|
|
8088
|
+
deltaX: number$1().min(-1e4).max(MAX_AGENT_SCROLL).optional(),
|
|
8089
|
+
deltaY: number$1().min(-1e4).max(MAX_AGENT_SCROLL).optional(),
|
|
8090
|
+
/** `click` and `drag`; default `left`. */
|
|
8091
|
+
button: _enum([
|
|
8092
|
+
"left",
|
|
8093
|
+
"middle",
|
|
8094
|
+
"right"
|
|
8095
|
+
]).optional(),
|
|
8096
|
+
/** `click` only: 2 is a double click, 3 a triple click. Default 1. */
|
|
8097
|
+
clickCount: int().min(1).max(3).optional(),
|
|
8098
|
+
/** Keys held for the whole action (shift-click, ctrl-click, alt-drag). */
|
|
8099
|
+
modifiers: array(BrowserModifierKey).max(4).optional()
|
|
8100
|
+
};
|
|
8101
|
+
/** Fields that belong to one action only. */
|
|
8102
|
+
const ACTION_ONLY_FIELDS = {
|
|
8103
|
+
toX: ["drag"],
|
|
8104
|
+
toY: ["drag"],
|
|
8105
|
+
deltaX: ["scroll"],
|
|
8106
|
+
deltaY: ["scroll"],
|
|
8107
|
+
button: ["click", "drag"],
|
|
8108
|
+
clickCount: ["click"]
|
|
8109
|
+
};
|
|
8110
|
+
/**
|
|
8111
|
+
* Cross-field rules of a pointer action, for `superRefine`: a drag needs `toX` and `toY`, a
|
|
8112
|
+
* scroll needs a non-zero delta, and fields of other actions are refused (so a mistaken call
|
|
8113
|
+
* fails instead of silently doing something else).
|
|
8114
|
+
*/
|
|
8115
|
+
function checkBrowserMouse(value, ctx) {
|
|
8116
|
+
for (const [field, actions] of Object.entries(ACTION_ONLY_FIELDS)) if (value[field] !== void 0 && !actions.includes(value.action)) ctx.addIssue({
|
|
8117
|
+
code: "custom",
|
|
8118
|
+
path: [field],
|
|
8119
|
+
message: `${field} is for ${actions.join(" and ")}, not ${value.action}`
|
|
8120
|
+
});
|
|
8121
|
+
if (value.action === "drag") {
|
|
8122
|
+
for (const field of ["toX", "toY"]) if (value[field] === void 0) ctx.addIssue({
|
|
8123
|
+
code: "custom",
|
|
8124
|
+
path: [field],
|
|
8125
|
+
message: `A drag needs ${field}`
|
|
8126
|
+
});
|
|
8127
|
+
}
|
|
8128
|
+
if (value.action === "scroll" && !value.deltaX && !value.deltaY) ctx.addIssue({
|
|
8129
|
+
code: "custom",
|
|
8130
|
+
path: ["deltaY"],
|
|
8131
|
+
message: "A scroll needs a non-zero deltaX or deltaY"
|
|
8132
|
+
});
|
|
8133
|
+
}
|
|
8006
8134
|
const TabTarget = {
|
|
8007
8135
|
sessionId: Id,
|
|
8008
8136
|
tabId: BrowserTabId.optional()
|
|
@@ -8105,15 +8233,26 @@ const BrowserCommands = [
|
|
|
8105
8233
|
object({
|
|
8106
8234
|
name: literal("browser.type"),
|
|
8107
8235
|
...TabTarget,
|
|
8108
|
-
ref: BrowserElementRef,
|
|
8236
|
+
ref: BrowserElementRef.optional(),
|
|
8109
8237
|
text: string().max(1e5),
|
|
8110
8238
|
submit: boolean().optional()
|
|
8239
|
+
}).superRefine((v, ctx) => {
|
|
8240
|
+
if (v.ref === void 0 && v.text.length > 2e3) ctx.addIssue({
|
|
8241
|
+
code: "custom",
|
|
8242
|
+
path: ["text"],
|
|
8243
|
+
message: `Without a ref, type at most ${MAX_FOCUS_TYPE_CHARS} characters`
|
|
8244
|
+
});
|
|
8111
8245
|
}),
|
|
8112
8246
|
object({
|
|
8113
8247
|
name: literal("browser.press"),
|
|
8114
8248
|
...TabTarget,
|
|
8115
8249
|
key: string().min(1).max(60)
|
|
8116
8250
|
}),
|
|
8251
|
+
object({
|
|
8252
|
+
name: literal("browser.mouse"),
|
|
8253
|
+
...TabTarget,
|
|
8254
|
+
...BrowserMouseFields
|
|
8255
|
+
}).superRefine(checkBrowserMouse),
|
|
8117
8256
|
object({
|
|
8118
8257
|
name: literal("browser.screenshot"),
|
|
8119
8258
|
...TabTarget,
|
|
@@ -8198,6 +8337,7 @@ const BrowserCommandResults = {
|
|
|
8198
8337
|
"browser.click": Empty$1,
|
|
8199
8338
|
"browser.type": Empty$1,
|
|
8200
8339
|
"browser.press": Empty$1,
|
|
8340
|
+
"browser.mouse": Empty$1,
|
|
8201
8341
|
"browser.screenshot": object({
|
|
8202
8342
|
path: string(),
|
|
8203
8343
|
width: int().positive(),
|
|
@@ -8263,7 +8403,12 @@ const RunnerCommand = discriminatedUnion("name", [
|
|
|
8263
8403
|
name: literal("provider.detect"),
|
|
8264
8404
|
providerId: ProviderId.optional(),
|
|
8265
8405
|
/** Answer only once the model lists are refreshed, and include them as `providers`. */
|
|
8266
|
-
waitForModels: boolean().optional()
|
|
8406
|
+
waitForModels: boolean().optional(),
|
|
8407
|
+
/**
|
|
8408
|
+
* `false`: only detect (installed, signed in), leaving the model lists alone; for periodic
|
|
8409
|
+
* availability checks, which must not start provider CLIs to list models. Default true.
|
|
8410
|
+
*/
|
|
8411
|
+
refreshModels: boolean().optional()
|
|
8267
8412
|
}),
|
|
8268
8413
|
object({
|
|
8269
8414
|
name: literal("provider.oneShot"),
|
|
@@ -9418,6 +9563,71 @@ const FactorySetTypeRequest = object({
|
|
|
9418
9563
|
type: WorkType,
|
|
9419
9564
|
reason: string().trim().max(500).optional()
|
|
9420
9565
|
});
|
|
9566
|
+
// ../../packages/contracts/src/factory-prs.ts
|
|
9567
|
+
/**
|
|
9568
|
+
* The factory's pull requests (§10.1, Merge): the loop owns every PR it opened until it merges
|
|
9569
|
+
* or closes, whatever its item's stage. It keeps them free of conflicts, merges them one at a
|
|
9570
|
+
* time (the merge queue) and rebuilds work whose PR keeps conflicting.
|
|
9571
|
+
*/
|
|
9572
|
+
/**
|
|
9573
|
+
* Why a work item failed:
|
|
9574
|
+
* - `checks`: its own work fell short (merge checks after its revise rounds, a step it never
|
|
9575
|
+
* reported);
|
|
9576
|
+
* - `infrastructure`: something outside its code, such as the builder or reviewer session dying
|
|
9577
|
+
* or CI never starting while Actions can run. The loop puts it back by itself on the next
|
|
9578
|
+
* tick after the cause is gone, at most three times;
|
|
9579
|
+
* - `stuck`: it needs a person: it already used its rebuild (or its rebuild ended without a new
|
|
9580
|
+
* PR), CI can never run on the repository (Actions off, no active workflow), or it touches a
|
|
9581
|
+
* protected area (an `escalated` item, which carries this kind too).
|
|
9582
|
+
*
|
|
9583
|
+
* Null on items that never failed or were escalated, and on failures recorded before this
|
|
9584
|
+
* existed (the loop reads those from their reason).
|
|
9585
|
+
*/
|
|
9586
|
+
const FactoryFailureKind = _enum([
|
|
9587
|
+
"checks",
|
|
9588
|
+
"infrastructure",
|
|
9589
|
+
"stuck"
|
|
9590
|
+
]);
|
|
9591
|
+
/**
|
|
9592
|
+
* A factory PR's state, as the panel shows it:
|
|
9593
|
+
* - `checking`: the merge checks are running (the review, tests, evidence);
|
|
9594
|
+
* - `waiting_ci`: CI is running, or yet to start, on the head commit;
|
|
9595
|
+
* - `queued`: every check passed and it waits for its turn to merge;
|
|
9596
|
+
* - `updating`: at the head of the queue, being brought up to date with the default branch;
|
|
9597
|
+
* - `rebasing`: it has merge conflicts and an agent is rebasing it;
|
|
9598
|
+
* - `rebuilding`: it kept conflicting, so its work is being redone from the default branch;
|
|
9599
|
+
* the new PR replaces it;
|
|
9600
|
+
* - `superseded`: a newer PR for the same work replaced it (a rebuild's, or an integrator's);
|
|
9601
|
+
* the factory closes it with a link to the new one, retrying until GitHub accepts;
|
|
9602
|
+
* - `merged`: merged by the factory (or on GitHub) today;
|
|
9603
|
+
* - `waiting_for_you`: a person merges it (auto-merge off, an untrusted author, a protected
|
|
9604
|
+
* area, or checks that failed after the revise rounds); the factory still keeps it free of
|
|
9605
|
+
* conflicts;
|
|
9606
|
+
* - `stuck`: it needs a person before anything else can happen.
|
|
9607
|
+
*/
|
|
9608
|
+
const FactoryPrState = _enum([
|
|
9609
|
+
"checking",
|
|
9610
|
+
"waiting_ci",
|
|
9611
|
+
"queued",
|
|
9612
|
+
"updating",
|
|
9613
|
+
"rebasing",
|
|
9614
|
+
"rebuilding",
|
|
9615
|
+
"superseded",
|
|
9616
|
+
"merged",
|
|
9617
|
+
"waiting_for_you",
|
|
9618
|
+
"stuck"
|
|
9619
|
+
]);
|
|
9620
|
+
/** One pull request the factory owns, for the panel's merge queue. */
|
|
9621
|
+
const FactoryPrEntry = object({
|
|
9622
|
+
itemId: Id,
|
|
9623
|
+
title: string(),
|
|
9624
|
+
pr: GitHubPrRef,
|
|
9625
|
+
state: FactoryPrState,
|
|
9626
|
+
/** Place in the merge queue (1 merges next); null when it isn't queued. */
|
|
9627
|
+
queuePosition: int().positive().nullable(),
|
|
9628
|
+
/** The loop's last note about it (why it waits, what it is doing). */
|
|
9629
|
+
note: string().nullable()
|
|
9630
|
+
});
|
|
9421
9631
|
// ../../packages/contracts/src/factory-api.ts
|
|
9422
9632
|
/**
|
|
9423
9633
|
* The factory loop of software-factory and dark-factory projects (§10.1): work items, merge
|
|
@@ -9570,6 +9780,14 @@ const FactoryItem = object({
|
|
|
9570
9780
|
attempts: int().nonnegative(),
|
|
9571
9781
|
/** Why it was rejected, failed or escalated. */
|
|
9572
9782
|
reason: string().nullable(),
|
|
9783
|
+
/** Why it failed or was escalated: its own work, the infrastructure, or stuck until a person looks (see `FactoryFailureKind`). */
|
|
9784
|
+
failureKind: FactoryFailureKind.nullable().default(null),
|
|
9785
|
+
/**
|
|
9786
|
+
* The pull request a rebuild replaced: after three requests to rebase it still conflicted, so
|
|
9787
|
+
* the work was redone from the default branch and that PR is closed once the new one opens.
|
|
9788
|
+
* Set means the item's one rebuild is used.
|
|
9789
|
+
*/
|
|
9790
|
+
rebuiltFrom: GitHubPrRef.nullable().default(null),
|
|
9573
9791
|
/** Last thing the loop noted about it (waiting on a conflict, merge budget, ...). */
|
|
9574
9792
|
note: string().nullable(),
|
|
9575
9793
|
mergeSha: string().nullable(),
|
|
@@ -9605,6 +9823,19 @@ const LEGACY_SIZE_LIMITS = {
|
|
|
9605
9823
|
maxChangedLines: 800,
|
|
9606
9824
|
maxChangedFiles: 40
|
|
9607
9825
|
};
|
|
9826
|
+
/**
|
|
9827
|
+
* What a review does when the provider chosen for it is unavailable (not installed, not signed
|
|
9828
|
+
* in, at its usage limit, or it just failed to run):
|
|
9829
|
+
* - `builder`: review on the builder's provider and model, in a fresh session;
|
|
9830
|
+
* - `any`: review on any available provider;
|
|
9831
|
+
* - `wait`: wait until the chosen provider is available again.
|
|
9832
|
+
* With no provider available at all, every choice waits.
|
|
9833
|
+
*/
|
|
9834
|
+
const ReviewerFallback = _enum([
|
|
9835
|
+
"builder",
|
|
9836
|
+
"any",
|
|
9837
|
+
"wait"
|
|
9838
|
+
]);
|
|
9608
9839
|
/** Knobs of the loop beyond the required limits; all have safe defaults. */
|
|
9609
9840
|
const FactoryTuning = object({
|
|
9610
9841
|
/**
|
|
@@ -9636,8 +9867,22 @@ const FactoryTuning = object({
|
|
|
9636
9867
|
maxIssuesPerRound: int().positive().default(3),
|
|
9637
9868
|
/** Dark factory: the review areas the scout may use. */
|
|
9638
9869
|
areas: array(DiscoveryArea).default(DiscoveryArea.options),
|
|
9639
|
-
/**
|
|
9870
|
+
/**
|
|
9871
|
+
* Provider for builders (`auto`: the project/role default). One that isn't available (not
|
|
9872
|
+
* installed, not signed in, at its usage limit) is skipped for another available provider.
|
|
9873
|
+
*/
|
|
9640
9874
|
builderProvider: union([literal("auto"), ProviderId]).default("auto"),
|
|
9875
|
+
/** Model for builders on `builderProvider`; `null` (the default): that provider's default. */
|
|
9876
|
+
builderModel: string().min(1).nullable().default(null),
|
|
9877
|
+
/**
|
|
9878
|
+
* Provider for the independent reviewer. `auto` (the default): a provider other than the
|
|
9879
|
+
* builder's when one is available, which gives the most independent review.
|
|
9880
|
+
*/
|
|
9881
|
+
reviewerProvider: union([literal("auto"), ProviderId]).default("auto"),
|
|
9882
|
+
/** Model for reviewers on `reviewerProvider`; `null` (the default): that provider's default. */
|
|
9883
|
+
reviewerModel: string().min(1).nullable().default(null),
|
|
9884
|
+
/** What a review does when its chosen provider isn't available (see `ReviewerFallback`). */
|
|
9885
|
+
reviewerFallback: ReviewerFallback.default("builder"),
|
|
9641
9886
|
/** Minutes to wait for main CI after a merge before calling it done. */
|
|
9642
9887
|
watchTimeoutMin: int().positive().default(120),
|
|
9643
9888
|
/**
|
|
@@ -9865,6 +10110,11 @@ object({
|
|
|
9865
10110
|
backlog: array(FactoryWorkItem),
|
|
9866
10111
|
inProgress: array(FactoryWorkItem),
|
|
9867
10112
|
mergeChecks: array(FactoryMergeChecks),
|
|
10113
|
+
/**
|
|
10114
|
+
* The pull requests the factory owns: the merge queue first, in the order they merge, then
|
|
10115
|
+
* the rest (being checked, rebased, rebuilt, waiting for you) and today's merges.
|
|
10116
|
+
*/
|
|
10117
|
+
pullRequests: array(FactoryPrEntry).default([]),
|
|
9868
10118
|
/** Merged, reverted, failed, rejected and escalated items, newest first. */
|
|
9869
10119
|
recent: array(FactoryWorkItem),
|
|
9870
10120
|
/** Issues by untrusted authors, newest first; nothing runs on them until let in. */
|
|
@@ -10537,6 +10787,86 @@ const ConflictRecord = object({
|
|
|
10537
10787
|
createdAt: Timestamp,
|
|
10538
10788
|
resolvedAt: Timestamp.nullable()
|
|
10539
10789
|
});
|
|
10790
|
+
// ../../packages/contracts/src/runners.ts
|
|
10791
|
+
/**
|
|
10792
|
+
* Runners the server drives (`docs/remote-runners.md` §8). The
|
|
10793
|
+
* home runner is the local one next to the server; later phases add one runner per sandboxed
|
|
10794
|
+
* session (Docker, Upstash Box). Each is a row of the `runners` table, projected from the
|
|
10795
|
+
* `runner.*` lifecycle events.
|
|
10796
|
+
*/
|
|
10797
|
+
/** Record id of the home runner: the local runner next to the server. */
|
|
10798
|
+
const HOME_RUNNER_ID = "home";
|
|
10799
|
+
/**
|
|
10800
|
+
* Where a runner runs (its execution backend):
|
|
10801
|
+
* - `local`: a process on this machine with worktrees in `<home>/wt` (the home runner);
|
|
10802
|
+
* - `docker`: inside a container on this machine (or the Docker host the CLI points at);
|
|
10803
|
+
* - `upstash-box`: inside an Upstash Box in the cloud.
|
|
10804
|
+
*/
|
|
10805
|
+
const RunnerBackendId = _enum([
|
|
10806
|
+
"local",
|
|
10807
|
+
"docker",
|
|
10808
|
+
"upstash-box"
|
|
10809
|
+
]);
|
|
10810
|
+
/**
|
|
10811
|
+
* A runner's lifecycle as the server sees it:
|
|
10812
|
+
* - `provisioning`: its sandbox is being made;
|
|
10813
|
+
* - `starting`: the runner process is starting or the server is connecting to it;
|
|
10814
|
+
* - `connected`: handshake done; commands and events flow;
|
|
10815
|
+
* - `disconnected`: the connection dropped; the server is trying again;
|
|
10816
|
+
* - `paused`: the sandbox is paused (its disk is kept);
|
|
10817
|
+
* - `stopped`: the sandbox or process was stopped on purpose;
|
|
10818
|
+
* - `failed`: it could not be provisioned, started or connected (see `lastError`);
|
|
10819
|
+
* - `deleted`: the sandbox is gone. The record stays, so its sessions report which runner
|
|
10820
|
+
* they lost instead of falling back to another one.
|
|
10821
|
+
*/
|
|
10822
|
+
const RunnerRecordState = _enum([
|
|
10823
|
+
"provisioning",
|
|
10824
|
+
"starting",
|
|
10825
|
+
"connected",
|
|
10826
|
+
"disconnected",
|
|
10827
|
+
"paused",
|
|
10828
|
+
"stopped",
|
|
10829
|
+
"failed",
|
|
10830
|
+
"deleted"
|
|
10831
|
+
]);
|
|
10832
|
+
/** One runner the server knows about (a `runners` row). */
|
|
10833
|
+
const RunnerRecord = object({
|
|
10834
|
+
/** CodeDen's id for this runner; `HOME_RUNNER_ID` for the home runner. */
|
|
10835
|
+
id: Id,
|
|
10836
|
+
backend: RunnerBackendId,
|
|
10837
|
+
/** The home runner: provider detection, utility jobs, the orchestrator and PMs use it. */
|
|
10838
|
+
home: boolean(),
|
|
10839
|
+
/**
|
|
10840
|
+
* The runner's own id (its journal's, reported in `welcome`); null until it first connects.
|
|
10841
|
+
* `sessions.runnerId` holds this id.
|
|
10842
|
+
*/
|
|
10843
|
+
runnerId: string().nullable(),
|
|
10844
|
+
/** The backend's handle on the sandbox (container id, box id); null for `local`. */
|
|
10845
|
+
sandboxRef: string().nullable(),
|
|
10846
|
+
/** The project and session a sandbox runner serves; null for the home runner. */
|
|
10847
|
+
projectId: Id.nullable(),
|
|
10848
|
+
sessionId: Id.nullable(),
|
|
10849
|
+
state: RunnerRecordState,
|
|
10850
|
+
/** CodeDen version the runner reported at its last handshake. */
|
|
10851
|
+
version: string().nullable(),
|
|
10852
|
+
/** Version of the sandbox image or snapshot it was made from; null for `local`. */
|
|
10853
|
+
imageVersion: string().nullable(),
|
|
10854
|
+
createdAt: Timestamp,
|
|
10855
|
+
/** When the server last connected to it or lost it. */
|
|
10856
|
+
lastSeenAt: Timestamp.nullable(),
|
|
10857
|
+
/** Why it last failed or disconnected, safe to show (never contains tokens). */
|
|
10858
|
+
lastError: string().nullable()
|
|
10859
|
+
});
|
|
10860
|
+
/** Event payload: the server registered a runner, or re-registered it with new details. */
|
|
10861
|
+
const RunnerRegisteredPayload = object({ runner: RunnerRecord });
|
|
10862
|
+
/** Event payload: a runner's sandbox is gone; its record stays with state `deleted`. */
|
|
10863
|
+
const RunnerDeletedPayload = object({ id: Id });
|
|
10864
|
+
/**
|
|
10865
|
+
* The optional runner record id carried by `runner.connected`, `runner.disconnected` and
|
|
10866
|
+
* `runner.draining`. Events stored before several runners existed have none; they belong to
|
|
10867
|
+
* the home runner.
|
|
10868
|
+
*/
|
|
10869
|
+
const RunnerRecordRef = { id: Id.optional() };
|
|
10540
10870
|
// ../../packages/contracts/src/updates.ts
|
|
10541
10871
|
/**
|
|
10542
10872
|
* `settings.updates.mode` (§16): `off` never asks the registry; `notify` checks and offers a
|
|
@@ -11139,16 +11469,21 @@ discriminatedUnion("type", [
|
|
|
11139
11469
|
})),
|
|
11140
11470
|
globalEvent("artifact.created", object({ artifact: Artifact })),
|
|
11141
11471
|
globalEvent("settings.updated", object({ settings: Settings })),
|
|
11472
|
+
globalEvent("runner.registered", RunnerRegisteredPayload),
|
|
11473
|
+
globalEvent("runner.deleted", RunnerDeletedPayload),
|
|
11142
11474
|
globalEvent("runner.connected", object({
|
|
11475
|
+
...RunnerRecordRef,
|
|
11143
11476
|
runnerId: string(),
|
|
11144
11477
|
version: string(),
|
|
11145
11478
|
protocolVersion: int()
|
|
11146
11479
|
})),
|
|
11147
11480
|
globalEvent("runner.disconnected", object({
|
|
11481
|
+
...RunnerRecordRef,
|
|
11148
11482
|
runnerId: string(),
|
|
11149
11483
|
reason: string()
|
|
11150
11484
|
})),
|
|
11151
11485
|
globalEvent("runner.draining", object({
|
|
11486
|
+
...RunnerRecordRef,
|
|
11152
11487
|
runnerId: string(),
|
|
11153
11488
|
reason: string()
|
|
11154
11489
|
})),
|
|
@@ -11249,7 +11584,10 @@ object({
|
|
|
11249
11584
|
scheduled: array(ScheduledRun).default([]),
|
|
11250
11585
|
/** The orchestrator and PM sessions (§8.1), also present in `sessions`. */
|
|
11251
11586
|
roleSessions: RoleSessionsRef.optional(),
|
|
11252
|
-
runner
|
|
11587
|
+
/** The home runner's connection, the one the shell shows (§4.2). */
|
|
11588
|
+
runner: RunnerConnectionStatus,
|
|
11589
|
+
/** Every runner the server drives, the home runner first, with its live state. */
|
|
11590
|
+
runners: array(RunnerRecord).default([])
|
|
11253
11591
|
});
|
|
11254
11592
|
object({
|
|
11255
11593
|
seq: int().nonnegative(),
|
|
@@ -11296,7 +11634,8 @@ const ServerToClientMessage = discriminatedUnion("type", [
|
|
|
11296
11634
|
}),
|
|
11297
11635
|
object({
|
|
11298
11636
|
type: literal("runner"),
|
|
11299
|
-
runner: RunnerConnectionStatus
|
|
11637
|
+
runner: RunnerConnectionStatus,
|
|
11638
|
+
runners: array(RunnerRecord).optional()
|
|
11300
11639
|
}),
|
|
11301
11640
|
object({
|
|
11302
11641
|
type: literal("update"),
|
|
@@ -11432,7 +11771,13 @@ const StartSessionRequest = object({
|
|
|
11432
11771
|
/** First message; the session starts idle when omitted. */
|
|
11433
11772
|
input: UserInput.optional(),
|
|
11434
11773
|
/** The caller's decision when a previous attempt returned `conflict`. */
|
|
11435
|
-
conflict: ConflictDecision.optional()
|
|
11774
|
+
conflict: ConflictDecision.optional(),
|
|
11775
|
+
/**
|
|
11776
|
+
* The open persisted conflict this request is a new version of (the New session draft sent
|
|
11777
|
+
* again while its card is up). The server closes that conflict whatever this start returns;
|
|
11778
|
+
* a conflict that is closed already or belongs to another project is left alone.
|
|
11779
|
+
*/
|
|
11780
|
+
replacesConflict: Id.optional()
|
|
11436
11781
|
});
|
|
11437
11782
|
/**
|
|
11438
11783
|
* `POST /api/sessions` response: `StartWorkResult` (`started` / `conflict`) plus the outcomes
|
|
@@ -12730,8 +13075,12 @@ const ListConflictsQuery = object({
|
|
|
12730
13075
|
status: InboxItemStatus.optional(),
|
|
12731
13076
|
projectId: Id.optional()
|
|
12732
13077
|
});
|
|
12733
|
-
/**
|
|
12734
|
-
|
|
13078
|
+
/**
|
|
13079
|
+
* `POST /api/conflicts/:id/resolve`: the decision (wait, skip, join or force with a reason).
|
|
13080
|
+
* `start` replaces the request saved with the conflict: the New session draft as it is when the
|
|
13081
|
+
* card is answered, so edits made after the first send are what starts. Same project only.
|
|
13082
|
+
*/
|
|
13083
|
+
const ResolveConflictRequest = ConflictDecision.and(object({ start: StartSessionRequest.optional() }));
|
|
12735
13084
|
object({
|
|
12736
13085
|
conflict: ConflictRecord,
|
|
12737
13086
|
result: StartSessionResponse
|
|
@@ -13031,6 +13380,66 @@ const ServerLock = object({
|
|
|
13031
13380
|
version: string(),
|
|
13032
13381
|
startedAt: Timestamp
|
|
13033
13382
|
});
|
|
13383
|
+
/** A boolean from a query string (`true`/`false`) or from code. */
|
|
13384
|
+
const QueryBoolean = union([boolean(), _enum(["true", "false"]).transform((v) => v === "true")]);
|
|
13385
|
+
/** `GET /api/search/transcripts` query. */
|
|
13386
|
+
const TranscriptSearchQuery = object({
|
|
13387
|
+
/**
|
|
13388
|
+
* What to look for. Whitespace separates terms; every term must appear (in any order),
|
|
13389
|
+
* ignoring case and accents. Control characters are ignored.
|
|
13390
|
+
*/
|
|
13391
|
+
q: string().trim().min(1).max(200),
|
|
13392
|
+
/** Only sessions of this project. */
|
|
13393
|
+
projectId: Id.optional(),
|
|
13394
|
+
/** Only sessions with this role (§8.1). */
|
|
13395
|
+
role: Role.optional(),
|
|
13396
|
+
/** Whether matches in archived sessions are included (they are by default). */
|
|
13397
|
+
includeArchived: QueryBoolean.default(true),
|
|
13398
|
+
/**
|
|
13399
|
+
* Continue after the previous page: its `nextCursor`. Omit for the newest matches. Opaque to
|
|
13400
|
+
* clients.
|
|
13401
|
+
*/
|
|
13402
|
+
cursor: string().regex(/^\d{1,16}$/).optional(),
|
|
13403
|
+
/** Most hits to return. */
|
|
13404
|
+
limit: number().int().min(1).max(100).default(20)
|
|
13405
|
+
});
|
|
13406
|
+
/** A piece of a snippet: `match` marks text that matched the query (render it highlighted). */
|
|
13407
|
+
const SnippetPart = object({
|
|
13408
|
+
text: string(),
|
|
13409
|
+
match: boolean()
|
|
13410
|
+
});
|
|
13411
|
+
/** One transcript item that matched. Session details come from the app snapshot. */
|
|
13412
|
+
const TranscriptSearchHit = object({
|
|
13413
|
+
sessionId: Id,
|
|
13414
|
+
/** The thread holding the item: the session's root thread or a subagent's. */
|
|
13415
|
+
threadId: Id,
|
|
13416
|
+
itemId: Id,
|
|
13417
|
+
/**
|
|
13418
|
+
* The root-thread item to scroll to: the item itself, or for an item in a subagent's thread
|
|
13419
|
+
* the subagent card in the root thread that started it. Such a hit also opens `threadId` at
|
|
13420
|
+
* `itemId`.
|
|
13421
|
+
*/
|
|
13422
|
+
anchorItemId: Id,
|
|
13423
|
+
/** Item kind, e.g. `user_message`, `assistant_message`, `tool_call`. */
|
|
13424
|
+
kind: string(),
|
|
13425
|
+
/** For tool calls, what kind of work it was (`command`, `file_edit`, ...). */
|
|
13426
|
+
toolKind: ToolKind.optional(),
|
|
13427
|
+
/** Text around the first match, in order; never HTML. */
|
|
13428
|
+
snippet: array(SnippetPart),
|
|
13429
|
+
/** When the item was created. */
|
|
13430
|
+
ts: Timestamp
|
|
13431
|
+
});
|
|
13432
|
+
object({
|
|
13433
|
+
/** The query as searched (trimmed, without control characters). */
|
|
13434
|
+
query: string(),
|
|
13435
|
+
hits: array(TranscriptSearchHit),
|
|
13436
|
+
/**
|
|
13437
|
+
* Pass as `cursor` to get the next page; null when every match has been returned. A page can
|
|
13438
|
+
* hold fewer than `limit` hits and still have a next one: each request looks at a bounded
|
|
13439
|
+
* number of candidates so a search never holds up the server.
|
|
13440
|
+
*/
|
|
13441
|
+
nextCursor: string().nullable()
|
|
13442
|
+
});
|
|
13034
13443
|
// ../../packages/contracts/src/session-files.ts
|
|
13035
13444
|
/**
|
|
13036
13445
|
* Read-only browsing of a session's working directory for the files panel (§12.3).
|
|
@@ -13262,16 +13671,43 @@ object({
|
|
|
13262
13671
|
/** How each provider in the range is billed, for the "API-equivalent" label. */
|
|
13263
13672
|
billing: record(ProviderId, BillingMode)
|
|
13264
13673
|
});
|
|
13674
|
+
/** One turn's usage for the turn footer. */
|
|
13675
|
+
const TurnUsage = object({
|
|
13676
|
+
...TokenCounts.shape,
|
|
13677
|
+
turnId: Id,
|
|
13678
|
+
costUsd: number$1().nonnegative(),
|
|
13679
|
+
costSource: CostSource
|
|
13680
|
+
});
|
|
13681
|
+
/** One model's share of a subagent run's cost. */
|
|
13682
|
+
const SubagentModelCost = object({
|
|
13683
|
+
...TokenCounts.shape,
|
|
13684
|
+
/** The model the tokens were priced as (the session's model when the provider named none). */
|
|
13685
|
+
model: string(),
|
|
13686
|
+
/** The price table's name for the model, when it has one. */
|
|
13687
|
+
label: string().optional(),
|
|
13688
|
+
costUsd: number$1().nonnegative(),
|
|
13689
|
+
costSource: CostSource
|
|
13690
|
+
});
|
|
13691
|
+
/**
|
|
13692
|
+
* What a finished subagent run cost, priced from `SubagentStats.usage` when read (§7.3). Display
|
|
13693
|
+
* only: the run's tokens are already in its session's turns, so this is never added to totals.
|
|
13694
|
+
* `reported` when every model's cost came from the provider, `unpriced` when no model could be
|
|
13695
|
+
* priced, else `estimated`.
|
|
13696
|
+
*/
|
|
13697
|
+
const SubagentCost = object({
|
|
13698
|
+
/** The `subagent` item. */
|
|
13699
|
+
itemId: Id,
|
|
13700
|
+
costUsd: number$1().nonnegative(),
|
|
13701
|
+
costSource: CostSource,
|
|
13702
|
+
models: array(SubagentModelCost)
|
|
13703
|
+
});
|
|
13265
13704
|
object({
|
|
13266
13705
|
sessionId: Id,
|
|
13267
13706
|
totals: UsageTotals,
|
|
13268
13707
|
billing: BillingMode,
|
|
13269
|
-
turns: array(
|
|
13270
|
-
|
|
13271
|
-
|
|
13272
|
-
costUsd: number$1().nonnegative(),
|
|
13273
|
-
costSource: CostSource
|
|
13274
|
-
}))
|
|
13708
|
+
turns: array(TurnUsage),
|
|
13709
|
+
/** The cost of each finished subagent that reported tokens per model, for its card. */
|
|
13710
|
+
subagents: array(SubagentCost).default([])
|
|
13275
13711
|
});
|
|
13276
13712
|
object({
|
|
13277
13713
|
windows: array(object({
|
|
@@ -13325,7 +13761,7 @@ object({
|
|
|
13325
13761
|
* rest of the bundle, so the package version is the single source of truth at runtime;
|
|
13326
13762
|
* everywhere else (workspace, tests) it is `SOURCE_VERSION`.
|
|
13327
13763
|
*/
|
|
13328
|
-
const CODEDEN_VERSION = packageVersion() ?? "0.
|
|
13764
|
+
const CODEDEN_VERSION = packageVersion() ?? "0.7.0";
|
|
13329
13765
|
function packageVersion() {
|
|
13330
13766
|
const value = globalThis.__CODEDEN_PACKAGE_VERSION__;
|
|
13331
13767
|
return typeof value === "string" && value.length > 0 ? value : void 0;
|
|
@@ -13476,6 +13912,6 @@ async function listDescendants(rootPid) {
|
|
|
13476
13912
|
}
|
|
13477
13913
|
return out;
|
|
13478
13914
|
}
|
|
13479
|
-
export {
|
|
13915
|
+
export { SetAutomationEnabledRequest as $, ProjectConfigFile as $n, number$1 as $r, githubPrId as $t, ImageTestRequest as A, Session as An, AgentConfigProvider as Ar, speechExcerpt as At, BrowserWsQuery as B, TerminalQuery as Bn, number as Br, HOME_RUNNER_ID as Bt, PASSWORD_RULE_TEXT as C, Artifact as Cn, HookChangeRequest as Cr, UiClientMessage as Ct, SetNetworkPasswordResponse as D, AutomationRun as Dn, AgentConfigDiffRequest as Dr, agentEventToNewEvent as Dt, SetNetworkPasswordRequest as E, AutomationGuards as En, AgentConfigDeleteQuery as Er, AGENT_EVENT_PREFIX as Et, BrowserHistoryRequest as F, GitPushRequest as Fn, agentConfigFeatures as Fr, AppPointer as Ft, ImportAutomationsRequest as G, BrowserMouseAction as Gn, array as Gr, GithubAuthorAssociation as Gt, AutomationImportSource as H, SETUP_TAIL_LIMIT as Hn, _enum as Hr, NOTICE_BATCH_CODE as Ht, BrowserNavigateRequest as I, RestoreFilesRequest as In, providersWith as Ir, UpdateInstallRequest as It, AutomationProjectRequest as J, checkBrowserMouse as Jn, discriminatedUnion as Jr, GithubLabelRequest as Jt, AutomationFileFrontmatter as K, MAX_AGENT_SCROLL as Kn, boolean as Kr, GithubCommentRequest as Kt, BrowserNewTabRequest as L, SessionResult as Ln, AutonomyLevel as Lr, UpdateStatus as Lt, summarizeActivity as M, DiffScope as Mn, McpServerDiffRequest as Mr, LocalSttModelParams as Mt, BrowserClientMessage as N, EditQueuedMessageRequest as Nn, McpServerTarget as Nr, SttQuery as Nt, SignInRequest as O, AutomationTrigger as On, AgentConfigListQuery as Or, READ_ALOUD_FULL_MAX_CHARS as Ot, BrowserDevServerRequest as P, GitCommitRequest as Pn, McpServerUpsertRequest as Pr, TtsRequest as Pt, RunAutomationRequest as Q, SessionOptions as Qn, looseObject as Qr, TriageIssueRequest as Qt, BrowserOpenRequest as R, SpeechSummaryRequest as Rn, ProviderId as Rr, compareVersions as Rt, NetworkStatus as S, pipelineStep as Sn, SkillSwitchRequest as Sr, ThreadItemsQuery as St, SetNetworkAccessRequest as T, AutomationAction as Tn, ShelvedHook as Tr, HealthResponse as Tt, DuplicateAutomationRequest as U, BROWSER_RELAY_SECRET_HEADER as Un, _null as Ur, NoticeBatchData as Ut, AUTOMATION_IMPORT_LIMITS as V, RunnerCommandResults as Vn, datetime as Vr, ConflictRecord as Vt, ExportAutomationsQuery as W, BrowserModifierKey as Wn, any as Wr, CreateGithubIssueRequest as Wt, ListAutomationRunsQuery as X, ProviderCapabilities as Xn, intersection as Xr, GithubPr as Xt, CreateAutomationRequest as Y, CODEDEN_CREDENTIAL_FILES as Yn, int as Yr, GithubListQuery as Yt, ListAutomationsQuery as Z, RuntimeResponse as Zn, literal as Zr, MergePrRequest as Zt, ListConflictsQuery as _, FactoryPlanRoundRequest as _n, messageFrom as _r, SendMessageRequest as _t, childEnv as a, union as ai, LEGACY_SIZE_LIMITS as an, DEFAULT_VISION_PATH as ar, UpdateAutomationRequest as at, RoleMessageRequest as b, ScoutState as bn, MCP_TEST_STDERR_LIMIT as br, StartSessionRequest as bt, UsageSettings as c, ZodError as ci, ReviewVerdictSubmission as cn, InboxItemKind as cr, FileWriteRequest as ct, RunnerEventMessage as d, prettifyError as di, isFactoryMode as dn, mergeItemDeltas as dr, ListSessionsQuery as dt, object as ei, parseGithubPrId as en, ConflictDecision as er, StarterSetRequest as et, RunnerLock as f, NEVER as fi, truncateReviewSummary as fn, ProjectCommandsQuery as fr, LoginToolId as ft, ArchiveSessionRequest as g, FactoryFinding as gn, UserInput as gr, SecretKey as gt, ServerToRunnerMessage as h, FactoryFileIssueRequest as hn, itemDeltaText as hr, RespondRequest as ht, listDescendants as i, string as ii, KillSwitchRequest as in, sortProjects as ir, UpdateAutomationProjectSettingsRequest as it, BrowserHostClientMessage as j, SessionStatus as jn, AgentConfigWriteRequest as jr, LOCAL_STT_SAMPLE_RATE as jt, passwordProblem as k, TriagePolicy as kn, AgentConfigLocator as kr, Settings as kt, SessionFileQuery as l, toJSONSchema as li, SCOUT_UNAVAILABLE as ln, AgentEvent as lr, ForkSessionRequest as lt, ServerLock as m, FactoryAnalysisReport as mn, winningCommands as mr, ResolveInboxRequest as mt, killTree as n, preprocess as ni, FactoryDecisionRequest as nn, WorkKey as nr, TriageReport as nt, CODEDEN_VERSION as o, unknown as oi, PutVisionRequest as on, FactoryLimits as or, CreateProjectRequest as ot, RunnerToServerMessage as p, FactoryAdmitRequest as pn, oneLineDescription as pr, ReorderProjectsRequest as pt, AutomationGuardsPatch as q, MAX_FOCUS_TYPE_CHARS as qn, custom as qr, GithubIssue as qt, killTreeAndOrphans as r, record as ri, FactoryTuning as rn, Project as rr, UpcomingRunsQuery as rt, UsageQuery as s, url as si, REVIEW_SUMMARY_MAX as sn, InboxItem as sr, FileReadQuery as st, isAlive as t, optional as ti, FactoryAllowLargeChangeRequest as tn, StartedBy as tr, TriageDecisionRequest as tt, TranscriptSearchQuery as u, safeParse$1 as ui, SetAutonomyModeRequest as un, SessionUpdatedEvent as ur, ListInboxQuery as ut, ListNoticesQuery as v, FactoryReproductionReport as vn, MCP_TEST_DEFAULT_TIMEOUT_MS as vr, SessionStartMeta as vt, RemoteAccessFile as w, Automation as wn, HookHandler as wr, UpdateProjectRequest as wt, UpdateSessionRequest as x, checksPassed as xn, McpServerTestRequest as xr, SteerRequest as xt, ResolveConflictRequest as y, FactorySetTypeRequest as yn, MCP_TEST_ERROR_LIMIT as yr, SetSecretRequest as yt, BrowserViewportRequest as z, TerminalClientMessage as zn, ReasoningEffort as zr, isNewerVersion as zt };
|
|
13480
13916
|
|
|
13481
|
-
//# sourceMappingURL=tree-
|
|
13917
|
+
//# sourceMappingURL=tree-Bjv-rXir.js.map
|