@hypertabai/mcp 0.2.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +264 -0
- package/dist/bridge/api-client.d.ts +157 -0
- package/dist/bridge/api-client.d.ts.map +1 -0
- package/dist/bridge/api-client.js +140 -0
- package/dist/bridge/api-client.js.map +1 -0
- package/dist/bridge/artifacts.d.ts +11 -0
- package/dist/bridge/artifacts.d.ts.map +1 -0
- package/dist/bridge/artifacts.js +45 -0
- package/dist/bridge/artifacts.js.map +1 -0
- package/dist/bridge/command-contract.d.ts +14 -0
- package/dist/bridge/command-contract.d.ts.map +1 -0
- package/dist/bridge/command-contract.js +152 -0
- package/dist/bridge/command-contract.js.map +1 -0
- package/dist/bridge/index.d.ts +248 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/index.js +875 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/bridge/spool.d.ts +30 -0
- package/dist/bridge/spool.d.ts.map +1 -0
- package/dist/bridge/spool.js +108 -0
- package/dist/bridge/spool.js.map +1 -0
- package/dist/connect.js +1 -1
- package/dist/idempotency.d.ts +11 -0
- package/dist/idempotency.d.ts.map +1 -0
- package/dist/idempotency.js +63 -0
- package/dist/idempotency.js.map +1 -0
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/install/skill-writer.d.ts +1 -1
- package/dist/install/skill-writer.d.ts.map +1 -1
- package/dist/install/skill-writer.js +21 -1
- package/dist/install/skill-writer.js.map +1 -1
- package/dist/surfaces/build.d.ts +22 -0
- package/dist/surfaces/build.d.ts.map +1 -0
- package/dist/surfaces/build.js +122 -0
- package/dist/surfaces/build.js.map +1 -0
- package/dist/surfaces/detect.d.ts +20 -0
- package/dist/surfaces/detect.d.ts.map +1 -0
- package/dist/surfaces/detect.js +130 -0
- package/dist/surfaces/detect.js.map +1 -0
- package/dist/surfaces/index.d.ts +35 -0
- package/dist/surfaces/index.d.ts.map +1 -0
- package/dist/surfaces/index.js +117 -0
- package/dist/surfaces/index.js.map +1 -0
- package/dist/surfaces/package.d.ts +48 -0
- package/dist/surfaces/package.d.ts.map +1 -0
- package/dist/surfaces/package.js +86 -0
- package/dist/surfaces/package.js.map +1 -0
- package/dist/surfaces/publish-client.d.ts +40 -0
- package/dist/surfaces/publish-client.d.ts.map +1 -0
- package/dist/surfaces/publish-client.js +111 -0
- package/dist/surfaces/publish-client.js.map +1 -0
- package/package.json +8 -3
- package/templates/bridge-wrapper.mjs +138 -0
- package/templates/bridge-wrapper.sh +78 -0
- package/dist/__tests__/config-writer.test.d.ts +0 -2
- package/dist/__tests__/config-writer.test.d.ts.map +0 -1
- package/dist/__tests__/config-writer.test.js +0 -186
- package/dist/__tests__/config-writer.test.js.map +0 -1
- package/dist/__tests__/index.test.d.ts +0 -2
- package/dist/__tests__/index.test.d.ts.map +0 -1
- package/dist/__tests__/index.test.js +0 -113
- package/dist/__tests__/index.test.js.map +0 -1
- package/dist/__tests__/install.test.d.ts +0 -2
- package/dist/__tests__/install.test.d.ts.map +0 -1
- package/dist/__tests__/install.test.js +0 -211
- package/dist/__tests__/install.test.js.map +0 -1
- package/dist/__tests__/platforms.test.d.ts +0 -2
- package/dist/__tests__/platforms.test.d.ts.map +0 -1
- package/dist/__tests__/platforms.test.js +0 -109
- package/dist/__tests__/platforms.test.js.map +0 -1
- package/dist/__tests__/uninstall.test.d.ts +0 -2
- package/dist/__tests__/uninstall.test.d.ts.map +0 -1
- package/dist/__tests__/uninstall.test.js +0 -117
- package/dist/__tests__/uninstall.test.js.map +0 -1
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const BRIDGE_COMMAND_TYPES: readonly ["agent.status_request", "agent.prompt", "agent.cancel", "artifact.upload_request", "bridge.health_request"];
|
|
2
|
+
export type BridgeCommandType = (typeof BRIDGE_COMMAND_TYPES)[number];
|
|
3
|
+
export interface BridgeCommandContractResult {
|
|
4
|
+
allowed: boolean;
|
|
5
|
+
command_type: string;
|
|
6
|
+
reason?: string;
|
|
7
|
+
message?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function classifyBridgeCommandContract(input: {
|
|
10
|
+
command_type?: unknown;
|
|
11
|
+
payload?: unknown;
|
|
12
|
+
}): BridgeCommandContractResult;
|
|
13
|
+
export declare function isBridgeCommandType(value: string): value is BridgeCommandType;
|
|
14
|
+
//# sourceMappingURL=command-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-contract.d.ts","sourceRoot":"","sources":["../../src/bridge/command-contract.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,uHAMvB,CAAA;AAEV,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAA;AAErE,MAAM,WAAW,2BAA2B;IAC3C,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AA+BD,wBAAgB,6BAA6B,CAAC,KAAK,EAAE;IACpD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,OAAO,CAAC,EAAE,OAAO,CAAA;CACjB,GAAG,2BAA2B,CAsB9B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAE7E"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
export const BRIDGE_COMMAND_TYPES = [
|
|
2
|
+
'agent.status_request',
|
|
3
|
+
'agent.prompt',
|
|
4
|
+
'agent.cancel',
|
|
5
|
+
'artifact.upload_request',
|
|
6
|
+
'bridge.health_request',
|
|
7
|
+
];
|
|
8
|
+
const DISALLOWED_COMMAND_TYPES = new Set([
|
|
9
|
+
'shell',
|
|
10
|
+
'exec',
|
|
11
|
+
'eval',
|
|
12
|
+
'run_script',
|
|
13
|
+
'write_file',
|
|
14
|
+
'delete_file',
|
|
15
|
+
'network_request',
|
|
16
|
+
]);
|
|
17
|
+
const DISALLOWED_PAYLOAD_KEYS = new Set([
|
|
18
|
+
'command',
|
|
19
|
+
'script',
|
|
20
|
+
'code',
|
|
21
|
+
'curl',
|
|
22
|
+
'sql',
|
|
23
|
+
'dangerously_execute',
|
|
24
|
+
'shell',
|
|
25
|
+
'exec',
|
|
26
|
+
'eval',
|
|
27
|
+
'run_script',
|
|
28
|
+
'write_file',
|
|
29
|
+
'delete_file',
|
|
30
|
+
'network_request',
|
|
31
|
+
]);
|
|
32
|
+
const SECRET_VALUE_PATTERN = /\b(?:ht_sk_[A-Za-z0-9_-]{16,}|sk_(?:live|test)_[A-Za-z0-9_-]{16,}|sk-[A-Za-z0-9_-]{16,}|ghp_[A-Za-z0-9_]{20,}|github_pat_[A-Za-z0-9_]{20,}|xox[baprs]-[A-Za-z0-9-]{20,}|AKIA[0-9A-Z]{16}|AIza[0-9A-Za-z_-]{25,}|ya29\.[0-9A-Za-z_-]{20,}|eyJ[A-Za-z0-9_-]{20,}\.[A-Za-z0-9_-]{20,})\b/;
|
|
33
|
+
export function classifyBridgeCommandContract(input) {
|
|
34
|
+
const commandType = typeof input.command_type === 'string' ? input.command_type.trim() : '';
|
|
35
|
+
if (!commandType)
|
|
36
|
+
return rejected('', 'missing_command_type', 'Command is missing command_type.');
|
|
37
|
+
if (DISALLOWED_COMMAND_TYPES.has(commandType)) {
|
|
38
|
+
return rejected(commandType, 'execution_command_type', `Command type ${commandType} is direct execution and is not allowed.`);
|
|
39
|
+
}
|
|
40
|
+
if (!isBridgeCommandType(commandType)) {
|
|
41
|
+
return rejected(commandType, 'unknown_command_type', `Command type ${commandType} is not in the v1 allowlist.`);
|
|
42
|
+
}
|
|
43
|
+
const payload = asRecord(input.payload);
|
|
44
|
+
if (!payload)
|
|
45
|
+
return rejected(commandType, 'invalid_payload', 'Command payload must be a JSON object.');
|
|
46
|
+
const unsafe = findUnsafePayload(payload);
|
|
47
|
+
if (unsafe) {
|
|
48
|
+
return rejected(commandType, unsafe.reason, `Command payload contains unsafe field ${unsafe.path}.`);
|
|
49
|
+
}
|
|
50
|
+
const shapeError = validatePayloadShape(commandType, payload);
|
|
51
|
+
if (shapeError)
|
|
52
|
+
return rejected(commandType, 'invalid_payload_shape', shapeError);
|
|
53
|
+
return { allowed: true, command_type: commandType };
|
|
54
|
+
}
|
|
55
|
+
export function isBridgeCommandType(value) {
|
|
56
|
+
return BRIDGE_COMMAND_TYPES.includes(value);
|
|
57
|
+
}
|
|
58
|
+
function rejected(commandType, reason, message) {
|
|
59
|
+
return { allowed: false, command_type: commandType, reason, message };
|
|
60
|
+
}
|
|
61
|
+
function validatePayloadShape(commandType, payload) {
|
|
62
|
+
const keys = Object.keys(payload);
|
|
63
|
+
if (commandType === 'agent.status_request') {
|
|
64
|
+
if (hasUnknownKeys(keys, ['run_id', 'detail']))
|
|
65
|
+
return 'agent.status_request only accepts run_id and detail.';
|
|
66
|
+
if ('run_id' in payload && !isString(payload.run_id))
|
|
67
|
+
return 'agent.status_request run_id must be a string.';
|
|
68
|
+
if ('detail' in payload && payload.detail !== 'summary' && payload.detail !== 'full') {
|
|
69
|
+
return 'agent.status_request detail must be summary or full.';
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
if (commandType === 'agent.prompt') {
|
|
74
|
+
if (hasUnknownKeys(keys, ['objective', 'requires_confirmation', 'expected_artifacts'])) {
|
|
75
|
+
return 'agent.prompt only accepts objective, requires_confirmation, and expected_artifacts.';
|
|
76
|
+
}
|
|
77
|
+
if (!isString(payload.objective))
|
|
78
|
+
return 'agent.prompt objective is required.';
|
|
79
|
+
if ('requires_confirmation' in payload && typeof payload.requires_confirmation !== 'boolean') {
|
|
80
|
+
return 'agent.prompt requires_confirmation must be boolean.';
|
|
81
|
+
}
|
|
82
|
+
if ('expected_artifacts' in payload && !isStringArray(payload.expected_artifacts)) {
|
|
83
|
+
return 'agent.prompt expected_artifacts must be a string array.';
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
if (commandType === 'agent.cancel') {
|
|
88
|
+
if (hasUnknownKeys(keys, ['run_id', 'reason']))
|
|
89
|
+
return 'agent.cancel only accepts run_id and reason.';
|
|
90
|
+
if ('run_id' in payload && !isString(payload.run_id))
|
|
91
|
+
return 'agent.cancel run_id must be a string.';
|
|
92
|
+
if ('reason' in payload && !isString(payload.reason))
|
|
93
|
+
return 'agent.cancel reason must be a string.';
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
if (commandType === 'artifact.upload_request') {
|
|
97
|
+
if (hasUnknownKeys(keys, ['path', 'artifact_type', 'name'])) {
|
|
98
|
+
return 'artifact.upload_request only accepts path, artifact_type, and name.';
|
|
99
|
+
}
|
|
100
|
+
if (!isString(payload.path))
|
|
101
|
+
return 'artifact.upload_request path is required.';
|
|
102
|
+
if ('artifact_type' in payload && !isString(payload.artifact_type)) {
|
|
103
|
+
return 'artifact.upload_request artifact_type must be a string.';
|
|
104
|
+
}
|
|
105
|
+
if ('name' in payload && !isString(payload.name))
|
|
106
|
+
return 'artifact.upload_request name must be a string.';
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
if (hasUnknownKeys(keys, ['client_id']))
|
|
110
|
+
return 'bridge.health_request only accepts client_id.';
|
|
111
|
+
if ('client_id' in payload && !isString(payload.client_id))
|
|
112
|
+
return 'bridge.health_request client_id must be a string.';
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
function hasUnknownKeys(keys, allowed) {
|
|
116
|
+
return keys.some((key) => !allowed.includes(key));
|
|
117
|
+
}
|
|
118
|
+
function isString(value) {
|
|
119
|
+
return typeof value === 'string' && value.length > 0;
|
|
120
|
+
}
|
|
121
|
+
function isStringArray(value) {
|
|
122
|
+
return Array.isArray(value) && value.every(isString);
|
|
123
|
+
}
|
|
124
|
+
function asRecord(value) {
|
|
125
|
+
if (value === undefined || value === null)
|
|
126
|
+
return {};
|
|
127
|
+
return value && typeof value === 'object' && !Array.isArray(value) ? value : null;
|
|
128
|
+
}
|
|
129
|
+
function findUnsafePayload(value, path = 'payload') {
|
|
130
|
+
if (typeof value === 'string')
|
|
131
|
+
return SECRET_VALUE_PATTERN.test(value) ? { path, reason: 'secret_shaped_value' } : null;
|
|
132
|
+
if (Array.isArray(value)) {
|
|
133
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
134
|
+
const unsafe = findUnsafePayload(value[index], `${path}[${index}]`);
|
|
135
|
+
if (unsafe)
|
|
136
|
+
return unsafe;
|
|
137
|
+
}
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
if (!value || typeof value !== 'object')
|
|
141
|
+
return null;
|
|
142
|
+
for (const [key, child] of Object.entries(value)) {
|
|
143
|
+
const childPath = `${path}.${key}`;
|
|
144
|
+
if (DISALLOWED_PAYLOAD_KEYS.has(key.toLowerCase()))
|
|
145
|
+
return { path: childPath, reason: 'execution_shaped_key' };
|
|
146
|
+
const unsafe = findUnsafePayload(child, childPath);
|
|
147
|
+
if (unsafe)
|
|
148
|
+
return unsafe;
|
|
149
|
+
}
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=command-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-contract.js","sourceRoot":"","sources":["../../src/bridge/command-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import { type BridgeClientType, type BridgeCommandResultStatus } from './api-client.js';
|
|
3
|
+
export declare const DEFAULT_BRIDGE_API_URL = "https://api.hypertab.ai";
|
|
4
|
+
export declare const BRIDGE_CLIENT_TYPES: readonly ["codex", "claude_code", "cursor", "browser", "cloud", "other"];
|
|
5
|
+
interface Writer {
|
|
6
|
+
write(chunk: string): unknown;
|
|
7
|
+
}
|
|
8
|
+
export interface BridgeStartOptions {
|
|
9
|
+
apiKey?: string;
|
|
10
|
+
apiUrl: string;
|
|
11
|
+
clientName?: string;
|
|
12
|
+
clientType: BridgeClientType;
|
|
13
|
+
heartbeatIntervalMs: number;
|
|
14
|
+
commandIntervalMs: number;
|
|
15
|
+
commandLimit: number;
|
|
16
|
+
session: boolean;
|
|
17
|
+
objective?: string;
|
|
18
|
+
runTitle?: string;
|
|
19
|
+
source: string;
|
|
20
|
+
once: boolean;
|
|
21
|
+
json: boolean;
|
|
22
|
+
spool: boolean;
|
|
23
|
+
spoolFile: string;
|
|
24
|
+
timeoutMs?: number;
|
|
25
|
+
fetchImpl?: typeof fetch;
|
|
26
|
+
stdout?: Writer;
|
|
27
|
+
stderr?: Writer;
|
|
28
|
+
sleep?: (ms: number) => Promise<void>;
|
|
29
|
+
maxIterations?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface BridgeResultOptions {
|
|
32
|
+
apiKey?: string;
|
|
33
|
+
apiUrl: string;
|
|
34
|
+
commandId: string;
|
|
35
|
+
clientId?: string;
|
|
36
|
+
status: BridgeCommandResultStatus;
|
|
37
|
+
errorMessage?: string;
|
|
38
|
+
json: boolean;
|
|
39
|
+
spool: boolean;
|
|
40
|
+
spoolFile: string;
|
|
41
|
+
timeoutMs?: number;
|
|
42
|
+
fetchImpl?: typeof fetch;
|
|
43
|
+
stdout?: Writer;
|
|
44
|
+
stderr?: Writer;
|
|
45
|
+
}
|
|
46
|
+
export interface BridgeStatusOptions {
|
|
47
|
+
apiKey?: string;
|
|
48
|
+
apiUrl: string;
|
|
49
|
+
clientId?: string;
|
|
50
|
+
limit: number;
|
|
51
|
+
json: boolean;
|
|
52
|
+
timeoutMs?: number;
|
|
53
|
+
fetchImpl?: typeof fetch;
|
|
54
|
+
stdout?: Writer;
|
|
55
|
+
stderr?: Writer;
|
|
56
|
+
}
|
|
57
|
+
export interface BridgeTokenCreateOptions {
|
|
58
|
+
apiKey?: string;
|
|
59
|
+
apiUrl: string;
|
|
60
|
+
name?: string;
|
|
61
|
+
clientName: string;
|
|
62
|
+
clientType: BridgeClientType;
|
|
63
|
+
expiresInDays: number;
|
|
64
|
+
json: boolean;
|
|
65
|
+
timeoutMs?: number;
|
|
66
|
+
fetchImpl?: typeof fetch;
|
|
67
|
+
stdout?: Writer;
|
|
68
|
+
stderr?: Writer;
|
|
69
|
+
}
|
|
70
|
+
export interface BridgeEventBatchOptions {
|
|
71
|
+
apiKey?: string;
|
|
72
|
+
apiUrl: string;
|
|
73
|
+
file: string;
|
|
74
|
+
json: boolean;
|
|
75
|
+
spool: boolean;
|
|
76
|
+
spoolFile: string;
|
|
77
|
+
timeoutMs?: number;
|
|
78
|
+
fetchImpl?: typeof fetch;
|
|
79
|
+
stdout?: Writer;
|
|
80
|
+
stderr?: Writer;
|
|
81
|
+
}
|
|
82
|
+
export interface BridgeFlushOptions {
|
|
83
|
+
apiKey?: string;
|
|
84
|
+
apiUrl: string;
|
|
85
|
+
spoolFile: string;
|
|
86
|
+
json: boolean;
|
|
87
|
+
timeoutMs?: number;
|
|
88
|
+
fetchImpl?: typeof fetch;
|
|
89
|
+
stdout?: Writer;
|
|
90
|
+
stderr?: Writer;
|
|
91
|
+
}
|
|
92
|
+
export interface BridgeArtifactUploadOptions {
|
|
93
|
+
apiKey?: string;
|
|
94
|
+
apiUrl: string;
|
|
95
|
+
file: string;
|
|
96
|
+
runId?: string;
|
|
97
|
+
name?: string;
|
|
98
|
+
artifactType?: string;
|
|
99
|
+
mimeType?: string;
|
|
100
|
+
metadata?: string;
|
|
101
|
+
json: boolean;
|
|
102
|
+
timeoutMs?: number;
|
|
103
|
+
fetchImpl?: typeof fetch;
|
|
104
|
+
stdout?: Writer;
|
|
105
|
+
stderr?: Writer;
|
|
106
|
+
}
|
|
107
|
+
export interface BridgeWrapperInitOptions {
|
|
108
|
+
type: 'node' | 'shell';
|
|
109
|
+
out?: string;
|
|
110
|
+
force: boolean;
|
|
111
|
+
json: boolean;
|
|
112
|
+
stdout?: Writer;
|
|
113
|
+
stderr?: Writer;
|
|
114
|
+
}
|
|
115
|
+
export interface BridgeWrapperDoctorOptions {
|
|
116
|
+
path?: string;
|
|
117
|
+
apiKey?: string;
|
|
118
|
+
json: boolean;
|
|
119
|
+
spoolFile: string;
|
|
120
|
+
env?: NodeJS.ProcessEnv;
|
|
121
|
+
stdout?: Writer;
|
|
122
|
+
stderr?: Writer;
|
|
123
|
+
}
|
|
124
|
+
interface RawBridgeStartOptions {
|
|
125
|
+
apiKey?: string;
|
|
126
|
+
apiUrl: string;
|
|
127
|
+
clientName?: string;
|
|
128
|
+
clientType: string;
|
|
129
|
+
heartbeatIntervalMs: number;
|
|
130
|
+
commandIntervalMs: number;
|
|
131
|
+
commandLimit: number;
|
|
132
|
+
session?: boolean;
|
|
133
|
+
objective?: string;
|
|
134
|
+
runTitle?: string;
|
|
135
|
+
source: string;
|
|
136
|
+
once?: boolean;
|
|
137
|
+
json?: boolean;
|
|
138
|
+
spool?: boolean;
|
|
139
|
+
spoolFile?: string;
|
|
140
|
+
timeoutMs?: number;
|
|
141
|
+
}
|
|
142
|
+
interface RawBridgeResultOptions {
|
|
143
|
+
apiKey?: string;
|
|
144
|
+
apiUrl: string;
|
|
145
|
+
commandId: string;
|
|
146
|
+
clientId?: string;
|
|
147
|
+
status: string;
|
|
148
|
+
errorMessage?: string;
|
|
149
|
+
json?: boolean;
|
|
150
|
+
spool?: boolean;
|
|
151
|
+
spoolFile?: string;
|
|
152
|
+
timeoutMs?: number;
|
|
153
|
+
}
|
|
154
|
+
interface RawBridgeStatusOptions {
|
|
155
|
+
apiKey?: string;
|
|
156
|
+
apiUrl: string;
|
|
157
|
+
clientId?: string;
|
|
158
|
+
limit: number;
|
|
159
|
+
json?: boolean;
|
|
160
|
+
timeoutMs?: number;
|
|
161
|
+
}
|
|
162
|
+
interface RawBridgeTokenCreateOptions {
|
|
163
|
+
apiKey?: string;
|
|
164
|
+
apiUrl: string;
|
|
165
|
+
name?: string;
|
|
166
|
+
clientName?: string;
|
|
167
|
+
clientType?: string;
|
|
168
|
+
expiresInDays?: number;
|
|
169
|
+
json?: boolean;
|
|
170
|
+
timeoutMs?: number;
|
|
171
|
+
}
|
|
172
|
+
interface RawBridgeEventBatchOptions {
|
|
173
|
+
apiKey?: string;
|
|
174
|
+
apiUrl: string;
|
|
175
|
+
file: string;
|
|
176
|
+
json?: boolean;
|
|
177
|
+
spool?: boolean;
|
|
178
|
+
spoolFile?: string;
|
|
179
|
+
timeoutMs?: number;
|
|
180
|
+
}
|
|
181
|
+
interface RawBridgeFlushOptions {
|
|
182
|
+
apiKey?: string;
|
|
183
|
+
apiUrl: string;
|
|
184
|
+
spoolFile?: string;
|
|
185
|
+
json?: boolean;
|
|
186
|
+
timeoutMs?: number;
|
|
187
|
+
}
|
|
188
|
+
interface RawBridgeArtifactUploadOptions {
|
|
189
|
+
apiKey?: string;
|
|
190
|
+
apiUrl: string;
|
|
191
|
+
file: string;
|
|
192
|
+
runId?: string;
|
|
193
|
+
name?: string;
|
|
194
|
+
artifactType?: string;
|
|
195
|
+
mimeType?: string;
|
|
196
|
+
metadata?: string;
|
|
197
|
+
json?: boolean;
|
|
198
|
+
timeoutMs?: number;
|
|
199
|
+
}
|
|
200
|
+
interface RawBridgeWrapperInitOptions {
|
|
201
|
+
type?: string;
|
|
202
|
+
out?: string;
|
|
203
|
+
force?: boolean;
|
|
204
|
+
json?: boolean;
|
|
205
|
+
}
|
|
206
|
+
interface RawBridgeWrapperDoctorOptions {
|
|
207
|
+
path?: string;
|
|
208
|
+
apiKey?: string;
|
|
209
|
+
json?: boolean;
|
|
210
|
+
spoolFile?: string;
|
|
211
|
+
}
|
|
212
|
+
interface BridgeCommandDependencies {
|
|
213
|
+
runStart?: (options: BridgeStartOptions) => Promise<number>;
|
|
214
|
+
runResult?: (options: BridgeResultOptions) => Promise<number>;
|
|
215
|
+
runStatus?: (options: BridgeStatusOptions) => Promise<number>;
|
|
216
|
+
runTokenCreate?: (options: BridgeTokenCreateOptions) => Promise<number>;
|
|
217
|
+
runEventBatch?: (options: BridgeEventBatchOptions) => Promise<number>;
|
|
218
|
+
runFlush?: (options: BridgeFlushOptions) => Promise<number>;
|
|
219
|
+
runArtifactUpload?: (options: BridgeArtifactUploadOptions) => Promise<number>;
|
|
220
|
+
runWrapperInit?: (options: BridgeWrapperInitOptions) => Promise<number>;
|
|
221
|
+
runWrapperDoctor?: (options: BridgeWrapperDoctorOptions) => Promise<number>;
|
|
222
|
+
exit?: (code: number) => void;
|
|
223
|
+
}
|
|
224
|
+
export declare function registerBridgeCommand(program: Command, deps?: BridgeCommandDependencies): void;
|
|
225
|
+
export declare function normalizeBridgeStartOptions(opts: RawBridgeStartOptions): BridgeStartOptions;
|
|
226
|
+
export declare function normalizeBridgeResultOptions(opts: RawBridgeResultOptions): BridgeResultOptions;
|
|
227
|
+
export declare function normalizeBridgeStatusOptions(opts: RawBridgeStatusOptions): BridgeStatusOptions;
|
|
228
|
+
export declare function normalizeBridgeTokenCreateOptions(opts: RawBridgeTokenCreateOptions): BridgeTokenCreateOptions;
|
|
229
|
+
export declare function normalizeBridgeEventBatchOptions(opts: RawBridgeEventBatchOptions): BridgeEventBatchOptions;
|
|
230
|
+
export declare function normalizeBridgeFlushOptions(opts: RawBridgeFlushOptions): BridgeFlushOptions;
|
|
231
|
+
export declare function normalizeBridgeArtifactUploadOptions(opts: RawBridgeArtifactUploadOptions): BridgeArtifactUploadOptions;
|
|
232
|
+
export declare function normalizeBridgeWrapperInitOptions(opts: RawBridgeWrapperInitOptions): BridgeWrapperInitOptions;
|
|
233
|
+
export declare function normalizeBridgeWrapperDoctorOptions(opts: RawBridgeWrapperDoctorOptions): BridgeWrapperDoctorOptions;
|
|
234
|
+
export declare function resolveBridgeApiKey(input: {
|
|
235
|
+
apiKey?: string;
|
|
236
|
+
env?: NodeJS.ProcessEnv;
|
|
237
|
+
}): string | null;
|
|
238
|
+
export declare function runBridgeDaemon(options: BridgeStartOptions): Promise<number>;
|
|
239
|
+
export declare function runBridgeResult(options: BridgeResultOptions): Promise<number>;
|
|
240
|
+
export declare function runBridgeStatus(options: BridgeStatusOptions): Promise<number>;
|
|
241
|
+
export declare function runBridgeTokenCreate(options: BridgeTokenCreateOptions): Promise<number>;
|
|
242
|
+
export declare function runBridgeEventBatch(options: BridgeEventBatchOptions): Promise<number>;
|
|
243
|
+
export declare function runBridgeFlush(options: BridgeFlushOptions): Promise<number>;
|
|
244
|
+
export declare function runBridgeArtifactUpload(options: BridgeArtifactUploadOptions): Promise<number>;
|
|
245
|
+
export declare function runBridgeWrapperInit(options: BridgeWrapperInitOptions): Promise<number>;
|
|
246
|
+
export declare function runBridgeWrapperDoctor(options: BridgeWrapperDoctorOptions): Promise<number>;
|
|
247
|
+
export {};
|
|
248
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"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"}
|