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.
@@ -0,0 +1,172 @@
1
+ /** Stable discovery identifier for the standalone local execution contract. */
2
+ export const MACHINE_CONTRACT_ID = "nawabari.standalone-execution.v1";
3
+ export const MACHINE_CONTRACT_SCHEMA_VERSION = 1;
4
+ const MACHINE_CONTRACT_CAPABILITIES = Object.freeze([
5
+ {
6
+ id: "session-lifecycle",
7
+ commands: ["session create", "session id", "session show", "session list", "status", "session close"],
8
+ result_schema: "session.v1",
9
+ identities: ["session_id", "repository", "worktree", "branch", "state"],
10
+ failure_codes: [
11
+ "NOT_GIT_REPOSITORY",
12
+ "PROTECTED_WORKTREE",
13
+ "PROTECTED_BRANCH",
14
+ "WORKTREE_ALREADY_EXISTS",
15
+ "BRANCH_ALREADY_EXISTS",
16
+ "WORKTREE_OWNED_BY_OTHER_SESSION",
17
+ "BRANCH_OWNED_BY_OTHER_SESSION",
18
+ "SESSION_NOT_FOUND",
19
+ "NO_CURRENT_SESSION",
20
+ "DIRTY_WORKTREE",
21
+ "RECOVERABLE_COMMITS",
22
+ "RECOVERABLE_STASHES",
23
+ "MISSING_WORKTREE",
24
+ "REGISTRY_CORRUPT",
25
+ "LOCK_CONTENTION",
26
+ "GIT_COMMAND_FAILED",
27
+ ],
28
+ },
29
+ {
30
+ id: "resource-claims",
31
+ commands: ["session claim", "session update", "session claims", "session release"],
32
+ result_schema: "claim.v1",
33
+ identities: ["claim_id", "session_id", "repository", "worktree", "resource", "mode"],
34
+ failure_codes: [
35
+ "INVALID_CLAIM",
36
+ "INVALID_RESOURCE",
37
+ "INVALID_CLAIM_RESOURCE",
38
+ "CLAIM_PATH_TRAVERSAL",
39
+ "CLAIM_SYMLINK_ESCAPE",
40
+ "CLAIM_AMBIGUOUS_PATH",
41
+ "UNSUPPORTED_CLAIM_GLOB",
42
+ "CLAIM_REPOSITORY_MISMATCH",
43
+ "CLAIM_SESSION_MISMATCH",
44
+ "DUPLICATE_CLAIM",
45
+ "CONTRADICTORY_CLAIM",
46
+ "RESOURCE_CLAIM_CONFLICT",
47
+ "CLAIM_NOT_FOUND",
48
+ "SESSION_NOT_ACTIVE",
49
+ "LOCK_CONTENTION",
50
+ ],
51
+ },
52
+ {
53
+ id: "authorization-and-evidence",
54
+ commands: ["guard", "authorize", "checkpoint"],
55
+ result_schema: "decision.v1 / evidence.v1",
56
+ identities: ["operation", "allowed", "code", "claim_ids", "head", "in_claim", "out_of_claim"],
57
+ failure_codes: [
58
+ "INVALID_OPERATION",
59
+ "INVALID_RESOURCE",
60
+ "MISSING_RESOURCE_CLAIM",
61
+ "RESOURCE_CLAIM_CONFLICT",
62
+ "OWNERSHIP_MISMATCH",
63
+ "WORKTREE_MISMATCH",
64
+ "BRANCH_MISMATCH",
65
+ "DETACHED_HEAD",
66
+ "STALE_REGISTRY",
67
+ "GIT_STATE_AMBIGUOUS",
68
+ "PHYSICAL_OBSERVATION_UNAVAILABLE",
69
+ ],
70
+ },
71
+ {
72
+ id: "governed-git-mutation",
73
+ commands: ["commit", "push"],
74
+ result_schema: "commit.v1 / push.v1",
75
+ identities: ["commit_sha", "remote", "branch", "target", "relation"],
76
+ failure_codes: [
77
+ "INVALID_COMMIT_MESSAGE",
78
+ "COMMIT_EMPTY_DIFF",
79
+ "UNEXPECTED_CHANGED_PATHS",
80
+ "COMMIT_STAGING_FAILED",
81
+ "COMMIT_FAILED",
82
+ "COMMIT_RESULT_UNAVAILABLE",
83
+ "INVALID_REMOTE",
84
+ "INVALID_REMOTE_BRANCH",
85
+ "PUSH_TARGET_MISMATCH",
86
+ "PUSH_REMOTE_INSPECTION_FAILED",
87
+ "PUSH_NO_UPSTREAM",
88
+ "PUSH_BEHIND",
89
+ "PUSH_DIVERGED",
90
+ "PUSH_DIRTY_WORKTREE",
91
+ "PUSH_FAILED",
92
+ "GIT_SPAWN_FAILED",
93
+ "GIT_TIMEOUT",
94
+ "GIT_OUTPUT_LIMIT",
95
+ ],
96
+ },
97
+ {
98
+ id: "reconciliation-and-cleanup",
99
+ commands: ["doctor", "gc"],
100
+ result_schema: "reconciliation.v1 / cleanup.v1",
101
+ identities: ["clean", "issues", "candidates", "cleaned", "blocked", "recovery_hints"],
102
+ failure_codes: [
103
+ "RECONCILIATION_DRIFT",
104
+ "MISSING_WORKTREE",
105
+ "OWNERSHIP_MISMATCH",
106
+ "DIRTY_WORKTREE",
107
+ "RECOVERABLE_COMMITS",
108
+ "RECOVERABLE_STASHES",
109
+ "NESTED_REPOSITORY",
110
+ "STALE_SESSION",
111
+ "REGISTRY_CORRUPT",
112
+ "LOCK_CONTENTION",
113
+ ],
114
+ },
115
+ ]);
116
+ /**
117
+ * Return a JSON-safe description of the installed machine contract.
118
+ * Discovery intentionally has no repository or network precondition.
119
+ */
120
+ export function machineContract(packageVersion) {
121
+ return {
122
+ schema_version: MACHINE_CONTRACT_SCHEMA_VERSION,
123
+ contract_id: MACHINE_CONTRACT_ID,
124
+ capability_id: MACHINE_CONTRACT_ID,
125
+ package: "nawabari",
126
+ package_version: packageVersion,
127
+ capabilities: MACHINE_CONTRACT_CAPABILITIES.map((capability) => ({
128
+ id: capability.id,
129
+ commands: [...capability.commands],
130
+ result_schema: capability.result_schema,
131
+ identities: [...capability.identities],
132
+ failure_codes: [...capability.failure_codes],
133
+ })),
134
+ json: {
135
+ schema_version: 1,
136
+ success: {
137
+ required: ["ok", "command"],
138
+ ok: true,
139
+ exit_code: 0,
140
+ },
141
+ failure: {
142
+ required: ["ok", "command", "code", "message"],
143
+ ok: false,
144
+ exit_codes: {
145
+ usage: 2,
146
+ rejected: 3,
147
+ unavailable: 4,
148
+ doctor: 5,
149
+ internal: 70,
150
+ },
151
+ stderr: "empty",
152
+ },
153
+ one_document: true,
154
+ human_output_is_not_contract: true,
155
+ },
156
+ bounded_local_execution: {
157
+ git_timeout_ms: 10_000,
158
+ git_max_output_bytes: 65_536,
159
+ checkpoint_max_paths: 4_096,
160
+ },
161
+ dependencies: {
162
+ local_git: true,
163
+ network: false,
164
+ github: false,
165
+ gh: false,
166
+ mottainai: false,
167
+ llm: false,
168
+ agent_runtime: false,
169
+ },
170
+ };
171
+ }
172
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { type DomainResult, type ErrorCode, type JsonObject } from "./errors.js";
2
2
  export type DoctorCheckStatus = "ok" | "warning" | "error" | "not_configured" | "not_applicable";
3
3
  export type DoctorCheck = {
4
- name: "git" | "repository" | "registry" | "runtime";
4
+ name: "git" | "repository" | "registry" | "reconciliation" | "runtime";
5
5
  status: DoctorCheckStatus;
6
6
  code: ErrorCode | null;
7
7
  message: string;
@@ -1,51 +1,10 @@
1
- import { spawn } from "node:child_process";
2
1
  import { readFile } from "node:fs/promises";
3
2
  import path from "node:path";
4
3
  import process from "node:process";
5
- import { SessionRegistry } from "../session-registry.js";
4
+ import { defaultGit, resolveRepositoryContext } from "../git.js";
6
5
  import { isSessionRegistryError } from "../errors.js";
6
+ import { SessionRegistry } from "../session-registry.js";
7
7
  import { success } from "./errors.js";
8
- function runGit(args, cwd) {
9
- return new Promise((resolve) => {
10
- const child = spawn("git", args, {
11
- cwd,
12
- stdio: ["ignore", "pipe", "pipe"],
13
- env: { ...process.env, GIT_TERMINAL_PROMPT: "0", GIT_OPTIONAL_LOCKS: "0" },
14
- });
15
- let stdout = "";
16
- let stderr = "";
17
- let settled = false;
18
- const timer = setTimeout(() => {
19
- if (settled)
20
- return;
21
- settled = true;
22
- child.kill("SIGKILL");
23
- resolve({ exit_code: null, stdout, stderr, error: "git command timed out" });
24
- }, 10_000);
25
- child.stdout.setEncoding("utf8");
26
- child.stderr.setEncoding("utf8");
27
- child.stdout.on("data", (chunk) => {
28
- stdout += chunk;
29
- });
30
- child.stderr.on("data", (chunk) => {
31
- stderr += chunk;
32
- });
33
- child.on("error", (error) => {
34
- if (settled)
35
- return;
36
- settled = true;
37
- clearTimeout(timer);
38
- resolve({ exit_code: null, stdout, stderr, error: error.message });
39
- });
40
- child.on("close", (exitCode) => {
41
- if (settled)
42
- return;
43
- settled = true;
44
- clearTimeout(timer);
45
- resolve({ exit_code: exitCode, stdout, stderr, error: null });
46
- });
47
- });
48
- }
49
8
  function supportsRuntime(version) {
50
9
  const [majorText, minorText] = version.split(".");
51
10
  const major = Number(majorText);
@@ -55,22 +14,14 @@ function supportsRuntime(version) {
55
14
  function check(name, status, code, message, details = {}) {
56
15
  return { name, status, code, message, details };
57
16
  }
58
- function parseRepository(stdout, cwd) {
59
- const lines = stdout
60
- .trim()
61
- .split(/\r?\n/u)
62
- .map((line) => line.trim());
63
- if (lines.length < 2 || lines[0] === "" || lines[1] === "")
64
- return null;
65
- const topLevel = path.resolve(cwd, lines[0]);
66
- const commonDir = path.resolve(cwd, lines[1]);
17
+ function repositoryInfo(context) {
67
18
  return {
68
- top_level: topLevel,
69
- common_dir: commonDir,
70
- registry_path: path.join(commonDir, "nawabari", "session-registry.json"),
19
+ top_level: context.worktreePath,
20
+ common_dir: context.commonGitDirectory,
21
+ registry_path: path.join(context.commonGitDirectory, "nawabari", "session-registry.json"),
71
22
  };
72
23
  }
73
- async function inspectRegistry(repository) {
24
+ async function inspectRegistry(repository, context) {
74
25
  try {
75
26
  const contents = await readFile(repository.registry_path, "utf8");
76
27
  let parsed;
@@ -88,8 +39,7 @@ async function inspectRegistry(repository) {
88
39
  });
89
40
  }
90
41
  try {
91
- const registry = new SessionRegistry({ cwd: repository.top_level });
92
- const sessions = registry.list();
42
+ const sessions = new SessionRegistry({ repository: context, git: defaultGit }).list();
93
43
  return check("registry", "ok", null, "The Nawabari registry is readable and valid.", {
94
44
  path: repository.registry_path,
95
45
  bytes: contents.length,
@@ -97,13 +47,10 @@ async function inspectRegistry(repository) {
97
47
  });
98
48
  }
99
49
  catch (error) {
100
- const code = isSessionRegistryError(error) && error.code === "UNSUPPORTED_SCHEMA_VERSION"
101
- ? "REGISTRY_CORRUPT"
102
- : isSessionRegistryError(error) && error.code === "REGISTRY_REPOSITORY_MISMATCH"
103
- ? "INVALID_REGISTRY"
104
- : "REGISTRY_UNREADABLE";
50
+ const code = doctorErrorCode(error, "REGISTRY_UNREADABLE");
105
51
  return check("registry", "error", code, "The Nawabari registry failed authoritative validation.", {
106
52
  path: repository.registry_path,
53
+ ...(isSessionRegistryError(error) ? { reason: error.code } : {}),
107
54
  });
108
55
  }
109
56
  }
@@ -118,8 +65,30 @@ async function inspectRegistry(repository) {
118
65
  });
119
66
  }
120
67
  }
121
- function isFileNotFound(error) {
122
- return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
68
+ async function inspectReconciliation(context) {
69
+ try {
70
+ const result = new SessionRegistry({ repository: context, git: defaultGit }).reconcile();
71
+ const issues = result.issues.map((issue) => ({
72
+ code: issue.code,
73
+ message: issue.message,
74
+ session_id: issue.sessionId,
75
+ worktree: issue.worktreePath,
76
+ branch: issue.branchName,
77
+ details: { ...issue.details },
78
+ recovery_hints: [...issue.recoveryHints],
79
+ }));
80
+ return check("reconciliation", result.clean ? "ok" : "warning", result.clean ? null : "RECONCILIATION_DRIFT", result.clean
81
+ ? "Registry session ownership matches the observed Git worktree state."
82
+ : "Registry/Git ownership drift is present; no destructive repair was performed.", {
83
+ clean: result.clean,
84
+ sessions: result.sessions.length,
85
+ worktrees: result.worktrees.length,
86
+ issues,
87
+ });
88
+ }
89
+ catch (error) {
90
+ return check("reconciliation", "error", doctorErrorCode(error, "REGISTRY_UNREADABLE"), "Authoritative registry/Git reconciliation could not be completed.", { ...(isSessionRegistryError(error) ? { reason: error.code, ...error.details } : {}) });
91
+ }
123
92
  }
124
93
  export async function runDoctor(cwd = process.cwd()) {
125
94
  const checks = [];
@@ -131,37 +100,77 @@ export async function runDoctor(cwd = process.cwd()) {
131
100
  : check("runtime", "error", "UNSUPPORTED_RUNTIME", "The Node.js runtime is below the supported version.", {
132
101
  node: process.versions.node,
133
102
  }));
134
- const gitVersion = await runGit(["--version"], cwd);
135
- if (gitVersion.exit_code !== 0) {
136
- checks.push(check("git", "error", "GIT_UNAVAILABLE", "Git is not available to the local CLI.", {
103
+ try {
104
+ const version = defaultGit.run(["--version"], cwd);
105
+ checks.push(check("git", "ok", null, "Git is available.", { version }));
106
+ }
107
+ catch (error) {
108
+ checks.push(check("git", "error", doctorErrorCode(error, "GIT_UNAVAILABLE"), "Git is not available to the local CLI.", {
137
109
  command: "git --version",
138
- reason: gitVersion.error ?? gitVersion.stderr.trim(),
110
+ ...(isSessionRegistryError(error) ? { reason: error.code } : {}),
139
111
  }));
140
112
  checks.push(check("repository", "not_applicable", null, "Repository resolution was skipped because Git is unavailable."));
141
113
  checks.push(check("registry", "not_applicable", null, "Registry inspection was skipped because Git is unavailable."));
114
+ return success({ ok: false, checks, repository: null });
142
115
  }
143
- else {
144
- checks.push(check("git", "ok", null, "Git is available.", { version: gitVersion.stdout.trim() }));
145
- const repositoryResult = await runGit(["rev-parse", "--show-toplevel", "--git-common-dir"], cwd);
146
- const repository = repositoryResult.exit_code === 0 ? parseRepository(repositoryResult.stdout, cwd) : null;
147
- if (repository === null) {
148
- checks.push(check("repository", "error", "NOT_GIT_REPOSITORY", "The current directory is not a Git repository.", {
149
- command: "git rev-parse --show-toplevel --git-common-dir",
150
- reason: repositoryResult.stderr.trim(),
151
- }));
152
- checks.push(check("registry", "not_applicable", null, "Registry inspection was skipped outside a Git repository."));
153
- }
154
- else {
155
- checks.push(check("repository", "ok", null, "Repository and common Git directory resolved.", {
156
- top_level: repository.top_level,
157
- common_dir: repository.common_dir,
158
- }));
159
- checks.push(await inspectRegistry(repository));
160
- }
161
- const hasError = checks.some((item) => item.status === "error");
162
- return success({ ok: !hasError, checks, repository });
116
+ let repository = null;
117
+ try {
118
+ const context = resolveRepositoryContext({ cwd, git: defaultGit });
119
+ repository = repositoryInfo(context);
120
+ checks.push(check("repository", "ok", null, "Repository and common Git directory resolved.", {
121
+ top_level: repository.top_level,
122
+ common_dir: repository.common_dir,
123
+ }));
124
+ const registryCheck = await inspectRegistry(repository, context);
125
+ checks.push(registryCheck);
126
+ checks.push(registryCheck.status === "ok"
127
+ ? await inspectReconciliation(context)
128
+ : check("reconciliation", "not_applicable", null, "Reconciliation was skipped because the registry is invalid."));
129
+ }
130
+ catch (error) {
131
+ checks.push(check("repository", "error", doctorErrorCode(error, "NOT_GIT_REPOSITORY"), "The current directory is not a valid Git repository context.", {
132
+ ...(isSessionRegistryError(error) ? { reason: error.code, ...error.details } : {}),
133
+ }));
134
+ checks.push(check("registry", "not_applicable", null, "Registry inspection was skipped outside a Git repository."));
163
135
  }
164
136
  const hasError = checks.some((item) => item.status === "error");
165
- return success({ ok: !hasError, checks, repository: null });
137
+ return success({ ok: !hasError, checks, repository });
138
+ }
139
+ function doctorErrorCode(error, fallback) {
140
+ if (!isSessionRegistryError(error))
141
+ return fallback;
142
+ const code = error.code;
143
+ if (code === "GIT_SPAWN_FAILED")
144
+ return "GIT_SPAWN_FAILED";
145
+ if (code === "GIT_TIMEOUT")
146
+ return "GIT_TIMEOUT";
147
+ if (code === "GIT_OUTPUT_LIMIT")
148
+ return "GIT_OUTPUT_LIMIT";
149
+ if (code === "GIT_COMMAND_FAILED")
150
+ return "GIT_COMMAND_FAILED";
151
+ if (code === "NOT_A_GIT_REPOSITORY")
152
+ return "NOT_GIT_REPOSITORY";
153
+ if (code === "MISSING_WORKTREE")
154
+ return "MISSING_WORKTREE";
155
+ if (code === "PHYSICAL_OBSERVATION_UNAVAILABLE")
156
+ return "PHYSICAL_OBSERVATION_UNAVAILABLE";
157
+ if (code === "REPOSITORY_IDENTITY_AMBIGUOUS")
158
+ return "GIT_STATE_AMBIGUOUS";
159
+ if (code === "REGISTRY_CORRUPT" || code === "UNSUPPORTED_SCHEMA_VERSION")
160
+ return "REGISTRY_CORRUPT";
161
+ if (code === "REGISTRY_REPOSITORY_MISMATCH")
162
+ return "INVALID_REGISTRY";
163
+ if (code === "INVALID_BRANCH_ID")
164
+ return "INVALID_BRANCH";
165
+ if (code === "INVALID_WORKTREE_PATH")
166
+ return "INVALID_WORKTREE";
167
+ if (code === "WORKTREE_IDENTITY_AMBIGUOUS")
168
+ return "GIT_STATE_AMBIGUOUS";
169
+ if (code === "RECONCILIATION_DRIFT")
170
+ return "RECONCILIATION_DRIFT";
171
+ return fallback;
172
+ }
173
+ function isFileNotFound(error) {
174
+ return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
166
175
  }
167
176
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/domain/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/domain/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,wBAAwB,EAA0B,MAAM,WAAW,CAAC;AACzF,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,OAAO,EAAsD,MAAM,aAAa,CAAC;AAwB1F,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,IAAI,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3G,CAAC;AAED,SAAS,KAAK,CACZ,IAAyB,EACzB,MAAyB,EACzB,IAAsB,EACtB,OAAe,EACf,UAAsB,EAAE;IAExB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,cAAc,CAAC,OAA0B;IAChD,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,YAAY;QAC/B,UAAU,EAAE,OAAO,CAAC,kBAAkB;QACtC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,EAAE,uBAAuB,CAAC;KAC1F,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,UAA0B,EAAE,OAA0B;IACnF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAY,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE,0CAA0C,EAAE;gBAChG,IAAI,EAAE,UAAU,CAAC,aAAa;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,OAAO,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,kBAAkB,EAAE,mDAAmD,EAAE;gBACzG,IAAI,EAAE,UAAU,CAAC,aAAa;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACtF,OAAO,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,8CAA8C,EAAE;gBACnF,IAAI,EAAE,UAAU,CAAC,aAAa;gBAC9B,KAAK,EAAE,QAAQ,CAAC,MAAM;gBACtB,QAAQ,EAAE,QAAQ,CAAC,MAAM;aAC1B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;YAC3D,OAAO,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,wDAAwD,EAAE;gBAChG,IAAI,EAAE,UAAU,CAAC,aAAa;gBAC9B,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,mDAAmD,EAAE;gBACpG,IAAI,EAAE,UAAU,CAAC,aAAa;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,qBAAqB,EAAE,uCAAuC,EAAE;YAChG,IAAI,EAAE,UAAU,CAAC,aAAa;SAC/B,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAA0B;IAC7D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;QACzF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC3C,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,UAAU,EAAE,KAAK,CAAC,SAAS;YAC3B,QAAQ,EAAE,KAAK,CAAC,YAAY;YAC5B,MAAM,EAAE,KAAK,CAAC,UAAU;YACxB,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;YAC7B,cAAc,EAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC;SACzC,CAAC,CAAC,CAAC;QACJ,OAAO,KAAK,CACV,gBAAgB,EAChB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAC/B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,EAC5C,MAAM,CAAC,KAAK;YACV,CAAC,CAAC,qEAAqE;YACvE,CAAC,CAAC,+EAA+E,EACnF;YACE,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;YAChC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM;YAClC,MAAM;SACP,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,KAAK,CACV,gBAAgB,EAChB,OAAO,EACP,eAAe,CAAC,KAAK,EAAE,qBAAqB,CAAC,EAC7C,mEAAmE,EACnE,EAAE,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CACvF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACjD,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,CAAC,IAAI,CACT,SAAS;QACP,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,2DAA2D,EAAE;YACxF,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;SAC5B,CAAC;QACJ,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,qBAAqB,EAAE,qDAAqD,EAAE;YACtG,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;SAC5B,CAAC,CACP,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,wCAAwC,EAAE;YACzG,OAAO,EAAE,eAAe;YACxB,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE,CAAC,CACH,CAAC;QACF,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,YAAY,EAAE,gBAAgB,EAAE,IAAI,EAAE,+DAA+D,CAAC,CAC7G,CAAC;QACF,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,6DAA6D,CAAC,CACzG,CAAC;QACF,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,UAAU,GAA0B,IAAI,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,wBAAwB,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QACnE,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,+CAA+C,EAAE;YAC/E,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,UAAU,EAAE,UAAU,CAAC,UAAU;SAClC,CAAC,CACH,CAAC;QACF,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3B,MAAM,CAAC,IAAI,CACT,aAAa,CAAC,MAAM,KAAK,IAAI;YAC3B,CAAC,CAAC,MAAM,qBAAqB,CAAC,OAAO,CAAC;YACtC,CAAC,CAAC,KAAK,CACH,gBAAgB,EAChB,gBAAgB,EAChB,IAAI,EACJ,6DAA6D,CAC9D,CACN,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CACT,KAAK,CACH,YAAY,EACZ,OAAO,EACP,eAAe,CAAC,KAAK,EAAE,oBAAoB,CAAC,EAC5C,8DAA8D,EAC9D;YACE,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnF,CACF,CACF,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,2DAA2D,CAAC,CAAC,CAAC;IACtH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;IAChE,OAAO,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,eAAe,CAAC,KAAc,EAAE,QAAmB;IAC1D,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,IAAI,KAAK,kBAAkB;QAAE,OAAO,kBAAkB,CAAC;IAC3D,IAAI,IAAI,KAAK,aAAa;QAAE,OAAO,aAAa,CAAC;IACjD,IAAI,IAAI,KAAK,kBAAkB;QAAE,OAAO,kBAAkB,CAAC;IAC3D,IAAI,IAAI,KAAK,oBAAoB;QAAE,OAAO,oBAAoB,CAAC;IAC/D,IAAI,IAAI,KAAK,sBAAsB;QAAE,OAAO,oBAAoB,CAAC;IACjE,IAAI,IAAI,KAAK,kBAAkB;QAAE,OAAO,kBAAkB,CAAC;IAC3D,IAAI,IAAI,KAAK,kCAAkC;QAAE,OAAO,kCAAkC,CAAC;IAC3F,IAAI,IAAI,KAAK,+BAA+B;QAAE,OAAO,qBAAqB,CAAC;IAC3E,IAAI,IAAI,KAAK,kBAAkB,IAAI,IAAI,KAAK,4BAA4B;QAAE,OAAO,kBAAkB,CAAC;IACpG,IAAI,IAAI,KAAK,8BAA8B;QAAE,OAAO,kBAAkB,CAAC;IACvE,IAAI,IAAI,KAAK,mBAAmB;QAAE,OAAO,gBAAgB,CAAC;IAC1D,IAAI,IAAI,KAAK,uBAAuB;QAAE,OAAO,kBAAkB,CAAC;IAChE,IAAI,IAAI,KAAK,6BAA6B;QAAE,OAAO,qBAAqB,CAAC;IACzE,IAAI,IAAI,KAAK,sBAAsB;QAAE,OAAO,sBAAsB,CAAC;IACnE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AACnG,CAAC"}
@@ -3,7 +3,7 @@ export type JsonValue = JsonPrimitive | JsonObject | JsonValue[];
3
3
  export interface JsonObject {
4
4
  [key: string]: JsonValue;
5
5
  }
6
- export type ErrorCode = "BACKEND_UNAVAILABLE" | "BRANCH_OWNED_BY_OTHER_SESSION" | "BRANCH_ALREADY_EXISTS" | "DOCTOR_FAILED" | "DIRTY_WORKTREE" | "GIT_OPERATION_FAILED" | "GIT_UNAVAILABLE" | "INVALID_ARGUMENT" | "INVALID_BRANCH" | "INVALID_BASE_REF" | "INVALID_REGISTRY" | "INVALID_SESSION_ID" | "INVALID_WORKTREE" | "LOCK_CONTENTION" | "MISSING_ARGUMENT" | "NO_COMMAND" | "NO_CURRENT_SESSION" | "NOT_GIT_REPOSITORY" | "OPERATION_REJECTED" | "OWNERSHIP_MISMATCH" | "PROTECTED_BRANCH" | "PROTECTED_WORKTREE" | "RECOVERABLE_COMMITS" | "REGISTRY_CORRUPT" | "REGISTRY_UNREADABLE" | "SESSION_NOT_FOUND" | "STALE_SESSION" | "UNSUPPORTED_RUNTIME" | "UNKNOWN_COMMAND" | "WORKTREE_OWNED_BY_OTHER_SESSION" | "WORKTREE_ALREADY_EXISTS" | "INTERNAL_ERROR";
6
+ export type ErrorCode = "BACKEND_UNAVAILABLE" | "BRANCH_OWNED_BY_OTHER_SESSION" | "BRANCH_ALREADY_EXISTS" | "DOCTOR_FAILED" | "DIRTY_WORKTREE" | "NESTED_REPOSITORY" | "GIT_COMMAND_FAILED" | "GIT_OPERATION_FAILED" | "GIT_SPAWN_FAILED" | "GIT_TIMEOUT" | "GIT_OUTPUT_LIMIT" | "GIT_UNAVAILABLE" | "INVALID_ARGUMENT" | "INVALID_BRANCH" | "INVALID_BASE_REF" | "INVALID_REGISTRY" | "INVALID_SESSION_ID" | "INVALID_WORKTREE" | "DETACHED_HEAD" | "MISSING_WORKTREE" | "REPOSITORY_MISMATCH" | "WORKTREE_MISMATCH" | "BRANCH_MISMATCH" | "STALE_REGISTRY" | "GIT_STATE_AMBIGUOUS" | "PHYSICAL_OBSERVATION_UNAVAILABLE" | "LOCK_CONTENTION" | "MISSING_ARGUMENT" | "NO_COMMAND" | "NO_CURRENT_SESSION" | "NOT_GIT_REPOSITORY" | "OPERATION_REJECTED" | "OWNERSHIP_MISMATCH" | "PROTECTED_BRANCH" | "PROTECTED_WORKTREE" | "RECOVERABLE_COMMITS" | "RECOVERABLE_STASHES" | "RECONCILIATION_DRIFT" | "REGISTRY_CORRUPT" | "REGISTRY_UNREADABLE" | "SESSION_NOT_FOUND" | "STALE_SESSION" | "UNSUPPORTED_RUNTIME" | "UNKNOWN_COMMAND" | "WORKTREE_OWNED_BY_OTHER_SESSION" | "WORKTREE_ALREADY_EXISTS" | "INVALID_CLAIM" | "INVALID_OPERATION" | "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" | "INTERNAL_ERROR";
7
7
  export declare const EXIT_CODES: Readonly<{
8
8
  success: 0;
9
9
  usage: 2;
@@ -14,7 +14,11 @@ function defaultExitCode(code) {
14
14
  if (code === "UNKNOWN_COMMAND" ||
15
15
  code === "NO_COMMAND" ||
16
16
  code === "INVALID_ARGUMENT" ||
17
- code === "MISSING_ARGUMENT") {
17
+ code === "MISSING_ARGUMENT" ||
18
+ code === "INVALID_OPERATION" ||
19
+ code === "INVALID_COMMIT_MESSAGE" ||
20
+ code === "INVALID_REMOTE" ||
21
+ code === "INVALID_REMOTE_BRANCH") {
18
22
  return EXIT_CODES.usage;
19
23
  }
20
24
  if (code === "INTERNAL_ERROR")
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/domain/errors.ts"],"names":[],"mappings":"AA0CA,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC;IACX,WAAW,EAAE,CAAC;IACd,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC;AAEH,SAAS,eAAe,CAAC,IAAe;IACtC,IAAI,IAAI,KAAK,qBAAqB;QAAE,OAAO,UAAU,CAAC,WAAW,CAAC;IAClE,IAAI,IAAI,KAAK,eAAe;QAAE,OAAO,UAAU,CAAC,MAAM,CAAC;IACvD,IACE,IAAI,KAAK,iBAAiB;QAC1B,IAAI,KAAK,YAAY;QACrB,IAAI,KAAK,kBAAkB;QAC3B,IAAI,KAAK,kBAAkB,EAC3B,CAAC;QACD,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,KAAK,gBAAgB;QAAE,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC1D,OAAO,UAAU,CAAC,QAAQ,CAAC;AAC7B,CAAC;AAED,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,CAAY;IAChB,QAAQ,CAAS;IACjB,OAAO,CAAoB;IAEpC,YACE,IAAe,EACf,OAAe,EACf,UAA6B,IAAI,EACjC,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,EAChC,KAAe;QAEf,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAID,MAAM,UAAU,OAAO,CAAI,KAAQ;IACjC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,OAAO,CAAY,KAAkB;IACnD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/domain/errors.ts"],"names":[],"mappings":"AAyFA,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC;IACX,WAAW,EAAE,CAAC;IACd,MAAM,EAAE,CAAC;IACT,QAAQ,EAAE,EAAE;CACb,CAAC,CAAC;AAEH,SAAS,eAAe,CAAC,IAAe;IACtC,IAAI,IAAI,KAAK,qBAAqB;QAAE,OAAO,UAAU,CAAC,WAAW,CAAC;IAClE,IAAI,IAAI,KAAK,eAAe;QAAE,OAAO,UAAU,CAAC,MAAM,CAAC;IACvD,IACE,IAAI,KAAK,iBAAiB;QAC1B,IAAI,KAAK,YAAY;QACrB,IAAI,KAAK,kBAAkB;QAC3B,IAAI,KAAK,kBAAkB;QAC3B,IAAI,KAAK,mBAAmB;QAC5B,IAAI,KAAK,wBAAwB;QACjC,IAAI,KAAK,gBAAgB;QACzB,IAAI,KAAK,uBAAuB,EAChC,CAAC;QACD,OAAO,UAAU,CAAC,KAAK,CAAC;IAC1B,CAAC;IACD,IAAI,IAAI,KAAK,gBAAgB;QAAE,OAAO,UAAU,CAAC,QAAQ,CAAC;IAC1D,OAAO,UAAU,CAAC,QAAQ,CAAC;AAC7B,CAAC;AAED,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,IAAI,CAAY;IAChB,QAAQ,CAAS;IACjB,OAAO,CAAoB;IAEpC,YACE,IAAe,EACf,OAAe,EACf,UAA6B,IAAI,EACjC,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,EAChC,KAAe;QAEf,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAID,MAAM,UAAU,OAAO,CAAI,KAAQ;IACjC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,OAAO,CAAY,KAAkB;IACnD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC9B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { type SessionRegistryOptions } from "../session-registry.js";
2
2
  import { type DomainResult } from "./errors.js";
3
- import { type BackendCapabilities, type GarbageCollectOptions, type GarbageCollectResult, type GuardDecision, type GuardOptions, type SessionBackend, type SessionCloseOptions, type SessionCloseResult, type SessionContext, type SessionCreateOptions, type SessionListResult, type SessionRecord, type StatusResult } from "./session.js";
3
+ import { type BackendCapabilities, type CheckpointEvidence, type CheckpointOptions, type CommitOptions, type CommitResult, type ClaimResourcesOptions, type ClaimResourcesResult, type GarbageCollectOptions, type GarbageCollectResult, type GuardDecision, type GuardOptions, type OperationAuthorizationDecision, type OperationAuthorizationOptions, type PushOptions, type PushResult, type SessionBackend, type SessionCloseOptions, type SessionCloseResult, type SessionContext, type SessionCreateOptions, type SessionListResult, type SessionRecord, type ReleaseClaimsOptions, type ReleaseClaimsResult, type ResourceClaim, type StatusResult, type UpdateClaimsOptions } from "./session.js";
4
4
  export interface LocalSessionBackendOptions {
5
5
  readonly git?: SessionRegistryOptions["git"];
6
6
  readonly registry?: Omit<SessionRegistryOptions, "cwd" | "git">;
@@ -15,10 +15,20 @@ export declare class LocalSessionBackend implements SessionBackend {
15
15
  resolveCurrentSession(context: SessionContext): Promise<DomainResult<SessionRecord>>;
16
16
  getSession(context: SessionContext, sessionId: string): Promise<DomainResult<SessionRecord>>;
17
17
  guard(context: SessionContext, options: GuardOptions): Promise<DomainResult<GuardDecision>>;
18
+ authorizeOperation(context: SessionContext, options: OperationAuthorizationOptions): Promise<DomainResult<OperationAuthorizationDecision>>;
19
+ checkpoint(context: SessionContext, options: CheckpointOptions): Promise<DomainResult<CheckpointEvidence>>;
20
+ commit(context: SessionContext, options: CommitOptions): Promise<DomainResult<CommitResult>>;
21
+ push(context: SessionContext, options: PushOptions): Promise<DomainResult<PushResult>>;
18
22
  listSessions(context: SessionContext): Promise<DomainResult<SessionListResult>>;
19
23
  status(context: SessionContext): Promise<DomainResult<StatusResult>>;
20
24
  closeSession(context: SessionContext, options: SessionCloseOptions): Promise<DomainResult<SessionCloseResult>>;
21
25
  garbageCollect(context: SessionContext, options: GarbageCollectOptions): Promise<DomainResult<GarbageCollectResult>>;
26
+ claimResources(context: SessionContext, options: ClaimResourcesOptions): Promise<DomainResult<ClaimResourcesResult>>;
27
+ updateClaims(context: SessionContext, options: UpdateClaimsOptions): Promise<DomainResult<ClaimResourcesResult>>;
28
+ releaseClaims(context: SessionContext, options: ReleaseClaimsOptions): Promise<DomainResult<ReleaseClaimsResult>>;
29
+ listClaims(context: SessionContext, sessionId: string | null): Promise<DomainResult<{
30
+ claims: ResourceClaim[];
31
+ }>>;
22
32
  private registryFor;
23
33
  }
24
34
  export declare function createLocalSessionBackend(options?: LocalSessionBackendOptions): SessionBackend;