@usenaive-sdk/cli 0.15.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +43 -354
- package/dist/index.js +51775 -502
- package/package.json +22 -18
- package/dist/client.d.ts +0 -108
- package/dist/client.js +0 -458
- package/dist/client.js.map +0 -1
- package/dist/commands/account-kits.d.ts +0 -2
- package/dist/commands/account-kits.js +0 -71
- package/dist/commands/account-kits.js.map +0 -1
- package/dist/commands/aeo.d.ts +0 -2
- package/dist/commands/aeo.js +0 -451
- package/dist/commands/aeo.js.map +0 -1
- package/dist/commands/agent-profiles.d.ts +0 -11
- package/dist/commands/agent-profiles.js +0 -120
- package/dist/commands/agent-profiles.js.map +0 -1
- package/dist/commands/agents.d.ts +0 -2
- package/dist/commands/agents.js +0 -916
- package/dist/commands/agents.js.map +0 -1
- package/dist/commands/app-data.d.ts +0 -2
- package/dist/commands/app-data.js +0 -445
- package/dist/commands/app-data.js.map +0 -1
- package/dist/commands/approvals.d.ts +0 -2
- package/dist/commands/approvals.js +0 -242
- package/dist/commands/approvals.js.map +0 -1
- package/dist/commands/apps.d.ts +0 -9
- package/dist/commands/apps.js +0 -844
- package/dist/commands/apps.js.map +0 -1
- package/dist/commands/audio.d.ts +0 -9
- package/dist/commands/audio.js +0 -391
- package/dist/commands/audio.js.map +0 -1
- package/dist/commands/auth.d.ts +0 -31
- package/dist/commands/auth.js +0 -428
- package/dist/commands/auth.js.map +0 -1
- package/dist/commands/billing.d.ts +0 -2
- package/dist/commands/billing.js +0 -245
- package/dist/commands/billing.js.map +0 -1
- package/dist/commands/brain.d.ts +0 -2
- package/dist/commands/brain.js +0 -1300
- package/dist/commands/brain.js.map +0 -1
- package/dist/commands/browser.d.ts +0 -2
- package/dist/commands/browser.js +0 -378
- package/dist/commands/browser.js.map +0 -1
- package/dist/commands/business.d.ts +0 -2
- package/dist/commands/business.js +0 -566
- package/dist/commands/business.js.map +0 -1
- package/dist/commands/cards.d.ts +0 -2
- package/dist/commands/cards.js +0 -419
- package/dist/commands/cards.js.map +0 -1
- package/dist/commands/ceo.d.ts +0 -2
- package/dist/commands/ceo.js +0 -369
- package/dist/commands/ceo.js.map +0 -1
- package/dist/commands/clone.d.ts +0 -2
- package/dist/commands/clone.js +0 -203
- package/dist/commands/clone.js.map +0 -1
- package/dist/commands/companies.d.ts +0 -10
- package/dist/commands/companies.js +0 -283
- package/dist/commands/companies.js.map +0 -1
- package/dist/commands/company-data.d.ts +0 -2
- package/dist/commands/company-data.js +0 -168
- package/dist/commands/company-data.js.map +0 -1
- package/dist/commands/compute.d.ts +0 -2
- package/dist/commands/compute.js +0 -498
- package/dist/commands/compute.js.map +0 -1
- package/dist/commands/config.d.ts +0 -2
- package/dist/commands/config.js +0 -36
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/connections.d.ts +0 -8
- package/dist/commands/connections.js +0 -137
- package/dist/commands/connections.js.map +0 -1
- package/dist/commands/cron-jobs.d.ts +0 -2
- package/dist/commands/cron-jobs.js +0 -245
- package/dist/commands/cron-jobs.js.map +0 -1
- package/dist/commands/domains.d.ts +0 -2
- package/dist/commands/domains.js +0 -474
- package/dist/commands/domains.js.map +0 -1
- package/dist/commands/ecommerce.d.ts +0 -2
- package/dist/commands/ecommerce.js +0 -277
- package/dist/commands/ecommerce.js.map +0 -1
- package/dist/commands/email.d.ts +0 -2
- package/dist/commands/email.js +0 -336
- package/dist/commands/email.js.map +0 -1
- package/dist/commands/employees.d.ts +0 -2
- package/dist/commands/employees.js +0 -190
- package/dist/commands/employees.js.map +0 -1
- package/dist/commands/env.d.ts +0 -7
- package/dist/commands/env.js +0 -112
- package/dist/commands/env.js.map +0 -1
- package/dist/commands/formation.d.ts +0 -2
- package/dist/commands/formation.js +0 -273
- package/dist/commands/formation.js.map +0 -1
- package/dist/commands/identity.d.ts +0 -2
- package/dist/commands/identity.js +0 -110
- package/dist/commands/identity.js.map +0 -1
- package/dist/commands/images.d.ts +0 -2
- package/dist/commands/images.js +0 -371
- package/dist/commands/images.js.map +0 -1
- package/dist/commands/init.d.ts +0 -5
- package/dist/commands/init.js +0 -43
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/jobs.d.ts +0 -2
- package/dist/commands/jobs.js +0 -144
- package/dist/commands/jobs.js.map +0 -1
- package/dist/commands/keys.d.ts +0 -2
- package/dist/commands/keys.js +0 -156
- package/dist/commands/keys.js.map +0 -1
- package/dist/commands/legacy-auth.d.ts +0 -27
- package/dist/commands/legacy-auth.js +0 -64
- package/dist/commands/legacy-auth.js.map +0 -1
- package/dist/commands/llm.d.ts +0 -2
- package/dist/commands/llm.js +0 -106
- package/dist/commands/llm.js.map +0 -1
- package/dist/commands/login.d.ts +0 -2
- package/dist/commands/login.js +0 -65
- package/dist/commands/login.js.map +0 -1
- package/dist/commands/logout.d.ts +0 -7
- package/dist/commands/logout.js +0 -55
- package/dist/commands/logout.js.map +0 -1
- package/dist/commands/logs.d.ts +0 -2
- package/dist/commands/logs.js +0 -42
- package/dist/commands/logs.js.map +0 -1
- package/dist/commands/loops.d.ts +0 -2
- package/dist/commands/loops.js +0 -260
- package/dist/commands/loops.js.map +0 -1
- package/dist/commands/media.d.ts +0 -2
- package/dist/commands/media.js +0 -183
- package/dist/commands/media.js.map +0 -1
- package/dist/commands/memory.d.ts +0 -2
- package/dist/commands/memory.js +0 -151
- package/dist/commands/memory.js.map +0 -1
- package/dist/commands/mobile.d.ts +0 -4
- package/dist/commands/mobile.js +0 -382
- package/dist/commands/mobile.js.map +0 -1
- package/dist/commands/module.d.ts +0 -8
- package/dist/commands/module.js +0 -48
- package/dist/commands/module.js.map +0 -1
- package/dist/commands/objectives.d.ts +0 -2
- package/dist/commands/objectives.js +0 -243
- package/dist/commands/objectives.js.map +0 -1
- package/dist/commands/payments.d.ts +0 -2
- package/dist/commands/payments.js +0 -131
- package/dist/commands/payments.js.map +0 -1
- package/dist/commands/people.d.ts +0 -2
- package/dist/commands/people.js +0 -197
- package/dist/commands/people.js.map +0 -1
- package/dist/commands/phone.d.ts +0 -2
- package/dist/commands/phone.js +0 -289
- package/dist/commands/phone.js.map +0 -1
- package/dist/commands/projects.d.ts +0 -13
- package/dist/commands/projects.js +0 -220
- package/dist/commands/projects.js.map +0 -1
- package/dist/commands/queue.d.ts +0 -2
- package/dist/commands/queue.js +0 -121
- package/dist/commands/queue.js.map +0 -1
- package/dist/commands/register.d.ts +0 -2
- package/dist/commands/register.js +0 -80
- package/dist/commands/register.js.map +0 -1
- package/dist/commands/report.d.ts +0 -17
- package/dist/commands/report.js +0 -109
- package/dist/commands/report.js.map +0 -1
- package/dist/commands/sandbox.d.ts +0 -2
- package/dist/commands/sandbox.js +0 -558
- package/dist/commands/sandbox.js.map +0 -1
- package/dist/commands/search.d.ts +0 -2
- package/dist/commands/search.js +0 -223
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/seo.d.ts +0 -2
- package/dist/commands/seo.js +0 -528
- package/dist/commands/seo.js.map +0 -1
- package/dist/commands/sessions.d.ts +0 -6
- package/dist/commands/sessions.js +0 -109
- package/dist/commands/sessions.js.map +0 -1
- package/dist/commands/social-data.d.ts +0 -2
- package/dist/commands/social-data.js +0 -245
- package/dist/commands/social-data.js.map +0 -1
- package/dist/commands/social.d.ts +0 -2
- package/dist/commands/social.js +0 -407
- package/dist/commands/social.js.map +0 -1
- package/dist/commands/status.d.ts +0 -2
- package/dist/commands/status.js +0 -73
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/support.d.ts +0 -2
- package/dist/commands/support.js +0 -134
- package/dist/commands/support.js.map +0 -1
- package/dist/commands/tasks.d.ts +0 -2
- package/dist/commands/tasks.js +0 -409
- package/dist/commands/tasks.js.map +0 -1
- package/dist/commands/teams.d.ts +0 -69
- package/dist/commands/teams.js +0 -503
- package/dist/commands/teams.js.map +0 -1
- package/dist/commands/trading.d.ts +0 -2
- package/dist/commands/trading.js +0 -333
- package/dist/commands/trading.js.map +0 -1
- package/dist/commands/up.d.ts +0 -551
- package/dist/commands/up.js +0 -1149
- package/dist/commands/up.js.map +0 -1
- package/dist/commands/usage.d.ts +0 -2
- package/dist/commands/usage.js +0 -73
- package/dist/commands/usage.js.map +0 -1
- package/dist/commands/use.d.ts +0 -12
- package/dist/commands/use.js +0 -96
- package/dist/commands/use.js.map +0 -1
- package/dist/commands/users.d.ts +0 -10
- package/dist/commands/users.js +0 -82
- package/dist/commands/users.js.map +0 -1
- package/dist/commands/vault.d.ts +0 -2
- package/dist/commands/vault.js +0 -101
- package/dist/commands/vault.js.map +0 -1
- package/dist/commands/verification.d.ts +0 -2
- package/dist/commands/verification.js +0 -152
- package/dist/commands/verification.js.map +0 -1
- package/dist/commands/verify-email.d.ts +0 -19
- package/dist/commands/verify-email.js +0 -112
- package/dist/commands/verify-email.js.map +0 -1
- package/dist/commands/video.d.ts +0 -2
- package/dist/commands/video.js +0 -417
- package/dist/commands/video.js.map +0 -1
- package/dist/commands/voice.d.ts +0 -2
- package/dist/commands/voice.js +0 -516
- package/dist/commands/voice.js.map +0 -1
- package/dist/commands/wallet.d.ts +0 -2
- package/dist/commands/wallet.js +0 -244
- package/dist/commands/wallet.js.map +0 -1
- package/dist/commands/webhooks.d.ts +0 -13
- package/dist/commands/webhooks.js +0 -119
- package/dist/commands/webhooks.js.map +0 -1
- package/dist/commands/whoami.d.ts +0 -2
- package/dist/commands/whoami.js +0 -53
- package/dist/commands/whoami.js.map +0 -1
- package/dist/config.d.ts +0 -42
- package/dist/config.js +0 -83
- package/dist/config.js.map +0 -1
- package/dist/index.d.ts +0 -3
- package/dist/index.js.map +0 -1
- package/dist/lib/brain-select.d.ts +0 -193
- package/dist/lib/brain-select.js +0 -403
- package/dist/lib/brain-select.js.map +0 -1
- package/dist/lib/cli-validation.d.ts +0 -12
- package/dist/lib/cli-validation.js +0 -46
- package/dist/lib/cli-validation.js.map +0 -1
- package/dist/lib/config-errors.d.ts +0 -4
- package/dist/lib/config-errors.js +0 -13
- package/dist/lib/config-errors.js.map +0 -1
- package/dist/lib/deprecation.d.ts +0 -158
- package/dist/lib/deprecation.js +0 -140
- package/dist/lib/deprecation.js.map +0 -1
- package/dist/lib/duration.d.ts +0 -8
- package/dist/lib/duration.js +0 -11
- package/dist/lib/duration.js.map +0 -1
- package/dist/lib/http-response.d.ts +0 -11
- package/dist/lib/http-response.js +0 -96
- package/dist/lib/http-response.js.map +0 -1
- package/dist/lib/pricing.d.ts +0 -132
- package/dist/lib/pricing.js +0 -148
- package/dist/lib/pricing.js.map +0 -1
- package/dist/lib/starter-config.d.ts +0 -13
- package/dist/lib/starter-config.js +0 -71
- package/dist/lib/starter-config.js.map +0 -1
- package/dist/lib/stream-frames.d.ts +0 -114
- package/dist/lib/stream-frames.js +0 -169
- package/dist/lib/stream-frames.js.map +0 -1
- package/dist/lib/teams-catalog.d.ts +0 -141
- package/dist/lib/teams-catalog.js +0 -841
- package/dist/lib/teams-catalog.js.map +0 -1
- package/dist/lib/unknown-command.d.ts +0 -71
- package/dist/lib/unknown-command.js +0 -132
- package/dist/lib/unknown-command.js.map +0 -1
- package/dist/lib/version-check.d.ts +0 -26
- package/dist/lib/version-check.js +0 -21
- package/dist/lib/version-check.js.map +0 -1
- package/dist/output.d.ts +0 -174
- package/dist/output.js +0 -435
- package/dist/output.js.map +0 -1
- package/dist/prompt.d.ts +0 -17
- package/dist/prompt.js +0 -70
- package/dist/prompt.js.map +0 -1
- package/dist/version.d.ts +0 -2
- package/dist/version.js +0 -14
- package/dist/version.js.map +0 -1
package/dist/commands/logout.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import { clearApiKey, loadConfig } from "../config.js";
|
|
3
|
-
import { agentOutput } from "../output.js";
|
|
4
|
-
/**
|
|
5
|
-
* Top-level agent logout — clears the saved API key from ~/.naive/config.json.
|
|
6
|
-
* Distinct from `naive auth logout`, which ends the human session cookie only.
|
|
7
|
-
* Dogfood auth noted the missing top-level command as friction (3767 / e983).
|
|
8
|
-
*/
|
|
9
|
-
export const logoutCmd = new Command("logout")
|
|
10
|
-
.description("Log out the agent API key (clears ~/.naive/config.json credentials)")
|
|
11
|
-
.addHelpText("after", `
|
|
12
|
-
What this does:
|
|
13
|
-
1. Removes the saved agent api_key (and company context) from ~/.naive/config.json
|
|
14
|
-
2. Does NOT revoke the key server-side — use 'naive keys revoke <id>' for that
|
|
15
|
-
3. Does NOT end a human session cookie — use 'naive auth logout' for that
|
|
16
|
-
|
|
17
|
-
Examples:
|
|
18
|
-
$ naive logout
|
|
19
|
-
$ naive auth logout # human session only
|
|
20
|
-
$ naive keys revoke <id> # invalidate a key on the server
|
|
21
|
-
`)
|
|
22
|
-
.action(() => {
|
|
23
|
-
const cfg = loadConfig();
|
|
24
|
-
if (!cfg.api_key) {
|
|
25
|
-
agentOutput({
|
|
26
|
-
action: "logout",
|
|
27
|
-
result: { status: "no_api_key" },
|
|
28
|
-
next_steps: [
|
|
29
|
-
{ command: "naive login --email <e> --password <p>", description: "Log in and save a new API key" },
|
|
30
|
-
{ command: "naive register --name <n> --email <e> --password <p>", description: "Create a new account" },
|
|
31
|
-
],
|
|
32
|
-
hints: [
|
|
33
|
-
"No agent API key was saved locally. If NAIVE_API_KEY is set in the environment, unset it separately.",
|
|
34
|
-
],
|
|
35
|
-
});
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
clearApiKey();
|
|
39
|
-
agentOutput({
|
|
40
|
-
action: "logout",
|
|
41
|
-
result: { status: "logged_out", credentials_cleared: "~/.naive/config.json" },
|
|
42
|
-
next_steps: [
|
|
43
|
-
{ command: "naive login --email <e> --password <p>", description: "Log in again" },
|
|
44
|
-
{
|
|
45
|
-
command: "naive auth logout",
|
|
46
|
-
description: "Also end the human session cookie (if any)",
|
|
47
|
-
when: "You also ran naive auth session-login / auth google / auth email",
|
|
48
|
-
},
|
|
49
|
-
],
|
|
50
|
-
hints: [
|
|
51
|
-
"Agent API key cleared locally. Server-side keys remain valid until revoked with 'naive keys revoke'.",
|
|
52
|
-
],
|
|
53
|
-
});
|
|
54
|
-
});
|
|
55
|
-
//# sourceMappingURL=logout.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC3C,WAAW,CAAC,qEAAqE,CAAC;KAClF,WAAW,CACV,OAAO,EACP;;;;;;;;;;CAUH,CACE;KACA,MAAM,CAAC,GAAG,EAAE;IACX,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACjB,WAAW,CAAC;YACV,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE;YAChC,UAAU,EAAE;gBACV,EAAE,OAAO,EAAE,wCAAwC,EAAE,WAAW,EAAE,+BAA+B,EAAE;gBACnG,EAAE,OAAO,EAAE,sDAAsD,EAAE,WAAW,EAAE,sBAAsB,EAAE;aACzG;YACD,KAAK,EAAE;gBACL,sGAAsG;aACvG;SACF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,WAAW,EAAE,CAAC;IACd,WAAW,CAAC;QACV,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE;QAC7E,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,wCAAwC,EAAE,WAAW,EAAE,cAAc,EAAE;YAClF;gBACE,OAAO,EAAE,mBAAmB;gBAC5B,WAAW,EAAE,4CAA4C;gBACzD,IAAI,EAAE,kEAAkE;aACzE;SACF;QACD,KAAK,EAAE;YACL,sGAAsG;SACvG;KACF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/commands/logs.d.ts
DELETED
package/dist/commands/logs.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import { apiRequest, handleApiError, activeUserId } from "../client.js";
|
|
3
|
-
import { agentOutput } from "../output.js";
|
|
4
|
-
export const logsCmd = new Command("logs").description("Per-user activity logs");
|
|
5
|
-
logsCmd
|
|
6
|
-
.command("tail")
|
|
7
|
-
.description("Show recent activity events for a user")
|
|
8
|
-
.option("--user <id>", "Target a specific tenant user")
|
|
9
|
-
.option("--action <action>", "Filter by action (e.g. vault.put)")
|
|
10
|
-
.option("--limit <n>", "Max events", "50")
|
|
11
|
-
.action(async (opts) => {
|
|
12
|
-
const user = opts.user ?? activeUserId() ?? "default";
|
|
13
|
-
const qs = new URLSearchParams();
|
|
14
|
-
if (opts.action)
|
|
15
|
-
qs.set("action", opts.action);
|
|
16
|
-
if (opts.limit)
|
|
17
|
-
qs.set("limit", opts.limit);
|
|
18
|
-
const q = qs.toString();
|
|
19
|
-
const resp = await apiRequest("GET", `/v1/users/${user}/logs${q ? `?${q}` : ""}`, undefined, { userId: opts.user });
|
|
20
|
-
handleApiError("logs.tail", resp);
|
|
21
|
-
agentOutput({ action: "logs.tail", result: resp.data, next_steps: [] });
|
|
22
|
-
});
|
|
23
|
-
logsCmd
|
|
24
|
-
.command("all")
|
|
25
|
-
.description("Cross-user log query (agentProfile view)")
|
|
26
|
-
.option("--action <action>", "Filter by action")
|
|
27
|
-
.option("--user <id>", "Filter by user id")
|
|
28
|
-
.option("--limit <n>", "Max events", "100")
|
|
29
|
-
.action(async (opts) => {
|
|
30
|
-
const qs = new URLSearchParams();
|
|
31
|
-
if (opts.action)
|
|
32
|
-
qs.set("action", opts.action);
|
|
33
|
-
if (opts.user)
|
|
34
|
-
qs.set("user_id", opts.user);
|
|
35
|
-
if (opts.limit)
|
|
36
|
-
qs.set("limit", opts.limit);
|
|
37
|
-
const q = qs.toString();
|
|
38
|
-
const resp = await apiRequest("GET", `/v1/logs${q ? `?${q}` : ""}`);
|
|
39
|
-
handleApiError("logs.all", resp);
|
|
40
|
-
agentOutput({ action: "logs.all", result: resp.data, next_steps: [] });
|
|
41
|
-
});
|
|
42
|
-
//# sourceMappingURL=logs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/commands/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;AAEjF,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC;KACtD,MAAM,CAAC,mBAAmB,EAAE,mCAAmC,CAAC;KAChE,MAAM,CAAC,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,IAAwD,EAAE,EAAE;IACzE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,YAAY,EAAE,IAAI,SAAS,CAAC;IACtD,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,IAAI,IAAI,CAAC,MAAM;QAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,IAAI,CAAC,KAAK;QAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,aAAa,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACpH,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;KAC/C,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC;KAC1C,MAAM,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,IAAwD,EAAE,EAAE;IACzE,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,IAAI,IAAI,CAAC,MAAM;QAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,IAAI,CAAC,IAAI;QAAE,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,IAAI,CAAC,KAAK;QAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpE,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC"}
|
package/dist/commands/loops.d.ts
DELETED
package/dist/commands/loops.js
DELETED
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import { apiRequest, handleApiError } from "../client.js";
|
|
3
|
-
import { agentOutput } from "../output.js";
|
|
4
|
-
export const loopsCmd = new Command("loops")
|
|
5
|
-
.description("Recurring agent runs — create, list, pause/resume, run now, and remove loops")
|
|
6
|
-
.addHelpText("after", `
|
|
7
|
-
Subcommands:
|
|
8
|
-
naive loops create --schedule <cron> --prompt <text> Create a recurring agent run
|
|
9
|
-
naive loops list List all loops
|
|
10
|
-
naive loops get <id> Show one loop
|
|
11
|
-
naive loops update <id> [--active|--no-active] ... Pause/resume or edit a loop
|
|
12
|
-
naive loops run <id> Fire a loop immediately
|
|
13
|
-
naive loops remove <id> Delete a loop (and its backing cron job)
|
|
14
|
-
|
|
15
|
-
Schedule format (cron expression):
|
|
16
|
-
"0 9 * * *" → every day at 9:00 AM UTC
|
|
17
|
-
"*/30 * * * *" → every 30 minutes
|
|
18
|
-
"0 0 * * 1" → every Monday at midnight UTC
|
|
19
|
-
|
|
20
|
-
A Loop is a first-class recurring agent run: a cron-source trigger subscription
|
|
21
|
-
bound to an agent. Creating one records the binding and creates the backing cron
|
|
22
|
-
job that executes it. Pausing/resuming (--no-active/--active) leaves the runtime
|
|
23
|
-
untouched.
|
|
24
|
-
|
|
25
|
-
Workflow:
|
|
26
|
-
1. naive loops create --schedule "0 9 * * *" --prompt "Summarize overnight email" --name "Morning triage"
|
|
27
|
-
2. naive loops list → see all loops
|
|
28
|
-
3. naive loops run <id> → test-fire immediately
|
|
29
|
-
4. naive loops update <id> --no-active → pause
|
|
30
|
-
5. naive loops remove <id> → delete permanently
|
|
31
|
-
|
|
32
|
-
Examples:
|
|
33
|
-
$ naive loops create --schedule "0 9 * * 1" --prompt "Generate the weekly report" --name "Weekly Report"
|
|
34
|
-
$ naive loops list
|
|
35
|
-
$ naive loops run loop_01H...
|
|
36
|
-
$ naive loops update loop_01H... --no-active
|
|
37
|
-
$ naive loops remove loop_01H...
|
|
38
|
-
`);
|
|
39
|
-
loopsCmd
|
|
40
|
-
.command("list")
|
|
41
|
-
.description("List all loops — active and paused recurring agent runs")
|
|
42
|
-
.option("--user <id>", "Target a specific tenant user")
|
|
43
|
-
.addHelpText("after", `
|
|
44
|
-
Examples:
|
|
45
|
-
$ naive loops list
|
|
46
|
-
|
|
47
|
-
Returns loop details:
|
|
48
|
-
- id, name, schedule (cron expression), active
|
|
49
|
-
- target (prompt + optional profileName)
|
|
50
|
-
- cronJobId of the backing executor
|
|
51
|
-
`)
|
|
52
|
-
.action(async (opts) => {
|
|
53
|
-
const resp = await apiRequest("GET", "/v1/loops", undefined, { userId: opts.user });
|
|
54
|
-
handleApiError("loops.list", resp);
|
|
55
|
-
const data = resp.data;
|
|
56
|
-
const count = data.count ?? data.loops?.length ?? 0;
|
|
57
|
-
const active = data.loops?.filter((l) => l.active !== false) ?? [];
|
|
58
|
-
agentOutput({
|
|
59
|
-
action: "loops.list",
|
|
60
|
-
result: resp.data,
|
|
61
|
-
next_steps: [
|
|
62
|
-
...(count > 0
|
|
63
|
-
? [{ command: `naive loops get ${data.loops[0].id}`, description: "View details of the first loop" }]
|
|
64
|
-
: []),
|
|
65
|
-
{ command: 'naive loops create --schedule "<cron>" --prompt "<text>"', description: "Create a new loop" },
|
|
66
|
-
],
|
|
67
|
-
hints: [
|
|
68
|
-
`${count} loop${count !== 1 ? "s" : ""} total, ${active.length} active`,
|
|
69
|
-
],
|
|
70
|
-
related_commands: ["naive loops create", "naive loops get", "naive loops run"],
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
loopsCmd
|
|
74
|
-
.command("create")
|
|
75
|
-
.description("Create a recurring agent run that fires a prompt on a cron schedule")
|
|
76
|
-
.requiredOption("--schedule <cron>", "Cron expression (e.g. '0 9 * * *')")
|
|
77
|
-
.requiredOption("--prompt <text>", "Prompt to run each time the loop fires")
|
|
78
|
-
.option("--name <name>", "Human-readable name for the loop")
|
|
79
|
-
.option("--profile <name>", "Agent profile to run as (defaults to the CEO)")
|
|
80
|
-
.option("--user <id>", "Target a specific tenant user")
|
|
81
|
-
.addHelpText("after", `
|
|
82
|
-
Examples:
|
|
83
|
-
$ naive loops create --schedule "0 9 * * *" --prompt "Review overnight email and summarize what needs my attention"
|
|
84
|
-
$ naive loops create --schedule "*/30 * * * *" --prompt "Check social mentions" --profile support --name "Mentions watch"
|
|
85
|
-
|
|
86
|
-
What this does:
|
|
87
|
-
Records the loop binding and creates the backing cron job that executes it.
|
|
88
|
-
The response includes the loop and the cron_job_id of the backing executor
|
|
89
|
-
(null if no runtime is reachable yet — the binding still persists and can
|
|
90
|
-
be synced later).
|
|
91
|
-
`)
|
|
92
|
-
.action(async (opts) => {
|
|
93
|
-
const resp = await apiRequest("POST", "/v1/loops", {
|
|
94
|
-
schedule: opts.schedule,
|
|
95
|
-
prompt: opts.prompt,
|
|
96
|
-
...(opts.name && { name: opts.name }),
|
|
97
|
-
...(opts.profile && { profileName: opts.profile }),
|
|
98
|
-
}, { userId: opts.user });
|
|
99
|
-
handleApiError("loops.create", resp);
|
|
100
|
-
const data = resp.data;
|
|
101
|
-
const loop = data.loop ?? {};
|
|
102
|
-
const loopId = loop.id ?? "unknown";
|
|
103
|
-
agentOutput({
|
|
104
|
-
action: "loops.create",
|
|
105
|
-
result: resp.data,
|
|
106
|
-
next_steps: [
|
|
107
|
-
{ command: `naive loops run ${loopId}`, description: "Test-fire this loop immediately" },
|
|
108
|
-
{ command: "naive loops list", description: "View all loops" },
|
|
109
|
-
],
|
|
110
|
-
hints: [
|
|
111
|
-
`Loop created (id: ${loopId})`,
|
|
112
|
-
`Schedule: ${loop.schedule ?? opts.schedule}`,
|
|
113
|
-
...(loop.name ? [`Name: ${loop.name}`] : []),
|
|
114
|
-
data.cron_job_id
|
|
115
|
-
? `Backing cron job: ${data.cron_job_id}`
|
|
116
|
-
: "No runtime reachable yet — the binding persists and will sync later (cron_job_id: null)",
|
|
117
|
-
],
|
|
118
|
-
related_commands: ["naive loops list", "naive loops run", "naive loops update"],
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
loopsCmd
|
|
122
|
-
.command("get <id>")
|
|
123
|
-
.description("Show full details for a specific loop")
|
|
124
|
-
.option("--user <id>", "Target a specific tenant user")
|
|
125
|
-
.addHelpText("after", `
|
|
126
|
-
Examples:
|
|
127
|
-
$ naive loops get loop_01H...
|
|
128
|
-
|
|
129
|
-
Returns the loop's id, name, schedule, active flag, target (prompt + profile),
|
|
130
|
-
and the cronJobId of the backing executor.
|
|
131
|
-
`)
|
|
132
|
-
.action(async (id, opts) => {
|
|
133
|
-
const resp = await apiRequest("GET", `/v1/loops/${id}`, undefined, { userId: opts.user });
|
|
134
|
-
handleApiError("loops.get", resp);
|
|
135
|
-
const data = resp.data;
|
|
136
|
-
agentOutput({
|
|
137
|
-
action: "loops.get",
|
|
138
|
-
result: resp.data,
|
|
139
|
-
next_steps: [
|
|
140
|
-
{ command: `naive loops run ${id}`, description: "Fire this loop now" },
|
|
141
|
-
...(data.active === false
|
|
142
|
-
? [{ command: `naive loops update ${id} --active`, description: "Resume this loop" }]
|
|
143
|
-
: [{ command: `naive loops update ${id} --no-active`, description: "Pause this loop" }]),
|
|
144
|
-
{ command: "naive loops list", description: "View all loops" },
|
|
145
|
-
],
|
|
146
|
-
hints: [
|
|
147
|
-
`${data.name ?? data.id ?? id}: ${data.active === false ? "paused" : "active"}${data.schedule ? ` (${data.schedule})` : ""}`,
|
|
148
|
-
],
|
|
149
|
-
related_commands: ["naive loops list", "naive loops update", "naive loops run"],
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
loopsCmd
|
|
153
|
-
.command("update <id>")
|
|
154
|
-
.description("Update a loop — pause/resume, or edit its name, prompt, or profile")
|
|
155
|
-
.option("--name <name>", "New human-readable name")
|
|
156
|
-
.option("--active", "Resume the loop (fire on schedule)")
|
|
157
|
-
.option("--no-active", "Pause the loop (do not fire on schedule)")
|
|
158
|
-
.option("--prompt <text>", "New prompt to run each firing")
|
|
159
|
-
.option("--profile <name>", "New agent profile to run as")
|
|
160
|
-
.option("--user <id>", "Target a specific tenant user")
|
|
161
|
-
.addHelpText("after", `
|
|
162
|
-
Examples:
|
|
163
|
-
$ naive loops update loop_01H... --no-active # pause
|
|
164
|
-
$ naive loops update loop_01H... --active # resume
|
|
165
|
-
$ naive loops update loop_01H... --prompt "New instructions"
|
|
166
|
-
$ naive loops update loop_01H... --name "Renamed loop" --profile support
|
|
167
|
-
`)
|
|
168
|
-
.action(async (id, opts) => {
|
|
169
|
-
const body = {};
|
|
170
|
-
if (opts.name !== undefined)
|
|
171
|
-
body.name = opts.name;
|
|
172
|
-
if (opts.active !== undefined)
|
|
173
|
-
body.active = opts.active;
|
|
174
|
-
if (opts.prompt !== undefined)
|
|
175
|
-
body.prompt = opts.prompt;
|
|
176
|
-
if (opts.profile !== undefined)
|
|
177
|
-
body.profileName = opts.profile;
|
|
178
|
-
const resp = await apiRequest("PATCH", `/v1/loops/${id}`, body, { userId: opts.user });
|
|
179
|
-
handleApiError("loops.update", resp);
|
|
180
|
-
agentOutput({
|
|
181
|
-
action: "loops.update",
|
|
182
|
-
result: resp.data,
|
|
183
|
-
next_steps: [
|
|
184
|
-
{ command: `naive loops get ${id}`, description: "View the updated loop" },
|
|
185
|
-
{ command: "naive loops list", description: "View all loops" },
|
|
186
|
-
],
|
|
187
|
-
hints: [
|
|
188
|
-
`Loop ${id} updated`,
|
|
189
|
-
...(opts.active !== undefined ? [opts.active ? "Resumed — will fire on schedule" : "Paused — will not fire on schedule"] : []),
|
|
190
|
-
...(opts.name !== undefined ? [`Name → ${opts.name}`] : []),
|
|
191
|
-
...(opts.prompt !== undefined ? ["Prompt updated"] : []),
|
|
192
|
-
...(opts.profile !== undefined ? [`Profile → ${opts.profile}`] : []),
|
|
193
|
-
],
|
|
194
|
-
related_commands: ["naive loops get", "naive loops list"],
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
loopsCmd
|
|
198
|
-
.command("run <id>")
|
|
199
|
-
.description("Fire a loop immediately — the regular schedule is unaffected")
|
|
200
|
-
.option("--user <id>", "Target a specific tenant user")
|
|
201
|
-
.addHelpText("after", `
|
|
202
|
-
Examples:
|
|
203
|
-
$ naive loops run loop_01H...
|
|
204
|
-
|
|
205
|
-
Fires the loop's prompt right now, regardless of its schedule. Returns the
|
|
206
|
-
run_id of the triggered run (null if no runtime is reachable).
|
|
207
|
-
|
|
208
|
-
Cost: Same as a regular loop firing (credits based on work performed).
|
|
209
|
-
`)
|
|
210
|
-
.action(async (id, opts) => {
|
|
211
|
-
const resp = await apiRequest("POST", `/v1/loops/${id}/run`, undefined, { userId: opts.user });
|
|
212
|
-
handleApiError("loops.run", resp);
|
|
213
|
-
const data = resp.data;
|
|
214
|
-
agentOutput({
|
|
215
|
-
action: "loops.run",
|
|
216
|
-
result: resp.data,
|
|
217
|
-
next_steps: [
|
|
218
|
-
...(data.run_id
|
|
219
|
-
? [{ command: `naive ceo stream ${data.run_id}`, description: "Stream the triggered run" }]
|
|
220
|
-
: []),
|
|
221
|
-
{ command: "naive loops list", description: "View all loops" },
|
|
222
|
-
],
|
|
223
|
-
hints: [
|
|
224
|
-
data.run_id
|
|
225
|
-
? `Loop ${id} fired (run: ${data.run_id})`
|
|
226
|
-
: `Loop ${id} could not fire — no runtime reachable`,
|
|
227
|
-
"This does not affect the regular schedule",
|
|
228
|
-
],
|
|
229
|
-
related_commands: ["naive loops list", "naive ceo stream", "naive loops get"],
|
|
230
|
-
});
|
|
231
|
-
});
|
|
232
|
-
loopsCmd
|
|
233
|
-
.command("remove <id>")
|
|
234
|
-
.description("Permanently delete a loop and its backing cron job")
|
|
235
|
-
.option("--user <id>", "Target a specific tenant user")
|
|
236
|
-
.addHelpText("after", `
|
|
237
|
-
Examples:
|
|
238
|
-
$ naive loops remove loop_01H...
|
|
239
|
-
|
|
240
|
-
Deletes the loop binding and best-effort removes the backing cron job.
|
|
241
|
-
This cannot be undone.
|
|
242
|
-
`)
|
|
243
|
-
.action(async (id, opts) => {
|
|
244
|
-
const resp = await apiRequest("DELETE", `/v1/loops/${id}`, undefined, { userId: opts.user });
|
|
245
|
-
handleApiError("loops.remove", resp);
|
|
246
|
-
agentOutput({
|
|
247
|
-
action: "loops.remove",
|
|
248
|
-
result: resp.data,
|
|
249
|
-
next_steps: [
|
|
250
|
-
{ command: "naive loops list", description: "View remaining loops" },
|
|
251
|
-
{ command: 'naive loops create --schedule "<cron>" --prompt "<text>"', description: "Create a replacement loop" },
|
|
252
|
-
],
|
|
253
|
-
hints: [
|
|
254
|
-
`Loop ${id} deleted permanently`,
|
|
255
|
-
"The backing cron job is removed too",
|
|
256
|
-
],
|
|
257
|
-
related_commands: ["naive loops list", "naive loops create"],
|
|
258
|
-
});
|
|
259
|
-
});
|
|
260
|
-
//# sourceMappingURL=loops.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loops.js","sourceRoot":"","sources":["../../src/commands/loops.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KACzC,WAAW,CAAC,8EAA8E,CAAC;KAC3F,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCvB,CAAC,CAAC;AAEH,QAAQ;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC;KACtD,WAAW,CAAC,OAAO,EAAE;;;;;;;;CAQvB,CAAC;KACC,MAAM,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE;IACxC,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACpF,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAEnC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAmH,CAAC;IACtI,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;IAEnE,WAAW,CAAC;QACV,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE;YACV,GAAG,CAAC,KAAK,GAAG,CAAC;gBACX,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;gBACtG,CAAC,CAAC,EAAE,CAAC;YACP,EAAE,OAAO,EAAE,0DAA0D,EAAE,WAAW,EAAE,mBAAmB,EAAE;SAC1G;QACD,KAAK,EAAE;YACL,GAAG,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,MAAM,CAAC,MAAM,SAAS;SACxE;QACD,gBAAgB,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,iBAAiB,CAAC;KAC/E,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,QAAQ;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qEAAqE,CAAC;KAClF,cAAc,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;KACzE,cAAc,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;KAC3E,MAAM,CAAC,eAAe,EAAE,kCAAkC,CAAC;KAC3D,MAAM,CAAC,kBAAkB,EAAE,+CAA+C,CAAC;KAC3E,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC;KACtD,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;CAUvB,CAAC;KACC,MAAM,CAAC,KAAK,EAAE,IAA0F,EAAE,EAAE;IAC3G,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE;QACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;KACnD,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1B,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAErC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAwG,CAAC;IAC3H,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC;IAEpC,WAAW,CAAC;QACV,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,mBAAmB,MAAM,EAAE,EAAE,WAAW,EAAE,iCAAiC,EAAE;YACxF,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,gBAAgB,EAAE;SAC/D;QACD,KAAK,EAAE;YACL,qBAAqB,MAAM,GAAG;YAC9B,aAAa,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC7C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,WAAW;gBACd,CAAC,CAAC,qBAAqB,IAAI,CAAC,WAAW,EAAE;gBACzC,CAAC,CAAC,yFAAyF;SAC9F;QACD,gBAAgB,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,CAAC;KAChF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,QAAQ;KACL,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC;KACtD,WAAW,CAAC,OAAO,EAAE;;;;;;CAMvB,CAAC;KACC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAAuB,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1F,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAElC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAkF,CAAC;IAErG,WAAW,CAAC;QACV,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE;YACvE,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK;gBACvB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;gBACrF,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC1F,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,gBAAgB,EAAE;SAC/D;QACD,KAAK,EAAE;YACL,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;SAC7H;QACD,gBAAgB,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,CAAC;KAChF,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,QAAQ;KACL,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,oEAAoE,CAAC;KACjF,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC;KAClD,MAAM,CAAC,UAAU,EAAE,oCAAoC,CAAC;KACxD,MAAM,CAAC,aAAa,EAAE,0CAA0C,CAAC;KACjE,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;KAC1D,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;KACzD,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC;KACtD,WAAW,CAAC,OAAO,EAAE;;;;;;CAMvB,CAAC;KACC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAA2F,EAAE,EAAE;IACxH,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACnD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACzD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACzD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;IAEhE,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACvF,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAErC,WAAW,CAAC;QACV,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE;YAC1E,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,gBAAgB,EAAE;SAC/D;QACD,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9H,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE;QACD,gBAAgB,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;KAC1D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,QAAQ;KACL,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,8DAA8D,CAAC;KAC3E,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC;KACtD,WAAW,CAAC,OAAO,EAAE;;;;;;;;CAQvB,CAAC;KACC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAAuB,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/F,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAElC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAgD,CAAC;IAEnE,WAAW,CAAC;QACV,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE;YACV,GAAG,CAAC,IAAI,CAAC,MAAM;gBACb,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,0BAA0B,EAAE,CAAC;gBAC3F,CAAC,CAAC,EAAE,CAAC;YACP,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,gBAAgB,EAAE;SAC/D;QACD,KAAK,EAAE;YACL,IAAI,CAAC,MAAM;gBACT,CAAC,CAAC,QAAQ,EAAE,gBAAgB,IAAI,CAAC,MAAM,GAAG;gBAC1C,CAAC,CAAC,QAAQ,EAAE,wCAAwC;YACtD,2CAA2C;SAC5C;QACD,gBAAgB,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;KAC9E,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,QAAQ;KACL,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,oDAAoD,CAAC;KACjE,MAAM,CAAC,aAAa,EAAE,+BAA+B,CAAC;KACtD,WAAW,CAAC,OAAO,EAAE;;;;;;CAMvB,CAAC;KACC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAAuB,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7F,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAErC,WAAW,CAAC;QACV,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,sBAAsB,EAAE;YACpE,EAAE,OAAO,EAAE,0DAA0D,EAAE,WAAW,EAAE,2BAA2B,EAAE;SAClH;QACD,KAAK,EAAE;YACL,QAAQ,EAAE,sBAAsB;YAChC,qCAAqC;SACtC;QACD,gBAAgB,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;KAC7D,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/commands/media.d.ts
DELETED
package/dist/commands/media.js
DELETED
|
@@ -1,183 +0,0 @@
|
|
|
1
|
-
import { Command } from "commander";
|
|
2
|
-
import { readFileSync } from "fs";
|
|
3
|
-
import { basename } from "path";
|
|
4
|
-
import { apiRequest, handleApiError, isUpstreamError, parseJsonOrUpstreamError } from "../client.js";
|
|
5
|
-
import { loadConfig, getApiKey } from "../config.js";
|
|
6
|
-
import { agentOutput, formatApiError } from "../output.js";
|
|
7
|
-
export const mediaCmd = new Command("media")
|
|
8
|
-
.description("Manage media assets — upload, list, update, delete files in your Media Asset Manager")
|
|
9
|
-
.addHelpText("after", `
|
|
10
|
-
Subcommands:
|
|
11
|
-
naive media list List media assets
|
|
12
|
-
naive media get <id> Get a single asset by ID
|
|
13
|
-
naive media upload --url <url> Upload from a URL
|
|
14
|
-
naive media upload --file <path> Upload a local file
|
|
15
|
-
naive media update <id> --title ... --tags ... Update asset metadata
|
|
16
|
-
naive media delete <id> Delete an asset
|
|
17
|
-
|
|
18
|
-
Assets are auto-populated when video clipping or video generation jobs complete.
|
|
19
|
-
`);
|
|
20
|
-
// ── List ──────────────────────────────────────────────────────────────────
|
|
21
|
-
mediaCmd
|
|
22
|
-
.command("list")
|
|
23
|
-
.description("List media assets with optional filters")
|
|
24
|
-
.option("--source <type>", "Filter by source: manual, video_clipping, video_generation, url_import")
|
|
25
|
-
.option("--search <query>", "Search by title or filename")
|
|
26
|
-
.option("--limit <n>", "Max results (default 50, max 100)")
|
|
27
|
-
.option("--offset <n>", "Pagination offset")
|
|
28
|
-
.action(async (opts) => {
|
|
29
|
-
const params = new URLSearchParams();
|
|
30
|
-
if (opts.source)
|
|
31
|
-
params.set("source_type", opts.source);
|
|
32
|
-
if (opts.search)
|
|
33
|
-
params.set("search", opts.search);
|
|
34
|
-
if (opts.limit)
|
|
35
|
-
params.set("limit", opts.limit);
|
|
36
|
-
if (opts.offset)
|
|
37
|
-
params.set("offset", opts.offset);
|
|
38
|
-
const qs = params.toString();
|
|
39
|
-
const resp = await apiRequest("GET", `/v1/media${qs ? `?${qs}` : ""}`);
|
|
40
|
-
handleApiError("media.list", resp);
|
|
41
|
-
agentOutput({
|
|
42
|
-
action: "media.list",
|
|
43
|
-
result: resp.data,
|
|
44
|
-
next_steps: [
|
|
45
|
-
{ command: "naive media get <id>", description: "View a specific asset" },
|
|
46
|
-
{ command: "naive media upload --url <url>", description: "Upload a new asset from URL" },
|
|
47
|
-
],
|
|
48
|
-
hints: ["Use --source to filter by origin (video_clipping, video_generation, manual, url_import)."],
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
// ── Get ───────────────────────────────────────────────────────────────────
|
|
52
|
-
mediaCmd
|
|
53
|
-
.command("get <id>")
|
|
54
|
-
.description("Get details of a single media asset")
|
|
55
|
-
.action(async (id) => {
|
|
56
|
-
const resp = await apiRequest("GET", `/v1/media/${id}`);
|
|
57
|
-
handleApiError("media.get", resp);
|
|
58
|
-
agentOutput({
|
|
59
|
-
action: "media.get",
|
|
60
|
-
result: resp.data,
|
|
61
|
-
next_steps: [
|
|
62
|
-
{ command: `naive media update ${id} --title "New Title"`, description: "Update this asset" },
|
|
63
|
-
{ command: `naive media delete ${id}`, description: "Delete this asset" },
|
|
64
|
-
],
|
|
65
|
-
hints: ["Asset details include source_type, source_job_id, and tags."],
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
// ── Upload ────────────────────────────────────────────────────────────────
|
|
69
|
-
mediaCmd
|
|
70
|
-
.command("upload")
|
|
71
|
-
.description("Upload a media asset from a URL or local file")
|
|
72
|
-
.option("--url <url>", "Public URL of the media file")
|
|
73
|
-
.option("--file <path>", "Path to a local file to upload")
|
|
74
|
-
.option("--title <title>", "Asset title")
|
|
75
|
-
.option("--description <desc>", "Asset description")
|
|
76
|
-
.option("--tags <tags>", "Comma-separated tags")
|
|
77
|
-
.action(async (opts) => {
|
|
78
|
-
if (!opts.url && !opts.file) {
|
|
79
|
-
console.error("Error: provide --url or --file");
|
|
80
|
-
process.exit(1);
|
|
81
|
-
}
|
|
82
|
-
const tags = opts.tags ? opts.tags.split(",").map((t) => t.trim()) : undefined;
|
|
83
|
-
if (opts.url) {
|
|
84
|
-
const body = { url: opts.url };
|
|
85
|
-
if (opts.title)
|
|
86
|
-
body.title = opts.title;
|
|
87
|
-
if (opts.description)
|
|
88
|
-
body.description = opts.description;
|
|
89
|
-
if (tags)
|
|
90
|
-
body.tags = tags;
|
|
91
|
-
const resp = await apiRequest("POST", "/v1/media/upload/url", body);
|
|
92
|
-
handleApiError("media.upload", resp);
|
|
93
|
-
agentOutput({
|
|
94
|
-
action: "media.upload",
|
|
95
|
-
result: resp.data,
|
|
96
|
-
next_steps: [
|
|
97
|
-
{ command: "naive media list", description: "View all assets" },
|
|
98
|
-
],
|
|
99
|
-
hints: ["Asset uploaded from URL and added to your Media Asset Manager."],
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
const filePath = opts.file;
|
|
104
|
-
const fileBuffer = readFileSync(filePath);
|
|
105
|
-
const filename = basename(filePath);
|
|
106
|
-
const config = loadConfig();
|
|
107
|
-
const url = `${config.base_url}/v1/media/upload/file`;
|
|
108
|
-
const formData = new FormData();
|
|
109
|
-
formData.append("file", new Blob([fileBuffer]), filename);
|
|
110
|
-
if (opts.title)
|
|
111
|
-
formData.append("title", opts.title);
|
|
112
|
-
if (opts.description)
|
|
113
|
-
formData.append("description", opts.description);
|
|
114
|
-
if (tags)
|
|
115
|
-
formData.append("tags", JSON.stringify(tags));
|
|
116
|
-
const resp = await fetch(url, {
|
|
117
|
-
method: "POST",
|
|
118
|
-
headers: { Authorization: `Bearer ${getApiKey()}` },
|
|
119
|
-
body: formData,
|
|
120
|
-
});
|
|
121
|
-
const data = await parseJsonOrUpstreamError(resp);
|
|
122
|
-
if (resp.status >= 400 || isUpstreamError(data)) {
|
|
123
|
-
formatApiError("media.upload", data);
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
agentOutput({
|
|
127
|
-
action: "media.upload",
|
|
128
|
-
result: data,
|
|
129
|
-
next_steps: [
|
|
130
|
-
{ command: "naive media list", description: "View all assets" },
|
|
131
|
-
],
|
|
132
|
-
hints: [`File "${filename}" uploaded to your Media Asset Manager.`],
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
});
|
|
137
|
-
// ── Update ────────────────────────────────────────────────────────────────
|
|
138
|
-
mediaCmd
|
|
139
|
-
.command("update <id>")
|
|
140
|
-
.description("Update media asset metadata (title, description, tags)")
|
|
141
|
-
.option("--title <title>", "New title")
|
|
142
|
-
.option("--description <desc>", "New description")
|
|
143
|
-
.option("--tags <tags>", "Comma-separated tags (replaces existing)")
|
|
144
|
-
.action(async (id, opts) => {
|
|
145
|
-
const body = {};
|
|
146
|
-
if (opts.title !== undefined)
|
|
147
|
-
body.title = opts.title;
|
|
148
|
-
if (opts.description !== undefined)
|
|
149
|
-
body.description = opts.description;
|
|
150
|
-
if (opts.tags !== undefined)
|
|
151
|
-
body.tags = opts.tags.split(",").map((t) => t.trim());
|
|
152
|
-
if (Object.keys(body).length === 0) {
|
|
153
|
-
console.error("Error: provide at least one of --title, --description, or --tags");
|
|
154
|
-
process.exit(1);
|
|
155
|
-
}
|
|
156
|
-
const resp = await apiRequest("PATCH", `/v1/media/${id}`, body);
|
|
157
|
-
handleApiError("media.update", resp);
|
|
158
|
-
agentOutput({
|
|
159
|
-
action: "media.update",
|
|
160
|
-
result: resp.data,
|
|
161
|
-
next_steps: [
|
|
162
|
-
{ command: `naive media get ${id}`, description: "View updated asset" },
|
|
163
|
-
],
|
|
164
|
-
hints: ["Asset metadata updated."],
|
|
165
|
-
});
|
|
166
|
-
});
|
|
167
|
-
// ── Delete ────────────────────────────────────────────────────────────────
|
|
168
|
-
mediaCmd
|
|
169
|
-
.command("delete <id>")
|
|
170
|
-
.description("Delete a media asset")
|
|
171
|
-
.action(async (id) => {
|
|
172
|
-
const resp = await apiRequest("DELETE", `/v1/media/${id}`);
|
|
173
|
-
handleApiError("media.delete", resp);
|
|
174
|
-
agentOutput({
|
|
175
|
-
action: "media.delete",
|
|
176
|
-
result: resp.data,
|
|
177
|
-
next_steps: [
|
|
178
|
-
{ command: "naive media list", description: "View remaining assets" },
|
|
179
|
-
],
|
|
180
|
-
hints: ["Asset permanently deleted."],
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
//# sourceMappingURL=media.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/commands/media.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACrG,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KACzC,WAAW,CAAC,sFAAsF,CAAC;KACnG,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;CAUvB,CAAC,CAAC;AAEH,6EAA6E;AAE7E,QAAQ;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,iBAAiB,EAAE,wEAAwE,CAAC;KACnG,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC;KACzD,MAAM,CAAC,aAAa,EAAE,mCAAmC,CAAC;KAC1D,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvE,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACnC,WAAW,CAAC;QACV,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,uBAAuB,EAAE;YACzE,EAAE,OAAO,EAAE,gCAAgC,EAAE,WAAW,EAAE,6BAA6B,EAAE;SAC1F;QACD,KAAK,EAAE,CAAC,0FAA0F,CAAC;KACpG,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,6EAA6E;AAE7E,QAAQ;KACL,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;IAC3B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IACxD,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAClC,WAAW,CAAC;QACV,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,WAAW,EAAE,mBAAmB,EAAE;YAC7F,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE;SAC1E;QACD,KAAK,EAAE,CAAC,6DAA6D,CAAC;KACvE,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,6EAA6E;AAE7E,QAAQ;KACL,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,aAAa,EAAE,8BAA8B,CAAC;KACrD,MAAM,CAAC,eAAe,EAAE,gCAAgC,CAAC;KACzD,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;KACxC,MAAM,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;KACnD,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvF,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAA4B,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;QACxD,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxC,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAC1D,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAC;QACpE,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACrC,WAAW,CAAC;YACV,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,IAAI,CAAC,IAAI;YACjB,UAAU,EAAE;gBACV,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,EAAE;aAChE;YACD,KAAK,EAAE,CAAC,gEAAgE,CAAC;SAC1E,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAc,CAAC;QACrC,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,uBAAuB,CAAC;QAEtD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,KAAK;YAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,WAAW;YAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACvE,IAAI,IAAI;YAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAExD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC5B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,SAAS,EAAE,EAAE,EAAE;YACnD,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,WAAW,CAAC;gBACV,MAAM,EAAE,cAAc;gBACtB,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE;oBACV,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,iBAAiB,EAAE;iBAChE;gBACD,KAAK,EAAE,CAAC,SAAS,QAAQ,yCAAyC,CAAC;aACpE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,6EAA6E;AAE7E,QAAQ;KACL,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,iBAAiB,EAAE,WAAW,CAAC;KACtC,MAAM,CAAC,sBAAsB,EAAE,iBAAiB,CAAC;KACjD,MAAM,CAAC,eAAe,EAAE,0CAA0C,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,IAAI,EAAE,EAAE;IACjC,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACtD,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;IACxE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3F,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAChE,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACrC,WAAW,CAAC;QACV,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE;SACxE;QACD,KAAK,EAAE,CAAC,yBAAyB,CAAC;KACnC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,6EAA6E;AAE7E,QAAQ;KACL,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;IAC3B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IAC3D,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACrC,WAAW,CAAC;QACV,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,IAAI,CAAC,IAAI;QACjB,UAAU,EAAE;YACV,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,uBAAuB,EAAE;SACtE;QACD,KAAK,EAAE,CAAC,4BAA4B,CAAC;KACtC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|