nawabari 0.1.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/LICENSE +21 -0
- package/README.md +120 -0
- package/dist/cli.d.ts +9 -0
- package/dist/cli.js +298 -0
- package/dist/cli.js.map +1 -0
- package/dist/domain/doctor.d.ts +20 -0
- package/dist/domain/doctor.js +167 -0
- package/dist/domain/doctor.js.map +1 -0
- package/dist/domain/errors.d.ts +29 -0
- package/dist/domain/errors.js +42 -0
- package/dist/domain/errors.js.map +1 -0
- package/dist/domain/session-backend.d.ts +24 -0
- package/dist/domain/session-backend.js +206 -0
- package/dist/domain/session-backend.js.map +1 -0
- package/dist/domain/session.d.ts +89 -0
- package/dist/domain/session.js +47 -0
- package/dist/domain/session.js.map +1 -0
- package/dist/errors.d.ts +8 -0
- package/dist/errors.js +14 -0
- package/dist/errors.js.map +1 -0
- package/dist/git.d.ts +33 -0
- package/dist/git.js +157 -0
- package/dist/git.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/presentation.d.ts +9 -0
- package/dist/presentation.js +61 -0
- package/dist/presentation.js.map +1 -0
- package/dist/registry/atomic.d.ts +20 -0
- package/dist/registry/atomic.js +128 -0
- package/dist/registry/atomic.js.map +1 -0
- package/dist/registry/errors.d.ts +8 -0
- package/dist/registry/errors.js +30 -0
- package/dist/registry/errors.js.map +1 -0
- package/dist/registry/lock.d.ts +60 -0
- package/dist/registry/lock.js +727 -0
- package/dist/registry/lock.js.map +1 -0
- package/dist/registry/store.d.ts +38 -0
- package/dist/registry/store.js +156 -0
- package/dist/registry/store.js.map +1 -0
- package/dist/registry/types.d.ts +18 -0
- package/dist/registry/types.js +3 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/registry.d.ts +5 -0
- package/dist/registry.js +6 -0
- package/dist/registry.js.map +1 -0
- package/dist/session-id.d.ts +7 -0
- package/dist/session-id.js +32 -0
- package/dist/session-id.js.map +1 -0
- package/dist/session-registry.d.ts +169 -0
- package/dist/session-registry.js +1190 -0
- package/dist/session-registry.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/registry/lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type AtomicWriteHooks } from "./atomic.js";
|
|
2
|
+
import { type RepositoryLockOptions } from "./lock.js";
|
|
3
|
+
import { type OwnershipMutation, type RegistryCodec, type RegistryMutator } from "./types.js";
|
|
4
|
+
export interface RegistryMutationBoundaryOptions<State> {
|
|
5
|
+
commonGitDirectory: string;
|
|
6
|
+
codec: RegistryCodec<State>;
|
|
7
|
+
registryDirectory?: string;
|
|
8
|
+
registryPath?: string;
|
|
9
|
+
lockPath?: string;
|
|
10
|
+
registryDirectoryName?: string;
|
|
11
|
+
registryFileName?: string;
|
|
12
|
+
lockFileName?: string;
|
|
13
|
+
lock?: Omit<RepositoryLockOptions, "lockPath">;
|
|
14
|
+
atomicWriteHooks?: AtomicWriteHooks;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Repository-scoped persistence boundary for ownership-changing operations.
|
|
18
|
+
* The codec is supplied by the domain registry (for example #7); this
|
|
19
|
+
* module does not define session, worktree, branch, or lifecycle semantics.
|
|
20
|
+
*/
|
|
21
|
+
export declare class RegistryMutationBoundary<State> {
|
|
22
|
+
readonly commonGitDirectory: string;
|
|
23
|
+
readonly registryDirectory: string;
|
|
24
|
+
readonly registryPath: string;
|
|
25
|
+
readonly lockPath: string;
|
|
26
|
+
private readonly codec;
|
|
27
|
+
private readonly lock;
|
|
28
|
+
private readonly atomicWriteHooks?;
|
|
29
|
+
constructor(options: RegistryMutationBoundaryOptions<State>);
|
|
30
|
+
read(): Promise<State>;
|
|
31
|
+
/** Serialize, validate, and commit one ownership mutation under one lock. */
|
|
32
|
+
mutate<Result>(operation: OwnershipMutation, mutator: RegistryMutator<State, Result>): Promise<Result>;
|
|
33
|
+
create<Result>(mutator: RegistryMutator<State, Result>): Promise<Result>;
|
|
34
|
+
claim<Result>(mutator: RegistryMutator<State, Result>): Promise<Result>;
|
|
35
|
+
close<Result>(mutator: RegistryMutator<State, Result>): Promise<Result>;
|
|
36
|
+
release<Result>(mutator: RegistryMutator<State, Result>): Promise<Result>;
|
|
37
|
+
gc<Result>(mutator: RegistryMutator<State, Result>): Promise<Result>;
|
|
38
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { mkdir, readFile as readFileAsync } from "node:fs/promises";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
import { writeJsonAtomically } from "./atomic.js";
|
|
4
|
+
import { RegistryError } from "./errors.js";
|
|
5
|
+
import { RepositoryLock } from "./lock.js";
|
|
6
|
+
import { OWNERSHIP_MUTATIONS } from "./types.js";
|
|
7
|
+
function errorCode(error) {
|
|
8
|
+
if (!(error instanceof Error) || !("code" in error)) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
const code = error.code;
|
|
12
|
+
return typeof code === "string" ? code : undefined;
|
|
13
|
+
}
|
|
14
|
+
function isRegistryError(error) {
|
|
15
|
+
return error instanceof RegistryError;
|
|
16
|
+
}
|
|
17
|
+
function wrapMutationError(operation, error) {
|
|
18
|
+
if (isRegistryError(error)) {
|
|
19
|
+
return error;
|
|
20
|
+
}
|
|
21
|
+
return new RegistryError("REGISTRY_MUTATION_FAILED", `Registry ${operation} mutation failed`, { operation, cause: error instanceof Error ? error.message : String(error) }, { cause: error });
|
|
22
|
+
}
|
|
23
|
+
function wrapIoError(message, path, error) {
|
|
24
|
+
if (isRegistryError(error)) {
|
|
25
|
+
return error;
|
|
26
|
+
}
|
|
27
|
+
return new RegistryError("REGISTRY_IO_ERROR", message, { path, cause: error instanceof Error ? error.message : String(error) }, { cause: error });
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Repository-scoped persistence boundary for ownership-changing operations.
|
|
31
|
+
* The codec is supplied by the domain registry (for example #7); this
|
|
32
|
+
* module does not define session, worktree, branch, or lifecycle semantics.
|
|
33
|
+
*/
|
|
34
|
+
export class RegistryMutationBoundary {
|
|
35
|
+
commonGitDirectory;
|
|
36
|
+
registryDirectory;
|
|
37
|
+
registryPath;
|
|
38
|
+
lockPath;
|
|
39
|
+
codec;
|
|
40
|
+
lock;
|
|
41
|
+
atomicWriteHooks;
|
|
42
|
+
constructor(options) {
|
|
43
|
+
this.commonGitDirectory = resolve(options.commonGitDirectory);
|
|
44
|
+
this.registryDirectory =
|
|
45
|
+
options.registryDirectory ?? join(this.commonGitDirectory, options.registryDirectoryName ?? "nawabari");
|
|
46
|
+
this.registryPath =
|
|
47
|
+
options.registryPath ?? join(this.registryDirectory, options.registryFileName ?? "registry.json");
|
|
48
|
+
this.lockPath = options.lockPath ?? join(this.registryDirectory, options.lockFileName ?? "registry.lock");
|
|
49
|
+
this.codec = options.codec;
|
|
50
|
+
this.lock = new RepositoryLock({
|
|
51
|
+
...(options.lock ?? {}),
|
|
52
|
+
lockPath: this.lockPath,
|
|
53
|
+
});
|
|
54
|
+
this.atomicWriteHooks = options.atomicWriteHooks;
|
|
55
|
+
}
|
|
56
|
+
async read() {
|
|
57
|
+
let raw;
|
|
58
|
+
try {
|
|
59
|
+
raw = await readFileAsync(this.registryPath, "utf8");
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
if (errorCode(error) === "ENOENT") {
|
|
63
|
+
throw new RegistryError("REGISTRY_NOT_FOUND", "Registry has not been initialized", {
|
|
64
|
+
path: this.registryPath,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
throw wrapIoError("Cannot read registry", this.registryPath, error);
|
|
68
|
+
}
|
|
69
|
+
let parsed;
|
|
70
|
+
try {
|
|
71
|
+
parsed = JSON.parse(raw);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
throw new RegistryError("REGISTRY_CORRUPT", "Registry authoritative state is not valid JSON", { path: this.registryPath, cause: error instanceof Error ? error.message : String(error) }, { cause: error });
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const state = this.codec.parse(parsed);
|
|
78
|
+
this.codec.validate(state);
|
|
79
|
+
return state;
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (isRegistryError(error)) {
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
throw new RegistryError("REGISTRY_CORRUPT", "Registry codec rejected authoritative state", { path: this.registryPath, cause: error instanceof Error ? error.message : String(error) }, { cause: error });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/** Serialize, validate, and commit one ownership mutation under one lock. */
|
|
89
|
+
async mutate(operation, mutator) {
|
|
90
|
+
if (!OWNERSHIP_MUTATIONS.includes(operation)) {
|
|
91
|
+
throw new TypeError(`Unsupported registry mutation: ${operation}`);
|
|
92
|
+
}
|
|
93
|
+
const lease = await this.lock.acquire();
|
|
94
|
+
let result;
|
|
95
|
+
let failed = false;
|
|
96
|
+
let operationError;
|
|
97
|
+
try {
|
|
98
|
+
let state;
|
|
99
|
+
try {
|
|
100
|
+
state = await this.read();
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
if (isRegistryError(error) && error.code === "REGISTRY_NOT_FOUND") {
|
|
104
|
+
state = this.codec.empty();
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
result = await mutator(state);
|
|
112
|
+
this.codec.validate(state);
|
|
113
|
+
const persisted = this.codec.serialize === undefined ? state : this.codec.serialize(state);
|
|
114
|
+
await mkdir(this.registryDirectory, { recursive: true, mode: 0o700 });
|
|
115
|
+
await writeJsonAtomically(this.registryPath, persisted, { hooks: this.atomicWriteHooks });
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
failed = true;
|
|
119
|
+
operationError = wrapMutationError(operation, error);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
failed = true;
|
|
124
|
+
operationError = wrapMutationError(operation, error);
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
await lease.release();
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
if (!failed) {
|
|
131
|
+
failed = true;
|
|
132
|
+
operationError = new RegistryError("LOCK_RELEASE_FAILED", `Registry ${operation} completed but lock release failed`, { operation, cause: error instanceof Error ? error.message : String(error) }, { cause: error });
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (failed) {
|
|
136
|
+
throw operationError;
|
|
137
|
+
}
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
create(mutator) {
|
|
141
|
+
return this.mutate("create", mutator);
|
|
142
|
+
}
|
|
143
|
+
claim(mutator) {
|
|
144
|
+
return this.mutate("claim", mutator);
|
|
145
|
+
}
|
|
146
|
+
close(mutator) {
|
|
147
|
+
return this.mutate("close", mutator);
|
|
148
|
+
}
|
|
149
|
+
release(mutator) {
|
|
150
|
+
return this.mutate("release", mutator);
|
|
151
|
+
}
|
|
152
|
+
gc(mutator) {
|
|
153
|
+
return this.mutate("gc", mutator);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/registry/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,mBAAmB,EAAyB,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAA8B,MAAM,WAAW,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAoE,MAAM,YAAY,CAAC;AAenH,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,KAAK,YAAY,aAAa,CAAC;AACxC,CAAC;AAED,SAAS,iBAAiB,CAAC,SAA4B,EAAE,KAAc;IACrE,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,aAAa,CACtB,0BAA0B,EAC1B,YAAY,SAAS,kBAAkB,EACvC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC5E,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,IAAY,EAAE,KAAc;IAChE,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,aAAa,CACtB,mBAAmB,EACnB,OAAO,EACP,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EACvE,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,wBAAwB;IACnB,kBAAkB,CAAS;IAC3B,iBAAiB,CAAS;IAC1B,YAAY,CAAS;IACrB,QAAQ,CAAS;IAChB,KAAK,CAAuB;IAC5B,IAAI,CAAiB;IACrB,gBAAgB,CAAoB;IAErD,YAAmB,OAA+C;QAChE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC9D,IAAI,CAAC,iBAAiB;YACpB,OAAO,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,CAAC,qBAAqB,IAAI,UAAU,CAAC,CAAC;QAC1G,IAAI,CAAC,YAAY;YACf,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,gBAAgB,IAAI,eAAe,CAAC,CAAC;QACpG,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,YAAY,IAAI,eAAe,CAAC,CAAC;QAC1G,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,cAAc,CAAC;YAC7B,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAClC,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,mCAAmC,EAAE;oBACjF,IAAI,EAAE,IAAI,CAAC,YAAY;iBACxB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,WAAW,CAAC,sBAAsB,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,gDAAgD,EAChD,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC1F,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,6CAA6C,EAC7C,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC1F,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,6EAA6E;IACtE,KAAK,CAAC,MAAM,CAAS,SAA4B,EAAE,OAAuC;QAC/F,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,SAAS,CAAC,kCAAkC,SAAS,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACxC,IAAI,MAAe,CAAC;QACpB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,cAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,IAAI,KAAY,CAAC;YACjB,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;oBAClE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC3F,MAAM,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtE,MAAM,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAC5F,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,IAAI,CAAC;gBACd,cAAc,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,IAAI,CAAC;YACd,cAAc,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,GAAG,IAAI,CAAC;gBACd,cAAc,GAAG,IAAI,aAAa,CAChC,qBAAqB,EACrB,YAAY,SAAS,oCAAoC,EACzD,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAC5E,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,cAAc,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,MAAM,CAAS,OAAuC;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAS,OAAuC;QAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAEM,KAAK,CAAS,OAAuC;QAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAEM,OAAO,CAAS,OAAuC;QAC5D,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IAEM,EAAE,CAAS,OAAuC;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const LOCK_SCHEMA_VERSION: 1;
|
|
2
|
+
export declare const OWNERSHIP_MUTATIONS: readonly ["create", "claim", "close", "release", "gc"];
|
|
3
|
+
export type OwnershipMutation = (typeof OWNERSHIP_MUTATIONS)[number];
|
|
4
|
+
export interface LockOwnerRecord {
|
|
5
|
+
schemaVersion: typeof LOCK_SCHEMA_VERSION;
|
|
6
|
+
token: string;
|
|
7
|
+
pid: number;
|
|
8
|
+
hostname: string;
|
|
9
|
+
processStartTime: string | null;
|
|
10
|
+
acquiredAt: string;
|
|
11
|
+
}
|
|
12
|
+
export interface RegistryCodec<State> {
|
|
13
|
+
empty(): State;
|
|
14
|
+
parse(value: unknown): State;
|
|
15
|
+
validate(state: State): void;
|
|
16
|
+
serialize?(state: State): unknown;
|
|
17
|
+
}
|
|
18
|
+
export type RegistryMutator<State, Result> = (draft: State) => Result | Promise<Result>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAU,CAAC;AAE9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAU,CAAC"}
|
package/dist/registry.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates an RFC 9562 UUIDv7. The millisecond timestamp makes IDs useful
|
|
3
|
+
* for diagnostics, while the random portion makes local concurrent creation
|
|
4
|
+
* safe without a coordinator.
|
|
5
|
+
*/
|
|
6
|
+
export declare function generateSessionId(now?: number): string;
|
|
7
|
+
export declare function isSessionId(value: string): boolean;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
2
|
+
const SESSION_ID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/u;
|
|
3
|
+
/**
|
|
4
|
+
* Generates an RFC 9562 UUIDv7. The millisecond timestamp makes IDs useful
|
|
5
|
+
* for diagnostics, while the random portion makes local concurrent creation
|
|
6
|
+
* safe without a coordinator.
|
|
7
|
+
*/
|
|
8
|
+
export function generateSessionId(now = Date.now()) {
|
|
9
|
+
if (!Number.isSafeInteger(now) || now < 0) {
|
|
10
|
+
throw new RangeError("UUIDv7 timestamps must be non-negative safe integers");
|
|
11
|
+
}
|
|
12
|
+
const bytes = randomBytes(16);
|
|
13
|
+
let timestamp = BigInt(now);
|
|
14
|
+
for (let index = 5; index >= 0; index -= 1) {
|
|
15
|
+
bytes[index] = Number(timestamp & 0xffn);
|
|
16
|
+
timestamp >>= 8n;
|
|
17
|
+
}
|
|
18
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x70;
|
|
19
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
20
|
+
const hexadecimal = bytes.toString("hex");
|
|
21
|
+
return [
|
|
22
|
+
hexadecimal.slice(0, 8),
|
|
23
|
+
hexadecimal.slice(8, 12),
|
|
24
|
+
hexadecimal.slice(12, 16),
|
|
25
|
+
hexadecimal.slice(16, 20),
|
|
26
|
+
hexadecimal.slice(20),
|
|
27
|
+
].join("-");
|
|
28
|
+
}
|
|
29
|
+
export function isSessionId(value) {
|
|
30
|
+
return SESSION_ID_PATTERN.test(value);
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=session-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-id.js","sourceRoot":"","sources":["../src/session-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,kBAAkB,GAAG,wEAAwE,CAAC;AAEpG;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAChD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,UAAU,CAAC,sDAAsD,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC9B,IAAI,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;QACzC,SAAS,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACpC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAEpC,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO;QACL,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACvB,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACxB,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QACzB,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QACzB,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;KACtB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { type GitCommandRunner, type RepositoryContext } from "./git.js";
|
|
2
|
+
import { type RegistryErrorCode, type RegistryErrorDetails } from "./errors.js";
|
|
3
|
+
export declare const REGISTRY_SCHEMA_VERSION: 1;
|
|
4
|
+
export declare const REGISTRY_DIRECTORY_NAME = "nawabari";
|
|
5
|
+
export declare const REGISTRY_FILE_NAME = "session-registry.json";
|
|
6
|
+
export declare const REGISTRY_LOCK_FILE_NAME = "session-registry.lock";
|
|
7
|
+
export declare const DEFAULT_STALE_AFTER_MS: number;
|
|
8
|
+
export type RegistrySchemaVersion = typeof REGISTRY_SCHEMA_VERSION;
|
|
9
|
+
export type SessionState = "new" | "active" | "closing" | "closed" | "stale";
|
|
10
|
+
export interface SessionRecord {
|
|
11
|
+
readonly schemaVersion: RegistrySchemaVersion;
|
|
12
|
+
readonly sessionId: string;
|
|
13
|
+
readonly repositoryId: string;
|
|
14
|
+
readonly worktreeId: string;
|
|
15
|
+
readonly worktreePath: string;
|
|
16
|
+
readonly branchId: string;
|
|
17
|
+
readonly branchName: string;
|
|
18
|
+
readonly state: SessionState;
|
|
19
|
+
readonly createdAt: string;
|
|
20
|
+
readonly updatedAt: string;
|
|
21
|
+
readonly label?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface CreateSessionOptions {
|
|
24
|
+
readonly worktreePath?: string;
|
|
25
|
+
readonly branchName?: string;
|
|
26
|
+
readonly label?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface ProvisionSessionOptions {
|
|
29
|
+
readonly worktreePath?: string;
|
|
30
|
+
readonly branchName?: string;
|
|
31
|
+
readonly baseRef?: string;
|
|
32
|
+
readonly label?: string;
|
|
33
|
+
readonly defaultBranchName?: string;
|
|
34
|
+
readonly protectedBranchNames?: readonly string[];
|
|
35
|
+
readonly protectedWorktreePaths?: readonly string[];
|
|
36
|
+
}
|
|
37
|
+
export interface CloseSessionResult {
|
|
38
|
+
readonly session: SessionRecord;
|
|
39
|
+
readonly worktreeRemoved: boolean;
|
|
40
|
+
readonly branchRemoved: boolean;
|
|
41
|
+
readonly idempotent: boolean;
|
|
42
|
+
}
|
|
43
|
+
export interface CloseSessionOptions {
|
|
44
|
+
readonly sessionId?: string | null;
|
|
45
|
+
readonly session_id?: string | null;
|
|
46
|
+
}
|
|
47
|
+
export interface GarbageCollectOptions {
|
|
48
|
+
readonly apply?: boolean;
|
|
49
|
+
readonly staleAfterMs?: number;
|
|
50
|
+
}
|
|
51
|
+
export interface GarbageCollectBlocked {
|
|
52
|
+
readonly sessionId: string;
|
|
53
|
+
readonly code: RegistryErrorCode;
|
|
54
|
+
readonly message: string;
|
|
55
|
+
readonly details: RegistryErrorDetails;
|
|
56
|
+
}
|
|
57
|
+
export interface GarbageCollectResult {
|
|
58
|
+
readonly apply: boolean;
|
|
59
|
+
readonly candidates: readonly SessionRecord[];
|
|
60
|
+
readonly cleaned: readonly SessionRecord[];
|
|
61
|
+
readonly blocked: readonly GarbageCollectBlocked[];
|
|
62
|
+
}
|
|
63
|
+
export interface GuardOptions {
|
|
64
|
+
readonly sessionId?: string | null;
|
|
65
|
+
}
|
|
66
|
+
export type GuardReasonCode = "ALLOWED" | RegistryErrorCode;
|
|
67
|
+
export interface GuardDecision {
|
|
68
|
+
readonly allowed: boolean;
|
|
69
|
+
readonly code: GuardReasonCode;
|
|
70
|
+
readonly repositoryId: string;
|
|
71
|
+
readonly worktreePath: string;
|
|
72
|
+
readonly branchName: string | null;
|
|
73
|
+
readonly sessionId: string | null;
|
|
74
|
+
readonly ownerSessionId: string | null;
|
|
75
|
+
readonly requestedSessionId: string | null;
|
|
76
|
+
readonly state: SessionState | null;
|
|
77
|
+
readonly details: RegistryErrorDetails;
|
|
78
|
+
}
|
|
79
|
+
export interface SessionRegistryOptions {
|
|
80
|
+
readonly cwd?: string;
|
|
81
|
+
readonly repository?: RepositoryContext;
|
|
82
|
+
readonly git?: GitCommandRunner;
|
|
83
|
+
readonly clock?: () => Date;
|
|
84
|
+
readonly idGenerator?: () => string;
|
|
85
|
+
readonly lockTimeoutMs?: number;
|
|
86
|
+
readonly lockStaleAfterMs?: number;
|
|
87
|
+
readonly lockMetadataGraceMs?: number;
|
|
88
|
+
readonly defaultBranchName?: string;
|
|
89
|
+
readonly protectedBranchNames?: readonly string[];
|
|
90
|
+
readonly protectedWorktreePaths?: readonly string[];
|
|
91
|
+
readonly worktreeRoot?: string;
|
|
92
|
+
readonly staleAfterMs?: number;
|
|
93
|
+
}
|
|
94
|
+
export interface RegistryPaths {
|
|
95
|
+
readonly directory: string;
|
|
96
|
+
readonly registry: string;
|
|
97
|
+
readonly lock: string;
|
|
98
|
+
}
|
|
99
|
+
export interface PersistedSessionRecord {
|
|
100
|
+
readonly schema_version: RegistrySchemaVersion;
|
|
101
|
+
readonly session_id: string;
|
|
102
|
+
readonly repository_id: string;
|
|
103
|
+
readonly worktree_id: string;
|
|
104
|
+
readonly worktree_path: string;
|
|
105
|
+
readonly branch_id: string;
|
|
106
|
+
readonly branch_name: string;
|
|
107
|
+
readonly state: SessionState;
|
|
108
|
+
readonly created_at: string;
|
|
109
|
+
readonly updated_at: string;
|
|
110
|
+
readonly label?: string;
|
|
111
|
+
}
|
|
112
|
+
export interface PersistedRegistry {
|
|
113
|
+
readonly schema_version: RegistrySchemaVersion;
|
|
114
|
+
readonly repository_id: string;
|
|
115
|
+
readonly sessions: readonly PersistedSessionRecord[];
|
|
116
|
+
}
|
|
117
|
+
export declare class SessionRegistry {
|
|
118
|
+
readonly repository: RepositoryContext;
|
|
119
|
+
readonly paths: RegistryPaths;
|
|
120
|
+
private readonly git;
|
|
121
|
+
private readonly clock;
|
|
122
|
+
private readonly idGenerator;
|
|
123
|
+
private readonly lockTimeoutMs;
|
|
124
|
+
private readonly defaultBranchName;
|
|
125
|
+
private readonly protectedBranchNames;
|
|
126
|
+
private readonly protectedWorktreePaths;
|
|
127
|
+
private readonly worktreeRoot;
|
|
128
|
+
private readonly staleAfterMs;
|
|
129
|
+
private readonly lockStaleAfterMs;
|
|
130
|
+
private readonly lockMetadataGraceMs;
|
|
131
|
+
private readonly lock;
|
|
132
|
+
constructor(options?: SessionRegistryOptions);
|
|
133
|
+
read(): readonly SessionRecord[];
|
|
134
|
+
list(): readonly SessionRecord[];
|
|
135
|
+
get(sessionId: string): SessionRecord | undefined;
|
|
136
|
+
create(options?: CreateSessionOptions): SessionRecord;
|
|
137
|
+
createSession(options?: CreateSessionOptions): SessionRecord;
|
|
138
|
+
/** Provision one isolated Git worktree and commit its ownership atomically. */
|
|
139
|
+
provision(options?: ProvisionSessionOptions): SessionRecord;
|
|
140
|
+
provisionSession(options?: ProvisionSessionOptions): SessionRecord;
|
|
141
|
+
createProvisionedSession(options?: ProvisionSessionOptions): SessionRecord;
|
|
142
|
+
register(record: SessionRecord): SessionRecord;
|
|
143
|
+
registerSession(record: SessionRecord): SessionRecord;
|
|
144
|
+
resolveCurrentSession(): SessionRecord;
|
|
145
|
+
currentSession(): SessionRecord;
|
|
146
|
+
/**
|
|
147
|
+
* Evaluate the current worktree as a Nawabari mutation context without taking
|
|
148
|
+
* the registry lock or changing Git or registry state.
|
|
149
|
+
*/
|
|
150
|
+
guard(options?: GuardOptions): GuardDecision;
|
|
151
|
+
/** Close one session only after its ownership and recoverability are proven safe. */
|
|
152
|
+
close(sessionIdOrOptions?: string | null | CloseSessionOptions): CloseSessionResult;
|
|
153
|
+
closeSession(sessionIdOrOptions?: string | null | CloseSessionOptions): CloseSessionResult;
|
|
154
|
+
/** Detect stale sessions, optionally applying only cleanup that passes close preflight. */
|
|
155
|
+
garbageCollect(options?: GarbageCollectOptions): GarbageCollectResult;
|
|
156
|
+
gc(options?: GarbageCollectOptions): GarbageCollectResult;
|
|
157
|
+
private closeUnsafe;
|
|
158
|
+
private inspectCleanupResources;
|
|
159
|
+
private protectedWorktree;
|
|
160
|
+
private protectedBranch;
|
|
161
|
+
private branchIsReachableFromIntegration;
|
|
162
|
+
private resolveProvisioningResources;
|
|
163
|
+
private resolveCreationResources;
|
|
164
|
+
private readUnsafe;
|
|
165
|
+
private writeUnsafe;
|
|
166
|
+
private mutate;
|
|
167
|
+
private withLock;
|
|
168
|
+
}
|
|
169
|
+
export declare function toPersistedSessionRecord(record: SessionRecord, expectedRepositoryId?: string): PersistedSessionRecord;
|