@vigilbase/cli 0.1.2 → 0.1.3
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/CLOUDFLARE.md +112 -0
- package/COMMANDS.md +147 -0
- package/ONE.md +99 -0
- package/README.md +188 -54
- package/SECURITY.md +134 -0
- package/dist/auth/device-auth.d.ts +1 -1
- package/dist/auth/device-auth.d.ts.map +1 -1
- package/dist/auth/device-auth.js +68 -72
- package/dist/auth/device-auth.js.map +1 -1
- package/dist/auth/store.d.ts +4 -6
- package/dist/auth/store.d.ts.map +1 -1
- package/dist/auth/store.js +136 -54
- package/dist/auth/store.js.map +1 -1
- package/dist/auth/types.d.ts +2 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/bin.js +2 -0
- package/dist/bin.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +89 -8
- package/dist/cli.js.map +1 -1
- package/dist/commands/account.d.ts.map +1 -1
- package/dist/commands/account.js +25 -9
- package/dist/commands/account.js.map +1 -1
- package/dist/commands/auth.d.ts +1 -0
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +49 -10
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/billing.d.ts.map +1 -1
- package/dist/commands/billing.js +5 -1
- package/dist/commands/billing.js.map +1 -1
- package/dist/commands/cloudflare.d.ts +1 -0
- package/dist/commands/cloudflare.d.ts.map +1 -1
- package/dist/commands/cloudflare.js +328 -40
- package/dist/commands/cloudflare.js.map +1 -1
- package/dist/commands/helpers.d.ts +35 -0
- package/dist/commands/helpers.d.ts.map +1 -1
- package/dist/commands/helpers.js +12 -0
- package/dist/commands/helpers.js.map +1 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +7 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/legacy-validation.d.ts +21 -0
- package/dist/commands/legacy-validation.d.ts.map +1 -0
- package/dist/commands/legacy-validation.js +20 -0
- package/dist/commands/legacy-validation.js.map +1 -0
- package/dist/commands/one.d.ts +6 -0
- package/dist/commands/one.d.ts.map +1 -0
- package/dist/commands/one.js +200 -0
- package/dist/commands/one.js.map +1 -0
- package/dist/commands/public-tools.d.ts.map +1 -1
- package/dist/commands/public-tools.js +68 -11
- package/dist/commands/public-tools.js.map +1 -1
- package/dist/commands/runs.d.ts.map +1 -1
- package/dist/commands/runs.js +19 -12
- package/dist/commands/runs.js.map +1 -1
- package/dist/commands/security.d.ts +6 -0
- package/dist/commands/security.d.ts.map +1 -0
- package/dist/commands/security.js +391 -0
- package/dist/commands/security.js.map +1 -0
- package/dist/commands/watchdog.d.ts.map +1 -1
- package/dist/commands/watchdog.js +15 -12
- package/dist/commands/watchdog.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/client.d.ts +3 -0
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +35 -62
- package/dist/lib/client.js.map +1 -1
- package/dist/lib/cloudflare-client.d.ts +40 -0
- package/dist/lib/cloudflare-client.d.ts.map +1 -0
- package/dist/lib/cloudflare-client.js +81 -0
- package/dist/lib/cloudflare-client.js.map +1 -0
- package/dist/lib/config.d.ts +2 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +37 -12
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/format.d.ts +2 -0
- package/dist/lib/format.d.ts.map +1 -1
- package/dist/lib/format.js +23 -8
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/help.d.ts +2 -2
- package/dist/lib/help.d.ts.map +1 -1
- package/dist/lib/help.js +45 -12
- package/dist/lib/help.js.map +1 -1
- package/dist/lib/network.d.ts +17 -0
- package/dist/lib/network.d.ts.map +1 -0
- package/dist/lib/network.js +108 -0
- package/dist/lib/network.js.map +1 -0
- package/dist/lib/one-client.d.ts +10 -1
- package/dist/lib/one-client.d.ts.map +1 -1
- package/dist/lib/one-client.js +52 -50
- package/dist/lib/one-client.js.map +1 -1
- package/dist/lib/one-operations.d.ts +11 -0
- package/dist/lib/one-operations.d.ts.map +1 -0
- package/dist/lib/one-operations.js +67 -0
- package/dist/lib/one-operations.js.map +1 -0
- package/dist/lib/open-url.d.ts +2 -0
- package/dist/lib/open-url.d.ts.map +1 -1
- package/dist/lib/open-url.js +23 -22
- package/dist/lib/open-url.js.map +1 -1
- package/dist/lib/progress.d.ts +1 -1
- package/dist/lib/progress.d.ts.map +1 -1
- package/dist/lib/progress.js +3 -1
- package/dist/lib/progress.js.map +1 -1
- package/dist/lib/security-client.d.ts +279 -0
- package/dist/lib/security-client.d.ts.map +1 -0
- package/dist/lib/security-client.js +111 -0
- package/dist/lib/security-client.js.map +1 -0
- package/dist/lib/skill-fetch.d.ts +7 -0
- package/dist/lib/skill-fetch.d.ts.map +1 -0
- package/dist/lib/skill-fetch.js +102 -0
- package/dist/lib/skill-fetch.js.map +1 -0
- package/dist/lib/system-trust.d.ts +8 -0
- package/dist/lib/system-trust.d.ts.map +1 -0
- package/dist/lib/system-trust.js +11 -0
- package/dist/lib/system-trust.js.map +1 -0
- package/package.json +12 -2
|
@@ -1,16 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { limitValue, validateArguments } from './legacy-validation.js';
|
|
1
3
|
import { asArray, asRecord, ok, outputJson, requireOneClient, withSpinner, } from './helpers.js';
|
|
2
|
-
function parseLimit(raw, fallback = 20) {
|
|
3
|
-
if (!raw)
|
|
4
|
-
return fallback;
|
|
5
|
-
const value = Number.parseInt(raw, 10);
|
|
6
|
-
if (!Number.isFinite(value) || value <= 0) {
|
|
7
|
-
throw new Error(`Invalid --limit value: ${raw}`);
|
|
8
|
-
}
|
|
9
|
-
return value;
|
|
10
|
-
}
|
|
11
4
|
export const handleWatchdog = async (ctx) => {
|
|
12
|
-
const one = await requireOneClient(ctx);
|
|
13
5
|
const subcommand = (ctx.rest[0] ?? 'list').toLowerCase();
|
|
6
|
+
let limit, targetId;
|
|
7
|
+
if (subcommand === 'scans' || subcommand === 'scan') {
|
|
8
|
+
validateArguments(ctx, 1, ['target-id', 'limit']);
|
|
9
|
+
limit = limitValue(ctx.values.limit, 20, 100);
|
|
10
|
+
targetId = z.string().uuid().optional().parse(ctx.values['target-id']);
|
|
11
|
+
}
|
|
12
|
+
else if (['list', 'targets', 'status'].includes(subcommand))
|
|
13
|
+
validateArguments(ctx, ctx.rest[0] === undefined ? 0 : 1);
|
|
14
|
+
else
|
|
15
|
+
throw new Error('Usage: vigilbase watchdog [list|scans]');
|
|
16
|
+
const one = await requireOneClient(ctx);
|
|
14
17
|
if (subcommand === 'list' || subcommand === 'targets' || subcommand === 'status') {
|
|
15
18
|
const payload = await withSpinner(ctx, 'Loading watchdog targets', () => one.getWatchdogTargets());
|
|
16
19
|
if (ctx.mode === 'json') {
|
|
@@ -34,8 +37,8 @@ export const handleWatchdog = async (ctx) => {
|
|
|
34
37
|
}
|
|
35
38
|
if (subcommand === 'scans' || subcommand === 'scan') {
|
|
36
39
|
const payload = await withSpinner(ctx, 'Loading watchdog scans', () => one.getWatchdogScans({
|
|
37
|
-
targetId
|
|
38
|
-
limit
|
|
40
|
+
targetId,
|
|
41
|
+
limit,
|
|
39
42
|
}));
|
|
40
43
|
if (ctx.mode === 'json') {
|
|
41
44
|
outputJson(ctx, payload);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watchdog.js","sourceRoot":"","sources":["../../src/commands/watchdog.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,QAAQ,EAER,EAAE,EACF,UAAU,EACV,gBAAgB,EAChB,WAAW,GACZ,MAAM,cAAc,CAAA;AAErB,
|
|
1
|
+
{"version":3,"file":"watchdog.js","sourceRoot":"","sources":["../../src/commands/watchdog.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,4 +6,8 @@ export { isOneAuthRequiredTool, isOneExecutableTool, ONE_AUTH_REQUIRED_TOOLS, ON
|
|
|
6
6
|
export { EXIT } from './types.js';
|
|
7
7
|
export type { AgentToolDefinition, AgentToolExecuteResponse, AgentToolsCatalogResponse, CliOutputMode, ExitCode, } from './types.js';
|
|
8
8
|
export type { CredentialsFile, OneCredentials } from './auth/types.js';
|
|
9
|
+
export { CloudflareClient } from './lib/cloudflare-client.js';
|
|
10
|
+
export type { CloudflareScope, WorkspaceSection } from './lib/cloudflare-client.js';
|
|
11
|
+
export { SecurityClient } from './lib/security-client.js';
|
|
12
|
+
export type { SecurityPayload, SecurityQuery, SecurityRequest } from './lib/security-client.js';
|
|
9
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,kCAAkC,EAClC,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,aAAa,EACb,QAAQ,GACT,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,kCAAkC,EAClC,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,aAAa,EACb,QAAQ,GACT,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -4,4 +4,6 @@ export { createConfig, resolveBaseUrl, resolvePublicBaseUrl, resolveOneBaseUrl,
|
|
|
4
4
|
export { clearOneCredentials, credentialsPath, DeviceAuthError, getOneAccessToken, readCredentials, requestDeviceCode, waitForDeviceAuthorization, writeOneCredentials, } from './auth/index.js';
|
|
5
5
|
export { isOneAuthRequiredTool, isOneExecutableTool, ONE_AUTH_REQUIRED_TOOLS, ONE_AUTH_REQUIRED_TOOL_DEFINITIONS, ONE_EXECUTABLE_TOOLS, VigilbaseOneClient, } from './lib/one-client.js';
|
|
6
6
|
export { EXIT } from './types.js';
|
|
7
|
+
export { CloudflareClient } from './lib/cloudflare-client.js';
|
|
8
|
+
export { SecurityClient } from './lib/security-client.js';
|
|
7
9
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,kCAAkC,EAClC,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,EACL,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,kCAAkC,EAClC,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AASjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA"}
|
package/dist/lib/client.d.ts
CHANGED
|
@@ -4,12 +4,15 @@ export declare class VigilbaseApiError extends Error {
|
|
|
4
4
|
readonly status: number;
|
|
5
5
|
readonly body: unknown;
|
|
6
6
|
readonly retryAfterSec?: number;
|
|
7
|
+
readonly code?: string;
|
|
7
8
|
constructor(message: string, options: {
|
|
8
9
|
status: number;
|
|
9
10
|
body?: unknown;
|
|
10
11
|
retryAfterSec?: number;
|
|
12
|
+
code?: string;
|
|
11
13
|
});
|
|
12
14
|
}
|
|
15
|
+
export declare function retryAfterSeconds(response: Response, body: unknown): number | undefined;
|
|
13
16
|
/**
|
|
14
17
|
* Public (unauthenticated) vigilbase.com tools client.
|
|
15
18
|
* Vigilbase One authenticated calls will use a separate client + device-auth tokens.
|
package/dist/lib/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;gBAGpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE;CASrF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAevF;AAED;;;GAGG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,SAAS;IAE9C,OAAO,KAAK,MAAM,GAEjB;YAEa,OAAO;IAgBf,SAAS,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAuB/C,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,wBAAwB,CAAC;IA0C9B,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3D,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,SAAS,GAAG,SAAS,GAAG,MAAkB,GAAG,MAAM;CAMpF"}
|
package/dist/lib/client.js
CHANGED
|
@@ -1,27 +1,21 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { parseJsonResponse, requestText } from './network.js';
|
|
3
|
+
import { fetchSkillText } from './skill-fetch.js';
|
|
1
4
|
export class VigilbaseApiError extends Error {
|
|
2
5
|
status;
|
|
3
6
|
body;
|
|
4
7
|
retryAfterSec;
|
|
8
|
+
code;
|
|
5
9
|
constructor(message, options) {
|
|
6
10
|
super(message);
|
|
7
11
|
this.name = 'VigilbaseApiError';
|
|
8
12
|
this.status = options.status;
|
|
9
13
|
this.body = options.body;
|
|
10
14
|
this.retryAfterSec = options.retryAfterSec;
|
|
15
|
+
this.code = options.code;
|
|
11
16
|
}
|
|
12
17
|
}
|
|
13
|
-
|
|
14
|
-
const text = await response.text();
|
|
15
|
-
if (!text)
|
|
16
|
-
return null;
|
|
17
|
-
try {
|
|
18
|
-
return JSON.parse(text);
|
|
19
|
-
}
|
|
20
|
-
catch {
|
|
21
|
-
return { raw: text };
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
function retryAfterSeconds(response, body) {
|
|
18
|
+
export function retryAfterSeconds(response, body) {
|
|
25
19
|
const header = response.headers.get('retry-after');
|
|
26
20
|
if (header) {
|
|
27
21
|
const parsed = Number.parseInt(header, 10);
|
|
@@ -50,46 +44,36 @@ export class VigilbaseClient {
|
|
|
50
44
|
}
|
|
51
45
|
async request(path, init) {
|
|
52
46
|
const url = `${this.origin}${path.startsWith('/') ? path : `/${path}`}`;
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
...(init?.headers ?? {}),
|
|
63
|
-
},
|
|
64
|
-
});
|
|
65
|
-
const body = await readJson(response);
|
|
66
|
-
return { response, body };
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
if (error instanceof Error && error.name === 'AbortError') {
|
|
70
|
-
throw new VigilbaseApiError(`Request timed out after ${this.config.timeoutMs}ms: ${url}`, { status: 0 });
|
|
71
|
-
}
|
|
72
|
-
throw error;
|
|
73
|
-
}
|
|
74
|
-
finally {
|
|
75
|
-
clearTimeout(timer);
|
|
76
|
-
}
|
|
47
|
+
const { response, text } = await requestText(this.config, url, {
|
|
48
|
+
...init,
|
|
49
|
+
headers: {
|
|
50
|
+
Accept: 'application/json',
|
|
51
|
+
'User-Agent': this.config.userAgent,
|
|
52
|
+
...(init?.headers ?? {}),
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
return { response, body: parseJsonResponse(response, text) };
|
|
77
56
|
}
|
|
78
57
|
async listTools() {
|
|
79
58
|
const { response, body } = await this.request('/api/agent/tools');
|
|
80
59
|
if (!response.ok) {
|
|
81
|
-
const message =
|
|
82
|
-
typeof body === 'object' &&
|
|
83
|
-
'error' in body &&
|
|
84
|
-
typeof body.error === 'string'
|
|
85
|
-
? body.error
|
|
86
|
-
: `Failed to list tools (HTTP ${response.status})`;
|
|
60
|
+
const message = `Failed to list tools (HTTP ${response.status})`;
|
|
87
61
|
throw new VigilbaseApiError(message, {
|
|
88
62
|
status: response.status,
|
|
89
63
|
body,
|
|
90
64
|
retryAfterSec: retryAfterSeconds(response, body),
|
|
91
65
|
});
|
|
92
66
|
}
|
|
67
|
+
const schema = z.object({
|
|
68
|
+
success: z.literal(true),
|
|
69
|
+
tools: z.array(z.object({
|
|
70
|
+
toolName: z.string(), name: z.string(), description: z.string(),
|
|
71
|
+
targetDescription: z.string(), uiUrl: z.string(), skillUrl: z.string(), executeUrl: z.string(),
|
|
72
|
+
}).passthrough()),
|
|
73
|
+
}).passthrough();
|
|
74
|
+
if (!schema.safeParse(body).success) {
|
|
75
|
+
throw new VigilbaseApiError('Invalid tool catalog response. Check the API URL or retry later.', { status: response.status });
|
|
76
|
+
}
|
|
93
77
|
return body;
|
|
94
78
|
}
|
|
95
79
|
async executeTool(toolName, target) {
|
|
@@ -100,40 +84,29 @@ export class VigilbaseClient {
|
|
|
100
84
|
});
|
|
101
85
|
const parsed = (body ?? {});
|
|
102
86
|
if (response.status === 429) {
|
|
103
|
-
throw new VigilbaseApiError(
|
|
87
|
+
throw new VigilbaseApiError('Rate limit exceeded. Retry after the indicated delay.', {
|
|
104
88
|
status: 429,
|
|
105
89
|
body: parsed,
|
|
106
90
|
retryAfterSec: retryAfterSeconds(response, body),
|
|
107
91
|
});
|
|
108
92
|
}
|
|
109
93
|
if (!response.ok && response.status !== 422) {
|
|
110
|
-
throw new VigilbaseApiError(
|
|
94
|
+
throw new VigilbaseApiError(`Tool execution failed (HTTP ${response.status})`, {
|
|
111
95
|
status: response.status,
|
|
112
96
|
body: parsed,
|
|
113
97
|
retryAfterSec: retryAfterSeconds(response, body),
|
|
114
98
|
});
|
|
115
99
|
}
|
|
100
|
+
if (!z.object({ success: z.boolean() }).passthrough().safeParse(body).success) {
|
|
101
|
+
throw new VigilbaseApiError('Invalid tool execution response. Check the API URL or retry later.', { status: response.status });
|
|
102
|
+
}
|
|
103
|
+
if (!parsed.success) {
|
|
104
|
+
throw new VigilbaseApiError('Tool execution was unsuccessful.', { status: response.status, body, retryAfterSec: retryAfterSeconds(response, body) });
|
|
105
|
+
}
|
|
116
106
|
return parsed;
|
|
117
107
|
}
|
|
118
108
|
async fetchSkillMarkdown(skillUrl) {
|
|
119
|
-
|
|
120
|
-
const timer = setTimeout(() => controller.abort(), this.config.timeoutMs);
|
|
121
|
-
try {
|
|
122
|
-
const response = await fetch(skillUrl, {
|
|
123
|
-
signal: controller.signal,
|
|
124
|
-
headers: {
|
|
125
|
-
Accept: 'text/markdown, text/plain, */*',
|
|
126
|
-
'User-Agent': this.config.userAgent,
|
|
127
|
-
},
|
|
128
|
-
});
|
|
129
|
-
if (!response.ok) {
|
|
130
|
-
throw new VigilbaseApiError(`Failed to fetch skill (HTTP ${response.status})`, { status: response.status });
|
|
131
|
-
}
|
|
132
|
-
return await response.text();
|
|
133
|
-
}
|
|
134
|
-
finally {
|
|
135
|
-
clearTimeout(timer);
|
|
136
|
-
}
|
|
109
|
+
return fetchSkillText(this.config, skillUrl);
|
|
137
110
|
}
|
|
138
111
|
badgeUrl(domain, style = 'default') {
|
|
139
112
|
const params = new URLSearchParams();
|
package/dist/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { VigilbaseOneClient } from './one-client.js';
|
|
3
|
+
export declare const cloudflareScopeSchema: z.ZodObject<{
|
|
4
|
+
customerId: z.ZodOptional<z.ZodString>;
|
|
5
|
+
accountId: z.ZodOptional<z.ZodString>;
|
|
6
|
+
zoneId: z.ZodOptional<z.ZodString>;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
export type CloudflareScope = z.infer<typeof cloudflareScopeSchema>;
|
|
9
|
+
export declare const workspaceSectionSchema: z.ZodEnum<{
|
|
10
|
+
overview: "overview";
|
|
11
|
+
reports: "reports";
|
|
12
|
+
zones: "zones";
|
|
13
|
+
"rule-analyzer": "rule-analyzer";
|
|
14
|
+
accounts: "accounts";
|
|
15
|
+
checkups: "checkups";
|
|
16
|
+
settings: "settings";
|
|
17
|
+
}>;
|
|
18
|
+
export type WorkspaceSection = z.infer<typeof workspaceSectionSchema>;
|
|
19
|
+
export declare const accountResourceSchema: z.ZodEnum<{
|
|
20
|
+
"audit-logs": "audit-logs";
|
|
21
|
+
"zero-trust": "zero-trust";
|
|
22
|
+
"developer-platform": "developer-platform";
|
|
23
|
+
"magic-transit": "magic-transit";
|
|
24
|
+
}>;
|
|
25
|
+
export type AccountResource = z.infer<typeof accountResourceSchema>;
|
|
26
|
+
/** All requests use One's tenant and permission checks, never provider credentials. */
|
|
27
|
+
export declare class CloudflareClient {
|
|
28
|
+
private readonly one;
|
|
29
|
+
constructor(one: VigilbaseOneClient);
|
|
30
|
+
workspace(scope: CloudflareScope, section?: WorkspaceSection): Promise<Record<string, unknown>>;
|
|
31
|
+
zoneRecords(kind: 'dns' | 'waf', zoneId: string, customerId?: string): Promise<Record<string, unknown>>;
|
|
32
|
+
accountResource(resource: AccountResource, accountId: string, customerId?: string): Promise<Record<string, unknown>>;
|
|
33
|
+
zoneDetail(customerId: string, zoneId: string): Promise<Record<string, unknown>>;
|
|
34
|
+
speedSettings(zoneId: string, customerId?: string): Promise<Record<string, unknown>>;
|
|
35
|
+
analytics(scope: CloudflareScope, days: number): Promise<Record<string, unknown>>;
|
|
36
|
+
checkup(scope: CloudflareScope, isStart?: boolean): Promise<Record<string, unknown>>;
|
|
37
|
+
checkupProgress(toolRunId: string): Promise<Record<string, unknown>>;
|
|
38
|
+
private path;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=cloudflare-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-client.d.ts","sourceRoot":"","sources":["../../src/lib/cloudflare-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEzD,eAAO,MAAM,qBAAqB;;;;iBAIhC,CAAA;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE,eAAO,MAAM,sBAAsB;;;;;;;;EAEjC,CAAA;AACF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AACrE,eAAO,MAAM,qBAAqB;;;;;EAA8E,CAAA;AAChH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE,uFAAuF;AACvF,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,kBAAkB;IAEpD,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAQ/F,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMvG,eAAe,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMpH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIhF,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAMpF,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAQjF,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAclF,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIpE,OAAO,CAAC,IAAI;CAIb"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const cloudflareScopeSchema = z.object({
|
|
3
|
+
customerId: z.string().uuid('Customer ID must be a UUID.').optional(),
|
|
4
|
+
accountId: z.string().regex(/^[a-f0-9]{32}$/i, 'Cloudflare account ID must contain 32 hexadecimal characters.').optional(),
|
|
5
|
+
zoneId: z.string().regex(/^[a-f0-9]{32}$/i, 'Cloudflare zone ID must contain 32 hexadecimal characters.').optional(),
|
|
6
|
+
});
|
|
7
|
+
export const workspaceSectionSchema = z.enum([
|
|
8
|
+
'overview', 'reports', 'zones', 'rule-analyzer', 'accounts', 'checkups', 'settings',
|
|
9
|
+
]);
|
|
10
|
+
export const accountResourceSchema = z.enum(['audit-logs', 'zero-trust', 'developer-platform', 'magic-transit']);
|
|
11
|
+
/** All requests use One's tenant and permission checks, never provider credentials. */
|
|
12
|
+
export class CloudflareClient {
|
|
13
|
+
one;
|
|
14
|
+
constructor(one) {
|
|
15
|
+
this.one = one;
|
|
16
|
+
}
|
|
17
|
+
workspace(scope, section) {
|
|
18
|
+
const params = new URLSearchParams();
|
|
19
|
+
if (scope.customerId)
|
|
20
|
+
params.set('customerId', scope.customerId);
|
|
21
|
+
if (scope.accountId)
|
|
22
|
+
params.set('account', scope.accountId);
|
|
23
|
+
if (scope.zoneId)
|
|
24
|
+
params.set('zone', scope.zoneId);
|
|
25
|
+
return this.one.requestJson(this.path(`/api/services/cloudflare/workspace${section ? `/${section}` : ''}`, params));
|
|
26
|
+
}
|
|
27
|
+
zoneRecords(kind, zoneId, customerId) {
|
|
28
|
+
const params = new URLSearchParams();
|
|
29
|
+
if (customerId)
|
|
30
|
+
params.set('customerId', customerId);
|
|
31
|
+
return this.one.requestJson(this.path(`/api/services/cloudflare/zones/${encodeURIComponent(zoneId)}/${kind}`, params));
|
|
32
|
+
}
|
|
33
|
+
accountResource(resource, accountId, customerId) {
|
|
34
|
+
const params = new URLSearchParams();
|
|
35
|
+
if (customerId)
|
|
36
|
+
params.set('customerId', customerId);
|
|
37
|
+
return this.one.requestJson(this.path(`/api/cloudflare/accounts/${encodeURIComponent(accountId)}/${resource}`, params));
|
|
38
|
+
}
|
|
39
|
+
zoneDetail(customerId, zoneId) {
|
|
40
|
+
return this.one.requestJson(`/api/customers/${encodeURIComponent(customerId)}/cloudflare/zones/${encodeURIComponent(zoneId)}`);
|
|
41
|
+
}
|
|
42
|
+
speedSettings(zoneId, customerId) {
|
|
43
|
+
const params = new URLSearchParams();
|
|
44
|
+
if (customerId)
|
|
45
|
+
params.set('customerId', customerId);
|
|
46
|
+
return this.one.requestJson(this.path(`/api/cloudflare/zones/${encodeURIComponent(zoneId)}/speed-settings`, params));
|
|
47
|
+
}
|
|
48
|
+
analytics(scope, days) {
|
|
49
|
+
const params = new URLSearchParams({ days: String(days) });
|
|
50
|
+
if (scope.customerId)
|
|
51
|
+
params.set('customerId', scope.customerId);
|
|
52
|
+
if (scope.accountId)
|
|
53
|
+
params.set('accountId', scope.accountId);
|
|
54
|
+
if (scope.zoneId)
|
|
55
|
+
params.set('zoneId', scope.zoneId);
|
|
56
|
+
return this.one.requestJson(this.path('/api/services/cloudflare/analytics', params));
|
|
57
|
+
}
|
|
58
|
+
checkup(scope, isStart = false) {
|
|
59
|
+
if (isStart) {
|
|
60
|
+
return this.one.requestJson('/api/services/cloudflare/checkups/start', {
|
|
61
|
+
method: 'POST',
|
|
62
|
+
headers: { 'Content-Type': 'application/json' },
|
|
63
|
+
body: JSON.stringify({ customerId: scope.customerId, accountId: scope.accountId }),
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
const params = new URLSearchParams();
|
|
67
|
+
if (scope.customerId)
|
|
68
|
+
params.set('customerId', scope.customerId);
|
|
69
|
+
if (scope.accountId)
|
|
70
|
+
params.set('accountId', scope.accountId);
|
|
71
|
+
return this.one.requestJson(this.path('/api/services/cloudflare/checkups', params));
|
|
72
|
+
}
|
|
73
|
+
checkupProgress(toolRunId) {
|
|
74
|
+
return this.one.requestJson(this.path('/api/services/cloudflare/checkups/progress', new URLSearchParams({ toolRunId })));
|
|
75
|
+
}
|
|
76
|
+
path(path, params) {
|
|
77
|
+
const query = params.toString();
|
|
78
|
+
return `${path}${query ? `?${query}` : ''}`;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=cloudflare-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloudflare-client.js","sourceRoot":"","sources":["../../src/lib/cloudflare-client.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export type CliConfigLegacy = CliConfig & {
|
|
|
16
16
|
};
|
|
17
17
|
export declare function resolvePublicBaseUrl(explicit?: string | null): string;
|
|
18
18
|
export declare function resolveOneBaseUrl(explicit?: string | null): string;
|
|
19
|
+
/** Validate at transport boundaries too: library callers may construct config objects. */
|
|
20
|
+
export declare function validateOneOrigin(raw: string): string;
|
|
19
21
|
export declare function resolveClientId(explicit?: string | null): string;
|
|
20
22
|
export declare function resolveConfigDir(explicit?: string | null): string;
|
|
21
23
|
export declare function createConfig(options?: {
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,SAAS,GAAG;IACtB,0DAA0D;IAC1D,aAAa,EAAE,MAAM,CAAA;IACrB,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAA;IAClB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAA;IAChB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,oEAAoE;AACpE,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAqB7D,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAQrE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMlE;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED,wBAAgB,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAMhE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CASjE;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,eAAe,CAkBlB;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAE/D"}
|
package/dist/lib/config.js
CHANGED
|
@@ -1,26 +1,46 @@
|
|
|
1
1
|
import { homedir } from 'node:os';
|
|
2
|
-
import { join } from 'node:path';
|
|
2
|
+
import { isAbsolute, join } from 'node:path';
|
|
3
|
+
import { z } from 'zod';
|
|
3
4
|
import { CLI_VERSION } from '../version.js';
|
|
4
5
|
const DEFAULT_PUBLIC_BASE_URL = 'https://vigilbase.com';
|
|
5
6
|
const DEFAULT_ONE_BASE_URL = 'https://one.vigilbase.com';
|
|
6
|
-
/**
|
|
7
|
+
/** Public client id accepted by One's device authorization plugin. */
|
|
7
8
|
const DEFAULT_CLIENT_ID = 'vigilbase-cli';
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
const originSchema = z.string().url().transform((raw) => new URL(raw)).refine((url) => (url.protocol === 'https:' || url.protocol === 'http:') &&
|
|
10
|
+
!url.username && !url.password &&
|
|
11
|
+
/^\/+$/.test(url.pathname) && !url.search && !url.hash, 'Expected an HTTP(S) origin without credentials, a path, query, or fragment.').transform((url) => url.origin);
|
|
12
|
+
function parseOrigin(raw, option) {
|
|
13
|
+
const result = originSchema.safeParse(raw);
|
|
14
|
+
if (!result.success) {
|
|
15
|
+
// Do not echo the input: malformed URLs can contain credentials.
|
|
16
|
+
throw new Error(`${option} must be an HTTP(S) origin without credentials, a path, query, or fragment.`);
|
|
17
|
+
}
|
|
18
|
+
return result.data;
|
|
10
19
|
}
|
|
20
|
+
const timeoutSchema = z.number().int().min(1).max(2_147_483_647);
|
|
11
21
|
export function resolvePublicBaseUrl(explicit) {
|
|
12
22
|
const raw = explicit?.trim() ||
|
|
13
23
|
process.env.VIGILBASE_BASE_URL?.trim() ||
|
|
14
24
|
process.env.VIGILBASE_API_URL?.trim() ||
|
|
15
25
|
process.env.VIGILBASE_PUBLIC_URL?.trim() ||
|
|
16
26
|
DEFAULT_PUBLIC_BASE_URL;
|
|
17
|
-
return
|
|
27
|
+
return parseOrigin(raw, '--base-url / VIGILBASE_BASE_URL');
|
|
18
28
|
}
|
|
19
29
|
export function resolveOneBaseUrl(explicit) {
|
|
20
30
|
const raw = explicit?.trim() ||
|
|
21
31
|
process.env.VIGILBASE_ONE_URL?.trim() ||
|
|
22
32
|
DEFAULT_ONE_BASE_URL;
|
|
23
|
-
return
|
|
33
|
+
return validateOneOrigin(raw);
|
|
34
|
+
}
|
|
35
|
+
/** Validate at transport boundaries too: library callers may construct config objects. */
|
|
36
|
+
export function validateOneOrigin(raw) {
|
|
37
|
+
const origin = parseOrigin(raw, '--one-url / VIGILBASE_ONE_URL');
|
|
38
|
+
const url = new URL(origin);
|
|
39
|
+
const loopback = url.hostname === 'localhost' || url.hostname === '[::1]' || /^127\.(?:\d{1,3}\.){2}\d{1,3}$/.test(url.hostname);
|
|
40
|
+
if (url.protocol !== 'https:' && !loopback) {
|
|
41
|
+
throw new Error('--one-url / VIGILBASE_ONE_URL requires HTTPS; HTTP is allowed only for loopback development.');
|
|
42
|
+
}
|
|
43
|
+
return origin;
|
|
24
44
|
}
|
|
25
45
|
export function resolveClientId(explicit) {
|
|
26
46
|
return (explicit?.trim() ||
|
|
@@ -28,18 +48,23 @@ export function resolveClientId(explicit) {
|
|
|
28
48
|
DEFAULT_CLIENT_ID);
|
|
29
49
|
}
|
|
30
50
|
export function resolveConfigDir(explicit) {
|
|
31
|
-
|
|
32
|
-
return explicit.trim();
|
|
33
|
-
if (process.env.VIGILBASE_CONFIG_DIR?.trim()) {
|
|
34
|
-
return process.env.VIGILBASE_CONFIG_DIR.trim();
|
|
35
|
-
}
|
|
51
|
+
const custom = explicit?.trim() || process.env.VIGILBASE_CONFIG_DIR?.trim();
|
|
36
52
|
const xdg = process.env.XDG_CONFIG_HOME?.trim();
|
|
53
|
+
if ((custom && !isAbsolute(custom)) || (xdg && !isAbsolute(xdg))) {
|
|
54
|
+
throw new Error('Custom config directories and XDG_CONFIG_HOME must be absolute paths.');
|
|
55
|
+
}
|
|
56
|
+
if (custom)
|
|
57
|
+
return custom;
|
|
37
58
|
if (xdg)
|
|
38
59
|
return join(xdg, 'vigilbase');
|
|
39
60
|
return join(homedir(), '.config', 'vigilbase');
|
|
40
61
|
}
|
|
41
62
|
export function createConfig(options) {
|
|
42
63
|
const publicBaseUrl = resolvePublicBaseUrl(options?.publicBaseUrl ?? options?.baseUrl);
|
|
64
|
+
const timeoutMs = options?.timeoutMs ?? 60_000;
|
|
65
|
+
if (!timeoutSchema.safeParse(timeoutMs).success) {
|
|
66
|
+
throw new Error('Request timeout must be an integer between 1 and 2147483647 milliseconds.');
|
|
67
|
+
}
|
|
43
68
|
return {
|
|
44
69
|
publicBaseUrl,
|
|
45
70
|
/** Alias used by the current public tools client. */
|
|
@@ -48,7 +73,7 @@ export function createConfig(options) {
|
|
|
48
73
|
clientId: resolveClientId(options?.clientId),
|
|
49
74
|
configDir: resolveConfigDir(options?.configDir),
|
|
50
75
|
userAgent: `@vigilbase/cli/${CLI_VERSION} (+https://vigilbase.com; node/${process.version})`,
|
|
51
|
-
timeoutMs
|
|
76
|
+
timeoutMs,
|
|
52
77
|
};
|
|
53
78
|
}
|
|
54
79
|
/** Back-compat helper used by older call sites / tests. */
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/format.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export type Writer = {
|
|
|
3
3
|
stdout: (line?: string) => void;
|
|
4
4
|
stderr: (line?: string) => void;
|
|
5
5
|
};
|
|
6
|
+
/** Untrusted API data must never become terminal control sequences or bidi overrides. */
|
|
7
|
+
export declare function sanitizeTerminal(value: string): string;
|
|
6
8
|
export declare function createWriter(stdout?: NodeJS.WritableStream, stderr?: NodeJS.WritableStream): Writer;
|
|
7
9
|
export declare function printJson(writer: Writer, value: unknown): void;
|
|
8
10
|
export declare function formatToolsList(catalog: AgentToolsCatalogResponse, mode: CliOutputMode, writer: Writer, options?: {
|
package/dist/lib/format.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,aAAa,EACd,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,MAAM,GAAG;IACnB,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC,CAAA;AAED,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,YAAY,CAC1B,MAAM,GAAE,MAAM,CAAC,cAA+B,EAC9C,MAAM,GAAE,MAAM,CAAC,cAA+B,GAC7C,MAAM,CAWR;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAI9D;AA2ND,wBAAgB,eAAe,CAC7B,OAAO,EAAE,yBAAyB,EAClC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IACR,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,wCAAwC;IACxC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,GACA,IAAI,CAgBN;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,mBAAmB,EACzB,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,GACrB,IAAI,CAkBN;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,GACb,IAAI,CA2BN;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,MAAM,GACb,IAAI,CA4CN"}
|