@plurnk/plurnk-service 1.13.0 → 1.14.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/.env.defaults +0 -6
- package/SPEC.md +46 -82
- package/dist/build-info.json +1 -1
- package/dist/content/matcher.d.ts.map +1 -1
- package/dist/content/matcher.js +21 -1
- package/dist/content/matcher.js.map +1 -1
- package/dist/core/ChannelWrite.d.ts +1 -17
- package/dist/core/ChannelWrite.d.ts.map +1 -1
- package/dist/core/ChannelWrite.js +5 -5
- package/dist/core/ChannelWrite.js.map +1 -1
- package/dist/core/Dispatcher.d.ts +2 -4
- package/dist/core/Dispatcher.d.ts.map +1 -1
- package/dist/core/Dispatcher.js +10 -43
- package/dist/core/Dispatcher.js.map +1 -1
- package/dist/core/Engine.d.ts +3 -12
- package/dist/core/Engine.d.ts.map +1 -1
- package/dist/core/Engine.js +34 -44
- package/dist/core/Engine.js.map +1 -1
- package/dist/core/PacketBuilder.d.ts.map +1 -1
- package/dist/core/PacketBuilder.js +1 -6
- package/dist/core/PacketBuilder.js.map +1 -1
- package/dist/core/TurnRunner.d.ts.map +1 -1
- package/dist/core/TurnRunner.js +26 -5
- package/dist/core/TurnRunner.js.map +1 -1
- package/dist/core/packet-wire.d.ts +1 -1
- package/dist/core/packet-wire.d.ts.map +1 -1
- package/dist/core/packet-wire.js +2 -5
- package/dist/core/packet-wire.js.map +1 -1
- package/dist/digest/Digest.d.ts.map +1 -1
- package/dist/digest/Digest.js +88 -16
- package/dist/digest/Digest.js.map +1 -1
- package/dist/schemes/Worker.d.ts.map +1 -1
- package/dist/schemes/Worker.js +0 -2
- package/dist/schemes/Worker.js.map +1 -1
- package/dist/server/Daemon.d.ts +1 -1
- package/dist/server/Daemon.d.ts.map +1 -1
- package/dist/server/Daemon.js +81 -149
- package/dist/server/Daemon.js.map +1 -1
- package/dist/server/drain.sql +16 -0
- package/dist/server/lifecycle-recovery.sql +0 -7
- package/dist/server/model-route.d.ts +2 -2
- package/dist/server/model-route.d.ts.map +1 -1
- package/dist/server/model-route.js +8 -1
- package/dist/server/model-route.js.map +1 -1
- package/migrations/001_schema.sql +2 -53
- package/package.json +37 -37
- package/dist/core/BranchReceipt.d.ts +0 -6
- package/dist/core/BranchReceipt.d.ts.map +0 -1
- package/dist/core/BranchReceipt.js +0 -29
- package/dist/core/BranchReceipt.js.map +0 -1
- package/dist/core/GitBranch.d.ts +0 -23
- package/dist/core/GitBranch.d.ts.map +0 -1
- package/dist/core/GitBranch.js +0 -120
- package/dist/core/GitBranch.js.map +0 -1
- package/dist/server/BranchBatches.d.ts +0 -49
- package/dist/server/BranchBatches.d.ts.map +0 -1
- package/dist/server/BranchBatches.js +0 -599
- package/dist/server/BranchBatches.js.map +0 -1
- package/dist/server/branch-batch.sql +0 -156
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plurnk/plurnk-service",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.14.1",
|
|
4
4
|
"description": "Plurnk agent runtime — the server / engine / core. Implements the @plurnk/plurnk-contracts contract.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -81,47 +81,47 @@
|
|
|
81
81
|
},
|
|
82
82
|
"dependencies": {
|
|
83
83
|
"@opentelemetry/api": "^1.9.1",
|
|
84
|
-
"@opentelemetry/context-async-hooks": "^2.
|
|
85
|
-
"@opentelemetry/exporter-metrics-otlp-http": "^0.
|
|
86
|
-
"@opentelemetry/exporter-trace-otlp-http": "^0.
|
|
87
|
-
"@opentelemetry/resources": "^2.
|
|
88
|
-
"@opentelemetry/sdk-metrics": "^2.
|
|
89
|
-
"@opentelemetry/sdk-trace-base": "^2.
|
|
90
|
-
"@plurnk/gbnf": "1.
|
|
91
|
-
"@plurnk/plurnk-a2a": "1.
|
|
92
|
-
"@plurnk/plurnk-agui": "1.
|
|
93
|
-
"@plurnk/plurnk-contracts": "1.
|
|
94
|
-
"@plurnk/plurnk-execs": "1.
|
|
95
|
-
"@plurnk/plurnk-execs-common": "1.
|
|
96
|
-
"@plurnk/plurnk-execs-jq": "1.
|
|
97
|
-
"@plurnk/plurnk-execs-sqlite": "1.
|
|
98
|
-
"@plurnk/plurnk-hooks": "1.
|
|
99
|
-
"@plurnk/plurnk-mcp": "1.
|
|
100
|
-
"@plurnk/plurnk-meta": "1.
|
|
101
|
-
"@plurnk/plurnk-mimetypes": "1.
|
|
102
|
-
"@plurnk/plurnk-mimetypes-application-ipynb": "1.
|
|
103
|
-
"@plurnk/plurnk-mimetypes-application-json": "1.
|
|
104
|
-
"@plurnk/plurnk-mimetypes-application-jsonl": "1.
|
|
105
|
-
"@plurnk/plurnk-mimetypes-application-xml": "1.
|
|
106
|
-
"@plurnk/plurnk-mimetypes-embeddings": "1.
|
|
107
|
-
"@plurnk/plurnk-mimetypes-text-csv": "1.
|
|
108
|
-
"@plurnk/plurnk-mimetypes-text-diff": "1.
|
|
109
|
-
"@plurnk/plurnk-mimetypes-text-dotenv": "1.
|
|
110
|
-
"@plurnk/plurnk-mimetypes-text-html": "1.
|
|
111
|
-
"@plurnk/plurnk-mimetypes-text-ini": "1.
|
|
112
|
-
"@plurnk/plurnk-mimetypes-text-markdown": "1.
|
|
113
|
-
"@plurnk/plurnk-mimetypes-text-plain": "1.
|
|
114
|
-
"@plurnk/plurnk-models": "1.
|
|
115
|
-
"@plurnk/plurnk-providers": "1.
|
|
116
|
-
"@plurnk/plurnk-schemes": "1.
|
|
117
|
-
"@plurnk/plurnk-schemes-http": "1.
|
|
84
|
+
"@opentelemetry/context-async-hooks": "^2.11.0",
|
|
85
|
+
"@opentelemetry/exporter-metrics-otlp-http": "^0.222.0",
|
|
86
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.222.0",
|
|
87
|
+
"@opentelemetry/resources": "^2.11.0",
|
|
88
|
+
"@opentelemetry/sdk-metrics": "^2.11.0",
|
|
89
|
+
"@opentelemetry/sdk-trace-base": "^2.11.0",
|
|
90
|
+
"@plurnk/gbnf": "1.14.1",
|
|
91
|
+
"@plurnk/plurnk-a2a": "1.14.1",
|
|
92
|
+
"@plurnk/plurnk-agui": "1.14.1",
|
|
93
|
+
"@plurnk/plurnk-contracts": "1.14.1",
|
|
94
|
+
"@plurnk/plurnk-execs": "1.14.1",
|
|
95
|
+
"@plurnk/plurnk-execs-common": "1.14.1",
|
|
96
|
+
"@plurnk/plurnk-execs-jq": "1.14.1",
|
|
97
|
+
"@plurnk/plurnk-execs-sqlite": "1.14.1",
|
|
98
|
+
"@plurnk/plurnk-hooks": "1.14.1",
|
|
99
|
+
"@plurnk/plurnk-mcp": "1.14.1",
|
|
100
|
+
"@plurnk/plurnk-meta": "1.14.1",
|
|
101
|
+
"@plurnk/plurnk-mimetypes": "1.14.1",
|
|
102
|
+
"@plurnk/plurnk-mimetypes-application-ipynb": "1.14.1",
|
|
103
|
+
"@plurnk/plurnk-mimetypes-application-json": "1.14.1",
|
|
104
|
+
"@plurnk/plurnk-mimetypes-application-jsonl": "1.14.1",
|
|
105
|
+
"@plurnk/plurnk-mimetypes-application-xml": "1.14.1",
|
|
106
|
+
"@plurnk/plurnk-mimetypes-embeddings": "1.14.1",
|
|
107
|
+
"@plurnk/plurnk-mimetypes-text-csv": "1.14.1",
|
|
108
|
+
"@plurnk/plurnk-mimetypes-text-diff": "1.14.1",
|
|
109
|
+
"@plurnk/plurnk-mimetypes-text-dotenv": "1.14.1",
|
|
110
|
+
"@plurnk/plurnk-mimetypes-text-html": "1.14.1",
|
|
111
|
+
"@plurnk/plurnk-mimetypes-text-ini": "1.14.1",
|
|
112
|
+
"@plurnk/plurnk-mimetypes-text-markdown": "1.14.1",
|
|
113
|
+
"@plurnk/plurnk-mimetypes-text-plain": "1.14.1",
|
|
114
|
+
"@plurnk/plurnk-models": "1.14.1",
|
|
115
|
+
"@plurnk/plurnk-providers": "1.14.1",
|
|
116
|
+
"@plurnk/plurnk-schemes": "1.14.1",
|
|
117
|
+
"@plurnk/plurnk-schemes-http": "1.14.1",
|
|
118
118
|
"@possumtech/sqlrite": "^6.5.2",
|
|
119
119
|
"diff": "^9.0.0",
|
|
120
120
|
"yaml": "^2.9.0"
|
|
121
121
|
},
|
|
122
122
|
"devDependencies": {
|
|
123
|
-
"@opentelemetry/core": "^2.
|
|
124
|
-
"@plurnk/plurnk-mimetypes-tokenizers": "1.
|
|
123
|
+
"@opentelemetry/core": "^2.11.0",
|
|
124
|
+
"@plurnk/plurnk-mimetypes-tokenizers": "1.14.1",
|
|
125
125
|
"@types/diff": "^7.0.2"
|
|
126
126
|
},
|
|
127
127
|
"homepage": "https://github.com/plurnk/plurnk-service/tree/main/plurnk-core#readme",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BranchReceipt.d.ts","sourceRoot":"","sources":["../../src/core/BranchReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAalC,MAAM,CAAC,OAAO,OAAO,aAAa;;IAU9B,OAAa,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAepE;CACJ"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export default class BranchReceipt {
|
|
2
|
-
static #revisionChars() {
|
|
3
|
-
const raw = process.env.PLURNK_SERVICE_BRANCH_RECEIPT_REVISION_CHARS;
|
|
4
|
-
const value = Number(raw);
|
|
5
|
-
if (!Number.isSafeInteger(value) || value < 1 || value > 64) {
|
|
6
|
-
throw new Error(`PLURNK_SERVICE_BRANCH_RECEIPT_REVISION_CHARS must be a safe integer from 1 through 64, got ${JSON.stringify(raw)}`);
|
|
7
|
-
}
|
|
8
|
-
return value;
|
|
9
|
-
}
|
|
10
|
-
static async render(db, workerId) {
|
|
11
|
-
const rows = await db.branch_batch_receipt_for_worker.all({
|
|
12
|
-
worker_id: workerId,
|
|
13
|
-
});
|
|
14
|
-
if (rows.length === 0)
|
|
15
|
-
return null;
|
|
16
|
-
const first = rows[0];
|
|
17
|
-
const revisionChars = BranchReceipt.#revisionChars();
|
|
18
|
-
// {§worker-branch-batch-receipt} — world state, not a next step: which worker, which
|
|
19
|
-
// branch, and the commit that now sits on it. What happens next is the parent's call.
|
|
20
|
-
const who = `Branch worker \`${first.worker_name}\``;
|
|
21
|
-
const tip = first.result_commit === null ? "" : ` at \`${first.result_commit.slice(0, revisionChars)}\``;
|
|
22
|
-
if (first.item_state !== "succeeded")
|
|
23
|
-
return `${who} ${first.item_state} on branch \`${first.branch}\`${tip}.`;
|
|
24
|
-
return first.changed === 1
|
|
25
|
-
? `${who} created branch \`${first.branch}\`${tip}.`
|
|
26
|
-
: `${who} left branch \`${first.branch}\` unchanged${tip}.`;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=BranchReceipt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BranchReceipt.js","sourceRoot":"","sources":["../../src/core/BranchReceipt.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,OAAO,OAAO,aAAa;IAC9B,MAAM,CAAC,cAAc;QACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC;QACrE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,8FAA8F,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzI,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAM,EAAE,QAAgB;QACxC,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,+BAA+B,CAAC,GAAG,CAAa;YAClE,SAAS,EAAE,QAAQ;SACtB,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,aAAa,GAAG,aAAa,CAAC,cAAc,EAAE,CAAC;QACrD,qFAAqF;QACrF,sFAAsF;QACtF,MAAM,GAAG,GAAG,mBAAmB,KAAK,CAAC,WAAW,IAAI,CAAC;QACrD,MAAM,GAAG,GAAG,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC;QACzG,IAAI,KAAK,CAAC,UAAU,KAAK,WAAW;YAAE,OAAO,GAAG,GAAG,IAAI,KAAK,CAAC,UAAU,gBAAgB,KAAK,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC;QAC/G,OAAO,KAAK,CAAC,OAAO,KAAK,CAAC;YACtB,CAAC,CAAC,GAAG,GAAG,qBAAqB,KAAK,CAAC,MAAM,KAAK,GAAG,GAAG;YACpD,CAAC,CAAC,GAAG,GAAG,kBAAkB,KAAK,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;IACpE,CAAC;CACJ"}
|
package/dist/core/GitBranch.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export interface GitSnapshot {
|
|
2
|
-
root: string;
|
|
3
|
-
ref: string | null;
|
|
4
|
-
commit: string;
|
|
5
|
-
}
|
|
6
|
-
export declare class GitUnavailableError extends Error {
|
|
7
|
-
constructor(cause: unknown);
|
|
8
|
-
}
|
|
9
|
-
export default class GitBranch {
|
|
10
|
-
#private;
|
|
11
|
-
static validate(branch: string, command?: string): Promise<void>;
|
|
12
|
-
static snapshot(root: string): Promise<GitSnapshot>;
|
|
13
|
-
static assertClean(root: string): Promise<void>;
|
|
14
|
-
static branchExists(root: string, branch: string): Promise<boolean>;
|
|
15
|
-
static create(root: string, branch: string, commit: string): Promise<void>;
|
|
16
|
-
static switch(root: string, branch: string): Promise<void>;
|
|
17
|
-
static restore(snapshot: GitSnapshot): Promise<void>;
|
|
18
|
-
static tip(root: string, branch: string): Promise<string>;
|
|
19
|
-
static head(root: string): Promise<string>;
|
|
20
|
-
static currentBranch(root: string): Promise<string | null>;
|
|
21
|
-
static delete(root: string, branch: string): Promise<void>;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=GitBranch.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GitBranch.d.ts","sourceRoot":"","sources":["../../src/core/GitBranch.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAClB;AAID,qBAAa,mBAAoB,SAAQ,KAAK;IAC1C,YAAY,KAAK,EAAE,OAAO,EAGzB;CACJ;AAED,MAAM,CAAC,OAAO,OAAO,SAAS;;IAG1B,OAAa,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,SAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBpE;IAED,OAAa,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CASxD;IAED,OAAa,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKpD;IAED,OAAa,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQxE;IAED,OAAa,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/E;IAED,OAAa,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/D;IAED,OAAa,OAAO,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAUzD;IAED,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAExD;IAED,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEzC;IAED,OAAa,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO/D;IAED,OAAa,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/D;CA4BJ"}
|
package/dist/core/GitBranch.js
DELETED
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { execFile } from "node:child_process";
|
|
2
|
-
import { promisify } from "node:util";
|
|
3
|
-
import { gitOutputMaxBytes, hermeticGitEnv } from "./git-env.js";
|
|
4
|
-
// A host without git cannot validate, create, or restore a branch at all; that is a
|
|
5
|
-
// condition of the host, never a verdict on the name (#384).
|
|
6
|
-
export class GitUnavailableError extends Error {
|
|
7
|
-
constructor(cause) {
|
|
8
|
-
super("git is not installed or not on PATH", { cause });
|
|
9
|
-
this.name = "GitUnavailableError";
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export default class GitBranch {
|
|
13
|
-
static #execFile = promisify(execFile);
|
|
14
|
-
static async validate(branch, command = "git") {
|
|
15
|
-
if (branch.length === 0)
|
|
16
|
-
throw new Error("Git branch name must not be empty");
|
|
17
|
-
try {
|
|
18
|
-
await GitBranch.#execFile(command, ["check-ref-format", "--branch", branch], {
|
|
19
|
-
env: hermeticGitEnv(),
|
|
20
|
-
encoding: "utf8",
|
|
21
|
-
maxBuffer: gitOutputMaxBytes(),
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
catch (cause) {
|
|
25
|
-
if (cause.code === "ENOENT")
|
|
26
|
-
throw new GitUnavailableError(cause);
|
|
27
|
-
const detail = cause.stderr?.trim();
|
|
28
|
-
throw new Error(`git check-ref-format rejected '${branch}'${detail === undefined || detail.length === 0 ? "" : `: ${detail}`}`, { cause });
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
static async snapshot(root) {
|
|
32
|
-
const commit = await GitBranch.#text(root, ["rev-parse", "--verify", "HEAD"]);
|
|
33
|
-
let ref = null;
|
|
34
|
-
try {
|
|
35
|
-
ref = await GitBranch.#text(root, ["symbolic-ref", "--quiet", "--short", "HEAD"]);
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
if (GitBranch.#exitCode(error) !== 1)
|
|
39
|
-
throw error;
|
|
40
|
-
}
|
|
41
|
-
return { root, ref, commit };
|
|
42
|
-
}
|
|
43
|
-
static async assertClean(root) {
|
|
44
|
-
const status = await GitBranch.#text(root, ["status", "--porcelain=v1", "--untracked-files=all"]);
|
|
45
|
-
if (status.length > 0) {
|
|
46
|
-
throw new Error(`Git checkout '${root}' is not clean (staged, unstaged, or nonignored untracked changes exist)`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
static async branchExists(root, branch) {
|
|
50
|
-
try {
|
|
51
|
-
await GitBranch.#git(root, ["show-ref", "--verify", "--quiet", `refs/heads/${branch}`]);
|
|
52
|
-
return true;
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
if (GitBranch.#exitCode(error) === 1)
|
|
56
|
-
return false;
|
|
57
|
-
throw error;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
static async create(root, branch, commit) {
|
|
61
|
-
await GitBranch.#git(root, ["branch", "--", branch, commit]);
|
|
62
|
-
}
|
|
63
|
-
static async switch(root, branch) {
|
|
64
|
-
await GitBranch.#git(root, ["switch", "--quiet", branch]);
|
|
65
|
-
}
|
|
66
|
-
static async restore(snapshot) {
|
|
67
|
-
if (snapshot.ref === null) {
|
|
68
|
-
await GitBranch.#git(snapshot.root, ["switch", "--quiet", "--detach", snapshot.commit]);
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
await GitBranch.#git(snapshot.root, ["switch", "--quiet", snapshot.ref]);
|
|
72
|
-
}
|
|
73
|
-
const actual = await GitBranch.#text(snapshot.root, ["rev-parse", "--verify", "HEAD"]);
|
|
74
|
-
if (actual !== snapshot.commit) {
|
|
75
|
-
throw new Error(`Git checkout '${snapshot.root}' restored '${snapshot.ref ?? snapshot.commit}' at ${actual}, expected ${snapshot.commit}`);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
static tip(root, branch) {
|
|
79
|
-
return GitBranch.#text(root, ["rev-parse", "--verify", `refs/heads/${branch}`]);
|
|
80
|
-
}
|
|
81
|
-
static head(root) {
|
|
82
|
-
return GitBranch.#text(root, ["rev-parse", "--verify", "HEAD"]);
|
|
83
|
-
}
|
|
84
|
-
static async currentBranch(root) {
|
|
85
|
-
try {
|
|
86
|
-
return await GitBranch.#text(root, ["symbolic-ref", "--quiet", "--short", "HEAD"]);
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
if (GitBranch.#exitCode(error) === 1)
|
|
90
|
-
return null;
|
|
91
|
-
throw error;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
static async delete(root, branch) {
|
|
95
|
-
await GitBranch.#git(root, ["branch", "-D", "--", branch]);
|
|
96
|
-
}
|
|
97
|
-
static async #text(root, args) {
|
|
98
|
-
const { stdout } = await GitBranch.#git(root, args);
|
|
99
|
-
return stdout.trim();
|
|
100
|
-
}
|
|
101
|
-
static async #git(root, args) {
|
|
102
|
-
try {
|
|
103
|
-
return await GitBranch.#execFile("git", args, {
|
|
104
|
-
cwd: root,
|
|
105
|
-
env: hermeticGitEnv(),
|
|
106
|
-
encoding: "utf8",
|
|
107
|
-
maxBuffer: gitOutputMaxBytes(),
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
catch (cause) {
|
|
111
|
-
const detail = cause.stderr?.trim();
|
|
112
|
-
throw new Error(`git ${args[0] ?? "command"} failed in '${root}'${detail === undefined || detail.length === 0 ? "" : `: ${detail}`}`, { cause });
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
static #exitCode(error) {
|
|
116
|
-
const cause = error instanceof Error ? error.cause : undefined;
|
|
117
|
-
return cause?.code;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
//# sourceMappingURL=GitBranch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GitBranch.js","sourceRoot":"","sources":["../../src/core/GitBranch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import type { Db } from "../core/Db.ts";
|
|
2
|
-
import { type SchemeResult } from "../core/results.ts";
|
|
3
|
-
import type { LoopPolicy, WriterTier } from "../core/types.ts";
|
|
4
|
-
import type WorkspaceGate from "../core/WorkspaceGate.ts";
|
|
5
|
-
export interface EnqueueBranchWorker {
|
|
6
|
-
workspaceId: number;
|
|
7
|
-
parentWorkerId: number;
|
|
8
|
-
parentLoopId: number;
|
|
9
|
-
op: "WORK" | "FORK";
|
|
10
|
-
name: string;
|
|
11
|
-
prompt: string;
|
|
12
|
-
policy: LoopPolicy;
|
|
13
|
-
origin: WriterTier;
|
|
14
|
-
}
|
|
15
|
-
export interface BranchBatchDependencies {
|
|
16
|
-
settleWorkspace(workspaceId: number): Promise<void>;
|
|
17
|
-
createChild(args: EnqueueBranchWorker): Promise<{
|
|
18
|
-
workerId: number;
|
|
19
|
-
loopId: number;
|
|
20
|
-
}>;
|
|
21
|
-
startChild(workspaceId: number, workerId: number, loopId: number): Promise<SchemeResult>;
|
|
22
|
-
wakeParent(workspaceId: number, workerId: number): Promise<void>;
|
|
23
|
-
notify(workspaceId: number, payload: Readonly<Record<string, unknown>>): void;
|
|
24
|
-
}
|
|
25
|
-
export default class BranchBatches {
|
|
26
|
-
#private;
|
|
27
|
-
constructor(db: Db, gate: WorkspaceGate, dependencies: BranchBatchDependencies);
|
|
28
|
-
enqueue(args: {
|
|
29
|
-
workspaceId: number;
|
|
30
|
-
parentWorkerId: number;
|
|
31
|
-
parentLoopId: number;
|
|
32
|
-
parentTurnId: number;
|
|
33
|
-
op: "WORK" | "FORK";
|
|
34
|
-
name: string;
|
|
35
|
-
branch: string;
|
|
36
|
-
prompt: string;
|
|
37
|
-
policy: LoopPolicy;
|
|
38
|
-
origin: WriterTier;
|
|
39
|
-
}): Promise<{
|
|
40
|
-
workerId: number;
|
|
41
|
-
loopId: number;
|
|
42
|
-
}>;
|
|
43
|
-
sealTurn(parentTurnId: number): Promise<void>;
|
|
44
|
-
completionGate(workerId: number): Promise<SchemeResult | null>;
|
|
45
|
-
recover(): Promise<void>;
|
|
46
|
-
idle(): Promise<void>;
|
|
47
|
-
beginStop(): void;
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=BranchBatches.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BranchBatches.d.ts","sourceRoot":"","sources":["../../src/server/BranchBatches.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAKxC,OAAgB,EAAyB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvF,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AA8B1D,MAAM,WAAW,mBAAmB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACpC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,WAAW,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACzF,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;CACjF;AAID,MAAM,CAAC,OAAO,OAAO,aAAa;;IAQ9B,YAAY,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,uBAAuB,EAK7E;IAEK,OAAO,CAAC,IAAI,EAAE;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,UAAU,CAAC;QACnB,MAAM,EAAE,UAAU,CAAC;KACtB,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CA2IhD;IAKK,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBlD;IAEK,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CA8CnE;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA0B7B;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1B;IAED,SAAS,IAAI,IAAI,CAEhB;CAqeJ"}
|