@mono-agent/agent-app 0.15.3 → 0.15.4
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/README.md +13 -0
- package/dist/app-controller-responder.d.ts.map +1 -1
- package/dist/app-controller-responder.js +9 -7
- package/dist/app-controller-responder.js.map +1 -1
- package/dist/channel-drivers/native-notify.d.ts.map +1 -1
- package/dist/channel-drivers/native-notify.js +18 -8
- package/dist/channel-drivers/native-notify.js.map +1 -1
- package/dist/config-reference.d.ts.map +1 -1
- package/dist/config-reference.js +101 -2
- package/dist/config-reference.js.map +1 -1
- package/dist/configured-agent.d.ts.map +1 -1
- package/dist/configured-agent.js +206 -4
- package/dist/configured-agent.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +150 -0
- package/dist/doctor.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modules/catalog.js +1 -1
- package/dist/modules/catalog.js.map +1 -1
- package/dist/modules/known-tools.d.ts +1 -1
- package/dist/modules/known-tools.d.ts.map +1 -1
- package/dist/modules/known-tools.js +4 -0
- package/dist/modules/known-tools.js.map +1 -1
- package/dist/run-history.js +1 -0
- package/dist/run-history.js.map +1 -1
- package/dist/runtime-routes.d.ts +10 -0
- package/dist/runtime-routes.d.ts.map +1 -1
- package/dist/runtime-routes.js +12 -0
- package/dist/runtime-routes.js.map +1 -1
- package/dist/wizard/prompts.d.ts.map +1 -1
- package/dist/wizard/prompts.js +1 -0
- package/dist/wizard/prompts.js.map +1 -1
- package/dist/wizard/run.js +1 -1
- package/dist/wizard/run.js.map +1 -1
- package/package.json +15 -15
- package/schema/mono-agent.config.schema.json +243 -0
- package/skills/mono-agent-composer/references/config-blueprint.md +13 -3
- package/skills/mono-agent-composer/references/discovery-questions.md +12 -1
- package/skills/mono-agent-composer/references/feature-coverage.md +4 -1
- package/skills/mono-agent-composer/references/playbooks.md +25 -2
- package/skills/mono-agent-composer/references/validation.md +1 -0
- package/dist/broadcast-recorder.d.ts +0 -27
- package/dist/broadcast-recorder.d.ts.map +0 -1
- package/dist/broadcast-recorder.js +0 -104
- package/dist/broadcast-recorder.js.map +0 -1
- package/dist/channel-drivers/live.d.ts +0 -12
- package/dist/channel-drivers/live.d.ts.map +0 -1
- package/dist/channel-drivers/live.js +0 -48
- package/dist/channel-drivers/live.js.map +0 -1
- package/dist/notify-runtime.d.ts +0 -26
- package/dist/notify-runtime.d.ts.map +0 -1
- package/dist/notify-runtime.js +0 -27
- package/dist/notify-runtime.js.map +0 -1
- package/dist/notify-tool.d.ts +0 -51
- package/dist/notify-tool.d.ts.map +0 -1
- package/dist/notify-tool.js +0 -182
- package/dist/notify-tool.js.map +0 -1
- package/dist/recipes/base.d.ts +0 -15
- package/dist/recipes/base.d.ts.map +0 -1
- package/dist/recipes/base.js +0 -51
- package/dist/recipes/base.js.map +0 -1
- package/dist/recipes/catalog.d.ts +0 -4
- package/dist/recipes/catalog.d.ts.map +0 -1
- package/dist/recipes/catalog.js +0 -525
- package/dist/recipes/catalog.js.map +0 -1
- package/dist/recipes/index.d.ts +0 -11
- package/dist/recipes/index.d.ts.map +0 -1
- package/dist/recipes/index.js +0 -14
- package/dist/recipes/index.js.map +0 -1
- package/dist/recipes/types.d.ts +0 -70
- package/dist/recipes/types.d.ts.map +0 -1
- package/dist/recipes/types.js +0 -15
- package/dist/recipes/types.js.map +0 -1
- package/dist/sessions-command.d.ts +0 -53
- package/dist/sessions-command.d.ts.map +0 -1
- package/dist/sessions-command.js +0 -309
- package/dist/sessions-command.js.map +0 -1
- package/dist/setup.d.ts +0 -29
- package/dist/setup.d.ts.map +0 -1
- package/dist/setup.js +0 -97
- package/dist/setup.js.map +0 -1
package/dist/recipes/types.d.ts
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import type { MonoAgentConfigJson } from "@mono-agent/config";
|
|
2
|
-
import type { ValidationStatus } from "../doctor.js";
|
|
3
|
-
/**
|
|
4
|
-
* A value the recipe templates against. Non-secret inputs carry a default and
|
|
5
|
-
* may be overridden from the CLI; secret inputs are never written into JSON —
|
|
6
|
-
* they only emit a `.env.example` placeholder via {@link AgentRecipe.envExample}.
|
|
7
|
-
*/
|
|
8
|
-
export interface RecipeInput {
|
|
9
|
-
readonly id: string;
|
|
10
|
-
readonly label: string;
|
|
11
|
-
readonly description: string;
|
|
12
|
-
/** Default used when the CLI does not override the input. */
|
|
13
|
-
readonly default?: string;
|
|
14
|
-
/** Secret inputs are externalized to `.env.example`, never inlined in JSON. */
|
|
15
|
-
readonly secret?: boolean;
|
|
16
|
-
/** The `MONO_AGENT_*` env var a secret input maps to (for `.env.example`). */
|
|
17
|
-
readonly envVar?: string;
|
|
18
|
-
}
|
|
19
|
-
/** Resolved input values keyed by {@link RecipeInput.id}. */
|
|
20
|
-
export type RecipeInputValues = Readonly<Record<string, string | undefined>>;
|
|
21
|
-
/** An auxiliary file a recipe scaffolds beside the config (e.g. a cron job markdown). */
|
|
22
|
-
export interface GeneratedFile {
|
|
23
|
-
/** Path relative to the agent folder. */
|
|
24
|
-
readonly path: string;
|
|
25
|
-
readonly contents: string;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* A capability the recipe promises once secrets are filled in. `mono-agent
|
|
29
|
-
* validate --recipe <id>` checks each expectation against the doctor report and
|
|
30
|
-
* reports "selected recipe incomplete" when a required section is not yet at the
|
|
31
|
-
* promised status (e.g. a channel still `waiting` on a token).
|
|
32
|
-
*/
|
|
33
|
-
export interface RecipeValidateExpectation {
|
|
34
|
-
/** Doctor section id, e.g. `runtime`, `memory`, `channel:telegram`. */
|
|
35
|
-
readonly sectionId: string;
|
|
36
|
-
/** The status the section must reach for the recipe to be considered live. */
|
|
37
|
-
readonly mustBe: ValidationStatus;
|
|
38
|
-
/** Human note explaining what to do if the expectation is unmet. */
|
|
39
|
-
readonly note?: string;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* A typed, testable blueprint that compiles to an ordinary
|
|
43
|
-
* `mono-agent.config.json` plus optional `.env.example` placeholders and
|
|
44
|
-
* follow-up files. Recipes never change runtime contracts — they only emit JSON
|
|
45
|
-
* the existing loader already accepts — and never write secrets into the config.
|
|
46
|
-
*/
|
|
47
|
-
export interface AgentRecipe {
|
|
48
|
-
readonly id: string;
|
|
49
|
-
readonly title: string;
|
|
50
|
-
readonly description: string;
|
|
51
|
-
readonly tags: readonly string[];
|
|
52
|
-
readonly riskLevel: "low" | "medium" | "high";
|
|
53
|
-
/**
|
|
54
|
-
* The `docs/playbooks/<playbook>.md` this recipe mirrors, parity-checked to
|
|
55
|
-
* exist. The composite "full" blueprints have no single playbook and omit it.
|
|
56
|
-
*/
|
|
57
|
-
readonly playbook?: string;
|
|
58
|
-
readonly inputs: readonly RecipeInput[];
|
|
59
|
-
/** Build the `mono-agent.config.json` contents from resolved inputs. */
|
|
60
|
-
readonly config: (input: RecipeInputValues) => MonoAgentConfigJson;
|
|
61
|
-
/** `.env.example` lines for the secrets this recipe needs (never in JSON). */
|
|
62
|
-
readonly envExample?: (input: RecipeInputValues) => string;
|
|
63
|
-
/** Extra files to scaffold (cron job markdown, etc.). */
|
|
64
|
-
readonly files?: (input: RecipeInputValues) => readonly GeneratedFile[];
|
|
65
|
-
/** Capabilities `validate --recipe` checks once secrets are supplied. */
|
|
66
|
-
readonly validateExpectations: readonly RecipeValidateExpectation[];
|
|
67
|
-
}
|
|
68
|
-
/** Resolve declared input defaults, then layer CLI overrides on top. */
|
|
69
|
-
export declare function resolveRecipeInputs(recipe: AgentRecipe, overrides?: RecipeInputValues): RecipeInputValues;
|
|
70
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/recipes/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAE7E,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,oEAAoE;IACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,mBAAmB,CAAC;IACnE,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,MAAM,CAAC;IAC3D,yDAAyD;IACzD,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,SAAS,aAAa,EAAE,CAAC;IACxE,yEAAyE;IACzE,QAAQ,CAAC,oBAAoB,EAAE,SAAS,yBAAyB,EAAE,CAAC;CACrE;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EACnB,SAAS,GAAE,iBAAsB,GAChC,iBAAiB,CAYnB"}
|
package/dist/recipes/types.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/** Resolve declared input defaults, then layer CLI overrides on top. */
|
|
2
|
-
export function resolveRecipeInputs(recipe, overrides = {}) {
|
|
3
|
-
const values = {};
|
|
4
|
-
for (const input of recipe.inputs) {
|
|
5
|
-
values[input.id] = overrides[input.id] ?? input.default;
|
|
6
|
-
}
|
|
7
|
-
// Preserve overrides that don't correspond to a declared input (forward-compat).
|
|
8
|
-
for (const [key, value] of Object.entries(overrides)) {
|
|
9
|
-
if (!(key in values)) {
|
|
10
|
-
values[key] = value;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
return values;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/recipes/types.ts"],"names":[],"mappings":"AA0EA,wEAAwE;AACxE,MAAM,UAAU,mBAAmB,CACjC,MAAmB,EACnB,YAA+B,EAAE;IAEjC,MAAM,MAAM,GAAuC,EAAE,CAAC;IACtD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;IAC1D,CAAC;IACD,iFAAiF;IACjF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { startSessionWebServer } from "@mono-agent/session-web";
|
|
2
|
-
import type { SessionWebServerHandle } from "@mono-agent/session-web";
|
|
3
|
-
export declare const DEFAULT_SESSIONS_PORT = 4599;
|
|
4
|
-
export interface RunSessionsOptions {
|
|
5
|
-
readonly configPath: string;
|
|
6
|
-
readonly cwd: string;
|
|
7
|
-
readonly env: Record<string, string | undefined>;
|
|
8
|
-
/** --host: bind address (default 127.0.0.1). */
|
|
9
|
-
readonly host?: string;
|
|
10
|
-
/** --port: bind port (default 4599). */
|
|
11
|
-
readonly port?: number;
|
|
12
|
-
/** --no-open: suppress the browser launch (default: open). */
|
|
13
|
-
readonly open?: boolean;
|
|
14
|
-
/** --allow-non-loopback: bind a non-loopback host (refused by default). */
|
|
15
|
-
readonly allowNonLoopback?: boolean;
|
|
16
|
-
/** --show-auth-url: reveal a configured token only in an interactive terminal. */
|
|
17
|
-
readonly showAuthUrl?: boolean;
|
|
18
|
-
/** --include-memory: show memory-maintenance runs in the web operator surface. */
|
|
19
|
-
readonly includeMemory?: boolean;
|
|
20
|
-
/**
|
|
21
|
-
* --max-runs: per-instance cap on the in-memory live-fold working set (and the
|
|
22
|
-
* initial snapshot size). Disk paging remains the full history source, so this
|
|
23
|
-
* only bounds memory; it does not limit how far "Load older" can reach.
|
|
24
|
-
*/
|
|
25
|
-
readonly maxRunsPerInstance?: number;
|
|
26
|
-
}
|
|
27
|
-
/** Test seams: server boot, browser open, and the shutdown wait are injectable. */
|
|
28
|
-
export interface RunSessionsDeps {
|
|
29
|
-
readonly startServer?: typeof startSessionWebServer;
|
|
30
|
-
readonly openUrl?: (url: string) => void;
|
|
31
|
-
readonly waitForShutdown?: () => Promise<void>;
|
|
32
|
-
readonly onReady?: (handle: SessionWebServerHandle) => void;
|
|
33
|
-
readonly stdout?: {
|
|
34
|
-
write(text: string): void;
|
|
35
|
-
};
|
|
36
|
-
readonly stderr?: {
|
|
37
|
-
write(text: string): void;
|
|
38
|
-
};
|
|
39
|
-
readonly interactive?: boolean;
|
|
40
|
-
readonly discoverNetworkAddresses?: () => readonly WebNetworkAddress[];
|
|
41
|
-
}
|
|
42
|
-
export interface WebNetworkAddress {
|
|
43
|
-
readonly address: string;
|
|
44
|
-
readonly kind: "lan" | "tailscale";
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* `mono-agent sessions`: discover every running agent on this machine (trace-source
|
|
48
|
-
* registry, the same mechanism as `mono-agent tui`) and serve the read-only
|
|
49
|
-
* Session Recorder PWA that visualises their runs live. Unlike `tui`, it shows
|
|
50
|
-
* ALL instances at once and needs no TTY — it runs until interrupted.
|
|
51
|
-
*/
|
|
52
|
-
export declare function runSessions(options: RunSessionsOptions, deps?: RunSessionsDeps): Promise<number>;
|
|
53
|
-
//# sourceMappingURL=sessions-command.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sessions-command.d.ts","sourceRoot":"","sources":["../src/sessions-command.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAYtE,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAG1C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,gDAAgD;IAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,kFAAkF;IAClF,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED,mFAAmF;AACnF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,qBAAqB,CAAC;IACpD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAChD,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,SAAS,iBAAiB,EAAE,CAAC;CACxE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,WAAW,CAAC;CACpC;AAOD;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkF1G"}
|
package/dist/sessions-command.js
DELETED
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
import { networkInterfaces } from "node:os";
|
|
2
|
-
import { resolve } from "node:path";
|
|
3
|
-
import { pruneTraceSources } from "@mono-agent/observability";
|
|
4
|
-
import { startSessionWebServer } from "@mono-agent/session-web";
|
|
5
|
-
import { generateBearerToken, hostForUrl, isLoopbackHost, isWildcardHost, normalizeHostForBind, normalizeOptionalString, } from "@mono-agent/agent-contracts";
|
|
6
|
-
import { resolveAppTraceRegistryDir, resolveGlobalTraceRegistryDir } from "./app-config.js";
|
|
7
|
-
export const DEFAULT_SESSIONS_PORT = 4599;
|
|
8
|
-
const WEB_AUTH_TOKEN_ENV = "MONO_AGENT_WEB_AUTH_TOKEN";
|
|
9
|
-
/**
|
|
10
|
-
* `mono-agent sessions`: discover every running agent on this machine (trace-source
|
|
11
|
-
* registry, the same mechanism as `mono-agent tui`) and serve the read-only
|
|
12
|
-
* Session Recorder PWA that visualises their runs live. Unlike `tui`, it shows
|
|
13
|
-
* ALL instances at once and needs no TTY — it runs until interrupted.
|
|
14
|
-
*/
|
|
15
|
-
export async function runSessions(options, deps = {}) {
|
|
16
|
-
const stdout = deps.stdout ?? process.stdout;
|
|
17
|
-
const stderr = deps.stderr ?? process.stderr;
|
|
18
|
-
const configuredRegistryDir = await resolveAppTraceRegistryDir({
|
|
19
|
-
env: options.env,
|
|
20
|
-
cwd: options.cwd,
|
|
21
|
-
configPath: options.configPath,
|
|
22
|
-
});
|
|
23
|
-
const globalRegistryDir = resolveGlobalTraceRegistryDir(options.env);
|
|
24
|
-
const registryDirs = dedupePaths([configuredRegistryDir, globalRegistryDir]);
|
|
25
|
-
await Promise.all(registryDirs.map((registryDir) => pruneTraceSources({ registryDir })));
|
|
26
|
-
const authRequired = requiresServerAuth(options.host);
|
|
27
|
-
const interactive = deps.interactive ?? process.stdout.isTTY === true;
|
|
28
|
-
const configuredAuthToken = normalizeOptionalString(options.env.MONO_AGENT_WEB_AUTH_TOKEN);
|
|
29
|
-
if (authRequired && configuredAuthToken === undefined && !interactive) {
|
|
30
|
-
stderr.write(`Non-interactive non-loopback web serving requires ${WEB_AUTH_TOKEN_ENV}; refusing to generate a bearer secret into logs.\n`);
|
|
31
|
-
return 1;
|
|
32
|
-
}
|
|
33
|
-
const authToken = configuredAuthToken ?? (authRequired ? generateBearerToken() : undefined);
|
|
34
|
-
const generatedAuthToken = authToken !== undefined && configuredAuthToken === undefined;
|
|
35
|
-
const port = options.port ?? DEFAULT_SESSIONS_PORT;
|
|
36
|
-
const startServer = deps.startServer ?? startSessionWebServer;
|
|
37
|
-
let handle;
|
|
38
|
-
try {
|
|
39
|
-
handle = await startServer({
|
|
40
|
-
registryDirs,
|
|
41
|
-
env: options.env,
|
|
42
|
-
...(options.host === undefined ? {} : { host: options.host }),
|
|
43
|
-
port,
|
|
44
|
-
...(options.allowNonLoopback === undefined ? {} : { allowNonLoopback: options.allowNonLoopback }),
|
|
45
|
-
...(authToken === undefined ? {} : { authToken }),
|
|
46
|
-
...(options.includeMemory === undefined ? {} : { includeMemory: options.includeMemory }),
|
|
47
|
-
...(options.maxRunsPerInstance === undefined ? {} : { maxRunsPerInstance: options.maxRunsPerInstance }),
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
catch (error) {
|
|
51
|
-
stderr.write(`mono-agent sessions failed to start: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
52
|
-
return 1;
|
|
53
|
-
}
|
|
54
|
-
const wildcardBind = isWildcardUrl(handle.url)
|
|
55
|
-
|| (handle.boundAddress !== undefined && isWildcardHost(handle.boundAddress));
|
|
56
|
-
const networkAddresses = wildcardBind
|
|
57
|
-
? bestEffortNetworkAddresses(deps.discoverNetworkAddresses)
|
|
58
|
-
: [];
|
|
59
|
-
const advertisedUrls = resolveAdvertisedUrls(handle.url, networkAddresses, handle.boundAddress);
|
|
60
|
-
const primaryUrl = advertisedUrls[0]?.url ?? handle.url;
|
|
61
|
-
const mayPrintConfiguredToken = configuredAuthToken !== undefined
|
|
62
|
-
&& options.showAuthUrl === true
|
|
63
|
-
&& interactive;
|
|
64
|
-
const printableToken = generatedAuthToken || mayPrintConfiguredToken ? authToken : undefined;
|
|
65
|
-
printAdvertisedUrls(stdout, advertisedUrls, printableToken);
|
|
66
|
-
if (configuredAuthToken !== undefined && printableToken === undefined) {
|
|
67
|
-
stdout.write(`Authentication: ${WEB_AUTH_TOKEN_ENV} is configured (token redacted).\n`);
|
|
68
|
-
}
|
|
69
|
-
if (configuredAuthToken !== undefined && options.showAuthUrl === true && !mayPrintConfiguredToken) {
|
|
70
|
-
stderr.write("--show-auth-url was ignored because stdout is not an interactive terminal.\n");
|
|
71
|
-
}
|
|
72
|
-
stdout.write(`Watching ${registryDirs.length} registr${registryDirs.length === 1 ? "y" : "ies"} for agents. Press Ctrl-C to stop.\n`);
|
|
73
|
-
stdout.write(`${reverseProxyHint(primaryUrl)}\n`);
|
|
74
|
-
stdout.write(`${reachabilityHint(handle.url, handle.boundAddress)}\n`);
|
|
75
|
-
if ((options.open ?? true) && authToken === undefined) {
|
|
76
|
-
try {
|
|
77
|
-
(deps.openUrl ?? openInBrowser)(primaryUrl);
|
|
78
|
-
}
|
|
79
|
-
catch {
|
|
80
|
-
// Best-effort: a headless host without a browser is fine — the URL is printed.
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
else if ((options.open ?? true) && authToken !== undefined) {
|
|
84
|
-
stdout.write("Browser launch skipped in authenticated mode so the bearer token never enters process arguments.\n");
|
|
85
|
-
}
|
|
86
|
-
deps.onReady?.(handle);
|
|
87
|
-
await (deps.waitForShutdown ?? waitForSignal)();
|
|
88
|
-
await handle.stop();
|
|
89
|
-
stdout.write("mono-agent sessions stopped.\n");
|
|
90
|
-
return 0;
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* A one-line hint about who can reach the server. Direct HTTP never depends on
|
|
94
|
-
* Tailscale Serve; Serve is only an optional HTTPS/PWA-installability layer.
|
|
95
|
-
*/
|
|
96
|
-
function reachabilityHint(url, boundAddress) {
|
|
97
|
-
let port = "";
|
|
98
|
-
let host = "";
|
|
99
|
-
try {
|
|
100
|
-
const parsed = new URL(url);
|
|
101
|
-
port = parsed.port;
|
|
102
|
-
host = parsed.hostname;
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
/* leave blank */
|
|
106
|
-
}
|
|
107
|
-
const effectiveHost = boundAddress ?? host;
|
|
108
|
-
if (effectiveHost.length > 0 && !isLoopbackHost(effectiveHost)) {
|
|
109
|
-
return "Bound non-loopback: direct HTTP is available over your LAN/Tailnet at the URLs above. Tailscale Serve is optional and only needed for HTTPS + installable/offline PWA behavior.";
|
|
110
|
-
}
|
|
111
|
-
return `Loopback only. Re-run with --host 0.0.0.0 --allow-non-loopback for direct LAN/Tailnet HTTP. Tailscale Serve is optional for HTTPS + installable/offline PWA behavior (port ${port || "<port>"}).`;
|
|
112
|
-
}
|
|
113
|
-
function reverseProxyHint(url) {
|
|
114
|
-
let target = url;
|
|
115
|
-
try {
|
|
116
|
-
const parsed = new URL(url);
|
|
117
|
-
parsed.username = "";
|
|
118
|
-
parsed.password = "";
|
|
119
|
-
parsed.search = "";
|
|
120
|
-
parsed.hash = "";
|
|
121
|
-
target = parsed.toString();
|
|
122
|
-
}
|
|
123
|
-
catch {
|
|
124
|
-
/* use the original URL */
|
|
125
|
-
}
|
|
126
|
-
return `Reverse proxies should target ${target} (default port ${DEFAULT_SESSIONS_PORT}; override with --port).`;
|
|
127
|
-
}
|
|
128
|
-
function requiresServerAuth(host) {
|
|
129
|
-
return host !== undefined && !isLoopbackHost(host);
|
|
130
|
-
}
|
|
131
|
-
function withAuthToken(url, token) {
|
|
132
|
-
const parsed = new URL(url);
|
|
133
|
-
const fragment = new URLSearchParams(parsed.hash.startsWith("#") ? parsed.hash.slice(1) : parsed.hash);
|
|
134
|
-
fragment.set("token", token);
|
|
135
|
-
parsed.hash = fragment.toString();
|
|
136
|
-
return parsed.toString();
|
|
137
|
-
}
|
|
138
|
-
function printAdvertisedUrls(stdout, urls, authToken) {
|
|
139
|
-
const printable = urls.map((entry) => ({
|
|
140
|
-
...entry,
|
|
141
|
-
url: authToken === undefined ? entry.url : withAuthToken(entry.url, authToken),
|
|
142
|
-
}));
|
|
143
|
-
const primary = printable[0];
|
|
144
|
-
if (primary === undefined) {
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
stdout.write(`mono-agent sessions → ${primary.url}\n`);
|
|
148
|
-
for (const entry of printable.slice(1)) {
|
|
149
|
-
stdout.write(`${entry.label.padEnd(9)} → ${entry.url}\n`);
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
function resolveAdvertisedUrls(url, networkAddresses, boundAddress) {
|
|
153
|
-
const requestedWildcard = isWildcardUrl(url) ? new URL(url).hostname : undefined;
|
|
154
|
-
const actualWildcard = boundAddress !== undefined && isWildcardHost(boundAddress)
|
|
155
|
-
? boundAddress
|
|
156
|
-
: undefined;
|
|
157
|
-
if (requestedWildcard === undefined && actualWildcard === undefined) {
|
|
158
|
-
return [{ label: isLoopbackUrl(url) ? "Loopback" : "Web", url }];
|
|
159
|
-
}
|
|
160
|
-
const wildcardHost = requestedWildcard ?? actualWildcard ?? new URL(url).hostname;
|
|
161
|
-
const loopbackHost = loopbackForWildcardHost(wildcardHost);
|
|
162
|
-
const urls = [{ label: "Loopback", url: replaceUrlHost(url, loopbackHost) }];
|
|
163
|
-
for (const entry of networkAddresses) {
|
|
164
|
-
urls.push({
|
|
165
|
-
label: entry.kind === "tailscale" ? "Tailscale" : "LAN",
|
|
166
|
-
url: replaceUrlHost(url, entry.address),
|
|
167
|
-
});
|
|
168
|
-
}
|
|
169
|
-
return urls;
|
|
170
|
-
}
|
|
171
|
-
function loopbackForWildcardHost(host) {
|
|
172
|
-
const normalized = normalizeHostForBind(host).toLowerCase();
|
|
173
|
-
if (normalized === "0.0.0.0") {
|
|
174
|
-
return "127.0.0.1";
|
|
175
|
-
}
|
|
176
|
-
try {
|
|
177
|
-
const canonical = new URL(`http://[${normalized}]/`).hostname.slice(1, -1);
|
|
178
|
-
if (canonical === "::ffff:0:0") {
|
|
179
|
-
return "127.0.0.1";
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
catch {
|
|
183
|
-
// isWildcardHost already validated the caller; fall through defensively.
|
|
184
|
-
}
|
|
185
|
-
return "::1";
|
|
186
|
-
}
|
|
187
|
-
function replaceUrlHost(url, host) {
|
|
188
|
-
const parsed = new URL(url);
|
|
189
|
-
parsed.hostname = hostForUrl(host);
|
|
190
|
-
return parsed.toString();
|
|
191
|
-
}
|
|
192
|
-
function isWildcardUrl(url) {
|
|
193
|
-
try {
|
|
194
|
-
const host = new URL(url).hostname;
|
|
195
|
-
return isWildcardHost(host);
|
|
196
|
-
}
|
|
197
|
-
catch {
|
|
198
|
-
return false;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
function isLoopbackUrl(url) {
|
|
202
|
-
try {
|
|
203
|
-
return isLoopbackHost(new URL(url).hostname);
|
|
204
|
-
}
|
|
205
|
-
catch {
|
|
206
|
-
return false;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
function bestEffortNetworkAddresses(injected) {
|
|
210
|
-
try {
|
|
211
|
-
return dedupeNetworkAddresses(injected?.() ?? discoverNetworkAddresses());
|
|
212
|
-
}
|
|
213
|
-
catch {
|
|
214
|
-
return [];
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
function discoverNetworkAddresses() {
|
|
218
|
-
const addresses = [];
|
|
219
|
-
for (const interfaces of Object.values(networkInterfaces())) {
|
|
220
|
-
for (const info of interfaces ?? []) {
|
|
221
|
-
if (info.internal || info.family !== "IPv4") {
|
|
222
|
-
continue;
|
|
223
|
-
}
|
|
224
|
-
const kind = classifyIpv4Address(info.address);
|
|
225
|
-
if (kind !== undefined) {
|
|
226
|
-
addresses.push({ address: info.address, kind });
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
return addresses;
|
|
231
|
-
}
|
|
232
|
-
function classifyIpv4Address(address) {
|
|
233
|
-
const octets = address.split(".").map((part) => Number.parseInt(part, 10));
|
|
234
|
-
if (octets.length !== 4 || octets.some((part) => !Number.isInteger(part) || part < 0 || part > 255)) {
|
|
235
|
-
return undefined;
|
|
236
|
-
}
|
|
237
|
-
const [first = -1, second = -1] = octets;
|
|
238
|
-
if (first === 100 && second >= 64 && second <= 127) {
|
|
239
|
-
return "tailscale";
|
|
240
|
-
}
|
|
241
|
-
if (first === 10
|
|
242
|
-
|| (first === 172 && second >= 16 && second <= 31)
|
|
243
|
-
|| (first === 192 && second === 168)) {
|
|
244
|
-
return "lan";
|
|
245
|
-
}
|
|
246
|
-
return undefined;
|
|
247
|
-
}
|
|
248
|
-
function dedupeNetworkAddresses(addresses) {
|
|
249
|
-
const seen = new Set();
|
|
250
|
-
return [...addresses]
|
|
251
|
-
.filter((entry) => {
|
|
252
|
-
if (seen.has(entry.address)) {
|
|
253
|
-
return false;
|
|
254
|
-
}
|
|
255
|
-
seen.add(entry.address);
|
|
256
|
-
return true;
|
|
257
|
-
})
|
|
258
|
-
.sort((left, right) => {
|
|
259
|
-
if (left.kind !== right.kind) {
|
|
260
|
-
return left.kind === "lan" ? -1 : 1;
|
|
261
|
-
}
|
|
262
|
-
return left.address.localeCompare(right.address);
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
/** Resolve + dedupe registry dirs, preserving precedence order. */
|
|
266
|
-
function dedupePaths(dirs) {
|
|
267
|
-
const seen = new Set();
|
|
268
|
-
const out = [];
|
|
269
|
-
for (const dir of dirs) {
|
|
270
|
-
const resolved = resolve(dir);
|
|
271
|
-
if (!seen.has(resolved)) {
|
|
272
|
-
seen.add(resolved);
|
|
273
|
-
out.push(resolved);
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
return out;
|
|
277
|
-
}
|
|
278
|
-
/** Resolve once SIGINT/SIGTERM arrives — the foreground command's stop signal. */
|
|
279
|
-
function waitForSignal() {
|
|
280
|
-
return new Promise((resolvePromise) => {
|
|
281
|
-
const onSignal = () => {
|
|
282
|
-
process.off("SIGINT", onSignal);
|
|
283
|
-
process.off("SIGTERM", onSignal);
|
|
284
|
-
resolvePromise();
|
|
285
|
-
};
|
|
286
|
-
process.once("SIGINT", onSignal);
|
|
287
|
-
process.once("SIGTERM", onSignal);
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
/** Best-effort OS browser launch. Never throws into the caller's happy path. */
|
|
291
|
-
function openInBrowser(url) {
|
|
292
|
-
void (async () => {
|
|
293
|
-
try {
|
|
294
|
-
const { spawn } = await import("node:child_process");
|
|
295
|
-
const platform = process.platform;
|
|
296
|
-
const command = platform === "darwin" ? "open" : platform === "win32" ? "cmd" : "xdg-open";
|
|
297
|
-
const args = platform === "win32" ? ["/c", "start", "", url] : [url];
|
|
298
|
-
const child = spawn(command, args, { stdio: "ignore", detached: true });
|
|
299
|
-
child.on("error", () => {
|
|
300
|
-
/* no browser available — the URL was printed */
|
|
301
|
-
});
|
|
302
|
-
child.unref();
|
|
303
|
-
}
|
|
304
|
-
catch {
|
|
305
|
-
/* ignore */
|
|
306
|
-
}
|
|
307
|
-
})();
|
|
308
|
-
}
|
|
309
|
-
//# sourceMappingURL=sessions-command.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sessions-command.js","sourceRoot":"","sources":["../src/sessions-command.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { WithChannel } from "./init.js";
|
|
2
|
-
import type { AgentRecipe, RecipeInputValues } from "./recipes/index.js";
|
|
3
|
-
export interface SetupPromptSource {
|
|
4
|
-
question(prompt: string): Promise<string>;
|
|
5
|
-
}
|
|
6
|
-
export interface SecretChecklistItem {
|
|
7
|
-
readonly id: string;
|
|
8
|
-
readonly label: string;
|
|
9
|
-
readonly description: string;
|
|
10
|
-
readonly envVar?: string;
|
|
11
|
-
}
|
|
12
|
-
export interface CollectSetupOptions {
|
|
13
|
-
readonly prompt: SetupPromptSource;
|
|
14
|
-
readonly recipe?: AgentRecipe;
|
|
15
|
-
readonly model?: string;
|
|
16
|
-
readonly fallbackModels?: readonly string[];
|
|
17
|
-
readonly withChannels?: readonly WithChannel[];
|
|
18
|
-
readonly recipes?: readonly AgentRecipe[];
|
|
19
|
-
}
|
|
20
|
-
export interface CollectedSetupOptions {
|
|
21
|
-
readonly recipe: AgentRecipe;
|
|
22
|
-
readonly recipeInputs: RecipeInputValues;
|
|
23
|
-
readonly fallbackModels: readonly string[];
|
|
24
|
-
readonly withChannels: readonly WithChannel[];
|
|
25
|
-
readonly secrets: readonly SecretChecklistItem[];
|
|
26
|
-
}
|
|
27
|
-
export declare function collectSetupOptions(options: CollectSetupOptions): Promise<CollectedSetupOptions>;
|
|
28
|
-
export declare function renderSetupRecipeMenu(recipes?: readonly AgentRecipe[]): string;
|
|
29
|
-
//# sourceMappingURL=setup.d.ts.map
|
package/dist/setup.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAe,MAAM,oBAAoB,CAAC;AAEtF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;CAC3C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAClD;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwBtG;AAED,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,SAAS,WAAW,EAAmB,GAAG,MAAM,CAO9F"}
|
package/dist/setup.js
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { WITH_CHANNELS } from "./init.js";
|
|
2
|
-
import { RECIPE_CATALOG } from "./recipes/index.js";
|
|
3
|
-
export async function collectSetupOptions(options) {
|
|
4
|
-
const recipes = options.recipes ?? RECIPE_CATALOG;
|
|
5
|
-
const recipe = options.recipe ?? await promptForRecipe(options.prompt, recipes);
|
|
6
|
-
const recipeInputs = {};
|
|
7
|
-
const secrets = [];
|
|
8
|
-
for (const input of recipe.inputs) {
|
|
9
|
-
if (input.secret === true) {
|
|
10
|
-
secrets.push(secretChecklistItem(input));
|
|
11
|
-
continue;
|
|
12
|
-
}
|
|
13
|
-
const defaultValue = input.id === "model" && options.model !== undefined ? options.model : input.default;
|
|
14
|
-
const answer = await options.prompt.question(inputPrompt(input, defaultValue));
|
|
15
|
-
const value = answer.trim();
|
|
16
|
-
if (value.length > 0) {
|
|
17
|
-
recipeInputs[input.id] = value;
|
|
18
|
-
}
|
|
19
|
-
else if (defaultValue !== undefined) {
|
|
20
|
-
recipeInputs[input.id] = defaultValue;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
const fallbackModels = await promptForFallbackModels(options.prompt, options.fallbackModels ?? []);
|
|
24
|
-
const withChannels = await promptForWithChannels(options.prompt, options.withChannels ?? []);
|
|
25
|
-
return { recipe, recipeInputs, fallbackModels, withChannels, secrets };
|
|
26
|
-
}
|
|
27
|
-
export function renderSetupRecipeMenu(recipes = RECIPE_CATALOG) {
|
|
28
|
-
return recipes
|
|
29
|
-
.map((recipe, index) => {
|
|
30
|
-
const tags = recipe.tags.length === 0 ? "" : ` (${recipe.tags.join(", ")})`;
|
|
31
|
-
return `${index + 1}. ${recipe.id} [risk: ${recipe.riskLevel}] - ${recipe.title}${tags}`;
|
|
32
|
-
})
|
|
33
|
-
.join("\n");
|
|
34
|
-
}
|
|
35
|
-
function inputPrompt(input, defaultValue) {
|
|
36
|
-
const suffix = defaultValue === undefined ? "" : ` [${defaultValue}]`;
|
|
37
|
-
return `${input.label}${suffix}\n${input.description}\n> `;
|
|
38
|
-
}
|
|
39
|
-
function secretChecklistItem(input) {
|
|
40
|
-
return {
|
|
41
|
-
id: input.id,
|
|
42
|
-
label: input.label,
|
|
43
|
-
description: input.description,
|
|
44
|
-
...(input.envVar === undefined ? {} : { envVar: input.envVar }),
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
async function promptForRecipe(prompt, recipes) {
|
|
48
|
-
if (recipes.length === 0) {
|
|
49
|
-
throw new Error("No setup recipes are available.");
|
|
50
|
-
}
|
|
51
|
-
for (;;) {
|
|
52
|
-
const answer = await prompt.question(`Choose a recipe:\n${renderSetupRecipeMenu(recipes)}\nRecipe [1]: `);
|
|
53
|
-
const selected = parseRecipeChoice(answer, recipes);
|
|
54
|
-
if (selected !== undefined) {
|
|
55
|
-
return selected;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
function parseRecipeChoice(answer, recipes) {
|
|
60
|
-
const value = answer.trim();
|
|
61
|
-
if (value.length === 0) {
|
|
62
|
-
return recipes[0];
|
|
63
|
-
}
|
|
64
|
-
const index = Number(value);
|
|
65
|
-
if (Number.isInteger(index) && index >= 1 && index <= recipes.length) {
|
|
66
|
-
return recipes[index - 1];
|
|
67
|
-
}
|
|
68
|
-
return recipes.find((recipe) => recipe.id === value);
|
|
69
|
-
}
|
|
70
|
-
async function promptForWithChannels(prompt, defaults) {
|
|
71
|
-
const defaultText = defaults.length === 0 ? "none" : defaults.join(",");
|
|
72
|
-
for (;;) {
|
|
73
|
-
const answer = await prompt.question(`Enable add-on channels (${WITH_CHANNELS.join(", ")}) [${defaultText}]: `);
|
|
74
|
-
const raw = answer.trim();
|
|
75
|
-
if (raw.length === 0) {
|
|
76
|
-
return defaults;
|
|
77
|
-
}
|
|
78
|
-
const parsed = raw.split(",").map((entry) => entry.trim()).filter((entry) => entry.length > 0);
|
|
79
|
-
const invalid = parsed.filter((entry) => !WITH_CHANNELS.includes(entry));
|
|
80
|
-
if (invalid.length === 0) {
|
|
81
|
-
return parsed;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
async function promptForFallbackModels(prompt, defaults) {
|
|
86
|
-
const defaultText = defaults.length === 0 ? "none" : defaults.join(",");
|
|
87
|
-
const answer = await prompt.question(`Fallback models, comma-separated [${defaultText}]: `);
|
|
88
|
-
const raw = answer.trim();
|
|
89
|
-
if (raw.length === 0) {
|
|
90
|
-
return defaults;
|
|
91
|
-
}
|
|
92
|
-
if (raw.toLowerCase() === "none") {
|
|
93
|
-
return [];
|
|
94
|
-
}
|
|
95
|
-
return raw.split(",").map((entry) => entry.trim()).filter((entry) => entry.length > 0);
|
|
96
|
-
}
|
|
97
|
-
//# sourceMappingURL=setup.js.map
|
package/dist/setup.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|