veryfront 0.1.1120 → 0.1.1122
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/esm/deno.js +1 -1
- package/esm/src/agent/input/human-input.d.ts.map +1 -1
- package/esm/src/agent/input/human-input.js +2 -6
- package/esm/src/agent/runtime/index.d.ts.map +1 -1
- package/esm/src/agent/runtime/index.js +1 -0
- package/esm/src/agent/service/detached-run-tracker.d.ts.map +1 -1
- package/esm/src/agent/service/detached-run-tracker.js +1 -5
- package/esm/src/agent/service/registration.d.ts.map +1 -1
- package/esm/src/agent/service/registration.js +2 -6
- package/esm/src/build/bundler/code-splitter/manifest-builder.d.ts +4 -0
- package/esm/src/build/bundler/code-splitter/manifest-builder.d.ts.map +1 -1
- package/esm/src/build/bundler/code-splitter/manifest-builder.js +2 -5
- package/esm/src/build/production-build/local-release-assets.js +2 -2
- package/esm/src/discovery/transpiler.d.ts.map +1 -1
- package/esm/src/discovery/transpiler.js +4 -8
- package/esm/src/errors/error-handlers.d.ts +31 -3
- package/esm/src/errors/error-handlers.d.ts.map +1 -1
- package/esm/src/errors/error-handlers.js +33 -12
- package/esm/src/errors/index.d.ts +1 -1
- package/esm/src/errors/index.d.ts.map +1 -1
- package/esm/src/eval/agent-service/durable-run-canaries/runner.d.ts.map +1 -1
- package/esm/src/eval/agent-service/durable-run-canaries/runner.js +1 -5
- package/esm/src/eval/agent-service/live-evals/api-client.d.ts.map +1 -1
- package/esm/src/eval/agent-service/live-evals/api-client.js +3 -4
- package/esm/src/eval/provenance.d.ts.map +1 -1
- package/esm/src/eval/provenance.js +3 -13
- package/esm/src/eval/report.d.ts.map +1 -1
- package/esm/src/eval/report.js +2 -8
- package/esm/src/html/styles-builder/plugin-loader.d.ts.map +1 -1
- package/esm/src/html/styles-builder/plugin-loader.js +2 -13
- package/esm/src/knowledge/index.d.ts.map +1 -1
- package/esm/src/knowledge/index.js +2 -5
- package/esm/src/metrics/index.d.ts.map +1 -1
- package/esm/src/metrics/index.js +2 -1
- package/esm/src/oauth/providers/base.d.ts.map +1 -1
- package/esm/src/oauth/providers/base.js +2 -6
- package/esm/src/platform/adapters/fs/github/github-api-client.d.ts +0 -1
- package/esm/src/platform/adapters/fs/github/github-api-client.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/github/github-api-client.js +36 -37
- package/esm/src/platform/adapters/fs/veryfront/retry.d.ts.map +1 -1
- package/esm/src/platform/adapters/fs/veryfront/retry.js +12 -14
- package/esm/src/platform/adapters/veryfront-api-client/retry-handler.d.ts.map +1 -1
- package/esm/src/platform/adapters/veryfront-api-client/retry-handler.js +82 -86
- package/esm/src/proxy/logger.d.ts +2 -1
- package/esm/src/proxy/logger.d.ts.map +1 -1
- package/esm/src/proxy/logger.js +1 -112
- package/esm/src/proxy/routing-invalidation-redis.d.ts.map +1 -1
- package/esm/src/proxy/routing-invalidation-redis.js +2 -5
- package/esm/src/proxy/server-resolver.d.ts.map +1 -1
- package/esm/src/proxy/server-resolver.js +2 -1
- package/esm/src/release-assets/build-executor.js +5 -5
- package/esm/src/release-assets/index.d.ts +0 -1
- package/esm/src/release-assets/index.d.ts.map +1 -1
- package/esm/src/release-assets/index.js +0 -1
- package/esm/src/rendering/orchestrator/module-loader/cache.d.ts +9 -0
- package/esm/src/rendering/orchestrator/module-loader/cache.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/module-loader/cache.js +2 -11
- package/esm/src/routing/api/module-loader/esbuild-plugin.d.ts.map +1 -1
- package/esm/src/routing/api/module-loader/esbuild-plugin.js +2 -5
- package/esm/src/sandbox/lazy-sandbox.js +4 -4
- package/esm/src/security/http/auth.d.ts.map +1 -1
- package/esm/src/security/http/auth.js +1 -24
- package/esm/src/server/handlers/studio/bridge-modules.handler.d.ts.map +1 -1
- package/esm/src/server/handlers/studio/bridge-modules.handler.js +2 -5
- package/esm/src/server/project-env/fetcher.js +2 -2
- package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.d.ts.map +1 -1
- package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.js +1 -1
- package/esm/src/server/services/rsc/orchestrators/stream-handler.js +1 -4
- package/esm/src/transforms/esm/transform-utils.d.ts.map +1 -1
- package/esm/src/transforms/esm/transform-utils.js +2 -1
- package/esm/src/transforms/mdx/compiler/import-rewriter.d.ts.map +1 -1
- package/esm/src/transforms/mdx/compiler/import-rewriter.js +2 -1
- package/esm/src/transforms/pipeline/stages/resolve-imports.d.ts.map +1 -1
- package/esm/src/transforms/pipeline/stages/resolve-imports.js +3 -1
- package/esm/src/utils/base64url.d.ts +4 -3
- package/esm/src/utils/base64url.d.ts.map +1 -1
- package/esm/src/utils/base64url.js +30 -3
- package/esm/src/utils/hash-utils.d.ts +4 -1
- package/esm/src/utils/hash-utils.d.ts.map +1 -1
- package/esm/src/utils/hash-utils.js +9 -3
- package/esm/src/utils/index.d.ts +3 -1
- package/esm/src/utils/index.d.ts.map +1 -1
- package/esm/src/utils/index.js +3 -1
- package/esm/src/utils/sleep.d.ts +3 -0
- package/esm/src/utils/sleep.d.ts.map +1 -0
- package/esm/src/utils/sleep.js +18 -0
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/esm/src/workflow/claude-code/workspace-sync.d.ts.map +1 -1
- package/esm/src/workflow/claude-code/workspace-sync.js +3 -13
- package/esm/src/workflow/executor/dag/composite-node-execution.d.ts.map +1 -1
- package/esm/src/workflow/executor/dag/composite-node-execution.js +3 -24
- package/esm/src/workflow/executor/dag/loop-node-strategy.js +1 -1
- package/esm/src/workflow/executor/dag/utils.d.ts +0 -1
- package/esm/src/workflow/executor/dag/utils.d.ts.map +1 -1
- package/esm/src/workflow/executor/dag/utils.js +0 -17
- package/esm/src/workflow/executor/retry-policy.d.ts +13 -0
- package/esm/src/workflow/executor/retry-policy.d.ts.map +1 -0
- package/esm/src/workflow/executor/retry-policy.js +44 -0
- package/esm/src/workflow/executor/step-executor.d.ts +1 -11
- package/esm/src/workflow/executor/step-executor.d.ts.map +1 -1
- package/esm/src/workflow/executor/step-executor.js +6 -57
- package/esm/src/workflow/executor/workflow-executor.d.ts.map +1 -1
- package/esm/src/workflow/executor/workflow-executor.js +2 -3
- package/esm/src/workflow/worker/workflow-worker.d.ts +0 -4
- package/esm/src/workflow/worker/workflow-worker.d.ts.map +1 -1
- package/esm/src/workflow/worker/workflow-worker.js +2 -9
- package/package.json +5 -5
- package/esm/src/release-assets/hash.d.ts +0 -14
- package/esm/src/release-assets/hash.d.ts.map +0 -1
- package/esm/src/release-assets/hash.js +0 -22
|
@@ -37,7 +37,8 @@ const EXTENSION_LOADERS = {
|
|
|
37
37
|
".json": "json",
|
|
38
38
|
};
|
|
39
39
|
export function getLoaderFromPath(filePath) {
|
|
40
|
-
const
|
|
40
|
+
const sourcePath = filePath.endsWith(".src") ? filePath.slice(0, -4) : filePath;
|
|
41
|
+
const ext = sourcePath.slice(sourcePath.lastIndexOf("."));
|
|
41
42
|
return EXTENSION_LOADERS[ext] ?? "tsx";
|
|
42
43
|
}
|
|
43
44
|
export function needsTransform(filePath) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-rewriter.d.ts","sourceRoot":"","sources":["../../../../../src/src/transforms/mdx/compiler/import-rewriter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"import-rewriter.d.ts","sourceRoot":"","sources":["../../../../../src/src/transforms/mdx/compiler/import-rewriter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAG9E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAuDD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAwBrF;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,MAAM,CA2BjG"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { dirname, join, resolve as pathResolve } from "../../../platform/compat/path/index.js";
|
|
2
|
+
import { base64urlEncode } from "../../../utils/index.js";
|
|
2
3
|
function toAbsPath(spec, basedir) {
|
|
3
4
|
try {
|
|
4
5
|
if (spec.startsWith("file://"))
|
|
@@ -19,7 +20,7 @@ function toAbsPath(spec, basedir) {
|
|
|
19
20
|
function toBrowserFs(abs, baseUrl) {
|
|
20
21
|
if (abs.startsWith("http://") || abs.startsWith("https://"))
|
|
21
22
|
return abs;
|
|
22
|
-
const b64 =
|
|
23
|
+
const b64 = base64urlEncode(abs);
|
|
23
24
|
const path = `/_veryfront/fs/${b64}.js`;
|
|
24
25
|
return baseUrl ? `${baseUrl}${path}` : path;
|
|
25
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-imports.d.ts","sourceRoot":"","sources":["../../../../../src/src/transforms/pipeline/stages/resolve-imports.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"resolve-imports.d.ts","sourceRoot":"","sources":["../../../../../src/src/transforms/pipeline/stages/resolve-imports.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAyB,KAAK,eAAe,EAAkB,MAAM,aAAa,CAAC;AA8B1F,eAAO,MAAM,oBAAoB,EAAE,eAYlC,CAAC"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* Uses the unified import rewriter for all import transformations.
|
|
6
6
|
*/
|
|
7
7
|
import { loadImportMap } from "../../../modules/import-map/index.js";
|
|
8
|
+
import { stripJsonImportAttributes } from "../../esm/import-attributes.js";
|
|
8
9
|
import { rewriteImports } from "../../import-rewriter/index.js";
|
|
9
10
|
import { TransformStage } from "../types.js";
|
|
10
11
|
async function buildRewriteContext(ctx) {
|
|
@@ -36,6 +37,7 @@ export const resolveImportsPlugin = {
|
|
|
36
37
|
stage: TransformStage.RESOLVE_ALIASES,
|
|
37
38
|
async transform(ctx) {
|
|
38
39
|
const rewriteCtx = await buildRewriteContext(ctx);
|
|
39
|
-
|
|
40
|
+
const code = await rewriteImports(ctx.code, rewriteCtx);
|
|
41
|
+
return stripJsonImportAttributes(code, (specifier) => specifier === "/_vf_modules/_veryfront/_deno-config.js");
|
|
40
42
|
},
|
|
41
43
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/** Encode a UTF-8 string as standard base64 (handles non-Latin1 input). */
|
|
2
|
+
export declare function encodeBase64(value: string): string;
|
|
3
|
+
/** Encode a string as unpadded base64url. */
|
|
4
4
|
export declare function base64urlEncode(input: string): string;
|
|
5
|
+
/** Encode raw bytes as unpadded base64url. */
|
|
5
6
|
export declare function base64urlEncodeBytes(bytes: Uint8Array): string;
|
|
6
7
|
//# sourceMappingURL=base64url.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64url.d.ts","sourceRoot":"","sources":["../../../src/src/utils/base64url.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base64url.d.ts","sourceRoot":"","sources":["../../../src/src/utils/base64url.ts"],"names":[],"mappings":"AAYA,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkBlD;AAED,6CAA6C;AAC7C,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,8CAA8C;AAC9C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAI9D"}
|
|
@@ -1,12 +1,39 @@
|
|
|
1
1
|
/***********************
|
|
2
|
-
*
|
|
2
|
+
* Base64 / base64url encoding utilities
|
|
3
3
|
***********************/
|
|
4
|
+
import * as dntShim from "../../_dnt.shims.js";
|
|
4
5
|
function toBase64Url(b64) {
|
|
5
6
|
return b64.replaceAll("+", "-").replaceAll("/", "_").replaceAll("=", "");
|
|
6
7
|
}
|
|
8
|
+
/** Encode a UTF-8 string as standard base64 (handles non-Latin1 input). */
|
|
9
|
+
export function encodeBase64(value) {
|
|
10
|
+
if (typeof globalThis.btoa === "function") {
|
|
11
|
+
try {
|
|
12
|
+
return globalThis.btoa(value);
|
|
13
|
+
}
|
|
14
|
+
catch (_) {
|
|
15
|
+
/* expected: non-Latin1 string — fall back to TextEncoder */
|
|
16
|
+
const bytes = new TextEncoder().encode(value);
|
|
17
|
+
let binary = "";
|
|
18
|
+
for (const byte of bytes)
|
|
19
|
+
binary += String.fromCharCode(byte);
|
|
20
|
+
return globalThis.btoa(binary);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const bufferCtor = dntShim.dntGlobalThis.Buffer;
|
|
24
|
+
if (bufferCtor)
|
|
25
|
+
return bufferCtor.from(value, "utf8").toString("base64");
|
|
26
|
+
// This file ships in client bundles — keep it dependency-free (no error registry).
|
|
27
|
+
throw new Error("Base64 encoding is not supported in this runtime");
|
|
28
|
+
}
|
|
29
|
+
/** Encode a string as unpadded base64url. */
|
|
7
30
|
export function base64urlEncode(input) {
|
|
8
|
-
return toBase64Url(
|
|
31
|
+
return toBase64Url(encodeBase64(input));
|
|
9
32
|
}
|
|
33
|
+
/** Encode raw bytes as unpadded base64url. */
|
|
10
34
|
export function base64urlEncodeBytes(bytes) {
|
|
11
|
-
|
|
35
|
+
let binary = "";
|
|
36
|
+
for (const byte of bytes)
|
|
37
|
+
binary += String.fromCharCode(byte);
|
|
38
|
+
return toBase64Url(btoa(binary));
|
|
12
39
|
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import * as dntShim from "../../_dnt.shims.js";
|
|
2
|
+
/** Compute the lowercase hex SHA-256 digest of a UTF-8 string. */
|
|
2
3
|
export declare function computeHash(content: string): Promise<string>;
|
|
4
|
+
/** Compute the lowercase hex SHA-256 digest of raw bytes. */
|
|
5
|
+
export declare function computeHashBytes(bytes: dntShim.BufferSource): Promise<string>;
|
|
3
6
|
/** Source bundle content used for hash computation. */
|
|
4
7
|
export interface BundleCode {
|
|
5
8
|
code: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash-utils.d.ts","sourceRoot":"","sources":["../../../src/src/utils/hash-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hash-utils.d.ts","sourceRoot":"","sources":["../../../src/src/utils/hash-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAW/C,kEAAkE;AAClE,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGlE;AAED,6DAA6D;AAC7D,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnF;AACD,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yBAAyB;AACzB,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAEjE;AAED,0BAA0B;AAC1B,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAS9C;AAED,+DAA+D;AAC/D,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,yBAAyB;AACzB,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhE;AAED,mDAAmD;AACnD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS/C"}
|
|
@@ -3,11 +3,17 @@ import { FNV1A_PRIME_32 } from "./constants/crypto.js";
|
|
|
3
3
|
import { HASH_SEED_FNV1A } from "./constants/hash.js";
|
|
4
4
|
/** Number of hex characters kept by shortHash (8 hex chars = 32 bits) */
|
|
5
5
|
const SHORT_HASH_LENGTH = 8;
|
|
6
|
-
|
|
6
|
+
function toHex(buffer) {
|
|
7
|
+
return Array.from(new Uint8Array(buffer), (b) => b.toString(16).padStart(2, "0")).join("");
|
|
8
|
+
}
|
|
9
|
+
/** Compute the lowercase hex SHA-256 digest of a UTF-8 string. */
|
|
7
10
|
export async function computeHash(content) {
|
|
8
11
|
const data = new TextEncoder().encode(content);
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
return toHex(await dntShim.crypto.subtle.digest("SHA-256", data));
|
|
13
|
+
}
|
|
14
|
+
/** Compute the lowercase hex SHA-256 digest of raw bytes. */
|
|
15
|
+
export async function computeHashBytes(bytes) {
|
|
16
|
+
return toHex(await dntShim.crypto.subtle.digest("SHA-256", bytes));
|
|
11
17
|
}
|
|
12
18
|
/** Compute code hash. */
|
|
13
19
|
export function computeCodeHash(code) {
|
package/esm/src/utils/index.d.ts
CHANGED
|
@@ -17,7 +17,9 @@ export type { LogEntry, Logger, RequestContext } from "./logger/index.js";
|
|
|
17
17
|
export { redactSensitive, sanitizeUrlCredentials, sanitizeUrlForSpan } from "./logger/redact.js";
|
|
18
18
|
export { BREAKPOINT_LG, BREAKPOINT_MD, BREAKPOINT_SM, BREAKPOINT_XL, BYTES_PER_KB, DEFAULT_ALLOWED_CDN_HOSTS, DEFAULT_BUILD_CONCURRENCY, DEFAULT_DASHBOARD_PORT, DEFAULT_LRU_MAX_ENTRIES, DEV_SERVER_ENDPOINTS, FORBIDDEN_PATH_PATTERNS, getDenoStdNodeBase, getReactImportMap, HASH_SEED_DJB2, HASH_SEED_FNV1A, HMR_CLIENT_RELOAD_DELAY_MS, HMR_CLOSE_MESSAGE_TOO_LARGE, HMR_CLOSE_NORMAL, HMR_CLOSE_RATE_LIMIT, HMR_MAX_MESSAGE_SIZE_BYTES, HMR_MAX_MESSAGES_PER_MINUTE, HMR_RATE_LIMIT_WINDOW_MS, HTTP_BAD_REQUEST, HTTP_CONTENT_TYPE_IMAGE_GIF, HTTP_CONTENT_TYPE_IMAGE_ICO, HTTP_CONTENT_TYPE_IMAGE_JPEG, HTTP_CONTENT_TYPE_IMAGE_PNG, HTTP_CONTENT_TYPE_IMAGE_SVG, HTTP_CONTENT_TYPE_IMAGE_WEBP, HTTP_CONTENT_TYPES, HTTP_MODULE_FETCH_TIMEOUT_MS, HTTP_NETWORK_CONNECT_TIMEOUT, HTTP_NOT_FOUND, HTTP_NOT_IMPLEMENTED, HTTP_OK, HTTP_REDIRECT_FOUND, HTTP_SERVER_ERROR, HTTP_STATUS_CLIENT_ERROR_MIN, HTTP_STATUS_REDIRECT_MIN, HTTP_STATUS_SERVER_ERROR_MIN, HTTP_STATUS_SUCCESS_MIN, HTTP_UNAVAILABLE, IMAGE_OPTIMIZATION, MAX_BATCH_SIZE, MAX_PATH_LENGTH, MAX_PATH_TRAVERSAL_DEPTH, MS_PER_SECOND, PREFETCH_DEFAULT_DELAY_MS, PREFETCH_DEFAULT_TIMEOUT_MS, PREFETCH_MAX_SIZE_BYTES, REACT_DEFAULT_VERSION, RESPONSIVE_IMAGE_WIDTH_LG, RESPONSIVE_IMAGE_WIDTHS, RSC_MANIFEST_CACHE_TTL_MS, TSX_LAYOUT_MAX_ENTRIES, TSX_LAYOUT_PER_PROJECT_MAX_ENTRIES, Z_INDEX_DEV_INDICATOR, Z_INDEX_ERROR_OVERLAY, } from "./constants/index.js";
|
|
19
19
|
export { VERSION } from "./version.js";
|
|
20
|
-
export { type BundleCode as HashBundleCode, computeCodeHash, computeHash, fnv1aHash, shortHash, simpleHash, } from "./hash-utils.js";
|
|
20
|
+
export { type BundleCode as HashBundleCode, computeCodeHash, computeHash, computeHashBytes, fnv1aHash, shortHash, simpleHash, } from "./hash-utils.js";
|
|
21
|
+
export { base64urlEncode, base64urlEncodeBytes, encodeBase64 } from "./base64url.js";
|
|
22
|
+
export { sleep } from "./sleep.js";
|
|
21
23
|
export { MemoCache, memoize, memoizeAsync, simpleHash as memoizeHash } from "./memoize.js";
|
|
22
24
|
export { normalizePath } from "./path-utils.js";
|
|
23
25
|
export { type BundleCode, type BundleMetadata, getBundleManifestStore } from "./bundle-manifest.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,yBAAyB,CAAC;AAGjC,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,IAAI,0BAA0B,EAC1D,WAAW,EACX,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,MAAM,EACN,mBAAmB,EACnB,cAAc,EACd,0BAA0B,EAC1B,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG1E,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEjG,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,EACxB,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,oBAAoB,EACpB,OAAO,EACP,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,kCAAkC,EAClC,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EACL,KAAK,UAAU,IAAI,cAAc,EACjC,eAAe,EACf,WAAW,EACX,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEpG,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,yBAAyB,CAAC;AAGjC,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,aAAa,EACb,cAAc,EACd,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,4BAA4B,IAAI,0BAA0B,EAC1D,WAAW,EACX,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,MAAM,EACN,mBAAmB,EACnB,cAAc,EACd,0BAA0B,EAC1B,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAG1E,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEjG,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,yBAAyB,EACzB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,wBAAwB,EACxB,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAC3B,4BAA4B,EAC5B,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,EAC5B,cAAc,EACd,oBAAoB,EACpB,OAAO,EACP,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,wBAAwB,EACxB,aAAa,EACb,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,EACtB,kCAAkC,EAClC,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EACL,KAAK,UAAU,IAAI,cAAc,EACjC,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAErF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,IAAI,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEpG,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,eAAe,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
package/esm/src/utils/index.js
CHANGED
|
@@ -17,7 +17,9 @@ export { __registerLogRecordEmitter, __registerTraceContextGetter, __registerTra
|
|
|
17
17
|
export { redactSensitive, sanitizeUrlCredentials, sanitizeUrlForSpan } from "./logger/redact.js";
|
|
18
18
|
export { BREAKPOINT_LG, BREAKPOINT_MD, BREAKPOINT_SM, BREAKPOINT_XL, BYTES_PER_KB, DEFAULT_ALLOWED_CDN_HOSTS, DEFAULT_BUILD_CONCURRENCY, DEFAULT_DASHBOARD_PORT, DEFAULT_LRU_MAX_ENTRIES, DEV_SERVER_ENDPOINTS, FORBIDDEN_PATH_PATTERNS, getDenoStdNodeBase, getReactImportMap, HASH_SEED_DJB2, HASH_SEED_FNV1A, HMR_CLIENT_RELOAD_DELAY_MS, HMR_CLOSE_MESSAGE_TOO_LARGE, HMR_CLOSE_NORMAL, HMR_CLOSE_RATE_LIMIT, HMR_MAX_MESSAGE_SIZE_BYTES, HMR_MAX_MESSAGES_PER_MINUTE, HMR_RATE_LIMIT_WINDOW_MS, HTTP_BAD_REQUEST, HTTP_CONTENT_TYPE_IMAGE_GIF, HTTP_CONTENT_TYPE_IMAGE_ICO, HTTP_CONTENT_TYPE_IMAGE_JPEG, HTTP_CONTENT_TYPE_IMAGE_PNG, HTTP_CONTENT_TYPE_IMAGE_SVG, HTTP_CONTENT_TYPE_IMAGE_WEBP, HTTP_CONTENT_TYPES, HTTP_MODULE_FETCH_TIMEOUT_MS, HTTP_NETWORK_CONNECT_TIMEOUT, HTTP_NOT_FOUND, HTTP_NOT_IMPLEMENTED, HTTP_OK, HTTP_REDIRECT_FOUND, HTTP_SERVER_ERROR, HTTP_STATUS_CLIENT_ERROR_MIN, HTTP_STATUS_REDIRECT_MIN, HTTP_STATUS_SERVER_ERROR_MIN, HTTP_STATUS_SUCCESS_MIN, HTTP_UNAVAILABLE, IMAGE_OPTIMIZATION, MAX_BATCH_SIZE, MAX_PATH_LENGTH, MAX_PATH_TRAVERSAL_DEPTH, MS_PER_SECOND, PREFETCH_DEFAULT_DELAY_MS, PREFETCH_DEFAULT_TIMEOUT_MS, PREFETCH_MAX_SIZE_BYTES, REACT_DEFAULT_VERSION, RESPONSIVE_IMAGE_WIDTH_LG, RESPONSIVE_IMAGE_WIDTHS, RSC_MANIFEST_CACHE_TTL_MS, TSX_LAYOUT_MAX_ENTRIES, TSX_LAYOUT_PER_PROJECT_MAX_ENTRIES, Z_INDEX_DEV_INDICATOR, Z_INDEX_ERROR_OVERLAY, } from "./constants/index.js";
|
|
19
19
|
export { VERSION } from "./version.js";
|
|
20
|
-
export { computeCodeHash, computeHash, fnv1aHash, shortHash, simpleHash, } from "./hash-utils.js";
|
|
20
|
+
export { computeCodeHash, computeHash, computeHashBytes, fnv1aHash, shortHash, simpleHash, } from "./hash-utils.js";
|
|
21
|
+
export { base64urlEncode, base64urlEncodeBytes, encodeBase64 } from "./base64url.js";
|
|
22
|
+
export { sleep } from "./sleep.js";
|
|
21
23
|
export { MemoCache, memoize, memoizeAsync, simpleHash as memoizeHash } from "./memoize.js";
|
|
22
24
|
export { normalizePath } from "./path-utils.js";
|
|
23
25
|
export { getBundleManifestStore } from "./bundle-manifest.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../../src/src/utils/sleep.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAe1E"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Resolve after `ms` milliseconds; rejects with `abortSignal.reason` if aborted first. */
|
|
2
|
+
export function sleep(ms, abortSignal) {
|
|
3
|
+
abortSignal?.throwIfAborted();
|
|
4
|
+
return new Promise((resolve, reject) => {
|
|
5
|
+
const timeoutId = setTimeout(() => {
|
|
6
|
+
abortSignal?.removeEventListener("abort", onAbort);
|
|
7
|
+
resolve();
|
|
8
|
+
}, ms);
|
|
9
|
+
const onAbort = () => {
|
|
10
|
+
clearTimeout(timeoutId);
|
|
11
|
+
abortSignal?.removeEventListener("abort", onAbort);
|
|
12
|
+
reject(abortSignal?.reason);
|
|
13
|
+
};
|
|
14
|
+
abortSignal?.addEventListener("abort", onAbort, { once: true });
|
|
15
|
+
if (abortSignal?.aborted)
|
|
16
|
+
onAbort();
|
|
17
|
+
});
|
|
18
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-sync.d.ts","sourceRoot":"","sources":["../../../../src/src/workflow/claude-code/workspace-sync.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAUzD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IAEd,oCAAoC;IACpC,MAAM,EAAE,qBAAqB,CAAC;IAE9B,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IAErB,iCAAiC;IACjC,eAAe,EAAE,MAAM,CAAC;IAExB,6BAA6B;IAC7B,eAAe,EAAE,MAAM,CAAC;IAExB,kFAAkF;IAClF,YAAY,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;OAIG;IACH,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEvD,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAEvB;;;OAGG;IACH,OAAO,EAAE,UAAU,EAAE,CAAC;IAEtB,kCAAkC;IAClC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE/C,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;
|
|
1
|
+
{"version":3,"file":"workspace-sync.d.ts","sourceRoot":"","sources":["../../../../src/src/workflow/claude-code/workspace-sync.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAUzD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IAEd,oCAAoC;IACpC,MAAM,EAAE,qBAAqB,CAAC;IAE9B,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IAErB,iCAAiC;IACjC,eAAe,EAAE,MAAM,CAAC;IAExB,6BAA6B;IAC7B,eAAe,EAAE,MAAM,CAAC;IAExB,kFAAkF;IAClF,YAAY,EAAE,MAAM,EAAE,CAAC;IAEvB;;;;OAIG;IACH,cAAc,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEvD,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,QAAQ,EAAE,UAAU,EAAE,CAAC;IAEvB;;;OAGG;IACH,OAAO,EAAE,UAAU,EAAE,CAAC;IAEtB,kCAAkC;IAClC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE/C,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiDD;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAGZ;IACF,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,eAAe;IAgBnC;;OAEG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAgHhD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAwC5C;;;;;;OAMG;YACW,aAAa;IAiD3B;;;;;OAKG;IACG,aAAa,CACjB,OAAO,EAAE,UAAU,EAAE,EACrB,OAAO,GAAE;QACP,8CAA8C;QAC9C,QAAQ,CAAC,EAAE,CACT,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,KACrB,OAAO,CAAC,IAAI,CAAC,CAAC;KACf,GACL,OAAO,CAAC,YAAY,CAAC;IAkDxB;;;;;;;;;;;;;OAaG;YACW,eAAe;IAiF7B;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK7C;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7D;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWhD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB/B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,aAAa,CAE1E;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,MAAM,EAAE,eAAe,EACvB,EAAE,EAAE,CAAC,SAAS,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3C,OAAO,CAAC;IACT,MAAM,EAAE,CAAC,CAAC;IACV,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,UAAU,EAAE,mBAAmB,CAAC;CACjC,CAAC,CAkBD"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* 3. After execution: Upload changed files back to Veryfront API
|
|
11
11
|
*/
|
|
12
12
|
import * as dntShim from "../../../_dnt.shims.js";
|
|
13
|
-
import { logger as baseLogger } from "../../utils/index.js";
|
|
13
|
+
import { computeHash, logger as baseLogger } from "../../utils/index.js";
|
|
14
14
|
import { api } from "../api.js";
|
|
15
15
|
import { dirname, join, relative, resolve } from "../../../deps/jsr.io/@std/path/1.1.4/mod.js";
|
|
16
16
|
import { INITIALIZATION_ERROR, INVALID_ARGUMENT, SECURITY_VIOLATION } from "../../errors/index.js";
|
|
@@ -18,16 +18,6 @@ import { isWithinDirectory } from "../../utils/path-utils.js";
|
|
|
18
18
|
const logger = baseLogger.component("workspace-sync");
|
|
19
19
|
/** Maximum file size for workspace sync (10 MB) */
|
|
20
20
|
const MAX_WORKSPACE_FILE_SIZE = 10 * 1024 * 1024;
|
|
21
|
-
/**
|
|
22
|
-
* Simple checksum for change detection
|
|
23
|
-
*/
|
|
24
|
-
async function checksum(content) {
|
|
25
|
-
const encoder = new TextEncoder();
|
|
26
|
-
const data = encoder.encode(content);
|
|
27
|
-
const hashBuffer = await dntShim.crypto.subtle.digest("SHA-256", data);
|
|
28
|
-
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
29
|
-
return hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
30
|
-
}
|
|
31
21
|
/**
|
|
32
22
|
* Check if a path matches any of the given patterns.
|
|
33
23
|
*
|
|
@@ -149,7 +139,7 @@ export class WorkspaceSync {
|
|
|
149
139
|
continue;
|
|
150
140
|
}
|
|
151
141
|
// Calculate checksum for change detection
|
|
152
|
-
const hash = await
|
|
142
|
+
const hash = await computeHash(content);
|
|
153
143
|
this.fileChecksums.set(path, hash);
|
|
154
144
|
// Write to local filesystem (use safe path resolution)
|
|
155
145
|
const localPath = await this.resolveSafePath(path);
|
|
@@ -258,7 +248,7 @@ export class WorkspaceSync {
|
|
|
258
248
|
}
|
|
259
249
|
// It's a regular file - check for changes
|
|
260
250
|
const content = await dntShim.Deno.readTextFile(localPath);
|
|
261
|
-
const newHash = await
|
|
251
|
+
const newHash = await computeHash(content);
|
|
262
252
|
const originalHash = this.fileChecksums.get(relativePath);
|
|
263
253
|
if (!originalHash) {
|
|
264
254
|
// New file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composite-node-execution.d.ts","sourceRoot":"","sources":["../../../../../src/src/workflow/executor/dag/composite-node-execution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"composite-node-execution.d.ts","sourceRoot":"","sources":["../../../../../src/src/workflow/executor/dag/composite-node-execution.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAOtD,UAAU,2BAA2B;IACnC,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrE;AAID,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAyD9B"}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
import { TIMEOUT_ERROR } from "../../../errors/index.js";
|
|
2
|
-
import { isVeryfrontError } from "../../../errors/http-error.js";
|
|
3
2
|
import { ensureError } from "../../../errors/veryfront-error.js";
|
|
4
3
|
import { parseDuration, validateRetryConfig } from "../../types.js";
|
|
5
|
-
import { sleep } from "
|
|
4
|
+
import { sleep } from "../../../utils/index.js";
|
|
6
5
|
import { createSetContextPatch } from "./context-patch.js";
|
|
7
|
-
|
|
8
|
-
const DEFAULT_RETRY_MAX_DELAY_MS = 30_000;
|
|
6
|
+
import { calculateRetryDelay, isRetryableWorkflowError } from "../retry-policy.js";
|
|
9
7
|
const DEFAULT_CANCELLATION_GRACE_PERIOD_MS = 1_000;
|
|
10
|
-
const RETRYABLE_STATUSES = new Set([408, 425, 429, 500, 502, 503, 504]);
|
|
11
|
-
const RETRYABLE_CODE_RE = /\b(ECONNRESET|ECONNREFUSED|ETIMEDOUT|EPIPE|EAI_AGAIN|ENOTFOUND)\b/;
|
|
12
8
|
const nonCooperativeErrors = new WeakSet();
|
|
13
9
|
export async function executeCompositeNodeWithPolicy(input) {
|
|
14
10
|
const { node, parentSignal, execute } = input;
|
|
@@ -126,22 +122,5 @@ function withAttempt(result, attempt) {
|
|
|
126
122
|
function isRetryableError(error, config) {
|
|
127
123
|
if (nonCooperativeErrors.has(error))
|
|
128
124
|
return false;
|
|
129
|
-
|
|
130
|
-
return config.retryIf(error);
|
|
131
|
-
if (isVeryfrontError(error))
|
|
132
|
-
return RETRYABLE_STATUSES.has(error.status);
|
|
133
|
-
const code = error.code;
|
|
134
|
-
const subject = typeof code === "string" ? code : error.message;
|
|
135
|
-
return RETRYABLE_CODE_RE.test(subject);
|
|
136
|
-
}
|
|
137
|
-
function calculateRetryDelay(attempt, config) {
|
|
138
|
-
const initialDelay = config?.initialDelay ?? DEFAULT_RETRY_INITIAL_DELAY_MS;
|
|
139
|
-
const maxDelay = config?.maxDelay ?? DEFAULT_RETRY_MAX_DELAY_MS;
|
|
140
|
-
let baseDelay = initialDelay;
|
|
141
|
-
if (config?.backoff === "exponential")
|
|
142
|
-
baseDelay = initialDelay * Math.pow(2, attempt - 1);
|
|
143
|
-
else if (config?.backoff === "linear")
|
|
144
|
-
baseDelay = initialDelay * attempt;
|
|
145
|
-
const jitter = baseDelay * 0.1 * (Math.random() * 2 - 1);
|
|
146
|
-
return Math.floor(Math.min(baseDelay + jitter, maxDelay));
|
|
125
|
+
return isRetryableWorkflowError(error, config);
|
|
147
126
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { parseDuration } from "../../types.js";
|
|
2
|
-
import { sleep } from "
|
|
2
|
+
import { sleep } from "../../../utils/index.js";
|
|
3
3
|
import { captureWorkflowSourceIntegrationPolicy } from "../../source-integration-policy.js";
|
|
4
4
|
import { applyContextPatch, applyRecordPatch, createRecordPatch, createSetContextPatch, mergeContextPatches, } from "./context-patch.js";
|
|
5
5
|
export async function executeLoopNodeStrategy(input) {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { NodeStatus, WorkflowNode } from "../../types.js";
|
|
2
2
|
export declare function deriveNodeStatus(completed: boolean, waiting: boolean): NodeStatus;
|
|
3
3
|
export declare function shouldCheckpoint(node: WorkflowNode): boolean;
|
|
4
|
-
export declare function sleep(ms: number, abortSignal?: AbortSignal): Promise<void>;
|
|
5
4
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/src/workflow/executor/dag/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE/D,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,CAIjF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAE5D
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/src/workflow/executor/dag/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE/D,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,UAAU,CAIjF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAE5D"}
|
|
@@ -8,20 +8,3 @@ export function deriveNodeStatus(completed, waiting) {
|
|
|
8
8
|
export function shouldCheckpoint(node) {
|
|
9
9
|
return node.config.checkpoint ?? false;
|
|
10
10
|
}
|
|
11
|
-
export function sleep(ms, abortSignal) {
|
|
12
|
-
abortSignal?.throwIfAborted();
|
|
13
|
-
return new Promise((resolve, reject) => {
|
|
14
|
-
const timeoutId = setTimeout(() => {
|
|
15
|
-
abortSignal?.removeEventListener("abort", onAbort);
|
|
16
|
-
resolve();
|
|
17
|
-
}, ms);
|
|
18
|
-
const onAbort = () => {
|
|
19
|
-
clearTimeout(timeoutId);
|
|
20
|
-
abortSignal?.removeEventListener("abort", onAbort);
|
|
21
|
-
reject(abortSignal?.reason);
|
|
22
|
-
};
|
|
23
|
-
abortSignal?.addEventListener("abort", onAbort, { once: true });
|
|
24
|
-
if (abortSignal?.aborted)
|
|
25
|
-
onAbort();
|
|
26
|
-
});
|
|
27
|
-
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RetryConfig } from "../types.js";
|
|
2
|
+
/** Default initial delay before first retry attempt */
|
|
3
|
+
export declare const DEFAULT_RETRY_INITIAL_DELAY_MS = 1000;
|
|
4
|
+
/** Default maximum delay between retry attempts */
|
|
5
|
+
export declare const DEFAULT_RETRY_MAX_DELAY_MS = 30000;
|
|
6
|
+
/**
|
|
7
|
+
* Shared transient-error classification for workflow retries. Callers are
|
|
8
|
+
* responsible for non-cooperative-error bookkeeping before consulting this.
|
|
9
|
+
*/
|
|
10
|
+
export declare function isRetryableWorkflowError(error: Error, config: RetryConfig | undefined): boolean;
|
|
11
|
+
/** Backoff delay (fixed/linear/exponential per config) with ±10% jitter. */
|
|
12
|
+
export declare function calculateRetryDelay(attempt: number, config: RetryConfig | undefined): number;
|
|
13
|
+
//# sourceMappingURL=retry-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-policy.d.ts","sourceRoot":"","sources":["../../../../src/src/workflow/executor/retry-policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,uDAAuD;AACvD,eAAO,MAAM,8BAA8B,OAAQ,CAAC;AAEpD,mDAAmD;AACnD,eAAO,MAAM,0BAA0B,QAAS,CAAC;AAYjD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,OAAO,CAc/F;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,CAU5F"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { isVeryfrontError } from "../../errors/http-error.js";
|
|
2
|
+
/** Default initial delay before first retry attempt */
|
|
3
|
+
export const DEFAULT_RETRY_INITIAL_DELAY_MS = 1_000;
|
|
4
|
+
/** Default maximum delay between retry attempts */
|
|
5
|
+
export const DEFAULT_RETRY_MAX_DELAY_MS = 30_000;
|
|
6
|
+
const RETRYABLE_STATUSES = new Set([408, 425, 429, 500, 502, 503, 504]);
|
|
7
|
+
/**
|
|
8
|
+
* Node/Deno transient network error codes. Matched as whole tokens against
|
|
9
|
+
* error.code (or, when a plain Error carries no code, its message). Unlike
|
|
10
|
+
* "429"/"503"/"timeout", these tokens are specific enough not to appear
|
|
11
|
+
* incidentally in unrelated error text.
|
|
12
|
+
*/
|
|
13
|
+
const RETRYABLE_CODE_RE = /\b(ECONNRESET|ECONNREFUSED|ETIMEDOUT|EPIPE|EAI_AGAIN|ENOTFOUND)\b/;
|
|
14
|
+
/**
|
|
15
|
+
* Shared transient-error classification for workflow retries. Callers are
|
|
16
|
+
* responsible for non-cooperative-error bookkeeping before consulting this.
|
|
17
|
+
*/
|
|
18
|
+
export function isRetryableWorkflowError(error, config) {
|
|
19
|
+
if (config?.retryIf)
|
|
20
|
+
return config.retryIf(error);
|
|
21
|
+
// Prefer structured signals over substring-matching the message: an error
|
|
22
|
+
// whose text merely contains "429" or "timeout" (e.g. "Found 429 items")
|
|
23
|
+
// must NOT be retried. VeryfrontError carries an HTTP-style status, so HTTP
|
|
24
|
+
// conditions (429/503/timeout) are classified by status, not text.
|
|
25
|
+
if (isVeryfrontError(error))
|
|
26
|
+
return RETRYABLE_STATUSES.has(error.status);
|
|
27
|
+
// System/network errors: use the stable `code` when present, else fall back
|
|
28
|
+
// to the message but only for the specific code tokens above.
|
|
29
|
+
const code = error.code;
|
|
30
|
+
const subject = typeof code === "string" ? code : error.message;
|
|
31
|
+
return RETRYABLE_CODE_RE.test(subject);
|
|
32
|
+
}
|
|
33
|
+
/** Backoff delay (fixed/linear/exponential per config) with ±10% jitter. */
|
|
34
|
+
export function calculateRetryDelay(attempt, config) {
|
|
35
|
+
const initialDelay = config?.initialDelay ?? DEFAULT_RETRY_INITIAL_DELAY_MS;
|
|
36
|
+
const maxDelay = config?.maxDelay ?? DEFAULT_RETRY_MAX_DELAY_MS;
|
|
37
|
+
let baseDelay = initialDelay;
|
|
38
|
+
if (config?.backoff === "exponential")
|
|
39
|
+
baseDelay = initialDelay * Math.pow(2, attempt - 1);
|
|
40
|
+
else if (config?.backoff === "linear")
|
|
41
|
+
baseDelay = initialDelay * attempt;
|
|
42
|
+
const jitter = baseDelay * 0.1 * (Math.random() * 2 - 1);
|
|
43
|
+
return Math.floor(Math.min(baseDelay + jitter, maxDelay));
|
|
44
|
+
}
|
|
@@ -45,18 +45,8 @@ export declare class StepExecutor {
|
|
|
45
45
|
private nonCooperativeErrors;
|
|
46
46
|
constructor(config?: StepExecutorConfig);
|
|
47
47
|
execute(node: WorkflowNode, context: WorkflowContext, abortSignal?: AbortSignal): Promise<StepResult>;
|
|
48
|
-
/** HTTP
|
|
49
|
-
private static readonly RETRYABLE_STATUSES;
|
|
50
|
-
/**
|
|
51
|
-
* Node/Deno transient network error codes. Matched as whole tokens against
|
|
52
|
-
* error.code (or, when a plain Error carries no code, its message). Unlike
|
|
53
|
-
* "429"/"503"/"timeout", these tokens are specific enough not to appear
|
|
54
|
-
* incidentally in unrelated error text.
|
|
55
|
-
*/
|
|
56
|
-
private static readonly RETRYABLE_CODE_RE;
|
|
48
|
+
/** Shared transient classification (HTTP statuses + network error codes) via retry-policy. */
|
|
57
49
|
private isRetryableError;
|
|
58
|
-
private calculateRetryDelay;
|
|
59
|
-
private sleep;
|
|
60
50
|
private resolveInput;
|
|
61
51
|
private executeWithTimeout;
|
|
62
52
|
private waitForCancellationGrace;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-executor.d.ts","sourceRoot":"","sources":["../../../../src/src/workflow/executor/step-executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAiB,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"step-executor.d.ts","sourceRoot":"","sources":["../../../../src/src/workflow/executor/step-executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAiB,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAuBhD,OAAO,KAAK,EACV,qBAAqB,EACrB,SAAS,EAGT,eAAe,EACf,YAAY,EACb,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AASpD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,qBAAqB,GAAG,SAAS,CAErE;AAoBD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,MAAM,EAAE,qBAAqB,GAAG,SAAS,EACzC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAuBZ;AAcD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,CAAC;IACnC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iGAAiG;IACjG,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3D,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACtD;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,oBAAoB,CAAwB;gBAExC,MAAM,GAAE,kBAAuB;IAIrC,OAAO,CACX,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,eAAe,EACxB,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,UAAU,CAAC;IA8EtB,8FAA8F;IAC9F,OAAO,CAAC,gBAAgB;YAOV,YAAY;YASZ,kBAAkB;YA2ClB,wBAAwB;YAqBxB,WAAW;YAYX,YAAY;YAwBZ,WAAW;IAuBzB,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,OAAO;IAIT,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAMhF,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;IAI7C,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS;IAI9E,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,GAAG,SAAS;IAU7E,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS;CAG9C"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
2
|
import { runWithCacheKeyContext, runWithoutCacheKeyContext, } from "../../cache/cache-key-builder.js";
|
|
3
3
|
import { runWithRequestContext } from "../../platform/adapters/fs/veryfront/request-context.js";
|
|
4
|
-
import { AGENT_NOT_FOUND, ensureError, INITIALIZATION_ERROR, INVALID_ARGUMENT,
|
|
4
|
+
import { AGENT_NOT_FOUND, ensureError, INITIALIZATION_ERROR, INVALID_ARGUMENT, ORCHESTRATION_ERROR, RESOURCE_NOT_FOUND, TIMEOUT_ERROR, } from "../../errors/index.js";
|
|
5
|
+
import { sleep } from "../../utils/index.js";
|
|
6
|
+
import { calculateRetryDelay, DEFAULT_RETRY_INITIAL_DELAY_MS, DEFAULT_RETRY_MAX_DELAY_MS, isRetryableWorkflowError, } from "./retry-policy.js";
|
|
5
7
|
import { parseDuration, validateRetryConfig } from "../types.js";
|
|
6
8
|
/**
|
|
7
9
|
* AsyncLocalStorage for workflow tenant context.
|
|
@@ -55,10 +57,6 @@ export function runWithWorkflowTenant(tenant, fn) {
|
|
|
55
57
|
: runWithoutCacheKeyContext(fn);
|
|
56
58
|
}));
|
|
57
59
|
}
|
|
58
|
-
/** Default initial delay before first retry attempt */
|
|
59
|
-
const DEFAULT_RETRY_INITIAL_DELAY_MS = 1_000;
|
|
60
|
-
/** Default maximum delay between retry attempts */
|
|
61
|
-
const DEFAULT_RETRY_MAX_DELAY_MS = 30_000;
|
|
62
60
|
const DEFAULT_RETRY = {
|
|
63
61
|
maxAttempts: 1,
|
|
64
62
|
backoff: "exponential",
|
|
@@ -115,7 +113,7 @@ export class StepExecutor {
|
|
|
115
113
|
abortSignal?.throwIfAborted();
|
|
116
114
|
lastError = ensureError(error);
|
|
117
115
|
if (attempt < maxAttempts && this.isRetryableError(lastError, retryConfig)) {
|
|
118
|
-
await
|
|
116
|
+
await sleep(calculateRetryDelay(attempt, retryConfig), abortSignal);
|
|
119
117
|
continue;
|
|
120
118
|
}
|
|
121
119
|
this.config.onStepError?.(node.id, lastError);
|
|
@@ -132,62 +130,13 @@ export class StepExecutor {
|
|
|
132
130
|
executionTime: Date.now() - startTime,
|
|
133
131
|
};
|
|
134
132
|
}
|
|
135
|
-
/** HTTP
|
|
136
|
-
static RETRYABLE_STATUSES = new Set([408, 425, 429, 500, 502, 503, 504]);
|
|
137
|
-
/**
|
|
138
|
-
* Node/Deno transient network error codes. Matched as whole tokens against
|
|
139
|
-
* error.code (or, when a plain Error carries no code, its message). Unlike
|
|
140
|
-
* "429"/"503"/"timeout", these tokens are specific enough not to appear
|
|
141
|
-
* incidentally in unrelated error text.
|
|
142
|
-
*/
|
|
143
|
-
static RETRYABLE_CODE_RE = /\b(ECONNRESET|ECONNREFUSED|ETIMEDOUT|EPIPE|EAI_AGAIN|ENOTFOUND)\b/;
|
|
133
|
+
/** Shared transient classification (HTTP statuses + network error codes) via retry-policy. */
|
|
144
134
|
isRetryableError(error, config) {
|
|
145
135
|
// Starting another attempt while the timed-out operation is still active
|
|
146
136
|
// would violate step isolation and allow concurrent external side effects.
|
|
147
137
|
if (this.nonCooperativeErrors.has(error))
|
|
148
138
|
return false;
|
|
149
|
-
|
|
150
|
-
return config.retryIf(error);
|
|
151
|
-
// Prefer structured signals over substring-matching the message: an error
|
|
152
|
-
// whose text merely contains "429" or "timeout" (e.g. "Found 429 items")
|
|
153
|
-
// must NOT be retried. VeryfrontError carries an HTTP-style status, so HTTP
|
|
154
|
-
// conditions (429/503/timeout) are classified by status, not text.
|
|
155
|
-
if (isVeryfrontError(error)) {
|
|
156
|
-
return StepExecutor.RETRYABLE_STATUSES.has(error.status);
|
|
157
|
-
}
|
|
158
|
-
// System/network errors: use the stable `code` when present, else fall back
|
|
159
|
-
// to the message but only for the specific code tokens above.
|
|
160
|
-
const code = error.code;
|
|
161
|
-
const subject = typeof code === "string" ? code : error.message;
|
|
162
|
-
return StepExecutor.RETRYABLE_CODE_RE.test(subject);
|
|
163
|
-
}
|
|
164
|
-
calculateRetryDelay(attempt, config) {
|
|
165
|
-
const initialDelay = config.initialDelay ?? DEFAULT_RETRY_INITIAL_DELAY_MS;
|
|
166
|
-
const maxDelay = config.maxDelay ?? DEFAULT_RETRY_MAX_DELAY_MS;
|
|
167
|
-
let baseDelay = initialDelay;
|
|
168
|
-
if (config.backoff === "exponential")
|
|
169
|
-
baseDelay = initialDelay * Math.pow(2, attempt - 1);
|
|
170
|
-
else if (config.backoff === "linear")
|
|
171
|
-
baseDelay = initialDelay * attempt;
|
|
172
|
-
const jitter = baseDelay * 0.1 * (Math.random() * 2 - 1);
|
|
173
|
-
return Math.floor(Math.min(baseDelay + jitter, maxDelay));
|
|
174
|
-
}
|
|
175
|
-
sleep(ms, abortSignal) {
|
|
176
|
-
abortSignal?.throwIfAborted();
|
|
177
|
-
return new Promise((resolve, reject) => {
|
|
178
|
-
const timeoutId = setTimeout(() => {
|
|
179
|
-
abortSignal?.removeEventListener("abort", onAbort);
|
|
180
|
-
resolve();
|
|
181
|
-
}, ms);
|
|
182
|
-
const onAbort = () => {
|
|
183
|
-
clearTimeout(timeoutId);
|
|
184
|
-
abortSignal?.removeEventListener("abort", onAbort);
|
|
185
|
-
reject(abortSignal?.reason);
|
|
186
|
-
};
|
|
187
|
-
abortSignal?.addEventListener("abort", onAbort, { once: true });
|
|
188
|
-
if (abortSignal?.aborted)
|
|
189
|
-
onAbort();
|
|
190
|
-
});
|
|
139
|
+
return isRetryableWorkflowError(error, config);
|
|
191
140
|
}
|
|
192
141
|
async resolveInput(input, context) {
|
|
193
142
|
if (input === undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-executor.d.ts","sourceRoot":"","sources":["../../../../src/src/workflow/executor/workflow-executor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workflow-executor.d.ts","sourceRoot":"","sources":["../../../../src/src/workflow/executor/workflow-executor.ts"],"names":[],"mappings":"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"}
|