Compare commits

...

2 Commits

Author SHA1 Message Date
Eric Allam f35d0538b1 WIP 2024-06-14 14:57:16 +01:00
Eric Allam e20ece8c29 WIP v3 esm builds 2024-06-14 14:03:45 +01:00
21 changed files with 868 additions and 566 deletions
+13 -13
View File
@@ -50,19 +50,19 @@
"@heroicons/react": "^2.0.12",
"@internationalized/date": "^3.5.1",
"@lezer/highlight": "^1.1.6",
"@opentelemetry/api": "^1.8.0",
"@opentelemetry/core": "^1.22.0",
"@opentelemetry/exporter-logs-otlp-http": "^0.49.1",
"@opentelemetry/exporter-trace-otlp-http": "^0.49.1",
"@opentelemetry/instrumentation": "^0.49.1",
"@opentelemetry/instrumentation-express": "^0.36.1",
"@opentelemetry/instrumentation-http": "^0.49.1",
"@opentelemetry/resources": "^1.22.0",
"@opentelemetry/sdk-logs": "^0.49.1",
"@opentelemetry/sdk-node": "^0.49.1",
"@opentelemetry/sdk-trace-base": "^1.22.0",
"@opentelemetry/sdk-trace-node": "^1.22.0",
"@opentelemetry/semantic-conventions": "^1.22.0",
"@opentelemetry/api": "1.9.0",
"@opentelemetry/core": "1.25.0",
"@opentelemetry/exporter-logs-otlp-http": "0.52.0",
"@opentelemetry/exporter-trace-otlp-http": "0.52.0",
"@opentelemetry/instrumentation": "0.52.0",
"@opentelemetry/instrumentation-express": "0.40.1",
"@opentelemetry/instrumentation-http": "0.52.0",
"@opentelemetry/resources": "1.25.0",
"@opentelemetry/sdk-logs": "0.52.0",
"@opentelemetry/sdk-node": "0.52.0",
"@opentelemetry/sdk-trace-base": "1.25.0",
"@opentelemetry/sdk-trace-node": "1.25.0",
"@opentelemetry/semantic-conventions": "1.25.0",
"@popperjs/core": "^2.11.8",
"@prisma/instrumentation": "^5.11.0",
"@radix-ui/react-alert-dialog": "^1.0.4",
+12 -12
View File
@@ -75,18 +75,18 @@
"@anatine/esbuild-decorators": "^0.2.19",
"@clack/prompts": "^0.7.0",
"@depot/cli": "0.0.1-cli.2.55.0",
"@opentelemetry/api": "^1.8.0",
"@opentelemetry/api-logs": "^0.49.1",
"@opentelemetry/exporter-logs-otlp-http": "^0.49.1",
"@opentelemetry/exporter-trace-otlp-http": "^0.49.1",
"@opentelemetry/instrumentation": "^0.49.1",
"@opentelemetry/instrumentation-fetch": "^0.49.1",
"@opentelemetry/resources": "^1.22.0",
"@opentelemetry/sdk-logs": "^0.49.1",
"@opentelemetry/sdk-node": "^0.49.1",
"@opentelemetry/sdk-trace-base": "^1.22.0",
"@opentelemetry/sdk-trace-node": "^1.22.0",
"@opentelemetry/semantic-conventions": "^1.22.0",
"@opentelemetry/api": "1.9.0",
"@opentelemetry/api-logs": "0.52.0",
"@opentelemetry/exporter-logs-otlp-http": "0.52.0",
"@opentelemetry/exporter-trace-otlp-http": "0.52.0",
"@opentelemetry/instrumentation": "0.52.0",
"@opentelemetry/instrumentation-fetch": "0.52.0",
"@opentelemetry/resources": "1.25.0",
"@opentelemetry/sdk-logs": "0.52.0",
"@opentelemetry/sdk-node": "0.52.0",
"@opentelemetry/sdk-trace-base": "1.25.0",
"@opentelemetry/sdk-trace-node": "1.25.0",
"@opentelemetry/semantic-conventions": "1.25.0",
"@trigger.dev/core": "workspace:3.0.0-beta.37",
"@types/degit": "^2.8.3",
"chalk": "^5.2.0",
+8 -3
View File
@@ -443,7 +443,7 @@ function useDev({
sourcemap: "external", // does not set the //# sourceMappingURL= comment in the file, we handle it ourselves
logLevel: "error",
platform: "node",
format: "cjs", // This is needed to support opentelemetry instrumentation that uses module patching
format: "esm", // This is needed to support opentelemetry instrumentation that uses module patching
target: ["node18", "es2020"],
outdir: "out",
define: {
@@ -512,7 +512,7 @@ function useDev({
}
// Create a file at join(dir, ".trigger", path) with the fileContents
const fullPath = join(config.projectDir, ".trigger", `${contentHash}.js`);
const fullPath = join(config.projectDir, ".trigger", `${contentHash}.mjs`);
const sourceMapPath = `${fullPath}.map`;
const outputFileWithSourceMap = `${
@@ -800,7 +800,12 @@ async function gatherRequiredDependencies(
});
for (const file of outputMeta.imports) {
if ((file.kind !== "require-call" && file.kind !== "dynamic-import") || !file.external) {
if (
(file.kind !== "require-call" &&
file.kind !== "dynamic-import" &&
file.kind !== "import-statement") ||
!file.external
) {
continue;
}
+2
View File
@@ -41,6 +41,8 @@ export function bundleTriggerDevCore(buildIdentifier: string, tsconfigPath?: str
name: "trigger-bundle-core",
setup(build) {
build.onResolve({ filter: /.*/ }, (args) => {
return undefined;
if (!args.path.startsWith("@trigger.dev/core/v3")) {
return undefined;
}
+1 -1
View File
@@ -46,6 +46,6 @@
"node": ">=18.0.0"
},
"dependencies": {
"@opentelemetry/api": "^1.8.0"
"@opentelemetry/api": "1.9.0"
}
}
+21 -12
View File
@@ -37,6 +37,14 @@
"require": "./dist/v3/otel/index.js",
"types": "./dist/v3/otel/index.d.ts"
},
"./v3/schemas": {
"import": {
"types": "./dist/v3/schemas/index.d.mts",
"default": "./dist/v3/schemas/index.mjs"
},
"require": "./dist/v3/schemas/index.js",
"types": "./dist/v3/schemas/index.d.ts"
},
"./v3/zodfetch": {
"import": {
"types": "./dist/v3/zodfetch.d.mts",
@@ -131,17 +139,17 @@
},
"dependencies": {
"@google-cloud/precise-date": "^4.0.0",
"@opentelemetry/api": "^1.8.0",
"@opentelemetry/api-logs": "^0.48.0",
"@opentelemetry/exporter-logs-otlp-http": "^0.49.1",
"@opentelemetry/exporter-trace-otlp-http": "^0.49.1",
"@opentelemetry/instrumentation": "^0.49.1",
"@opentelemetry/resources": "^1.22.0",
"@opentelemetry/sdk-logs": "^0.49.1",
"@opentelemetry/sdk-node": "^0.49.1",
"@opentelemetry/sdk-trace-base": "^1.22.0",
"@opentelemetry/sdk-trace-node": "^1.22.0",
"@opentelemetry/semantic-conventions": "^1.22.0",
"@opentelemetry/api": "1.9.0",
"@opentelemetry/api-logs": "0.52.0",
"@opentelemetry/exporter-logs-otlp-http": "0.52.0",
"@opentelemetry/exporter-trace-otlp-http": "0.52.0",
"@opentelemetry/instrumentation": "0.52.0",
"@opentelemetry/resources": "1.25.0",
"@opentelemetry/sdk-logs": "0.52.0",
"@opentelemetry/sdk-node": "0.52.0",
"@opentelemetry/sdk-trace-base": "1.25.0",
"@opentelemetry/sdk-trace-node": "1.25.0",
"@opentelemetry/semantic-conventions": "1.25.0",
"form-data-encoder": "^4.0.2",
"humanize-duration": "^3.27.3",
"socket.io-client": "4.7.4",
@@ -149,7 +157,8 @@
"ulidx": "^2.2.1",
"zod": "3.22.3",
"zod-error": "1.5.0",
"zod-validation-error": "^1.5.0"
"zod-validation-error": "^1.5.0",
"source-map-support": "^0.5.21"
},
"devDependencies": {
"@trigger.dev/tsconfig": "workspace:*",
+3
View File
@@ -1,5 +1,8 @@
import { Span, SpanStatusCode } from "@opentelemetry/api";
import type { Tracer } from "@opentelemetry/api";
import type { Logger } from "@opentelemetry/api-logs";
export type { Tracer as OtelTracer, Logger as OtelLogger };
export { TracingSDK, type TracingSDKConfig, type TracingDiagnosticLogLevel } from "./tracingSDK";
export function recordSpanException(span: Span, error: unknown) {
+2 -5
View File
@@ -2,10 +2,7 @@ import { DiagConsoleLogger, DiagLogLevel, TracerProvider, diag } from "@opentele
import { logs } from "@opentelemetry/api-logs";
import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
import {
registerInstrumentations,
type InstrumentationOption,
} from "@opentelemetry/instrumentation";
import { registerInstrumentations, type Instrumentation } from "@opentelemetry/instrumentation";
import {
DetectorSync,
IResource,
@@ -84,7 +81,7 @@ export type TracingSDKConfig = {
url: string;
forceFlushTimeoutMillis?: number;
resource?: IResource;
instrumentations?: InstrumentationOption[];
instrumentations?: Instrumentation[];
diagLogLevel?: TracingDiagnosticLogLevel;
};
+2 -2
View File
@@ -1,7 +1,7 @@
import { FailureFnParams, InitFnParams, StartFnParams, SuccessFnParams } from ".";
import { LogLevel } from "../logger/taskLogger";
import { RetryOptions } from "../schemas";
import type { InstrumentationOption } from "@opentelemetry/instrumentation";
import type { Instrumentation } from "@opentelemetry/instrumentation";
export interface ProjectConfig {
project: string;
@@ -34,7 +34,7 @@ export interface ProjectConfig {
/**
* The OpenTelemetry instrumentations to enable
*/
instrumentations?: InstrumentationOption[];
instrumentations?: Instrumentation[];
/**
* Set the log level for the logger. Defaults to "info", so you will see "log", "info", "warn", and "error" messages, but not "debug" messages.
+2 -1
View File
@@ -4,6 +4,7 @@ export { PreciseWallClock as DurableClock } from "../clock/preciseWallClock";
export { getEnvVar } from "../utils/getEnv";
export { OtelTaskLogger, logLevels } from "../logger/taskLogger";
export { ConsoleInterceptor } from "../consoleInterceptor";
export { TracingSDK, type TracingDiagnosticLogLevel, recordSpanException } from "../otel";
export { StandardTaskCatalog } from "../task-catalog/standardTaskCatalog";
export { TaskContextSpanProcessor, TaskContextLogProcessor } from "../taskContext/otelProcessors";
import "source-map-support/register.js";
+1
View File
@@ -16,6 +16,7 @@ export default defineConfig({
"./src/v3/prod/index.ts",
"./src/v3/workers/index.ts",
"./src/v3/zodfetch.ts",
"./src/v3/schemas/index.ts",
],
external: ["node:stream"],
});
+11 -3
View File
@@ -29,6 +29,14 @@
"require": "./dist/v3/index.js",
"types": "./dist/v3/index.d.ts"
},
"./v3/unstable-core-do-not-import": {
"import": {
"types": "./dist/v3/unstable-core-do-not-import.d.mts",
"default": "./dist/v3/unstable-core-do-not-import.mjs"
},
"require": "./dist/v3/unstable-core-do-not-import.js",
"types": "./dist/v3/unstable-core-do-not-import.d.ts"
},
"./package.json": "./package.json"
},
"typesVersions": {
@@ -45,9 +53,9 @@
"typecheck": "tsc --noEmit"
},
"dependencies": {
"@opentelemetry/api": "^1.8.0",
"@opentelemetry/api-logs": "^0.48.0",
"@opentelemetry/semantic-conventions": "^1.22.0",
"@opentelemetry/api": "1.9.0",
"@opentelemetry/api-logs": "0.52.0",
"@opentelemetry/semantic-conventions": "1.25.0",
"@trigger.dev/core": "workspace:3.0.0-beta.37",
"@trigger.dev/core-backend": "workspace:3.0.0-beta.37",
"chalk": "^5.2.0",
@@ -0,0 +1,14 @@
export * from "@trigger.dev/core/v3/otel";
export * from "@trigger.dev/core/v3/workers";
export * from "@trigger.dev/core/v3/zodfetch";
export * from "@trigger.dev/core/v3/zodMessageHandler";
export * from "@trigger.dev/core/v3/zodNamespace";
export * from "@trigger.dev/core/v3/zodSocket";
export * from "@trigger.dev/core/v3/zodIpc";
export * from "@trigger.dev/core/v3/utils/structuredLogger";
export * from "@trigger.dev/core/v3/dev";
export * from "@trigger.dev/core/v3/prod";
export * from "@trigger.dev/core/v3/schemas";
import { taskContext, taskCatalog, apiClientManager } from "@trigger.dev/core/v3";
export { taskContext, taskCatalog, apiClientManager };
+1 -1
View File
@@ -3,7 +3,7 @@ import { packageOptions } from "@trigger.dev/tsup";
const options: Options = {
...packageOptions,
entry: ["./src/index.ts", "./src/v3/index.ts"],
entry: ["./src/index.ts", "./src/v3/index.ts", "./src/v3/unstable-core-do-not-import.ts"],
};
export default defineConfigTSUP(options);
+610 -498
View File
File diff suppressed because it is too large Load Diff
+15 -15
View File
@@ -32,21 +32,21 @@
"yt-dlp-wrap": "^2.3.12"
},
"devDependencies": {
"@opentelemetry/api": "^1.8.0",
"@opentelemetry/core": "^1.22.0",
"@opentelemetry/exporter-logs-otlp-http": "^0.49.1",
"@opentelemetry/exporter-trace-otlp-http": "^0.49.1",
"@opentelemetry/instrumentation": "^0.49.1",
"@opentelemetry/instrumentation-express": "^0.36.1",
"@opentelemetry/instrumentation-fetch": "^0.49.1",
"@opentelemetry/instrumentation-http": "^0.49.1",
"@opentelemetry/api": "1.9.0",
"@opentelemetry/core": "1.25.0",
"@opentelemetry/exporter-logs-otlp-http": "0.52.0",
"@opentelemetry/exporter-trace-otlp-http": "0.52.0",
"@opentelemetry/instrumentation": "0.52.0",
"@opentelemetry/instrumentation-express": "0.40.1",
"@opentelemetry/instrumentation-fetch": "0.52.0",
"@opentelemetry/instrumentation-http": "0.52.0",
"@opentelemetry/instrumentation-undici": "0.2.0",
"@opentelemetry/resources": "^1.22.0",
"@opentelemetry/sdk-logs": "^0.49.1",
"@opentelemetry/sdk-node": "^0.49.1",
"@opentelemetry/sdk-trace-base": "^1.22.0",
"@opentelemetry/sdk-trace-node": "^1.22.0",
"@opentelemetry/semantic-conventions": "^1.22.0",
"@opentelemetry/resources": "1.25.0",
"@opentelemetry/sdk-logs": "0.52.0",
"@opentelemetry/sdk-node": "0.52.0",
"@opentelemetry/sdk-trace-base": "1.25.0",
"@opentelemetry/sdk-trace-node": "1.25.0",
"@opentelemetry/semantic-conventions": "1.25.0",
"@trigger.dev/tsconfig": "workspace:*",
"@types/node": "20.4.2",
"@types/react": "^18.3.1",
@@ -55,4 +55,4 @@
"tsconfig-paths": "^4.2.0",
"typescript": "^5.3.0"
}
}
}
+22
View File
@@ -0,0 +1,22 @@
{
"name": "@references/v3-experiment",
"version": "0.1.0",
"private": true,
"type": "module",
"scripts": {
"dev": "node --no-warnings=ExperimentalWarning -r dotenv/config --loader ts-node/esm --inspect ./src/dev.ts"
},
"dependencies": {
"@traceloop/instrumentation-openai": "^0.3.9",
"@trigger.dev/sdk": "workspace:*",
"openai": "^4.47.0"
},
"devDependencies": {
"@types/node": "20.4.2",
"trigger.dev": "workspace:*",
"ts-node": "^10.9.2",
"tsconfig-paths": "^4.2.0",
"typescript": "^5.4.0",
"dotenv": "16.4.5"
}
}
+51
View File
@@ -0,0 +1,51 @@
import type { TriggerConfig } from "@trigger.dev/sdk/v3";
import {
StandardTaskCatalog,
type TracingDiagnosticLogLevel,
TracingSDK,
ZodMessageSender,
childToWorkerMessages,
taskCatalog,
type OtelTracer,
type OtelLogger,
} from "@trigger.dev/sdk/v3/unstable-core-do-not-import";
import * as importedConfig from "./trigger.config.js";
export const tracingSDK = new TracingSDK({
url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT ?? "http://0.0.0.0:4318",
instrumentations: importedConfig.config?.instrumentations ?? [],
diagLogLevel: (process.env.OTEL_LOG_LEVEL as TracingDiagnosticLogLevel) ?? "none",
});
export const otelTracer: OtelTracer = tracingSDK.getTracer("trigger-dev-worker", "v3.1.0-beta.0");
export const otelLogger: OtelLogger = tracingSDK.getLogger("trigger-dev-worker", "v3.1.0-beta.0");
export const sender = new ZodMessageSender({
schema: childToWorkerMessages,
sender: async (message) => {
process.send?.(message);
},
});
taskCatalog.setGlobalTaskCatalog(new StandardTaskCatalog());
import * as openai from "./trigger/openai.js";
type TaskFileImport = Record<string, unknown>;
const TaskFileImports: Record<string, TaskFileImport> = {};
const TaskFiles: Record<
string,
{ triggerDir: string; importPath: string; importName: string; filePath: string }
> = {};
TaskFileImports["openai"] = openai;
TaskFiles["openai"] = {
triggerDir: "/Users/eric/code/triggerdotdev/trigger.dev/references/v3-experiment/src/trigger",
importPath: "src/trigger/openai.ts",
importName: "openai",
filePath: "src/trigger/openai.ts",
};
console.log(openai);
console.log(importedConfig.config);
@@ -0,0 +1,18 @@
import type { TriggerConfig } from "@trigger.dev/sdk/v3";
import { OpenAIInstrumentation } from "@traceloop/instrumentation-openai";
export const config: TriggerConfig = {
project: "yubjwjsfkxnylobaqvqz",
retries: {
enabledInDev: true,
default: {
maxAttempts: 4,
minTimeoutInMs: 1000,
maxTimeoutInMs: 10000,
factor: 2,
randomize: true,
},
},
enableConsoleLogging: true,
instrumentations: [new OpenAIInstrumentation()],
};
@@ -0,0 +1,32 @@
import { logger, task } from "@trigger.dev/sdk/v3";
import OpenAI from "openai";
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY,
});
export const openaiTask = task({
id: "openai-task",
retry: {
maxAttempts: 1,
},
run: async (payload: { prompt: string }) => {
const chatCompletion = await openai.chat.completions.create({
messages: [{ role: "user", content: payload.prompt }],
model: "gpt-3.5-turbo",
});
return chatCompletion.choices[0]?.message.content;
},
handleError: async (payload, err, { ctx, retryAt }) => {
if (err instanceof OpenAI.APIError) {
logger.log("OpenAI API error", { err });
return {
error: new Error("Custom OpenAI API error"),
retryDelayInMs: 10000,
};
}
},
});
+27
View File
@@ -0,0 +1,27 @@
{
"include": ["./src/**/*.ts", "trigger.config.ts"],
"compilerOptions": {
/* Base Options: */
"esModuleInterop": true,
"skipLibCheck": true,
"target": "es2022",
"allowJs": true,
"resolveJsonModule": true,
"moduleDetection": "force",
"isolatedModules": true,
"verbatimModuleSyntax": true,
/* Strictness */
"strict": true,
"noUncheckedIndexedAccess": true,
"noImplicitOverride": true,
/* If transpiling with TypeScript: */
"module": "NodeNext",
"outDir": "dist",
"sourceMap": true,
/* If your code doesn't run in the DOM: */
"lib": ["es2022"]
}
}