@copado/agentia-cli 0.43.0-alpha.0 → 0.46.0-alpha.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 +506 -113
- package/dist/commands/ai/agent/ask.d.ts +28 -0
- package/dist/commands/ai/agent/ask.js +131 -0
- package/dist/commands/ai/agent/ask.js.map +1 -0
- package/dist/commands/ai/agent/chat.d.ts +29 -0
- package/dist/commands/ai/agent/chat.js +97 -0
- package/dist/commands/ai/agent/chat.js.map +1 -0
- package/dist/commands/ai/quota/get.d.ts +14 -0
- package/dist/commands/ai/quota/get.js +23 -0
- package/dist/commands/ai/quota/get.js.map +1 -0
- package/dist/commands/ai/workspace/create.d.ts +17 -0
- package/dist/commands/ai/workspace/create.js +41 -0
- package/dist/commands/ai/workspace/create.js.map +1 -0
- package/dist/commands/ai/workspace/get.d.ts +17 -0
- package/dist/commands/ai/workspace/get.js +37 -0
- package/dist/commands/ai/workspace/get.js.map +1 -0
- package/dist/commands/ai/workspace/list.d.ts +16 -0
- package/dist/commands/ai/workspace/list.js +28 -0
- package/dist/commands/ai/workspace/list.js.map +1 -0
- package/dist/commands/ai/workspace/member/invite.d.ts +19 -0
- package/dist/commands/ai/workspace/member/invite.js +45 -0
- package/dist/commands/ai/workspace/member/invite.js.map +1 -0
- package/dist/commands/ai/workspace/member/list.d.ts +20 -0
- package/dist/commands/ai/workspace/member/list.js +36 -0
- package/dist/commands/ai/workspace/member/list.js.map +1 -0
- package/dist/commands/ai/workspace/update.d.ts +22 -0
- package/dist/commands/ai/workspace/update.js +62 -0
- package/dist/commands/ai/workspace/update.js.map +1 -0
- package/dist/commands/auth/get.d.ts +3 -0
- package/dist/commands/auth/get.js +46 -1
- package/dist/commands/auth/get.js.map +1 -1
- package/dist/commands/auth/set.d.ts +5 -0
- package/dist/commands/auth/set.js +39 -0
- package/dist/commands/auth/set.js.map +1 -1
- package/dist/commands/auth/unset.d.ts +1 -0
- package/dist/commands/auth/unset.js +4 -0
- package/dist/commands/auth/unset.js.map +1 -1
- package/dist/lib/ai-chat-session.d.ts +17 -0
- package/dist/lib/ai-chat-session.js +149 -0
- package/dist/lib/ai-chat-session.js.map +1 -0
- package/dist/lib/ai-config.d.ts +26 -0
- package/dist/lib/ai-config.js +113 -0
- package/dist/lib/ai-config.js.map +1 -0
- package/dist/lib/ai-flags.d.ts +16 -0
- package/dist/lib/ai-flags.js +28 -0
- package/dist/lib/ai-flags.js.map +1 -0
- package/dist/lib/ai-gateway.d.ts +52 -0
- package/dist/lib/ai-gateway.js +324 -0
- package/dist/lib/ai-gateway.js.map +1 -0
- package/dist/lib/ai-operations.d.ts +26 -0
- package/dist/lib/ai-operations.js +177 -0
- package/dist/lib/ai-operations.js.map +1 -0
- package/dist/lib/ai-stream-parser.d.ts +12 -0
- package/dist/lib/ai-stream-parser.js +59 -0
- package/dist/lib/ai-stream-parser.js.map +1 -0
- package/dist/lib/ai-terminal-renderer.d.ts +17 -0
- package/dist/lib/ai-terminal-renderer.js +83 -0
- package/dist/lib/ai-terminal-renderer.js.map +1 -0
- package/dist/lib/ai-types.d.ts +127 -0
- package/dist/lib/ai-types.js +133 -0
- package/dist/lib/ai-types.js.map +1 -0
- package/dist/lib/auth-config.d.ts +21 -0
- package/dist/lib/auth-config.js +158 -6
- package/dist/lib/auth-config.js.map +1 -1
- package/dist/lib/credential-store.d.ts +13 -1
- package/dist/lib/credential-store.js +47 -2
- package/dist/lib/credential-store.js.map +1 -1
- package/dist/lib/mcp/ai-tools.d.ts +22 -0
- package/dist/lib/mcp/ai-tools.js +45 -0
- package/dist/lib/mcp/ai-tools.js.map +1 -0
- package/dist/lib/mcp/tools.d.ts +16 -2
- package/dist/lib/mcp/tools.js +3 -0
- package/dist/lib/mcp/tools.js.map +1 -1
- package/oclif.manifest.json +1302 -335
- package/package.json +16 -1
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { getAiDomain, getAiGatewayUrl, getAiOrgId, getAiWorkspaceId, getCredential, } from './credential-store.js';
|
|
2
|
+
import { loadEnvFile } from './env-file.js';
|
|
3
|
+
export const AI_DEFAULT_WORKSPACE_NAME = 'agentia-cli';
|
|
4
|
+
export const AI_DEFAULT_TIMEOUT_MS = 120_000;
|
|
5
|
+
export const AI_GATEWAY_HOST_PREFIX = 'copadogpt-api.';
|
|
6
|
+
const AI_HOSTNAME_PATTERN = /^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)(?:\.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?))+$/u;
|
|
7
|
+
function envValue(...keys) {
|
|
8
|
+
for (const key of keys) {
|
|
9
|
+
const value = process.env[key]?.trim();
|
|
10
|
+
if (value !== undefined && value.length > 0)
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
function hasText(value) {
|
|
16
|
+
return value !== null && value !== undefined && value.trim().length > 0;
|
|
17
|
+
}
|
|
18
|
+
export function normalizeAiGatewayUrl(value) {
|
|
19
|
+
let url;
|
|
20
|
+
try {
|
|
21
|
+
url = new URL(value);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
throw new Error('AI gateway URL must be a valid absolute HTTP or HTTPS URL.');
|
|
25
|
+
}
|
|
26
|
+
if (url.protocol !== 'https:' && url.protocol !== 'http:') {
|
|
27
|
+
throw new Error('AI gateway URL must use HTTP or HTTPS.');
|
|
28
|
+
}
|
|
29
|
+
return url.toString().replace(/\/+$/u, '');
|
|
30
|
+
}
|
|
31
|
+
export function normalizeAiDomain(value) {
|
|
32
|
+
const trimmed = value.trim().replace(/^https?:\/\//iu, '').replace(/\/+$/u, '').toLowerCase();
|
|
33
|
+
if (trimmed.length === 0) {
|
|
34
|
+
throw new Error('AI domain cannot be empty.');
|
|
35
|
+
}
|
|
36
|
+
if (trimmed.includes('/') || trimmed.includes(':') || trimmed.includes('@')) {
|
|
37
|
+
throw new Error('AI domain must be a hostname without a path, port, or userinfo.');
|
|
38
|
+
}
|
|
39
|
+
if (!AI_HOSTNAME_PATTERN.test(trimmed)) {
|
|
40
|
+
throw new Error('AI domain must be a valid hostname.');
|
|
41
|
+
}
|
|
42
|
+
return trimmed;
|
|
43
|
+
}
|
|
44
|
+
export function normalizeAiOrgId(value) {
|
|
45
|
+
const raw = typeof value === 'number' ? value.toString() : value.trim();
|
|
46
|
+
if (!/^\d+$/u.test(raw)) {
|
|
47
|
+
throw new Error('AI organization ID must be a positive integer.');
|
|
48
|
+
}
|
|
49
|
+
const parsed = Number.parseInt(raw, 10);
|
|
50
|
+
if (!Number.isSafeInteger(parsed) || parsed <= 0) {
|
|
51
|
+
throw new Error('AI organization ID must be a positive integer.');
|
|
52
|
+
}
|
|
53
|
+
return parsed;
|
|
54
|
+
}
|
|
55
|
+
export function normalizeAiUuid(value, label) {
|
|
56
|
+
const trimmed = value.trim();
|
|
57
|
+
if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu.test(trimmed)) {
|
|
58
|
+
throw new Error(`${label} must be a valid UUID.`);
|
|
59
|
+
}
|
|
60
|
+
return trimmed;
|
|
61
|
+
}
|
|
62
|
+
export function normalizeAiWorkspaceId(value) {
|
|
63
|
+
return normalizeAiUuid(value, 'AI workspace ID');
|
|
64
|
+
}
|
|
65
|
+
export function normalizeAiDialogueId(value) {
|
|
66
|
+
return normalizeAiUuid(value, 'AI dialogue ID');
|
|
67
|
+
}
|
|
68
|
+
export function aiBaseUrl(domain, orgId) {
|
|
69
|
+
return `https://${AI_GATEWAY_HOST_PREFIX}${domain}/organizations/${orgId}`;
|
|
70
|
+
}
|
|
71
|
+
function resolveAiBaseUrl(input) {
|
|
72
|
+
if (hasText(input.gatewayUrl)) {
|
|
73
|
+
const gatewayUrl = normalizeAiGatewayUrl(input.gatewayUrl);
|
|
74
|
+
return {
|
|
75
|
+
baseUrl: gatewayUrl,
|
|
76
|
+
gatewayUrl,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
if (!hasText(input.domain)) {
|
|
80
|
+
throw new Error('AI domain is not configured. Run `agentia auth set --ai-domain <domain>` or set AGENTIA_AI_DOMAIN.');
|
|
81
|
+
}
|
|
82
|
+
if (input.org === null || input.org === undefined || input.org.toString().trim().length === 0) {
|
|
83
|
+
throw new Error('AI organization ID is not configured. Run `agentia auth set --ai-org <org-id>` or set AGENTIA_AI_ORG.');
|
|
84
|
+
}
|
|
85
|
+
const domain = normalizeAiDomain(input.domain);
|
|
86
|
+
const orgId = normalizeAiOrgId(input.org);
|
|
87
|
+
return {
|
|
88
|
+
baseUrl: aiBaseUrl(domain, orgId),
|
|
89
|
+
domain,
|
|
90
|
+
orgId,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function normalizeOptionalAiWorkspace(value) {
|
|
94
|
+
return hasText(value) ? normalizeAiWorkspaceId(value) : undefined;
|
|
95
|
+
}
|
|
96
|
+
export function resolveAiCredentials(overrides = {}) {
|
|
97
|
+
loadEnvFile();
|
|
98
|
+
const pat = overrides.pat ?? envValue('AGENTIA_AI_PAT', 'COPADO_AI_PAT') ?? getCredential('ai');
|
|
99
|
+
const gatewayUrl = overrides.gatewayUrl ?? envValue('AGENTIA_AI_GATEWAY_URL', 'COPADO_AI_GATEWAY_URL') ?? getAiGatewayUrl();
|
|
100
|
+
const domain = overrides.domain ?? envValue('AGENTIA_AI_DOMAIN', 'COPADO_AI_DOMAIN') ?? getAiDomain();
|
|
101
|
+
const org = overrides.org ?? envValue('AGENTIA_AI_ORG', 'COPADO_AI_ORG') ?? getAiOrgId();
|
|
102
|
+
const workspace = overrides.workspace ?? envValue('AGENTIA_AI_WORKSPACE', 'COPADO_AI_WORKSPACE') ?? getAiWorkspaceId();
|
|
103
|
+
if (!hasText(pat)) {
|
|
104
|
+
throw new Error('AI PAT token is not configured. Run `agentia auth set --ai <pat> --ai-domain <domain> --ai-org <org-id>` or set AGENTIA_AI_PAT.');
|
|
105
|
+
}
|
|
106
|
+
const resolvedBaseUrl = resolveAiBaseUrl({ domain, gatewayUrl, org });
|
|
107
|
+
return {
|
|
108
|
+
...resolvedBaseUrl,
|
|
109
|
+
pat,
|
|
110
|
+
workspaceId: normalizeOptionalAiWorkspace(workspace),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=ai-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-config.js","sourceRoot":"","sources":["../../src/lib/ai-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type AiGatewayCallOptions } from './ai-gateway.js';
|
|
2
|
+
export declare const aiConnectionFlags: {
|
|
3
|
+
domain: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
4
|
+
'gateway-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
5
|
+
org: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
6
|
+
pat: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
7
|
+
timeout: import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
8
|
+
};
|
|
9
|
+
export type AiConnectionFlagValues = {
|
|
10
|
+
domain?: string;
|
|
11
|
+
'gateway-url'?: string;
|
|
12
|
+
org?: number;
|
|
13
|
+
pat?: string;
|
|
14
|
+
timeout?: number;
|
|
15
|
+
};
|
|
16
|
+
export declare function aiGatewayCallOptions(flags: AiConnectionFlagValues): AiGatewayCallOptions;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
export const aiConnectionFlags = {
|
|
3
|
+
domain: Flags.string({
|
|
4
|
+
description: 'Copado AI domain hostname. Defaults to AGENTIA_AI_DOMAIN, COPADO_AI_DOMAIN, or stored auth config.',
|
|
5
|
+
}),
|
|
6
|
+
'gateway-url': Flags.string({
|
|
7
|
+
description: 'Full Copado AI gateway base URL. Defaults to AGENTIA_AI_GATEWAY_URL, COPADO_AI_GATEWAY_URL, or stored auth config.',
|
|
8
|
+
}),
|
|
9
|
+
org: Flags.integer({
|
|
10
|
+
description: 'Copado AI organization ID. Defaults to AGENTIA_AI_ORG, COPADO_AI_ORG, or stored auth config.',
|
|
11
|
+
}),
|
|
12
|
+
pat: Flags.string({
|
|
13
|
+
description: 'Copado AI PAT token override. Prefer auth set --ai or AGENTIA_AI_PAT for regular use.',
|
|
14
|
+
}),
|
|
15
|
+
timeout: Flags.integer({
|
|
16
|
+
description: 'AI gateway timeout in seconds.',
|
|
17
|
+
}),
|
|
18
|
+
};
|
|
19
|
+
export function aiGatewayCallOptions(flags) {
|
|
20
|
+
return {
|
|
21
|
+
domain: flags.domain,
|
|
22
|
+
gatewayUrl: flags['gateway-url'],
|
|
23
|
+
org: flags.org,
|
|
24
|
+
pat: flags.pat,
|
|
25
|
+
timeoutMs: flags.timeout === undefined ? undefined : flags.timeout * 1000,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=ai-flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-flags.js","sourceRoot":"","sources":["../../src/lib/ai-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AAIjC,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;QACnB,WAAW,EAAE,oGAAoG;KAClH,CAAC;IACF,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;QAC1B,WAAW,EAAE,oHAAoH;KAClI,CAAC;IACF,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC;QACjB,WAAW,EAAE,8FAA8F;KAC5G,CAAC;IACF,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC;QAChB,WAAW,EAAE,uFAAuF;KACrG,CAAC;IACF,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;QACrB,WAAW,EAAE,gCAAgC;KAC9C,CAAC;CACH,CAAA;AAUD,MAAM,UAAU,oBAAoB,CAAC,KAA6B;IAChE,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,UAAU,EAAE,KAAK,CAAC,aAAa,CAAC;QAChC,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,SAAS,EAAE,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI;KAC1E,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { URL } from 'node:url';
|
|
2
|
+
import { type AiConnectionOverrides } from './ai-config.js';
|
|
3
|
+
import { type AiDialogue, type AiMessageCreate, type AiOrganizationQuota, type AiStreamChunk, type AiWorkspace, type AiWorkspaceCreate, type AiWorkspaceMember, type AiWorkspaceMemberCreate, type AiWorkspaceSummary, type AiWorkspaceUpdate } from './ai-types.js';
|
|
4
|
+
export type AiRequest = {
|
|
5
|
+
body?: unknown;
|
|
6
|
+
endpoint: string;
|
|
7
|
+
method: 'GET' | 'PATCH' | 'POST';
|
|
8
|
+
responseType?: 'json' | 'ndjson';
|
|
9
|
+
};
|
|
10
|
+
export type AiGatewayCallOptions = AiConnectionOverrides & {
|
|
11
|
+
timeoutMs?: number;
|
|
12
|
+
};
|
|
13
|
+
export type AiHttpRequestOptions = {
|
|
14
|
+
body: unknown;
|
|
15
|
+
headers: Record<string, string>;
|
|
16
|
+
method: string;
|
|
17
|
+
onData?: (chunk: Buffer) => void;
|
|
18
|
+
timeoutMs: number;
|
|
19
|
+
url: URL;
|
|
20
|
+
};
|
|
21
|
+
export type AiHttpRequestFn = (options: AiHttpRequestOptions) => Promise<string>;
|
|
22
|
+
export declare class AiGatewayError extends Error {
|
|
23
|
+
readonly requestMethod?: string;
|
|
24
|
+
readonly requestUrl?: string;
|
|
25
|
+
readonly retryAfterSeconds?: number;
|
|
26
|
+
readonly statusCode?: number;
|
|
27
|
+
constructor(message: string, options?: {
|
|
28
|
+
request?: {
|
|
29
|
+
method?: string;
|
|
30
|
+
url?: string;
|
|
31
|
+
};
|
|
32
|
+
retryAfterSeconds?: number;
|
|
33
|
+
statusCode?: number;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
export declare class AiGateway {
|
|
37
|
+
static createDialogue(input: {
|
|
38
|
+
assistantId: AiDialogue['assistantId'];
|
|
39
|
+
name: string;
|
|
40
|
+
workspaceId?: string;
|
|
41
|
+
}, options?: AiGatewayCallOptions): Promise<AiDialogue>;
|
|
42
|
+
static createWorkspace(input?: AiWorkspaceCreate | undefined, options?: AiGatewayCallOptions): Promise<AiWorkspace>;
|
|
43
|
+
static createWorkspaceMember(workspaceId: string, input: AiWorkspaceMemberCreate, options?: AiGatewayCallOptions): Promise<AiWorkspaceMember>;
|
|
44
|
+
static getDialogue(dialogueId: string, options?: AiGatewayCallOptions): Promise<AiDialogue>;
|
|
45
|
+
static getOrganizationQuota(options?: AiGatewayCallOptions): Promise<AiOrganizationQuota>;
|
|
46
|
+
static getWorkspace(workspaceId: string, options?: AiGatewayCallOptions): Promise<AiWorkspace>;
|
|
47
|
+
static listWorkspaces(options?: AiGatewayCallOptions): Promise<AiWorkspaceSummary[]>;
|
|
48
|
+
static sendMessage(dialogueId: string, message: AiMessageCreate, options: AiGatewayCallOptions, onChunk: (chunk: AiStreamChunk) => void): Promise<void>;
|
|
49
|
+
static updateWorkspace(workspaceId: string, input: AiWorkspaceUpdate, options?: AiGatewayCallOptions): Promise<AiWorkspace>;
|
|
50
|
+
}
|
|
51
|
+
export declare function setAiHttpRequestForTests(requestFn: AiHttpRequestFn): void;
|
|
52
|
+
export declare function resetAiHttpRequestForTests(): void;
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import * as http from 'node:http';
|
|
2
|
+
import * as https from 'node:https';
|
|
3
|
+
import { createRequire } from 'node:module';
|
|
4
|
+
import { URL } from 'node:url';
|
|
5
|
+
import { AI_DEFAULT_TIMEOUT_MS, AI_DEFAULT_WORKSPACE_NAME, resolveAiCredentials } from './ai-config.js';
|
|
6
|
+
import { AiStreamParser } from './ai-stream-parser.js';
|
|
7
|
+
import { dialogueEndpoint, dialogueMessagesEndpoint, dialoguesEndpoint, normalizeAiDialogue, normalizeAiOrganizationQuota, normalizeAiWorkspace, normalizeAiWorkspaceList, normalizeAiWorkspaceMember, quotaEndpoint, workspaceEndpoint, workspaceMembersEndpoint, workspacesEndpoint, } from './ai-types.js';
|
|
8
|
+
import { createTransactionId, getGatewayTransactionId } from './cicd-gateway.js';
|
|
9
|
+
import { formatDebugBody, logVerboseDebug } from './debug.js';
|
|
10
|
+
const require = createRequire(import.meta.url);
|
|
11
|
+
const packageJson = require('../../package.json');
|
|
12
|
+
export class AiGatewayError extends Error {
|
|
13
|
+
requestMethod;
|
|
14
|
+
requestUrl;
|
|
15
|
+
retryAfterSeconds;
|
|
16
|
+
statusCode;
|
|
17
|
+
constructor(message, options = {}) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.name = 'AiGatewayError';
|
|
20
|
+
this.requestMethod = options.request?.method;
|
|
21
|
+
this.requestUrl = options.request?.url;
|
|
22
|
+
this.retryAfterSeconds = options.retryAfterSeconds;
|
|
23
|
+
this.statusCode = options.statusCode;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function userAgent() {
|
|
27
|
+
return `agentia-cli/${packageJson.version}`;
|
|
28
|
+
}
|
|
29
|
+
function transactionIdForRequest() {
|
|
30
|
+
return getGatewayTransactionId() ?? createTransactionId();
|
|
31
|
+
}
|
|
32
|
+
function parseRetryAfterHeader(value) {
|
|
33
|
+
if (value === undefined)
|
|
34
|
+
return undefined;
|
|
35
|
+
const raw = Array.isArray(value) ? value[0] : value;
|
|
36
|
+
if (raw === undefined)
|
|
37
|
+
return undefined;
|
|
38
|
+
if (typeof raw === 'number')
|
|
39
|
+
return Number.isFinite(raw) && raw >= 0 ? Math.ceil(raw) : undefined;
|
|
40
|
+
const trimmed = raw.trim();
|
|
41
|
+
if (/^\d+$/u.test(trimmed))
|
|
42
|
+
return Number.parseInt(trimmed, 10);
|
|
43
|
+
const dateMs = Date.parse(trimmed);
|
|
44
|
+
return Number.isNaN(dateMs) ? undefined : Math.max(0, Math.ceil((dateMs - Date.now()) / 1000));
|
|
45
|
+
}
|
|
46
|
+
function extractErrorMessage(raw) {
|
|
47
|
+
try {
|
|
48
|
+
const parsed = JSON.parse(raw);
|
|
49
|
+
for (const value of [parsed.detail, parsed.message, parsed.error, parsed.title]) {
|
|
50
|
+
if (typeof value === 'string' && value.trim().length > 0)
|
|
51
|
+
return value.trim();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return raw.trim().length > 0 ? raw.trim() : undefined;
|
|
56
|
+
}
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
function statusMessage(status, raw, retryAfterSeconds) {
|
|
60
|
+
if (status === 401)
|
|
61
|
+
return 'Invalid or expired AI token. Run `agentia auth set --ai <pat> --ai-domain <domain> --ai-org <org-id>` to re-authenticate.';
|
|
62
|
+
if (status === 403)
|
|
63
|
+
return 'AI agent access is forbidden for the configured organization, workspace, or capability.';
|
|
64
|
+
if (status === 429)
|
|
65
|
+
return `AI rate limit reached.${retryAfterSeconds === undefined ? '' : ` Retry in ${retryAfterSeconds}s.`}`;
|
|
66
|
+
if (status >= 500)
|
|
67
|
+
return 'AI service unavailable. Check status.copado.com.';
|
|
68
|
+
return extractErrorMessage(raw) ?? `AI Gateway request failed (${status}).`;
|
|
69
|
+
}
|
|
70
|
+
function maskSecret(value) {
|
|
71
|
+
return value.length <= 8 ? '<masked>' : `${value.slice(0, 4)}...${value.slice(-4)}`;
|
|
72
|
+
}
|
|
73
|
+
function maskHeaders(headers) {
|
|
74
|
+
const masked = { ...headers };
|
|
75
|
+
if (masked['X-Authorization'] !== undefined)
|
|
76
|
+
masked['X-Authorization'] = maskSecret(masked['X-Authorization']);
|
|
77
|
+
return masked;
|
|
78
|
+
}
|
|
79
|
+
function withRequestSuffix(message, request) {
|
|
80
|
+
const suffix = request.url === undefined ? '' : ` Request: ${request.method ?? ''} ${request.url}`.trimEnd();
|
|
81
|
+
if (suffix.length === 0)
|
|
82
|
+
return message;
|
|
83
|
+
return message.endsWith('.') ? `${message} ${suffix}` : `${message}. ${suffix}`;
|
|
84
|
+
}
|
|
85
|
+
function defaultHttpsRequest({ body, headers, method, onData, timeoutMs, url }) {
|
|
86
|
+
const hasBody = body !== undefined;
|
|
87
|
+
const payload = hasBody ? JSON.stringify(body) : '';
|
|
88
|
+
const requestHeaders = {
|
|
89
|
+
Accept: 'application/json',
|
|
90
|
+
...headers,
|
|
91
|
+
};
|
|
92
|
+
if (hasBody) {
|
|
93
|
+
requestHeaders['Content-Type'] = requestHeaders['Content-Type'] ?? 'application/json';
|
|
94
|
+
requestHeaders['Content-Length'] = Buffer.byteLength(payload).toString();
|
|
95
|
+
}
|
|
96
|
+
const transport = url.protocol === 'http:' ? http : https;
|
|
97
|
+
return new Promise((resolve, reject) => {
|
|
98
|
+
const chunks = [];
|
|
99
|
+
let settled = false;
|
|
100
|
+
const rejectOnce = (error) => {
|
|
101
|
+
if (settled)
|
|
102
|
+
return;
|
|
103
|
+
settled = true;
|
|
104
|
+
reject(error);
|
|
105
|
+
};
|
|
106
|
+
const req = transport.request({
|
|
107
|
+
headers: requestHeaders,
|
|
108
|
+
hostname: url.hostname,
|
|
109
|
+
method,
|
|
110
|
+
path: `${url.pathname}${url.search}`,
|
|
111
|
+
port: url.port.length > 0 ? Number(url.port) : undefined,
|
|
112
|
+
timeout: timeoutMs,
|
|
113
|
+
}, (res) => {
|
|
114
|
+
const status = res.statusCode ?? 0;
|
|
115
|
+
const shouldParseStream = onData !== undefined && status < 400;
|
|
116
|
+
res.on('data', (chunk) => {
|
|
117
|
+
if (!shouldParseStream)
|
|
118
|
+
chunks.push(chunk);
|
|
119
|
+
if (shouldParseStream) {
|
|
120
|
+
try {
|
|
121
|
+
onData(chunk);
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
req.destroy();
|
|
125
|
+
rejectOnce(error);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
res.on('end', () => {
|
|
130
|
+
if (settled)
|
|
131
|
+
return;
|
|
132
|
+
settled = true;
|
|
133
|
+
const raw = Buffer.concat(chunks).toString('utf8');
|
|
134
|
+
if (status >= 400) {
|
|
135
|
+
logVerboseDebug('AI response', {
|
|
136
|
+
body: formatDebugBody(raw),
|
|
137
|
+
status,
|
|
138
|
+
});
|
|
139
|
+
const retryAfterSeconds = status === 429 ? parseRetryAfterHeader(res.headers['retry-after']) : undefined;
|
|
140
|
+
reject(new AiGatewayError(statusMessage(status, raw, retryAfterSeconds), {
|
|
141
|
+
retryAfterSeconds,
|
|
142
|
+
statusCode: status,
|
|
143
|
+
}));
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
resolve(raw);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
req.on('error', (error) => rejectOnce(error));
|
|
150
|
+
req.on('timeout', () => {
|
|
151
|
+
req.destroy(new Error(`AI Gateway request timed out after ${Math.ceil(timeoutMs / 1000)} seconds.`));
|
|
152
|
+
});
|
|
153
|
+
if (hasBody)
|
|
154
|
+
req.write(payload);
|
|
155
|
+
req.end();
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
let httpRequestFn = defaultHttpsRequest;
|
|
159
|
+
function requestUrl(request, baseUrl) {
|
|
160
|
+
return new URL(request.endpoint.replace(/^\/+/u, ''), `${baseUrl}/`);
|
|
161
|
+
}
|
|
162
|
+
function headersForRequest(pat, request) {
|
|
163
|
+
return {
|
|
164
|
+
Accept: request.responseType === 'ndjson' ? 'application/x-ndjson, application/json' : 'application/json',
|
|
165
|
+
'User-Agent': userAgent(),
|
|
166
|
+
'X-Authorization': pat,
|
|
167
|
+
'x-transaction-id': transactionIdForRequest(),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
async function executeJsonRequest(request, options = {}) {
|
|
171
|
+
const credentials = resolveAiCredentials(options);
|
|
172
|
+
const url = requestUrl(request, credentials.baseUrl);
|
|
173
|
+
const requestInfo = { method: request.method, url: url.toString() };
|
|
174
|
+
const headers = headersForRequest(credentials.pat, request);
|
|
175
|
+
logVerboseDebug('AI request', {
|
|
176
|
+
body: request.body ?? null,
|
|
177
|
+
headers: maskHeaders(headers),
|
|
178
|
+
method: request.method,
|
|
179
|
+
url: url.toString(),
|
|
180
|
+
});
|
|
181
|
+
let raw;
|
|
182
|
+
try {
|
|
183
|
+
raw = await httpRequestFn({
|
|
184
|
+
body: request.body,
|
|
185
|
+
headers,
|
|
186
|
+
method: request.method,
|
|
187
|
+
timeoutMs: options.timeoutMs ?? AI_DEFAULT_TIMEOUT_MS,
|
|
188
|
+
url,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
if (error instanceof AiGatewayError) {
|
|
193
|
+
throw new AiGatewayError(withRequestSuffix(error.message, requestInfo), {
|
|
194
|
+
request: requestInfo,
|
|
195
|
+
retryAfterSeconds: error.retryAfterSeconds,
|
|
196
|
+
statusCode: error.statusCode,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
throw error;
|
|
200
|
+
}
|
|
201
|
+
logVerboseDebug('AI response', formatDebugBody(raw));
|
|
202
|
+
if (raw.trim().length === 0)
|
|
203
|
+
return undefined;
|
|
204
|
+
try {
|
|
205
|
+
return JSON.parse(raw);
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
throw new AiGatewayError(withRequestSuffix(`AI Gateway returned non-JSON response: ${raw}`, requestInfo), {
|
|
209
|
+
request: requestInfo,
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
async function executeStreamRequest(request, options, onChunk) {
|
|
214
|
+
const credentials = resolveAiCredentials(options);
|
|
215
|
+
const url = requestUrl(request, credentials.baseUrl);
|
|
216
|
+
const requestInfo = { method: request.method, url: url.toString() };
|
|
217
|
+
const headers = headersForRequest(credentials.pat, { ...request, responseType: 'ndjson' });
|
|
218
|
+
const parser = new AiStreamParser();
|
|
219
|
+
logVerboseDebug('AI request', {
|
|
220
|
+
body: request.body ?? null,
|
|
221
|
+
headers: maskHeaders(headers),
|
|
222
|
+
method: request.method,
|
|
223
|
+
url: url.toString(),
|
|
224
|
+
});
|
|
225
|
+
try {
|
|
226
|
+
await httpRequestFn({
|
|
227
|
+
body: request.body,
|
|
228
|
+
headers,
|
|
229
|
+
method: request.method,
|
|
230
|
+
onData(chunk) {
|
|
231
|
+
for (const parsed of parser.push(chunk))
|
|
232
|
+
onChunk(parsed);
|
|
233
|
+
},
|
|
234
|
+
timeoutMs: options.timeoutMs ?? AI_DEFAULT_TIMEOUT_MS,
|
|
235
|
+
url,
|
|
236
|
+
});
|
|
237
|
+
logVerboseDebug('AI response', { streamed: true });
|
|
238
|
+
for (const parsed of parser.finish())
|
|
239
|
+
onChunk(parsed);
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
if (error instanceof AiGatewayError) {
|
|
243
|
+
throw new AiGatewayError(withRequestSuffix(error.message, requestInfo), {
|
|
244
|
+
request: requestInfo,
|
|
245
|
+
retryAfterSeconds: error.retryAfterSeconds,
|
|
246
|
+
statusCode: error.statusCode,
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
throw error;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
export class AiGateway {
|
|
253
|
+
static async createDialogue(input, options = {}) {
|
|
254
|
+
return normalizeAiDialogue(await executeJsonRequest({
|
|
255
|
+
body: {
|
|
256
|
+
assistantId: input.assistantId,
|
|
257
|
+
name: input.name,
|
|
258
|
+
workspaceId: input.workspaceId,
|
|
259
|
+
},
|
|
260
|
+
endpoint: dialoguesEndpoint(),
|
|
261
|
+
method: 'POST',
|
|
262
|
+
}, options));
|
|
263
|
+
}
|
|
264
|
+
static async createWorkspace(input = undefined, options = {}) {
|
|
265
|
+
return normalizeAiWorkspace(await executeJsonRequest({
|
|
266
|
+
body: input ?? { name: AI_DEFAULT_WORKSPACE_NAME },
|
|
267
|
+
endpoint: workspacesEndpoint(),
|
|
268
|
+
method: 'POST',
|
|
269
|
+
}, options));
|
|
270
|
+
}
|
|
271
|
+
static async createWorkspaceMember(workspaceId, input, options = {}) {
|
|
272
|
+
return normalizeAiWorkspaceMember(await executeJsonRequest({
|
|
273
|
+
body: input,
|
|
274
|
+
endpoint: workspaceMembersEndpoint(workspaceId),
|
|
275
|
+
method: 'POST',
|
|
276
|
+
}, options));
|
|
277
|
+
}
|
|
278
|
+
static async getDialogue(dialogueId, options = {}) {
|
|
279
|
+
return normalizeAiDialogue(await executeJsonRequest({
|
|
280
|
+
endpoint: dialogueEndpoint(dialogueId),
|
|
281
|
+
method: 'GET',
|
|
282
|
+
}, options));
|
|
283
|
+
}
|
|
284
|
+
static async getOrganizationQuota(options = {}) {
|
|
285
|
+
return normalizeAiOrganizationQuota(await executeJsonRequest({
|
|
286
|
+
endpoint: quotaEndpoint(),
|
|
287
|
+
method: 'GET',
|
|
288
|
+
}, options));
|
|
289
|
+
}
|
|
290
|
+
static async getWorkspace(workspaceId, options = {}) {
|
|
291
|
+
return normalizeAiWorkspace(await executeJsonRequest({
|
|
292
|
+
endpoint: workspaceEndpoint(workspaceId),
|
|
293
|
+
method: 'GET',
|
|
294
|
+
}, options));
|
|
295
|
+
}
|
|
296
|
+
static async listWorkspaces(options = {}) {
|
|
297
|
+
return normalizeAiWorkspaceList(await executeJsonRequest({
|
|
298
|
+
endpoint: workspacesEndpoint(),
|
|
299
|
+
method: 'GET',
|
|
300
|
+
}, options));
|
|
301
|
+
}
|
|
302
|
+
static async sendMessage(dialogueId, message, options, onChunk) {
|
|
303
|
+
await executeStreamRequest({
|
|
304
|
+
body: message,
|
|
305
|
+
endpoint: dialogueMessagesEndpoint(dialogueId),
|
|
306
|
+
method: 'POST',
|
|
307
|
+
responseType: 'ndjson',
|
|
308
|
+
}, options, onChunk);
|
|
309
|
+
}
|
|
310
|
+
static async updateWorkspace(workspaceId, input, options = {}) {
|
|
311
|
+
return normalizeAiWorkspace(await executeJsonRequest({
|
|
312
|
+
body: input,
|
|
313
|
+
endpoint: workspaceEndpoint(workspaceId),
|
|
314
|
+
method: 'PATCH',
|
|
315
|
+
}, options));
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
export function setAiHttpRequestForTests(requestFn) {
|
|
319
|
+
httpRequestFn = requestFn;
|
|
320
|
+
}
|
|
321
|
+
export function resetAiHttpRequestForTests() {
|
|
322
|
+
httpRequestFn = defaultHttpsRequest;
|
|
323
|
+
}
|
|
324
|
+
//# sourceMappingURL=ai-gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-gateway.js","sourceRoot":"","sources":["../../src/lib/ai-gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type AiConnectionOverrides } from './ai-config.js';
|
|
2
|
+
import { type AiAgent, type AiAskResult, type AiContextOptions, type AiDialogue, type AiWorkspace, assistantIdForAgent } from './ai-types.js';
|
|
3
|
+
export type AiAskOptions = AiConnectionOverrides & AiContextOptions & {
|
|
4
|
+
agent: AiAgent;
|
|
5
|
+
dialogue?: string;
|
|
6
|
+
prompt: string;
|
|
7
|
+
timeoutMs?: number;
|
|
8
|
+
};
|
|
9
|
+
export type AiBootstrapOptions = AiConnectionOverrides & {
|
|
10
|
+
agent: AiAgent;
|
|
11
|
+
dialogue?: string;
|
|
12
|
+
kind: 'ask' | 'chat';
|
|
13
|
+
timeoutMs?: number;
|
|
14
|
+
};
|
|
15
|
+
export type AiBootstrapResult = {
|
|
16
|
+
assistantId: ReturnType<typeof assistantIdForAgent>;
|
|
17
|
+
dialogue: AiDialogue;
|
|
18
|
+
workspace?: AiWorkspace;
|
|
19
|
+
};
|
|
20
|
+
export type AiAskCallbacks = {
|
|
21
|
+
onStatus?: (status: string) => void;
|
|
22
|
+
onToken?: (token: string) => void;
|
|
23
|
+
onWarning?: (warning: string) => void;
|
|
24
|
+
};
|
|
25
|
+
export declare function bootstrapAiDialogue(options: AiBootstrapOptions): Promise<AiBootstrapResult>;
|
|
26
|
+
export declare function runAiAsk(options: AiAskOptions, callbacks?: AiAskCallbacks): Promise<AiAskResult>;
|