@boardwalk-labs/cli 0.1.2 → 0.1.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/dist/client.d.ts +13 -0
- package/dist/client.js +25 -0
- package/dist/client.js.map +1 -1
- package/dist/commands/build.d.ts +10 -0
- package/dist/commands/build.js +27 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/dev.d.ts +10 -0
- package/dist/commands/dev.js +19 -4
- package/dist/commands/dev.js.map +1 -1
- package/dist/credentials.d.ts +15 -1
- package/dist/credentials.js +46 -7
- package/dist/credentials.js.map +1 -1
- package/dist/dev/inference.d.ts +27 -0
- package/dist/dev/inference.js +85 -0
- package/dist/dev/inference.js.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -27,6 +27,12 @@ export interface RunSummary {
|
|
|
27
27
|
startedAt: number | null;
|
|
28
28
|
completedAt: number | null;
|
|
29
29
|
}
|
|
30
|
+
/** A freshly-minted inference-gateway key: the plaintext token (shown once) + its expiry/id. */
|
|
31
|
+
export interface MintedInferenceKey {
|
|
32
|
+
token: string;
|
|
33
|
+
expiresAt: number | null;
|
|
34
|
+
id: string | null;
|
|
35
|
+
}
|
|
30
36
|
export interface BoardwalkClientOptions {
|
|
31
37
|
baseUrl: string;
|
|
32
38
|
token: string;
|
|
@@ -59,7 +65,14 @@ export declare class BoardwalkClient {
|
|
|
59
65
|
* endpoint resolves the org from the run id, so no org slug is needed. Returns 204 No Content.
|
|
60
66
|
*/
|
|
61
67
|
cancelRun(runId: string): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Mint an inference-only key for the gateway (scope inference:invoke, a default spend cap), the
|
|
70
|
+
* credential `boardwalk dev` injects so the engine's default `boardwalk` provider works. The
|
|
71
|
+
* server fixes scopes/cap/expiry — no request body. Returns the plaintext token ONCE.
|
|
72
|
+
*/
|
|
73
|
+
mintInferenceKey(orgSlug: string): Promise<MintedInferenceKey>;
|
|
62
74
|
private request;
|
|
63
75
|
private deployResult;
|
|
64
76
|
private runSummary;
|
|
77
|
+
private mintedInferenceKey;
|
|
65
78
|
}
|
package/dist/client.js
CHANGED
|
@@ -80,6 +80,15 @@ export class BoardwalkClient {
|
|
|
80
80
|
async cancelRun(runId) {
|
|
81
81
|
await this.request("POST", `/v1/runs/${encodeURIComponent(runId)}/cancel`);
|
|
82
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* Mint an inference-only key for the gateway (scope inference:invoke, a default spend cap), the
|
|
85
|
+
* credential `boardwalk dev` injects so the engine's default `boardwalk` provider works. The
|
|
86
|
+
* server fixes scopes/cap/expiry — no request body. Returns the plaintext token ONCE.
|
|
87
|
+
*/
|
|
88
|
+
async mintInferenceKey(orgSlug) {
|
|
89
|
+
const body = await this.request("POST", `/v1/orgs/${encodeURIComponent(orgSlug)}/inference-keys`);
|
|
90
|
+
return this.mintedInferenceKey(body);
|
|
91
|
+
}
|
|
83
92
|
async request(method, path, body) {
|
|
84
93
|
const headers = {
|
|
85
94
|
Authorization: `Bearer ${this.token}`,
|
|
@@ -129,6 +138,22 @@ export class BoardwalkClient {
|
|
|
129
138
|
}
|
|
130
139
|
throw new CliError("The API returned an unexpected run response shape.");
|
|
131
140
|
}
|
|
141
|
+
mintedInferenceKey(body) {
|
|
142
|
+
if (typeof body === "object" && body !== null) {
|
|
143
|
+
const b = body;
|
|
144
|
+
if (typeof b.token === "string" && b.token.length > 0) {
|
|
145
|
+
const apiKey = typeof b.apiKey === "object" && b.apiKey !== null
|
|
146
|
+
? b.apiKey
|
|
147
|
+
: {};
|
|
148
|
+
return {
|
|
149
|
+
token: b.token,
|
|
150
|
+
expiresAt: typeof apiKey.expiresAt === "number" ? apiKey.expiresAt : null,
|
|
151
|
+
id: typeof apiKey.id === "string" ? apiKey.id : null,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
throw new CliError("The API returned an unexpected inference-key response shape.");
|
|
156
|
+
}
|
|
132
157
|
}
|
|
133
158
|
function isWorkflowSummary(value) {
|
|
134
159
|
if (typeof value !== "object" || value === null)
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,8CAA8C;AAC9C,EAAE;AACF,wDAAwD;AACxD,kGAAkG;AAClG,qGAAqG;AACrG,sFAAsF;AACtF,oGAAoG;AACpG,iGAAiG;AACjG,EAAE;AACF,oGAAoG;AACpG,mGAAmG;AACnG,2DAA2D;AAC3D,EAAE;AACF,yFAAyF;AACzF,2CAA2C;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface BuildOptions {
|
|
2
|
+
file: string;
|
|
3
|
+
out?: string | undefined;
|
|
4
|
+
}
|
|
5
|
+
export interface BuildDeps {
|
|
6
|
+
/** Status line writer (defaults to stdout) — injected so tests don't touch the console. */
|
|
7
|
+
log?: (line: string) => void;
|
|
8
|
+
}
|
|
9
|
+
/** Build the workflow and return the absolute path it was written to. */
|
|
10
|
+
export declare function runBuild(opts: BuildOptions, deps?: BuildDeps): Promise<string>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// `boardwalk build <file|dir> [--out <path>]` — bundle a workflow to a single deployable file.
|
|
2
|
+
//
|
|
3
|
+
// Emits one ESM file with `@boardwalk-labs/workflow` left EXTERNAL (the engine resolves its own
|
|
4
|
+
// copy at run time) and the pure-literal `meta` intact — exactly what a self-hosted server's
|
|
5
|
+
// workflows directory loads (BOARDWALK_WORKFLOWS_DIR). The manifest is validated first so authoring
|
|
6
|
+
// mistakes surface here, not at deploy. Default output: `<workflow-name>.mjs` in the cwd.
|
|
7
|
+
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
8
|
+
import { dirname, resolve } from "node:path";
|
|
9
|
+
import { bundleWorkflow, resolveEntry } from "../bundle.js";
|
|
10
|
+
import { extractValidatedManifest } from "../manifest.js";
|
|
11
|
+
/** Build the workflow and return the absolute path it was written to. */
|
|
12
|
+
export async function runBuild(opts, deps = {}) {
|
|
13
|
+
const log = deps.log ??
|
|
14
|
+
((line) => {
|
|
15
|
+
process.stdout.write(`${line}\n`);
|
|
16
|
+
});
|
|
17
|
+
const entry = resolveEntry(opts.file);
|
|
18
|
+
// Validate before bundling: precise manifest errors here, and the name seeds the default output.
|
|
19
|
+
const manifest = extractValidatedManifest(readFileSync(entry, "utf8"), entry);
|
|
20
|
+
const program = await bundleWorkflow(entry);
|
|
21
|
+
const outPath = resolve(opts.out ?? `${manifest.name}.mjs`);
|
|
22
|
+
mkdirSync(dirname(outPath), { recursive: true });
|
|
23
|
+
writeFileSync(outPath, program, "utf8");
|
|
24
|
+
log(`built "${manifest.name}" → ${outPath}`);
|
|
25
|
+
return outPath;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,EAAE;AACF,gGAAgG;AAChG,6FAA6F;AAC7F,oGAAoG;AACpG,0FAA0F;AAE1F,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAY1D,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAkB,EAAE,OAAkB,EAAE;IACrE,MAAM,GAAG,GACP,IAAI,CAAC,GAAG;QACR,CAAC,CAAC,IAAY,EAAQ,EAAE;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IAEL,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,iGAAiG;IACjG,MAAM,QAAQ,GAAG,wBAAwB,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC;IAC5D,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAExC,GAAG,CAAC,UAAU,QAAQ,CAAC,IAAI,OAAO,OAAO,EAAE,CAAC,CAAC;IAC7C,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/commands/dev.d.ts
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
+
import { type CliConfig } from "../config.js";
|
|
1
2
|
import { type DevEngineFactory } from "../dev/engine.js";
|
|
3
|
+
import { type ResolveInferenceEnvDeps } from "../dev/inference.js";
|
|
2
4
|
export interface DevOptions {
|
|
3
5
|
file: string;
|
|
4
6
|
input?: string | undefined;
|
|
5
7
|
envFile?: string | undefined;
|
|
6
8
|
verbose: boolean;
|
|
7
9
|
stream?: string | undefined;
|
|
10
|
+
/** Org for managed inference when `agent()` names no provider (else the project link's org). */
|
|
11
|
+
org?: string | undefined;
|
|
12
|
+
/** A one-off bearer for minting the inference key, instead of the stored login session. */
|
|
13
|
+
token?: string | undefined;
|
|
8
14
|
}
|
|
9
15
|
export interface DevDeps {
|
|
10
16
|
/** Raw event-stream writer (defaults to process.stdout). */
|
|
@@ -13,5 +19,9 @@ export interface DevDeps {
|
|
|
13
19
|
onSigint?: (handler: () => void) => () => void;
|
|
14
20
|
/** Engine factory — injected so tests can drive orchestration without spawning processes. */
|
|
15
21
|
createEngine?: DevEngineFactory;
|
|
22
|
+
/** CLI config (endpoints + config dir); defaults to the env-derived config. */
|
|
23
|
+
config?: CliConfig;
|
|
24
|
+
/** Managed-inference resolver — injected so tests don't touch the network/credential store. */
|
|
25
|
+
resolveInference?: (deps: ResolveInferenceEnvDeps) => Promise<Record<string, string>>;
|
|
16
26
|
}
|
|
17
27
|
export declare function runDev(opts: DevOptions, deps?: DevDeps): Promise<void>;
|
package/dist/commands/dev.js
CHANGED
|
@@ -13,8 +13,10 @@ import { parseEnv } from "node:util";
|
|
|
13
13
|
import { CliError } from "../errors.js";
|
|
14
14
|
import { bundleWorkflow, resolveEntry } from "../bundle.js";
|
|
15
15
|
import { extractValidatedManifest } from "../manifest.js";
|
|
16
|
-
import { projectDirFor } from "../project.js";
|
|
16
|
+
import { projectDirFor, readLink } from "../project.js";
|
|
17
|
+
import { loadConfig } from "../config.js";
|
|
17
18
|
import { createDevEngine } from "../dev/engine.js";
|
|
19
|
+
import { resolveInferenceEnv } from "../dev/inference.js";
|
|
18
20
|
import { createRenderer, parseChannels } from "../render/renderer.js";
|
|
19
21
|
import { parseInput } from "./run.js";
|
|
20
22
|
export async function runDev(opts, deps = {}) {
|
|
@@ -23,6 +25,8 @@ export async function runDev(opts, deps = {}) {
|
|
|
23
25
|
process.stdout.write(text);
|
|
24
26
|
});
|
|
25
27
|
const createEngine = deps.createEngine ?? createDevEngine;
|
|
28
|
+
const config = deps.config ?? loadConfig();
|
|
29
|
+
const resolveInference = deps.resolveInference ?? resolveInferenceEnv;
|
|
26
30
|
const channels = parseChannels({ verbose: opts.verbose, stream: opts.stream });
|
|
27
31
|
const renderer = createRenderer(channels, write);
|
|
28
32
|
// 1. Validate before anything runs — errors point at the author's real file.
|
|
@@ -33,14 +37,25 @@ export async function runDev(opts, deps = {}) {
|
|
|
33
37
|
const projectDir = projectDirFor(opts.file);
|
|
34
38
|
const envPath = opts.envFile ?? join(projectDir, ".env");
|
|
35
39
|
const envVars = loadEnvFile(envPath, opts.envFile !== undefined);
|
|
36
|
-
// 3.
|
|
40
|
+
// 3. Managed inference: so `agent()` with no provider works locally after `boardwalk login`,
|
|
41
|
+
// overlay a short-lived inference key + gateway URL. Best-effort — empty when the user set
|
|
42
|
+
// their own BOARDWALK_API_KEY, no org is resolvable, or they're logged out. The .env wins over
|
|
43
|
+
// process.env for the "already has a key?" decision; the overlay never clobbers either.
|
|
44
|
+
const orgSlug = opts.org ?? readLink(projectDir)?.orgSlug ?? null;
|
|
45
|
+
const inferenceEnv = await resolveInference({
|
|
46
|
+
config,
|
|
47
|
+
orgSlug,
|
|
48
|
+
env: { ...process.env, ...Object.fromEntries(envVars) },
|
|
49
|
+
...(opts.token !== undefined ? { tokenFlag: opts.token } : {}),
|
|
50
|
+
});
|
|
51
|
+
// 4. Bundle the program — `@boardwalk-labs/workflow` left EXTERNAL; the engine resolves it from
|
|
37
52
|
// its own copy (one shared SDK instance, so the host seam works) when it runs the program.
|
|
38
53
|
const program = await bundleWorkflow(entry);
|
|
39
|
-
//
|
|
54
|
+
// 5. Run it on the embedded engine in a throwaway data dir; stream its events.
|
|
40
55
|
const dataDir = mkdtempSync(join(tmpdir(), "bw-dev-"));
|
|
41
56
|
const engine = createEngine({
|
|
42
57
|
dataDir,
|
|
43
|
-
env: Object.fromEntries(envVars),
|
|
58
|
+
env: { ...Object.fromEntries(envVars), ...inferenceEnv },
|
|
44
59
|
envLabel: envPath,
|
|
45
60
|
});
|
|
46
61
|
const unsubscribe = engine.onEvent((event) => {
|
package/dist/commands/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,EAAE;AACF,2FAA2F;AAC3F,2FAA2F;AAC3F,8FAA8F;AAC9F,kGAAkG;AAClG,EAAE;AACF,+DAA+D;AAE/D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
|
package/dist/credentials.d.ts
CHANGED
|
@@ -10,13 +10,27 @@ export interface StoredSession {
|
|
|
10
10
|
tokenEndpoint: string | null;
|
|
11
11
|
scope: string | null;
|
|
12
12
|
}
|
|
13
|
+
/** A cached inference-gateway key minted for `boardwalk dev` (one per api-host + org). Reused across
|
|
14
|
+
* dev runs until it nears expiry, then silently re-minted — so the author isn't littering the org
|
|
15
|
+
* with a fresh key on every run. It's a capped, inference-only credential (see the backend mint). */
|
|
16
|
+
export interface StoredInferenceKey {
|
|
17
|
+
/** The plaintext `bwk_…` inference key. */
|
|
18
|
+
token: string;
|
|
19
|
+
/** Absolute expiry, epoch ms. */
|
|
20
|
+
expiresAt: number;
|
|
21
|
+
/** The key row id, for diagnostics (not needed to use the key). */
|
|
22
|
+
id: string | null;
|
|
23
|
+
}
|
|
13
24
|
export declare class CredentialStore {
|
|
14
25
|
private readonly filePath;
|
|
15
26
|
constructor(filePath: string);
|
|
16
27
|
static atConfigDir(configDir: string): CredentialStore;
|
|
17
28
|
getSession(): StoredSession | null;
|
|
18
29
|
putSession(session: StoredSession): void;
|
|
19
|
-
/**
|
|
30
|
+
/** The cached inference key for `<apiBaseUrl>|<orgSlug>`, or null if absent/malformed. */
|
|
31
|
+
getInferenceKey(cacheKey: string): StoredInferenceKey | null;
|
|
32
|
+
putInferenceKey(cacheKey: string, key: StoredInferenceKey): void;
|
|
33
|
+
/** Remove any stored credentials (logout). Idempotent — a missing file is fine. */
|
|
20
34
|
clear(): void;
|
|
21
35
|
private read;
|
|
22
36
|
private write;
|
package/dist/credentials.js
CHANGED
|
@@ -19,9 +19,22 @@ export class CredentialStore {
|
|
|
19
19
|
return session !== undefined && isValidSession(session) ? session : null;
|
|
20
20
|
}
|
|
21
21
|
putSession(session) {
|
|
22
|
-
|
|
22
|
+
// Read-modify-write so we don't drop the cached inference keys (or vice-versa).
|
|
23
|
+
this.write({ ...this.read(), session });
|
|
23
24
|
}
|
|
24
|
-
/**
|
|
25
|
+
/** The cached inference key for `<apiBaseUrl>|<orgSlug>`, or null if absent/malformed. */
|
|
26
|
+
getInferenceKey(cacheKey) {
|
|
27
|
+
const key = this.read().inferenceKeys?.[cacheKey];
|
|
28
|
+
return key !== undefined && isValidInferenceKey(key) ? key : null;
|
|
29
|
+
}
|
|
30
|
+
putInferenceKey(cacheKey, key) {
|
|
31
|
+
const file = this.read();
|
|
32
|
+
this.write({
|
|
33
|
+
...file,
|
|
34
|
+
inferenceKeys: { ...(file.inferenceKeys ?? {}), [cacheKey]: key },
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/** Remove any stored credentials (logout). Idempotent — a missing file is fine. */
|
|
25
38
|
clear() {
|
|
26
39
|
try {
|
|
27
40
|
rmSync(this.filePath, { force: true });
|
|
@@ -40,16 +53,22 @@ export class CredentialStore {
|
|
|
40
53
|
}
|
|
41
54
|
try {
|
|
42
55
|
const parsed = JSON.parse(raw);
|
|
43
|
-
if (typeof parsed
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
56
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
57
|
+
return {};
|
|
58
|
+
const file = {};
|
|
59
|
+
if ("session" in parsed && isValidSession(parsed.session))
|
|
60
|
+
file.session = parsed.session;
|
|
61
|
+
if ("inferenceKeys" in parsed) {
|
|
62
|
+
const keys = sanitizeInferenceKeys(parsed.inferenceKeys);
|
|
63
|
+
if (keys !== undefined)
|
|
64
|
+
file.inferenceKeys = keys;
|
|
47
65
|
}
|
|
66
|
+
return file;
|
|
48
67
|
}
|
|
49
68
|
catch {
|
|
50
69
|
// Malformed file → treat as no credentials rather than crashing the command.
|
|
70
|
+
return {};
|
|
51
71
|
}
|
|
52
|
-
return {};
|
|
53
72
|
}
|
|
54
73
|
write(file) {
|
|
55
74
|
mkdirSync(dirname(this.filePath), { recursive: true, mode: 0o700 });
|
|
@@ -62,4 +81,24 @@ function isValidSession(value) {
|
|
|
62
81
|
const s = value;
|
|
63
82
|
return typeof s.accessToken === "string" && s.accessToken.length > 0;
|
|
64
83
|
}
|
|
84
|
+
function isValidInferenceKey(value) {
|
|
85
|
+
if (typeof value !== "object" || value === null)
|
|
86
|
+
return false;
|
|
87
|
+
const k = value;
|
|
88
|
+
return (typeof k.token === "string" &&
|
|
89
|
+
k.token.length > 0 &&
|
|
90
|
+
typeof k.expiresAt === "number" &&
|
|
91
|
+
(k.id === null || typeof k.id === "string"));
|
|
92
|
+
}
|
|
93
|
+
/** Keep only the well-formed entries from a parsed `inferenceKeys` map; undefined when none. */
|
|
94
|
+
function sanitizeInferenceKeys(value) {
|
|
95
|
+
if (typeof value !== "object" || value === null)
|
|
96
|
+
return undefined;
|
|
97
|
+
const out = {};
|
|
98
|
+
for (const [k, v] of Object.entries(value)) {
|
|
99
|
+
if (isValidInferenceKey(v))
|
|
100
|
+
out[k] = v;
|
|
101
|
+
}
|
|
102
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
103
|
+
}
|
|
65
104
|
//# sourceMappingURL=credentials.js.map
|
package/dist/credentials.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,kGAAkG;AAClG,WAAW;AACX,EAAE;AACF,kGAAkG;AAClG,+FAA+F;AAC/F,oGAAoG;AAEpG,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { CliConfig } from "../config.js";
|
|
2
|
+
import { CredentialStore } from "../credentials.js";
|
|
3
|
+
import type { FetchLike } from "../auth/pkce.js";
|
|
4
|
+
export interface ResolveInferenceEnvDeps {
|
|
5
|
+
config: CliConfig;
|
|
6
|
+
/** The org to bill managed inference to (from `--org` or the project link). Null = unresolved. */
|
|
7
|
+
orgSlug: string | null;
|
|
8
|
+
/** The effective pre-overlay env (process env merged with the run's .env) — so a user-set
|
|
9
|
+
* BOARDWALK_API_KEY is honored and we mint nothing. */
|
|
10
|
+
env: NodeJS.ProcessEnv;
|
|
11
|
+
/** A one-off bearer (`--token`) to mint with, instead of the stored session. */
|
|
12
|
+
tokenFlag?: string | undefined;
|
|
13
|
+
store?: CredentialStore;
|
|
14
|
+
fetchImpl?: FetchLike;
|
|
15
|
+
now?: number;
|
|
16
|
+
/** Diagnostics sink — defaults to console.error so hints never pollute the stdout event stream. */
|
|
17
|
+
log?: (line: string) => void;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Resolve the env overlay that lets `boardwalk dev`'s engine reach Boardwalk managed inference for
|
|
21
|
+
* `agent()` calls naming no provider: `{ BOARDWALK_API_KEY, BOARDWALK_INFERENCE_URL }`.
|
|
22
|
+
*
|
|
23
|
+
* Returns an EMPTY overlay (and the engine then errors actionably only if the program really calls
|
|
24
|
+
* the default provider) when: the user already set BOARDWALK_API_KEY; no org was resolvable; or the
|
|
25
|
+
* mint failed / no session (a hint is logged to stderr). Never throws.
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveInferenceEnv(deps: ResolveInferenceEnvDeps): Promise<Record<string, string>>;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// Managed-inference wiring for `boardwalk dev`.
|
|
2
|
+
//
|
|
3
|
+
// The north star (THE_OPEN_SOURCE_MISSION §4.5): install → login → `agent()` works locally, no
|
|
4
|
+
// keys to paste. The embedded engine's default `boardwalk` provider reaches the hosted inference
|
|
5
|
+
// gateway using a short-lived, inference-ONLY key minted from the login session. This module turns
|
|
6
|
+
// "the logged-in user + an org" into the two env vars the engine reads (BOARDWALK_API_KEY +
|
|
7
|
+
// BOARDWALK_INFERENCE_URL), minting + caching that key on demand.
|
|
8
|
+
//
|
|
9
|
+
// Best-effort by design: it NEVER throws. A logged-out author can still `dev` an agent-free
|
|
10
|
+
// workflow; only a program that actually calls the default provider hits the engine's (actionable)
|
|
11
|
+
// "no inference set up" error.
|
|
12
|
+
import { BoardwalkClient } from "../client.js";
|
|
13
|
+
import { CredentialStore } from "../credentials.js";
|
|
14
|
+
import { resolveToken } from "../auth/resolve.js";
|
|
15
|
+
/** Re-mint when a cached key is within this of expiry, so a run can't start with a key that dies
|
|
16
|
+
* mid-run. */
|
|
17
|
+
const EXPIRY_SKEW_MS = 24 * 60 * 60 * 1000; // 1 day
|
|
18
|
+
/** Fallback cache TTL when the server doesn't report an expiry (it does today). */
|
|
19
|
+
const FALLBACK_TTL_MS = 30 * 24 * 60 * 60 * 1000; // 30 days
|
|
20
|
+
/**
|
|
21
|
+
* Resolve the env overlay that lets `boardwalk dev`'s engine reach Boardwalk managed inference for
|
|
22
|
+
* `agent()` calls naming no provider: `{ BOARDWALK_API_KEY, BOARDWALK_INFERENCE_URL }`.
|
|
23
|
+
*
|
|
24
|
+
* Returns an EMPTY overlay (and the engine then errors actionably only if the program really calls
|
|
25
|
+
* the default provider) when: the user already set BOARDWALK_API_KEY; no org was resolvable; or the
|
|
26
|
+
* mint failed / no session (a hint is logged to stderr). Never throws.
|
|
27
|
+
*/
|
|
28
|
+
export async function resolveInferenceEnv(deps) {
|
|
29
|
+
const log = deps.log ??
|
|
30
|
+
((line) => {
|
|
31
|
+
console.error(line);
|
|
32
|
+
});
|
|
33
|
+
const now = deps.now ?? Date.now();
|
|
34
|
+
// 1. The user already provided a key (shell env or .env) — respect it, mint nothing.
|
|
35
|
+
if (nonEmpty(deps.env.BOARDWALK_API_KEY))
|
|
36
|
+
return {};
|
|
37
|
+
// 2. Managed inference bills an org; without one we can't mint.
|
|
38
|
+
if (deps.orgSlug === null)
|
|
39
|
+
return {};
|
|
40
|
+
const store = deps.store ?? CredentialStore.atConfigDir(deps.config.configDir);
|
|
41
|
+
const inferenceUrl = `${deps.config.apiBaseUrl}/v1/inference`;
|
|
42
|
+
const cacheKey = `${deps.config.apiBaseUrl}|${deps.orgSlug}`;
|
|
43
|
+
// 3. Reuse a cached key that won't expire mid-run.
|
|
44
|
+
const cached = store.getInferenceKey(cacheKey);
|
|
45
|
+
if (cached !== null && cached.expiresAt - EXPIRY_SKEW_MS > now) {
|
|
46
|
+
return { BOARDWALK_API_KEY: cached.token, BOARDWALK_INFERENCE_URL: inferenceUrl };
|
|
47
|
+
}
|
|
48
|
+
// 4. Need to mint, but only if a credential is even available. With no session and no --token,
|
|
49
|
+
// stay SILENT — an agent-free workflow runs fine, and an agent() one gets the engine's own
|
|
50
|
+
// actionable "no inference set up" error. (We'd only nag every agent-free run otherwise.)
|
|
51
|
+
if (deps.tokenFlag === undefined && store.getSession() === null)
|
|
52
|
+
return {};
|
|
53
|
+
// 5. Mint a fresh key with the login session (or --token), and cache it.
|
|
54
|
+
try {
|
|
55
|
+
const token = await resolveToken({
|
|
56
|
+
config: deps.config,
|
|
57
|
+
store,
|
|
58
|
+
...(deps.tokenFlag !== undefined ? { tokenFlag: deps.tokenFlag } : {}),
|
|
59
|
+
...(deps.fetchImpl !== undefined ? { fetchImpl: deps.fetchImpl } : {}),
|
|
60
|
+
...(deps.now !== undefined ? { now: deps.now } : {}),
|
|
61
|
+
});
|
|
62
|
+
const client = new BoardwalkClient({
|
|
63
|
+
baseUrl: deps.config.apiBaseUrl,
|
|
64
|
+
token,
|
|
65
|
+
...(deps.fetchImpl !== undefined ? { fetchImpl: deps.fetchImpl } : {}),
|
|
66
|
+
});
|
|
67
|
+
const minted = await client.mintInferenceKey(deps.orgSlug);
|
|
68
|
+
store.putInferenceKey(cacheKey, {
|
|
69
|
+
token: minted.token,
|
|
70
|
+
expiresAt: minted.expiresAt ?? now + FALLBACK_TTL_MS,
|
|
71
|
+
id: minted.id,
|
|
72
|
+
});
|
|
73
|
+
return { BOARDWALK_API_KEY: minted.token, BOARDWALK_INFERENCE_URL: inferenceUrl };
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
log(`note: agent() defaults to Boardwalk managed inference, but I couldn't get an inference ` +
|
|
77
|
+
`key for org "${deps.orgSlug}" (${err instanceof Error ? err.message : "unknown error"}). ` +
|
|
78
|
+
"Run `boardwalk login`, set BOARDWALK_API_KEY, or name a provider explicitly.");
|
|
79
|
+
return {};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
function nonEmpty(value) {
|
|
83
|
+
return value !== undefined && value.trim().length > 0;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=inference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inference.js","sourceRoot":"","sources":["../../src/dev/inference.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -62,6 +62,10 @@ function buildProgram() {
|
|
|
62
62
|
.option("--env <path>", "env file resolving secrets for the run (default: .env)")
|
|
63
63
|
.option("--verbose", "stream every event channel (agent turns, tool calls, logs)", false)
|
|
64
64
|
.option("--stream <channels>", "comma-separated channels: lifecycle,phase,output,log,agent")
|
|
65
|
+
// agent() with no provider uses Boardwalk managed inference; --org bills it (else the project
|
|
66
|
+
// link's org, else set BOARDWALK_API_KEY / name a provider). Needs `boardwalk login`.
|
|
67
|
+
.option("--org <slug>", "org to bill managed inference to (for agent() with no provider)")
|
|
68
|
+
.option("--token <token>", "bearer to mint the inference key with, instead of stored login")
|
|
65
69
|
.description("Run the workflow now, locally (no account needed).")
|
|
66
70
|
.action(async (file, options) => {
|
|
67
71
|
const { runDev } = await import("./commands/dev.js");
|
|
@@ -71,6 +75,8 @@ function buildProgram() {
|
|
|
71
75
|
envFile: options.env,
|
|
72
76
|
verbose: options.verbose ?? false,
|
|
73
77
|
stream: options.stream,
|
|
78
|
+
org: options.org,
|
|
79
|
+
token: options.token,
|
|
74
80
|
});
|
|
75
81
|
});
|
|
76
82
|
program
|
|
@@ -81,6 +87,15 @@ function buildProgram() {
|
|
|
81
87
|
const { runCheck } = await import("./commands/check.js");
|
|
82
88
|
await runCheck({ file });
|
|
83
89
|
});
|
|
90
|
+
program
|
|
91
|
+
.command("build")
|
|
92
|
+
.argument("<file>", "workflow program file, or a package directory")
|
|
93
|
+
.option("--out <path>", "output file (default: <workflow-name>.mjs in the cwd)")
|
|
94
|
+
.description("Bundle a workflow to one deployable .mjs (for a self-hosted server's workflows dir).")
|
|
95
|
+
.action(async (file, options) => {
|
|
96
|
+
const { runBuild } = await import("./commands/build.js");
|
|
97
|
+
await runBuild({ file, out: options.out });
|
|
98
|
+
});
|
|
84
99
|
program
|
|
85
100
|
.command("login")
|
|
86
101
|
.description("Authenticate via browser (OAuth PKCE), or store an API key with --token.")
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,EAAE;AACF,YAAY;AACZ,yFAAyF;AACzF,2FAA2F;AAC3F,uFAAuF;AACvF,+EAA+E;AAC/E,kEAAkE;AAClE,kEAAkE;AAClE,sFAAsF;AACtF,0FAA0F;AAC1F,0EAA0E;AAC1E,EAAE;AACF,mGAAmG;AACnG,EAAE;AACF,gGAAgG;AAChG,oGAAoG;AAEpG,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,4FAA4F;AAC5F,0FAA0F;AAC1F,+CAA+C;AAC/C,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACzE,MAAM,OAAO,GAAY,MAAM,CAAC,OAAO,CAAC;YACxC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,OAAO,CAAC;QACxE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;IAC9E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,EAAE;AACF,YAAY;AACZ,yFAAyF;AACzF,2FAA2F;AAC3F,uFAAuF;AACvF,+EAA+E;AAC/E,kEAAkE;AAClE,kEAAkE;AAClE,sFAAsF;AACtF,0FAA0F;AAC1F,0EAA0E;AAC1E,EAAE;AACF,mGAAmG;AACnG,EAAE;AACF,gGAAgG;AAChG,oGAAoG;AAEpG,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,4FAA4F;AAC5F,0FAA0F;AAC1F,+CAA+C;AAC/C,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACzE,MAAM,OAAO,GAAY,MAAM,CAAC,OAAO,CAAC;YACxC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,OAAO,CAAC;QACxE,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4EAA4E;IAC9E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;AA4B9B,SAAS,YAAY;IACnB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACJ,IAAI,CAAC,WAAW,CAAC;SACjB,WAAW,CAAC,iDAAiD,CAAC;SAC9D,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,OAAO,EAAE,iDAAiD,EAAE,GAAG,CAAC;SACzE,MAAM,CACL,mBAAmB,EACnB,wEAAwE,EACxE,OAAO,CACR;SACA,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,KAAK,EAAE,GAAW,EAAE,OAA8B,EAAE,EAAE;QAC5D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACvD,MAAM,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,QAAQ,EAAE,+CAA+C,CAAC;SACnE,MAAM,CAAC,gBAAgB,EAAE,mDAAmD,CAAC;QAC9E,uFAAuF;QACvF,4FAA4F;SAC3F,MAAM,CAAC,cAAc,EAAE,wDAAwD,CAAC;SAChF,MAAM,CAAC,WAAW,EAAE,4DAA4D,EAAE,KAAK,CAAC;SACxF,MAAM,CAAC,qBAAqB,EAAE,4DAA4D,CAAC;QAC5F,8FAA8F;QAC9F,sFAAsF;SACrF,MAAM,CAAC,cAAc,EAAE,iEAAiE,CAAC;SACzF,MAAM,CAAC,iBAAiB,EAAE,gEAAgE,CAAC;SAC3F,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAsB,EAAE,EAAE;QACrD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACrD,MAAM,MAAM,CAAC;YACX,IAAI;YACJ,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,OAAO,EAAE,OAAO,CAAC,GAAG;YACpB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;YACjC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,QAAQ,CAAC,QAAQ,EAAE,+CAA+C,CAAC;SACnE,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACzD,MAAM,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,QAAQ,CAAC,QAAQ,EAAE,+CAA+C,CAAC;SACnE,MAAM,CAAC,cAAc,EAAE,uDAAuD,CAAC;SAC/E,WAAW,CACV,sFAAsF,CACvF;SACA,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAwB,EAAE,EAAE;QACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACzD,MAAM,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,0EAA0E,CAAC;SACvF,MAAM,CAAC,eAAe,EAAE,wDAAwD,CAAC;SACjF,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC5C,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAC3D,MAAM,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAC5D,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;QAC5D,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,QAAQ,EAAE,+CAA+C,CAAC;SACnE,MAAM,CAAC,cAAc,EAAE,8DAA8D,CAAC;SACtF,MAAM,CAAC,WAAW,EAAE,mDAAmD,EAAE,KAAK,CAAC;SAC/E,MAAM,CAAC,iBAAiB,EAAE,yDAAyD,CAAC;SACpF,WAAW,CAAC,kDAAkD,CAAC;SAC/D,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAyB,EAAE,EAAE;QACxD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC3D,MAAM,SAAS,CACb;YACE,IAAI;YACJ,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,EACD,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,QAAQ,EAAE,+CAA+C,CAAC;SACnE,MAAM,CAAC,cAAc,EAAE,yDAAyD,CAAC;SACjF,MAAM,CAAC,gBAAgB,EAAE,mDAAmD,CAAC;SAC7E,MAAM,CAAC,WAAW,EAAE,wDAAwD,CAAC;SAC7E,MAAM,CAAC,iBAAiB,EAAE,yDAAyD,CAAC;SACpF,WAAW,CAAC,kEAAkE,CAAC;SAC/E,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAsB,EAAE,EAAE;QACrD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACrD,MAAM,MAAM,CACV;YACE,IAAI;YACJ,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,IAAI,KAAK,KAAK;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,EACD,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;SACxC,MAAM,CAAC,iBAAiB,EAAE,yDAAyD,CAAC;SACpF,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,OAA2B,EAAE,EAAE;QAC3D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC3D,MAAM,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,YAAY,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS;YAAE,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC,CAAC"}
|