@h-rig/runtime 0.0.6-alpha.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.
Files changed (176) hide show
  1. package/README.md +27 -0
  2. package/dist/bin/rig-agent-dispatch.js +9615 -0
  3. package/dist/bin/rig-agent.js +9512 -0
  4. package/dist/bin/rig-browser-tool.js +269 -0
  5. package/dist/src/agent-mode.js +48 -0
  6. package/dist/src/baked-secrets.js +121 -0
  7. package/dist/src/binary-build-worker.js +312 -0
  8. package/dist/src/binary-run.js +540 -0
  9. package/dist/src/boundaries.js +1 -0
  10. package/dist/src/build-time-config.js +25 -0
  11. package/dist/src/control-plane/agent-roles.js +27 -0
  12. package/dist/src/control-plane/agent-wrapper.js +9621 -0
  13. package/dist/src/control-plane/authority-files.js +582 -0
  14. package/dist/src/control-plane/browser-contract.js +135 -0
  15. package/dist/src/control-plane/controlled-bash.js +1111 -0
  16. package/dist/src/control-plane/errors.js +13 -0
  17. package/dist/src/control-plane/harness-main.js +10828 -0
  18. package/dist/src/control-plane/hook-materializer.js +75 -0
  19. package/dist/src/control-plane/hooks/audit-trail.js +353 -0
  20. package/dist/src/control-plane/hooks/completion-verification.js +7552 -0
  21. package/dist/src/control-plane/hooks/import-guard.js +890 -0
  22. package/dist/src/control-plane/hooks/inject-context.js +4189 -0
  23. package/dist/src/control-plane/hooks/post-edit-lint.js +43 -0
  24. package/dist/src/control-plane/hooks/safety-guard.js +910 -0
  25. package/dist/src/control-plane/hooks/scope-guard.js +907 -0
  26. package/dist/src/control-plane/hooks/shared.js +44 -0
  27. package/dist/src/control-plane/hooks/submodule-branch.js +7797 -0
  28. package/dist/src/control-plane/hooks/task-runtime-start.js +7799 -0
  29. package/dist/src/control-plane/hooks/test-integrity-guard.js +891 -0
  30. package/dist/src/control-plane/materialize-task-config.js +453 -0
  31. package/dist/src/control-plane/memory-sync/cli.js +2019 -0
  32. package/dist/src/control-plane/memory-sync/db.js +753 -0
  33. package/dist/src/control-plane/memory-sync/embed.js +281 -0
  34. package/dist/src/control-plane/memory-sync/index.js +2049 -0
  35. package/dist/src/control-plane/memory-sync/query.js +294 -0
  36. package/dist/src/control-plane/memory-sync/read.js +784 -0
  37. package/dist/src/control-plane/memory-sync/types.js +6 -0
  38. package/dist/src/control-plane/memory-sync/write.js +1547 -0
  39. package/dist/src/control-plane/native/git-native.js +490 -0
  40. package/dist/src/control-plane/native/git-ops.js +2860 -0
  41. package/dist/src/control-plane/native/harness-cli.js +9721 -0
  42. package/dist/src/control-plane/native/pr-automation.js +373 -0
  43. package/dist/src/control-plane/native/profile-ops.js +481 -0
  44. package/dist/src/control-plane/native/repo-ops.js +2342 -0
  45. package/dist/src/control-plane/native/root-resolver.js +66 -0
  46. package/dist/src/control-plane/native/run-ops.js +3281 -0
  47. package/dist/src/control-plane/native/runtime-native-sidecar.js +299 -0
  48. package/dist/src/control-plane/native/runtime-native.js +392 -0
  49. package/dist/src/control-plane/native/scope-rules.js +17 -0
  50. package/dist/src/control-plane/native/task-ops.js +6320 -0
  51. package/dist/src/control-plane/native/task-state.js +1512 -0
  52. package/dist/src/control-plane/native/utils.js +535 -0
  53. package/dist/src/control-plane/native/validator-binaries.js +889 -0
  54. package/dist/src/control-plane/native/validator.js +2197 -0
  55. package/dist/src/control-plane/native/verifier.js +3249 -0
  56. package/dist/src/control-plane/native/workspace-ops.js +1635 -0
  57. package/dist/src/control-plane/plugin-host-context.js +334 -0
  58. package/dist/src/control-plane/project-main-pre-run-sync.js +630 -0
  59. package/dist/src/control-plane/provider/claude-stream-records.js +158 -0
  60. package/dist/src/control-plane/provider/codex-app-server.js +885 -0
  61. package/dist/src/control-plane/provider/codex-exec-records.js +203 -0
  62. package/dist/src/control-plane/provider/rig-task-run-skill.js +39 -0
  63. package/dist/src/control-plane/provider/runtime-instructions.js +96 -0
  64. package/dist/src/control-plane/remote.js +854 -0
  65. package/dist/src/control-plane/repos/index.js +473 -0
  66. package/dist/src/control-plane/repos/layout.js +124 -0
  67. package/dist/src/control-plane/repos/mirror/bootstrap.js +268 -0
  68. package/dist/src/control-plane/repos/mirror/refresh.js +398 -0
  69. package/dist/src/control-plane/repos/mirror/state.js +167 -0
  70. package/dist/src/control-plane/repos/registry.js +77 -0
  71. package/dist/src/control-plane/repos/types.js +1 -0
  72. package/dist/src/control-plane/runtime/agent-mode.js +48 -0
  73. package/dist/src/control-plane/runtime/baked-secrets.js +120 -0
  74. package/dist/src/control-plane/runtime/claude-tool-router-binary.js +343 -0
  75. package/dist/src/control-plane/runtime/claude-tool-router.js +520 -0
  76. package/dist/src/control-plane/runtime/context.js +216 -0
  77. package/dist/src/control-plane/runtime/events.js +218 -0
  78. package/dist/src/control-plane/runtime/guard-types.js +6 -0
  79. package/dist/src/control-plane/runtime/guard.js +880 -0
  80. package/dist/src/control-plane/runtime/image/fingerprint-sidecar.js +1194 -0
  81. package/dist/src/control-plane/runtime/image/index.js +2255 -0
  82. package/dist/src/control-plane/runtime/image-fingerprint-sidecar.js +1191 -0
  83. package/dist/src/control-plane/runtime/image.js +2255 -0
  84. package/dist/src/control-plane/runtime/index.js +8511 -0
  85. package/dist/src/control-plane/runtime/isolation/discovery.js +599 -0
  86. package/dist/src/control-plane/runtime/isolation/home.js +1217 -0
  87. package/dist/src/control-plane/runtime/isolation/index.js +8193 -0
  88. package/dist/src/control-plane/runtime/isolation/runner.js +2651 -0
  89. package/dist/src/control-plane/runtime/isolation/shared.js +501 -0
  90. package/dist/src/control-plane/runtime/isolation/toolchain.js +1892 -0
  91. package/dist/src/control-plane/runtime/isolation/types.js +1 -0
  92. package/dist/src/control-plane/runtime/isolation/worktree.js +509 -0
  93. package/dist/src/control-plane/runtime/isolation.js +8193 -0
  94. package/dist/src/control-plane/runtime/overlay.js +67 -0
  95. package/dist/src/control-plane/runtime/plugin-mode.js +41 -0
  96. package/dist/src/control-plane/runtime/plugins.js +1131 -0
  97. package/dist/src/control-plane/runtime/provisioning-env.js +220 -0
  98. package/dist/src/control-plane/runtime/queue.js +8358 -0
  99. package/dist/src/control-plane/runtime/rig-shell.js +205 -0
  100. package/dist/src/control-plane/runtime/rig-tools.js +182 -0
  101. package/dist/src/control-plane/runtime/runner-context.js +1 -0
  102. package/dist/src/control-plane/runtime/runtime-paths.js +184 -0
  103. package/dist/src/control-plane/runtime/sandbox/backend-bwrap.js +311 -0
  104. package/dist/src/control-plane/runtime/sandbox/backend-none.js +21 -0
  105. package/dist/src/control-plane/runtime/sandbox/backend-seatbelt.js +268 -0
  106. package/dist/src/control-plane/runtime/sandbox/backend.js +1718 -0
  107. package/dist/src/control-plane/runtime/sandbox/orchestrator.js +1745 -0
  108. package/dist/src/control-plane/runtime/sandbox/utils.js +137 -0
  109. package/dist/src/control-plane/runtime/sandbox-backend-bwrap.js +311 -0
  110. package/dist/src/control-plane/runtime/sandbox-backend-none.js +21 -0
  111. package/dist/src/control-plane/runtime/sandbox-backend-seatbelt.js +268 -0
  112. package/dist/src/control-plane/runtime/sandbox-backend.js +1718 -0
  113. package/dist/src/control-plane/runtime/sandbox-orchestrator.js +1745 -0
  114. package/dist/src/control-plane/runtime/sandbox-utils.js +137 -0
  115. package/dist/src/control-plane/runtime/snapshot/index.js +454 -0
  116. package/dist/src/control-plane/runtime/snapshot/sidecar.js +502 -0
  117. package/dist/src/control-plane/runtime/snapshot/task-run.js +1578 -0
  118. package/dist/src/control-plane/runtime/snapshot-sidecar.js +498 -0
  119. package/dist/src/control-plane/runtime/snapshot.js +454 -0
  120. package/dist/src/control-plane/runtime/task-run-snapshot.js +1578 -0
  121. package/dist/src/control-plane/runtime/tool-gateway.js +422 -0
  122. package/dist/src/control-plane/runtime/tooling/browser-tools.js +32 -0
  123. package/dist/src/control-plane/runtime/tooling/claude-router-binary.js +343 -0
  124. package/dist/src/control-plane/runtime/tooling/claude-router.js +524 -0
  125. package/dist/src/control-plane/runtime/tooling/file-tools.js +182 -0
  126. package/dist/src/control-plane/runtime/tooling/gateway.js +422 -0
  127. package/dist/src/control-plane/runtime/tooling/index.js +1290 -0
  128. package/dist/src/control-plane/runtime/tooling/shell.js +205 -0
  129. package/dist/src/control-plane/runtime/types.js +1 -0
  130. package/dist/src/control-plane/setup-version.js +14 -0
  131. package/dist/src/control-plane/state-sync/index.js +1509 -0
  132. package/dist/src/control-plane/state-sync/read.js +856 -0
  133. package/dist/src/control-plane/state-sync/reconcile.js +260 -0
  134. package/dist/src/control-plane/state-sync/repo.js +302 -0
  135. package/dist/src/control-plane/state-sync/types.js +111 -0
  136. package/dist/src/control-plane/state-sync/write.js +1469 -0
  137. package/dist/src/control-plane/task-fields.js +38 -0
  138. package/dist/src/control-plane/task-source-bootstrap.js +46 -0
  139. package/dist/src/control-plane/task-source.js +30 -0
  140. package/dist/src/control-plane/tasks/legacy-task-config-source.js +130 -0
  141. package/dist/src/control-plane/tasks/plugin-task-source.js +103 -0
  142. package/dist/src/control-plane/tasks/source-aware-task-config-source.js +611 -0
  143. package/dist/src/control-plane/tasks/source-lifecycle.js +1093 -0
  144. package/dist/src/control-plane/tasks/task-record-reader.js +9 -0
  145. package/dist/src/control-plane/validators/boundary/public-apis.js +107 -0
  146. package/dist/src/control-plane/validators/integration/_shared.js +51 -0
  147. package/dist/src/control-plane/validators/integration/adm-audit-http.js +85 -0
  148. package/dist/src/control-plane/validators/integration/adm-auth-http.js +78 -0
  149. package/dist/src/control-plane/validators/integration/adm-issuer-http.js +80 -0
  150. package/dist/src/control-plane/validators/integration/adm-migration.js +78 -0
  151. package/dist/src/control-plane/validators/integration/adm-scaffold.js +78 -0
  152. package/dist/src/control-plane/validators/runtime-registration.js +64 -0
  153. package/dist/src/control-plane/validators/shared.js +683 -0
  154. package/dist/src/events.js +218 -0
  155. package/dist/src/execution.js +35 -0
  156. package/dist/src/index.js +1633 -0
  157. package/dist/src/layout.js +145 -0
  158. package/dist/src/local-server.js +202 -0
  159. package/dist/src/plugins.js +329 -0
  160. package/dist/src/remote-http.js +83 -0
  161. package/dist/src/runtime-context.js +216 -0
  162. package/dist/src/types.js +1 -0
  163. package/native/darwin-arm64/bin/rig-git +0 -0
  164. package/native/darwin-arm64/bin/rig-shell +0 -0
  165. package/native/darwin-arm64/bin/rig-tools +0 -0
  166. package/native/darwin-arm64/lib/runtime-native-darwin-arm64.dylib +0 -0
  167. package/native/darwin-arm64/lib/runtime-native.dylib +0 -0
  168. package/native/darwin-arm64/manifest.json +1 -0
  169. package/native/linux-x64/bin/rig-git +0 -0
  170. package/native/linux-x64/bin/rig-shell +0 -0
  171. package/native/linux-x64/bin/rig-tools +0 -0
  172. package/native/linux-x64/lib/runtime-native-linux-x64.so +0 -0
  173. package/native/linux-x64/lib/runtime-native.so +0 -0
  174. package/native/linux-x64/manifest.json +1 -0
  175. package/package.json +74 -0
  176. package/skills/rig-task-run.md +71 -0
@@ -0,0 +1,220 @@
1
+ // @bun
2
+ // packages/runtime/src/control-plane/runtime/provisioning-env.ts
3
+ import { delimiter, resolve as resolve2 } from "path";
4
+
5
+ // packages/runtime/src/control-plane/runtime/runtime-paths.ts
6
+ import { existsSync, readdirSync, realpathSync } from "fs";
7
+ import { resolve } from "path";
8
+
9
+ // packages/runtime/src/control-plane/runtime/sandbox/utils.ts
10
+ function uniq(values) {
11
+ return [...new Set(values)];
12
+ }
13
+ // packages/runtime/src/control-plane/runtime/runtime-paths.ts
14
+ function resolveBunBinaryPath() {
15
+ const explicit = normalizeExecutablePath(process.env.RIG_BUN_PATH?.trim());
16
+ if (explicit) {
17
+ return explicit;
18
+ }
19
+ const pathBun = normalizeExecutablePath(Bun.which("bun")?.trim());
20
+ if (pathBun && !looksLikeRuntimeGateway(pathBun)) {
21
+ return pathBun;
22
+ }
23
+ const home = process.env.HOME?.trim();
24
+ const fallbackCandidates = [
25
+ home ? resolve(home, ".bun/bin/bun") : "",
26
+ "/opt/homebrew/bin/bun",
27
+ "/usr/local/bin/bun",
28
+ "/usr/bin/bun"
29
+ ];
30
+ for (const candidate of fallbackCandidates) {
31
+ const normalized = normalizeExecutablePath(candidate);
32
+ if (normalized) {
33
+ return normalized;
34
+ }
35
+ }
36
+ const execPath = normalizeExecutablePath(process.execPath?.trim());
37
+ if (execPath && !looksLikeRuntimeGateway(execPath)) {
38
+ return execPath;
39
+ }
40
+ throw new Error("bun not found in PATH");
41
+ }
42
+ function resolveClaudeBinaryPath() {
43
+ const explicit = normalizeExecutablePath(process.env.RIG_CLAUDE_PATH?.trim());
44
+ if (explicit) {
45
+ return explicit;
46
+ }
47
+ const pathClaude = normalizeExecutablePath(Bun.which("claude")?.trim());
48
+ if (pathClaude && !looksLikeRuntimeGateway(pathClaude)) {
49
+ return pathClaude;
50
+ }
51
+ const home = process.env.HOME?.trim();
52
+ const fallbackCandidates = [
53
+ home ? resolve(home, ".local/bin/claude") : "",
54
+ home ? resolve(home, ".local/share/claude/local/claude") : "",
55
+ "/opt/homebrew/bin/claude",
56
+ "/usr/local/bin/claude",
57
+ "/usr/bin/claude"
58
+ ];
59
+ for (const candidate of fallbackCandidates) {
60
+ const normalized = normalizeExecutablePath(candidate);
61
+ if (normalized) {
62
+ return normalized;
63
+ }
64
+ }
65
+ throw new Error("claude not found in PATH");
66
+ }
67
+ function resolveBunInstallDir(bunBinaryPath = resolveBunBinaryPath()) {
68
+ return resolve(bunBinaryPath, "../..");
69
+ }
70
+ function resolveClaudeInstallDir() {
71
+ const realPath = resolveClaudeBinaryPath();
72
+ return resolve(realPath, "..");
73
+ }
74
+ function resolveNodeInstallDir() {
75
+ const preferredNode = resolvePreferredNodeBinary();
76
+ if (!preferredNode)
77
+ return null;
78
+ const explicitNode = process.env.RIG_NODE_BIN?.trim();
79
+ if (explicitNode && resolve(explicitNode) === resolve(preferredNode)) {
80
+ return preferredNode.endsWith("/bin/node") ? resolve(preferredNode, "../..") : resolve(preferredNode, "..");
81
+ }
82
+ try {
83
+ const realPath = realpathSync(preferredNode);
84
+ if (realPath.endsWith("/bin/node")) {
85
+ return resolve(realPath, "../..");
86
+ }
87
+ return resolve(realPath, "..");
88
+ } catch {
89
+ return resolve(preferredNode, "..");
90
+ }
91
+ }
92
+ function resolvePreferredNodeBinary() {
93
+ const candidates = [];
94
+ const envNode = process.env.RIG_NODE_BIN?.trim();
95
+ if (envNode) {
96
+ const explicit = resolve(envNode);
97
+ if (existsSync(explicit)) {
98
+ return explicit;
99
+ }
100
+ }
101
+ const nvmBin = process.env.NVM_BIN?.trim();
102
+ if (nvmBin) {
103
+ candidates.push(resolve(nvmBin, "node"));
104
+ }
105
+ const home = process.env.HOME?.trim();
106
+ if (home) {
107
+ const nvmVersionsDir = resolve(home, ".nvm/versions/node");
108
+ if (existsSync(nvmVersionsDir)) {
109
+ try {
110
+ const versionDirs = readdirSync(nvmVersionsDir).map((entry) => entry.trim()).filter((entry) => /^v\d+\.\d+\.\d+$/.test(entry)).sort((a, b) => Bun.semver.order(b.replace(/^v/, ""), a.replace(/^v/, "")));
111
+ for (const versionDir of versionDirs) {
112
+ candidates.push(resolve(nvmVersionsDir, versionDir, "bin/node"));
113
+ }
114
+ } catch {}
115
+ }
116
+ }
117
+ const whichNode = Bun.which("node");
118
+ if (whichNode) {
119
+ candidates.push(whichNode);
120
+ }
121
+ const deduped = uniq(candidates.map((candidate) => resolve(candidate)));
122
+ const existing = deduped.filter((candidate) => existsSync(candidate));
123
+ if (existing.length === 0) {
124
+ return null;
125
+ }
126
+ const stable = existing.find((candidate) => {
127
+ const major = inferNodeMajor(candidate);
128
+ return typeof major === "number" && major >= 18 && major <= 24;
129
+ });
130
+ if (stable) {
131
+ return stable;
132
+ }
133
+ return existing[0] ?? null;
134
+ }
135
+ function inferNodeMajor(nodeBinaryPath) {
136
+ const normalized = resolve(nodeBinaryPath).replace(/\\/g, "/");
137
+ const match = normalized.match(/(?:^|\/)(?:node-)?v?(\d+)\.\d+\.\d+(?:\/|$)/);
138
+ if (!match) {
139
+ return null;
140
+ }
141
+ const major = Number.parseInt(match[1], 10);
142
+ return Number.isFinite(major) ? major : null;
143
+ }
144
+ function normalizeExecutablePath(candidate) {
145
+ if (!candidate) {
146
+ return "";
147
+ }
148
+ const normalized = resolve(candidate);
149
+ if (!existsSync(normalized)) {
150
+ return "";
151
+ }
152
+ try {
153
+ return realpathSync(normalized);
154
+ } catch {
155
+ return normalized;
156
+ }
157
+ }
158
+ function looksLikeRuntimeGateway(candidate) {
159
+ const normalized = resolve(candidate).replace(/\\/g, "/");
160
+ return normalized.includes("/.rig/bin/") || normalized.endsWith("/rig-shell") || normalized.endsWith("/rig-agent");
161
+ }
162
+
163
+ // packages/runtime/src/control-plane/runtime/provisioning-env.ts
164
+ function runtimeProvisioningEnv(baseEnv = process.env) {
165
+ const env = { ...baseEnv };
166
+ const realBash = baseEnv.RIG_REAL_BASH?.trim() || "/bin/bash";
167
+ const bunBinary = baseEnv.RIG_BUN_PATH?.trim() || resolveBunBinaryPath();
168
+ const bunDir = resolveBunInstallDir(bunBinary);
169
+ const claudeBinary = baseEnv.RIG_CLAUDE_PATH?.trim() || (() => {
170
+ try {
171
+ return resolveClaudeBinaryPath();
172
+ } catch {
173
+ return "";
174
+ }
175
+ })();
176
+ const claudeDir = claudeBinary ? (() => {
177
+ try {
178
+ return resolveClaudeInstallDir();
179
+ } catch {
180
+ return resolve2(claudeBinary, "..");
181
+ }
182
+ })() : "";
183
+ const nodeDir = resolveNodeInstallDir();
184
+ const realHome = baseEnv.HOME?.trim();
185
+ const inheritedPath = (baseEnv.PATH ?? "").split(delimiter).map((entry) => entry.trim()).filter(Boolean).filter((entry) => !entry.endsWith("/.rig/bin") && !entry.endsWith("/rig/tools"));
186
+ const pathEntries = [
187
+ `${bunDir}/bin`,
188
+ claudeDir,
189
+ nodeDir ? `${nodeDir}/bin` : "",
190
+ realHome ? resolve2(realHome, ".local/bin") : "",
191
+ realHome ? resolve2(realHome, ".cargo/bin") : "",
192
+ ...inheritedPath,
193
+ "/usr/local/bin",
194
+ "/usr/local/sbin",
195
+ "/opt/homebrew/bin",
196
+ "/opt/homebrew/sbin",
197
+ "/usr/bin",
198
+ "/bin",
199
+ "/usr/sbin",
200
+ "/sbin"
201
+ ].filter(Boolean);
202
+ env.BASH = realBash;
203
+ env.SHELL = baseEnv.SHELL?.trim() || realBash;
204
+ env.PATH = [...new Set(pathEntries)].join(delimiter);
205
+ env.RIG_BUN_PATH = bunBinary;
206
+ if (claudeBinary) {
207
+ env.RIG_CLAUDE_PATH = claudeBinary;
208
+ }
209
+ env.PYTHON = env.PYTHON?.trim() || "python3";
210
+ const nodeGypPath = Bun.which("node-gyp");
211
+ if (nodeGypPath) {
212
+ env.npm_config_node_gyp = nodeGypPath;
213
+ }
214
+ delete env.RIG_BASH_ACTIVE;
215
+ delete env.RIG_BASH_MODE;
216
+ return env;
217
+ }
218
+ export {
219
+ runtimeProvisioningEnv
220
+ };