@dbx-tools/cli 0.9.132 → 0.9.136
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 +73 -13
- package/index.ts +10 -1
- package/lib/index.d.ts +10 -1
- package/lib/index.js +7 -2
- package/lib/src/brand/cli.d.ts +15 -0
- package/lib/src/brand/cli.js +36 -0
- package/lib/src/brand/export.d.ts +27 -0
- package/lib/src/brand/export.js +106 -0
- package/lib/src/brand/index.d.ts +9 -0
- package/lib/src/brand/index.js +9 -0
- package/lib/src/brand/options.d.ts +19 -0
- package/lib/src/brand/options.js +44 -0
- package/lib/src/brand/run.d.ts +17 -0
- package/lib/src/brand/run.js +59 -0
- package/lib/src/cli.js +5 -2
- package/lib/src/tunnel/cli.js +2 -1
- package/lib/src/tunnel/options.d.ts +1 -0
- package/lib/src/tunnel/options.js +5 -1
- package/lib/src/tunnel/proxy.d.ts +2 -0
- package/lib/src/tunnel/proxy.js +8 -3
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +55 -19
- package/src/brand/cli.ts +52 -0
- package/src/brand/export.ts +144 -0
- package/src/brand/index.ts +13 -0
- package/src/brand/options.ts +48 -0
- package/src/brand/run.ts +85 -0
- package/src/cli.ts +10 -1
- package/src/tunnel/cli.ts +1 -0
- package/src/tunnel/options.ts +4 -0
- package/src/tunnel/proxy.ts +12 -1
package/README.md
CHANGED
|
@@ -14,6 +14,34 @@ bun add --global @dbx-tools/cli
|
|
|
14
14
|
profile are resolved automatically. Pass `--profile` only to override that
|
|
15
15
|
selection. Examples that use `MY-PROFILE` show the explicit form.
|
|
16
16
|
|
|
17
|
+
## Export a brand package
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
dbx brand "A neighborhood coffee company for morning commuters"
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The command researches the broader web for brand facts and design direction,
|
|
24
|
+
then visits matching iOS App Store and Google Play pages for supplemental
|
|
25
|
+
visual references. It uses the downloaded icons and screenshots during
|
|
26
|
+
multimodal synthesis without treating the mobile designs as the full brand.
|
|
27
|
+
|
|
28
|
+
The default `branding/` directory contains:
|
|
29
|
+
|
|
30
|
+
- `brand.yaml`, compatible with the shared dbx-tools brand context.
|
|
31
|
+
- `brand-package.json`, with source provenance and visual-reference metadata.
|
|
32
|
+
- `references/ios/` and `references/android/`, with the mobile images used for
|
|
33
|
+
visual research.
|
|
34
|
+
|
|
35
|
+
Use `--name` or `--website` to disambiguate the prompt, `--output` to select a
|
|
36
|
+
different package directory, and `--force` to replace an existing package:
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
dbx brand "Retail analytics for store operators" \
|
|
40
|
+
--name "Acme Retail" \
|
|
41
|
+
--website https://acme.example \
|
|
42
|
+
--output branding/acme-retail
|
|
43
|
+
```
|
|
44
|
+
|
|
17
45
|
## Serve models to local tools
|
|
18
46
|
|
|
19
47
|
```sh
|
|
@@ -145,8 +173,8 @@ bun run barrels
|
|
|
145
173
|
|
|
146
174
|
See [@dbx-tools/projen](../../../../projen) for workspace configuration and
|
|
147
175
|
generation. Command implementations are available from `@dbx-tools/cli/appkit`,
|
|
148
|
-
`/auth`, `/genie`, `/graphiti`, `/lakebase-proxy`, `/model-gateway`,
|
|
149
|
-
`/tunnel` when a Node caller needs to embed one parser.
|
|
176
|
+
`/auth`, `/brand`, `/genie`, `/graphiti`, `/lakebase-proxy`, `/model-gateway`,
|
|
177
|
+
and `/tunnel` when a Node caller needs to embed one parser.
|
|
150
178
|
|
|
151
179
|
<!-- cli-reference:start -->
|
|
152
180
|
|
|
@@ -154,7 +182,7 @@ generation. Command implementations are available from `@dbx-tools/cli/appkit`,
|
|
|
154
182
|
|
|
155
183
|
### `dbx`
|
|
156
184
|
|
|
157
|
-
Databricks developer tools: workspace lifecycle, AppKit env, auth, tunnels, and local proxies
|
|
185
|
+
Databricks developer tools: workspace lifecycle, AppKit env, auth, brand generation, tunnels, and local proxies
|
|
158
186
|
|
|
159
187
|
```sh
|
|
160
188
|
dbx [command]
|
|
@@ -162,16 +190,17 @@ dbx [command]
|
|
|
162
190
|
|
|
163
191
|
#### Commands
|
|
164
192
|
|
|
165
|
-
| Command | Description
|
|
166
|
-
| -------------------------------- |
|
|
167
|
-
| `dev [projenArgs...]` | Bootstrap or repair a dbx-tools workspace, then forward to projen
|
|
168
|
-
| `appkit` | AppKit helpers: resolve the environment an AppKit app would start with.
|
|
169
|
-
| `auth [options]` | Authenticate to Databricks with user or machine OAuth
|
|
170
|
-
| `
|
|
171
|
-
| `
|
|
172
|
-
| `
|
|
173
|
-
| `
|
|
174
|
-
| `
|
|
193
|
+
| Command | Description |
|
|
194
|
+
| -------------------------------- | ---------------------------------------------------------------------------------- |
|
|
195
|
+
| `dev [projenArgs...]` | Bootstrap or repair a dbx-tools workspace, then forward to projen |
|
|
196
|
+
| `appkit` | AppKit helpers: resolve the environment an AppKit app would start with. |
|
|
197
|
+
| `auth [options]` | Authenticate to Databricks with user or machine OAuth |
|
|
198
|
+
| `brand [options] <prompt>` | Research a brand brief and export brand.yaml with web and mobile visual references |
|
|
199
|
+
| `tunnel [options] [command...]` | Front a command with a public tunnel and passwordless auth |
|
|
200
|
+
| `lakebase-proxy [options]` | Run a loopback PostgreSQL proxy for Databricks Lakebase |
|
|
201
|
+
| `model-gateway [options]` | Run or manage the AppKit Databricks model gateway |
|
|
202
|
+
| `genie [options] [genieArgs...]` | Run Genie Code through an authenticated local Databricks model gateway |
|
|
203
|
+
| `graphiti [options]` | Run Graphiti or manage its current-user desktop service |
|
|
175
204
|
|
|
176
205
|
### `dbx dev`
|
|
177
206
|
|
|
@@ -307,6 +336,34 @@ Show the resolved authentication client configuration
|
|
|
307
336
|
dbx auth status
|
|
308
337
|
```
|
|
309
338
|
|
|
339
|
+
### `dbx brand`
|
|
340
|
+
|
|
341
|
+
Research a brand brief and export brand.yaml with web and mobile visual references
|
|
342
|
+
|
|
343
|
+
```sh
|
|
344
|
+
dbx brand [options] <prompt>
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
#### Arguments
|
|
348
|
+
|
|
349
|
+
| Argument | Description |
|
|
350
|
+
| -------- | ---------------------------------------------------- |
|
|
351
|
+
| `prompt` | brand, company, product, or design brief to research |
|
|
352
|
+
|
|
353
|
+
#### Options
|
|
354
|
+
|
|
355
|
+
| Option | Description |
|
|
356
|
+
| --------------------------------- | ------------------------------------------------------------------------------------------------------ |
|
|
357
|
+
| `-p, --profile <value>` | Databricks CLI profile. (env: DATABRICKS_CONFIG_PROFILE) |
|
|
358
|
+
| `-n, --name <value>` | Known canonical brand name. (env: NAME) |
|
|
359
|
+
| `-w, --website <value>` | Known official HTTPS website. (env: WEBSITE) |
|
|
360
|
+
| `-o, --output <value>` | Output directory for brand.yaml, provenance, and visual references. (default: "branding", env: OUTPUT) |
|
|
361
|
+
| `--model <value>` | Optional Databricks model preference for brand synthesis. (env: MODEL) |
|
|
362
|
+
| `--max-sources <value>` | Maximum general web sources to read. (default: 4, env: MAX_SOURCES) |
|
|
363
|
+
| `-s, --source-max-length <value>` | Maximum characters retained from each source page. (default: 8000, env: SOURCE_MAX_LENGTH) |
|
|
364
|
+
| `-f, --force` | Replace files in an existing output directory. (default: false, env: FORCE) |
|
|
365
|
+
| `--no-force` | Disable replace files in an existing output directory. |
|
|
366
|
+
|
|
310
367
|
### `dbx tunnel`
|
|
311
368
|
|
|
312
369
|
Front a command with a public tunnel and passwordless auth
|
|
@@ -333,6 +390,7 @@ dbx tunnel [options] [command] [command...]
|
|
|
333
390
|
| `--allow <value>` | Email allow-list patterns. (env: TUNNEL_AUTH_ALLOW) |
|
|
334
391
|
| `--subject <value>` | Verification email subject. (env: TUNNEL_AUTH_SUBJECT) |
|
|
335
392
|
| `--brand-name <value>` | Verification email brand name. (env: TUNNEL_AUTH_BRAND_NAME) |
|
|
393
|
+
| `--passkey-name-prefix <value>` | Prefix for humanized tunnel passkey names. (env: TUNNEL_AUTH_PASSKEY_NAME_PREFIX) |
|
|
336
394
|
| `-m, --message <value>` | Verification email message. (env: TUNNEL_AUTH_MESSAGE) |
|
|
337
395
|
| `--session-ttl-seconds <value>` | Session lifetime in seconds. (env: TUNNEL_AUTH_SESSION_TTL) |
|
|
338
396
|
| `-c, --code-ttl-seconds <value>` | One-time-code lifetime in seconds. (env: TUNNEL_AUTH_CODE_TTL) |
|
|
@@ -385,6 +443,7 @@ dbx tunnel run [options] <command...>
|
|
|
385
443
|
| `--allow <value>` | Email allow-list patterns. (env: TUNNEL_AUTH_ALLOW) |
|
|
386
444
|
| `--subject <value>` | Verification email subject. (env: TUNNEL_AUTH_SUBJECT) |
|
|
387
445
|
| `--brand-name <value>` | Verification email brand name. (env: TUNNEL_AUTH_BRAND_NAME) |
|
|
446
|
+
| `--passkey-name-prefix <value>` | Prefix for humanized tunnel passkey names. (env: TUNNEL_AUTH_PASSKEY_NAME_PREFIX) |
|
|
388
447
|
| `-m, --message <value>` | Verification email message. (env: TUNNEL_AUTH_MESSAGE) |
|
|
389
448
|
| `--session-ttl-seconds <value>` | Session lifetime in seconds. (env: TUNNEL_AUTH_SESSION_TTL) |
|
|
390
449
|
| `-c, --code-ttl-seconds <value>` | One-time-code lifetime in seconds. (env: TUNNEL_AUTH_CODE_TTL) |
|
|
@@ -423,6 +482,7 @@ dbx tunnel status [options]
|
|
|
423
482
|
| `--allow <value>` | Email allow-list patterns. (env: TUNNEL_AUTH_ALLOW) |
|
|
424
483
|
| `--subject <value>` | Verification email subject. (env: TUNNEL_AUTH_SUBJECT) |
|
|
425
484
|
| `--brand-name <value>` | Verification email brand name. (env: TUNNEL_AUTH_BRAND_NAME) |
|
|
485
|
+
| `--passkey-name-prefix <value>` | Prefix for humanized tunnel passkey names. (env: TUNNEL_AUTH_PASSKEY_NAME_PREFIX) |
|
|
426
486
|
| `-m, --message <value>` | Verification email message. (env: TUNNEL_AUTH_MESSAGE) |
|
|
427
487
|
| `--session-ttl-seconds <value>` | Session lifetime in seconds. (env: TUNNEL_AUTH_SESSION_TTL) |
|
|
428
488
|
| `-c, --code-ttl-seconds <value>` | One-time-code lifetime in seconds. (env: TUNNEL_AUTH_CODE_TTL) |
|
package/index.ts
CHANGED
|
@@ -3,12 +3,16 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.136";
|
|
7
7
|
export * as appkitCli from "./src/appkit/cli.ts";
|
|
8
8
|
export * as appkitEnvExport from "./src/appkit/env-export.ts";
|
|
9
9
|
export * as authCli from "./src/auth/cli.ts";
|
|
10
10
|
export * as authOptions from "./src/auth/options.ts";
|
|
11
11
|
export * as bootstrap from "./src/bootstrap.ts";
|
|
12
|
+
export * as brandCli from "./src/brand/cli.ts";
|
|
13
|
+
export * as brandExport from "./src/brand/export.ts";
|
|
14
|
+
export * as brandOptions from "./src/brand/options.ts";
|
|
15
|
+
export * as brandRun from "./src/brand/run.ts";
|
|
12
16
|
export * as bun from "./src/bun.ts";
|
|
13
17
|
export * as cli from "./src/cli.ts";
|
|
14
18
|
export * as genieCodeCli from "./src/genie-code/cli.ts";
|
|
@@ -35,6 +39,11 @@ export { EnvExportFormatSchema, EnvCommandOptionsSchema } from "./src/appkit/env
|
|
|
35
39
|
export type { EnvExportFormat, EnvCommandOptions } from "./src/appkit/env-export.ts";
|
|
36
40
|
export { AuthCliOptionsSchema, TokenCommandOptionsSchema } from "./src/auth/options.ts";
|
|
37
41
|
export type { AuthCliOptions, TokenCommandOptions } from "./src/auth/options.ts";
|
|
42
|
+
export type { BrandCliDependencies } from "./src/brand/cli.ts";
|
|
43
|
+
export type { WriteBrandPackageOptions, WrittenBrandPackage } from "./src/brand/export.ts";
|
|
44
|
+
export { BrandExportOptionsSchema } from "./src/brand/options.ts";
|
|
45
|
+
export type { BrandExportOptions } from "./src/brand/options.ts";
|
|
46
|
+
export type { BrandExportCallbacks } from "./src/brand/run.ts";
|
|
38
47
|
export { resolveBunArgv } from "./src/bun.ts";
|
|
39
48
|
export type { GenieCodeCliDependencies } from "./src/genie-code/cli.ts";
|
|
40
49
|
export { GENIE_CODE_GATEWAY_PROVIDER } from "./src/genie-code/config.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.136";
|
|
3
3
|
export * as appkitCli from "./src/appkit/cli.ts";
|
|
4
4
|
export * as appkitEnvExport from "./src/appkit/env-export.ts";
|
|
5
5
|
export * as authCli from "./src/auth/cli.ts";
|
|
6
6
|
export * as authOptions from "./src/auth/options.ts";
|
|
7
7
|
export * as bootstrap from "./src/bootstrap.ts";
|
|
8
|
+
export * as brandCli from "./src/brand/cli.ts";
|
|
9
|
+
export * as brandExport from "./src/brand/export.ts";
|
|
10
|
+
export * as brandOptions from "./src/brand/options.ts";
|
|
11
|
+
export * as brandRun from "./src/brand/run.ts";
|
|
8
12
|
export * as bun from "./src/bun.ts";
|
|
9
13
|
export * as cli from "./src/cli.ts";
|
|
10
14
|
export * as genieCodeCli from "./src/genie-code/cli.ts";
|
|
@@ -31,6 +35,11 @@ export { EnvExportFormatSchema, EnvCommandOptionsSchema } from "./src/appkit/env
|
|
|
31
35
|
export type { EnvExportFormat, EnvCommandOptions } from "./src/appkit/env-export.ts";
|
|
32
36
|
export { AuthCliOptionsSchema, TokenCommandOptionsSchema } from "./src/auth/options.ts";
|
|
33
37
|
export type { AuthCliOptions, TokenCommandOptions } from "./src/auth/options.ts";
|
|
38
|
+
export type { BrandCliDependencies } from "./src/brand/cli.ts";
|
|
39
|
+
export type { WriteBrandPackageOptions, WrittenBrandPackage } from "./src/brand/export.ts";
|
|
40
|
+
export { BrandExportOptionsSchema } from "./src/brand/options.ts";
|
|
41
|
+
export type { BrandExportOptions } from "./src/brand/options.ts";
|
|
42
|
+
export type { BrandExportCallbacks } from "./src/brand/run.ts";
|
|
34
43
|
export { resolveBunArgv } from "./src/bun.ts";
|
|
35
44
|
export type { GenieCodeCliDependencies } from "./src/genie-code/cli.ts";
|
|
36
45
|
export { GENIE_CODE_GATEWAY_PROVIDER } from "./src/genie-code/config.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/cli";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.136";
|
|
6
6
|
export * as appkitCli from "./src/appkit/cli.js";
|
|
7
7
|
export * as appkitEnvExport from "./src/appkit/env-export.js";
|
|
8
8
|
export * as authCli from "./src/auth/cli.js";
|
|
9
9
|
export * as authOptions from "./src/auth/options.js";
|
|
10
10
|
export * as bootstrap from "./src/bootstrap.js";
|
|
11
|
+
export * as brandCli from "./src/brand/cli.js";
|
|
12
|
+
export * as brandExport from "./src/brand/export.js";
|
|
13
|
+
export * as brandOptions from "./src/brand/options.js";
|
|
14
|
+
export * as brandRun from "./src/brand/run.js";
|
|
11
15
|
export * as bun from "./src/bun.js";
|
|
12
16
|
export * as cli from "./src/cli.js";
|
|
13
17
|
export * as genieCodeCli from "./src/genie-code/cli.js";
|
|
@@ -32,6 +36,7 @@ export * as tunnelOptions from "./src/tunnel/options.js";
|
|
|
32
36
|
export * as tunnelProxy from "./src/tunnel/proxy.js";
|
|
33
37
|
export { EnvExportFormatSchema, EnvCommandOptionsSchema } from "./src/appkit/env-export.js";
|
|
34
38
|
export { AuthCliOptionsSchema, TokenCommandOptionsSchema } from "./src/auth/options.js";
|
|
39
|
+
export { BrandExportOptionsSchema } from "./src/brand/options.js";
|
|
35
40
|
export { resolveBunArgv } from "./src/bun.js";
|
|
36
41
|
export { GENIE_CODE_GATEWAY_PROVIDER } from "./src/genie-code/config.js";
|
|
37
42
|
export { RUNNER_OPTIONS_ENV } from "./src/genie-code/runner.js";
|
|
@@ -42,4 +47,4 @@ export { SSL_REQUEST, CANCEL_REQUEST, PROTOCOL_3, PostgresProtocolError } from "
|
|
|
42
47
|
export { LakebaseProxy } from "./src/lakebase-proxy/proxy.js";
|
|
43
48
|
export { workspaceRoot } from "./src/root.js";
|
|
44
49
|
export { TunnelOptionsSchema } from "./src/tunnel/options.js";
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLGVBQWUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEtBQUssT0FBTyxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEtBQUssUUFBUSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLFlBQVksTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEtBQUssUUFBUSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxHQUFHLE1BQU0sY0FBYyxDQUFDO0FBQ3BDLE9BQU8sS0FBSyxZQUFZLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxLQUFLLGVBQWUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEtBQUssZ0JBQWdCLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxLQUFLLGdCQUFnQixNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxlQUFlLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxLQUFLLGdCQUFnQixNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxLQUFLLGVBQWUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEtBQUsseUJBQXlCLE1BQU0sc0NBQXNDLENBQUM7QUFDbEYsT0FBTyxLQUFLLGdCQUFnQixNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxvQkFBb0IsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEtBQUsscUJBQXFCLE1BQU0sa0NBQWtDLENBQUM7QUFDMUUsT0FBTyxLQUFLLGtCQUFrQixNQUFNLCtCQUErQixDQUFDO0FBQ3BFLE9BQU8sS0FBSyxlQUFlLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxLQUFLLGtCQUFrQixNQUFNLCtCQUErQixDQUFDO0FBQ3BFLE9BQU8sS0FBSyxJQUFJLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLFNBQVMsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEtBQUssYUFBYSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sS0FBSyxXQUFXLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFNUYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHlCQUF5QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJeEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUd6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsd0JBQXdCLEVBQUUscUJBQXFCLEVBQUUsNkJBQTZCLEVBQUUsdUJBQXVCLEVBQUUsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUzUCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUc1RSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU1RyxPQUFPLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVsSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEdFTkVSQVRFRCBieSBwcm9qZW4gd2F0Y2ggLSBETyBOT1QgRURJVC5cbi8vIFJlZ2VuZXJhdGVkIGZyb20gdGhlIGV4cG9ydGluZyBtb2R1bGVzIGluIC4vc3JjLlxuLy8gSGFuZCBlZGl0cyBhcmUgb3ZlcndyaXR0ZW4gb24gdGhlIG5leHQgd2F0Y2g7IHRoaXMgZmlsZSBpcyByZWFkLW9ubHkuXG5cbmV4cG9ydCBjb25zdCBQQUNLQUdFX0lERU5USUZJRVIgPSBcIkBkYngtdG9vbHMvY2xpXCI7XG5leHBvcnQgY29uc3QgUEFDS0FHRV9WRVJTSU9OID0gXCIwLjkuMTM2XCI7XG5leHBvcnQgKiBhcyBhcHBraXRDbGkgZnJvbSBcIi4vc3JjL2FwcGtpdC9jbGkudHNcIjtcbmV4cG9ydCAqIGFzIGFwcGtpdEVudkV4cG9ydCBmcm9tIFwiLi9zcmMvYXBwa2l0L2Vudi1leHBvcnQudHNcIjtcbmV4cG9ydCAqIGFzIGF1dGhDbGkgZnJvbSBcIi4vc3JjL2F1dGgvY2xpLnRzXCI7XG5leHBvcnQgKiBhcyBhdXRoT3B0aW9ucyBmcm9tIFwiLi9zcmMvYXV0aC9vcHRpb25zLnRzXCI7XG5leHBvcnQgKiBhcyBib290c3RyYXAgZnJvbSBcIi4vc3JjL2Jvb3RzdHJhcC50c1wiO1xuZXhwb3J0ICogYXMgYnJhbmRDbGkgZnJvbSBcIi4vc3JjL2JyYW5kL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgYnJhbmRFeHBvcnQgZnJvbSBcIi4vc3JjL2JyYW5kL2V4cG9ydC50c1wiO1xuZXhwb3J0ICogYXMgYnJhbmRPcHRpb25zIGZyb20gXCIuL3NyYy9icmFuZC9vcHRpb25zLnRzXCI7XG5leHBvcnQgKiBhcyBicmFuZFJ1biBmcm9tIFwiLi9zcmMvYnJhbmQvcnVuLnRzXCI7XG5leHBvcnQgKiBhcyBidW4gZnJvbSBcIi4vc3JjL2J1bi50c1wiO1xuZXhwb3J0ICogYXMgY2xpIGZyb20gXCIuL3NyYy9jbGkudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllQ29kZUNsaSBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9jbGkudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllQ29kZUNvbmZpZyBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9jb25maWcudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllQ29kZUluc3RhbGwgZnJvbSBcIi4vc3JjL2dlbmllLWNvZGUvaW5zdGFsbC50c1wiO1xuZXhwb3J0ICogYXMgZ2VuaWVDb2RlT3B0aW9ucyBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9vcHRpb25zLnRzXCI7XG5leHBvcnQgKiBhcyBnZW5pZUNvZGVSdW5uZXIgZnJvbSBcIi4vc3JjL2dlbmllLWNvZGUvcnVubmVyLnRzXCI7XG5leHBvcnQgKiBhcyBnZW5pZUNvZGVSdW50aW1lIGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL3J1bnRpbWUudHNcIjtcbmV4cG9ydCAqIGFzIGdyYXBoaXRpQ2xpIGZyb20gXCIuL3NyYy9ncmFwaGl0aS9jbGkudHNcIjtcbmV4cG9ydCAqIGFzIGdyYXBoaXRpT3B0aW9ucyBmcm9tIFwiLi9zcmMvZ3JhcGhpdGkvb3B0aW9ucy50c1wiO1xuZXhwb3J0ICogYXMgbGFrZWJhc2VQcm94eUNhbmNlbGxhdGlvbiBmcm9tIFwiLi9zcmMvbGFrZWJhc2UtcHJveHkvY2FuY2VsbGF0aW9uLnRzXCI7XG5leHBvcnQgKiBhcyBsYWtlYmFzZVByb3h5Q2xpIGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9jbGkudHNcIjtcbmV4cG9ydCAqIGFzIGxha2ViYXNlUHJveHlPcHRpb25zIGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9vcHRpb25zLnRzXCI7XG5leHBvcnQgKiBhcyBsYWtlYmFzZVByb3h5UHJvdG9jb2wgZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L3Byb3RvY29sLnRzXCI7XG5leHBvcnQgKiBhcyBsYWtlYmFzZVByb3h5UHJveHkgZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L3Byb3h5LnRzXCI7XG5leHBvcnQgKiBhcyBtb2RlbEdhdGV3YXlDbGkgZnJvbSBcIi4vc3JjL21vZGVsLWdhdGV3YXkvY2xpLnRzXCI7XG5leHBvcnQgKiBhcyBtb2RlbEdhdGV3YXlTZXJ2ZXIgZnJvbSBcIi4vc3JjL21vZGVsLWdhdGV3YXkvc2VydmVyLnRzXCI7XG5leHBvcnQgKiBhcyByb290IGZyb20gXCIuL3NyYy9yb290LnRzXCI7XG5leHBvcnQgKiBhcyB0dW5uZWxBcHAgZnJvbSBcIi4vc3JjL3R1bm5lbC9hcHAudHNcIjtcbmV4cG9ydCAqIGFzIHR1bm5lbENsaSBmcm9tIFwiLi9zcmMvdHVubmVsL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgdHVubmVsT3B0aW9ucyBmcm9tIFwiLi9zcmMvdHVubmVsL29wdGlvbnMudHNcIjtcbmV4cG9ydCAqIGFzIHR1bm5lbFByb3h5IGZyb20gXCIuL3NyYy90dW5uZWwvcHJveHkudHNcIjtcbmV4cG9ydCB7IEVudkV4cG9ydEZvcm1hdFNjaGVtYSwgRW52Q29tbWFuZE9wdGlvbnNTY2hlbWEgfSBmcm9tIFwiLi9zcmMvYXBwa2l0L2Vudi1leHBvcnQudHNcIjtcbmV4cG9ydCB0eXBlIHsgRW52RXhwb3J0Rm9ybWF0LCBFbnZDb21tYW5kT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9hcHBraXQvZW52LWV4cG9ydC50c1wiO1xuZXhwb3J0IHsgQXV0aENsaU9wdGlvbnNTY2hlbWEsIFRva2VuQ29tbWFuZE9wdGlvbnNTY2hlbWEgfSBmcm9tIFwiLi9zcmMvYXV0aC9vcHRpb25zLnRzXCI7XG5leHBvcnQgdHlwZSB7IEF1dGhDbGlPcHRpb25zLCBUb2tlbkNvbW1hbmRPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2F1dGgvb3B0aW9ucy50c1wiO1xuZXhwb3J0IHR5cGUgeyBCcmFuZENsaURlcGVuZGVuY2llcyB9IGZyb20gXCIuL3NyYy9icmFuZC9jbGkudHNcIjtcbmV4cG9ydCB0eXBlIHsgV3JpdGVCcmFuZFBhY2thZ2VPcHRpb25zLCBXcml0dGVuQnJhbmRQYWNrYWdlIH0gZnJvbSBcIi4vc3JjL2JyYW5kL2V4cG9ydC50c1wiO1xuZXhwb3J0IHsgQnJhbmRFeHBvcnRPcHRpb25zU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2JyYW5kL29wdGlvbnMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQnJhbmRFeHBvcnRPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2JyYW5kL29wdGlvbnMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQnJhbmRFeHBvcnRDYWxsYmFja3MgfSBmcm9tIFwiLi9zcmMvYnJhbmQvcnVuLnRzXCI7XG5leHBvcnQgeyByZXNvbHZlQnVuQXJndiB9IGZyb20gXCIuL3NyYy9idW4udHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVDb2RlQ2xpRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4vc3JjL2dlbmllLWNvZGUvY2xpLnRzXCI7XG5leHBvcnQgeyBHRU5JRV9DT0RFX0dBVEVXQVlfUFJPVklERVIgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9jb25maWcudHNcIjtcbmV4cG9ydCB0eXBlIHsgV3JpdGVHZW5pZUNvZGVDb25maWdPcHRpb25zLCBHZW5pZUNvZGVQcm9maWxlSG9tZSwgR2VuaWVDb2RlSG9tZSB9IGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL2NvbmZpZy50c1wiO1xuZXhwb3J0IHR5cGUgeyBJbnN0YWxsR2VuaWVDb2RlT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL2luc3RhbGwudHNcIjtcbmV4cG9ydCB7IFJVTk5FUl9PUFRJT05TX0VOViB9IGZyb20gXCIuL3NyYy9nZW5pZS1jb2RlL3J1bm5lci50c1wiO1xuZXhwb3J0IHR5cGUgeyBHZW5pZUNvZGVSdW50aW1lRGVwZW5kZW5jaWVzLCBSdW5HZW5pZUNvZGVPcHRpb25zLCBQcmVwYXJlZEdlbmllQ29kZVJ1bnRpbWUgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtY29kZS9ydW50aW1lLnRzXCI7XG5leHBvcnQgdHlwZSB7IEdyYXBoaXRpQ2xpRGVwZW5kZW5jaWVzLCBHcmFwaGl0aVNlcnZpY2VPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2dyYXBoaXRpL2NsaS50c1wiO1xuZXhwb3J0IHsgR1JBUEhJVElfREVGQVVMVFMsIEdyYXBoaXRpQ2xpT3B0aW9uc1NjaGVtYSwgR3JhcGhpdGlPcHRpb25zU2NoZW1hLCBSZXNvbHZlZEdyYXBoaXRpT3B0aW9uc1NjaGVtYSwgZ3JhcGhpdGlPcHRpb25PdmVycmlkZXMsIGdyYXBoaXRpT3B0aW9uc0Vudmlyb25tZW50LCBncmFwaGl0aU9wdGlvbnNGcm9tRW52aXJvbm1lbnQsIHJlc29sdmVHcmFwaGl0aU9wdGlvbnMgfSBmcm9tIFwiLi9zcmMvZ3JhcGhpdGkvb3B0aW9ucy50c1wiO1xuZXhwb3J0IHR5cGUgeyBHcmFwaGl0aU9wdGlvbnMsIFJlc29sdmVkR3JhcGhpdGlPcHRpb25zIH0gZnJvbSBcIi4vc3JjL2dyYXBoaXRpL29wdGlvbnMudHNcIjtcbmV4cG9ydCB7IENhbmNlbGxhdGlvblJlZ2lzdHJ5IH0gZnJvbSBcIi4vc3JjL2xha2ViYXNlLXByb3h5L2NhbmNlbGxhdGlvbi50c1wiO1xuZXhwb3J0IHR5cGUgeyBDYW5jZWxsYXRpb25UYXJnZXQsIENhbmNlbGxhdGlvbkZvcndhcmRlciB9IGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9jYW5jZWxsYXRpb24udHNcIjtcbmV4cG9ydCB0eXBlIHsgTGFrZWJhc2VQcm94eUNsaURlcGVuZGVuY2llcyB9IGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9jbGkudHNcIjtcbmV4cG9ydCB7IExha2ViYXNlUHJveHlPcHRpb25zU2NoZW1hLCBMYWtlYmFzZVByb3h5VXJsT3B0aW9uc1NjaGVtYSB9IGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9vcHRpb25zLnRzXCI7XG5leHBvcnQgdHlwZSB7IExha2ViYXNlUHJveHlPcHRpb25zLCBSZXNvbHZlZExha2ViYXNlUHJveHlPcHRpb25zLCBMYWtlYmFzZVByb3h5VXJsT3B0aW9ucyB9IGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9vcHRpb25zLnRzXCI7XG5leHBvcnQgeyBTU0xfUkVRVUVTVCwgQ0FOQ0VMX1JFUVVFU1QsIFBST1RPQ09MXzMsIFBvc3RncmVzUHJvdG9jb2xFcnJvciB9IGZyb20gXCIuL3NyYy9sYWtlYmFzZS1wcm94eS9wcm90b2NvbC50c1wiO1xuZXhwb3J0IHR5cGUgeyBTdGFydHVwTWVzc2FnZSwgQ2FuY2VsTWVzc2FnZSwgSW5pdGlhbE1lc3NhZ2UgfSBmcm9tIFwiLi9zcmMvbGFrZWJhc2UtcHJveHkvcHJvdG9jb2wudHNcIjtcbmV4cG9ydCB7IExha2ViYXNlUHJveHkgfSBmcm9tIFwiLi9zcmMvbGFrZWJhc2UtcHJveHkvcHJveHkudHNcIjtcbmV4cG9ydCB0eXBlIHsgTW9kZWxHYXRld2F5Q2xpRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4vc3JjL21vZGVsLWdhdGV3YXkvY2xpLnRzXCI7XG5leHBvcnQgeyB3b3Jrc3BhY2VSb290IH0gZnJvbSBcIi4vc3JjL3Jvb3QudHNcIjtcbmV4cG9ydCB7IFR1bm5lbE9wdGlvbnNTY2hlbWEgfSBmcm9tIFwiLi9zcmMvdHVubmVsL29wdGlvbnMudHNcIjtcbmV4cG9ydCB0eXBlIHsgVHVubmVsT3B0aW9ucywgUmVzb2x2ZWRUdW5uZWxPcHRpb25zIH0gZnJvbSBcIi4vc3JjL3R1bm5lbC9vcHRpb25zLnRzXCI7XG5leHBvcnQgdHlwZSB7IFByb3h5T3B0aW9ucyB9IGZyb20gXCIuL3NyYy90dW5uZWwvcHJveHkudHNcIjtcbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dbx brand` researched brand-package export.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from "commander";
|
|
7
|
+
import { exportBrandFromPrompt } from "./run.ts";
|
|
8
|
+
/** Replaceable command boundaries used by tests and embedders. */
|
|
9
|
+
export interface BrandCliDependencies {
|
|
10
|
+
readonly exportBrandFromPrompt?: typeof exportBrandFromPrompt;
|
|
11
|
+
readonly writeProgress?: (value: string) => void;
|
|
12
|
+
readonly writeResult?: (value: unknown) => void;
|
|
13
|
+
}
|
|
14
|
+
/** Build the lazily loaded `dbx brand` command. */
|
|
15
|
+
export declare function buildProgram(name?: string, dependencies?: BrandCliDependencies): Command;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dbx brand` researched brand-package export.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { addArgs, parseArgs } from "@dbx-tools/cli-args";
|
|
7
|
+
import { Command } from "commander";
|
|
8
|
+
import { BrandExportOptionsSchema } from "./options.js";
|
|
9
|
+
import { exportBrandFromPrompt } from "./run.js";
|
|
10
|
+
/** Build the lazily loaded `dbx brand` command. */
|
|
11
|
+
export function buildProgram(name = "dbx brand", dependencies = {}) {
|
|
12
|
+
const runExport = dependencies.exportBrandFromPrompt ?? exportBrandFromPrompt;
|
|
13
|
+
const writeProgress = dependencies.writeProgress ?? ((value) => process.stderr.write(`${value}\n`));
|
|
14
|
+
const writeResult = dependencies.writeResult ??
|
|
15
|
+
((value) => process.stdout.write(`${JSON.stringify(value, null, 2)}\n`));
|
|
16
|
+
const program = addArgs(new Command()
|
|
17
|
+
.name(name)
|
|
18
|
+
.description("Research a brand brief and export brand.yaml with web and mobile visual references"), BrandExportOptionsSchema);
|
|
19
|
+
program
|
|
20
|
+
.argument("<prompt>", "brand, company, product, or design brief to research")
|
|
21
|
+
.action(async (prompt) => {
|
|
22
|
+
const options = parseArgs(program, BrandExportOptionsSchema);
|
|
23
|
+
const result = await runExport(prompt, options, {
|
|
24
|
+
onProgress(event) {
|
|
25
|
+
writeProgress(`[${event.stage}] ${event.message}`);
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
writeResult({
|
|
29
|
+
brand: result.brandYamlPath,
|
|
30
|
+
manifest: result.manifestPath,
|
|
31
|
+
references: result.referenceCount,
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
return program;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JyYW5kL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXBDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFTakQsbURBQW1EO0FBQ25ELE1BQU0sVUFBVSxZQUFZLENBQUMsSUFBSSxHQUFHLFdBQVcsRUFBRSxlQUFxQyxFQUFFO0lBQ3RGLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxxQkFBcUIsSUFBSSxxQkFBcUIsQ0FBQztJQUM5RSxNQUFNLGFBQWEsR0FDakIsWUFBWSxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RixNQUFNLFdBQVcsR0FDZixZQUFZLENBQUMsV0FBVztRQUN4QixDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNwRixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQ3JCLElBQUksT0FBTyxFQUFFO1NBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQztTQUNWLFdBQVcsQ0FDVixvRkFBb0YsQ0FDckYsRUFDSCx3QkFBd0IsQ0FDekIsQ0FBQztJQUNGLE9BQU87U0FDSixRQUFRLENBQUMsVUFBVSxFQUFFLHNEQUFzRCxDQUFDO1NBQzVFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBYyxFQUFFLEVBQUU7UUFDL0IsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO1FBQzdELE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUU7WUFDOUMsVUFBVSxDQUFDLEtBQUs7Z0JBQ2QsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUNyRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsV0FBVyxDQUFDO1lBQ1YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxhQUFhO1lBQzNCLFFBQVEsRUFBRSxNQUFNLENBQUMsWUFBWTtZQUM3QixVQUFVLEVBQUUsTUFBTSxDQUFDLGNBQWM7U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBgZGJ4IGJyYW5kYCByZXNlYXJjaGVkIGJyYW5kLXBhY2thZ2UgZXhwb3J0LlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBhZGRBcmdzLCBwYXJzZUFyZ3MgfSBmcm9tIFwiQGRieC10b29scy9jbGktYXJnc1wiO1xuaW1wb3J0IHsgQ29tbWFuZCB9IGZyb20gXCJjb21tYW5kZXJcIjtcblxuaW1wb3J0IHsgQnJhbmRFeHBvcnRPcHRpb25zU2NoZW1hIH0gZnJvbSBcIi4vb3B0aW9ucy50c1wiO1xuaW1wb3J0IHsgZXhwb3J0QnJhbmRGcm9tUHJvbXB0IH0gZnJvbSBcIi4vcnVuLnRzXCI7XG5cbi8qKiBSZXBsYWNlYWJsZSBjb21tYW5kIGJvdW5kYXJpZXMgdXNlZCBieSB0ZXN0cyBhbmQgZW1iZWRkZXJzLiAqL1xuZXhwb3J0IGludGVyZmFjZSBCcmFuZENsaURlcGVuZGVuY2llcyB7XG4gIHJlYWRvbmx5IGV4cG9ydEJyYW5kRnJvbVByb21wdD86IHR5cGVvZiBleHBvcnRCcmFuZEZyb21Qcm9tcHQ7XG4gIHJlYWRvbmx5IHdyaXRlUHJvZ3Jlc3M/OiAodmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgcmVhZG9ubHkgd3JpdGVSZXN1bHQ/OiAodmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG59XG5cbi8qKiBCdWlsZCB0aGUgbGF6aWx5IGxvYWRlZCBgZGJ4IGJyYW5kYCBjb21tYW5kLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUHJvZ3JhbShuYW1lID0gXCJkYnggYnJhbmRcIiwgZGVwZW5kZW5jaWVzOiBCcmFuZENsaURlcGVuZGVuY2llcyA9IHt9KTogQ29tbWFuZCB7XG4gIGNvbnN0IHJ1bkV4cG9ydCA9IGRlcGVuZGVuY2llcy5leHBvcnRCcmFuZEZyb21Qcm9tcHQgPz8gZXhwb3J0QnJhbmRGcm9tUHJvbXB0O1xuICBjb25zdCB3cml0ZVByb2dyZXNzID1cbiAgICBkZXBlbmRlbmNpZXMud3JpdGVQcm9ncmVzcyA/PyAoKHZhbHVlOiBzdHJpbmcpID0+IHByb2Nlc3Muc3RkZXJyLndyaXRlKGAke3ZhbHVlfVxcbmApKTtcbiAgY29uc3Qgd3JpdGVSZXN1bHQgPVxuICAgIGRlcGVuZGVuY2llcy53cml0ZVJlc3VsdCA/P1xuICAgICgodmFsdWU6IHVua25vd24pID0+IHByb2Nlc3Muc3Rkb3V0LndyaXRlKGAke0pTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCAyKX1cXG5gKSk7XG4gIGNvbnN0IHByb2dyYW0gPSBhZGRBcmdzKFxuICAgIG5ldyBDb21tYW5kKClcbiAgICAgIC5uYW1lKG5hbWUpXG4gICAgICAuZGVzY3JpcHRpb24oXG4gICAgICAgIFwiUmVzZWFyY2ggYSBicmFuZCBicmllZiBhbmQgZXhwb3J0IGJyYW5kLnlhbWwgd2l0aCB3ZWIgYW5kIG1vYmlsZSB2aXN1YWwgcmVmZXJlbmNlc1wiLFxuICAgICAgKSxcbiAgICBCcmFuZEV4cG9ydE9wdGlvbnNTY2hlbWEsXG4gICk7XG4gIHByb2dyYW1cbiAgICAuYXJndW1lbnQoXCI8cHJvbXB0PlwiLCBcImJyYW5kLCBjb21wYW55LCBwcm9kdWN0LCBvciBkZXNpZ24gYnJpZWYgdG8gcmVzZWFyY2hcIilcbiAgICAuYWN0aW9uKGFzeW5jIChwcm9tcHQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhwcm9ncmFtLCBCcmFuZEV4cG9ydE9wdGlvbnNTY2hlbWEpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnVuRXhwb3J0KHByb21wdCwgb3B0aW9ucywge1xuICAgICAgICBvblByb2dyZXNzKGV2ZW50KSB7XG4gICAgICAgICAgd3JpdGVQcm9ncmVzcyhgWyR7ZXZlbnQuc3RhZ2V9XSAke2V2ZW50Lm1lc3NhZ2V9YCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHdyaXRlUmVzdWx0KHtcbiAgICAgICAgYnJhbmQ6IHJlc3VsdC5icmFuZFlhbWxQYXRoLFxuICAgICAgICBtYW5pZmVzdDogcmVzdWx0Lm1hbmlmZXN0UGF0aCxcbiAgICAgICAgcmVmZXJlbmNlczogcmVzdWx0LnJlZmVyZW5jZUNvdW50LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIHJldHVybiBwcm9ncmFtO1xufVxuIl19
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brand package filesystem export.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { BrandResearch } from "@dbx-tools/appkit-generator";
|
|
7
|
+
import type { BrandPackage } from "@dbx-tools/shared-generator";
|
|
8
|
+
/** Inputs required to write a generated brand package. */
|
|
9
|
+
export interface WriteBrandPackageOptions {
|
|
10
|
+
readonly outputDirectory: string;
|
|
11
|
+
readonly prompt: string;
|
|
12
|
+
readonly brandPackage: BrandPackage;
|
|
13
|
+
readonly research: BrandResearch;
|
|
14
|
+
readonly force?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/** Files written for a generated brand package. */
|
|
17
|
+
export interface WrittenBrandPackage {
|
|
18
|
+
readonly outputDirectory: string;
|
|
19
|
+
readonly brandYamlPath: string;
|
|
20
|
+
readonly manifestPath: string;
|
|
21
|
+
readonly referenceCount: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Write a normal `brand.yaml` plus research provenance and downloaded visual
|
|
25
|
+
* references.
|
|
26
|
+
*/
|
|
27
|
+
export declare function writeBrandPackage(options: WriteBrandPackageOptions): Promise<WrittenBrandPackage>;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Brand package filesystem export.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { access, mkdir, rename, rm, writeFile } from "node:fs/promises";
|
|
7
|
+
import path from "node:path";
|
|
8
|
+
import { BrandPackageSchema } from "@dbx-tools/shared-generator";
|
|
9
|
+
import { stringify } from "yaml";
|
|
10
|
+
function imageExtension(contentType) {
|
|
11
|
+
if (!contentType)
|
|
12
|
+
return ".img";
|
|
13
|
+
const normalized = contentType.split(";", 1)[0].trim().toLowerCase();
|
|
14
|
+
switch (normalized) {
|
|
15
|
+
case "image/avif":
|
|
16
|
+
return ".avif";
|
|
17
|
+
case "image/gif":
|
|
18
|
+
return ".gif";
|
|
19
|
+
case "image/jpeg":
|
|
20
|
+
return ".jpg";
|
|
21
|
+
case "image/png":
|
|
22
|
+
return ".png";
|
|
23
|
+
case "image/svg+xml":
|
|
24
|
+
return ".svg";
|
|
25
|
+
case "image/webp":
|
|
26
|
+
return ".webp";
|
|
27
|
+
default:
|
|
28
|
+
return ".img";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function fileSlug(value) {
|
|
32
|
+
return (value
|
|
33
|
+
.normalize("NFKD")
|
|
34
|
+
.replace(/[\u0300-\u036f]/g, "")
|
|
35
|
+
.toLowerCase()
|
|
36
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
37
|
+
.replace(/^-+|-+$/g, "")
|
|
38
|
+
.slice(0, 60) || "reference");
|
|
39
|
+
}
|
|
40
|
+
async function writeAtomic(filePath, content) {
|
|
41
|
+
await mkdir(path.dirname(filePath), { recursive: true });
|
|
42
|
+
const temporaryPath = `${filePath}.${process.pid}.${crypto.randomUUID()}.tmp`;
|
|
43
|
+
await writeFile(temporaryPath, content);
|
|
44
|
+
await rename(temporaryPath, filePath);
|
|
45
|
+
}
|
|
46
|
+
async function fileExists(filePath) {
|
|
47
|
+
try {
|
|
48
|
+
await access(filePath);
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Write a normal `brand.yaml` plus research provenance and downloaded visual
|
|
57
|
+
* references.
|
|
58
|
+
*/
|
|
59
|
+
export async function writeBrandPackage(options) {
|
|
60
|
+
const outputDirectory = path.resolve(options.outputDirectory);
|
|
61
|
+
const brandYamlPath = path.join(outputDirectory, "brand.yaml");
|
|
62
|
+
const packageExists = await fileExists(brandYamlPath);
|
|
63
|
+
if (packageExists && !options.force) {
|
|
64
|
+
throw new Error(`Brand package already exists at ${brandYamlPath}; pass --force to replace it`);
|
|
65
|
+
}
|
|
66
|
+
if (options.force) {
|
|
67
|
+
await rm(path.join(outputDirectory, "references"), { recursive: true, force: true });
|
|
68
|
+
}
|
|
69
|
+
const visualReferences = structuredClone(options.brandPackage.visualReferences);
|
|
70
|
+
let referenceCount = 0;
|
|
71
|
+
for (let referenceIndex = 0; referenceIndex < options.research.visualReferences.length; referenceIndex += 1) {
|
|
72
|
+
const researchReference = options.research.visualReferences[referenceIndex];
|
|
73
|
+
const exportedReference = visualReferences[referenceIndex];
|
|
74
|
+
if (!exportedReference)
|
|
75
|
+
continue;
|
|
76
|
+
for (let imageIndex = 0; imageIndex < researchReference.images.length; imageIndex += 1) {
|
|
77
|
+
const researchImage = researchReference.images[imageIndex];
|
|
78
|
+
const exportedImage = exportedReference.images[imageIndex];
|
|
79
|
+
if (!exportedImage || !researchImage.data)
|
|
80
|
+
continue;
|
|
81
|
+
const fileName = `${fileSlug(researchReference.appName)}-${imageIndex + 1}${imageExtension(researchImage.contentType)}`;
|
|
82
|
+
const relativePath = path.posix.join("references", researchReference.platform, fileName);
|
|
83
|
+
await writeAtomic(path.join(outputDirectory, relativePath), researchImage.data);
|
|
84
|
+
exportedImage.localPath = `./${relativePath}`;
|
|
85
|
+
referenceCount += 1;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const brandPackage = BrandPackageSchema.parse({
|
|
89
|
+
...options.brandPackage,
|
|
90
|
+
visualReferences,
|
|
91
|
+
});
|
|
92
|
+
const manifestPath = path.join(outputDirectory, "brand-package.json");
|
|
93
|
+
await writeAtomic(brandYamlPath, stringify(brandPackage.brand, { indent: 2 }));
|
|
94
|
+
await writeAtomic(manifestPath, `${JSON.stringify({
|
|
95
|
+
prompt: options.prompt,
|
|
96
|
+
generatedAt: new Date().toISOString(),
|
|
97
|
+
...brandPackage,
|
|
98
|
+
}, null, 2)}\n`);
|
|
99
|
+
return {
|
|
100
|
+
outputDirectory,
|
|
101
|
+
brandYamlPath,
|
|
102
|
+
manifestPath,
|
|
103
|
+
referenceCount,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JyYW5kL2V4cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RSxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFHN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQW1CakMsU0FBUyxjQUFjLENBQUMsV0FBb0I7SUFDMUMsSUFBSSxDQUFDLFdBQVc7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNoQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNyRSxRQUFRLFVBQVUsRUFBRSxDQUFDO1FBQ25CLEtBQUssWUFBWTtZQUNmLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLEtBQUssV0FBVztZQUNkLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLEtBQUssWUFBWTtZQUNmLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLEtBQUssV0FBVztZQUNkLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLEtBQUssZUFBZTtZQUNsQixPQUFPLE1BQU0sQ0FBQztRQUNoQixLQUFLLFlBQVk7WUFDZixPQUFPLE9BQU8sQ0FBQztRQUNqQjtZQUNFLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBYTtJQUM3QixPQUFPLENBQ0wsS0FBSztTQUNGLFNBQVMsQ0FBQyxNQUFNLENBQUM7U0FDakIsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUs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UUFDZixhQUFhO1FBQ2IsWUFBWTtRQUNaLGNBQWM7S0FDZixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnJhbmQgcGFja2FnZSBmaWxlc3lzdGVtIGV4cG9ydC5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsgYWNjZXNzLCBta2RpciwgcmVuYW1lLCBybSwgd3JpdGVGaWxlIH0gZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgQnJhbmRSZXNlYXJjaCB9IGZyb20gXCJAZGJ4LXRvb2xzL2FwcGtpdC1nZW5lcmF0b3JcIjtcbmltcG9ydCB0eXBlIHsgQnJhbmRQYWNrYWdlIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmVyYXRvclwiO1xuaW1wb3J0IHsgQnJhbmRQYWNrYWdlU2NoZW1hIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWdlbmVyYXRvclwiO1xuaW1wb3J0IHsgc3RyaW5naWZ5IH0gZnJvbSBcInlhbWxcIjtcblxuLyoqIElucHV0cyByZXF1aXJlZCB0byB3cml0ZSBhIGdlbmVyYXRlZCBicmFuZCBwYWNrYWdlLiAqL1xuZXhwb3J0IGludGVyZmFjZSBXcml0ZUJyYW5kUGFja2FnZU9wdGlvbnMge1xuICByZWFkb25seSBvdXRwdXREaXJlY3Rvcnk6IHN0cmluZztcbiAgcmVhZG9ubHkgcHJvbXB0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGJyYW5kUGFja2FnZTogQnJhbmRQYWNrYWdlO1xuICByZWFkb25seSByZXNlYXJjaDogQnJhbmRSZXNlYXJjaDtcbiAgcmVhZG9ubHkgZm9yY2U/OiBib29sZWFuO1xufVxuXG4vKiogRmlsZXMgd3JpdHRlbiBmb3IgYSBnZW5lcmF0ZWQgYnJhbmQgcGFja2FnZS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV3JpdHRlbkJyYW5kUGFja2FnZSB7XG4gIHJlYWRvbmx5IG91dHB1dERpcmVjdG9yeTogc3RyaW5nO1xuICByZWFkb25seSBicmFuZFlhbWxQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1hbmlmZXN0UGF0aDogc3RyaW5nO1xuICByZWFkb25seSByZWZlcmVuY2VDb3VudDogbnVtYmVyO1xufVxuXG5mdW5jdGlvbiBpbWFnZUV4dGVuc2lvbihjb250ZW50VHlwZT86IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmICghY29udGVudFR5cGUpIHJldHVybiBcIi5pbWdcIjtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IGNvbnRlbnRUeXBlLnNwbGl0KFwiO1wiLCAxKVswXS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgc3dpdGNoIChub3JtYWxpemVkKSB7XG4gICAgY2FzZSBcImltYWdlL2F2aWZcIjpcbiAgICAgIHJldHVybiBcIi5hdmlmXCI7XG4gICAgY2FzZSBcImltYWdlL2dpZlwiOlxuICAgICAgcmV0dXJuIFwiLmdpZlwiO1xuICAgIGNhc2UgXCJpbWFnZS9qcGVnXCI6XG4gICAgICByZXR1cm4gXCIuanBnXCI7XG4gICAgY2FzZSBcImltYWdlL3BuZ1wiOlxuICAgICAgcmV0dXJuIFwiLnBuZ1wiO1xuICAgIGNhc2UgXCJpbWFnZS9zdmcreG1sXCI6XG4gICAgICByZXR1cm4gXCIuc3ZnXCI7XG4gICAgY2FzZSBcImltYWdlL3dlYnBcIjpcbiAgICAgIHJldHVybiBcIi53ZWJwXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIi5pbWdcIjtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaWxlU2x1Zyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIChcbiAgICB2YWx1ZVxuICAgICAgLm5vcm1hbGl6ZShcIk5GS0RcIilcbiAgICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCBcIlwiKVxuICAgICAgLnRvTG93ZXJDYXNlKClcbiAgICAgIC5yZXBsYWNlKC9bXmEtejAtOV0rL2csIFwiLVwiKVxuICAgICAgLnJlcGxhY2UoL14tK3wtKyQvZywgXCJcIilcbiAgICAgIC5zbGljZSgwLCA2MCkgfHwgXCJyZWZlcmVuY2VcIlxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3cml0ZUF0b21pYyhmaWxlUGF0aDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcgfCBVaW50OEFycmF5KTogUHJvbWlzZTx2b2lkPiB7XG4gIGF3YWl0IG1rZGlyKHBhdGguZGlybmFtZShmaWxlUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBjb25zdCB0ZW1wb3JhcnlQYXRoID0gYCR7ZmlsZVBhdGh9LiR7cHJvY2Vzcy5waWR9LiR7Y3J5cHRvLnJhbmRvbVVVSUQoKX0udG1wYDtcbiAgYXdhaXQgd3JpdGVGaWxlKHRlbXBvcmFyeVBhdGgsIGNvbnRlbnQpO1xuICBhd2FpdCByZW5hbWUodGVtcG9yYXJ5UGF0aCwgZmlsZVBhdGgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmaWxlRXhpc3RzKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBhY2Nlc3MoZmlsZVBhdGgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBXcml0ZSBhIG5vcm1hbCBgYnJhbmQueWFtbGAgcGx1cyByZXNlYXJjaCBwcm92ZW5hbmNlIGFuZCBkb3dubG9hZGVkIHZpc3VhbFxuICogcmVmZXJlbmNlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdyaXRlQnJhbmRQYWNrYWdlKFxuICBvcHRpb25zOiBXcml0ZUJyYW5kUGFja2FnZU9wdGlvbnMsXG4pOiBQcm9taXNlPFdyaXR0ZW5CcmFuZFBhY2thZ2U+IHtcbiAgY29uc3Qgb3V0cHV0RGlyZWN0b3J5ID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMub3V0cHV0RGlyZWN0b3J5KTtcbiAgY29uc3QgYnJhbmRZYW1sUGF0aCA9IHBhdGguam9pbihvdXRwdXREaXJlY3RvcnksIFwiYnJhbmQueWFtbFwiKTtcbiAgY29uc3QgcGFja2FnZUV4aXN0cyA9IGF3YWl0IGZpbGVFeGlzdHMoYnJhbmRZYW1sUGF0aCk7XG4gIGlmIChwYWNrYWdlRXhpc3RzICYmICFvcHRpb25zLmZvcmNlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBCcmFuZCBwYWNrYWdlIGFscmVhZHkgZXhpc3RzIGF0ICR7YnJhbmRZYW1sUGF0aH07IHBhc3MgLS1mb3JjZSB0byByZXBsYWNlIGl0YCk7XG4gIH1cbiAgaWYgKG9wdGlvbnMuZm9yY2UpIHtcbiAgICBhd2FpdCBybShwYXRoLmpvaW4ob3V0cHV0RGlyZWN0b3J5LCBcInJlZmVyZW5jZXNcIiksIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIGNvbnN0IHZpc3VhbFJlZmVyZW5jZXMgPSBzdHJ1Y3R1cmVkQ2xvbmUob3B0aW9ucy5icmFuZFBhY2thZ2UudmlzdWFsUmVmZXJlbmNlcyk7XG4gIGxldCByZWZlcmVuY2VDb3VudCA9IDA7XG4gIGZvciAoXG4gICAgbGV0IHJlZmVyZW5jZUluZGV4ID0gMDtcbiAgICByZWZlcmVuY2VJbmRleCA8IG9wdGlvbnMucmVzZWFyY2gudmlzdWFsUmVmZXJlbmNlcy5sZW5ndGg7XG4gICAgcmVmZXJlbmNlSW5kZXggKz0gMVxuICApIHtcbiAgICBjb25zdCByZXNlYXJjaFJlZmVyZW5jZSA9IG9wdGlvbnMucmVzZWFyY2gudmlzdWFsUmVmZXJlbmNlc1tyZWZlcmVuY2VJbmRleF07XG4gICAgY29uc3QgZXhwb3J0ZWRSZWZlcmVuY2UgPSB2aXN1YWxSZWZlcmVuY2VzW3JlZmVyZW5jZUluZGV4XTtcbiAgICBpZiAoIWV4cG9ydGVkUmVmZXJlbmNlKSBjb250aW51ZTtcbiAgICBmb3IgKGxldCBpbWFnZUluZGV4ID0gMDsgaW1hZ2VJbmRleCA8IHJlc2VhcmNoUmVmZXJlbmNlLmltYWdlcy5sZW5ndGg7IGltYWdlSW5kZXggKz0gMSkge1xuICAgICAgY29uc3QgcmVzZWFyY2hJbWFnZSA9IHJlc2VhcmNoUmVmZXJlbmNlLmltYWdlc1tpbWFnZUluZGV4XTtcbiAgICAgIGNvbnN0IGV4cG9ydGVkSW1hZ2UgPSBleHBvcnRlZFJlZmVyZW5jZS5pbWFnZXNbaW1hZ2VJbmRleF07XG4gICAgICBpZiAoIWV4cG9ydGVkSW1hZ2UgfHwgIXJlc2VhcmNoSW1hZ2UuZGF0YSkgY29udGludWU7XG4gICAgICBjb25zdCBmaWxlTmFtZSA9IGAke2ZpbGVTbHVnKHJlc2VhcmNoUmVmZXJlbmNlLmFwcE5hbWUpfS0ke2ltYWdlSW5kZXggKyAxfSR7aW1hZ2VFeHRlbnNpb24ocmVzZWFyY2hJbWFnZS5jb250ZW50VHlwZSl9YDtcbiAgICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHBhdGgucG9zaXguam9pbihcInJlZmVyZW5jZXNcIiwgcmVzZWFyY2hSZWZlcmVuY2UucGxhdGZvcm0sIGZpbGVOYW1lKTtcbiAgICAgIGF3YWl0IHdyaXRlQXRvbWljKHBhdGguam9pbihvdXRwdXREaXJlY3RvcnksIHJlbGF0aXZlUGF0aCksIHJlc2VhcmNoSW1hZ2UuZGF0YSk7XG4gICAgICBleHBvcnRlZEltYWdlLmxvY2FsUGF0aCA9IGAuLyR7cmVsYXRpdmVQYXRofWA7XG4gICAgICByZWZlcmVuY2VDb3VudCArPSAxO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGJyYW5kUGFja2FnZSA9IEJyYW5kUGFja2FnZVNjaGVtYS5wYXJzZSh7XG4gICAgLi4ub3B0aW9ucy5icmFuZFBhY2thZ2UsXG4gICAgdmlzdWFsUmVmZXJlbmNlcyxcbiAgfSk7XG4gIGNvbnN0IG1hbmlmZXN0UGF0aCA9IHBhdGguam9pbihvdXRwdXREaXJlY3RvcnksIFwiYnJhbmQtcGFja2FnZS5qc29uXCIpO1xuICBhd2FpdCB3cml0ZUF0b21pYyhicmFuZFlhbWxQYXRoLCBzdHJpbmdpZnkoYnJhbmRQYWNrYWdlLmJyYW5kLCB7IGluZGVudDogMiB9KSk7XG4gIGF3YWl0IHdyaXRlQXRvbWljKFxuICAgIG1hbmlmZXN0UGF0aCxcbiAgICBgJHtKU09OLnN0cmluZ2lmeShcbiAgICAgIHtcbiAgICAgICAgcHJvbXB0OiBvcHRpb25zLnByb21wdCxcbiAgICAgICAgZ2VuZXJhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgLi4uYnJhbmRQYWNrYWdlLFxuICAgICAgfSxcbiAgICAgIG51bGwsXG4gICAgICAyLFxuICAgICl9XFxuYCxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIG91dHB1dERpcmVjdG9yeSxcbiAgICBicmFuZFlhbWxQYXRoLFxuICAgIG1hbmlmZXN0UGF0aCxcbiAgICByZWZlcmVuY2VDb3VudCxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * as cli from "./cli.ts";
|
|
2
|
+
export * as exportModule from "./export.ts";
|
|
3
|
+
export * as options from "./options.ts";
|
|
4
|
+
export * as run from "./run.ts";
|
|
5
|
+
export type { BrandCliDependencies } from "./cli.ts";
|
|
6
|
+
export type { WriteBrandPackageOptions, WrittenBrandPackage } from "./export.ts";
|
|
7
|
+
export { BrandExportOptionsSchema } from "./options.ts";
|
|
8
|
+
export type { BrandExportOptions } from "./options.ts";
|
|
9
|
+
export type { BrandExportCallbacks } from "./run.ts";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// GENERATED by projen watch - DO NOT EDIT.
|
|
2
|
+
// Regenerated from the exporting modules in ./src.
|
|
3
|
+
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
|
+
export * as cli from "./cli.js";
|
|
5
|
+
export * as exportModule from "./export.js";
|
|
6
|
+
export * as options from "./options.js";
|
|
7
|
+
export * as run from "./run.js";
|
|
8
|
+
export { BrandExportOptionsSchema } from "./options.js";
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJhbmQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkNBQTJDO0FBQzNDLG1EQUFtRDtBQUNuRCx3RUFBd0U7QUFFeEUsT0FBTyxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUM7QUFDaEMsT0FBTyxLQUFLLFlBQVksTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxLQUFLLEdBQUcsTUFBTSxVQUFVLENBQUM7QUFHaEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gR0VORVJBVEVEIGJ5IHByb2plbiB3YXRjaCAtIERPIE5PVCBFRElULlxuLy8gUmVnZW5lcmF0ZWQgZnJvbSB0aGUgZXhwb3J0aW5nIG1vZHVsZXMgaW4gLi9zcmMuXG4vLyBIYW5kIGVkaXRzIGFyZSBvdmVyd3JpdHRlbiBvbiB0aGUgbmV4dCB3YXRjaDsgdGhpcyBmaWxlIGlzIHJlYWQtb25seS5cblxuZXhwb3J0ICogYXMgY2xpIGZyb20gXCIuL2NsaS50c1wiO1xuZXhwb3J0ICogYXMgZXhwb3J0TW9kdWxlIGZyb20gXCIuL2V4cG9ydC50c1wiO1xuZXhwb3J0ICogYXMgb3B0aW9ucyBmcm9tIFwiLi9vcHRpb25zLnRzXCI7XG5leHBvcnQgKiBhcyBydW4gZnJvbSBcIi4vcnVuLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJyYW5kQ2xpRGVwZW5kZW5jaWVzIH0gZnJvbSBcIi4vY2xpLnRzXCI7XG5leHBvcnQgdHlwZSB7IFdyaXRlQnJhbmRQYWNrYWdlT3B0aW9ucywgV3JpdHRlbkJyYW5kUGFja2FnZSB9IGZyb20gXCIuL2V4cG9ydC50c1wiO1xuZXhwb3J0IHsgQnJhbmRFeHBvcnRPcHRpb25zU2NoZW1hIH0gZnJvbSBcIi4vb3B0aW9ucy50c1wiO1xuZXhwb3J0IHR5cGUgeyBCcmFuZEV4cG9ydE9wdGlvbnMgfSBmcm9tIFwiLi9vcHRpb25zLnRzXCI7XG5leHBvcnQgdHlwZSB7IEJyYW5kRXhwb3J0Q2FsbGJhY2tzIH0gZnJvbSBcIi4vcnVuLnRzXCI7XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dbx brand` option contracts.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
/** Options for exporting one researched brand package. */
|
|
8
|
+
export declare const BrandExportOptionsSchema: z.ZodObject<{
|
|
9
|
+
profile: z.ZodOptional<z.ZodString>;
|
|
10
|
+
name: z.ZodOptional<z.ZodString>;
|
|
11
|
+
website: z.ZodOptional<z.ZodString>;
|
|
12
|
+
output: z.ZodDefault<z.ZodString>;
|
|
13
|
+
model: z.ZodOptional<z.ZodString>;
|
|
14
|
+
maxSources: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
15
|
+
sourceMaxLength: z.ZodDefault<z.ZodCoercedNumber<unknown>>;
|
|
16
|
+
force: z.ZodDefault<z.ZodBoolean>;
|
|
17
|
+
}, z.core.$strict>;
|
|
18
|
+
/** Resolved brand export options. */
|
|
19
|
+
export type BrandExportOptions = z.output<typeof BrandExportOptionsSchema>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `dbx brand` option contracts.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import { DatabricksAuthOptionsSchema } from "@dbx-tools/auth/config";
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
/** Options for exporting one researched brand package. */
|
|
9
|
+
export const BrandExportOptionsSchema = z
|
|
10
|
+
.object({
|
|
11
|
+
profile: DatabricksAuthOptionsSchema.shape.profile,
|
|
12
|
+
name: z.string().trim().min(1).optional().describe("Known canonical brand name."),
|
|
13
|
+
website: z.string().url().optional().describe("Known official HTTPS website."),
|
|
14
|
+
output: z
|
|
15
|
+
.string()
|
|
16
|
+
.trim()
|
|
17
|
+
.min(1)
|
|
18
|
+
.default("branding")
|
|
19
|
+
.describe("Output directory for brand.yaml, provenance, and visual references."),
|
|
20
|
+
model: z
|
|
21
|
+
.string()
|
|
22
|
+
.trim()
|
|
23
|
+
.min(1)
|
|
24
|
+
.optional()
|
|
25
|
+
.describe("Optional Databricks model preference for brand synthesis."),
|
|
26
|
+
maxSources: z.coerce
|
|
27
|
+
.number()
|
|
28
|
+
.int()
|
|
29
|
+
.min(1)
|
|
30
|
+
.max(8)
|
|
31
|
+
.default(4)
|
|
32
|
+
.describe("Maximum general web sources to read."),
|
|
33
|
+
sourceMaxLength: z.coerce
|
|
34
|
+
.number()
|
|
35
|
+
.int()
|
|
36
|
+
.min(1_000)
|
|
37
|
+
.max(20_000)
|
|
38
|
+
.default(8_000)
|
|
39
|
+
.describe("Maximum characters retained from each source page."),
|
|
40
|
+
force: z.boolean().default(false).describe("Replace files in an existing output directory."),
|
|
41
|
+
})
|
|
42
|
+
.strict()
|
|
43
|
+
.describe("Options for exporting a researched brand package.");
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9icmFuZC9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBRXhCLDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDO0tBQ3RDLE1BQU0sQ0FBQztJQUNOLE9BQU8sRUFBRSwyQkFBMkIsQ0FBQyxLQUFLLENBQUMsT0FBTztJQUNsRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsNkJBQTZCLENBQUM7SUFDakYsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsK0JBQStCLENBQUM7SUFDOUUsTUFBTSxFQUFFLENBQUM7U0FDTixNQUFNLEVBQUU7U0FDUixJQUFJLEVBQUU7U0FDTixHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ04sT0FBTyxDQUFDLFVBQVUsQ0FBQztTQUNuQixRQUFRLENBQUMscUVBQXFFLENBQUM7SUFDbEYsS0FBSyxFQUFFLENBQUM7U0FDTCxNQUFNLEVBQUU7U0FDUixJQUFJLEVBQUU7U0FDTixHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ04sUUFBUSxFQUFFO1NBQ1YsUUFBUSxDQUFDLDJEQUEyRCxDQUFDO0lBQ3hFLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTTtTQUNqQixNQUFNLEVBQUU7U0FDUixHQUFHLEVBQUU7U0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ04sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNOLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDVixRQUFRLENBQUMsc0NBQXNDLENBQUM7SUFDbkQsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNO1NBQ3RCLE1BQU0sRUFBRTtTQUNSLEdBQUcsRUFBRTtTQUNMLEdBQUcsQ0FBQyxLQUFLLENBQUM7U0FDVixHQUFHLENBQUMsTUFBTSxDQUFDO1NBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQztTQUNkLFFBQVEsQ0FBQyxvREFBb0QsQ0FBQztJQUNqRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0RBQWdELENBQUM7Q0FDN0YsQ0FBQztLQUNELE1BQU0sRUFBRTtLQUNSLFFBQVEsQ0FBQyxtREFBbUQsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBgZGJ4IGJyYW5kYCBvcHRpb24gY29udHJhY3RzLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBEYXRhYnJpY2tzQXV0aE9wdGlvbnNTY2hlbWEgfSBmcm9tIFwiQGRieC10b29scy9hdXRoL2NvbmZpZ1wiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcblxuLyoqIE9wdGlvbnMgZm9yIGV4cG9ydGluZyBvbmUgcmVzZWFyY2hlZCBicmFuZCBwYWNrYWdlLiAqL1xuZXhwb3J0IGNvbnN0IEJyYW5kRXhwb3J0T3B0aW9uc1NjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgcHJvZmlsZTogRGF0YWJyaWNrc0F1dGhPcHRpb25zU2NoZW1hLnNoYXBlLnByb2ZpbGUsXG4gICAgbmFtZTogei5zdHJpbmcoKS50cmltKCkubWluKDEpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJLbm93biBjYW5vbmljYWwgYnJhbmQgbmFtZS5cIiksXG4gICAgd2Vic2l0ZTogei5zdHJpbmcoKS51cmwoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiS25vd24gb2ZmaWNpYWwgSFRUUFMgd2Vic2l0ZS5cIiksXG4gICAgb3V0cHV0OiB6XG4gICAgICAuc3RyaW5nKClcbiAgICAgIC50cmltKClcbiAgICAgIC5taW4oMSlcbiAgICAgIC5kZWZhdWx0KFwiYnJhbmRpbmdcIilcbiAgICAgIC5kZXNjcmliZShcIk91dHB1dCBkaXJlY3RvcnkgZm9yIGJyYW5kLnlhbWwsIHByb3ZlbmFuY2UsIGFuZCB2aXN1YWwgcmVmZXJlbmNlcy5cIiksXG4gICAgbW9kZWw6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLnRyaW0oKVxuICAgICAgLm1pbigxKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcIk9wdGlvbmFsIERhdGFicmlja3MgbW9kZWwgcHJlZmVyZW5jZSBmb3IgYnJhbmQgc3ludGhlc2lzLlwiKSxcbiAgICBtYXhTb3VyY2VzOiB6LmNvZXJjZVxuICAgICAgLm51bWJlcigpXG4gICAgICAuaW50KClcbiAgICAgIC5taW4oMSlcbiAgICAgIC5tYXgoOClcbiAgICAgIC5kZWZhdWx0KDQpXG4gICAgICAuZGVzY3JpYmUoXCJNYXhpbXVtIGdlbmVyYWwgd2ViIHNvdXJjZXMgdG8gcmVhZC5cIiksXG4gICAgc291cmNlTWF4TGVuZ3RoOiB6LmNvZXJjZVxuICAgICAgLm51bWJlcigpXG4gICAgICAuaW50KClcbiAgICAgIC5taW4oMV8wMDApXG4gICAgICAubWF4KDIwXzAwMClcbiAgICAgIC5kZWZhdWx0KDhfMDAwKVxuICAgICAgLmRlc2NyaWJlKFwiTWF4aW11bSBjaGFyYWN0ZXJzIHJldGFpbmVkIGZyb20gZWFjaCBzb3VyY2UgcGFnZS5cIiksXG4gICAgZm9yY2U6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLmRlc2NyaWJlKFwiUmVwbGFjZSBmaWxlcyBpbiBhbiBleGlzdGluZyBvdXRwdXQgZGlyZWN0b3J5LlwiKSxcbiAgfSlcbiAgLnN0cmljdCgpXG4gIC5kZXNjcmliZShcIk9wdGlvbnMgZm9yIGV4cG9ydGluZyBhIHJlc2VhcmNoZWQgYnJhbmQgcGFja2FnZS5cIik7XG5cbi8qKiBSZXNvbHZlZCBicmFuZCBleHBvcnQgb3B0aW9ucy4gKi9cbmV4cG9ydCB0eXBlIEJyYW5kRXhwb3J0T3B0aW9ucyA9IHoub3V0cHV0PHR5cGVvZiBCcmFuZEV4cG9ydE9wdGlvbnNTY2hlbWE+O1xuIl19
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standalone researched brand generation for the consolidated CLI.
|
|
3
|
+
*
|
|
4
|
+
* @module
|
|
5
|
+
*/
|
|
6
|
+
import type { BrandGenerationProgressEvent } from "@dbx-tools/shared-generator";
|
|
7
|
+
import { type WrittenBrandPackage } from "./export.ts";
|
|
8
|
+
import type { BrandExportOptions } from "./options.ts";
|
|
9
|
+
/** Optional observers for one CLI brand generation run. */
|
|
10
|
+
export interface BrandExportCallbacks {
|
|
11
|
+
readonly onProgress?: (event: BrandGenerationProgressEvent) => void | Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Research a freeform brand brief, synthesize a portable context, and export
|
|
15
|
+
* the package to disk.
|
|
16
|
+
*/
|
|
17
|
+
export declare function exportBrandFromPrompt(prompt: string, options: BrandExportOptions, callbacks?: BrandExportCallbacks): Promise<WrittenBrandPackage>;
|