@duetso/agent 0.1.197 → 0.1.199
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/package.json +3 -2
- package/dist/src/cli/help.d.ts +1 -0
- package/dist/src/cli/help.d.ts.map +1 -1
- package/dist/src/cli/help.js +77 -8
- package/dist/src/cli/help.js.map +1 -1
- package/dist/src/cli/memory-db.d.ts +26 -5
- package/dist/src/cli/memory-db.d.ts.map +1 -1
- package/dist/src/cli/memory-db.js +62 -5
- package/dist/src/cli/memory-db.js.map +1 -1
- package/dist/src/cli/memory-query.d.ts +35 -0
- package/dist/src/cli/memory-query.d.ts.map +1 -0
- package/dist/src/cli/memory-query.js +179 -0
- package/dist/src/cli/memory-query.js.map +1 -0
- package/dist/src/cli/memory.d.ts +7 -2
- package/dist/src/cli/memory.d.ts.map +1 -1
- package/dist/src/cli/memory.js +16 -42
- package/dist/src/cli/memory.js.map +1 -1
- package/dist/src/cli/model-gateway.d.ts +27 -0
- package/dist/src/cli/model-gateway.d.ts.map +1 -0
- package/dist/src/cli/model-gateway.js +51 -0
- package/dist/src/cli/model-gateway.js.map +1 -0
- package/dist/src/cli/model.d.ts +46 -0
- package/dist/src/cli/model.d.ts.map +1 -0
- package/dist/src/cli/model.js +344 -0
- package/dist/src/cli/model.js.map +1 -0
- package/dist/src/cli/train.d.ts.map +1 -1
- package/dist/src/cli/train.js +22 -35
- package/dist/src/cli/train.js.map +1 -1
- package/dist/src/cli.d.ts +1 -0
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +6 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/turn-runner/prompts.d.ts +12 -0
- package/dist/src/turn-runner/prompts.d.ts.map +1 -1
- package/dist/src/turn-runner/prompts.js +19 -1
- package/dist/src/turn-runner/prompts.js.map +1 -1
- package/dist/src/turn-runner/tools.d.ts +2 -1
- package/dist/src/turn-runner/tools.d.ts.map +1 -1
- package/dist/src/turn-runner/tools.js +7 -1
- package/dist/src/turn-runner/tools.js.map +1 -1
- package/dist/src/turn-runner/turn-runner.d.ts +3 -0
- package/dist/src/turn-runner/turn-runner.d.ts.map +1 -1
- package/dist/src/turn-runner/turn-runner.js +57 -17
- package/dist/src/turn-runner/turn-runner.js.map +1 -1
- package/dist/src/types/state-machine.d.ts +26 -0
- package/dist/src/types/state-machine.d.ts.map +1 -1
- package/package.json +3 -2
package/dist/src/cli/memory.js
CHANGED
|
@@ -1,66 +1,40 @@
|
|
|
1
1
|
import { MemoryLockTimeoutError } from "../memory/pglite.js";
|
|
2
|
-
import { DEFAULT_MEMORY_DB_PATH } from "../session/session-manager.js";
|
|
3
|
-
import { printMemoryHelp } from "./help.js";
|
|
4
2
|
import { runMemoryAddCommand } from "./memory-add.js";
|
|
5
3
|
import { MemoryDb } from "./memory-db.js";
|
|
4
|
+
import { parseMemoryArgs, runMemoryQuery } from "./memory-query.js";
|
|
6
5
|
import { runMemoryReflectCommand } from "./memory-reflect.js";
|
|
7
6
|
import { runMemoryTui } from "./memory-tui.js";
|
|
8
|
-
import { fail
|
|
7
|
+
import { fail } from "./shared.js";
|
|
9
8
|
import { installShutdownHandlers } from "./shutdown.js";
|
|
10
9
|
/**
|
|
11
|
-
* Run `duet memory` (alias: `duet memories`)
|
|
12
|
-
*
|
|
10
|
+
* Run `duet memory` (alias: `duet memories`).
|
|
11
|
+
*
|
|
12
|
+
* One entry point for fetching and viewing durable memories: bare `duet
|
|
13
|
+
* memory` opens the interactive TUI for browsing/editing/deleting, while
|
|
14
|
+
* passing `--json` or any filter flag (`--type`/`--kind`/`--priority`/
|
|
15
|
+
* `--source`/`--from`/`--to`) turns the same invocation into a non-TUI,
|
|
16
|
+
* scriptable query. `duet memory reflect` remains a separate subcommand.
|
|
13
17
|
*
|
|
14
18
|
* Defaults to the same `~/.duet/memory.db` the runner writes to so changes
|
|
15
19
|
* propagate to the next session immediately.
|
|
16
20
|
*/
|
|
17
21
|
export async function runMemoryCommand(args) {
|
|
18
|
-
// Route `duet memory reflect ...` to the cross-session reflect command.
|
|
19
|
-
// Kept as a subcommand under `memory` so the existing TUI entry stays
|
|
20
|
-
// the bare `duet memory` invocation.
|
|
21
22
|
if (args[0] === "reflect") {
|
|
22
23
|
await runMemoryReflectCommand(args.slice(1));
|
|
23
24
|
return;
|
|
24
25
|
}
|
|
25
|
-
// Route `duet memory add ...` to the manual-write command. Kept as a
|
|
26
|
-
// subcommand under `memory` so the bare `duet memory` invocation stays
|
|
27
|
-
// the TUI browser.
|
|
28
26
|
if (args[0] === "add") {
|
|
29
27
|
await runMemoryAddCommand(args.slice(1));
|
|
30
28
|
return;
|
|
31
29
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
switch (args[i]) {
|
|
39
|
-
case "--db":
|
|
40
|
-
if (!args[i + 1] || args[i + 1]?.startsWith("-"))
|
|
41
|
-
fail(`Missing value for ${args[i]}`);
|
|
42
|
-
dbPath = resolveUserPath(args[++i]);
|
|
43
|
-
break;
|
|
44
|
-
case "--wait": {
|
|
45
|
-
const raw = args[i + 1];
|
|
46
|
-
if (!raw || raw.startsWith("-"))
|
|
47
|
-
fail(`Missing value for ${args[i]}`);
|
|
48
|
-
const seconds = Number(raw);
|
|
49
|
-
if (!Number.isFinite(seconds) || seconds < 0) {
|
|
50
|
-
fail(`Invalid --wait value: ${raw} (expected non-negative number of seconds)`);
|
|
51
|
-
}
|
|
52
|
-
waitBudgetMs = Math.round(seconds * 1000);
|
|
53
|
-
i++;
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
case "--help":
|
|
57
|
-
case "-h":
|
|
58
|
-
printMemoryHelp();
|
|
59
|
-
return;
|
|
60
|
-
default:
|
|
61
|
-
fail(`Unknown memory option: ${args[i]}`);
|
|
62
|
-
}
|
|
30
|
+
const options = parseMemoryArgs(args);
|
|
31
|
+
if (!options)
|
|
32
|
+
return;
|
|
33
|
+
if (options.queryMode) {
|
|
34
|
+
await runMemoryQuery(options);
|
|
35
|
+
return;
|
|
63
36
|
}
|
|
37
|
+
const { dbPath, waitBudgetMs } = options;
|
|
64
38
|
let db;
|
|
65
39
|
try {
|
|
66
40
|
db = await MemoryDb.open(dbPath, { waitBudgetMs });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/cli/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/cli/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAExD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAc;IACnD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,OAAO;QAAE,OAAO;IAErB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACzC,IAAI,EAAY,CAAC;IACjB,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,sBAAsB,EAAE,CAAC;YAC5C,IAAI,CACF,sBAAsB,KAAK,CAAC,OAAO,gCAAgC,KAAK,CAAC,SAAS,UAChF,KAAK,CAAC,QAAQ,GAAG,IACnB,2EAA2E,CAC5E,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,MAAM,sBAAsB,GAAG,uBAAuB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;YAAS,CAAC;QACT,sBAAsB,EAAE,CAAC;QACzB,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createGateway } from "ai";
|
|
2
|
+
/**
|
|
3
|
+
* The `duet model` subcommand talks to models directly through the Vercel AI
|
|
4
|
+
* SDK (`ai@^7`), pointed at the Duet gateway instead of the pi harness. The
|
|
5
|
+
* gateway re-exposes Vercel's AI Gateway under `/api/v1/ai-gateway`; the SDK's
|
|
6
|
+
* gateway provider speaks the versioned `/v4/ai` protocol path, and `/v1/models`
|
|
7
|
+
* serves the catalog. Auth is the org-scoped `DUET_API_KEY` Bearer token.
|
|
8
|
+
*/
|
|
9
|
+
export declare const DUET_API_KEY_ENV = "DUET_API_KEY";
|
|
10
|
+
/** Capability classes the gateway tags each model with via `/v1/models`. */
|
|
11
|
+
export type ModelType = "language" | "image" | "video" | "embedding" | "realtime" | "reranking" | "speech" | "transcription";
|
|
12
|
+
/**
|
|
13
|
+
* Build an AI SDK gateway provider bound to the Duet proxy. Callers resolve a
|
|
14
|
+
* model with `gateway('<provider>/<model>')` and pass it to `generateText`,
|
|
15
|
+
* `generateImage`, etc. The base URL appends `/v4/ai` to the gateway origin —
|
|
16
|
+
* the protocol version the duet.so proxy currently serves. The custom `fetch`
|
|
17
|
+
* only raises the abort timeout; everything else is the platform default.
|
|
18
|
+
*/
|
|
19
|
+
export declare function createDuetModelGateway(): ReturnType<typeof createGateway>;
|
|
20
|
+
/**
|
|
21
|
+
* Fetch the gateway model catalog and return a map of model id -> capability
|
|
22
|
+
* type. Used to validate a requested model and route it to the right generation
|
|
23
|
+
* call (text vs image vs video). Hits `/v1/models` directly because the catalog
|
|
24
|
+
* is an org-scoped read, not a generation, so it bypasses the SDK provider.
|
|
25
|
+
*/
|
|
26
|
+
export declare function fetchModelCatalog(): Promise<Map<string, ModelType>>;
|
|
27
|
+
//# sourceMappingURL=model-gateway.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-gateway.d.ts","sourceRoot":"","sources":["../../../src/cli/model-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAGnC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAM/C,4EAA4E;AAC5E,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,OAAO,GACP,OAAO,GACP,WAAW,GACX,UAAU,GACV,WAAW,GACX,QAAQ,GACR,eAAe,CAAC;AAEpB;;;;;;GAMG;AACH,wBAAgB,sBAAsB,IAAI,UAAU,CAAC,OAAO,aAAa,CAAC,CAazE;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAazE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { createGateway } from "ai";
|
|
2
|
+
import { getDuetGatewayBaseUrl } from "../model-resolution/duet-gateway.js";
|
|
3
|
+
/**
|
|
4
|
+
* The `duet model` subcommand talks to models directly through the Vercel AI
|
|
5
|
+
* SDK (`ai@^7`), pointed at the Duet gateway instead of the pi harness. The
|
|
6
|
+
* gateway re-exposes Vercel's AI Gateway under `/api/v1/ai-gateway`; the SDK's
|
|
7
|
+
* gateway provider speaks the versioned `/v4/ai` protocol path, and `/v1/models`
|
|
8
|
+
* serves the catalog. Auth is the org-scoped `DUET_API_KEY` Bearer token.
|
|
9
|
+
*/
|
|
10
|
+
export const DUET_API_KEY_ENV = "DUET_API_KEY";
|
|
11
|
+
// Generation can be slow — image/video models routinely run for minutes — so
|
|
12
|
+
// requests get a 15-minute ceiling rather than the SDK/runtime default.
|
|
13
|
+
const GENERATION_TIMEOUT_MS = 15 * 60 * 1000;
|
|
14
|
+
/**
|
|
15
|
+
* Build an AI SDK gateway provider bound to the Duet proxy. Callers resolve a
|
|
16
|
+
* model with `gateway('<provider>/<model>')` and pass it to `generateText`,
|
|
17
|
+
* `generateImage`, etc. The base URL appends `/v4/ai` to the gateway origin —
|
|
18
|
+
* the protocol version the duet.so proxy currently serves. The custom `fetch`
|
|
19
|
+
* only raises the abort timeout; everything else is the platform default.
|
|
20
|
+
*/
|
|
21
|
+
export function createDuetModelGateway() {
|
|
22
|
+
// Preserve `fetch.preconnect` so the wrapper still satisfies the platform
|
|
23
|
+
// fetch signature; only the abort timeout is overridden.
|
|
24
|
+
const longTimeoutFetch = Object.assign((input, init) => fetch(input, { ...init, signal: AbortSignal.timeout(GENERATION_TIMEOUT_MS) }), { preconnect: fetch.preconnect });
|
|
25
|
+
return createGateway({
|
|
26
|
+
baseURL: `${getDuetGatewayBaseUrl()}/v4/ai`,
|
|
27
|
+
apiKey: process.env[DUET_API_KEY_ENV],
|
|
28
|
+
fetch: longTimeoutFetch,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Fetch the gateway model catalog and return a map of model id -> capability
|
|
33
|
+
* type. Used to validate a requested model and route it to the right generation
|
|
34
|
+
* call (text vs image vs video). Hits `/v1/models` directly because the catalog
|
|
35
|
+
* is an org-scoped read, not a generation, so it bypasses the SDK provider.
|
|
36
|
+
*/
|
|
37
|
+
export async function fetchModelCatalog() {
|
|
38
|
+
const response = await fetch(`${getDuetGatewayBaseUrl()}/v1/models`, {
|
|
39
|
+
headers: { Authorization: `Bearer ${process.env[DUET_API_KEY_ENV] ?? ""}` },
|
|
40
|
+
});
|
|
41
|
+
if (!response.ok) {
|
|
42
|
+
throw new Error(`Failed to fetch model catalog: ${response.status} ${response.statusText}`);
|
|
43
|
+
}
|
|
44
|
+
const body = (await response.json());
|
|
45
|
+
const catalog = new Map();
|
|
46
|
+
for (const model of body.data ?? []) {
|
|
47
|
+
catalog.set(model.id, model.type);
|
|
48
|
+
}
|
|
49
|
+
return catalog;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=model-gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-gateway.js","sourceRoot":"","sources":["../../../src/cli/model-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAE/C,6EAA6E;AAC7E,wEAAwE;AACxE,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAa7C;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB;IACpC,0EAA0E;IAC1E,yDAAyD;IACzD,MAAM,gBAAgB,GAAiB,MAAM,CAAC,MAAM,CAClD,CAAC,KAAkC,EAAE,IAAkC,EAAE,EAAE,CACzE,KAAK,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAC/E,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CACjC,CAAC;IACF,OAAO,aAAa,CAAC;QACnB,OAAO,EAAE,GAAG,qBAAqB,EAAE,QAAQ;QAC3C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QACrC,KAAK,EAAE,gBAAgB;KACxB,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,qBAAqB,EAAE,YAAY,EAAE;QACnE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,EAAE;KAC5E,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAsD,CAAC;IAC1F,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type ModelType } from "./model-gateway.js";
|
|
2
|
+
/**
|
|
3
|
+
* High-level capability the CLI routes a request to. The gateway catalog uses
|
|
4
|
+
* `language` for text models; everything else maps straight through. `--type`
|
|
5
|
+
* lets the user override routing when the catalog is missing or wrong.
|
|
6
|
+
*/
|
|
7
|
+
type RequestType = "text" | "image" | "video";
|
|
8
|
+
/** Parsed `duet model` flags. Prompt is positional or read from stdin. */
|
|
9
|
+
interface ModelArgs {
|
|
10
|
+
model?: string;
|
|
11
|
+
type?: RequestType;
|
|
12
|
+
imagePath?: string;
|
|
13
|
+
out?: string;
|
|
14
|
+
system?: string;
|
|
15
|
+
size?: string;
|
|
16
|
+
aspect?: string;
|
|
17
|
+
n?: number;
|
|
18
|
+
seed?: number;
|
|
19
|
+
duration?: number;
|
|
20
|
+
resolution?: string;
|
|
21
|
+
fps?: number;
|
|
22
|
+
envFile?: string;
|
|
23
|
+
prompt?: string;
|
|
24
|
+
help: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Map a gateway catalog capability to the CLI request type. `language` covers
|
|
28
|
+
* text models, including the gemini `*-image` models that emit images as message
|
|
29
|
+
* files; those are still text completions, so `--type image` is what reroutes
|
|
30
|
+
* them. An unknown/missing catalog entry defaults to text.
|
|
31
|
+
*/
|
|
32
|
+
export declare function requestTypeForCapability(type: ModelType | undefined): RequestType;
|
|
33
|
+
/** Language models emit images via result.files, not the image endpoint. */
|
|
34
|
+
export declare function usesLanguageImagePath(type: ModelType | undefined): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Generate a timestamped output filename like `model-20260629T141500-1.png`.
|
|
37
|
+
* Used when the user does not pass `--out` for image/video generations so each
|
|
38
|
+
* run lands a distinct, sortable file. Lives here so the image and video units
|
|
39
|
+
* share one naming scheme.
|
|
40
|
+
*/
|
|
41
|
+
export declare function autoOutputFilename(extension: string, index?: number): string;
|
|
42
|
+
/** Run `duet model` — call a gateway model directly via the AI SDK. */
|
|
43
|
+
export declare function runModelCommand(args: string[]): Promise<void>;
|
|
44
|
+
export declare function parseArgs(args: string[]): ModelArgs;
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/cli/model.ts"],"names":[],"mappings":"AAUA,OAAO,EAA6C,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/F;;;;GAIG;AACH,KAAK,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAE9C,0EAA0E;AAC1E,UAAU,SAAS;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAIjF;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAE1E;AAWD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,MAAM,CAMvE;AAED,uEAAuE;AACvE,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCnE;AA2ND,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CA6DnD"}
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { extname } from "node:path";
|
|
3
|
+
import { experimental_generateVideo as generateVideo, generateImage, generateText, streamText, } from "ai";
|
|
4
|
+
import { createDuetModelGateway, fetchModelCatalog } from "./model-gateway.js";
|
|
5
|
+
import { printModelHelp } from "./help.js";
|
|
6
|
+
import { fail, loadCliEnvFiles, resolveUserPath } from "./shared.js";
|
|
7
|
+
/**
|
|
8
|
+
* Map a gateway catalog capability to the CLI request type. `language` covers
|
|
9
|
+
* text models, including the gemini `*-image` models that emit images as message
|
|
10
|
+
* files; those are still text completions, so `--type image` is what reroutes
|
|
11
|
+
* them. An unknown/missing catalog entry defaults to text.
|
|
12
|
+
*/
|
|
13
|
+
export function requestTypeForCapability(type) {
|
|
14
|
+
if (type === "image")
|
|
15
|
+
return "image";
|
|
16
|
+
if (type === "video")
|
|
17
|
+
return "video";
|
|
18
|
+
return "text";
|
|
19
|
+
}
|
|
20
|
+
/** Language models emit images via result.files, not the image endpoint. */
|
|
21
|
+
export function usesLanguageImagePath(type) {
|
|
22
|
+
return type === "language";
|
|
23
|
+
}
|
|
24
|
+
/** Image file extension -> media type, for inlining vision input parts. */
|
|
25
|
+
const IMAGE_MEDIA_TYPES = {
|
|
26
|
+
".png": "image/png",
|
|
27
|
+
".jpg": "image/jpeg",
|
|
28
|
+
".jpeg": "image/jpeg",
|
|
29
|
+
".gif": "image/gif",
|
|
30
|
+
".webp": "image/webp",
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Generate a timestamped output filename like `model-20260629T141500-1.png`.
|
|
34
|
+
* Used when the user does not pass `--out` for image/video generations so each
|
|
35
|
+
* run lands a distinct, sortable file. Lives here so the image and video units
|
|
36
|
+
* share one naming scheme.
|
|
37
|
+
*/
|
|
38
|
+
export function autoOutputFilename(extension, index = 1) {
|
|
39
|
+
const stamp = new Date()
|
|
40
|
+
.toISOString()
|
|
41
|
+
.replace(/[-:]/g, "")
|
|
42
|
+
.replace(/\.\d+Z$/, "Z");
|
|
43
|
+
return `model-${stamp}-${index}${extension}`;
|
|
44
|
+
}
|
|
45
|
+
/** Run `duet model` — call a gateway model directly via the AI SDK. */
|
|
46
|
+
export async function runModelCommand(args) {
|
|
47
|
+
const parsed = parseArgs(args);
|
|
48
|
+
if (parsed.help) {
|
|
49
|
+
printModelHelp();
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
loadCliEnvFiles(process.cwd(), parsed.envFile);
|
|
53
|
+
if (!parsed.model)
|
|
54
|
+
fail("Missing required --model/-m");
|
|
55
|
+
const model = parsed.model;
|
|
56
|
+
const prompt = parsed.prompt ?? (await readStdin());
|
|
57
|
+
if (!prompt.trim())
|
|
58
|
+
fail("Missing prompt (pass as an argument or via stdin)");
|
|
59
|
+
// The catalog is only needed to auto-detect the type or to tell a dedicated
|
|
60
|
+
// image model from a language model that emits images; forced text/video skip
|
|
61
|
+
// it. Fetch at most once and thread the result into the image path.
|
|
62
|
+
const capability = parsed.type === undefined || parsed.type === "image"
|
|
63
|
+
? await lookupCapability(model)
|
|
64
|
+
: undefined;
|
|
65
|
+
const requestType = parsed.type ?? requestTypeForCapability(capability);
|
|
66
|
+
if (requestType === "image") {
|
|
67
|
+
await runImagePath({ ...parsed, model, prompt, capability });
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (requestType === "video") {
|
|
71
|
+
await runVideoPath({ ...parsed, model, prompt });
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
await runTextPath({ ...parsed, model, prompt });
|
|
75
|
+
}
|
|
76
|
+
/** Generate one or more images, writing each to disk and reporting warnings. */
|
|
77
|
+
async function runImagePath(parsed) {
|
|
78
|
+
// Some catalog `language` models (e.g. google/gemini-2.5-flash-image) emit
|
|
79
|
+
// images as message files rather than via the image-generation endpoint, so a
|
|
80
|
+
// `--type image` request on a language model routes through generateText.
|
|
81
|
+
if (usesLanguageImagePath(parsed.capability)) {
|
|
82
|
+
await runLanguageImagePath(parsed);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const gateway = createDuetModelGateway();
|
|
86
|
+
const result = await generateImage({
|
|
87
|
+
model: gateway.imageModel(parsed.model),
|
|
88
|
+
prompt: await buildImagePrompt(parsed),
|
|
89
|
+
size: parseSize(parsed.size),
|
|
90
|
+
aspectRatio: parseAspect(parsed.aspect),
|
|
91
|
+
n: parsed.n,
|
|
92
|
+
seed: parsed.seed,
|
|
93
|
+
}).catch(failOnBillingError);
|
|
94
|
+
for (const warning of result.warnings) {
|
|
95
|
+
process.stderr.write(`warning: ${JSON.stringify(warning)}\n`);
|
|
96
|
+
}
|
|
97
|
+
const single = result.images.length === 1;
|
|
98
|
+
for (const [index, image] of result.images.entries()) {
|
|
99
|
+
const extension = mediaTypeExtension(image.mediaType);
|
|
100
|
+
const path = resolveOutputPath(parsed.out, extension, index + 1, single);
|
|
101
|
+
await writeFile(path, image.uint8Array);
|
|
102
|
+
process.stdout.write(`${path}\n`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/** Generate images from a language model, extracting them from result.files. */
|
|
106
|
+
async function runLanguageImagePath(parsed) {
|
|
107
|
+
const gateway = createDuetModelGateway();
|
|
108
|
+
const messages = [{ role: "user", content: await buildContent(parsed) }];
|
|
109
|
+
const result = await generateText({
|
|
110
|
+
model: gateway(parsed.model),
|
|
111
|
+
system: parsed.system,
|
|
112
|
+
messages,
|
|
113
|
+
}).catch(failOnBillingError);
|
|
114
|
+
const images = result.files.filter((file) => file.mediaType.startsWith("image/"));
|
|
115
|
+
if (images.length === 0)
|
|
116
|
+
fail(`Model ${parsed.model} returned no images`);
|
|
117
|
+
const single = images.length === 1;
|
|
118
|
+
for (const [index, image] of images.entries()) {
|
|
119
|
+
const extension = mediaTypeExtension(image.mediaType);
|
|
120
|
+
const path = resolveOutputPath(parsed.out, extension, index + 1, single);
|
|
121
|
+
await writeFile(path, image.uint8Array);
|
|
122
|
+
process.stdout.write(`${path}\n`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/** Generate one or more videos, writing each to disk. Supports image->video. */
|
|
126
|
+
async function runVideoPath(parsed) {
|
|
127
|
+
const gateway = createDuetModelGateway();
|
|
128
|
+
const result = await generateVideo({
|
|
129
|
+
model: gateway.video(parsed.model),
|
|
130
|
+
prompt: await buildVideoPrompt(parsed),
|
|
131
|
+
aspectRatio: parseAspect(parsed.aspect),
|
|
132
|
+
resolution: parseResolution(parsed.resolution),
|
|
133
|
+
duration: parsed.duration,
|
|
134
|
+
fps: parsed.fps,
|
|
135
|
+
n: parsed.n,
|
|
136
|
+
seed: parsed.seed,
|
|
137
|
+
}).catch(failOnBillingError);
|
|
138
|
+
for (const warning of result.warnings) {
|
|
139
|
+
process.stderr.write(`warning: ${JSON.stringify(warning)}\n`);
|
|
140
|
+
}
|
|
141
|
+
const single = result.videos.length === 1;
|
|
142
|
+
for (const [index, video] of result.videos.entries()) {
|
|
143
|
+
const extension = mediaTypeExtension(video.mediaType);
|
|
144
|
+
const path = resolveOutputPath(parsed.out, extension, index + 1, single);
|
|
145
|
+
await writeFile(path, video.uint8Array);
|
|
146
|
+
process.stdout.write(`${path}\n`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Video prompt: text alone for text->video, or `{ image, text }` when `--image`
|
|
151
|
+
* supplies a still to animate. The AI SDK takes a single source image as bytes.
|
|
152
|
+
*/
|
|
153
|
+
async function buildVideoPrompt(parsed) {
|
|
154
|
+
if (!parsed.imagePath)
|
|
155
|
+
return parsed.prompt;
|
|
156
|
+
const source = await readFile(resolveUserPath(parsed.imagePath));
|
|
157
|
+
return { image: new Uint8Array(source), text: parsed.prompt };
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Gateway billing gates (402 requires-payment, 403 forbidden) carry a
|
|
161
|
+
* plain-English body; surface it verbatim so the user knows to pay rather than
|
|
162
|
+
* seeing an opaque SDK stack. Shared by the image, language-image, and video
|
|
163
|
+
* paths since any paid model can hit it. Anything else rethrows unchanged.
|
|
164
|
+
*/
|
|
165
|
+
function failOnBillingError(error) {
|
|
166
|
+
const status = error?.statusCode;
|
|
167
|
+
if (status === 402 || status === 403) {
|
|
168
|
+
const body = error.responseBody;
|
|
169
|
+
const message = error.message ?? "billing error";
|
|
170
|
+
fail(`${status}: ${body ?? message}`);
|
|
171
|
+
}
|
|
172
|
+
throw error;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Image prompt: the text alone for text->image, or `{ text, images }` for
|
|
176
|
+
* editing when `--image` supplies a source image to transform.
|
|
177
|
+
*/
|
|
178
|
+
async function buildImagePrompt(parsed) {
|
|
179
|
+
if (!parsed.imagePath)
|
|
180
|
+
return parsed.prompt;
|
|
181
|
+
const source = await readFile(resolveUserPath(parsed.imagePath));
|
|
182
|
+
return { text: parsed.prompt, images: [new Uint8Array(source)] };
|
|
183
|
+
}
|
|
184
|
+
/** Pick a single `--out` path, or auto-name; suffix the index when n>1. */
|
|
185
|
+
function resolveOutputPath(out, extension, index, single) {
|
|
186
|
+
if (out)
|
|
187
|
+
return single ? resolveUserPath(out) : resolveUserPath(suffixIndex(out, index));
|
|
188
|
+
return autoOutputFilename(extension, index);
|
|
189
|
+
}
|
|
190
|
+
/** Insert `-<index>` before the extension: `art.png` -> `art-2.png`. */
|
|
191
|
+
function suffixIndex(path, index) {
|
|
192
|
+
const extension = extname(path);
|
|
193
|
+
return `${path.slice(0, path.length - extension.length)}-${index}${extension}`;
|
|
194
|
+
}
|
|
195
|
+
/** `image/png` -> `.png`, `image/jpeg` -> `.jpg`; default to `.png`. */
|
|
196
|
+
function mediaTypeExtension(mediaType) {
|
|
197
|
+
const subtype = mediaType.split("/")[1] ?? "png";
|
|
198
|
+
return subtype === "jpeg" ? ".jpg" : `.${subtype}`;
|
|
199
|
+
}
|
|
200
|
+
/** Validate `--size` is `{width}x{height}`; AI SDK requires that exact shape. */
|
|
201
|
+
function parseSize(size) {
|
|
202
|
+
if (!size)
|
|
203
|
+
return undefined;
|
|
204
|
+
if (!/^\d+x\d+$/.test(size))
|
|
205
|
+
fail(`Invalid --size: ${size} (expected {width}x{height})`);
|
|
206
|
+
return size;
|
|
207
|
+
}
|
|
208
|
+
/** Validate `--aspect` is `{width}:{height}`; AI SDK requires that exact shape. */
|
|
209
|
+
function parseAspect(aspect) {
|
|
210
|
+
if (!aspect)
|
|
211
|
+
return undefined;
|
|
212
|
+
if (!/^\d+:\d+$/.test(aspect))
|
|
213
|
+
fail(`Invalid --aspect: ${aspect} (expected {width}:{height})`);
|
|
214
|
+
return aspect;
|
|
215
|
+
}
|
|
216
|
+
/** Validate `--resolution` is `{width}x{height}`; AI SDK requires that exact shape. */
|
|
217
|
+
function parseResolution(resolution) {
|
|
218
|
+
if (!resolution)
|
|
219
|
+
return undefined;
|
|
220
|
+
if (!/^\d+x\d+$/.test(resolution)) {
|
|
221
|
+
fail(`Invalid --resolution: ${resolution} (expected {width}x{height})`);
|
|
222
|
+
}
|
|
223
|
+
return resolution;
|
|
224
|
+
}
|
|
225
|
+
/** Stream a text completion to stdout or the `--out` file. */
|
|
226
|
+
async function runTextPath(parsed) {
|
|
227
|
+
const gateway = createDuetModelGateway();
|
|
228
|
+
const messages = [{ role: "user", content: await buildContent(parsed) }];
|
|
229
|
+
const result = streamText({
|
|
230
|
+
model: gateway(parsed.model),
|
|
231
|
+
system: parsed.system,
|
|
232
|
+
messages,
|
|
233
|
+
});
|
|
234
|
+
if (parsed.out) {
|
|
235
|
+
const text = await result.text;
|
|
236
|
+
process.stdout.write(text);
|
|
237
|
+
await writeFile(resolveUserPath(parsed.out), text);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
for await (const chunk of result.textStream) {
|
|
241
|
+
process.stdout.write(chunk);
|
|
242
|
+
}
|
|
243
|
+
process.stdout.write("\n");
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Build the user message content: the prompt text plus, when `--image` is set,
|
|
247
|
+
* an inline image part so vision models can see the picture.
|
|
248
|
+
*/
|
|
249
|
+
async function buildContent(parsed) {
|
|
250
|
+
if (!parsed.imagePath)
|
|
251
|
+
return parsed.prompt;
|
|
252
|
+
const path = resolveUserPath(parsed.imagePath);
|
|
253
|
+
const mediaType = IMAGE_MEDIA_TYPES[extname(path).toLowerCase()];
|
|
254
|
+
if (!mediaType)
|
|
255
|
+
fail(`Unsupported image type: ${path}`);
|
|
256
|
+
const imagePart = { type: "image", image: await readFile(path), mediaType };
|
|
257
|
+
return [{ type: "text", text: parsed.prompt }, imagePart];
|
|
258
|
+
}
|
|
259
|
+
async function lookupCapability(model) {
|
|
260
|
+
try {
|
|
261
|
+
return (await fetchModelCatalog()).get(model);
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
return undefined;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
async function readStdin() {
|
|
268
|
+
if (process.stdin.isTTY)
|
|
269
|
+
return "";
|
|
270
|
+
const chunks = [];
|
|
271
|
+
for await (const chunk of process.stdin)
|
|
272
|
+
chunks.push(chunk);
|
|
273
|
+
return Buffer.concat(chunks).toString("utf8").trim();
|
|
274
|
+
}
|
|
275
|
+
export function parseArgs(args) {
|
|
276
|
+
const out = { help: false };
|
|
277
|
+
for (let i = 0; i < args.length; i++) {
|
|
278
|
+
const arg = args[i];
|
|
279
|
+
const next = () => {
|
|
280
|
+
const value = args[++i];
|
|
281
|
+
if (value === undefined || value.startsWith("-"))
|
|
282
|
+
fail(`Missing value for ${arg}`);
|
|
283
|
+
return value;
|
|
284
|
+
};
|
|
285
|
+
switch (arg) {
|
|
286
|
+
case "--model":
|
|
287
|
+
case "-m":
|
|
288
|
+
out.model = next();
|
|
289
|
+
break;
|
|
290
|
+
case "--type":
|
|
291
|
+
out.type = parseType(next());
|
|
292
|
+
break;
|
|
293
|
+
case "--image":
|
|
294
|
+
out.imagePath = next();
|
|
295
|
+
break;
|
|
296
|
+
case "--out":
|
|
297
|
+
case "-o":
|
|
298
|
+
out.out = next();
|
|
299
|
+
break;
|
|
300
|
+
case "--system":
|
|
301
|
+
out.system = next();
|
|
302
|
+
break;
|
|
303
|
+
case "--size":
|
|
304
|
+
out.size = next();
|
|
305
|
+
break;
|
|
306
|
+
case "--aspect":
|
|
307
|
+
out.aspect = next();
|
|
308
|
+
break;
|
|
309
|
+
case "--n":
|
|
310
|
+
out.n = Number(next());
|
|
311
|
+
break;
|
|
312
|
+
case "--seed":
|
|
313
|
+
out.seed = Number(next());
|
|
314
|
+
break;
|
|
315
|
+
case "--duration":
|
|
316
|
+
out.duration = Number(next());
|
|
317
|
+
break;
|
|
318
|
+
case "--resolution":
|
|
319
|
+
out.resolution = next();
|
|
320
|
+
break;
|
|
321
|
+
case "--fps":
|
|
322
|
+
out.fps = Number(next());
|
|
323
|
+
break;
|
|
324
|
+
case "--env-file":
|
|
325
|
+
out.envFile = next();
|
|
326
|
+
break;
|
|
327
|
+
case "--help":
|
|
328
|
+
case "-h":
|
|
329
|
+
out.help = true;
|
|
330
|
+
break;
|
|
331
|
+
default:
|
|
332
|
+
if (arg.startsWith("-"))
|
|
333
|
+
fail(`Unknown model option: ${arg}`);
|
|
334
|
+
out.prompt = out.prompt ? `${out.prompt} ${arg}` : arg;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return out;
|
|
338
|
+
}
|
|
339
|
+
function parseType(value) {
|
|
340
|
+
if (value === "text" || value === "image" || value === "video")
|
|
341
|
+
return value;
|
|
342
|
+
fail(`Invalid --type: ${value} (expected text|image|video)`);
|
|
343
|
+
}
|
|
344
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/cli/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"train.d.ts","sourceRoot":"","sources":["../../../src/cli/train.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAEV,cAAc,EAGf,MAAM,mBAAmB,CAAC;AAO3B,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;CAC/B;AAcD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,mBAAmB,GAAG,SAAS,CA0D9E;AA8ID;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EAAE,EACd,EAAE,GAAE,cAAmE,GACtE,OAAO,CAAC,IAAI,CAAC,CAwKf;AAMD;0BAC0B;AAC1B,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAwCjE;
|
|
1
|
+
{"version":3,"file":"train.d.ts","sourceRoot":"","sources":["../../../src/cli/train.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAEV,cAAc,EAGf,MAAM,mBAAmB,CAAC;AAO3B,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;CAC/B;AAcD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,mBAAmB,GAAG,SAAS,CA0D9E;AA8ID;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EAAE,EACd,EAAE,GAAE,cAAmE,GACtE,OAAO,CAAC,IAAI,CAAC,CAwKf;AAMD;0BAC0B;AAC1B,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAwCjE;AA2ED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAU3F;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3F;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB7F;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB7F"}
|