@voicethere/cli 0.1.0 → 0.2.2
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 +105 -50
- package/dist/cli.js +41 -30
- package/dist/cli.js.map +1 -1
- package/dist/commands/build/list.d.ts +3 -2
- package/dist/commands/build/list.d.ts.map +1 -1
- package/dist/commands/build/list.js +12 -7
- package/dist/commands/build/list.js.map +1 -1
- package/dist/commands/build/promote.d.ts +1 -2
- package/dist/commands/build/promote.d.ts.map +1 -1
- package/dist/commands/build/promote.js +48 -7
- package/dist/commands/build/promote.js.map +1 -1
- package/dist/commands/build/upload.d.ts +0 -1
- package/dist/commands/build/upload.d.ts.map +1 -1
- package/dist/commands/build/upload.js +18 -5
- package/dist/commands/build/upload.js.map +1 -1
- package/dist/commands/build/validate.d.ts +2 -0
- package/dist/commands/build/validate.d.ts.map +1 -1
- package/dist/commands/build/validate.js +11 -14
- package/dist/commands/build/validate.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +7 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/projects/create.d.ts.map +1 -1
- package/dist/commands/projects/create.js +7 -2
- package/dist/commands/projects/create.js.map +1 -1
- package/dist/commands/projects/delete.d.ts +6 -0
- package/dist/commands/projects/delete.d.ts.map +1 -0
- package/dist/commands/projects/delete.js +39 -0
- package/dist/commands/projects/delete.js.map +1 -0
- package/dist/commands/projects/list.d.ts.map +1 -1
- package/dist/commands/projects/list.js +3 -0
- package/dist/commands/projects/list.js.map +1 -1
- package/dist/commands/projects/show.d.ts.map +1 -1
- package/dist/commands/projects/show.js +3 -1
- package/dist/commands/projects/show.js.map +1 -1
- package/dist/commands/projects/use.d.ts +2 -1
- package/dist/commands/projects/use.d.ts.map +1 -1
- package/dist/commands/projects/use.js +70 -10
- package/dist/commands/projects/use.js.map +1 -1
- package/dist/lib/api.d.ts +4 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +21 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/command-log.d.ts +19 -0
- package/dist/lib/command-log.d.ts.map +1 -0
- package/dist/lib/command-log.js +60 -0
- package/dist/lib/command-log.js.map +1 -0
- package/dist/lib/project-config.d.ts +26 -4
- package/dist/lib/project-config.d.ts.map +1 -1
- package/dist/lib/project-config.js +49 -17
- package/dist/lib/project-config.js.map +1 -1
- package/dist/lib/prompt.d.ts +9 -0
- package/dist/lib/prompt.d.ts.map +1 -0
- package/dist/lib/prompt.js +49 -0
- package/dist/lib/prompt.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export declare const DEFAULT_BUNDLE_PATH = "dist/agent.js";
|
|
2
2
|
export interface BuildValidateOptions {
|
|
3
3
|
file?: string;
|
|
4
|
+
/** When false, skip startup path logging (caller already logged). Default true. */
|
|
5
|
+
logContext?: boolean;
|
|
4
6
|
}
|
|
5
7
|
export declare function runBuildValidate(options: BuildValidateOptions): Promise<void>;
|
|
6
8
|
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/build/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/build/validate.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAEnD,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mFAAmF;IACnF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAWf"}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
import { access } from "node:fs/promises";
|
|
2
1
|
import { spawn } from "node:child_process";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { logResolvedBundle, logStep, logVerbose } from "../../lib/command-log.js";
|
|
3
|
+
import { assertBundleExists, resolveBundlePathDetailed, } from "../../lib/project-config.js";
|
|
5
4
|
export const DEFAULT_BUNDLE_PATH = "dist/agent.js";
|
|
6
5
|
export async function runBuildValidate(options) {
|
|
7
|
-
|
|
8
|
-
await
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
async function assertBundleExists(bundlePath) {
|
|
13
|
-
try {
|
|
14
|
-
await access(bundlePath, constants.R_OK);
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
throw new Error(`Bundle not found or not readable: ${bundlePath} — run: npx @voicethere/agent build`);
|
|
6
|
+
logStep("Validating agent bundle");
|
|
7
|
+
const bundle = await resolveBundlePathDetailed(options.file);
|
|
8
|
+
if (options.logContext !== false) {
|
|
9
|
+
logResolvedBundle(bundle);
|
|
18
10
|
}
|
|
11
|
+
await assertBundleExists(bundle.absolutePath);
|
|
12
|
+
logStep("Running @voicethere/agent verify on bundle");
|
|
13
|
+
logVerbose(`verify bundle: ${bundle.absolutePath}`);
|
|
14
|
+
await spawnAgentVerify(bundle.absolutePath);
|
|
15
|
+
console.log(`Bundle validated: ${bundle.absolutePath}`);
|
|
19
16
|
}
|
|
20
17
|
async function spawnAgentVerify(bundlePath) {
|
|
21
18
|
return new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/build/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/build/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,6BAA6B,CAAC;AAErC,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC;AAQnD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA6B;IAE7B,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;QACjC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC9C,OAAO,CAAC,4CAA4C,CAAC,CAAC;IACtD,UAAU,CAAC,kBAAkB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IACpD,MAAM,gBAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CACjB,KAAK,EACL,CAAC,mBAAmB,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,EACrE;YACE,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;SACpC,CACF,CAAC;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YACD,MAAM,CACJ,IAAI,KAAK,CAAC,sCAAsC,IAAI,IAAI,SAAS,EAAE,CAAC,CACrE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBnE"}
|
package/dist/commands/login.js
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { logCommandInfo, logStep } from "../lib/command-log.js";
|
|
2
|
+
import { DEFAULT_API_BASE, getCredentialsPath, writeCredentials, } from "../lib/config.js";
|
|
2
3
|
export async function runLogin(options) {
|
|
3
4
|
const apiKey = options.apiKey.trim();
|
|
4
5
|
if (!apiKey) {
|
|
5
6
|
throw new Error("--api-key is required");
|
|
6
7
|
}
|
|
7
8
|
const apiBase = (options.apiBase?.trim() || DEFAULT_API_BASE).replace(/\/$/, "");
|
|
9
|
+
const credentialsPath = getCredentialsPath();
|
|
10
|
+
logStep("Saving API credentials");
|
|
11
|
+
logCommandInfo(`credentials: ${credentialsPath}`);
|
|
12
|
+
logCommandInfo(`api base: ${apiBase}`);
|
|
8
13
|
await writeCredentials({
|
|
9
14
|
api_key: apiKey,
|
|
10
15
|
api_base: apiBase,
|
|
11
16
|
});
|
|
12
|
-
console.log(`Saved credentials to
|
|
17
|
+
console.log(`Saved credentials to ${credentialsPath} (api_base=${apiBase})`);
|
|
13
18
|
}
|
|
14
19
|
//# sourceMappingURL=login.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAO1B,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAqB;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACrC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,gBAAgB,CAAC,CAAC,OAAO,CACnE,KAAK,EACL,EAAE,CACH,CAAC;IAEF,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAC7C,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAClC,cAAc,CAAC,gBAAgB,eAAe,EAAE,CAAC,CAAC;IAClD,cAAc,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;IAEvC,MAAM,gBAAgB,CAAC;QACrB,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,wBAAwB,eAAe,cAAc,OAAO,GAAG,CAAC,CAAC;AAC/E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/projects/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/projects/create.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAqCf"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createApi } from "../../lib/api.js";
|
|
2
2
|
import { requireCredentials } from "../../lib/config.js";
|
|
3
|
+
import { logCommandInfo, logStep, logVerbose } from "../../lib/command-log.js";
|
|
3
4
|
import { writeProjectConfig } from "../../lib/project-config.js";
|
|
4
5
|
export function slugifyName(name) {
|
|
5
6
|
return name
|
|
@@ -12,7 +13,7 @@ export function slugifyName(name) {
|
|
|
12
13
|
export async function runProjectsCreate(options) {
|
|
13
14
|
const name = options.name.trim();
|
|
14
15
|
if (!name) {
|
|
15
|
-
throw new Error("
|
|
16
|
+
throw new Error("project name is required");
|
|
16
17
|
}
|
|
17
18
|
const slug = (options.slug?.trim() || slugifyName(name)).replace(/^-+|-+$/g, "");
|
|
18
19
|
if (!slug) {
|
|
@@ -20,16 +21,20 @@ export async function runProjectsCreate(options) {
|
|
|
20
21
|
}
|
|
21
22
|
const credentials = await requireCredentials();
|
|
22
23
|
const api = createApi(credentials.api_key, credentials.api_base);
|
|
24
|
+
logStep(`Creating project "${name}" (slug=${slug})`);
|
|
23
25
|
const project = await api.createProject(name, slug);
|
|
26
|
+
logVerbose(`project id: ${project.id}`);
|
|
24
27
|
const shouldLink = options.link !== false;
|
|
25
28
|
if (shouldLink) {
|
|
29
|
+
logStep("Writing .voicethere/config.json");
|
|
26
30
|
const configPath = await writeProjectConfig({
|
|
27
31
|
project_id: project.id,
|
|
28
32
|
project_slug: project.slug,
|
|
29
33
|
name: project.name,
|
|
30
34
|
bundle: options.bundle?.trim() || undefined,
|
|
31
35
|
});
|
|
32
|
-
|
|
36
|
+
logCommandInfo(`project config: ${configPath}`);
|
|
37
|
+
console.error(`Using project ${project.name} (${project.id}) — commit ${configPath}`);
|
|
33
38
|
}
|
|
34
39
|
console.log(JSON.stringify(project, null, 2));
|
|
35
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/projects/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAUjE,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,IAAI;SACR,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA8B;IAE9B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/projects/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAUjE,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,IAAI;SACR,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA8B;IAE9B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAC9D,UAAU,EACV,EAAE,CACH,CAAC;IACF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAC/C,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEjE,OAAO,CAAC,qBAAqB,IAAI,WAAW,IAAI,GAAG,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,UAAU,CAAC,eAAe,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAExC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC;IAC1C,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,iCAAiC,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC;YAC1C,UAAU,EAAE,OAAO,CAAC,EAAE;YACtB,YAAY,EAAE,OAAO,CAAC,IAAI;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS;SAC5C,CAAC,CAAC;QACH,cAAc,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;QAChD,OAAO,CAAC,KAAK,CACX,iBAAiB,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,cAAc,UAAU,EAAE,CACvE,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/projects/delete.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAwCf"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { unlink } from "node:fs/promises";
|
|
2
|
+
import { createApi } from "../../lib/api.js";
|
|
3
|
+
import { requireCredentials } from "../../lib/config.js";
|
|
4
|
+
import { logCommandInfo, logStep, logVerbose } from "../../lib/command-log.js";
|
|
5
|
+
import { isInteractive, promptConfirmText, } from "../../lib/prompt.js";
|
|
6
|
+
import { readProjectConfig, requireProjectId, } from "../../lib/project-config.js";
|
|
7
|
+
export async function runProjectsDelete(options) {
|
|
8
|
+
logStep("Deleting project");
|
|
9
|
+
const credentials = await requireCredentials();
|
|
10
|
+
const api = createApi(credentials.api_key, credentials.api_base);
|
|
11
|
+
const projectId = options.projectId?.trim() || (await requireProjectId());
|
|
12
|
+
logVerbose(`project id: ${projectId}`);
|
|
13
|
+
logStep("Fetching project details");
|
|
14
|
+
const project = await api.getProject(projectId);
|
|
15
|
+
if (!options.force) {
|
|
16
|
+
if (isInteractive()) {
|
|
17
|
+
logStep(`Confirm deletion by typing "${project.name}"`);
|
|
18
|
+
await promptConfirmText(`Type "${project.name}" to confirm deletion: `, project.name);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
throw new Error(`Refusing to delete "${project.name}" without confirmation. Re-run in a TTY or pass --force.`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
logVerbose("skipping name confirmation (--force)");
|
|
26
|
+
}
|
|
27
|
+
logStep(`Removing project "${project.name}" and all builds from the API`);
|
|
28
|
+
await api.deleteProject(projectId, {
|
|
29
|
+
force: options.force,
|
|
30
|
+
confirmName: options.force ? undefined : project.name,
|
|
31
|
+
});
|
|
32
|
+
const linked = await readProjectConfig();
|
|
33
|
+
if (linked?.config.project_id === projectId) {
|
|
34
|
+
await unlink(linked.path);
|
|
35
|
+
logCommandInfo(`removed project config: ${linked.path}`);
|
|
36
|
+
}
|
|
37
|
+
logStep(`Deleted project ${project.name} (${projectId})`);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/projects/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAOrC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAA8B;IAE9B,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5B,MAAM,WAAW,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAC/C,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEjE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAC;IAC1E,UAAU,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC;IAEvC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAEhD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,aAAa,EAAE,EAAE,CAAC;YACpB,OAAO,CAAC,+BAA+B,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;YACxD,MAAM,iBAAiB,CACrB,SAAS,OAAO,CAAC,IAAI,yBAAyB,EAC9C,OAAO,CAAC,IAAI,CACb,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,uBAAuB,OAAO,CAAC,IAAI,0DAA0D,CAC9F,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,sCAAsC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,qBAAqB,OAAO,CAAC,IAAI,+BAA+B,CAAC,CAAC;IAC1E,MAAM,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE;QACjC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;KACtD,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACzC,IAAI,MAAM,EAAE,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAC5C,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,cAAc,CAAC,2BAA2B,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,mBAAmB,OAAO,CAAC,IAAI,KAAK,SAAS,GAAG,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/projects/list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/projects/list.ts"],"names":[],"mappings":"AAIA,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBrD"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { createApi } from "../../lib/api.js";
|
|
2
|
+
import { logStep, logVerbose } from "../../lib/command-log.js";
|
|
2
3
|
import { requireCredentials } from "../../lib/config.js";
|
|
3
4
|
export async function runProjectsList() {
|
|
5
|
+
logStep("Listing projects");
|
|
4
6
|
const credentials = await requireCredentials();
|
|
5
7
|
const api = createApi(credentials.api_key, credentials.api_base);
|
|
6
8
|
const projects = await api.listProjects();
|
|
9
|
+
logVerbose(`found ${projects.length} project(s)`);
|
|
7
10
|
if (projects.length === 0) {
|
|
8
11
|
console.log("No projects found.");
|
|
9
12
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/projects/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,WAAW,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAC/C,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/projects/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5B,MAAM,WAAW,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAC/C,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1C,UAAU,CAAC,SAAS,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC;IAElD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC;QACjD,OAAO,CAAC,GAAG,CACT,GAAG,OAAO,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,kBAAkB,MAAM,EAAE,CAC1E,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/projects/show.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"show.d.ts","sourceRoot":"","sources":["../../../src/commands/projects/show.ts"],"names":[],"mappings":"AAGA,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAwBrD"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { findProjectConfigPath, readProjectConfig } from "../../lib/project-config.js";
|
|
2
|
+
import { logStep } from "../../lib/command-log.js";
|
|
2
3
|
export async function runProjectsShow() {
|
|
4
|
+
logStep("Reading local project config");
|
|
3
5
|
const path = await findProjectConfigPath();
|
|
4
6
|
if (!path) {
|
|
5
7
|
console.log("No .voicethere/config.json found in this directory or parents.");
|
|
6
|
-
console.log("Run: voicethere projects use
|
|
8
|
+
console.log("Run: voicethere projects use <projectId>");
|
|
7
9
|
return;
|
|
8
10
|
}
|
|
9
11
|
const linked = await readProjectConfig();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/projects/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/commands/projects/show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;QACE,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,MAAM,CAAC,MAAM;KACjB,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export interface ProjectsUseOptions {
|
|
2
|
-
|
|
2
|
+
projectId?: string;
|
|
3
3
|
slug?: string;
|
|
4
4
|
name?: string;
|
|
5
5
|
bundle?: string;
|
|
6
|
+
startDir?: string;
|
|
6
7
|
}
|
|
7
8
|
export declare function runProjectsUse(options: ProjectsUseOptions): Promise<void>;
|
|
8
9
|
//# sourceMappingURL=use.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../../src/commands/projects/use.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../../src/commands/projects/use.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA2DD,wBAAsB,cAAc,CAClC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAyCf"}
|
|
@@ -1,15 +1,75 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { createApi } from "../../lib/api.js";
|
|
2
|
+
import { logCommandInfo, logStep, logVerbose } from "../../lib/command-log.js";
|
|
3
|
+
import { requireCredentials } from "../../lib/config.js";
|
|
4
|
+
import { isInteractive, promptChoice } from "../../lib/prompt.js";
|
|
5
|
+
import { readProjectConfig, writeProjectConfig, } from "../../lib/project-config.js";
|
|
6
|
+
function formatProjectChoice(project) {
|
|
7
|
+
const active = project.active_build_id
|
|
8
|
+
? `active=${project.active_build_id.slice(0, 8)}…`
|
|
9
|
+
: "no active build";
|
|
10
|
+
return `${project.name} (${project.slug}) — ${project.id} — ${active}`;
|
|
11
|
+
}
|
|
12
|
+
async function resolveProjectToUse(api, options) {
|
|
13
|
+
const trimmed = options.projectId?.trim();
|
|
14
|
+
if (trimmed) {
|
|
15
|
+
logVerbose(`fetching project ${trimmed}`);
|
|
16
|
+
return { project: await api.getProject(trimmed), fromExistingConfig: false };
|
|
17
|
+
}
|
|
18
|
+
const linked = await readProjectConfig(options.startDir);
|
|
19
|
+
if (linked?.config.project_id) {
|
|
20
|
+
logCommandInfo(`using project from ${linked.path}`);
|
|
21
|
+
logVerbose(`fetching project ${linked.config.project_id}`);
|
|
22
|
+
return {
|
|
23
|
+
project: await api.getProject(linked.config.project_id),
|
|
24
|
+
fromExistingConfig: true,
|
|
25
|
+
configPath: linked.path,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
if (!isInteractive()) {
|
|
29
|
+
throw new Error("No .voicethere/config.json found. Run: voicethere projects use <projectId>");
|
|
30
|
+
}
|
|
31
|
+
const projects = await api.listProjects();
|
|
32
|
+
logVerbose(`found ${projects.length} project(s) for picker`);
|
|
33
|
+
if (projects.length === 0) {
|
|
34
|
+
throw new Error("No projects found. Create one with: voicethere projects create \"My Agent\"");
|
|
6
35
|
}
|
|
36
|
+
const selectedId = await promptChoice("Choose a project", projects.map((project) => ({
|
|
37
|
+
label: formatProjectChoice(project),
|
|
38
|
+
value: project.id,
|
|
39
|
+
})));
|
|
40
|
+
const selected = projects.find((project) => project.id === selectedId);
|
|
41
|
+
if (!selected) {
|
|
42
|
+
throw new Error("Selected project not found.");
|
|
43
|
+
}
|
|
44
|
+
return { project: selected, fromExistingConfig: false };
|
|
45
|
+
}
|
|
46
|
+
export async function runProjectsUse(options) {
|
|
47
|
+
logStep("Selecting project for this repo");
|
|
48
|
+
const credentials = await requireCredentials();
|
|
49
|
+
const api = createApi(credentials.api_key, credentials.api_base);
|
|
50
|
+
const linked = await readProjectConfig(options.startDir);
|
|
51
|
+
const { project, fromExistingConfig, configPath } = await resolveProjectToUse(api, options);
|
|
52
|
+
const bundle = options.bundle?.trim() || linked?.config.bundle?.trim() || undefined;
|
|
53
|
+
logCommandInfo(`project: ${project.id} (${project.name})`);
|
|
54
|
+
logStep("Writing .voicethere/config.json");
|
|
7
55
|
const path = await writeProjectConfig({
|
|
8
|
-
project_id:
|
|
9
|
-
project_slug: options.slug?.trim() ||
|
|
10
|
-
name: options.name?.trim() ||
|
|
11
|
-
bundle
|
|
56
|
+
project_id: project.id,
|
|
57
|
+
project_slug: options.slug?.trim() || project.slug,
|
|
58
|
+
name: options.name?.trim() || project.name,
|
|
59
|
+
bundle,
|
|
60
|
+
}, {
|
|
61
|
+
startDir: options.startDir,
|
|
62
|
+
path: fromExistingConfig ? configPath : undefined,
|
|
12
63
|
});
|
|
13
|
-
|
|
64
|
+
if (bundle) {
|
|
65
|
+
logCommandInfo(`default bundle: ${bundle}`);
|
|
66
|
+
}
|
|
67
|
+
logCommandInfo(`project config: ${path}`);
|
|
68
|
+
if (fromExistingConfig) {
|
|
69
|
+
console.log(`Using project ${project.name} (${project.id}) from ${path}`);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
console.log(`Using project ${project.name} (${project.id})`);
|
|
73
|
+
console.log(`Saved ${path}`);
|
|
14
74
|
}
|
|
15
75
|
//# sourceMappingURL=use.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use.js","sourceRoot":"","sources":["../../../src/commands/projects/use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"use.js","sourceRoot":"","sources":["../../../src/commands/projects/use.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/api.d.ts
CHANGED
|
@@ -45,6 +45,10 @@ export declare class VoicethereApi {
|
|
|
45
45
|
uploadBuild(projectId: string, bundlePath: string, message?: string): Promise<Build>;
|
|
46
46
|
promote(projectId: string, buildId?: string): Promise<PromoteResult>;
|
|
47
47
|
rollback(projectId: string, buildId?: string): Promise<PromoteResult>;
|
|
48
|
+
deleteProject(projectId: string, options?: {
|
|
49
|
+
force?: boolean;
|
|
50
|
+
confirmName?: string;
|
|
51
|
+
}): Promise<void>;
|
|
48
52
|
private request;
|
|
49
53
|
}
|
|
50
54
|
export declare function createApi(apiKey: string, apiBase: string): VoicethereApi;
|
package/dist/lib/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEhB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY;CAOjE;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEhB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY;CAOjE;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAID,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBADP,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM;IAK5B,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAQlC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM3D,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAQ/C,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,KAAK,CAAC;IAmBX,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAUpE,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAUrE,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAClD,OAAO,CAAC,IAAI,CAAC;YAaF,OAAO;CA0DtB;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAExE"}
|
package/dist/lib/api.js
CHANGED
|
@@ -12,12 +12,14 @@ export class ApiError extends Error {
|
|
|
12
12
|
this.requestId = body?.error?.request_id;
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
+
import { logApiBase, logVerbose } from "./command-log.js";
|
|
15
16
|
export class VoicethereApi {
|
|
16
17
|
apiKey;
|
|
17
18
|
apiBase;
|
|
18
19
|
constructor(apiKey, apiBase) {
|
|
19
20
|
this.apiKey = apiKey;
|
|
20
21
|
this.apiBase = apiBase;
|
|
22
|
+
logApiBase(apiBase);
|
|
21
23
|
}
|
|
22
24
|
async listProjects() {
|
|
23
25
|
const response = await this.request("GET", "/projects");
|
|
@@ -57,6 +59,14 @@ export class VoicethereApi {
|
|
|
57
59
|
json: buildId ? { build_id: buildId } : {},
|
|
58
60
|
});
|
|
59
61
|
}
|
|
62
|
+
async deleteProject(projectId, options) {
|
|
63
|
+
const query = options?.force ? "?force=true" : "";
|
|
64
|
+
await this.request("DELETE", `/projects/${projectId}${query}`, {
|
|
65
|
+
json: options?.confirmName
|
|
66
|
+
? { confirm_name: options.confirmName }
|
|
67
|
+
: undefined,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
60
70
|
async request(method, path, options) {
|
|
61
71
|
const url = new URL(path.replace(/^\//, ""), `${this.apiBase.replace(/\/$/, "")}/`);
|
|
62
72
|
const headers = {
|
|
@@ -70,7 +80,17 @@ export class VoicethereApi {
|
|
|
70
80
|
else if (options?.body) {
|
|
71
81
|
body = options.body;
|
|
72
82
|
}
|
|
83
|
+
const pathWithQuery = `${url.pathname}${url.search}`;
|
|
84
|
+
logVerbose(`${method} ${pathWithQuery}`);
|
|
85
|
+
if (options?.json !== undefined) {
|
|
86
|
+
logVerbose(`request body: ${JSON.stringify(options.json)}`);
|
|
87
|
+
}
|
|
88
|
+
if (options?.body instanceof FormData) {
|
|
89
|
+
logVerbose("request body: multipart/form-data (bundle upload)");
|
|
90
|
+
}
|
|
91
|
+
const started = performance.now();
|
|
73
92
|
const response = await fetch(url, { method, headers, body });
|
|
93
|
+
logVerbose(`response: ${response.status} (${Math.round(performance.now() - started)}ms)`);
|
|
74
94
|
const text = await response.text();
|
|
75
95
|
const payload = text.length > 0 ? JSON.parse(text) : null;
|
|
76
96
|
if (!response.ok) {
|
|
@@ -79,6 +99,7 @@ export class VoicethereApi {
|
|
|
79
99
|
: undefined;
|
|
80
100
|
const message = errorBody?.error?.message ??
|
|
81
101
|
`Request failed: ${method} ${url.pathname} (${response.status})`;
|
|
102
|
+
logVerbose(`error: ${errorBody?.error?.code ?? "unknown"} — ${message}`);
|
|
82
103
|
throw new ApiError(response.status, message, errorBody);
|
|
83
104
|
}
|
|
84
105
|
return (payload ?? {});
|
package/dist/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAUrC,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,MAAM,CAAS;IACf,IAAI,CAAU;IACd,SAAS,CAAU;IAE5B,YAAY,MAAc,EAAE,OAAe,EAAE,IAAmB;QAC9D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC;IAC3C,CAAC;CACF;AA4BD,MAAM,OAAO,aAAa;IAEL;IACA;IAFnB,YACmB,MAAc,EACd,OAAe;QADf,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAQ;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ResolvedBundlePath, ResolvedProjectId } from "./project-config.js";
|
|
2
|
+
/** Call from CLI entry (and tests). `--verbose` OR `VOICETHERE_VERBOSE=1`. */
|
|
3
|
+
export declare function configureLogging(options?: {
|
|
4
|
+
verbose?: boolean;
|
|
5
|
+
}): void;
|
|
6
|
+
export declare function isVerbose(): boolean;
|
|
7
|
+
/** Reset between tests. */
|
|
8
|
+
export declare function resetLoggingForTests(): void;
|
|
9
|
+
/** Always-on workflow steps on stderr (safe for scripts — stdout stays machine-readable). */
|
|
10
|
+
export declare function logStep(message: string): void;
|
|
11
|
+
/** Alias for path/context lines used at command start. */
|
|
12
|
+
export declare function logCommandInfo(message: string): void;
|
|
13
|
+
/** Extra detail when `--verbose` or `VOICETHERE_VERBOSE=1`. */
|
|
14
|
+
export declare function logVerbose(message: string): void;
|
|
15
|
+
export declare function logResolvedBundle(bundle: ResolvedBundlePath): void;
|
|
16
|
+
export declare function logResolvedProject(project: ResolvedProjectId): void;
|
|
17
|
+
export declare function logApiBase(apiBase: string): void;
|
|
18
|
+
export declare function logBuildPromoteContext(buildId: string, project: ResolvedProjectId): void;
|
|
19
|
+
//# sourceMappingURL=command-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-log.d.ts","sourceRoot":"","sources":["../../src/lib/command-log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AASjF,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,IAAI,CAE1E;AAED,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED,2BAA2B;AAC3B,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C;AAED,6FAA6F;AAC7F,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,+DAA+D;AAC/D,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIhD;AAmBD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAElE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAEnE;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,GACzB,IAAI,CAGN"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
let verbose = false;
|
|
2
|
+
function verboseFromEnv() {
|
|
3
|
+
const value = process.env.VOICETHERE_VERBOSE?.trim().toLowerCase();
|
|
4
|
+
return value === "1" || value === "true" || value === "yes";
|
|
5
|
+
}
|
|
6
|
+
/** Call from CLI entry (and tests). `--verbose` OR `VOICETHERE_VERBOSE=1`. */
|
|
7
|
+
export function configureLogging(options = {}) {
|
|
8
|
+
verbose = Boolean(options.verbose) || verboseFromEnv();
|
|
9
|
+
}
|
|
10
|
+
export function isVerbose() {
|
|
11
|
+
return verbose;
|
|
12
|
+
}
|
|
13
|
+
/** Reset between tests. */
|
|
14
|
+
export function resetLoggingForTests() {
|
|
15
|
+
verbose = false;
|
|
16
|
+
delete process.env.VOICETHERE_VERBOSE;
|
|
17
|
+
}
|
|
18
|
+
/** Always-on workflow steps on stderr (safe for scripts — stdout stays machine-readable). */
|
|
19
|
+
export function logStep(message) {
|
|
20
|
+
console.error(`[voicethere] ${message}`);
|
|
21
|
+
}
|
|
22
|
+
/** Alias for path/context lines used at command start. */
|
|
23
|
+
export function logCommandInfo(message) {
|
|
24
|
+
logStep(message);
|
|
25
|
+
}
|
|
26
|
+
/** Extra detail when `--verbose` or `VOICETHERE_VERBOSE=1`. */
|
|
27
|
+
export function logVerbose(message) {
|
|
28
|
+
if (verbose) {
|
|
29
|
+
console.error(`[voicethere:verbose] ${message}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function describeBundleSource(bundle) {
|
|
33
|
+
switch (bundle.source) {
|
|
34
|
+
case "argument":
|
|
35
|
+
return "CLI argument";
|
|
36
|
+
case "config":
|
|
37
|
+
return bundle.configPath
|
|
38
|
+
? `project config (${bundle.configPath})`
|
|
39
|
+
: "project config";
|
|
40
|
+
case "default":
|
|
41
|
+
return "default (dist/agent.js)";
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function describeProjectSource(project) {
|
|
45
|
+
return `project config (${project.configPath})`;
|
|
46
|
+
}
|
|
47
|
+
export function logResolvedBundle(bundle) {
|
|
48
|
+
logStep(`bundle: ${bundle.absolutePath} (${describeBundleSource(bundle)})`);
|
|
49
|
+
}
|
|
50
|
+
export function logResolvedProject(project) {
|
|
51
|
+
logStep(`project: ${project.projectId} (${describeProjectSource(project)})`);
|
|
52
|
+
}
|
|
53
|
+
export function logApiBase(apiBase) {
|
|
54
|
+
logVerbose(`api: ${apiBase}`);
|
|
55
|
+
}
|
|
56
|
+
export function logBuildPromoteContext(buildId, project) {
|
|
57
|
+
logStep(`build: ${buildId}`);
|
|
58
|
+
logResolvedProject(project);
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=command-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-log.js","sourceRoot":"","sources":["../../src/lib/command-log.ts"],"names":[],"mappings":"AAEA,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB,SAAS,cAAc;IACrB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnE,OAAO,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK,CAAC;AAC9D,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,gBAAgB,CAAC,UAAiC,EAAE;IAClE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,cAAc,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,2BAA2B;AAC3B,MAAM,UAAU,oBAAoB;IAClC,OAAO,GAAG,KAAK,CAAC;IAChB,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;AACxC,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,CAAC,KAAK,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,CAAC,OAAO,CAAC,CAAC;AACnB,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA0B;IACtD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,UAAU;YACb,OAAO,cAAc,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,UAAU;gBACtB,CAAC,CAAC,mBAAmB,MAAM,CAAC,UAAU,GAAG;gBACzC,CAAC,CAAC,gBAAgB,CAAC;QACvB,KAAK,SAAS;YACZ,OAAO,yBAAyB,CAAC;IACrC,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,OAA0B;IACvD,OAAO,mBAAmB,OAAO,CAAC,UAAU,GAAG,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAA0B;IAC1D,OAAO,CAAC,WAAW,MAAM,CAAC,YAAY,KAAK,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAA0B;IAC3D,OAAO,CAAC,YAAY,OAAO,CAAC,SAAS,KAAK,qBAAqB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,UAAU,CAAC,QAAQ,OAAO,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,OAA0B;IAE1B,OAAO,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IAC7B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC"}
|