nawabari 0.1.0 → 0.2.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.
@@ -9,10 +9,21 @@ export const LOCAL_SESSION_CAPABILITIES = Object.freeze({
9
9
  current_session_resolution: true,
10
10
  });
11
11
  const REGISTRY_ERROR_CODE_MAP = Object.freeze({
12
- GIT_COMMAND_FAILED: "GIT_OPERATION_FAILED",
12
+ GIT_COMMAND_FAILED: "GIT_COMMAND_FAILED",
13
+ GIT_SPAWN_FAILED: "GIT_SPAWN_FAILED",
14
+ GIT_TIMEOUT: "GIT_TIMEOUT",
15
+ GIT_OUTPUT_LIMIT: "GIT_OUTPUT_LIMIT",
13
16
  NOT_A_GIT_REPOSITORY: "NOT_GIT_REPOSITORY",
14
- REPOSITORY_IDENTITY_AMBIGUOUS: "NOT_GIT_REPOSITORY",
15
- WORKTREE_IDENTITY_AMBIGUOUS: "INVALID_WORKTREE",
17
+ REPOSITORY_IDENTITY_AMBIGUOUS: "GIT_STATE_AMBIGUOUS",
18
+ WORKTREE_IDENTITY_AMBIGUOUS: "GIT_STATE_AMBIGUOUS",
19
+ DETACHED_HEAD: "DETACHED_HEAD",
20
+ MISSING_WORKTREE: "MISSING_WORKTREE",
21
+ REPOSITORY_MISMATCH: "REPOSITORY_MISMATCH",
22
+ WORKTREE_MISMATCH: "WORKTREE_MISMATCH",
23
+ BRANCH_MISMATCH: "BRANCH_MISMATCH",
24
+ STALE_REGISTRY: "STALE_REGISTRY",
25
+ GIT_STATE_AMBIGUOUS: "GIT_STATE_AMBIGUOUS",
26
+ PHYSICAL_OBSERVATION_UNAVAILABLE: "PHYSICAL_OBSERVATION_UNAVAILABLE",
16
27
  INVALID_SESSION_ID: "INVALID_SESSION_ID",
17
28
  INVALID_SESSION_RECORD: "INVALID_REGISTRY",
18
29
  INVALID_BRANCH_ID: "INVALID_BRANCH",
@@ -31,10 +42,46 @@ const REGISTRY_ERROR_CODE_MAP = Object.freeze({
31
42
  SESSION_ID_COLLISION: "OPERATION_REJECTED",
32
43
  SESSION_NOT_FOUND: "SESSION_NOT_FOUND",
33
44
  DIRTY_WORKTREE: "DIRTY_WORKTREE",
45
+ NESTED_REPOSITORY: "NESTED_REPOSITORY",
34
46
  OWNERSHIP_MISMATCH: "OWNERSHIP_MISMATCH",
35
47
  RECOVERABLE_COMMITS: "RECOVERABLE_COMMITS",
48
+ RECOVERABLE_STASHES: "RECOVERABLE_STASHES",
49
+ RECONCILIATION_DRIFT: "RECONCILIATION_DRIFT",
36
50
  REGISTRY_LOCK_TIMEOUT: "LOCK_CONTENTION",
37
51
  REGISTRY_IO_FAILURE: "REGISTRY_UNREADABLE",
52
+ INVALID_CLAIM: "INVALID_CLAIM",
53
+ INVALID_OPERATION: "INVALID_OPERATION",
54
+ OPERATION_REJECTED: "OPERATION_REJECTED",
55
+ INVALID_RESOURCE: "INVALID_RESOURCE",
56
+ MISSING_RESOURCE_CLAIM: "MISSING_RESOURCE_CLAIM",
57
+ INVALID_CLAIM_RESOURCE: "INVALID_CLAIM_RESOURCE",
58
+ CLAIM_PATH_TRAVERSAL: "CLAIM_PATH_TRAVERSAL",
59
+ CLAIM_SYMLINK_ESCAPE: "CLAIM_SYMLINK_ESCAPE",
60
+ CLAIM_AMBIGUOUS_PATH: "CLAIM_AMBIGUOUS_PATH",
61
+ UNSUPPORTED_CLAIM_GLOB: "UNSUPPORTED_CLAIM_GLOB",
62
+ CLAIM_REPOSITORY_MISMATCH: "CLAIM_REPOSITORY_MISMATCH",
63
+ CLAIM_SESSION_MISMATCH: "CLAIM_SESSION_MISMATCH",
64
+ DUPLICATE_CLAIM: "DUPLICATE_CLAIM",
65
+ CONTRADICTORY_CLAIM: "CONTRADICTORY_CLAIM",
66
+ RESOURCE_CLAIM_CONFLICT: "RESOURCE_CLAIM_CONFLICT",
67
+ CLAIM_NOT_FOUND: "CLAIM_NOT_FOUND",
68
+ SESSION_NOT_ACTIVE: "SESSION_NOT_ACTIVE",
69
+ UNSUPPORTED_CLAIM_SCHEMA_VERSION: "UNSUPPORTED_CLAIM_SCHEMA_VERSION",
70
+ INVALID_COMMIT_MESSAGE: "INVALID_COMMIT_MESSAGE",
71
+ COMMIT_EMPTY_DIFF: "COMMIT_EMPTY_DIFF",
72
+ UNEXPECTED_CHANGED_PATHS: "UNEXPECTED_CHANGED_PATHS",
73
+ COMMIT_STAGING_FAILED: "COMMIT_STAGING_FAILED",
74
+ COMMIT_FAILED: "COMMIT_FAILED",
75
+ COMMIT_RESULT_UNAVAILABLE: "COMMIT_RESULT_UNAVAILABLE",
76
+ INVALID_REMOTE: "INVALID_REMOTE",
77
+ INVALID_REMOTE_BRANCH: "INVALID_REMOTE_BRANCH",
78
+ PUSH_TARGET_MISMATCH: "PUSH_TARGET_MISMATCH",
79
+ PUSH_REMOTE_INSPECTION_FAILED: "PUSH_REMOTE_INSPECTION_FAILED",
80
+ PUSH_NO_UPSTREAM: "PUSH_NO_UPSTREAM",
81
+ PUSH_BEHIND: "PUSH_BEHIND",
82
+ PUSH_DIVERGED: "PUSH_DIVERGED",
83
+ PUSH_DIRTY_WORKTREE: "PUSH_DIRTY_WORKTREE",
84
+ PUSH_FAILED: "PUSH_FAILED",
38
85
  });
39
86
  /** SessionBackend implementation backed only by the local Git repository. */
40
87
  export class LocalSessionBackend {
@@ -87,6 +134,57 @@ export class LocalSessionBackend {
87
134
  return failure(toDomainError(error));
88
135
  }
89
136
  }
137
+ async authorizeOperation(context, options) {
138
+ try {
139
+ return success(toDomainOperationAuthorizationDecision(this.registryFor(context).authorizeOperation({
140
+ operation: options.operation,
141
+ resources: options.resources,
142
+ sessionId: options.session_id,
143
+ })));
144
+ }
145
+ catch (error) {
146
+ return failure(toDomainError(error));
147
+ }
148
+ }
149
+ async checkpoint(context, options) {
150
+ try {
151
+ return success(toDomainCheckpointEvidence(this.registryFor(context).checkpoint({
152
+ sessionId: options.session_id,
153
+ })));
154
+ }
155
+ catch (error) {
156
+ return failure(toDomainError(error));
157
+ }
158
+ }
159
+ async commit(context, options) {
160
+ try {
161
+ const result = this.registryFor(context).commit({
162
+ sessionId: options.session_id,
163
+ message: options.message,
164
+ resources: options.resources,
165
+ });
166
+ return success(toDomainCommitResult(result));
167
+ }
168
+ catch (error) {
169
+ return failure(toDomainError(error));
170
+ }
171
+ }
172
+ async push(context, options) {
173
+ try {
174
+ const result = this.registryFor(context).push({
175
+ sessionId: options.session_id,
176
+ resources: options.resources,
177
+ remote: options.remote,
178
+ branch: options.branch,
179
+ force: options.force,
180
+ createUpstream: options.create_upstream,
181
+ });
182
+ return success(toDomainPushResult(result));
183
+ }
184
+ catch (error) {
185
+ return failure(toDomainError(error));
186
+ }
187
+ }
90
188
  async listSessions(context) {
91
189
  try {
92
190
  return success({ sessions: this.registryFor(context).list().map(toDomainRecord) });
@@ -142,6 +240,57 @@ export class LocalSessionBackend {
142
240
  return Promise.resolve(failure(toDomainError(error)));
143
241
  }
144
242
  }
243
+ async claimResources(context, options) {
244
+ try {
245
+ const result = this.registryFor(context).claimResources({
246
+ sessionId: options.session_id ?? undefined,
247
+ repositoryId: options.repository ?? undefined,
248
+ claims: options.claims.map(toRegistryClaimInput),
249
+ });
250
+ return success(toDomainClaimResult(result));
251
+ }
252
+ catch (error) {
253
+ return failure(toDomainError(error));
254
+ }
255
+ }
256
+ async updateClaims(context, options) {
257
+ try {
258
+ const result = this.registryFor(context).updateClaims({
259
+ sessionId: options.session_id ?? undefined,
260
+ repositoryId: options.repository ?? undefined,
261
+ claims: options.claims.map(toRegistryClaimInput),
262
+ });
263
+ return success(toDomainClaimResult(result));
264
+ }
265
+ catch (error) {
266
+ return failure(toDomainError(error));
267
+ }
268
+ }
269
+ async releaseClaims(context, options) {
270
+ try {
271
+ const result = this.registryFor(context).releaseClaims({
272
+ sessionId: options.session_id ?? undefined,
273
+ claimIds: options.claim_ids ?? undefined,
274
+ });
275
+ return success({
276
+ session_id: result.sessionId,
277
+ released: result.released.map(toDomainClaim),
278
+ remaining: result.remaining.map(toDomainClaim),
279
+ idempotent: result.idempotent,
280
+ });
281
+ }
282
+ catch (error) {
283
+ return failure(toDomainError(error));
284
+ }
285
+ }
286
+ async listClaims(context, sessionId) {
287
+ try {
288
+ return success({ claims: this.registryFor(context).listClaims(sessionId).map(toDomainClaim) });
289
+ }
290
+ catch (error) {
291
+ return failure(toDomainError(error));
292
+ }
293
+ }
145
294
  registryFor(context) {
146
295
  return new SessionRegistry({ ...this.registryOptions, cwd: context.cwd, git: this.git });
147
296
  }
@@ -176,6 +325,69 @@ function toDomainGuardDecision(decision) {
176
325
  details: { ...decision.details },
177
326
  };
178
327
  }
328
+ function toDomainOperationAuthorizationDecision(decision) {
329
+ return {
330
+ schema_version: decision.schemaVersion,
331
+ allowed: decision.allowed,
332
+ code: decision.code === "ALLOWED"
333
+ ? "ALLOWED"
334
+ : (REGISTRY_ERROR_CODE_MAP[decision.code] ?? "OPERATION_REJECTED"),
335
+ operation: decision.operation,
336
+ required_access: decision.requiredAccess,
337
+ repository: decision.repositoryId,
338
+ worktree: decision.worktreePath,
339
+ branch: decision.branchName,
340
+ session_id: decision.sessionId,
341
+ owner_session_id: decision.ownerSessionId,
342
+ requested_session_id: decision.requestedSessionId,
343
+ state: decision.state,
344
+ resources: decision.resources.map((resource) => ({
345
+ resource: resource.resource,
346
+ claim_ids: [...resource.claimIds],
347
+ })),
348
+ details: Object.fromEntries(Object.entries(decision.details).map(([key, value]) => [key, Array.isArray(value) ? [...value] : value])),
349
+ };
350
+ }
351
+ function toDomainCheckpointEvidence(evidence) {
352
+ return {
353
+ schema_version: evidence.schemaVersion,
354
+ source: evidence.source,
355
+ guarantee: evidence.guarantee,
356
+ repository: evidence.repositoryId,
357
+ worktree: evidence.worktreePath,
358
+ branch: evidence.branchName,
359
+ head: evidence.headId,
360
+ session_id: evidence.sessionId,
361
+ paths: {
362
+ changed: [...evidence.paths.changed],
363
+ staged: [...evidence.paths.staged],
364
+ unstaged: [...evidence.paths.unstaged],
365
+ untracked: [...evidence.paths.untracked],
366
+ },
367
+ in_claim: [...evidence.inClaim],
368
+ out_of_claim: [...evidence.outOfClaim],
369
+ max_paths: evidence.maxPaths,
370
+ };
371
+ }
372
+ function toDomainCommitResult(result) {
373
+ return {
374
+ schema_version: result.schemaVersion,
375
+ commit_sha: result.commitSha,
376
+ message: result.message,
377
+ resources: [...result.resources],
378
+ };
379
+ }
380
+ function toDomainPushResult(result) {
381
+ return {
382
+ schema_version: result.schemaVersion,
383
+ remote: result.remote,
384
+ branch: result.branch,
385
+ target: result.target,
386
+ relation: result.relation,
387
+ force: result.force,
388
+ upstream_created: result.upstreamCreated,
389
+ };
390
+ }
179
391
  function toDomainGarbageCollectResult(result) {
180
392
  return {
181
393
  apply: result.apply,
@@ -186,9 +398,41 @@ function toDomainGarbageCollectResult(result) {
186
398
  code: REGISTRY_ERROR_CODE_MAP[blocked.code],
187
399
  message: blocked.message,
188
400
  details: { ...blocked.details },
401
+ recovery_hints: [...blocked.recoveryHints],
189
402
  })),
190
403
  };
191
404
  }
405
+ function toRegistryClaimInput(input) {
406
+ return {
407
+ resource: input.resource,
408
+ mode: input.mode,
409
+ ...(input.repository === null || input.repository === undefined ? {} : { repositoryId: input.repository }),
410
+ ...(input.session_id === null || input.session_id === undefined ? {} : { sessionId: input.session_id }),
411
+ ...(input.worktree === null || input.worktree === undefined ? {} : { worktreePath: input.worktree }),
412
+ };
413
+ }
414
+ function toDomainClaimResult(result) {
415
+ return {
416
+ session: toDomainRecord(result.session),
417
+ claims: result.claims.map(toDomainClaim),
418
+ added: result.added.map(toDomainClaim),
419
+ released: result.released.map(toDomainClaim),
420
+ idempotent: result.idempotent,
421
+ };
422
+ }
423
+ function toDomainClaim(claim) {
424
+ return {
425
+ schema_version: claim.schemaVersion,
426
+ claim_id: claim.claimId,
427
+ session_id: claim.sessionId,
428
+ repository: claim.repositoryId,
429
+ worktree: claim.worktreePath,
430
+ resource: claim.resource,
431
+ mode: claim.mode,
432
+ created_at: claim.createdAt,
433
+ updated_at: claim.updatedAt,
434
+ };
435
+ }
192
436
  function toDomainError(error, fallbackCode) {
193
437
  if (!isSessionRegistryError(error)) {
194
438
  const cause = error instanceof Error ? `${error.name}: ${error.message}` : String(error);
@@ -1 +1 @@
1
- {"version":3,"file":"session-backend.js","sourceRoot":"","sources":["../../src/domain/session-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-backend.js","sourceRoot":"","sources":["../../src/domain/session-backend.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAKhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAqD,MAAM,cAAc,CAAC;AACzG,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAsD,MAAM,aAAa,CAAC;AAoChH,MAAM,CAAC,MAAM,0BAA0B,GAAwB,MAAM,CAAC,MAAM,CAAC;IAC3E,gBAAgB,EAAE,IAAI;IACtB,YAAY,EAAE,IAAI;IAClB,SAAS,EAAE,IAAI;IACf,kBAAkB,EAAE,IAAI;IACxB,0BAA0B,EAAE,IAAI;CACjC,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAmD,MAAM,CAAC,MAAM,CAAC;IAC5F,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,WAAW,EAAE,aAAa;IAC1B,gBAAgB,EAAE,kBAAkB;IACpC,oBAAoB,EAAE,oBAAoB;IAC1C,6BAA6B,EAAE,qBAAqB;IACpD,2BAA2B,EAAE,qBAAqB;IAClD,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,mBAAmB,EAAE,qBAAqB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;IAClC,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,gCAAgC,EAAE,kCAAkC;IACpE,kBAAkB,EAAE,oBAAoB;IACxC,sBAAsB,EAAE,kBAAkB;IAC1C,iBAAiB,EAAE,gBAAgB;IACnC,qBAAqB,EAAE,kBAAkB;IACzC,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,0BAA0B,EAAE,kBAAkB;IAC9C,4BAA4B,EAAE,kBAAkB;IAChD,oBAAoB,EAAE,oBAAoB;IAC1C,4BAA4B,EAAE,iCAAiC;IAC/D,0BAA0B,EAAE,+BAA+B;IAC3D,uBAAuB,EAAE,yBAAyB;IAClD,qBAAqB,EAAE,uBAAuB;IAC9C,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,oBAAoB,EAAE,oBAAoB;IAC1C,iBAAiB,EAAE,mBAAmB;IACtC,cAAc,EAAE,gBAAgB;IAChC,iBAAiB,EAAE,mBAAmB;IACtC,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAC1C,oBAAoB,EAAE,sBAAsB;IAC5C,qBAAqB,EAAE,iBAAiB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,aAAa,EAAE,eAAe;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,kBAAkB,EAAE,oBAAoB;IACxC,gBAAgB,EAAE,kBAAkB;IACpC,sBAAsB,EAAE,wBAAwB;IAChD,sBAAsB,EAAE,wBAAwB;IAChD,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,sBAAsB,EAAE,wBAAwB;IAChD,yBAAyB,EAAE,2BAA2B;IACtD,sBAAsB,EAAE,wBAAwB;IAChD,eAAe,EAAE,iBAAiB;IAClC,mBAAmB,EAAE,qBAAqB;IAC1C,uBAAuB,EAAE,yBAAyB;IAClD,eAAe,EAAE,iBAAiB;IAClC,kBAAkB,EAAE,oBAAoB;IACxC,gCAAgC,EAAE,kCAAkC;IACpE,sBAAsB,EAAE,wBAAwB;IAChD,iBAAiB,EAAE,mBAAmB;IACtC,wBAAwB,EAAE,0BAA0B;IACpD,qBAAqB,EAAE,uBAAuB;IAC9C,aAAa,EAAE,eAAe;IAC9B,yBAAyB,EAAE,2BAA2B;IACtD,cAAc,EAAE,gBAAgB;IAChC,qBAAqB,EAAE,uBAAuB;IAC9C,oBAAoB,EAAE,sBAAsB;IAC5C,6BAA6B,EAAE,+BAA+B;IAC9D,gBAAgB,EAAE,kBAAkB;IACpC,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,eAAe;IAC9B,mBAAmB,EAAE,qBAAqB;IAC1C,WAAW,EAAE,aAAa;CAC3B,CAAC,CAAC;AAEH,6EAA6E;AAC7E,MAAM,OAAO,mBAAmB;IACb,GAAG,CAAgC;IACnC,eAAe,CAA8C;IAE9E,YAAmB,UAAsC,EAAE;QACzD,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,OAAuB,EACvB,OAA6B;QAE7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC;gBAChC,UAAU,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS;gBACvC,YAAY,EAAE,OAAO,CAAC,QAAQ,IAAI,SAAS;gBAC3C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;gBACjC,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS;aACnC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAAC,OAAuB;QACxD,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;QACpF,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,OAAuB,EAAE,SAAiB;QAChE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,OAAO,CACZ,IAAI,WAAW,CAAC,mBAAmB,EAAE,0BAA0B,SAAS,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CACvG,CAAC;YACJ,CAAC;YACD,OAAO,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,OAAuB,EAAE,OAAqB;QAC/D,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5G,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC7B,OAAuB,EACvB,OAAsC;QAEtC,IAAI,CAAC;YACH,OAAO,OAAO,CACZ,sCAAsC,CACpC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,kBAAkB,CAAC;gBAC3C,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,UAAU;aAC9B,CAAC,CACH,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,OAAuB,EACvB,OAA0B;QAE1B,IAAI,CAAC;YACH,OAAO,OAAO,CACZ,0BAA0B,CACxB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;gBACnC,SAAS,EAAE,OAAO,CAAC,UAAU;aAC9B,CAAC,CACH,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,OAAuB,EAAE,OAAsB;QACjE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;gBAC9C,SAAS,EAAE,OAAO,CAAC,UAAU;gBAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,SAAS,EAAE,OAAO,CAAC,SAAS;aAC7B,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,OAAuB,EAAE,OAAoB;QAC7D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;gBAC5C,SAAS,EAAE,OAAO,CAAC,UAAU;gBAC7B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,cAAc,EAAE,OAAO,CAAC,eAAe;aACxC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,OAAuB;QAC/C,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,OAAuB;QACzC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,cAAc,GAAyB,IAAI,CAAC;YAChD,IAAI,CAAC;gBACH,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAC;YACpE,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB;oBAAE,MAAM,KAAK,CAAC;YACxF,CAAC;YACD,OAAO,OAAO,CAAC;gBACb,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,YAAY;gBAC5C,eAAe,EAAE,cAAc;gBAC/B,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC;gBAC7C,YAAY,EAAE,EAAE,GAAG,0BAA0B,EAAE;aAChD,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,YAAY,CACjB,OAAuB,EACvB,OAA4B;QAE5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC;YACnF,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC,OAAO,CACpB,OAAO,CAAC;gBACN,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;gBACvC,gBAAgB,EAAE,MAAM,CAAC,eAAe;gBACxC,cAAc,EAAE,MAAM,CAAC,aAAa;gBACpC,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAEM,cAAc,CACnB,OAAuB,EACvB,OAA8B;QAE9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YAClF,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,cAAc,CACzB,OAAuB,EACvB,OAA8B;QAE9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC;gBACtD,SAAS,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;gBAC1C,YAAY,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;gBAC7C,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;aACjD,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,OAAuB,EACvB,OAA4B;QAE5B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC;gBACpD,SAAS,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;gBAC1C,YAAY,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;gBAC7C,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;aACjD,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,aAAa,CACxB,OAAuB,EACvB,OAA6B;QAE7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;gBACrD,SAAS,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;gBAC1C,QAAQ,EAAE,OAAO,CAAC,SAAS,IAAI,SAAS;aACzC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;gBACb,UAAU,EAAE,MAAM,CAAC,SAAS;gBAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;gBAC5C,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC;gBAC9C,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU,CACrB,OAAuB,EACvB,SAAwB;QAExB,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACjG,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,WAAW,CAAC,OAAuB;QACzC,OAAO,IAAI,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3F,CAAC;CACF;AAED,MAAM,UAAU,yBAAyB,CAAC,UAAsC,EAAE;IAChF,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,cAAc,CAAC,MAA6B;IACnD,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,aAAa;QACpC,UAAU,EAAE,MAAM,CAAC,SAAS;QAC5B,UAAU,EAAE,MAAM,CAAC,YAAY;QAC/B,QAAQ,EAAE,MAAM,CAAC,YAAY;QAC7B,MAAM,EAAE,MAAM,CAAC,UAAU;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,SAAS;QAC5B,UAAU,EAAE,MAAM,CAAC,SAAS;QAC5B,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAwD;IACrF,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC;QACtF,UAAU,EAAE,QAAQ,CAAC,YAAY;QACjC,QAAQ,EAAE,QAAQ,CAAC,YAAY;QAC/B,MAAM,EAAE,QAAQ,CAAC,UAAU;QAC3B,UAAU,EAAE,QAAQ,CAAC,SAAS;QAC9B,gBAAgB,EAAE,QAAQ,CAAC,cAAc;QACzC,oBAAoB,EAAE,QAAQ,CAAC,kBAAkB;QACjD,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,OAAO,EAAE,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,sCAAsC,CAC7C,QAAyE;IAEzE,OAAO;QACL,cAAc,EAAE,QAAQ,CAAC,aAAa;QACtC,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,IAAI,EACF,QAAQ,CAAC,IAAI,KAAK,SAAS;YACzB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAyB,CAAC,IAAI,oBAAoB,CAAC;QAC3F,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,eAAe,EAAE,QAAQ,CAAC,cAAc;QACxC,UAAU,EAAE,QAAQ,CAAC,YAAY;QACjC,QAAQ,EAAE,QAAQ,CAAC,YAAY;QAC/B,MAAM,EAAE,QAAQ,CAAC,UAAU;QAC3B,UAAU,EAAE,QAAQ,CAAC,SAAS;QAC9B,gBAAgB,EAAE,QAAQ,CAAC,cAAc;QACzC,oBAAoB,EAAE,QAAQ,CAAC,kBAAkB;QACjD,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC/C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,SAAS,EAAE,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC;SAClC,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,CAAC,WAAW,CACzB,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAC3F;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CACjC,QAAoE;IAEpE,OAAO;QACL,cAAc,EAAE,QAAQ,CAAC,aAAa;QACtC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;QAC7B,UAAU,EAAE,QAAQ,CAAC,YAAY;QACjC,QAAQ,EAAE,QAAQ,CAAC,YAAY;QAC/B,MAAM,EAAE,QAAQ,CAAC,UAAU;QAC3B,IAAI,EAAE,QAAQ,CAAC,MAAM;QACrB,UAAU,EAAE,QAAQ,CAAC,SAAS;QAC9B,KAAK,EAAE;YACL,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;YACpC,MAAM,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YAClC,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;YACtC,SAAS,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;SACzC;QACD,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC/B,YAAY,EAAE,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC;QACtC,SAAS,EAAE,QAAQ,CAAC,QAAQ;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAqD;IACjF,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,aAAa;QACpC,UAAU,EAAE,MAAM,CAAC,SAAS;QAC5B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;KACjC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAmD;IAC7E,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,aAAa;QACpC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,gBAAgB,EAAE,MAAM,CAAC,eAAe;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,MAAoC;IACxE,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC;QACjD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC3C,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACxC,UAAU,EAAE,OAAO,CAAC,SAAS;YAC7B,IAAI,EAAE,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC;YAC3C,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;YAC/B,cAAc,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC;SAC3C,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAgD;IAEhD,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QAC1G,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QACvG,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;KACrG,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,MAA6D;IACxF,OAAO;QACL,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC;QACvC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;QACxC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;QACtC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;QAC5C,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAA4B;IACjD,OAAO;QACL,cAAc,EAAE,KAAK,CAAC,aAAa;QACnC,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,UAAU,EAAE,KAAK,CAAC,YAAY;QAC9B,QAAQ,EAAE,KAAK,CAAC,YAAY;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,UAAU,EAAE,KAAK,CAAC,SAAS;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,YAAwB;IAC7D,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzF,OAAO,IAAI,WAAW,CACpB,gBAAgB,EAChB,uDAAuD,EACvD,EAAE,KAAK,EAAE,EACT,SAAS,EACT,KAAK,CACN,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAe,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACjD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAClD,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CAAC,KAA2B,EAAE,YAAwB;IAC5E,IAAI,KAAK,CAAC,IAAI,KAAK,mBAAmB,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IAC1F,OAAO,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { type DomainResult, type ErrorCode, type JsonObject } from "./errors.js";
2
+ export type { OperationName } from "../operation-authorization.js";
2
3
  export type SessionState = "new" | "active" | "closing" | "closed" | "stale";
3
4
  export type SessionRecord = {
4
5
  schema_version: number;
@@ -20,6 +21,48 @@ export type SessionCreateOptions = {
20
21
  label: string | null;
21
22
  base?: string | null;
22
23
  };
24
+ export type ResourceClaimMode = "read" | "write" | "exclusive-write";
25
+ export type ResourceClaim = {
26
+ schema_version: number;
27
+ claim_id: string;
28
+ session_id: string;
29
+ repository: string;
30
+ worktree: string;
31
+ resource: string;
32
+ mode: ResourceClaimMode;
33
+ created_at: string;
34
+ updated_at: string;
35
+ };
36
+ export type ResourceClaimInput = {
37
+ resource: string;
38
+ mode: ResourceClaimMode;
39
+ repository?: string | null;
40
+ session_id?: string | null;
41
+ worktree?: string | null;
42
+ };
43
+ export type ClaimResourcesOptions = {
44
+ session_id: string | null;
45
+ claims: ResourceClaimInput[];
46
+ repository?: string | null;
47
+ };
48
+ export type UpdateClaimsOptions = ClaimResourcesOptions;
49
+ export type ReleaseClaimsOptions = {
50
+ session_id: string | null;
51
+ claim_ids?: string[] | null;
52
+ };
53
+ export type ClaimResourcesResult = {
54
+ session: SessionRecord;
55
+ claims: ResourceClaim[];
56
+ added: ResourceClaim[];
57
+ released: ResourceClaim[];
58
+ idempotent: boolean;
59
+ };
60
+ export type ReleaseClaimsResult = {
61
+ session_id: string;
62
+ released: ResourceClaim[];
63
+ remaining: ResourceClaim[];
64
+ idempotent: boolean;
65
+ };
23
66
  export type SessionCloseOptions = {
24
67
  session_id: string | null;
25
68
  };
@@ -38,6 +81,83 @@ export type GuardDecision = {
38
81
  state: SessionState | null;
39
82
  details: JsonObject;
40
83
  };
84
+ export type OperationAuthorizationOptions = {
85
+ operation: string;
86
+ resources: string[];
87
+ session_id: string | null;
88
+ };
89
+ export type AuthorizedResource = {
90
+ resource: string;
91
+ claim_ids: string[];
92
+ };
93
+ export type OperationAuthorizationDecision = {
94
+ schema_version: number;
95
+ allowed: boolean;
96
+ code: ErrorCode | "ALLOWED";
97
+ operation: string;
98
+ required_access: ResourceClaimMode | null;
99
+ repository: string;
100
+ worktree: string;
101
+ branch: string | null;
102
+ session_id: string | null;
103
+ owner_session_id: string | null;
104
+ requested_session_id: string | null;
105
+ state: string | null;
106
+ resources: AuthorizedResource[];
107
+ details: JsonObject;
108
+ };
109
+ export type CheckpointOptions = {
110
+ session_id: string | null;
111
+ };
112
+ export type CheckpointPaths = {
113
+ changed: string[];
114
+ staged: string[];
115
+ unstaged: string[];
116
+ untracked: string[];
117
+ };
118
+ export type CheckpointEvidence = {
119
+ schema_version: number;
120
+ source: "git";
121
+ guarantee: "git-observable-only";
122
+ repository: string;
123
+ worktree: string;
124
+ branch: string;
125
+ head: string;
126
+ session_id: string;
127
+ paths: CheckpointPaths;
128
+ in_claim: string[];
129
+ out_of_claim: string[];
130
+ max_paths: number;
131
+ };
132
+ export type CommitOptions = {
133
+ session_id: string | null;
134
+ message: string;
135
+ resources: string[];
136
+ };
137
+ export type CommitResult = {
138
+ schema_version: number;
139
+ commit_sha: string;
140
+ message: string;
141
+ resources: string[];
142
+ };
143
+ export type PushOptions = {
144
+ session_id: string | null;
145
+ resources: string[];
146
+ remote: string | null;
147
+ branch: string | null;
148
+ force: boolean;
149
+ create_upstream: boolean;
150
+ };
151
+ export type PushRelation = "no-upstream" | "up-to-date" | "ahead" | "behind" | "diverged";
152
+ export type PushResult = {
153
+ schema_version: number;
154
+ remote: string;
155
+ branch: string;
156
+ target: string;
157
+ relation: PushRelation;
158
+ force: boolean;
159
+ upstream_created: boolean;
160
+ };
41
161
  export type GarbageCollectOptions = {
42
162
  apply: boolean;
43
163
  };
@@ -68,6 +188,7 @@ export type GarbageCollectBlocked = {
68
188
  code: ErrorCode;
69
189
  message: string;
70
190
  details: JsonObject;
191
+ recovery_hints: string[];
71
192
  };
72
193
  export type GarbageCollectResult = {
73
194
  apply: boolean;
@@ -80,10 +201,20 @@ export interface SessionBackend {
80
201
  resolveCurrentSession(context: SessionContext): Promise<DomainResult<SessionRecord>>;
81
202
  getSession(context: SessionContext, sessionId: string): Promise<DomainResult<SessionRecord>>;
82
203
  guard(context: SessionContext, options: GuardOptions): Promise<DomainResult<GuardDecision>>;
204
+ authorizeOperation?(context: SessionContext, options: OperationAuthorizationOptions): Promise<DomainResult<OperationAuthorizationDecision>>;
205
+ checkpoint?(context: SessionContext, options: CheckpointOptions): Promise<DomainResult<CheckpointEvidence>>;
206
+ commit?(context: SessionContext, options: CommitOptions): Promise<DomainResult<CommitResult>>;
207
+ push?(context: SessionContext, options: PushOptions): Promise<DomainResult<PushResult>>;
83
208
  listSessions(context: SessionContext): Promise<DomainResult<SessionListResult>>;
84
209
  status(context: SessionContext): Promise<DomainResult<StatusResult>>;
85
210
  closeSession(context: SessionContext, options: SessionCloseOptions): Promise<DomainResult<SessionCloseResult>>;
86
211
  garbageCollect(context: SessionContext, options: GarbageCollectOptions): Promise<DomainResult<GarbageCollectResult>>;
212
+ claimResources?(context: SessionContext, options: ClaimResourcesOptions): Promise<DomainResult<ClaimResourcesResult>>;
213
+ updateClaims?(context: SessionContext, options: UpdateClaimsOptions): Promise<DomainResult<ClaimResourcesResult>>;
214
+ releaseClaims?(context: SessionContext, options: ReleaseClaimsOptions): Promise<DomainResult<ReleaseClaimsResult>>;
215
+ listClaims?(context: SessionContext, sessionId: string | null): Promise<DomainResult<{
216
+ claims: ResourceClaim[];
217
+ }>>;
87
218
  }
88
219
  export declare function unavailableCapabilities(): BackendCapabilities;
89
220
  export declare function createUnavailableSessionBackend(): SessionBackend;
@@ -25,6 +25,12 @@ class UnavailableSessionBackend {
25
25
  guard(_context, _options) {
26
26
  return this.unavailable("guard");
27
27
  }
28
+ authorizeOperation(_context, _options) {
29
+ return this.unavailable("authorize");
30
+ }
31
+ checkpoint(_context, _options) {
32
+ return this.unavailable("checkpoint");
33
+ }
28
34
  getSession(_context, _sessionId) {
29
35
  return this.unavailable("session.show");
30
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/domain/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAqB,OAAO,EAAmC,MAAM,aAAa,CAAC;AAuGvG,MAAM,wBAAwB,GAAwB;IACpD,gBAAgB,EAAE,KAAK;IACvB,YAAY,EAAE,KAAK;IACnB,SAAS,EAAE,KAAK;IAChB,kBAAkB,EAAE,KAAK;IACzB,0BAA0B,EAAE,KAAK;CAClC,CAAC;AAEF,MAAM,UAAU,uBAAuB;IACrC,OAAO,EAAE,GAAG,wBAAwB,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,yBAAyB;IACrB,WAAW,CAAI,SAAiB;QACtC,OAAO,OAAO,CAAC,OAAO,CACpB,OAAO,CACL,IAAI,WAAW,CAAC,qBAAqB,EAAE,6DAA6D,EAAE;YACpG,SAAS;YACT,YAAY,EAAE,uBAAuB,EAAE;SACxC,CAAC,CACH,CACF,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,QAAwB,EAAE,QAA8B;QACpE,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,qBAAqB,CAAC,QAAwB;QAC5C,OAAO,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,QAAwB,EAAE,QAAsB;QACpD,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,UAAU,CAAC,QAAwB,EAAE,UAAkB;QACrD,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,QAAwB;QACnC,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,QAAwB;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,YAAY,CAAC,QAAwB,EAAE,QAA6B;QAClE,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAC3C,CAAC;IAED,cAAc,CACZ,QAAwB,EACxB,QAA+B;QAE/B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAM,UAAU,+BAA+B;IAC7C,OAAO,IAAI,yBAAyB,EAAE,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/domain/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAqB,OAAO,EAAmC,MAAM,aAAa,CAAC;AA+PvG,MAAM,wBAAwB,GAAwB;IACpD,gBAAgB,EAAE,KAAK;IACvB,YAAY,EAAE,KAAK;IACnB,SAAS,EAAE,KAAK;IAChB,kBAAkB,EAAE,KAAK;IACzB,0BAA0B,EAAE,KAAK;CAClC,CAAC;AAEF,MAAM,UAAU,uBAAuB;IACrC,OAAO,EAAE,GAAG,wBAAwB,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,yBAAyB;IACrB,WAAW,CAAI,SAAiB;QACtC,OAAO,OAAO,CAAC,OAAO,CACpB,OAAO,CACL,IAAI,WAAW,CAAC,qBAAqB,EAAE,6DAA6D,EAAE;YACpG,SAAS;YACT,YAAY,EAAE,uBAAuB,EAAE;SACxC,CAAC,CACH,CACF,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,QAAwB,EAAE,QAA8B;QACpE,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IAED,qBAAqB,CAAC,QAAwB;QAC5C,OAAO,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,QAAwB,EAAE,QAAsB;QACpD,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,kBAAkB,CAChB,QAAwB,EACxB,QAAuC;QAEvC,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAED,UAAU,CAAC,QAAwB,EAAE,QAA2B;QAC9D,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,QAAwB,EAAE,UAAkB;QACrD,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,QAAwB;QACnC,OAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,QAAwB;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,YAAY,CAAC,QAAwB,EAAE,QAA6B;QAClE,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAC3C,CAAC;IAED,cAAc,CACZ,QAAwB,EACxB,QAA+B;QAE/B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF;AAED,MAAM,UAAU,+BAA+B;IAC7C,OAAO,IAAI,yBAAyB,EAAE,CAAC;AACzC,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export type RegistryErrorCode = "GIT_COMMAND_FAILED" | "NOT_A_GIT_REPOSITORY" | "REPOSITORY_IDENTITY_AMBIGUOUS" | "WORKTREE_IDENTITY_AMBIGUOUS" | "INVALID_SESSION_ID" | "INVALID_SESSION_RECORD" | "INVALID_BRANCH_ID" | "INVALID_WORKTREE_PATH" | "INVALID_BASE_REF" | "REGISTRY_CORRUPT" | "UNSUPPORTED_SCHEMA_VERSION" | "REGISTRY_REPOSITORY_MISMATCH" | "DUPLICATE_SESSION_ID" | "DUPLICATE_WORKTREE_OWNERSHIP" | "DUPLICATE_BRANCH_OWNERSHIP" | "WORKTREE_ALREADY_EXISTS" | "BRANCH_ALREADY_EXISTS" | "PROTECTED_WORKTREE" | "PROTECTED_BRANCH" | "SESSION_ID_COLLISION" | "SESSION_NOT_FOUND" | "DIRTY_WORKTREE" | "OWNERSHIP_MISMATCH" | "RECOVERABLE_COMMITS" | "REGISTRY_LOCK_TIMEOUT" | "REGISTRY_IO_FAILURE";
2
- export type RegistryErrorDetails = Readonly<Record<string, boolean | number | string>>;
1
+ export type RegistryErrorCode = "GIT_COMMAND_FAILED" | "GIT_SPAWN_FAILED" | "GIT_TIMEOUT" | "GIT_OUTPUT_LIMIT" | "NOT_A_GIT_REPOSITORY" | "REPOSITORY_IDENTITY_AMBIGUOUS" | "WORKTREE_IDENTITY_AMBIGUOUS" | "DETACHED_HEAD" | "MISSING_WORKTREE" | "REPOSITORY_MISMATCH" | "WORKTREE_MISMATCH" | "BRANCH_MISMATCH" | "STALE_REGISTRY" | "GIT_STATE_AMBIGUOUS" | "PHYSICAL_OBSERVATION_UNAVAILABLE" | "INVALID_SESSION_ID" | "INVALID_SESSION_RECORD" | "INVALID_BRANCH_ID" | "INVALID_WORKTREE_PATH" | "INVALID_BASE_REF" | "REGISTRY_CORRUPT" | "UNSUPPORTED_SCHEMA_VERSION" | "REGISTRY_REPOSITORY_MISMATCH" | "DUPLICATE_SESSION_ID" | "DUPLICATE_WORKTREE_OWNERSHIP" | "DUPLICATE_BRANCH_OWNERSHIP" | "WORKTREE_ALREADY_EXISTS" | "BRANCH_ALREADY_EXISTS" | "PROTECTED_WORKTREE" | "PROTECTED_BRANCH" | "SESSION_ID_COLLISION" | "SESSION_NOT_FOUND" | "DIRTY_WORKTREE" | "NESTED_REPOSITORY" | "OWNERSHIP_MISMATCH" | "RECOVERABLE_COMMITS" | "RECOVERABLE_STASHES" | "RECONCILIATION_DRIFT" | "REGISTRY_LOCK_TIMEOUT" | "REGISTRY_IO_FAILURE" | "INVALID_CLAIM" | "INVALID_OPERATION" | "OPERATION_REJECTED" | "INVALID_RESOURCE" | "MISSING_RESOURCE_CLAIM" | "INVALID_CLAIM_RESOURCE" | "CLAIM_PATH_TRAVERSAL" | "CLAIM_SYMLINK_ESCAPE" | "CLAIM_AMBIGUOUS_PATH" | "UNSUPPORTED_CLAIM_GLOB" | "CLAIM_REPOSITORY_MISMATCH" | "CLAIM_SESSION_MISMATCH" | "DUPLICATE_CLAIM" | "CONTRADICTORY_CLAIM" | "RESOURCE_CLAIM_CONFLICT" | "CLAIM_NOT_FOUND" | "SESSION_NOT_ACTIVE" | "UNSUPPORTED_CLAIM_SCHEMA_VERSION" | "INVALID_COMMIT_MESSAGE" | "COMMIT_EMPTY_DIFF" | "UNEXPECTED_CHANGED_PATHS" | "COMMIT_STAGING_FAILED" | "COMMIT_FAILED" | "COMMIT_RESULT_UNAVAILABLE" | "INVALID_REMOTE" | "INVALID_REMOTE_BRANCH" | "PUSH_TARGET_MISMATCH" | "PUSH_REMOTE_INSPECTION_FAILED" | "PUSH_NO_UPSTREAM" | "PUSH_BEHIND" | "PUSH_DIVERGED" | "PUSH_DIRTY_WORKTREE" | "PUSH_FAILED";
2
+ export type RegistryErrorDetails = Readonly<Record<string, boolean | number | string | string[]>>;
3
3
  export declare class SessionRegistryError extends Error {
4
4
  readonly code: RegistryErrorCode;
5
5
  readonly details: RegistryErrorDetails;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AA8BA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,IAAI,CAAoB;IACxB,OAAO,CAAuB;IAEvC,YAAY,IAAuB,EAAE,OAAe,EAAE,UAAgC,EAAE,EAAE,KAAe;QACvG,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,KAAK,YAAY,oBAAoB,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AA6EA,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IACpC,IAAI,CAAoB;IACxB,OAAO,CAAuB;IAEvC,YAAY,IAAuB,EAAE,OAAe,EAAE,UAAgC,EAAE,EAAE,KAAe;QACvG,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,KAAK,YAAY,oBAAoB,CAAC;AAC/C,CAAC"}
package/dist/git.d.ts CHANGED
@@ -1,5 +1,16 @@
1
+ import { type GitCheckpointPaths } from "./operation-authorization.js";
2
+ export declare const GIT_COMMAND_TIMEOUT_MS = 10000;
3
+ export declare const GIT_COMMAND_MAX_OUTPUT_BYTES: number;
1
4
  export interface GitCommandRunner {
2
5
  run(args: readonly string[], cwd: string): string;
6
+ /** Preserve leading/trailing whitespace for NUL-delimited Git records. */
7
+ readonly runRaw?: (args: readonly string[], cwd: string) => string;
8
+ }
9
+ export interface GitCommandRunnerOptions {
10
+ readonly executable?: string;
11
+ readonly timeoutMs?: number;
12
+ readonly maxOutputBytes?: number;
13
+ readonly env?: NodeJS.ProcessEnv;
3
14
  }
4
15
  export interface RepositoryContext {
5
16
  readonly repositoryId: string;
@@ -11,10 +22,12 @@ export interface WorktreeIdentity {
11
22
  readonly worktreePath: string;
12
23
  readonly branchId: string;
13
24
  readonly branchName: string;
25
+ readonly headId: string;
14
26
  }
15
27
  export interface GitWorktreeInfo {
16
28
  readonly worktreePath: string;
17
29
  readonly branchName: string | null;
30
+ readonly prunable: boolean;
18
31
  }
19
32
  export interface ResolveRepositoryOptions {
20
33
  readonly cwd?: string;
@@ -22,12 +35,39 @@ export interface ResolveRepositoryOptions {
22
35
  }
23
36
  export interface ResolveWorktreeOptions extends ResolveRepositoryOptions {
24
37
  readonly repository?: RepositoryContext;
38
+ /** Legacy name retained as an expected value; Git remains authoritative. */
25
39
  readonly branchName?: string;
40
+ readonly worktreePath?: string;
41
+ readonly expectedWorktreePath?: string;
42
+ }
43
+ export interface PhysicalExecutionContext {
44
+ readonly repositoryId: string;
45
+ readonly commonGitDirectory: string;
46
+ readonly worktreeId: string;
47
+ readonly worktreePath: string;
48
+ readonly branchId: string;
49
+ readonly branchName: string;
50
+ readonly headId: string;
51
+ readonly worktree: GitWorktreeInfo;
52
+ readonly worktrees: readonly GitWorktreeInfo[];
26
53
  }
54
+ export declare function createGitCommandRunner(options?: GitCommandRunnerOptions): GitCommandRunner;
27
55
  export declare const defaultGit: GitCommandRunner;
28
56
  export declare function resolveRepositoryContext(options?: ResolveRepositoryOptions): RepositoryContext;
29
57
  export declare function resolveWorktreeIdentity(options?: ResolveWorktreeOptions): WorktreeIdentity;
58
+ /**
59
+ * Verify the physical repository/worktree facts used by governed operations.
60
+ * Every identity in the returned value is observed from Git or canonicalized
61
+ * filesystem state; caller values are expectations only.
62
+ */
63
+ export declare function verifyPhysicalExecutionContext(options?: ResolveWorktreeOptions): PhysicalExecutionContext;
30
64
  /** Read the repository's local worktree inventory without consulting a remote. */
31
65
  export declare function listGitWorktrees(git: GitCommandRunner, cwd: string): readonly GitWorktreeInfo[];
66
+ /**
67
+ * Capture only the paths Git currently exposes as changed, staged, unstaged,
68
+ * or untracked. This is evidence, not an OS-level write monitor.
69
+ */
70
+ export declare function captureGitCheckpoint(git: GitCommandRunner, cwd: string): GitCheckpointPaths;
32
71
  export declare function normalizeBranchId(branchName: string): string;
33
72
  export declare function readCurrentBranch(git: GitCommandRunner, cwd: string): string;
73
+ export declare function readCurrentHead(git: GitCommandRunner, cwd: string): string;