agent-relay 6.0.21 → 6.2.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/dist/index.cjs +360 -61
- package/dist/src/cli/bootstrap.d.ts.map +1 -1
- package/dist/src/cli/bootstrap.js +62 -0
- package/dist/src/cli/bootstrap.js.map +1 -1
- package/dist/src/cli/commands/agent-management.d.ts +9 -0
- package/dist/src/cli/commands/agent-management.d.ts.map +1 -1
- package/dist/src/cli/commands/agent-management.js +80 -6
- package/dist/src/cli/commands/agent-management.js.map +1 -1
- package/dist/src/cli/commands/core.d.ts.map +1 -1
- package/dist/src/cli/commands/core.js +2 -0
- package/dist/src/cli/commands/core.js.map +1 -1
- package/dist/src/cli/commands/drive.d.ts +222 -0
- package/dist/src/cli/commands/drive.d.ts.map +1 -0
- package/dist/src/cli/commands/drive.js +565 -0
- package/dist/src/cli/commands/drive.js.map +1 -0
- package/dist/src/cli/commands/messaging.d.ts +25 -0
- package/dist/src/cli/commands/messaging.d.ts.map +1 -1
- package/dist/src/cli/commands/messaging.js +702 -138
- package/dist/src/cli/commands/messaging.js.map +1 -1
- package/dist/src/cli/commands/new.d.ts +112 -0
- package/dist/src/cli/commands/new.d.ts.map +1 -0
- package/dist/src/cli/commands/new.js +189 -0
- package/dist/src/cli/commands/new.js.map +1 -0
- package/dist/src/cli/commands/on/provision.d.ts +1 -1
- package/dist/src/cli/commands/on/provision.d.ts.map +1 -1
- package/dist/src/cli/commands/on/provision.js +1 -1
- package/dist/src/cli/commands/on/provision.js.map +1 -1
- package/dist/src/cli/commands/on/start.d.ts +1 -1
- package/dist/src/cli/commands/on/start.d.ts.map +1 -1
- package/dist/src/cli/commands/on/start.js +2 -2
- package/dist/src/cli/commands/on/start.js.map +1 -1
- package/dist/src/cli/commands/passthrough.d.ts +142 -0
- package/dist/src/cli/commands/passthrough.d.ts.map +1 -0
- package/dist/src/cli/commands/passthrough.js +398 -0
- package/dist/src/cli/commands/passthrough.js.map +1 -0
- package/dist/src/cli/commands/rm.d.ts +52 -0
- package/dist/src/cli/commands/rm.d.ts.map +1 -0
- package/dist/src/cli/commands/rm.js +96 -0
- package/dist/src/cli/commands/rm.js.map +1 -0
- package/dist/src/cli/commands/view.d.ts +98 -0
- package/dist/src/cli/commands/view.d.ts.map +1 -0
- package/dist/src/cli/commands/view.js +238 -0
- package/dist/src/cli/commands/view.js.map +1 -0
- package/dist/src/cli/lib/agent-management-listing.d.ts +35 -7
- package/dist/src/cli/lib/agent-management-listing.d.ts.map +1 -1
- package/dist/src/cli/lib/agent-management-listing.js +188 -40
- package/dist/src/cli/lib/agent-management-listing.js.map +1 -1
- package/dist/src/cli/lib/attach.d.ts +56 -0
- package/dist/src/cli/lib/attach.d.ts.map +1 -0
- package/dist/src/cli/lib/attach.js +73 -0
- package/dist/src/cli/lib/attach.js.map +1 -0
- package/dist/src/cli/lib/broker-connection.d.ts +40 -0
- package/dist/src/cli/lib/broker-connection.d.ts.map +1 -0
- package/dist/src/cli/lib/broker-connection.js +82 -0
- package/dist/src/cli/lib/broker-connection.js.map +1 -0
- package/dist/src/cli/lib/broker-lifecycle.d.ts +2 -0
- package/dist/src/cli/lib/broker-lifecycle.d.ts.map +1 -1
- package/dist/src/cli/lib/broker-lifecycle.js +263 -69
- package/dist/src/cli/lib/broker-lifecycle.js.map +1 -1
- package/dist/src/cli/lib/formatting.d.ts +4 -0
- package/dist/src/cli/lib/formatting.d.ts.map +1 -1
- package/dist/src/cli/lib/formatting.js +31 -1
- package/dist/src/cli/lib/formatting.js.map +1 -1
- package/dist/src/cli/lib/sdk-client.d.ts +9 -0
- package/dist/src/cli/lib/sdk-client.d.ts.map +1 -0
- package/dist/src/cli/lib/sdk-client.js +28 -0
- package/dist/src/cli/lib/sdk-client.js.map +1 -0
- package/dist/src/cli/lib/spawn-and-attach.d.ts +132 -0
- package/dist/src/cli/lib/spawn-and-attach.d.ts.map +1 -0
- package/dist/src/cli/lib/spawn-and-attach.js +334 -0
- package/dist/src/cli/lib/spawn-and-attach.js.map +1 -0
- package/dist/src/cost/pricing.d.ts.map +1 -1
- package/dist/src/cost/pricing.js +5 -3
- package/dist/src/cost/pricing.js.map +1 -1
- package/package.json +12 -10
- package/dist/packages/cloud/src/api-client.d.ts +0 -33
- package/dist/packages/cloud/src/api-client.d.ts.map +0 -1
- package/dist/packages/cloud/src/api-client.js +0 -123
- package/dist/packages/cloud/src/api-client.js.map +0 -1
- package/dist/packages/cloud/src/auth.d.ts +0 -13
- package/dist/packages/cloud/src/auth.d.ts.map +0 -1
- package/dist/packages/cloud/src/auth.js +0 -299
- package/dist/packages/cloud/src/auth.js.map +0 -1
- package/dist/packages/cloud/src/connect.d.ts +0 -45
- package/dist/packages/cloud/src/connect.d.ts.map +0 -1
- package/dist/packages/cloud/src/connect.js +0 -166
- package/dist/packages/cloud/src/connect.js.map +0 -1
- package/dist/packages/cloud/src/index.d.ts +0 -10
- package/dist/packages/cloud/src/index.d.ts.map +0 -1
- package/dist/packages/cloud/src/index.js +0 -10
- package/dist/packages/cloud/src/index.js.map +0 -1
- package/dist/packages/cloud/src/lib/ssh-interactive.d.ts +0 -70
- package/dist/packages/cloud/src/lib/ssh-interactive.d.ts.map +0 -1
- package/dist/packages/cloud/src/lib/ssh-interactive.js +0 -440
- package/dist/packages/cloud/src/lib/ssh-interactive.js.map +0 -1
- package/dist/packages/cloud/src/lib/ssh-runtime.d.ts +0 -35
- package/dist/packages/cloud/src/lib/ssh-runtime.d.ts.map +0 -1
- package/dist/packages/cloud/src/lib/ssh-runtime.js +0 -52
- package/dist/packages/cloud/src/lib/ssh-runtime.js.map +0 -1
- package/dist/packages/cloud/src/proactive-runtime.d.ts +0 -24
- package/dist/packages/cloud/src/proactive-runtime.d.ts.map +0 -1
- package/dist/packages/cloud/src/proactive-runtime.js +0 -315
- package/dist/packages/cloud/src/proactive-runtime.js.map +0 -1
- package/dist/packages/cloud/src/types.d.ts +0 -200
- package/dist/packages/cloud/src/types.d.ts.map +0 -1
- package/dist/packages/cloud/src/types.js +0 -12
- package/dist/packages/cloud/src/types.js.map +0 -1
- package/dist/packages/cloud/src/workflows.d.ts +0 -65
- package/dist/packages/cloud/src/workflows.d.ts.map +0 -1
- package/dist/packages/cloud/src/workflows.js +0 -892
- package/dist/packages/cloud/src/workflows.js.map +0 -1
- package/dist/packages/cloud/src/workspaces.d.ts +0 -11
- package/dist/packages/cloud/src/workspaces.d.ts.map +0 -1
- package/dist/packages/cloud/src/workspaces.js +0 -146
- package/dist/packages/cloud/src/workspaces.js.map +0 -1
- package/dist/packages/sdk/src/provisioner/local-jwks.d.ts +0 -25
- package/dist/packages/sdk/src/provisioner/local-jwks.d.ts.map +0 -1
- package/dist/packages/sdk/src/provisioner/local-jwks.js +0 -70
- package/dist/packages/sdk/src/provisioner/local-jwks.js.map +0 -1
- package/dist/packages/sdk/src/provisioner/seeder.d.ts +0 -17
- package/dist/packages/sdk/src/provisioner/seeder.d.ts.map +0 -1
- package/dist/packages/sdk/src/provisioner/seeder.js +0 -419
- package/dist/packages/sdk/src/provisioner/seeder.js.map +0 -1
- package/dist/packages/sdk/src/provisioner/token.d.ts +0 -41
- package/dist/packages/sdk/src/provisioner/token.d.ts.map +0 -1
- package/dist/packages/sdk/src/provisioner/token.js +0 -77
- package/dist/packages/sdk/src/provisioner/token.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -18571,7 +18571,7 @@ function createWorkflowRenderer() {
|
|
|
18571
18571
|
});
|
|
18572
18572
|
workflowDone.catch(() => {
|
|
18573
18573
|
});
|
|
18574
|
-
let
|
|
18574
|
+
let setHeader2 = () => {
|
|
18575
18575
|
};
|
|
18576
18576
|
let listr = null;
|
|
18577
18577
|
const pendingAdds = [];
|
|
@@ -18583,7 +18583,7 @@ function createWorkflowRenderer() {
|
|
|
18583
18583
|
{
|
|
18584
18584
|
title: import_chalk3.default.dim("Workflow starting..."),
|
|
18585
18585
|
task: async (_ctx, task) => {
|
|
18586
|
-
|
|
18586
|
+
setHeader2 = (text) => {
|
|
18587
18587
|
task.title = text;
|
|
18588
18588
|
};
|
|
18589
18589
|
await workflowDone;
|
|
@@ -18611,7 +18611,7 @@ function createWorkflowRenderer() {
|
|
|
18611
18611
|
const onEvent = (event) => {
|
|
18612
18612
|
switch (event.type) {
|
|
18613
18613
|
case "run:started": {
|
|
18614
|
-
|
|
18614
|
+
setHeader2(import_chalk3.default.dim(`[workflow] run ${event.runId.slice(0, 8)}...`));
|
|
18615
18615
|
break;
|
|
18616
18616
|
}
|
|
18617
18617
|
case "step:started": {
|
|
@@ -18709,17 +18709,17 @@ function createWorkflowRenderer() {
|
|
|
18709
18709
|
break;
|
|
18710
18710
|
}
|
|
18711
18711
|
case "run:completed": {
|
|
18712
|
-
|
|
18712
|
+
setHeader2(import_chalk3.default.green("Workflow completed"));
|
|
18713
18713
|
resolveWorkflow();
|
|
18714
18714
|
break;
|
|
18715
18715
|
}
|
|
18716
18716
|
case "run:failed": {
|
|
18717
|
-
|
|
18717
|
+
setHeader2(import_chalk3.default.red(`Workflow failed: ${event.error ?? "unknown error"}`));
|
|
18718
18718
|
rejectWorkflow(new Error(event.error ?? "Workflow failed"));
|
|
18719
18719
|
break;
|
|
18720
18720
|
}
|
|
18721
18721
|
case "run:cancelled": {
|
|
18722
|
-
|
|
18722
|
+
setHeader2(import_chalk3.default.yellow("Workflow cancelled"));
|
|
18723
18723
|
resolveWorkflow();
|
|
18724
18724
|
break;
|
|
18725
18725
|
}
|
|
@@ -19866,7 +19866,7 @@ async function parseJsonResponse(response) {
|
|
|
19866
19866
|
{
|
|
19867
19867
|
status: response.status,
|
|
19868
19868
|
responseBody: text,
|
|
19869
|
-
responseHeaders:
|
|
19869
|
+
responseHeaders: headersToRecord2(response.headers)
|
|
19870
19870
|
}
|
|
19871
19871
|
);
|
|
19872
19872
|
}
|
|
@@ -19881,7 +19881,7 @@ async function parseJsonResponse(response) {
|
|
|
19881
19881
|
{
|
|
19882
19882
|
status: response.status,
|
|
19883
19883
|
responseBody: text,
|
|
19884
|
-
responseHeaders:
|
|
19884
|
+
responseHeaders: headersToRecord2(response.headers),
|
|
19885
19885
|
cause: error51
|
|
19886
19886
|
}
|
|
19887
19887
|
);
|
|
@@ -19898,7 +19898,7 @@ function joinUrl(baseUrl, path28) {
|
|
|
19898
19898
|
function stripLeadingSlash(value) {
|
|
19899
19899
|
return value.replace(/^\/+/, "");
|
|
19900
19900
|
}
|
|
19901
|
-
function
|
|
19901
|
+
function headersToRecord2(headers) {
|
|
19902
19902
|
const record2 = {};
|
|
19903
19903
|
headers.forEach((value, key) => {
|
|
19904
19904
|
record2[key] = value;
|
|
@@ -21052,7 +21052,7 @@ var require_package = __commonJS({
|
|
|
21052
21052
|
"node_modules/@slack/web-api/package.json"(exports2, module2) {
|
|
21053
21053
|
module2.exports = {
|
|
21054
21054
|
name: "@slack/web-api",
|
|
21055
|
-
version: "7.
|
|
21055
|
+
version: "7.16.0",
|
|
21056
21056
|
description: "Official library for using the Slack Platform's Web API",
|
|
21057
21057
|
author: "Slack Technologies, LLC",
|
|
21058
21058
|
license: "MIT",
|
|
@@ -21104,7 +21104,7 @@ var require_package = __commonJS({
|
|
|
21104
21104
|
"@slack/types": "^2.21.0",
|
|
21105
21105
|
"@types/node": ">=18",
|
|
21106
21106
|
"@types/retry": "0.12.0",
|
|
21107
|
-
axios: "^1.
|
|
21107
|
+
axios: "^1.16.0",
|
|
21108
21108
|
eventemitter3: "^5.0.1",
|
|
21109
21109
|
"form-data": "^4.0.4",
|
|
21110
21110
|
"is-electron": "2.2.2",
|
|
@@ -34027,7 +34027,7 @@ var require_axios = __commonJS({
|
|
|
34027
34027
|
}
|
|
34028
34028
|
set(header, valueOrRewrite, rewrite) {
|
|
34029
34029
|
const self2 = this;
|
|
34030
|
-
function
|
|
34030
|
+
function setHeader2(_value, _header, _rewrite) {
|
|
34031
34031
|
const lHeader = normalizeHeader(_header);
|
|
34032
34032
|
if (!lHeader) {
|
|
34033
34033
|
throw new Error("header name must be a non-empty string");
|
|
@@ -34037,7 +34037,7 @@ var require_axios = __commonJS({
|
|
|
34037
34037
|
self2[key || _header] = normalizeValue(_value);
|
|
34038
34038
|
}
|
|
34039
34039
|
}
|
|
34040
|
-
const setHeaders = (headers, _rewrite) => utils$1.forEach(headers, (_value, _header) =>
|
|
34040
|
+
const setHeaders = (headers, _rewrite) => utils$1.forEach(headers, (_value, _header) => setHeader2(_value, _header, _rewrite));
|
|
34041
34041
|
if (utils$1.isPlainObject(header) || header instanceof this.constructor) {
|
|
34042
34042
|
setHeaders(header, valueOrRewrite);
|
|
34043
34043
|
} else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
|
|
@@ -34052,7 +34052,7 @@ var require_axios = __commonJS({
|
|
|
34052
34052
|
}
|
|
34053
34053
|
setHeaders(obj, valueOrRewrite);
|
|
34054
34054
|
} else {
|
|
34055
|
-
header != null &&
|
|
34055
|
+
header != null && setHeader2(valueOrRewrite, header, rewrite);
|
|
34056
34056
|
}
|
|
34057
34057
|
return this;
|
|
34058
34058
|
}
|
|
@@ -38514,6 +38514,7 @@ var require_file_upload = __commonJS({
|
|
|
38514
38514
|
blocks: options.blocks,
|
|
38515
38515
|
channel_id: (_a3 = options.channels) !== null && _a3 !== void 0 ? _a3 : options.channel_id,
|
|
38516
38516
|
filename: (_b = options.filename) !== null && _b !== void 0 ? _b : fileName,
|
|
38517
|
+
highlight_type: options.highlight_type,
|
|
38517
38518
|
initial_comment: options.initial_comment,
|
|
38518
38519
|
snippet_type: options.snippet_type,
|
|
38519
38520
|
title: (_d = (_c = options.title) !== null && _c !== void 0 ? _c : options.filename) !== null && _d !== void 0 ? _d : fileName,
|
|
@@ -38612,12 +38613,12 @@ var require_file_upload = __commonJS({
|
|
|
38612
38613
|
function getAllFileUploadsToComplete(fileUploads) {
|
|
38613
38614
|
const toComplete = {};
|
|
38614
38615
|
for (const upload of fileUploads) {
|
|
38615
|
-
const { blocks, channel_id, thread_ts, initial_comment, file_id, title } = upload;
|
|
38616
|
+
const { blocks, channel_id, thread_ts, highlight_type, initial_comment, file_id, title } = upload;
|
|
38616
38617
|
if (file_id) {
|
|
38617
38618
|
const compareString = `:::${channel_id}:::${thread_ts}:::${initial_comment}:::${JSON.stringify(blocks)}`;
|
|
38618
38619
|
if (!Object.prototype.hasOwnProperty.call(toComplete, compareString)) {
|
|
38619
38620
|
toComplete[compareString] = {
|
|
38620
|
-
files: [{ id: file_id, title }],
|
|
38621
|
+
files: [{ id: file_id, title, highlight_type }],
|
|
38621
38622
|
channel_id,
|
|
38622
38623
|
blocks,
|
|
38623
38624
|
initial_comment
|
|
@@ -38635,7 +38636,8 @@ var require_file_upload = __commonJS({
|
|
|
38635
38636
|
} else {
|
|
38636
38637
|
toComplete[compareString].files.push({
|
|
38637
38638
|
id: file_id,
|
|
38638
|
-
title
|
|
38639
|
+
title,
|
|
38640
|
+
highlight_type
|
|
38639
38641
|
});
|
|
38640
38642
|
}
|
|
38641
38643
|
} else {
|
|
@@ -43730,18 +43732,21 @@ var wrapper_default = import_websocket.default;
|
|
|
43730
43732
|
var AgentRelayProtocolError = class extends Error {
|
|
43731
43733
|
code;
|
|
43732
43734
|
retryable;
|
|
43735
|
+
status;
|
|
43733
43736
|
data;
|
|
43734
43737
|
constructor(payload) {
|
|
43735
43738
|
super(payload.message);
|
|
43736
43739
|
this.name = "AgentRelayProtocolError";
|
|
43737
43740
|
this.code = payload.code;
|
|
43738
43741
|
this.retryable = payload.retryable ?? false;
|
|
43742
|
+
this.status = payload.status;
|
|
43739
43743
|
this.data = payload.data;
|
|
43740
43744
|
}
|
|
43741
43745
|
};
|
|
43742
43746
|
var BrokerTransport = class {
|
|
43743
43747
|
baseUrl;
|
|
43744
43748
|
apiKey;
|
|
43749
|
+
fetchFn;
|
|
43745
43750
|
requestTimeoutMs;
|
|
43746
43751
|
maxBufferSize;
|
|
43747
43752
|
ws = null;
|
|
@@ -43754,6 +43759,7 @@ var BrokerTransport = class {
|
|
|
43754
43759
|
constructor(options) {
|
|
43755
43760
|
this.baseUrl = options.baseUrl.replace(/\/$/, "");
|
|
43756
43761
|
this.apiKey = options.apiKey;
|
|
43762
|
+
this.fetchFn = options.fetch ?? fetch;
|
|
43757
43763
|
this.requestTimeoutMs = options.requestTimeoutMs ?? 3e4;
|
|
43758
43764
|
this.maxBufferSize = options.maxBufferSize ?? 1e3;
|
|
43759
43765
|
}
|
|
@@ -43765,15 +43771,15 @@ var BrokerTransport = class {
|
|
|
43765
43771
|
}
|
|
43766
43772
|
// ── HTTP ─────────────────────────────────────────────────────────────
|
|
43767
43773
|
async request(path28, init) {
|
|
43768
|
-
const headers =
|
|
43769
|
-
if (!headers
|
|
43770
|
-
headers
|
|
43774
|
+
const headers = headersToRecord(init?.headers);
|
|
43775
|
+
if (init?.body !== void 0 && !hasHeader(headers, "Content-Type")) {
|
|
43776
|
+
headers["Content-Type"] = "application/json";
|
|
43771
43777
|
}
|
|
43772
43778
|
if (this.apiKey) {
|
|
43773
|
-
headers
|
|
43779
|
+
setHeader(headers, "X-API-Key", this.apiKey);
|
|
43774
43780
|
}
|
|
43775
43781
|
const signal = init?.signal ?? AbortSignal.timeout(this.requestTimeoutMs);
|
|
43776
|
-
const res = await
|
|
43782
|
+
const res = await this.fetchFn(`${this.baseUrl}${path28}`, { ...init, headers, signal });
|
|
43777
43783
|
if (!res.ok) {
|
|
43778
43784
|
let body;
|
|
43779
43785
|
try {
|
|
@@ -43782,11 +43788,29 @@ var BrokerTransport = class {
|
|
|
43782
43788
|
}
|
|
43783
43789
|
throw new AgentRelayProtocolError({
|
|
43784
43790
|
code: body?.code ?? `http_${res.status}`,
|
|
43785
|
-
message: body?.message ?? body?.error ?? res.statusText
|
|
43786
|
-
retryable: res.status >= 500
|
|
43791
|
+
message: (body?.message ?? body?.error ?? res.statusText) || `HTTP ${res.status}`,
|
|
43792
|
+
retryable: res.status >= 500,
|
|
43793
|
+
status: res.status,
|
|
43794
|
+
data: body
|
|
43795
|
+
});
|
|
43796
|
+
}
|
|
43797
|
+
if (isEmptySuccessResponse(res)) {
|
|
43798
|
+
return void 0;
|
|
43799
|
+
}
|
|
43800
|
+
const bodyText = await res.text();
|
|
43801
|
+
if (bodyText.length === 0) {
|
|
43802
|
+
return void 0;
|
|
43803
|
+
}
|
|
43804
|
+
try {
|
|
43805
|
+
return JSON.parse(bodyText);
|
|
43806
|
+
} catch {
|
|
43807
|
+
throw new AgentRelayProtocolError({
|
|
43808
|
+
code: "invalid_response",
|
|
43809
|
+
message: "response was not JSON",
|
|
43810
|
+
retryable: false,
|
|
43811
|
+
status: res.status
|
|
43787
43812
|
});
|
|
43788
43813
|
}
|
|
43789
|
-
return res.json();
|
|
43790
43814
|
}
|
|
43791
43815
|
// ── WebSocket events ─────────────────────────────────────────────────
|
|
43792
43816
|
connect(sinceSeq) {
|
|
@@ -43888,6 +43912,46 @@ var BrokerTransport = class {
|
|
|
43888
43912
|
return void 0;
|
|
43889
43913
|
}
|
|
43890
43914
|
};
|
|
43915
|
+
function headersToRecord(headersInit) {
|
|
43916
|
+
const headers = {};
|
|
43917
|
+
if (!headersInit)
|
|
43918
|
+
return headers;
|
|
43919
|
+
if (headersInit instanceof Headers) {
|
|
43920
|
+
headersInit.forEach((value, key) => {
|
|
43921
|
+
headers[key] = value;
|
|
43922
|
+
});
|
|
43923
|
+
return headers;
|
|
43924
|
+
}
|
|
43925
|
+
if (Array.isArray(headersInit)) {
|
|
43926
|
+
for (const [key, value] of headersInit) {
|
|
43927
|
+
headers[key] = value;
|
|
43928
|
+
}
|
|
43929
|
+
return headers;
|
|
43930
|
+
}
|
|
43931
|
+
for (const [key, value] of Object.entries(headersInit)) {
|
|
43932
|
+
headers[key] = value;
|
|
43933
|
+
}
|
|
43934
|
+
return headers;
|
|
43935
|
+
}
|
|
43936
|
+
function hasHeader(headers, name) {
|
|
43937
|
+
const lowerName = name.toLowerCase();
|
|
43938
|
+
return Object.keys(headers).some((key) => key.toLowerCase() === lowerName);
|
|
43939
|
+
}
|
|
43940
|
+
function setHeader(headers, name, value) {
|
|
43941
|
+
const lowerName = name.toLowerCase();
|
|
43942
|
+
for (const key of Object.keys(headers)) {
|
|
43943
|
+
if (key.toLowerCase() === lowerName && key !== name) {
|
|
43944
|
+
delete headers[key];
|
|
43945
|
+
}
|
|
43946
|
+
}
|
|
43947
|
+
headers[name] = value;
|
|
43948
|
+
}
|
|
43949
|
+
function isEmptySuccessResponse(res) {
|
|
43950
|
+
if (res.status === 204 || res.status === 205) {
|
|
43951
|
+
return true;
|
|
43952
|
+
}
|
|
43953
|
+
return res.headers.get("content-length")?.trim() === "0";
|
|
43954
|
+
}
|
|
43891
43955
|
|
|
43892
43956
|
// packages/sdk/dist/client.js
|
|
43893
43957
|
var import_node_child_process2 = require("node:child_process");
|
|
@@ -44151,6 +44215,7 @@ var AgentRelayClient = class _AgentRelayClient {
|
|
|
44151
44215
|
this.transport = new BrokerTransport({
|
|
44152
44216
|
baseUrl: options.baseUrl,
|
|
44153
44217
|
apiKey: options.apiKey,
|
|
44218
|
+
fetch: options.fetch,
|
|
44154
44219
|
requestTimeoutMs: options.requestTimeoutMs
|
|
44155
44220
|
});
|
|
44156
44221
|
}
|
|
@@ -44316,19 +44381,19 @@ var AgentRelayClient = class _AgentRelayClient {
|
|
|
44316
44381
|
body: JSON.stringify({
|
|
44317
44382
|
name: input.name,
|
|
44318
44383
|
cli: input.cli,
|
|
44319
|
-
model: input.model,
|
|
44384
|
+
...input.model !== void 0 ? { model: input.model } : {},
|
|
44320
44385
|
args: input.args ?? [],
|
|
44321
|
-
task: input.task,
|
|
44386
|
+
...input.task !== void 0 ? { task: input.task } : {},
|
|
44322
44387
|
channels: input.channels ?? [],
|
|
44323
|
-
cwd: input.cwd,
|
|
44324
|
-
team: input.team,
|
|
44325
|
-
agentToken: input.agentToken,
|
|
44326
|
-
shadowOf: input.shadowOf,
|
|
44327
|
-
shadowMode: input.shadowMode,
|
|
44328
|
-
continueFrom: input.continueFrom,
|
|
44329
|
-
idleThresholdSecs: input.idleThresholdSecs,
|
|
44330
|
-
restartPolicy: input.restartPolicy,
|
|
44331
|
-
skipRelayPrompt: input.skipRelayPrompt
|
|
44388
|
+
...input.cwd !== void 0 ? { cwd: input.cwd } : {},
|
|
44389
|
+
...input.team !== void 0 ? { team: input.team } : {},
|
|
44390
|
+
...input.agentToken !== void 0 ? { agentToken: input.agentToken } : {},
|
|
44391
|
+
...input.shadowOf !== void 0 ? { shadowOf: input.shadowOf } : {},
|
|
44392
|
+
...input.shadowMode !== void 0 ? { shadowMode: input.shadowMode } : {},
|
|
44393
|
+
...input.continueFrom !== void 0 ? { continueFrom: input.continueFrom } : {},
|
|
44394
|
+
...input.idleThresholdSecs !== void 0 ? { idleThresholdSecs: input.idleThresholdSecs } : {},
|
|
44395
|
+
...input.restartPolicy !== void 0 ? { restartPolicy: input.restartPolicy } : {},
|
|
44396
|
+
...input.skipRelayPrompt !== void 0 ? { skipRelayPrompt: input.skipRelayPrompt } : {}
|
|
44332
44397
|
})
|
|
44333
44398
|
});
|
|
44334
44399
|
}
|
|
@@ -44342,19 +44407,19 @@ var AgentRelayClient = class _AgentRelayClient {
|
|
|
44342
44407
|
body: JSON.stringify({
|
|
44343
44408
|
name: input.name,
|
|
44344
44409
|
cli: input.provider,
|
|
44345
|
-
model: input.model,
|
|
44410
|
+
...input.model !== void 0 ? { model: input.model } : {},
|
|
44346
44411
|
args: input.args ?? [],
|
|
44347
|
-
task: input.task,
|
|
44412
|
+
...input.task !== void 0 ? { task: input.task } : {},
|
|
44348
44413
|
channels: input.channels ?? [],
|
|
44349
|
-
cwd: input.cwd,
|
|
44350
|
-
team: input.team,
|
|
44351
|
-
agentToken: input.agentToken,
|
|
44352
|
-
shadowOf: input.shadowOf,
|
|
44353
|
-
shadowMode: input.shadowMode,
|
|
44354
|
-
continueFrom: input.continueFrom,
|
|
44355
|
-
idleThresholdSecs: input.idleThresholdSecs,
|
|
44356
|
-
restartPolicy: input.restartPolicy,
|
|
44357
|
-
skipRelayPrompt: input.skipRelayPrompt,
|
|
44414
|
+
...input.cwd !== void 0 ? { cwd: input.cwd } : {},
|
|
44415
|
+
...input.team !== void 0 ? { team: input.team } : {},
|
|
44416
|
+
...input.agentToken !== void 0 ? { agentToken: input.agentToken } : {},
|
|
44417
|
+
...input.shadowOf !== void 0 ? { shadowOf: input.shadowOf } : {},
|
|
44418
|
+
...input.shadowMode !== void 0 ? { shadowMode: input.shadowMode } : {},
|
|
44419
|
+
...input.continueFrom !== void 0 ? { continueFrom: input.continueFrom } : {},
|
|
44420
|
+
...input.idleThresholdSecs !== void 0 ? { idleThresholdSecs: input.idleThresholdSecs } : {},
|
|
44421
|
+
...input.restartPolicy !== void 0 ? { restartPolicy: input.restartPolicy } : {},
|
|
44422
|
+
...input.skipRelayPrompt !== void 0 ? { skipRelayPrompt: input.skipRelayPrompt } : {},
|
|
44358
44423
|
transport
|
|
44359
44424
|
})
|
|
44360
44425
|
});
|
|
@@ -44391,6 +44456,104 @@ var AgentRelayClient = class _AgentRelayClient {
|
|
|
44391
44456
|
body: JSON.stringify({ rows, cols })
|
|
44392
44457
|
});
|
|
44393
44458
|
}
|
|
44459
|
+
async getInboundDeliveryMode(name) {
|
|
44460
|
+
const result = await this.transport.request(`/api/spawned/${encodeURIComponent(name)}/delivery-mode`);
|
|
44461
|
+
if (result.mode !== "auto_inject" && result.mode !== "manual_flush") {
|
|
44462
|
+
throw new AgentRelayProtocolError({
|
|
44463
|
+
code: "invalid_response",
|
|
44464
|
+
message: "inbound delivery mode response missing valid 'mode'"
|
|
44465
|
+
});
|
|
44466
|
+
}
|
|
44467
|
+
return result.mode;
|
|
44468
|
+
}
|
|
44469
|
+
async setInboundDeliveryMode(name, mode) {
|
|
44470
|
+
const result = await this.transport.request(`/api/spawned/${encodeURIComponent(name)}/delivery-mode`, {
|
|
44471
|
+
method: "PUT",
|
|
44472
|
+
body: JSON.stringify({ mode })
|
|
44473
|
+
});
|
|
44474
|
+
if (result.mode !== "auto_inject" && result.mode !== "manual_flush") {
|
|
44475
|
+
throw new AgentRelayProtocolError({
|
|
44476
|
+
code: "invalid_response",
|
|
44477
|
+
message: "set inbound delivery mode response missing valid 'mode'"
|
|
44478
|
+
});
|
|
44479
|
+
}
|
|
44480
|
+
return {
|
|
44481
|
+
mode: result.mode,
|
|
44482
|
+
flushed: typeof result.flushed === "number" ? result.flushed : 0
|
|
44483
|
+
};
|
|
44484
|
+
}
|
|
44485
|
+
async getPending(name) {
|
|
44486
|
+
const result = await this.transport.request(`/api/spawned/${encodeURIComponent(name)}/pending`);
|
|
44487
|
+
return Array.isArray(result.pending) ? result.pending : [];
|
|
44488
|
+
}
|
|
44489
|
+
async flushPending(name) {
|
|
44490
|
+
const result = await this.transport.request(`/api/spawned/${encodeURIComponent(name)}/flush`, { method: "POST" });
|
|
44491
|
+
return { flushed: typeof result.flushed === "number" ? result.flushed : 0 };
|
|
44492
|
+
}
|
|
44493
|
+
async snapshot(name, format2 = "plain") {
|
|
44494
|
+
return this.transport.request(`/api/spawned/${encodeURIComponent(name)}/snapshot?format=${encodeURIComponent(format2)}`);
|
|
44495
|
+
}
|
|
44496
|
+
subscribeWorkerStream(name, options = {}) {
|
|
44497
|
+
this.connectEvents(options.sinceSeq);
|
|
44498
|
+
return {
|
|
44499
|
+
[Symbol.asyncIterator]: () => {
|
|
44500
|
+
const queue = [];
|
|
44501
|
+
let pending;
|
|
44502
|
+
let done = false;
|
|
44503
|
+
const unsubscribe = this.onEvent((event) => {
|
|
44504
|
+
if (event.kind !== "worker_stream" || event.name !== name || options.stream !== void 0 && event.stream !== options.stream) {
|
|
44505
|
+
return;
|
|
44506
|
+
}
|
|
44507
|
+
if (pending) {
|
|
44508
|
+
const { resolve: resolve4 } = pending;
|
|
44509
|
+
pending = void 0;
|
|
44510
|
+
resolve4({ done: false, value: event.chunk });
|
|
44511
|
+
return;
|
|
44512
|
+
}
|
|
44513
|
+
queue.push(event.chunk);
|
|
44514
|
+
});
|
|
44515
|
+
const close = () => {
|
|
44516
|
+
done = true;
|
|
44517
|
+
unsubscribe();
|
|
44518
|
+
if (pending) {
|
|
44519
|
+
const { resolve: resolve4 } = pending;
|
|
44520
|
+
pending = void 0;
|
|
44521
|
+
resolve4({ done: true, value: void 0 });
|
|
44522
|
+
}
|
|
44523
|
+
return { done: true, value: void 0 };
|
|
44524
|
+
};
|
|
44525
|
+
return {
|
|
44526
|
+
next() {
|
|
44527
|
+
if (queue.length > 0) {
|
|
44528
|
+
return Promise.resolve({ done: false, value: queue.shift() });
|
|
44529
|
+
}
|
|
44530
|
+
if (done) {
|
|
44531
|
+
return Promise.resolve({ done: true, value: void 0 });
|
|
44532
|
+
}
|
|
44533
|
+
return new Promise((resolve4, reject) => {
|
|
44534
|
+
pending = { resolve: resolve4, reject };
|
|
44535
|
+
});
|
|
44536
|
+
},
|
|
44537
|
+
return() {
|
|
44538
|
+
return Promise.resolve(close());
|
|
44539
|
+
},
|
|
44540
|
+
throw(error51) {
|
|
44541
|
+
done = true;
|
|
44542
|
+
unsubscribe();
|
|
44543
|
+
if (pending) {
|
|
44544
|
+
const { reject } = pending;
|
|
44545
|
+
pending = void 0;
|
|
44546
|
+
reject(error51);
|
|
44547
|
+
}
|
|
44548
|
+
return Promise.reject(error51);
|
|
44549
|
+
},
|
|
44550
|
+
[Symbol.asyncIterator]() {
|
|
44551
|
+
return this;
|
|
44552
|
+
}
|
|
44553
|
+
};
|
|
44554
|
+
}
|
|
44555
|
+
};
|
|
44556
|
+
}
|
|
44394
44557
|
// ── Messaging ──────────────────────────────────────────────────────
|
|
44395
44558
|
async sendMessage(input) {
|
|
44396
44559
|
try {
|
|
@@ -50126,8 +50289,8 @@ var jsonSchemas = {
|
|
|
50126
50289
|
var CLIVersions = {
|
|
50127
50290
|
/** Claude Code v2.1.72 */
|
|
50128
50291
|
CLAUDE: "2.1.72",
|
|
50129
|
-
/** Codex CLI v0.
|
|
50130
|
-
CODEX: "0.
|
|
50292
|
+
/** Codex CLI v0.130.0 */
|
|
50293
|
+
CODEX: "0.130.0",
|
|
50131
50294
|
/** Gemini CLI v0.39.1 */
|
|
50132
50295
|
GEMINI: "0.39.1",
|
|
50133
50296
|
/** Cursor v2026.02.27-e7d2ef6 */
|
|
@@ -50160,7 +50323,9 @@ var ClaudeModels = {
|
|
|
50160
50323
|
HAIKU: "haiku"
|
|
50161
50324
|
};
|
|
50162
50325
|
var CodexModels = {
|
|
50163
|
-
/** GPT-5.
|
|
50326
|
+
/** GPT-5.5 — Frontier model for complex coding, research, and real-world work. (default) */
|
|
50327
|
+
GPT_5_5: "gpt-5.5",
|
|
50328
|
+
/** GPT-5.4 — More affordable model for complex coding and professional work. */
|
|
50164
50329
|
GPT_5_4: "gpt-5.4",
|
|
50165
50330
|
/** GPT-5.3 Codex — Frontier agentic coding model */
|
|
50166
50331
|
GPT_5_3_CODEX: "gpt-5.3-codex",
|
|
@@ -50464,6 +50629,8 @@ var OpencodeModels = {
|
|
|
50464
50629
|
OPENAI_GPT_5_4: "openai/gpt-5.4",
|
|
50465
50630
|
/** GPT-5.4 Pro */
|
|
50466
50631
|
OPENAI_GPT_5_4_PRO: "openai/gpt-5.4-pro",
|
|
50632
|
+
/** GPT-5.5 */
|
|
50633
|
+
OPENAI_GPT_5_5: "openai/gpt-5.5",
|
|
50467
50634
|
/** O1 */
|
|
50468
50635
|
OPENAI_O1: "openai/o1",
|
|
50469
50636
|
/** O1 Mini */
|
|
@@ -50497,7 +50664,8 @@ var CLAUDE_MODEL_OPTIONS = [
|
|
|
50497
50664
|
{ value: "haiku", label: "Haiku" }
|
|
50498
50665
|
];
|
|
50499
50666
|
var CODEX_MODEL_OPTIONS = [
|
|
50500
|
-
{ value: "gpt-5.
|
|
50667
|
+
{ value: "gpt-5.5", label: "GPT-5.5 \u2014 Frontier model for complex coding, research, and real-world work.", reasoningEfforts: ["low", "medium", "high", "xhigh"], defaultReasoningEffort: "medium" },
|
|
50668
|
+
{ value: "gpt-5.4", label: "GPT-5.4 \u2014 More affordable model for complex coding and professional work.", reasoningEfforts: ["low", "medium", "high", "xhigh"], defaultReasoningEffort: "xhigh" },
|
|
50501
50669
|
{ value: "gpt-5.3-codex", label: "GPT-5.3 Codex \u2014 Frontier agentic coding model", reasoningEfforts: ["low", "medium", "high", "xhigh"], defaultReasoningEffort: "xhigh" },
|
|
50502
50670
|
{ value: "gpt-5.3-codex-spark", label: "GPT-5.3 Codex Spark \u2014 Ultra-fast coding model", reasoningEfforts: ["low", "medium", "high", "xhigh"], defaultReasoningEffort: "xhigh" },
|
|
50503
50671
|
{ value: "gpt-5.2-codex", label: "GPT-5.2 Codex \u2014 Frontier agentic coding model", reasoningEfforts: ["low", "medium", "high", "xhigh"], defaultReasoningEffort: "xhigh" },
|
|
@@ -50653,6 +50821,7 @@ var OPENCODE_MODEL_OPTIONS = [
|
|
|
50653
50821
|
{ value: "openai/gpt-5.3-codex-spark", label: "GPT-5.3 Codex Spark" },
|
|
50654
50822
|
{ value: "openai/gpt-5.4", label: "GPT-5.4" },
|
|
50655
50823
|
{ value: "openai/gpt-5.4-pro", label: "GPT-5.4 Pro" },
|
|
50824
|
+
{ value: "openai/gpt-5.5", label: "GPT-5.5" },
|
|
50656
50825
|
{ value: "openai/o1", label: "O1" },
|
|
50657
50826
|
{ value: "openai/o1-mini", label: "O1 Mini" },
|
|
50658
50827
|
{ value: "openai/o1-preview", label: "O1 Preview" },
|
|
@@ -50670,7 +50839,8 @@ var CLAUDE_MODEL_METADATA = {
|
|
|
50670
50839
|
"haiku": { value: "haiku", label: "Haiku" }
|
|
50671
50840
|
};
|
|
50672
50841
|
var CODEX_MODEL_METADATA = {
|
|
50673
|
-
"gpt-5.
|
|
50842
|
+
"gpt-5.5": { value: "gpt-5.5", label: "GPT-5.5 \u2014 Frontier model for complex coding, research, and real-world work.", reasoningEfforts: ["low", "medium", "high", "xhigh"], defaultReasoningEffort: "medium" },
|
|
50843
|
+
"gpt-5.4": { value: "gpt-5.4", label: "GPT-5.4 \u2014 More affordable model for complex coding and professional work.", reasoningEfforts: ["low", "medium", "high", "xhigh"], defaultReasoningEffort: "xhigh" },
|
|
50674
50844
|
"gpt-5.3-codex": { value: "gpt-5.3-codex", label: "GPT-5.3 Codex \u2014 Frontier agentic coding model", reasoningEfforts: ["low", "medium", "high", "xhigh"], defaultReasoningEffort: "xhigh" },
|
|
50675
50845
|
"gpt-5.3-codex-spark": { value: "gpt-5.3-codex-spark", label: "GPT-5.3 Codex Spark \u2014 Ultra-fast coding model", reasoningEfforts: ["low", "medium", "high", "xhigh"], defaultReasoningEffort: "xhigh" },
|
|
50676
50846
|
"gpt-5.2-codex": { value: "gpt-5.2-codex", label: "GPT-5.2 Codex \u2014 Frontier agentic coding model", reasoningEfforts: ["low", "medium", "high", "xhigh"], defaultReasoningEffort: "xhigh" },
|
|
@@ -50826,6 +50996,7 @@ var OPENCODE_MODEL_METADATA = {
|
|
|
50826
50996
|
"openai/gpt-5.3-codex-spark": { value: "openai/gpt-5.3-codex-spark", label: "GPT-5.3 Codex Spark" },
|
|
50827
50997
|
"openai/gpt-5.4": { value: "openai/gpt-5.4", label: "GPT-5.4" },
|
|
50828
50998
|
"openai/gpt-5.4-pro": { value: "openai/gpt-5.4-pro", label: "GPT-5.4 Pro" },
|
|
50999
|
+
"openai/gpt-5.5": { value: "openai/gpt-5.5", label: "GPT-5.5" },
|
|
50829
51000
|
"openai/o1": { value: "openai/o1", label: "O1" },
|
|
50830
51001
|
"openai/o1-mini": { value: "openai/o1-mini", label: "O1 Mini" },
|
|
50831
51002
|
"openai/o1-preview": { value: "openai/o1-preview", label: "O1 Preview" },
|
|
@@ -50913,7 +51084,7 @@ var CLIRegistry = {
|
|
|
50913
51084
|
codex: {
|
|
50914
51085
|
name: "Codex CLI",
|
|
50915
51086
|
package: "@openai/codex",
|
|
50916
|
-
version: "0.
|
|
51087
|
+
version: "0.130.0",
|
|
50917
51088
|
install: "npm install -g @openai/codex",
|
|
50918
51089
|
npmLink: "https://www.npmjs.com/package/@openai/codex"
|
|
50919
51090
|
},
|
|
@@ -50962,7 +51133,7 @@ var CLIRegistry = {
|
|
|
50962
51133
|
};
|
|
50963
51134
|
var DefaultModels = {
|
|
50964
51135
|
claude: "sonnet",
|
|
50965
|
-
codex: "gpt-5.
|
|
51136
|
+
codex: "gpt-5.5",
|
|
50966
51137
|
gemini: "gemini-3.1-pro-preview",
|
|
50967
51138
|
cursor: "composer-2-fast",
|
|
50968
51139
|
droid: "opus-4.6-fast",
|
|
@@ -90232,12 +90403,22 @@ function ensureLocalSdkWorkflowRuntime(startDir, execRunner = import_node_child_
|
|
|
90232
90403
|
const workflowsEntry = import_node_path36.default.join(workspace.sdkDir, "dist", "workflows", "index.js");
|
|
90233
90404
|
if (import_node_fs24.default.existsSync(workflowsEntry))
|
|
90234
90405
|
return;
|
|
90235
|
-
console.log("[agent-relay] Detected local @agent-relay/sdk workspace without built workflows runtime; building
|
|
90236
|
-
|
|
90237
|
-
|
|
90238
|
-
|
|
90239
|
-
|
|
90240
|
-
|
|
90406
|
+
console.log("[agent-relay] Detected local @agent-relay/sdk workspace without built workflows runtime; building SDK workflow dependencies...");
|
|
90407
|
+
const buildCommands = [
|
|
90408
|
+
["run", "build:config"],
|
|
90409
|
+
["--prefix", "packages/workflow-types", "run", "build"],
|
|
90410
|
+
["--prefix", "packages/github-primitive", "run", "build"],
|
|
90411
|
+
["--prefix", "packages/slack-primitive", "run", "build"],
|
|
90412
|
+
["--prefix", "packages/cloud", "run", "build"],
|
|
90413
|
+
["run", "build:sdk"]
|
|
90414
|
+
];
|
|
90415
|
+
for (const args of buildCommands) {
|
|
90416
|
+
execRunner("npm", args, {
|
|
90417
|
+
cwd: workspace.rootDir,
|
|
90418
|
+
stdio: "inherit",
|
|
90419
|
+
env: process.env
|
|
90420
|
+
});
|
|
90421
|
+
}
|
|
90241
90422
|
if (!import_node_fs24.default.existsSync(workflowsEntry)) {
|
|
90242
90423
|
throw new Error(`Local SDK workflows runtime is still missing after build: ${workflowsEntry}`);
|
|
90243
90424
|
}
|
|
@@ -90278,6 +90459,120 @@ function parseTsxStderr(stderr) {
|
|
|
90278
90459
|
}
|
|
90279
90460
|
return null;
|
|
90280
90461
|
}
|
|
90462
|
+
function resolveLocalTypeScriptImport(fromFile, specifier) {
|
|
90463
|
+
if (!specifier.startsWith(".") && !specifier.startsWith("/")) {
|
|
90464
|
+
return null;
|
|
90465
|
+
}
|
|
90466
|
+
const basePath = specifier.startsWith("/") ? import_node_path36.default.resolve(specifier) : import_node_path36.default.resolve(import_node_path36.default.dirname(fromFile), specifier);
|
|
90467
|
+
const ext = import_node_path36.default.extname(basePath);
|
|
90468
|
+
const candidates = ext === ".js" || ext === ".mjs" || ext === ".cjs" ? [
|
|
90469
|
+
`${basePath.slice(0, -ext.length)}.ts`,
|
|
90470
|
+
`${basePath.slice(0, -ext.length)}.tsx`,
|
|
90471
|
+
`${basePath.slice(0, -ext.length)}.mts`,
|
|
90472
|
+
`${basePath.slice(0, -ext.length)}.cts`,
|
|
90473
|
+
basePath
|
|
90474
|
+
] : ext ? [basePath] : [
|
|
90475
|
+
`${basePath}.ts`,
|
|
90476
|
+
`${basePath}.tsx`,
|
|
90477
|
+
`${basePath}.mts`,
|
|
90478
|
+
`${basePath}.cts`,
|
|
90479
|
+
import_node_path36.default.join(basePath, "index.ts"),
|
|
90480
|
+
import_node_path36.default.join(basePath, "index.tsx"),
|
|
90481
|
+
import_node_path36.default.join(basePath, "index.mts"),
|
|
90482
|
+
import_node_path36.default.join(basePath, "index.cts")
|
|
90483
|
+
];
|
|
90484
|
+
for (const candidate of candidates) {
|
|
90485
|
+
if (/\.(?:ts|tsx|mts|cts)$/.test(candidate) && import_node_fs24.default.existsSync(candidate)) {
|
|
90486
|
+
return candidate;
|
|
90487
|
+
}
|
|
90488
|
+
}
|
|
90489
|
+
return null;
|
|
90490
|
+
}
|
|
90491
|
+
function findStaticLocalTypeScriptImports(filePath, source) {
|
|
90492
|
+
const imports = [];
|
|
90493
|
+
const staticImportPattern = /(?:^|[\n;])\s*(?:import\s+(?:type\s+)?(?:[^'"]*?\s+from\s+)?|export\s+(?:type\s+)?[^'"]*?\s+from\s+)['"]([^'"]+)['"]/g;
|
|
90494
|
+
for (const match of source.matchAll(staticImportPattern)) {
|
|
90495
|
+
const resolved = resolveLocalTypeScriptImport(filePath, match[1]);
|
|
90496
|
+
if (resolved) {
|
|
90497
|
+
imports.push(resolved);
|
|
90498
|
+
}
|
|
90499
|
+
}
|
|
90500
|
+
return imports;
|
|
90501
|
+
}
|
|
90502
|
+
function shouldSkipNodeStripTypesPreflight(filePath, seen = /* @__PURE__ */ new Set(), isEntry = true) {
|
|
90503
|
+
const resolvedPath = import_node_path36.default.resolve(filePath);
|
|
90504
|
+
if (seen.has(resolvedPath)) {
|
|
90505
|
+
return false;
|
|
90506
|
+
}
|
|
90507
|
+
seen.add(resolvedPath);
|
|
90508
|
+
let source;
|
|
90509
|
+
try {
|
|
90510
|
+
source = import_node_fs24.default.readFileSync(resolvedPath, "utf8");
|
|
90511
|
+
} catch {
|
|
90512
|
+
return !isEntry;
|
|
90513
|
+
}
|
|
90514
|
+
if (containsNodeStripTypesUnsupportedSyntax(source)) {
|
|
90515
|
+
return true;
|
|
90516
|
+
}
|
|
90517
|
+
return findStaticLocalTypeScriptImports(resolvedPath, source).some((importPath) => shouldSkipNodeStripTypesPreflight(importPath, seen, false));
|
|
90518
|
+
}
|
|
90519
|
+
function stripCommentsAndStringsForSyntaxScan(source) {
|
|
90520
|
+
let output = "";
|
|
90521
|
+
for (let index = 0; index < source.length; index += 1) {
|
|
90522
|
+
const char = source[index];
|
|
90523
|
+
const next = source[index + 1];
|
|
90524
|
+
if (char === "/" && next === "/") {
|
|
90525
|
+
output += " ";
|
|
90526
|
+
index += 1;
|
|
90527
|
+
while (index + 1 < source.length && source[index + 1] !== "\n") {
|
|
90528
|
+
output += " ";
|
|
90529
|
+
index += 1;
|
|
90530
|
+
}
|
|
90531
|
+
continue;
|
|
90532
|
+
}
|
|
90533
|
+
if (char === "/" && next === "*") {
|
|
90534
|
+
output += " ";
|
|
90535
|
+
index += 1;
|
|
90536
|
+
while (index + 1 < source.length) {
|
|
90537
|
+
index += 1;
|
|
90538
|
+
const current = source[index];
|
|
90539
|
+
output += current === "\n" ? "\n" : " ";
|
|
90540
|
+
if (current === "*" && source[index + 1] === "/") {
|
|
90541
|
+
output += " ";
|
|
90542
|
+
index += 1;
|
|
90543
|
+
break;
|
|
90544
|
+
}
|
|
90545
|
+
}
|
|
90546
|
+
continue;
|
|
90547
|
+
}
|
|
90548
|
+
if (char === '"' || char === "'" || char === "`") {
|
|
90549
|
+
const quote = char;
|
|
90550
|
+
output += " ";
|
|
90551
|
+
while (index + 1 < source.length) {
|
|
90552
|
+
index += 1;
|
|
90553
|
+
const current = source[index];
|
|
90554
|
+
output += current === "\n" ? "\n" : " ";
|
|
90555
|
+
if (current === "\\") {
|
|
90556
|
+
if (index + 1 < source.length) {
|
|
90557
|
+
index += 1;
|
|
90558
|
+
output += source[index] === "\n" ? "\n" : " ";
|
|
90559
|
+
}
|
|
90560
|
+
continue;
|
|
90561
|
+
}
|
|
90562
|
+
if (current === quote) {
|
|
90563
|
+
break;
|
|
90564
|
+
}
|
|
90565
|
+
}
|
|
90566
|
+
continue;
|
|
90567
|
+
}
|
|
90568
|
+
output += char;
|
|
90569
|
+
}
|
|
90570
|
+
return output;
|
|
90571
|
+
}
|
|
90572
|
+
function containsNodeStripTypesUnsupportedSyntax(source) {
|
|
90573
|
+
const scanSource = stripCommentsAndStringsForSyntaxScan(source);
|
|
90574
|
+
return /(?:^|[;\n{}])\s*(?:export\s+)?(?:const\s+)?enum\s+[A-Za-z_$][\w$]*/.test(scanSource) || /(?:^|[;\n{}])\s*(?:export\s+)?(?:declare\s+)?(?:namespace|module)\s+[A-Za-z_$][\w$]*/.test(scanSource) || /\bconstructor\s*\([^)]*\b(?:public|private|protected|readonly)\s+(?:readonly\s+)?[A-Za-z_$][\w$]*/.test(scanSource) || /(?:^|[;\n{}])\s*import\s+[A-Za-z_$][\w$]*\s*=\s*(?:require\s*\(|[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*)/.test(scanSource) || /(?:^|[;\n{}])\s*export\s*=\s*/.test(scanSource);
|
|
90575
|
+
}
|
|
90281
90576
|
function formatWorkflowParseError(parsed) {
|
|
90282
90577
|
const where = parsed.line !== void 0 ? `${parsed.file}:${parsed.line}${parsed.column !== void 0 ? `:${parsed.column}` : ""}` : parsed.file;
|
|
90283
90578
|
const hints = [];
|
|
@@ -90398,6 +90693,10 @@ Run ID: ${runId}`;
|
|
|
90398
90693
|
{ label: "ts-node", bin: "ts-node", preArgs: [] }
|
|
90399
90694
|
];
|
|
90400
90695
|
for (const { label, bin, preArgs } of runners) {
|
|
90696
|
+
if (bin === "node" && shouldSkipNodeStripTypesPreflight(resolved)) {
|
|
90697
|
+
diag(`runScriptWorkflow: ${label} cannot parse this TypeScript file \u2014 trying next`);
|
|
90698
|
+
continue;
|
|
90699
|
+
}
|
|
90401
90700
|
diag(`runScriptWorkflow: trying runner ${label}`);
|
|
90402
90701
|
const result = await spawnRunnerWithStderrCapture(bin, [...preArgs, resolved], childEnv);
|
|
90403
90702
|
if (result.error) {
|
|
@@ -90409,7 +90708,7 @@ Run ID: ${runId}`;
|
|
|
90409
90708
|
}
|
|
90410
90709
|
if (result.status !== 0) {
|
|
90411
90710
|
if (bin === "node" && result.status === 9) {
|
|
90412
|
-
diag(`runScriptWorkflow: runner ${label}
|
|
90711
|
+
diag(`runScriptWorkflow: runner ${label} cannot handle this TypeScript file \u2014 trying next`);
|
|
90413
90712
|
continue;
|
|
90414
90713
|
}
|
|
90415
90714
|
return augmentErrorWithRunId(wrapRunnerError(label, result));
|