nawabari 0.9.2 → 0.10.2

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.
Files changed (75) hide show
  1. package/README.md +142 -803
  2. package/dist/cli-command-registry.js +46 -6
  3. package/dist/cli-command-registry.js.map +1 -1
  4. package/dist/cli.d.ts +5 -3
  5. package/dist/cli.js +157 -34
  6. package/dist/cli.js.map +1 -1
  7. package/dist/contract.js +11 -3
  8. package/dist/contract.js.map +1 -1
  9. package/dist/domain/compatibility-runtime-projection.d.ts +24 -0
  10. package/dist/domain/compatibility-runtime-projection.js +197 -0
  11. package/dist/domain/compatibility-runtime-projection.js.map +1 -0
  12. package/dist/domain/doctor.d.ts +2 -2
  13. package/dist/domain/doctor.js +72 -51
  14. package/dist/domain/doctor.js.map +1 -1
  15. package/dist/domain/errors.d.ts +1 -1
  16. package/dist/domain/errors.js +5 -1
  17. package/dist/domain/errors.js.map +1 -1
  18. package/dist/domain/fhs-development-runtime.d.ts +90 -0
  19. package/dist/domain/fhs-development-runtime.js +385 -0
  20. package/dist/domain/fhs-development-runtime.js.map +1 -0
  21. package/dist/domain/fhs-runtime.d.ts +36 -0
  22. package/dist/domain/fhs-runtime.js +776 -0
  23. package/dist/domain/fhs-runtime.js.map +1 -0
  24. package/dist/domain/landlock.d.ts +11 -4
  25. package/dist/domain/landlock.js +44 -21
  26. package/dist/domain/landlock.js.map +1 -1
  27. package/dist/domain/nix-runtime-closure.d.ts +70 -0
  28. package/dist/domain/nix-runtime-closure.js +449 -0
  29. package/dist/domain/nix-runtime-closure.js.map +1 -0
  30. package/dist/domain/pnpm-middleware-backend-materialization.d.ts +117 -0
  31. package/dist/domain/pnpm-middleware-backend-materialization.js +311 -0
  32. package/dist/domain/pnpm-middleware-backend-materialization.js.map +1 -0
  33. package/dist/domain/runtime-executable-projection.d.ts +33 -0
  34. package/dist/domain/runtime-executable-projection.js +204 -0
  35. package/dist/domain/runtime-executable-projection.js.map +1 -0
  36. package/dist/domain/runtime-file-identity.d.ts +37 -0
  37. package/dist/domain/runtime-file-identity.js +114 -0
  38. package/dist/domain/runtime-file-identity.js.map +1 -0
  39. package/dist/domain/runtime-profile.d.ts +66 -0
  40. package/dist/domain/runtime-profile.js +356 -0
  41. package/dist/domain/runtime-profile.js.map +1 -0
  42. package/dist/domain/runtime-projection.d.ts +101 -0
  43. package/dist/domain/runtime-projection.js +316 -0
  44. package/dist/domain/runtime-projection.js.map +1 -0
  45. package/dist/domain/runtime-provider-pnpm-middleware.d.ts +41 -0
  46. package/dist/domain/runtime-provider-pnpm-middleware.js +316 -0
  47. package/dist/domain/runtime-provider-pnpm-middleware.js.map +1 -0
  48. package/dist/domain/runtime-provider-tgrep.d.ts +60 -0
  49. package/dist/domain/runtime-provider-tgrep.js +537 -0
  50. package/dist/domain/runtime-provider-tgrep.js.map +1 -0
  51. package/dist/domain/runtime-resolution.d.ts +57 -0
  52. package/dist/domain/runtime-resolution.js +242 -0
  53. package/dist/domain/runtime-resolution.js.map +1 -0
  54. package/dist/domain/sandbox-launcher.d.ts +7 -0
  55. package/dist/domain/sandbox-launcher.js +380 -56
  56. package/dist/domain/sandbox-launcher.js.map +1 -1
  57. package/dist/domain/sandbox.d.ts +59 -4
  58. package/dist/domain/sandbox.js +100 -5
  59. package/dist/domain/sandbox.js.map +1 -1
  60. package/dist/domain/session-backend.js +20 -1
  61. package/dist/domain/session-backend.js.map +1 -1
  62. package/dist/domain/session.d.ts +3 -2
  63. package/dist/domain/session.js.map +1 -1
  64. package/dist/domain/tgrep-runtime-materialization.d.ts +61 -0
  65. package/dist/domain/tgrep-runtime-materialization.js +172 -0
  66. package/dist/domain/tgrep-runtime-materialization.js.map +1 -0
  67. package/dist/operation-authorization.d.ts +10 -0
  68. package/dist/operation-authorization.js +12 -1
  69. package/dist/operation-authorization.js.map +1 -1
  70. package/dist/presentation.js +6 -3
  71. package/dist/presentation.js.map +1 -1
  72. package/dist/session-registry.d.ts +11 -3
  73. package/dist/session-registry.js +61 -45
  74. package/dist/session-registry.js.map +1 -1
  75. package/package.json +3 -1
@@ -0,0 +1,197 @@
1
+ import fs from "node:fs";
2
+ import { posix } from "node:path";
3
+ import { DomainError, failure, success } from "./errors.js";
4
+ import { EXPLICIT_COMPATIBILITY_RUNTIME_POLICY, projectSessionRuntimeProjection, } from "./runtime-projection.js";
5
+ const DEFAULT_COMPATIBILITY_PROFILE = Object.freeze({
6
+ id: "compatibility-runtime",
7
+ version: "1",
8
+ });
9
+ const BACKEND_OWNED_RUNTIME_PATHS = new Set(["/dev", "/proc", "/tmp"]);
10
+ const BROAD_FHS_SYSTEM_ROOTS = ["/usr", "/bin", "/lib", "/lib64"];
11
+ const RUNTIME_ROOTS = ["/nix/store", "/run/current-system", "/run/wrappers", "/etc/profiles"];
12
+ const SYSTEM_ROOTS = [
13
+ ...BROAD_FHS_SYSTEM_ROOTS,
14
+ "/nix/store",
15
+ "/run/current-system",
16
+ "/run/wrappers",
17
+ "/run/systemd/resolve",
18
+ "/run/NetworkManager",
19
+ "/mnt/wsl",
20
+ "/etc/profiles",
21
+ "/etc/alternatives",
22
+ "/etc/ssl",
23
+ "/etc/pki",
24
+ "/etc/ca-certificates",
25
+ ];
26
+ const SYSTEM_FILES = new Set(["/etc/passwd", "/etc/group", "/etc/nsswitch.conf", "/etc/hosts", "/etc/resolv.conf"]);
27
+ function pathMatches(candidate, root) {
28
+ return candidate === root || candidate.startsWith(`${root}/`);
29
+ }
30
+ function invalid(field, reason, value) {
31
+ return failure(new DomainError("RUNTIME_PROJECTION_INVALID", `Compatibility projection field '${field}' is invalid: ${reason}.`, {
32
+ field,
33
+ ...(value === undefined ? {} : { value }),
34
+ }));
35
+ }
36
+ function ambiguous(field, reason, value) {
37
+ return failure(new DomainError("RUNTIME_PROJECTION_AMBIGUOUS", `Compatibility projection field '${field}' is ambiguous: ${reason}.`, {
38
+ field,
39
+ value,
40
+ }));
41
+ }
42
+ function missing(reason, details = {}) {
43
+ return failure(new DomainError("RUNTIME_MATERIALIZATION_MISSING", `The explicit compatibility projection is unavailable: ${reason}.`, details));
44
+ }
45
+ function isPath(value) {
46
+ return typeof value === "string" && value.length > 0 && value.startsWith("/") && !value.includes("\0");
47
+ }
48
+ function allowedRuntimePath(candidate) {
49
+ return RUNTIME_ROOTS.some((root) => pathMatches(candidate, root));
50
+ }
51
+ function allowedSystemPath(candidate, nixOSRuntime) {
52
+ if (nixOSRuntime && BROAD_FHS_SYSTEM_ROOTS.some((root) => pathMatches(candidate, root)))
53
+ return false;
54
+ return SYSTEM_ROOTS.some((root) => pathMatches(candidate, root)) || SYSTEM_FILES.has(candidate);
55
+ }
56
+ function userToolKind(candidate, hostHome) {
57
+ if (hostHome === null || hostHome === undefined || !isPath(hostHome))
58
+ return null;
59
+ const localBin = posix.join(posix.normalize(hostHome), ".local", "bin");
60
+ const localLib = posix.join(posix.normalize(hostHome), ".local", "lib");
61
+ const pnpmBin = posix.join(posix.normalize(hostHome), ".local", "share", "pnpm");
62
+ if (pathMatches(candidate, localBin))
63
+ return "local_bin";
64
+ if (pathMatches(candidate, localLib))
65
+ return "local_lib";
66
+ if (pathMatches(candidate, pnpmBin))
67
+ return "pnpm_bin";
68
+ return null;
69
+ }
70
+ function compatibilityPaths(source) {
71
+ if ("runtime_paths" in source && "system_paths" in source && "user_tool_paths" in source)
72
+ return source;
73
+ return {
74
+ runtime_paths: [
75
+ "/dev",
76
+ "/proc",
77
+ "/tmp",
78
+ ...[source.nix_store, source.nix_current_system, source.nix_wrappers, source.nix_user_profile].filter((candidate) => candidate !== null),
79
+ ],
80
+ system_paths: [
81
+ ...[
82
+ source.usr,
83
+ source.bin,
84
+ source.lib,
85
+ source.lib64,
86
+ source.passwd,
87
+ source.group,
88
+ source.nsswitch,
89
+ source.hosts,
90
+ source.resolv_conf,
91
+ source.alternatives,
92
+ source.ssl_certs,
93
+ source.pki_certs,
94
+ source.ca_certificates,
95
+ ].filter((candidate) => candidate !== null),
96
+ ],
97
+ user_tool_paths: [source.user_local_bin, source.user_local_lib, source.user_pnpm_bin].filter((candidate) => candidate !== null),
98
+ user_tool_home: source.user_home,
99
+ };
100
+ }
101
+ function canonicalSource(source, label, allowed) {
102
+ if (!isPath(source) || posix.normalize(source) !== source || source === "/") {
103
+ return invalid(`${label}.source`, "expected a non-root canonical absolute path", source);
104
+ }
105
+ if (!allowed(source))
106
+ return invalid(`${label}.source`, "path is outside the supported compatibility surface", source);
107
+ try {
108
+ const stat = fs.lstatSync(source);
109
+ if (!stat.isDirectory() && !stat.isFile() && !stat.isSymbolicLink()) {
110
+ return missing("path is not a regular file or directory", { path: source });
111
+ }
112
+ const resolved = fs.realpathSync.native(source);
113
+ if (resolved === "/" || !allowed(resolved)) {
114
+ return invalid(`${label}.source`, "canonical source escapes the supported compatibility surface", source);
115
+ }
116
+ const resolvedStat = fs.statSync(resolved);
117
+ if (!resolvedStat.isDirectory() && !resolvedStat.isFile()) {
118
+ return missing("canonical source is not a regular file or directory", { path: source });
119
+ }
120
+ return success(resolved);
121
+ }
122
+ catch {
123
+ return missing("path does not exist or cannot be canonicalized", { path: source });
124
+ }
125
+ }
126
+ /**
127
+ * Build the complete explicit compatibility view from the exact legacy
128
+ * profile inputs. Backend-owned /dev, /proc, and /tmp remain represented by
129
+ * the fixed sandbox topology; every other legacy host-backed path is emitted
130
+ * as a read-only compatibility-provenance projection entry.
131
+ */
132
+ export function buildExplicitCompatibilityRuntimeProjection(source, options = {}) {
133
+ const paths = compatibilityPaths(source);
134
+ const nixOSRuntime = paths.runtime_paths.includes("/nix/store") && paths.runtime_paths.includes("/run/current-system");
135
+ const entries = [];
136
+ const targets = new Map();
137
+ const add = (candidate, target, label, allowed) => {
138
+ if (!isPath(target) || posix.normalize(target) !== target || target === "/") {
139
+ return invalid(`${label}.target`, "expected a non-root canonical absolute path", target);
140
+ }
141
+ const canonical = canonicalSource(candidate, label, allowed);
142
+ if (!canonical.ok)
143
+ return canonical;
144
+ const previous = targets.get(target);
145
+ if (previous !== undefined) {
146
+ if (previous === canonical.value)
147
+ return success(null);
148
+ return ambiguous("filesystem.target", "multiple compatibility sources select the same target", target);
149
+ }
150
+ targets.set(target, canonical.value);
151
+ entries.push({ source: canonical.value, target, label });
152
+ return success(null);
153
+ };
154
+ for (const [index, candidate] of paths.runtime_paths.entries()) {
155
+ if (BACKEND_OWNED_RUNTIME_PATHS.has(candidate))
156
+ continue;
157
+ const added = add(candidate, candidate, `runtime_paths[${index}]`, (value) => allowedRuntimePath(value));
158
+ if (!added.ok)
159
+ return added;
160
+ }
161
+ for (const [index, candidate] of paths.system_paths.entries()) {
162
+ const added = add(candidate, candidate, `system_paths[${index}]`, (value) => allowedSystemPath(value, nixOSRuntime));
163
+ if (!added.ok)
164
+ return added;
165
+ }
166
+ for (const [index, candidate] of paths.user_tool_paths.entries()) {
167
+ const kind = userToolKind(candidate, paths.user_tool_home);
168
+ const target = kind === "local_bin"
169
+ ? "/home/nawabari/.local/bin"
170
+ : kind === "local_lib"
171
+ ? "/home/nawabari/.local/lib"
172
+ : kind === "pnpm_bin"
173
+ ? "/home/nawabari/.local/share/pnpm"
174
+ : null;
175
+ if (target === null)
176
+ return invalid(`user_tool_paths[${index}]`, "path is outside the selected local-tool profile", candidate);
177
+ const added = add(candidate, target, `user_tool_paths[${index}]`, (value) => userToolKind(value, paths.user_tool_home) !== null);
178
+ if (!added.ok)
179
+ return added;
180
+ }
181
+ if (entries.length === 0)
182
+ return missing("no supported legacy runtime paths are available");
183
+ const projection = projectSessionRuntimeProjection({
184
+ policy: EXPLICIT_COMPATIBILITY_RUNTIME_POLICY,
185
+ profile: options.profile ?? DEFAULT_COMPATIBILITY_PROFILE,
186
+ requirements: options.requirements ?? [],
187
+ filesystem: entries.map((entry) => ({
188
+ source: entry.source,
189
+ target: entry.target,
190
+ access_mode: "read-only",
191
+ provenance: "compatibility",
192
+ })),
193
+ executables: [],
194
+ });
195
+ return projection.ok ? projection : failure(projection.error);
196
+ }
197
+ //# sourceMappingURL=compatibility-runtime-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compatibility-runtime-projection.js","sourceRoot":"","sources":["../../src/domain/compatibility-runtime-projection.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type DomainResult, type ErrorCode, type JsonObject } from "./errors.js";
2
- import { type SandboxDoctorReport, type SandboxProbe } from "./sandbox.js";
2
+ import { type SandboxDoctorReport, type SandboxProbe, type SandboxRuntimeLayout } from "./sandbox.js";
3
3
  export type DoctorCheckStatus = "ok" | "warning" | "error" | "not_configured" | "not_applicable";
4
4
  export type DoctorCheck = {
5
5
  name: "git" | "repository" | "registry" | "reconciliation" | "runtime";
@@ -20,4 +20,4 @@ export type DoctorReport = {
20
20
  /** Runtime protected-execution readiness from the canonical sandbox probe. */
21
21
  sandbox: SandboxDoctorReport;
22
22
  };
23
- export declare function runDoctor(cwd?: string, sandboxProbe?: SandboxProbe, runtimeVersion?: string): Promise<DomainResult<DoctorReport>>;
23
+ export declare function runDoctor(cwd?: string, sandboxProbe?: SandboxProbe, runtimeVersion?: string, runtimeLayout?: SandboxRuntimeLayout): Promise<DomainResult<DoctorReport>>;
@@ -8,7 +8,7 @@ import { projectSessionLifecycleActions } from "../session-lifecycle-actions.js"
8
8
  import { availableLifecycleOperations } from "../session-lifecycle-classification.js";
9
9
  import { success } from "./errors.js";
10
10
  import { supportsRuntime } from "./runtime.js";
11
- import { defaultSandboxProbe, sandboxDoctorReport } from "./sandbox.js";
11
+ import { defaultSandboxProbe, discoverSandboxRuntimeLayout, sandboxDoctorReport, } from "./sandbox.js";
12
12
  function check(name, status, code, message, details = {}) {
13
13
  return { name, status, code, message, details };
14
14
  }
@@ -19,6 +19,74 @@ function repositoryInfo(context) {
19
19
  registry_path: path.join(context.commonGitDirectory, "nawabari", "session-registry.json"),
20
20
  };
21
21
  }
22
+ function doctorReconciliationSession(session) {
23
+ const lifecycle = session.lifecycle;
24
+ const summary = {
25
+ session_id: session.session.sessionId,
26
+ status: session.status,
27
+ physical_state: session.physicalState,
28
+ lifecycle_state: lifecycle?.state ?? null,
29
+ };
30
+ // Closed history is useful for reconciliation counts and drift diagnosis,
31
+ // but it has no actionable lifecycle branch. Keep its stable identity and
32
+ // physical summary while omitting the repeated transition/action graph.
33
+ if (session.session.state === "closed") {
34
+ if (session.blockers.length > 0) {
35
+ summary.blockers = session.blockers.map((blocker) => ({
36
+ code: blocker.code,
37
+ message: blocker.message,
38
+ details: { ...blocker.details },
39
+ recovery_hints: [...blocker.recoveryHints],
40
+ }));
41
+ }
42
+ return summary;
43
+ }
44
+ if (lifecycle === undefined) {
45
+ summary.lifecycle = null;
46
+ return summary;
47
+ }
48
+ summary.lifecycle = {
49
+ schema_version: lifecycle.schemaVersion,
50
+ state: lifecycle.state,
51
+ session_state: lifecycle.sessionState,
52
+ physical_state: lifecycle.physicalState,
53
+ close_readiness: lifecycle.closeReadiness,
54
+ blockers: lifecycle.blockers.map((blocker) => ({
55
+ code: blocker.code,
56
+ ...(blocker.classification === undefined ? {} : { classification: blocker.classification }),
57
+ })),
58
+ recoverability: lifecycle.recoverability,
59
+ age_suspicious: lifecycle.ageSuspicious,
60
+ gc_authorized: lifecycle.gcAuthorized,
61
+ destructive_cleanup_eligible: lifecycle.destructiveCleanupEligible,
62
+ available_operations: [...availableLifecycleOperations(lifecycle)],
63
+ transitions: lifecycle.transitions.map((transition) => ({ ...transition })),
64
+ next_actions: projectSessionLifecycleActions({
65
+ classification: lifecycle,
66
+ sessionId: session.session.sessionId,
67
+ blockers: session.blockers.map((blocker) => ({ code: blocker.code, details: blocker.details })),
68
+ }).map((action) => ({
69
+ schema_version: action.schemaVersion,
70
+ action_id: action.actionId,
71
+ kind: action.kind,
72
+ command: action.command,
73
+ ...(action.kind === "integrated-revision"
74
+ ? { integrated_revision: action.integratedRevision }
75
+ : action.kind === "bounded-integration-fetch"
76
+ ? {
77
+ integrated_revision: action.integratedRevision,
78
+ fetch_remote: action.fetchRemote,
79
+ fetch_branch: action.fetchBranch,
80
+ }
81
+ : action.kind === "explicit-discard"
82
+ ? { session_id: action.sessionId, requires_explicit_intent: action.requiresExplicitIntent }
83
+ : action.kind === "reconcile"
84
+ ? { session_id: action.sessionId, mutates: action.mutates }
85
+ : { reason: action.reason }),
86
+ })),
87
+ };
88
+ return summary;
89
+ }
22
90
  async function inspectRegistry(repository, context) {
23
91
  try {
24
92
  const contents = await readFile(repository.registry_path, "utf8");
@@ -80,54 +148,7 @@ async function inspectReconciliation(context) {
80
148
  : "Registry/Git ownership drift is present; no destructive repair was performed.", {
81
149
  clean: result.clean,
82
150
  sessions: result.sessions.length,
83
- lifecycle_sessions: result.sessions.map((session) => ({
84
- session_id: session.session.sessionId,
85
- status: session.status,
86
- physical_state: session.physicalState,
87
- lifecycle_state: session.lifecycle?.state ?? null,
88
- lifecycle: session.lifecycle === undefined
89
- ? null
90
- : {
91
- schema_version: session.lifecycle.schemaVersion,
92
- state: session.lifecycle.state,
93
- session_state: session.lifecycle.sessionState,
94
- physical_state: session.lifecycle.physicalState,
95
- close_readiness: session.lifecycle.closeReadiness,
96
- blockers: session.lifecycle.blockers.map((blocker) => ({
97
- code: blocker.code,
98
- ...(blocker.classification === undefined ? {} : { classification: blocker.classification }),
99
- })),
100
- recoverability: session.lifecycle.recoverability,
101
- age_suspicious: session.lifecycle.ageSuspicious,
102
- gc_authorized: session.lifecycle.gcAuthorized,
103
- destructive_cleanup_eligible: session.lifecycle.destructiveCleanupEligible,
104
- available_operations: [...availableLifecycleOperations(session.lifecycle)],
105
- transitions: session.lifecycle.transitions.map((transition) => ({ ...transition })),
106
- next_actions: projectSessionLifecycleActions({
107
- classification: session.lifecycle,
108
- sessionId: session.session.sessionId,
109
- blockers: session.blockers.map((blocker) => ({ code: blocker.code, details: blocker.details })),
110
- }).map((action) => ({
111
- schema_version: action.schemaVersion,
112
- action_id: action.actionId,
113
- kind: action.kind,
114
- command: action.command,
115
- ...(action.kind === "integrated-revision"
116
- ? { integrated_revision: action.integratedRevision }
117
- : action.kind === "bounded-integration-fetch"
118
- ? {
119
- integrated_revision: action.integratedRevision,
120
- fetch_remote: action.fetchRemote,
121
- fetch_branch: action.fetchBranch,
122
- }
123
- : action.kind === "explicit-discard"
124
- ? { session_id: action.sessionId, requires_explicit_intent: action.requiresExplicitIntent }
125
- : action.kind === "reconcile"
126
- ? { session_id: action.sessionId, mutates: action.mutates }
127
- : { reason: action.reason }),
128
- })),
129
- },
130
- })),
151
+ lifecycle_sessions: result.sessions.map(doctorReconciliationSession),
131
152
  worktrees: result.worktrees.length,
132
153
  issues,
133
154
  });
@@ -136,9 +157,9 @@ async function inspectReconciliation(context) {
136
157
  return check("reconciliation", "error", doctorErrorCode(error, "REGISTRY_UNREADABLE"), "Authoritative registry/Git reconciliation could not be completed.", { ...(isSessionRegistryError(error) ? { reason: error.code, ...error.details } : {}) });
137
158
  }
138
159
  }
139
- export async function runDoctor(cwd = process.cwd(), sandboxProbe = defaultSandboxProbe, runtimeVersion = process.versions.node) {
160
+ export async function runDoctor(cwd = process.cwd(), sandboxProbe = defaultSandboxProbe, runtimeVersion = process.versions.node, runtimeLayout = discoverSandboxRuntimeLayout()) {
140
161
  const checks = [];
141
- const sandbox = sandboxDoctorReport(sandboxProbe);
162
+ const sandbox = sandboxDoctorReport(sandboxProbe, runtimeLayout);
142
163
  const runtimeOk = supportsRuntime(runtimeVersion);
143
164
  checks.push(runtimeOk
144
165
  ? check("runtime", "ok", null, "The Nawabari runtime meets the supported Node.js version.", {
@@ -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":"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"}
@@ -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" | "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" | "STALE_CLAIM_SET" | "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" | "REGISTRY_DURABILITY_UNCERTAIN" | "SANDBOX_UNSUPPORTED_PLATFORM" | "SANDBOX_CAPABILITY_UNAVAILABLE" | "SANDBOX_TOPOLOGY_INVALID" | "SANDBOX_EXECUTION_FAILED" | "SANDBOX_EXECUTION_TIMEOUT" | "SANDBOX_OUTPUT_LIMIT" | "SANDBOX_CGROUP_SCOPE_CONFLICT" | "SANDBOX_CGROUP_SETUP_FAILED" | "SANDBOX_CGROUP_CLEANUP_FAILED" | "SANDBOX_CGROUP_LIMIT" | "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" | "INSUFFICIENT_CLAIM_MODE" | "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" | "COMMIT_RESULT_DIVERGED" | "INVALID_REMOTE" | "INVALID_REMOTE_BRANCH" | "PUSH_TARGET_MISMATCH" | "PUSH_REMOTE_INSPECTION_FAILED" | "INTEGRATION_FETCH_FAILED" | "PUSH_NO_UPSTREAM" | "PUSH_BEHIND" | "PUSH_DIVERGED" | "PUSH_DIRTY_WORKTREE" | "PUSH_FAILED" | "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" | "STALE_CLAIM_SET" | "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" | "REGISTRY_DURABILITY_UNCERTAIN" | "SANDBOX_UNSUPPORTED_PLATFORM" | "SANDBOX_CAPABILITY_UNAVAILABLE" | "SANDBOX_TOPOLOGY_INVALID" | "SANDBOX_EXECUTION_FAILED" | "SANDBOX_EXECUTION_TIMEOUT" | "SANDBOX_OUTPUT_LIMIT" | "SANDBOX_CGROUP_SCOPE_CONFLICT" | "SANDBOX_CGROUP_SETUP_FAILED" | "SANDBOX_CGROUP_CLEANUP_FAILED" | "SANDBOX_CGROUP_LIMIT" | "RUNTIME_PROJECTION_INVALID" | "RUNTIME_PROJECTION_AMBIGUOUS" | "RUNTIME_PROFILE_INVALID" | "RUNTIME_PROFILE_AMBIGUOUS" | "RUNTIME_PROFILE_MISSING" | "RUNTIME_PROFILE_REQUIREMENT_MISSING" | "RUNTIME_PROFILE_REQUIREMENT_CONFLICT" | "RUNTIME_PROVIDER_MISSING" | "RUNTIME_MATERIALIZATION_MISSING" | "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" | "INSUFFICIENT_CLAIM_MODE" | "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" | "COMMIT_RESULT_DIVERGED" | "INVALID_REMOTE" | "INVALID_REMOTE_BRANCH" | "PUSH_TARGET_MISMATCH" | "PUSH_REMOTE_INSPECTION_FAILED" | "INTEGRATION_FETCH_FAILED" | "PUSH_NO_UPSTREAM" | "PUSH_BEHIND" | "PUSH_DIVERGED" | "PUSH_DIRTY_WORKTREE" | "PUSH_FAILED" | "INTERNAL_ERROR";
7
7
  /**
8
8
  * Implementation-owned stable failures reachable from the public resource
9
9
  * claim lifecycle. Contract discovery consumes this vocabulary rather than
@@ -54,7 +54,11 @@ export const EXIT_CODES = Object.freeze({
54
54
  function defaultExitCode(code) {
55
55
  if (code === "BACKEND_UNAVAILABLE" ||
56
56
  code === "SANDBOX_UNSUPPORTED_PLATFORM" ||
57
- code === "SANDBOX_CAPABILITY_UNAVAILABLE") {
57
+ code === "SANDBOX_CAPABILITY_UNAVAILABLE" ||
58
+ code === "RUNTIME_PROFILE_MISSING" ||
59
+ code === "RUNTIME_PROFILE_REQUIREMENT_MISSING" ||
60
+ code === "RUNTIME_PROVIDER_MISSING" ||
61
+ code === "RUNTIME_MATERIALIZATION_MISSING") {
58
62
  return EXIT_CODES.unavailable;
59
63
  }
60
64
  if (code === "DOCTOR_FAILED")
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/domain/errors.ts"],"names":[],"mappings":"AAwGA;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC;IACxD,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,oBAAoB;IACpB,kBAAkB;IAClB,kBAAkB;IAClB,oBAAoB;IACpB,mBAAmB;IACnB,oBAAoB;IACpB,qBAAqB;IACrB,wBAAwB;IACxB,sBAAsB;IACtB,sBAAsB;IACtB,sBAAsB;IACtB,wBAAwB;IACxB,2BAA2B;IAC3B,wBAAwB;IACxB,iBAAiB;IACjB,qBAAqB;IACrB,yBAAyB;IACzB,iBAAiB;IACjB,oBAAoB;IACpB,iBAAiB;IACjB,kCAAkC;IAClC,mBAAmB;IACnB,oBAAoB;IACpB,oBAAoB;IACpB,iCAAiC;IACjC,+BAA+B;IAC/B,oBAAoB;IACpB,kBAAkB;IAClB,aAAa;IACb,kBAAkB;IAClB,kBAAkB;IAClB,qBAAqB;IACrB,+BAA+B;IAC/B,iBAAiB;CACsB,CAAC,CAAC;AAE3C,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,IACE,IAAI,KAAK,qBAAqB;QAC9B,IAAI,KAAK,8BAA8B;QACvC,IAAI,KAAK,gCAAgC,EACzC,CAAC;QACD,OAAO,UAAU,CAAC,WAAW,CAAC;IAChC,CAAC;IACD,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
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/domain/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import { type DomainResult, type ErrorCode, type JsonObject } from "./errors.js";
2
+ import { type FhsRuntimeExecutableDeclaration } from "./fhs-runtime.js";
3
+ import { type RuntimeExecutableProjectionEntry } from "./runtime-executable-projection.js";
4
+ import { type ResolvedRuntimeProfile } from "./runtime-profile.js";
5
+ import { type RuntimePolicy, type RuntimeProfileIdentity, type SessionRuntimeProjection } from "./runtime-projection.js";
6
+ import type { SandboxRuntimeLayout } from "./sandbox.js";
7
+ /** The canonical standalone Linux development baseline. */
8
+ export declare const FHS_DEVELOPMENT_RUNTIME_REQUIREMENT_IDS: readonly ["node-runtime", "git-package", "pnpm-package"];
9
+ /**
10
+ * Explicit host/runtime evidence keys. These are exact executable sources,
11
+ * not search roots or package-manager configuration; absence is meaningful and
12
+ * leaves the strict baseline unavailable.
13
+ */
14
+ export declare const FHS_DEVELOPMENT_EXECUTABLE_ENVIRONMENT_KEYS: Readonly<{
15
+ readonly "node-runtime": "NAWABARI_FHS_NODE_EXECUTABLE";
16
+ readonly "git-package": "NAWABARI_FHS_GIT_EXECUTABLE";
17
+ readonly "pnpm-package": "NAWABARI_FHS_PNPM_EXECUTABLE";
18
+ }>;
19
+ /** Stable provider identities consumed by #293's executable projection. */
20
+ export declare const FHS_DEVELOPMENT_RUNTIME_PROVIDER_IDS: Readonly<Record<string, string>>;
21
+ export type FhsDevelopmentRuntimeInput = Readonly<{
22
+ /** Resolved logical profile; omitted means the canonical development profile. */
23
+ readonly profile?: ResolvedRuntimeProfile;
24
+ /** Strict is the only policy owned by this standalone development resolver. */
25
+ readonly policy?: RuntimePolicy;
26
+ /** Exact candidates supplied by the host/runtime evidence layer. */
27
+ readonly executable_candidates: readonly FhsRuntimeExecutableDeclaration[];
28
+ /** Optional bounded ELF search paths forwarded to #292. */
29
+ readonly library_search_paths?: readonly string[];
30
+ }>;
31
+ export type FhsDevelopmentRuntimeResolution = Readonly<{
32
+ readonly policy: RuntimePolicy;
33
+ readonly profile: RuntimeProfileIdentity;
34
+ readonly materializer: "fhs";
35
+ readonly projection: SessionRuntimeProjection;
36
+ readonly executable_projection: readonly RuntimeExecutableProjectionEntry[];
37
+ }>;
38
+ export type FhsDevelopmentRuntimeReadiness = Readonly<{
39
+ /** True only when the same resolver used to build execution material is successful. */
40
+ readonly strict_ready: boolean;
41
+ /** Canonical diagnostic evidence for an unavailable baseline. */
42
+ readonly reason: string | null;
43
+ readonly code: ErrorCode | null;
44
+ readonly details: JsonObject;
45
+ }>;
46
+ /**
47
+ * Read only the three explicit executable-source declarations exposed by the
48
+ * host/runtime boundary. In particular, this function never consults PATH,
49
+ * HOME, profile directories, or Corepack state.
50
+ */
51
+ export declare function readExplicitFhsDevelopmentExecutableCandidates(environment?: NodeJS.ProcessEnv): readonly FhsRuntimeExecutableDeclaration[];
52
+ /**
53
+ * Fixed, bounded FHS binary directories consulted when no explicit host
54
+ * evidence env var is supplied. This is a small deterministic allowlist, not a
55
+ * PATH search: it never reflects process PATH, HOME, profile files, or
56
+ * Corepack state, so it cannot be redirected by an attacker-controlled PATH.
57
+ */
58
+ export declare const FHS_DEVELOPMENT_DEFAULT_EXECUTABLE_ROOTS: readonly ["/usr/bin", "/usr/local/bin", "/bin"];
59
+ /**
60
+ * Discover a default candidate for each canonical development requirement
61
+ * from a small fixed set of FHS binary directories (default:
62
+ * `FHS_DEVELOPMENT_DEFAULT_EXECUTABLE_ROOTS`). This is the fallback used only
63
+ * when no explicit `NAWABARI_FHS_*_EXECUTABLE` evidence is supplied; every
64
+ * discovered candidate is still re-validated by the same strict pipeline that
65
+ * validates explicit candidates.
66
+ */
67
+ export declare function discoverDefaultFhsDevelopmentExecutableCandidates(roots?: readonly string[]): readonly FhsRuntimeExecutableDeclaration[];
68
+ /**
69
+ * The canonical host/runtime evidence source for standalone FHS development
70
+ * materialization: explicit `NAWABARI_FHS_*_EXECUTABLE` evidence always wins
71
+ * per requirement; a fixed-root default candidate (see
72
+ * `discoverDefaultFhsDevelopmentExecutableCandidates`) fills any requirement
73
+ * left unset so strict execution succeeds out of the box on a supported
74
+ * host. A requirement with neither source still fails closed.
75
+ */
76
+ export declare function readFhsDevelopmentExecutableCandidates(environment?: NodeJS.ProcessEnv, roots?: readonly string[]): readonly FhsRuntimeExecutableDeclaration[];
77
+ /**
78
+ * Resolve the canonical standalone Linux development baseline from explicit
79
+ * candidates, materialize its bounded ELF/shebang closure, and compile the
80
+ * exact result through #293's executable projection.
81
+ */
82
+ export declare function resolveFhsDevelopmentRuntime(input: unknown): DomainResult<FhsDevelopmentRuntimeResolution>;
83
+ /** Alias emphasizing that this result is the FHS materialization authority. */
84
+ export declare const materializeFhsDevelopmentRuntime: typeof resolveFhsDevelopmentRuntime;
85
+ /**
86
+ * Doctor/readiness authority. It calls the same resolver used by execution;
87
+ * it never reports readiness from directory existence or layout heuristics.
88
+ */
89
+ export declare function fhsDevelopmentRuntimeReadiness(platform: string, runtimeLayout: Pick<SandboxRuntimeLayout, "fhs_executable_candidates" | "fhs_library_search_paths">): FhsDevelopmentRuntimeReadiness;
90
+ export declare const doctorFhsDevelopmentRuntime: typeof fhsDevelopmentRuntimeReadiness;