@goah/cli 0.8.0 → 0.9.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.
- package/dist/cli.js +13 -75
- package/dist/cli.js.map +1 -1
- package/dist/control.d.ts +13 -2
- package/dist/control.d.ts.map +1 -1
- package/dist/control.js +18 -7
- package/dist/control.js.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -25
- package/dist/index.js.map +1 -1
- package/dist/live-config.d.ts +12 -0
- package/dist/live-config.d.ts.map +1 -0
- package/dist/live-config.js +33 -0
- package/dist/live-config.js.map +1 -0
- package/dist/prompt-queue.d.ts +13 -0
- package/dist/prompt-queue.d.ts.map +1 -0
- package/dist/prompt-queue.js +30 -0
- package/dist/prompt-queue.js.map +1 -0
- package/dist/setup-wizard.d.ts +10 -0
- package/dist/setup-wizard.d.ts.map +1 -0
- package/dist/setup-wizard.js +134 -0
- package/dist/setup-wizard.js.map +1 -0
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +40 -6
- package/dist/tui.js.map +1 -1
- package/dist/welcome.d.ts +24 -0
- package/dist/welcome.d.ts.map +1 -0
- package/dist/welcome.js +63 -0
- package/dist/welcome.js.map +1 -0
- package/node_modules/goah-runner-pi/dist/env-spec.d.ts +16 -0
- package/node_modules/goah-runner-pi/dist/env-spec.d.ts.map +1 -0
- package/node_modules/goah-runner-pi/dist/env-spec.js +87 -0
- package/node_modules/goah-runner-pi/dist/env-spec.js.map +1 -0
- package/node_modules/goah-runner-pi/dist/index.d.ts +3 -0
- package/node_modules/goah-runner-pi/dist/index.d.ts.map +1 -1
- package/node_modules/goah-runner-pi/dist/index.js +4 -2
- package/node_modules/goah-runner-pi/dist/index.js.map +1 -1
- package/node_modules/goah-runner-pi/dist/test-helpers.d.ts +4 -0
- package/node_modules/goah-runner-pi/dist/test-helpers.d.ts.map +1 -0
- package/node_modules/goah-runner-pi/dist/test-helpers.js +10 -0
- package/node_modules/goah-runner-pi/dist/test-helpers.js.map +1 -0
- package/node_modules/goah-supervisor/dist/index.d.ts +8 -1
- package/node_modules/goah-supervisor/dist/index.d.ts.map +1 -1
- package/node_modules/goah-supervisor/dist/index.js +15 -2
- package/node_modules/goah-supervisor/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live config mutation: edit goah.config.json in place, then ask the resident
|
|
3
|
+
* daemon to reload (config.reload swaps the runner; spawn-time env resolution
|
|
4
|
+
* applies new values to the next wake).
|
|
5
|
+
*/
|
|
6
|
+
import { readFileSync, writeFileSync } from "node:fs";
|
|
7
|
+
import { resolve } from "node:path";
|
|
8
|
+
import { requestControl } from "./control.js";
|
|
9
|
+
export function readRunnerEnv(configPath) {
|
|
10
|
+
const config = JSON.parse(readFileSync(resolve(configPath), "utf8"));
|
|
11
|
+
return config.runner?.env ?? {};
|
|
12
|
+
}
|
|
13
|
+
function writeRunnerEnv(configPath, env) {
|
|
14
|
+
const config = JSON.parse(readFileSync(resolve(configPath), "utf8"));
|
|
15
|
+
config.runner.env = env;
|
|
16
|
+
writeFileSync(resolve(configPath), `${JSON.stringify(config, null, 2)}\n`);
|
|
17
|
+
}
|
|
18
|
+
/** Switch the model for this workspace and reload the daemon. Returns the reload outcome. */
|
|
19
|
+
export async function switchModel(configPath, stateDir, model) {
|
|
20
|
+
const env = readRunnerEnv(configPath);
|
|
21
|
+
if (!model.trim())
|
|
22
|
+
throw new Error("model id is required");
|
|
23
|
+
writeRunnerEnv(configPath, { ...env, GOAH_PI_MODEL: model.trim() });
|
|
24
|
+
const outcome = await requestControl(stateDir, { op: "config.reload", configPath: resolve(configPath) }).catch((error) => ({ reloaded: false, error: error instanceof Error ? error.message : String(error) }));
|
|
25
|
+
const reloaded = Boolean(outcome.reloaded);
|
|
26
|
+
return reloaded ? `model switched to ${model.trim()} — applies to the next wake` : `model written to ${resolve(configPath)}; daemon reload failed (${String(outcome.error ?? "daemon not running")}), it will pick up on next start`;
|
|
27
|
+
}
|
|
28
|
+
/** Reload the daemon config after an external edit (e.g. the setup wizard rewrote it). */
|
|
29
|
+
export async function reloadDaemon(stateDir, configPath) {
|
|
30
|
+
const outcome = await requestControl(stateDir, { op: "config.reload", configPath: resolve(configPath) }).catch(() => null);
|
|
31
|
+
return Boolean(outcome?.reloaded);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=live-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-config.js","sourceRoot":"","sources":["../src/live-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAI9C,MAAM,UAAU,aAAa,CAAC,UAAkB;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAqC,CAAC;IACzG,OAAO,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,cAAc,CAAC,UAAkB,EAAE,GAAc;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAoC,CAAC;IACxG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;IACxB,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7E,CAAC;AAED,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAAkB,EAAE,QAAgB,EAAE,KAAa;IACnF,MAAM,GAAG,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC3D,cAAc,CAAC,UAAU,EAAE,EAAE,GAAG,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACzN,MAAM,QAAQ,GAAG,OAAO,CAAE,OAAkC,CAAC,QAAQ,CAAC,CAAC;IACvE,OAAO,QAAQ,CAAC,CAAC,CAAC,qBAAqB,KAAK,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC,CAAC,oBAAoB,OAAO,CAAC,UAAU,CAAC,2BAA2B,MAAM,CAAE,OAA8B,CAAC,KAAK,IAAI,oBAAoB,CAAC,kCAAkC,CAAC;AAC/P,CAAC;AAED,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,UAAkB;IACrE,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3H,OAAO,OAAO,CAAE,OAAyC,EAAE,QAAQ,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type Interface as ReadlineInterface } from "node:readline";
|
|
2
|
+
/**
|
|
3
|
+
* Prompt queue over readline 'line' events. readline/promises `question()` loses lines that arrive
|
|
4
|
+
* between awaits under piped input (same-tick chunks race the next listener registration), so
|
|
5
|
+
* onboarding buffers lines itself.
|
|
6
|
+
*/
|
|
7
|
+
export declare function lineQueue(input: ReadlineInterface): ((prompt: string) => Promise<string>) & {
|
|
8
|
+
close(): void;
|
|
9
|
+
};
|
|
10
|
+
export declare function stdioQueue(): ((prompt: string) => Promise<string>) & {
|
|
11
|
+
close(): void;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=prompt-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-queue.d.ts","sourceRoot":"","sources":["../src/prompt-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAErF;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG;IAAE,KAAK,IAAI,IAAI,CAAA;CAAE,CAc7G;AAED,wBAAgB,UAAU,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG;IAAE,KAAK,IAAI,IAAI,CAAA;CAAE,CAEtF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { createInterface } from "node:readline";
|
|
2
|
+
/**
|
|
3
|
+
* Prompt queue over readline 'line' events. readline/promises `question()` loses lines that arrive
|
|
4
|
+
* between awaits under piped input (same-tick chunks race the next listener registration), so
|
|
5
|
+
* onboarding buffers lines itself.
|
|
6
|
+
*/
|
|
7
|
+
export function lineQueue(input) {
|
|
8
|
+
const buffered = [];
|
|
9
|
+
const waiters = [];
|
|
10
|
+
input.on("line", (line) => { const waiter = waiters.shift(); if (waiter)
|
|
11
|
+
waiter(line);
|
|
12
|
+
else
|
|
13
|
+
buffered.push(line); });
|
|
14
|
+
const ask = (prompt) => {
|
|
15
|
+
input.setPrompt(prompt);
|
|
16
|
+
input.prompt();
|
|
17
|
+
const { promise, resolve } = Promise.withResolvers();
|
|
18
|
+
const bufferedLine = buffered.shift();
|
|
19
|
+
if (bufferedLine !== undefined)
|
|
20
|
+
resolve(bufferedLine);
|
|
21
|
+
else
|
|
22
|
+
waiters.push(resolve);
|
|
23
|
+
return promise;
|
|
24
|
+
};
|
|
25
|
+
return Object.assign(ask, { close: () => input.close() });
|
|
26
|
+
}
|
|
27
|
+
export function stdioQueue() {
|
|
28
|
+
return lineQueue(createInterface({ input: process.stdin, output: process.stdout, terminal: false }));
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=prompt-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-queue.js","sourceRoot":"","sources":["../src/prompt-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAuC,MAAM,eAAe,CAAC;AAErF;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAAwB;IAChD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAkC,EAAE,CAAC;IAClD,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,GAAG,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,CAAC;;QAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5H,MAAM,GAAG,GAAG,CAAC,MAAc,EAAmB,EAAE;QAC9C,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxB,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,EAAU,CAAC;QAC7D,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO,CAAC,YAAY,CAAC,CAAC;;YACjD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,SAAS,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACvG,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type InitOptions } from "./index.js";
|
|
2
|
+
interface WizardResult {
|
|
3
|
+
options: InitOptions;
|
|
4
|
+
}
|
|
5
|
+
/** Interactive or piped setup wizard. Returns the options that were persisted. */
|
|
6
|
+
export declare function runSetupWizard(existing: InitOptions | null): Promise<WizardResult>;
|
|
7
|
+
/** Persist the wizard result and (optionally) materialize this directory's workspace config. */
|
|
8
|
+
export declare function applyWizardResult(result: WizardResult, configPath: string | null): void;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=setup-wizard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"AASA,OAAO,EAA2C,KAAK,WAAW,EAAmB,MAAM,YAAY,CAAC;AAGxG,UAAU,YAAY;IAAG,OAAO,EAAE,WAAW,CAAA;CAAE;AAa/C,kFAAkF;AAClF,wBAAsB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAoExF;AA4BD,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAIvF"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `goah setup` — interactive TUI wizard (pi-style first-time-setup, omp-style scenes).
|
|
3
|
+
*
|
|
4
|
+
* Scenes: provider → model → key env (provider-dependent) → confirm. Writes the
|
|
5
|
+
* global profile (~/.goah/profile.json) and, for a workspace bootstrap, the
|
|
6
|
+
* local goah.config.json. Falls back to line-queue prompts when stdin/stdout
|
|
7
|
+
* are not a TTY, so onboarding also works over pipes and in CI.
|
|
8
|
+
*/
|
|
9
|
+
import { TUI, Text, Input, ProcessTerminal } from "@mariozechner/pi-tui";
|
|
10
|
+
import { writeDefaultProfile, writeDefaultConfig } from "./index.js";
|
|
11
|
+
import { stdioQueue } from "./prompt-queue.js";
|
|
12
|
+
const PROVIDERS = [
|
|
13
|
+
{ value: "anthropic", label: "anthropic", description: "Claude models via ANTHROPIC_API_KEY" },
|
|
14
|
+
{ value: "openai", label: "openai", description: "OpenAI models via OPENAI_API_KEY" },
|
|
15
|
+
{ value: "ark-coding", label: "ark-coding", description: "Volcano Ark coding plans (explicit context/output limits)" },
|
|
16
|
+
{ value: "faux", label: "faux", description: "Offline simulated runner for smoke tests" },
|
|
17
|
+
];
|
|
18
|
+
const KNOWN_MODELS = {
|
|
19
|
+
anthropic: ["claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5"],
|
|
20
|
+
};
|
|
21
|
+
/** Interactive or piped setup wizard. Returns the options that were persisted. */
|
|
22
|
+
export async function runSetupWizard(existing) {
|
|
23
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY)
|
|
24
|
+
return runPipedWizard();
|
|
25
|
+
const terminal = new ProcessTerminal();
|
|
26
|
+
const tui = new TUI(terminal);
|
|
27
|
+
const view = new Text("");
|
|
28
|
+
const input = new Input();
|
|
29
|
+
const { promise: done, resolve: resolveDone } = Promise.withResolvers();
|
|
30
|
+
tui.addChild(view);
|
|
31
|
+
tui.addChild(input);
|
|
32
|
+
tui.setFocus(input);
|
|
33
|
+
let answerLine = null;
|
|
34
|
+
input.onSubmit = (line) => { input.setValue(""); const deliver = answerLine; answerLine = null; deliver?.(line.trim()); };
|
|
35
|
+
const ask = (prompt) => {
|
|
36
|
+
const { promise, resolve: answer } = Promise.withResolvers();
|
|
37
|
+
answerLine = answer;
|
|
38
|
+
view.setText(prompt);
|
|
39
|
+
tui.requestRender();
|
|
40
|
+
return promise;
|
|
41
|
+
};
|
|
42
|
+
const choose = (prompt, options, descriptions) => {
|
|
43
|
+
const numbered = [prompt, "", ...options.map((option, index) => `${index + 1}. ${option} — ${descriptions[index] ?? ""}`), "", `enter a number 1-${options.length}: `].join("\n");
|
|
44
|
+
return (async () => {
|
|
45
|
+
while (true) {
|
|
46
|
+
const answer = await ask(numbered);
|
|
47
|
+
const parsed = Number(answer);
|
|
48
|
+
if (Number.isInteger(parsed) && parsed >= 1 && parsed <= options.length)
|
|
49
|
+
return parsed - 1;
|
|
50
|
+
}
|
|
51
|
+
})();
|
|
52
|
+
};
|
|
53
|
+
void (async () => {
|
|
54
|
+
try {
|
|
55
|
+
const providerIndex = await choose("Choose a provider", PROVIDERS.map((entry) => entry.label), PROVIDERS.map((entry) => entry.description));
|
|
56
|
+
const provider = PROVIDERS[providerIndex].value;
|
|
57
|
+
const known = KNOWN_MODELS[provider] ?? [];
|
|
58
|
+
let model = "";
|
|
59
|
+
if (known.length > 0) {
|
|
60
|
+
const modelIndex = await choose(`Choose a ${provider} model (or type its id at the next prompt)`, [...known, "other…"], []);
|
|
61
|
+
model = modelIndex < known.length ? known[modelIndex] : await ask("model id: ");
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
model = await ask("model id: ");
|
|
65
|
+
}
|
|
66
|
+
if (!model)
|
|
67
|
+
throw new Error("model is required");
|
|
68
|
+
const options = { provider, model };
|
|
69
|
+
if (provider !== "faux") {
|
|
70
|
+
const destination = provider === "anthropic" ? "ANTHROPIC_API_KEY" : provider === "openai" ? "OPENAI_API_KEY" : "ARK_API_KEY";
|
|
71
|
+
const apiKeyEnv = await ask(`environment variable holding the API key (default ${destination}): `);
|
|
72
|
+
options.apiKeyEnv = apiKeyEnv && /^[A-Z_][A-Z0-9_]*$/.test(apiKeyEnv) ? apiKeyEnv : destination;
|
|
73
|
+
}
|
|
74
|
+
if (provider === "ark-coding") {
|
|
75
|
+
const contextWindowTokens = Number(await ask("context window tokens (e.g. 256000): "));
|
|
76
|
+
const maxOutputTokensPerTurn = Number(await ask("max output tokens per turn (e.g. 32000): "));
|
|
77
|
+
if (!Number.isInteger(contextWindowTokens) || contextWindowTokens <= 0 || !Number.isInteger(maxOutputTokensPerTurn) || maxOutputTokensPerTurn <= 0)
|
|
78
|
+
throw new Error("ark-coding requires integer context-window and max-output tokens");
|
|
79
|
+
options.contextWindowTokens = contextWindowTokens;
|
|
80
|
+
options.maxOutputTokensPerTurn = maxOutputTokensPerTurn;
|
|
81
|
+
}
|
|
82
|
+
view.setText([`Profile summary`, "", ` provider: ${provider}`, ` model: ${model}`, ...(options.apiKeyEnv ? [` key env: ${options.apiKeyEnv}`] : []), ...(options.contextWindowTokens ? [` context: ${options.contextWindowTokens}`, ` output: ${options.maxOutputTokensPerTurn}`] : []), "", "Saving…"].join("\n"));
|
|
83
|
+
tui.requestRender();
|
|
84
|
+
resolveDone({ options });
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
view.setText(`! ${error instanceof Error ? error.message : String(error)}`);
|
|
88
|
+
tui.requestRender();
|
|
89
|
+
resolveDone({ options: {} });
|
|
90
|
+
}
|
|
91
|
+
})();
|
|
92
|
+
tui.start();
|
|
93
|
+
const result = await done;
|
|
94
|
+
tui.stop();
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
/** Non-TTY fallback: sequential numbered prompts through the shared line queue in cli.ts semantics. */
|
|
98
|
+
async function runPipedWizard() {
|
|
99
|
+
const ask = stdioQueue();
|
|
100
|
+
try {
|
|
101
|
+
const providerIndex = await ask(`${PROVIDERS.map((entry, index) => `${index + 1}) ${entry.label}`).join(" ")} — pick 1-${PROVIDERS.length}: `);
|
|
102
|
+
const provider = PROVIDERS[Math.max(0, Math.min(PROVIDERS.length - 1, Number(providerIndex) - 1))].value;
|
|
103
|
+
const model = await ask("model id: ");
|
|
104
|
+
if (!model)
|
|
105
|
+
return { options: {} };
|
|
106
|
+
const options = { provider, model };
|
|
107
|
+
if (provider !== "faux") {
|
|
108
|
+
const destination = provider === "anthropic" ? "ANTHROPIC_API_KEY" : provider === "openai" ? "OPENAI_API_KEY" : "ARK_API_KEY";
|
|
109
|
+
const apiKeyEnv = await ask(`API key environment variable (default ${destination}): `);
|
|
110
|
+
options.apiKeyEnv = apiKeyEnv && /^[A-Z_][A-Z0-9_]*$/.test(apiKeyEnv) ? apiKeyEnv : destination;
|
|
111
|
+
}
|
|
112
|
+
if (provider === "ark-coding") {
|
|
113
|
+
const contextWindowTokens = Number(await ask("context window tokens: "));
|
|
114
|
+
const maxOutputTokensPerTurn = Number(await ask("max output tokens per turn: "));
|
|
115
|
+
if (Number.isInteger(contextWindowTokens) && contextWindowTokens > 0 && Number.isInteger(maxOutputTokensPerTurn) && maxOutputTokensPerTurn > 0) {
|
|
116
|
+
options.contextWindowTokens = contextWindowTokens;
|
|
117
|
+
options.maxOutputTokensPerTurn = maxOutputTokensPerTurn;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return { options };
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
ask.close();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/** Persist the wizard result and (optionally) materialize this directory's workspace config. */
|
|
127
|
+
export function applyWizardResult(result, configPath) {
|
|
128
|
+
if (!result.options.provider)
|
|
129
|
+
throw new Error("setup was cancelled; no profile written");
|
|
130
|
+
writeDefaultProfile(result.options);
|
|
131
|
+
if (configPath)
|
|
132
|
+
writeDefaultConfig(configPath, result.options);
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=setup-wizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"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"}
|
package/dist/tui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAYA,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAmDnH"}
|
package/dist/tui.js
CHANGED
|
@@ -2,16 +2,20 @@
|
|
|
2
2
|
import { TUI, Text, Input, ProcessTerminal } from "@mariozechner/pi-tui";
|
|
3
3
|
import { controlAvailable, requestControl, streamControl } from "./control.js";
|
|
4
4
|
import { readConsoleMetadata } from "./index.js";
|
|
5
|
+
import { switchModel, reloadDaemon, readRunnerEnv } from "./live-config.js";
|
|
6
|
+
import { welcomeSnapshot, renderWelcome } from "./welcome.js";
|
|
7
|
+
import { runSetupWizard, applyWizardResult } from "./setup-wizard.js";
|
|
5
8
|
import { spawn } from "node:child_process";
|
|
6
9
|
import { resolve } from "node:path";
|
|
7
10
|
export async function runGoahTui(configPath, stateDir, initialMessage) {
|
|
8
11
|
if (!process.stdout.isTTY || !process.stdin.isTTY)
|
|
9
12
|
return runNonInteractive(configPath, stateDir, initialMessage);
|
|
13
|
+
const runnerEnv = readRunnerEnv(configPath);
|
|
14
|
+
const snapshot = welcomeSnapshot(stateDir, runnerEnv);
|
|
15
|
+
const transcript = renderWelcome(snapshot, snapshot.handoffs.length > 0);
|
|
10
16
|
await ensureDaemon(configPath, stateDir);
|
|
11
|
-
const { promise: exited, resolve: resolveExit } = Promise.withResolvers();
|
|
12
17
|
const terminal = new ProcessTerminal();
|
|
13
18
|
const tui = new TUI(terminal);
|
|
14
|
-
const transcript = ["Goah CEO — type a goal or message. /status inspects, /quit exits."];
|
|
15
19
|
const transcriptView = new Text(transcript.join("\n"));
|
|
16
20
|
const input = new Input();
|
|
17
21
|
const busy = { active: false };
|
|
@@ -49,18 +53,23 @@ export async function runGoahTui(configPath, stateDir, initialMessage) {
|
|
|
49
53
|
void printStatus(stateDir, push);
|
|
50
54
|
return;
|
|
51
55
|
}
|
|
52
|
-
if (text.startsWith("/
|
|
53
|
-
void
|
|
56
|
+
if (text.startsWith("/model ")) {
|
|
57
|
+
void switchModelCommand(text, configPath, stateDir, push);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (text === "/setup") {
|
|
61
|
+
void runSetupReload(configPath, stateDir, push);
|
|
54
62
|
return;
|
|
55
63
|
}
|
|
56
|
-
if (text.startsWith("/
|
|
57
|
-
void
|
|
64
|
+
if (text.startsWith("/goal ") || text.startsWith("/observe ")) {
|
|
65
|
+
void slashGoal(text, stateDir, push);
|
|
58
66
|
return;
|
|
59
67
|
}
|
|
60
68
|
};
|
|
61
69
|
tui.addChild(transcriptView);
|
|
62
70
|
tui.addChild(input);
|
|
63
71
|
tui.setFocus(input);
|
|
72
|
+
const { promise: exited, resolve: resolveExit } = Promise.withResolvers();
|
|
64
73
|
tui.start();
|
|
65
74
|
if (initialMessage)
|
|
66
75
|
void send(initialMessage);
|
|
@@ -215,4 +224,29 @@ function messageText(value) {
|
|
|
215
224
|
.filter(Boolean)
|
|
216
225
|
.join("\n");
|
|
217
226
|
}
|
|
227
|
+
/** /model ID — write config and hot-reload the daemon runner. */
|
|
228
|
+
async function switchModelCommand(text, configPath, stateDir, push) {
|
|
229
|
+
const model = text.slice(7).trim();
|
|
230
|
+
if (!model) {
|
|
231
|
+
push("! usage: /model MODEL_ID");
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
try {
|
|
235
|
+
push(await switchModel(configPath, stateDir, model));
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
push(`! ${error instanceof Error ? error.message : String(error)}`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
/** /setup — re-enter the wizard, then reload the daemon so changes apply to the next wake. */
|
|
242
|
+
async function runSetupReload(configPath, stateDir, push) {
|
|
243
|
+
push("Leaving the TUI for setup — it returns after the wizard finishes.");
|
|
244
|
+
const result = await runSetupWizard(null);
|
|
245
|
+
if (!result.options.provider) {
|
|
246
|
+
push("setup cancelled; nothing changed");
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
applyWizardResult(result, configPath);
|
|
250
|
+
push(await reloadDaemon(stateDir, configPath) ? "config reloaded — applies to the next wake" : `saved to ${resolve(configPath)}; daemon will pick it up on next start`);
|
|
251
|
+
}
|
|
218
252
|
//# sourceMappingURL=tui.js.map
|
package/dist/tui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface WelcomeSnapshot {
|
|
2
|
+
root: {
|
|
3
|
+
id: string;
|
|
4
|
+
objective: string;
|
|
5
|
+
phase: string;
|
|
6
|
+
} | null;
|
|
7
|
+
team: Array<{
|
|
8
|
+
agent: string;
|
|
9
|
+
status: string;
|
|
10
|
+
}>;
|
|
11
|
+
handoffs: Array<{
|
|
12
|
+
agent: string;
|
|
13
|
+
result: string;
|
|
14
|
+
}>;
|
|
15
|
+
provider: string;
|
|
16
|
+
model: string;
|
|
17
|
+
}
|
|
18
|
+
export declare const WELCOME_TEAM_SLOTS = 3;
|
|
19
|
+
export declare const WELCOME_HANDOFF_SLOTS = 2;
|
|
20
|
+
/** Read workspace facts from the ledger file; a missing or unreadable ledger yields an empty snapshot. */
|
|
21
|
+
export declare function welcomeSnapshot(stateDir: string, runnerEnv: Record<string, string | undefined>): WelcomeSnapshot;
|
|
22
|
+
/** Render the snapshot into a fixed-height block of plain lines (fixed slots keep layout stable). */
|
|
23
|
+
export declare function renderWelcome(snapshot: WelcomeSnapshot, hasHistory: boolean): string[];
|
|
24
|
+
//# sourceMappingURL=welcome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../src/welcome.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9D,IAAI,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,QAAQ,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAKvC,0GAA0G;AAC1G,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,eAAe,CAkBhH;AAED,qGAAqG;AACrG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE,CAoBtF"}
|
package/dist/welcome.js
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Welcome-panel snapshot: read-only Ledger facts rendered into fixed slots.
|
|
3
|
+
*
|
|
4
|
+
* Zero daemon dependency and zero blocking: the workspace ledger is a local
|
|
5
|
+
* SQLite file opened read-only; a missing ledger (fresh workspace) renders
|
|
6
|
+
* placeholder slots, so panel height never changes between runs (pi/omp
|
|
7
|
+
* fixed-slot pattern).
|
|
8
|
+
*/
|
|
9
|
+
import { DatabaseSync } from "node:sqlite";
|
|
10
|
+
import { existsSync } from "node:fs";
|
|
11
|
+
import { join } from "node:path";
|
|
12
|
+
export const WELCOME_TEAM_SLOTS = 3;
|
|
13
|
+
export const WELCOME_HANDOFF_SLOTS = 2;
|
|
14
|
+
/** Read workspace facts from the ledger file; a missing or unreadable ledger yields an empty snapshot. */
|
|
15
|
+
export function welcomeSnapshot(stateDir, runnerEnv) {
|
|
16
|
+
const database = join(stateDir, "ledger.sqlite");
|
|
17
|
+
if (!existsSync(database))
|
|
18
|
+
return { root: null, team: [], handoffs: [], provider: runnerEnv.GOAH_PI_PROVIDER ?? "", model: runnerEnv.GOAH_PI_MODEL ?? "" };
|
|
19
|
+
const db = new DatabaseSync(database, { readOnly: true });
|
|
20
|
+
try {
|
|
21
|
+
const goals = db.prepare("SELECT id, objective, phase, parent_id, owner FROM goals").all();
|
|
22
|
+
const root = goals.find((goal) => goal.parent_id === null && goal.owner === "ceo" && goal.phase !== "complete") ?? goals.find((goal) => goal.parent_id === null) ?? null;
|
|
23
|
+
const team = db.prepare("SELECT owner AS agent, phase AS status FROM goals WHERE parent_id IS NOT NULL ORDER BY id").all().slice(0, WELCOME_TEAM_SLOTS);
|
|
24
|
+
const handoffRows = db.prepare("SELECT actor, data FROM events WHERE type='handoff.recorded' ORDER BY seq DESC LIMIT ?").all(WELCOME_HANDOFF_SLOTS).reverse();
|
|
25
|
+
const handoffs = handoffRows.flatMap((row) => {
|
|
26
|
+
try {
|
|
27
|
+
const data = JSON.parse(row.data);
|
|
28
|
+
const result = Array.isArray(data.results) && typeof data.results[0] === "string" ? data.results[0] : "";
|
|
29
|
+
return [{ agent: row.actor, result }];
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return [{ agent: row.actor, result: "" }];
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
return { root: root ? { id: root.id, objective: root.objective, phase: root.phase } : null, team, handoffs, provider: runnerEnv.GOAH_PI_PROVIDER ?? "", model: runnerEnv.GOAH_PI_MODEL ?? "" };
|
|
36
|
+
}
|
|
37
|
+
finally {
|
|
38
|
+
db.close();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** Render the snapshot into a fixed-height block of plain lines (fixed slots keep layout stable). */
|
|
42
|
+
export function renderWelcome(snapshot, hasHistory) {
|
|
43
|
+
const lines = [];
|
|
44
|
+
lines.push(`Goah — ${hasHistory ? "Welcome back!" : "Welcome!"} ${snapshot.provider ? `${snapshot.provider}/${snapshot.model}` : "(unconfigured)"}`);
|
|
45
|
+
lines.push("");
|
|
46
|
+
lines.push(snapshot.root ? `Goal: ${snapshot.root.objective} [${snapshot.root.phase}]` : "Goal: none yet — type one to start");
|
|
47
|
+
lines.push("");
|
|
48
|
+
lines.push("Agents:");
|
|
49
|
+
for (let index = 0; index < WELCOME_TEAM_SLOTS; index += 1) {
|
|
50
|
+
const member = snapshot.team[index];
|
|
51
|
+
lines.push(member ? ` ${member.agent} — ${member.status}` : " ·");
|
|
52
|
+
}
|
|
53
|
+
lines.push("");
|
|
54
|
+
lines.push("Recent work:");
|
|
55
|
+
for (let index = 0; index < WELCOME_HANDOFF_SLOTS; index += 1) {
|
|
56
|
+
const handoff = snapshot.handoffs[index];
|
|
57
|
+
lines.push(handoff ? ` ${handoff.agent}: ${handoff.result || "(handed off)"}` : " ·");
|
|
58
|
+
}
|
|
59
|
+
lines.push("");
|
|
60
|
+
lines.push("Tips: type a goal · /model ID switches · /setup re-runs onboarding · /status inspects · /quit exits");
|
|
61
|
+
return lines;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=welcome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"welcome.js","sourceRoot":"","sources":["../src/welcome.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface EnvSpecSource {
|
|
2
|
+
/** Absolute path of the workspace root whose `.env` is consulted. */
|
|
3
|
+
root: string;
|
|
4
|
+
}
|
|
5
|
+
export declare const ENV_REFERENCE_PREFIX = "env:";
|
|
6
|
+
/** Parse one `.env` file into key/value pairs; missing files yield {}. Minimal grammar: KEY=VALUE, quotes stripped, comments and blanks ignored. */
|
|
7
|
+
export declare function parseEnvFile(text: string): Record<string, string>;
|
|
8
|
+
export declare function envFileChain(source: EnvSpecSource | undefined): Array<Record<string, string>>;
|
|
9
|
+
/**
|
|
10
|
+
* Resolve an env spec for one spawn. Literal values pass through; `env:NAME`
|
|
11
|
+
* references consult the chain above. An unresolvable reference throws with the
|
|
12
|
+
* variable name so the wake fails honestly instead of spawning a child that
|
|
13
|
+
* would fail opaquely at its first model call.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveEnvSpec(spec: Record<string, string> | undefined, source: EnvSpecSource | undefined): Record<string, string>;
|
|
16
|
+
//# sourceMappingURL=env-spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-spec.d.ts","sourceRoot":"","sources":["../src/env-spec.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,aAAa;IAC5B,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAE3C,oJAAoJ;AACpJ,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAcjE;AAMD,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAO7F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAclI"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spawn-time credential resolution.
|
|
3
|
+
*
|
|
4
|
+
* Config files hold only `env:NAME` references — never secrets. Values are
|
|
5
|
+
* resolved when a child process is spawned, so credential rotation (a changed
|
|
6
|
+
* shell export on a fresh attach, or an edited `.env` file) takes effect on the
|
|
7
|
+
* next wake without restarting the resident Supervisor.
|
|
8
|
+
*
|
|
9
|
+
* Resolution order, first match wins:
|
|
10
|
+
* 1. the supervisor process environment
|
|
11
|
+
* 2. `<workspace>/.env`
|
|
12
|
+
* 3. `~/.goah/.env`
|
|
13
|
+
*/
|
|
14
|
+
import { readFileSync } from "node:fs";
|
|
15
|
+
import { homedir } from "node:os";
|
|
16
|
+
import { join } from "node:path";
|
|
17
|
+
export const ENV_REFERENCE_PREFIX = "env:";
|
|
18
|
+
/** Parse one `.env` file into key/value pairs; missing files yield {}. Minimal grammar: KEY=VALUE, quotes stripped, comments and blanks ignored. */
|
|
19
|
+
export function parseEnvFile(text) {
|
|
20
|
+
const values = {};
|
|
21
|
+
for (const rawLine of text.split("\n")) {
|
|
22
|
+
const line = rawLine.trim();
|
|
23
|
+
if (line === "" || line.startsWith("#"))
|
|
24
|
+
continue;
|
|
25
|
+
const equals = line.indexOf("=");
|
|
26
|
+
if (equals <= 0)
|
|
27
|
+
continue;
|
|
28
|
+
const key = line.slice(0, equals).trim();
|
|
29
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key))
|
|
30
|
+
continue;
|
|
31
|
+
let value = line.slice(equals + 1).trim();
|
|
32
|
+
if ((value.startsWith('"') && value.endsWith('"') && value.length >= 2) || (value.startsWith("'") && value.endsWith("'") && value.length >= 2))
|
|
33
|
+
value = value.slice(1, -1);
|
|
34
|
+
values[key] = value;
|
|
35
|
+
}
|
|
36
|
+
return values;
|
|
37
|
+
}
|
|
38
|
+
function readEnvFile(path) {
|
|
39
|
+
try {
|
|
40
|
+
return parseEnvFile(readFileSync(path, "utf8"));
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return {};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export function envFileChain(source) {
|
|
47
|
+
if (!source)
|
|
48
|
+
return [];
|
|
49
|
+
const files = [join(source.root, ".env"), join(homedir(), ".goah", ".env")];
|
|
50
|
+
// First match wins: earlier files in the chain shadow later ones.
|
|
51
|
+
const merged = {};
|
|
52
|
+
for (let index = files.length - 1; index >= 0; index -= 1)
|
|
53
|
+
Object.assign(merged, readEnvFile(files[index]));
|
|
54
|
+
return [merged];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Resolve an env spec for one spawn. Literal values pass through; `env:NAME`
|
|
58
|
+
* references consult the chain above. An unresolvable reference throws with the
|
|
59
|
+
* variable name so the wake fails honestly instead of spawning a child that
|
|
60
|
+
* would fail opaquely at its first model call.
|
|
61
|
+
*/
|
|
62
|
+
export function resolveEnvSpec(spec, source) {
|
|
63
|
+
if (!spec)
|
|
64
|
+
return {};
|
|
65
|
+
const [fileLayer] = envFileChain(source);
|
|
66
|
+
const resolved = {};
|
|
67
|
+
for (const [key, value] of Object.entries(spec)) {
|
|
68
|
+
if (!value.startsWith(ENV_REFERENCE_PREFIX)) {
|
|
69
|
+
resolved[key] = value;
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
const name = value.slice(ENV_REFERENCE_PREFIX.length);
|
|
73
|
+
const fromProcess = process.env[name];
|
|
74
|
+
if (fromProcess !== undefined) {
|
|
75
|
+
resolved[key] = fromProcess;
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
const fromFile = fileLayer?.[name];
|
|
79
|
+
if (fromFile !== undefined) {
|
|
80
|
+
resolved[key] = fromFile;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
throw new Error(`environment variable is missing: ${name} (set it in your shell, <workspace>/.env, or ~/.goah/.env)`);
|
|
84
|
+
}
|
|
85
|
+
return resolved;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=env-spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-spec.js","sourceRoot":"","sources":["../src/env-spec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAc,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjC,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAE3C,oJAAoJ;AACpJ,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,IAAI,CAAC;YAAE,SAAS;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,SAAS;QACpD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3K,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,CAAC;QAAC,OAAO,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAiC;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5E,kEAAkE;IAClE,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC;QAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,CAAC,CAAC;IAC7G,OAAO,CAAC,MAAM,CAAC,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAwC,EAAE,MAAiC;IACxG,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAAC,SAAS;QAAC,CAAC;QACjF,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;YAAC,SAAS;QAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;YAAC,SAAS;QAAC,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,4DAA4D,CAAC,CAAC;IACxH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|