agent-board-runner 0.1.15 → 0.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +21 -8
- package/dist/index.js +21 -8
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -2840,6 +2840,7 @@ var OUTPUT_TAIL_CHARS = 2e4;
|
|
|
2840
2840
|
var COMMAND_TIMEOUT_MS = 5 * 60 * 1e3;
|
|
2841
2841
|
var MAX_BUFFER = 10 * 1024 * 1024;
|
|
2842
2842
|
var SECRET_PLACEHOLDER_RE = /\{\{secret:([A-Z][A-Z0-9_]*)\}\}/g;
|
|
2843
|
+
var SECRET_ENV_PLACEHOLDER_RE = /^\{\{secret_env:([A-Z][A-Z0-9_]*)\}\}$/;
|
|
2843
2844
|
function isRunProjectCommandPayload(value) {
|
|
2844
2845
|
if (!value || typeof value !== "object") return false;
|
|
2845
2846
|
const candidate = value;
|
|
@@ -2855,14 +2856,26 @@ async function runProjectCommand(supabase, config, payload) {
|
|
|
2855
2856
|
if (!registered) throw new Error("This runner does not have that project registered.");
|
|
2856
2857
|
const secretsEnv = await resolveProjectSecretsEnv(supabase, projectId, null);
|
|
2857
2858
|
const referencedSecretNames = /* @__PURE__ */ new Set();
|
|
2858
|
-
const resolvedArgv =
|
|
2859
|
-
|
|
2860
|
-
|
|
2861
|
-
|
|
2859
|
+
const resolvedArgv = [];
|
|
2860
|
+
for (const part of argv) {
|
|
2861
|
+
const envOnlyMatch = part.match(SECRET_ENV_PLACEHOLDER_RE);
|
|
2862
|
+
if (envOnlyMatch) {
|
|
2863
|
+
const name = envOnlyMatch[1];
|
|
2864
|
+
if (secretsEnv[name] === void 0) throw new Error(`Secret "${name}" referenced by this command is no longer configured for this project.`);
|
|
2862
2865
|
referencedSecretNames.add(name);
|
|
2863
|
-
|
|
2864
|
-
}
|
|
2865
|
-
|
|
2866
|
+
continue;
|
|
2867
|
+
}
|
|
2868
|
+
resolvedArgv.push(
|
|
2869
|
+
part.replace(SECRET_PLACEHOLDER_RE, (_match, name) => {
|
|
2870
|
+
const value = secretsEnv[name];
|
|
2871
|
+
if (value === void 0) throw new Error(`Secret "${name}" referenced by this command is no longer configured for this project.`);
|
|
2872
|
+
referencedSecretNames.add(name);
|
|
2873
|
+
return value;
|
|
2874
|
+
})
|
|
2875
|
+
);
|
|
2876
|
+
}
|
|
2877
|
+
const secretEnv = { ...process.env };
|
|
2878
|
+
for (const name of referencedSecretNames) secretEnv[name] = secretsEnv[name];
|
|
2866
2879
|
function redact(text) {
|
|
2867
2880
|
let redacted = text;
|
|
2868
2881
|
for (const name of referencedSecretNames) {
|
|
@@ -2874,7 +2887,7 @@ async function runProjectCommand(supabase, config, payload) {
|
|
|
2874
2887
|
try {
|
|
2875
2888
|
const { stdout, stderr } = await execFileAsync4(resolvedArgv[0], resolvedArgv.slice(1), {
|
|
2876
2889
|
cwd: registered.repoPath,
|
|
2877
|
-
env:
|
|
2890
|
+
env: secretEnv,
|
|
2878
2891
|
timeout: COMMAND_TIMEOUT_MS,
|
|
2879
2892
|
maxBuffer: MAX_BUFFER
|
|
2880
2893
|
});
|
package/dist/index.js
CHANGED
|
@@ -2728,6 +2728,7 @@ var OUTPUT_TAIL_CHARS = 2e4;
|
|
|
2728
2728
|
var COMMAND_TIMEOUT_MS = 5 * 60 * 1e3;
|
|
2729
2729
|
var MAX_BUFFER = 10 * 1024 * 1024;
|
|
2730
2730
|
var SECRET_PLACEHOLDER_RE = /\{\{secret:([A-Z][A-Z0-9_]*)\}\}/g;
|
|
2731
|
+
var SECRET_ENV_PLACEHOLDER_RE = /^\{\{secret_env:([A-Z][A-Z0-9_]*)\}\}$/;
|
|
2731
2732
|
function isRunProjectCommandPayload(value) {
|
|
2732
2733
|
if (!value || typeof value !== "object") return false;
|
|
2733
2734
|
const candidate = value;
|
|
@@ -2743,14 +2744,26 @@ async function runProjectCommand(supabase, config, payload) {
|
|
|
2743
2744
|
if (!registered) throw new Error("This runner does not have that project registered.");
|
|
2744
2745
|
const secretsEnv = await resolveProjectSecretsEnv(supabase, projectId, null);
|
|
2745
2746
|
const referencedSecretNames = /* @__PURE__ */ new Set();
|
|
2746
|
-
const resolvedArgv =
|
|
2747
|
-
|
|
2748
|
-
|
|
2749
|
-
|
|
2747
|
+
const resolvedArgv = [];
|
|
2748
|
+
for (const part of argv) {
|
|
2749
|
+
const envOnlyMatch = part.match(SECRET_ENV_PLACEHOLDER_RE);
|
|
2750
|
+
if (envOnlyMatch) {
|
|
2751
|
+
const name = envOnlyMatch[1];
|
|
2752
|
+
if (secretsEnv[name] === void 0) throw new Error(`Secret "${name}" referenced by this command is no longer configured for this project.`);
|
|
2750
2753
|
referencedSecretNames.add(name);
|
|
2751
|
-
|
|
2752
|
-
}
|
|
2753
|
-
|
|
2754
|
+
continue;
|
|
2755
|
+
}
|
|
2756
|
+
resolvedArgv.push(
|
|
2757
|
+
part.replace(SECRET_PLACEHOLDER_RE, (_match, name) => {
|
|
2758
|
+
const value = secretsEnv[name];
|
|
2759
|
+
if (value === void 0) throw new Error(`Secret "${name}" referenced by this command is no longer configured for this project.`);
|
|
2760
|
+
referencedSecretNames.add(name);
|
|
2761
|
+
return value;
|
|
2762
|
+
})
|
|
2763
|
+
);
|
|
2764
|
+
}
|
|
2765
|
+
const secretEnv = { ...process.env };
|
|
2766
|
+
for (const name of referencedSecretNames) secretEnv[name] = secretsEnv[name];
|
|
2754
2767
|
function redact(text) {
|
|
2755
2768
|
let redacted = text;
|
|
2756
2769
|
for (const name of referencedSecretNames) {
|
|
@@ -2762,7 +2775,7 @@ async function runProjectCommand(supabase, config, payload) {
|
|
|
2762
2775
|
try {
|
|
2763
2776
|
const { stdout, stderr } = await execFileAsync4(resolvedArgv[0], resolvedArgv.slice(1), {
|
|
2764
2777
|
cwd: registered.repoPath,
|
|
2765
|
-
env:
|
|
2778
|
+
env: secretEnv,
|
|
2766
2779
|
timeout: COMMAND_TIMEOUT_MS,
|
|
2767
2780
|
maxBuffer: MAX_BUFFER
|
|
2768
2781
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-board-runner",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.16",
|
|
4
4
|
"description": "Local runner for Agent Board — signs in with your own Supabase account (no shared secrets) and drives Claude Code against repos under your local repos root.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|