inngest 4.9.0 → 4.10.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.
Files changed (38) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/components/InngestMetadata.cjs +1 -1
  3. package/components/InngestMetadata.cjs.map +1 -1
  4. package/components/InngestMetadata.d.cts.map +1 -1
  5. package/components/InngestMetadata.d.ts.map +1 -1
  6. package/components/InngestMetadata.js +1 -1
  7. package/components/InngestMetadata.js.map +1 -1
  8. package/components/InngestScore.cjs +1 -1
  9. package/components/InngestScore.cjs.map +1 -1
  10. package/components/InngestScore.d.cts.map +1 -1
  11. package/components/InngestScore.d.ts.map +1 -1
  12. package/components/InngestScore.js +1 -1
  13. package/components/InngestScore.js.map +1 -1
  14. package/components/execution/engine.cjs +2 -2
  15. package/components/execution/engine.cjs.map +1 -1
  16. package/components/execution/engine.js +2 -2
  17. package/components/execution/engine.js.map +1 -1
  18. package/components/execution/otel/aiExtractor.cjs +50 -11
  19. package/components/execution/otel/aiExtractor.cjs.map +1 -1
  20. package/components/execution/otel/aiExtractor.d.cts +5 -0
  21. package/components/execution/otel/aiExtractor.d.ts +5 -0
  22. package/components/execution/otel/aiExtractor.js +50 -11
  23. package/components/execution/otel/aiExtractor.js.map +1 -1
  24. package/components/execution/otel/middleware.d.cts +5 -5
  25. package/components/execution/otel/middleware.d.ts +5 -5
  26. package/components/realtime/types.d.cts +3 -3
  27. package/components/realtime/types.d.cts.map +1 -1
  28. package/components/realtime/types.d.ts +3 -3
  29. package/components/realtime/types.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/types.d.cts +4 -4
  32. package/types.d.ts +4 -4
  33. package/version.cjs +1 -1
  34. package/version.cjs.map +1 -1
  35. package/version.d.cts +1 -1
  36. package/version.d.ts +1 -1
  37. package/version.js +1 -1
  38. package/version.js.map +1 -1
@@ -1,9 +1,10 @@
1
1
 
2
2
  //#region src/components/execution/otel/aiExtractor.ts
3
- function textField(field, source) {
3
+ function textField(field, source, fallbackSources) {
4
4
  return {
5
5
  field,
6
6
  source,
7
+ fallbackSources,
7
8
  valueType: "text",
8
9
  merge: "replace"
9
10
  };
@@ -16,6 +17,14 @@ function numberField(field, source, merge) {
16
17
  merge
17
18
  };
18
19
  }
20
+ function stringListField(field, source) {
21
+ return {
22
+ field,
23
+ source,
24
+ valueType: "stringList",
25
+ merge: "replace"
26
+ };
27
+ }
19
28
  /**
20
29
  * Every `gen_ai.*` attribute we capture, mapped to its canonical field.
21
30
  *
@@ -25,8 +34,9 @@ function numberField(field, source, merge) {
25
34
  const FIELD_SPECS = [
26
35
  textField("requestModel", "gen_ai.request.model"),
27
36
  textField("responseModel", "gen_ai.response.model"),
28
- textField("provider", "gen_ai.provider.name"),
37
+ textField("provider", "gen_ai.provider.name", ["gen_ai.system"]),
29
38
  textField("responseId", "gen_ai.response.id"),
39
+ stringListField("finishReasons", "gen_ai.response.finish_reasons"),
30
40
  numberField("inputTokens", "gen_ai.usage.input_tokens", "sum"),
31
41
  numberField("outputTokens", "gen_ai.usage.output_tokens", "sum"),
32
42
  numberField("totalTokens", "gen_ai.usage.total_tokens", "sum"),
@@ -47,12 +57,22 @@ function parseNumericAttribute(value) {
47
57
  return Number.isFinite(num) ? num : void 0;
48
58
  }
49
59
  /**
60
+ * Coerces an attribute to a list of non-empty strings, or `undefined` when it
61
+ * yields none. OTLP arrays may carry non-string or empty entries; those are
62
+ * dropped, and an array that reduces to nothing is treated as absent.
63
+ */
64
+ function parseStringListAttribute(value) {
65
+ const strings = (Array.isArray(value) ? value : [value]).filter((item) => typeof item === "string" && item !== "");
66
+ return strings.length > 0 ? strings : void 0;
67
+ }
68
+ /**
50
69
  * Extracts {@link AIMetadata} from a span's attributes.
51
70
  *
52
71
  * Only the allowlisted {@link FIELD_SPECS} are read. Every other attribute is
53
72
  * ignored. Numeric fields accept numbers and quoted numeric strings and are
54
73
  * otherwise dropped, as OTLP/JSON may encode int64 as a quoted string. Text
55
- * fields are dropped when empty.
74
+ * fields are dropped when empty. String-list fields keep only non-empty string
75
+ * entries and are dropped when none remain.
56
76
  *
57
77
  * Returns an empty object for spans carrying no recognised `gen_ai.*`
58
78
  * attributes.
@@ -63,14 +83,29 @@ function parseNumericAttribute(value) {
63
83
  const extractAIMetadataFromAttributes = (attributes) => {
64
84
  const metadata = {};
65
85
  for (const spec of FIELD_SPECS) {
66
- const value = attributes[spec.source];
67
- if (value === void 0) continue;
68
- if (spec.valueType === "text") {
69
- const text = typeof value === "string" ? value : String(value);
70
- if (text !== "") metadata[spec.field] = text;
71
- } else {
72
- const num = parseNumericAttribute(value);
73
- if (num !== void 0) metadata[spec.field] = num;
86
+ const sources = [spec.source, ...spec.fallbackSources ?? []];
87
+ for (const source of sources) {
88
+ const value = attributes[source];
89
+ if (value === void 0) continue;
90
+ if (spec.valueType === "text") {
91
+ const text = typeof value === "string" ? value : String(value);
92
+ if (text !== "") {
93
+ metadata[spec.field] = text;
94
+ break;
95
+ }
96
+ } else if (spec.valueType === "stringList") {
97
+ const list = parseStringListAttribute(value);
98
+ if (list !== void 0) {
99
+ metadata[spec.field] = list;
100
+ break;
101
+ }
102
+ } else {
103
+ const num = parseNumericAttribute(value);
104
+ if (num !== void 0) {
105
+ metadata[spec.field] = num;
106
+ break;
107
+ }
108
+ }
74
109
  }
75
110
  }
76
111
  return metadata;
@@ -99,6 +134,10 @@ const aggregate = (a, b) => {
99
134
  const bValue = b[spec.field];
100
135
  if (bValue === void 0) continue;
101
136
  out[spec.field] = bValue;
137
+ } else {
138
+ const bValue = b[spec.field];
139
+ if (bValue === void 0) continue;
140
+ out[spec.field] = bValue;
102
141
  }
103
142
  return out;
104
143
  };
@@ -1 +1 @@
1
- {"version":3,"file":"aiExtractor.cjs","names":["metadata: AIMetadata","out: AIMetadata","values: Record<string, unknown>"],"sources":["../../../../src/components/execution/otel/aiExtractor.ts"],"sourcesContent":["import type { Attributes } from \"@opentelemetry/api\";\n\n/**\n * Canonical AI metadata extracted from a span's OpenTelemetry GenAI semantic\n * convention (`gen_ai.*`) attributes.\n *\n * The fields below are an explicit **allowlist**: only these are ever read from\n * a span (see {@link FIELD_SPECS}). Anything not mapped — prompt/response\n * content, messages, tool calls, embeddings payloads, and other\n * potentially-sensitive or bulky attributes — is not captured.\n *\n * For each category we describe how multiple AIMetadata values are aggregated\n * (see {@link aggregate}).\n */\nexport interface AIMetadata {\n // Identity & classification (last-write-wins).\n\n /** The requested model, e.g. `gpt-4.1-nano`. */\n requestModel?: string;\n /**\n * The model that actually served the request. This is often a dated snapshot\n * of the requested {@link AIMetadata.requestModel} (e.g.\n * `gpt-4.1-nano-2025-04-14`).\n */\n responseModel?: string;\n /** The AI provider that served the request (e.g. `openai`) */\n provider?: string;\n /** The provider's identifier for the response, e.g. `chatcmpl-...`. */\n responseId?: string;\n\n // Token usage (summed).\n\n /** The number of input tokens consumed by the request. */\n inputTokens?: number;\n /** The number of output tokens produced by the response. */\n outputTokens?: number;\n /** The total tokens consumed, as reported by the provider. */\n totalTokens?: number;\n /**\n * Cached input tokens read from the prompt cache. Providers differ on\n * accounting. OpenAI's cached tokens are a subset of\n * {@link AIMetadata.inputTokens}, Anthropic's are additive. Callers must\n * not assume a single relationship.\n */\n cacheReadTokens?: number;\n /** Tokens written to the prompt cache. */\n cacheCreationTokens?: number;\n /** Reasoning/thinking tokens, when the emitter reports them separately. */\n reasoningTokens?: number;\n\n // Request / inference parameters (last-write-wins). These describe the\n // request the caller made, not the response, and are stored raw as the\n // emitter reports them.\n\n /** Sampling temperature requested, e.g. `0.7`. */\n temperature?: number;\n /** Nucleus sampling probability mass requested (`top_p`), e.g. `0.9`. */\n topP?: number;\n /** Upper bound on tokens to generate (`max_tokens`). */\n maxTokens?: number;\n /** Frequency penalty requested. */\n frequencyPenalty?: number;\n /** Presence penalty requested. */\n presencePenalty?: number;\n /** Sampling seed requested, when the emitter reports it. */\n seed?: number;\n}\n\ntype ValueType = \"text\" | \"number\";\ntype MergeStrategy = \"replace\" | \"sum\";\n\n/**\n * Derives the subset of AIMetadata keys whose assigned value matches TValue.\n *\n * AIMetadata fields are optional (`model?: string`), so each field's type is\n * effectively `string | undefined` or `number | undefined`. `Exclude` removes\n * `undefined` before checking the value type, and `-?` prevents optional fields\n * from adding `undefined` back into the final key union.\n */\ntype FieldsWithValue<TValue> = {\n [TField in keyof AIMetadata]-?: Exclude<\n AIMetadata[TField],\n undefined\n > extends TValue\n ? TField\n : never;\n}[keyof AIMetadata];\n\ntype TextField = FieldsWithValue<string>;\ntype NumberField = FieldsWithValue<number>;\n\ninterface BaseFieldSpec {\n /** The source `gen_ai.*` attribute key. */\n source: string;\n valueType: ValueType;\n merge: MergeStrategy;\n}\n\ninterface TextFieldSpec extends BaseFieldSpec {\n /** The canonical {@link AIMetadata} field this populates. */\n field: TextField;\n valueType: \"text\";\n merge: \"replace\";\n}\n\ninterface NumberFieldSpec extends BaseFieldSpec {\n /** The canonical {@link AIMetadata} field this populates. */\n field: NumberField;\n valueType: \"number\";\n}\n\ntype FieldSpec = TextFieldSpec | NumberFieldSpec;\n\nfunction textField(field: TextField, source: string): TextFieldSpec {\n return {\n field,\n source,\n valueType: \"text\",\n merge: \"replace\",\n };\n}\n\nfunction numberField(\n field: NumberField,\n source: string,\n merge: MergeStrategy,\n): NumberFieldSpec {\n return {\n field,\n source,\n valueType: \"number\",\n merge,\n };\n}\n\n/**\n * Every `gen_ai.*` attribute we capture, mapped to its canonical field.\n *\n * Anything not listed here (prompt/response content, messages, tool calls,\n * unknown keys) is ignored.\n */\nexport const FIELD_SPECS = [\n // Identity & classification.\n textField(\"requestModel\", \"gen_ai.request.model\"),\n textField(\"responseModel\", \"gen_ai.response.model\"),\n textField(\"provider\", \"gen_ai.provider.name\"),\n textField(\"responseId\", \"gen_ai.response.id\"),\n\n // Token usage.\n numberField(\"inputTokens\", \"gen_ai.usage.input_tokens\", \"sum\"),\n numberField(\"outputTokens\", \"gen_ai.usage.output_tokens\", \"sum\"),\n numberField(\"totalTokens\", \"gen_ai.usage.total_tokens\", \"sum\"),\n numberField(\"cacheReadTokens\", \"gen_ai.usage.cache_read.input_tokens\", \"sum\"),\n numberField(\n \"cacheCreationTokens\",\n \"gen_ai.usage.cache_creation.input_tokens\",\n \"sum\",\n ),\n numberField(\"reasoningTokens\", \"gen_ai.usage.reasoning.output_tokens\", \"sum\"),\n\n // Request / inference parameters. These describe the request, not a quantity,\n // so they replace rather than sum when a step makes several calls.\n numberField(\"temperature\", \"gen_ai.request.temperature\", \"replace\"),\n numberField(\"topP\", \"gen_ai.request.top_p\", \"replace\"),\n numberField(\"maxTokens\", \"gen_ai.request.max_tokens\", \"replace\"),\n numberField(\n \"frequencyPenalty\",\n \"gen_ai.request.frequency_penalty\",\n \"replace\",\n ),\n numberField(\"presencePenalty\", \"gen_ai.request.presence_penalty\", \"replace\"),\n numberField(\"seed\", \"gen_ai.request.seed\", \"replace\"),\n] as const satisfies readonly FieldSpec[];\n\nfunction parseNumericAttribute(value: unknown): number | undefined {\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? value : undefined;\n }\n\n if (typeof value !== \"string\" || value === \"\") {\n return undefined;\n }\n\n const num = Number(value);\n return Number.isFinite(num) ? num : undefined;\n}\n\n/**\n * Extracts {@link AIMetadata} from a span's attributes.\n *\n * Only the allowlisted {@link FIELD_SPECS} are read. Every other attribute is\n * ignored. Numeric fields accept numbers and quoted numeric strings and are\n * otherwise dropped, as OTLP/JSON may encode int64 as a quoted string. Text\n * fields are dropped when empty.\n *\n * Returns an empty object for spans carrying no recognised `gen_ai.*`\n * attributes.\n *\n * @param attributes - The span attributes, as exposed by\n * `ReadableSpan.attributes`.\n */\nexport const extractAIMetadataFromAttributes = (\n attributes: Attributes,\n): AIMetadata => {\n const metadata: AIMetadata = {};\n\n for (const spec of FIELD_SPECS) {\n const value = attributes[spec.source];\n if (value === undefined) {\n continue;\n }\n\n if (spec.valueType === \"text\") {\n const text = typeof value === \"string\" ? value : String(value);\n if (text !== \"\") {\n metadata[spec.field] = text;\n }\n } else {\n const num = parseNumericAttribute(value);\n if (num !== undefined) {\n metadata[spec.field] = num;\n }\n }\n }\n\n return metadata;\n};\n\n/**\n * Aggregates two {@link AIMetadata} values, folding a later call's metadata into\n * an earlier accumulator for a single step.\n *\n * - Token-count fields (`merge: \"sum\"`) are **summed**, so a step that makes\n * several LLM calls reports their combined usage.\n * - Every other field uses `merge: \"replace\"` (`b` overwrites `a`)\n *\n * A field is present in the result only when at least one input supplies it.\n *\n * @param a - The accumulator (earlier calls).\n * @param b - The later metadata, whose values win on conflict (and add for sums).\n */\nexport const aggregate = (a: AIMetadata, b: AIMetadata): AIMetadata => {\n const out: AIMetadata = { ...a };\n\n for (const spec of FIELD_SPECS) {\n if (spec.valueType === \"number\") {\n const bValue = b[spec.field];\n if (bValue === undefined) {\n continue;\n }\n\n if (spec.merge === \"sum\") {\n out[spec.field] = (out[spec.field] ?? 0) + bValue;\n } else {\n out[spec.field] = bValue;\n }\n } else if (spec.valueType === \"text\") {\n // Text fields are always replace.\n const bValue = b[spec.field];\n if (bValue === undefined) {\n continue;\n }\n out[spec.field] = bValue;\n }\n }\n\n return out;\n};\n\n/** Converts a canonical camelCase field name to the server's snake_case key. */\nconst toSnakeCase = (field: string): string =>\n field.replace(/[A-Z]/g, (char) => `_${char.toLowerCase()}`);\n\n/**\n * Maps an {@link AIMetadata} value onto the server's `inngest.ai` metadata\n * values, converting each canonical camelCase field to snake_case (e.g.\n * `inputTokens` → `input_tokens`). Returns `undefined` when there is nothing to\n * emit so callers can skip stamping metadata entirely.\n */\nexport const toInngestAIMetadataValues = (\n metadata: AIMetadata,\n): Record<string, unknown> | undefined => {\n const entries = Object.entries(metadata);\n if (entries.length === 0) {\n return undefined;\n }\n\n const values: Record<string, unknown> = {};\n for (const [field, value] of entries) {\n values[toSnakeCase(field)] = value;\n }\n\n return values;\n};\n"],"mappings":";;AAiHA,SAAS,UAAU,OAAkB,QAA+B;AAClE,QAAO;EACL;EACA;EACA,WAAW;EACX,OAAO;EACR;;AAGH,SAAS,YACP,OACA,QACA,OACiB;AACjB,QAAO;EACL;EACA;EACA,WAAW;EACX;EACD;;;;;;;;AASH,MAAa,cAAc;CAEzB,UAAU,gBAAgB,uBAAuB;CACjD,UAAU,iBAAiB,wBAAwB;CACnD,UAAU,YAAY,uBAAuB;CAC7C,UAAU,cAAc,qBAAqB;CAG7C,YAAY,eAAe,6BAA6B,MAAM;CAC9D,YAAY,gBAAgB,8BAA8B,MAAM;CAChE,YAAY,eAAe,6BAA6B,MAAM;CAC9D,YAAY,mBAAmB,wCAAwC,MAAM;CAC7E,YACE,uBACA,4CACA,MACD;CACD,YAAY,mBAAmB,wCAAwC,MAAM;CAI7E,YAAY,eAAe,8BAA8B,UAAU;CACnE,YAAY,QAAQ,wBAAwB,UAAU;CACtD,YAAY,aAAa,6BAA6B,UAAU;CAChE,YACE,oBACA,oCACA,UACD;CACD,YAAY,mBAAmB,mCAAmC,UAAU;CAC5E,YAAY,QAAQ,uBAAuB,UAAU;CACtD;AAED,SAAS,sBAAsB,OAAoC;AACjE,KAAI,OAAO,UAAU,SACnB,QAAO,OAAO,SAAS,MAAM,GAAG,QAAQ;AAG1C,KAAI,OAAO,UAAU,YAAY,UAAU,GACzC;CAGF,MAAM,MAAM,OAAO,MAAM;AACzB,QAAO,OAAO,SAAS,IAAI,GAAG,MAAM;;;;;;;;;;;;;;;;AAiBtC,MAAa,mCACX,eACe;CACf,MAAMA,WAAuB,EAAE;AAE/B,MAAK,MAAM,QAAQ,aAAa;EAC9B,MAAM,QAAQ,WAAW,KAAK;AAC9B,MAAI,UAAU,OACZ;AAGF,MAAI,KAAK,cAAc,QAAQ;GAC7B,MAAM,OAAO,OAAO,UAAU,WAAW,QAAQ,OAAO,MAAM;AAC9D,OAAI,SAAS,GACX,UAAS,KAAK,SAAS;SAEpB;GACL,MAAM,MAAM,sBAAsB,MAAM;AACxC,OAAI,QAAQ,OACV,UAAS,KAAK,SAAS;;;AAK7B,QAAO;;;;;;;;;;;;;;;AAgBT,MAAa,aAAa,GAAe,MAA8B;CACrE,MAAMC,MAAkB,EAAE,GAAG,GAAG;AAEhC,MAAK,MAAM,QAAQ,YACjB,KAAI,KAAK,cAAc,UAAU;EAC/B,MAAM,SAAS,EAAE,KAAK;AACtB,MAAI,WAAW,OACb;AAGF,MAAI,KAAK,UAAU,MACjB,KAAI,KAAK,UAAU,IAAI,KAAK,UAAU,KAAK;MAE3C,KAAI,KAAK,SAAS;YAEX,KAAK,cAAc,QAAQ;EAEpC,MAAM,SAAS,EAAE,KAAK;AACtB,MAAI,WAAW,OACb;AAEF,MAAI,KAAK,SAAS;;AAItB,QAAO;;;AAIT,MAAM,eAAe,UACnB,MAAM,QAAQ,WAAW,SAAS,IAAI,KAAK,aAAa,GAAG;;;;;;;AAQ7D,MAAa,6BACX,aACwC;CACxC,MAAM,UAAU,OAAO,QAAQ,SAAS;AACxC,KAAI,QAAQ,WAAW,EACrB;CAGF,MAAMC,SAAkC,EAAE;AAC1C,MAAK,MAAM,CAAC,OAAO,UAAU,QAC3B,QAAO,YAAY,MAAM,IAAI;AAG/B,QAAO"}
1
+ {"version":3,"file":"aiExtractor.cjs","names":["metadata: AIMetadata","out: AIMetadata","values: Record<string, unknown>"],"sources":["../../../../src/components/execution/otel/aiExtractor.ts"],"sourcesContent":["import type { Attributes } from \"@opentelemetry/api\";\n\n/**\n * Canonical AI metadata extracted from a span's OpenTelemetry GenAI semantic\n * convention (`gen_ai.*`) attributes.\n *\n * The fields below are an explicit **allowlist**: only these are ever read from\n * a span (see {@link FIELD_SPECS}). Anything not mapped — prompt/response\n * content, messages, tool calls, embeddings payloads, and other\n * potentially-sensitive or bulky attributes — is not captured.\n *\n * For each category we describe how multiple AIMetadata values are aggregated\n * (see {@link aggregate}).\n */\nexport interface AIMetadata {\n // Identity & classification (last-write-wins).\n\n /** The requested model, e.g. `gpt-4.1-nano`. */\n requestModel?: string;\n /**\n * The model that actually served the request. This is often a dated snapshot\n * of the requested {@link AIMetadata.requestModel} (e.g.\n * `gpt-4.1-nano-2025-04-14`).\n */\n responseModel?: string;\n /** The AI provider that served the request (e.g. `openai`) */\n provider?: string;\n /** The provider's identifier for the response, e.g. `chatcmpl-...`. */\n responseId?: string;\n /**\n * Why generation stopped, as reported by the provider, e.g. `[\"stop\"]`,\n * `[\"length\"]`, or `[\"tool_calls\"]`. Last-write-wins across calls.\n */\n finishReasons?: string[];\n\n // Token usage (summed).\n\n /** The number of input tokens consumed by the request. */\n inputTokens?: number;\n /** The number of output tokens produced by the response. */\n outputTokens?: number;\n /** The total tokens consumed, as reported by the provider. */\n totalTokens?: number;\n /**\n * Cached input tokens read from the prompt cache. Providers differ on\n * accounting. OpenAI's cached tokens are a subset of\n * {@link AIMetadata.inputTokens}, Anthropic's are additive. Callers must\n * not assume a single relationship.\n */\n cacheReadTokens?: number;\n /** Tokens written to the prompt cache. */\n cacheCreationTokens?: number;\n /** Reasoning/thinking tokens, when the emitter reports them separately. */\n reasoningTokens?: number;\n\n // Request / inference parameters (last-write-wins). These describe the\n // request the caller made, not the response, and are stored raw as the\n // emitter reports them.\n\n /** Sampling temperature requested, e.g. `0.7`. */\n temperature?: number;\n /** Nucleus sampling probability mass requested (`top_p`), e.g. `0.9`. */\n topP?: number;\n /** Upper bound on tokens to generate (`max_tokens`). */\n maxTokens?: number;\n /** Frequency penalty requested. */\n frequencyPenalty?: number;\n /** Presence penalty requested. */\n presencePenalty?: number;\n /** Sampling seed requested, when the emitter reports it. */\n seed?: number;\n}\n\ntype ValueType = \"text\" | \"number\" | \"stringList\";\ntype MergeStrategy = \"replace\" | \"sum\";\n\n/**\n * Derives the subset of AIMetadata keys whose assigned value matches TValue.\n *\n * AIMetadata fields are optional (`model?: string`), so each field's type is\n * effectively `string | undefined` or `number | undefined`. `Exclude` removes\n * `undefined` before checking the value type, and `-?` prevents optional fields\n * from adding `undefined` back into the final key union.\n */\ntype FieldsWithValue<TValue> = {\n [TField in keyof AIMetadata]-?: Exclude<\n AIMetadata[TField],\n undefined\n > extends TValue\n ? TField\n : never;\n}[keyof AIMetadata];\n\ntype TextField = FieldsWithValue<string>;\ntype NumberField = FieldsWithValue<number>;\ntype StringListField = FieldsWithValue<string[]>;\n\ninterface BaseFieldSpec {\n /** The canonical (preferred) source `gen_ai.*` attribute key. */\n source: string;\n /**\n * Deprecated source keys to read when {@link BaseFieldSpec.source} is absent\n * or carries no usable value, in descending precedence. The preferred\n * {@link BaseFieldSpec.source} always wins when it supplies a value; these are\n * only consulted as fallbacks.\n */\n fallbackSources?: readonly string[];\n valueType: ValueType;\n merge: MergeStrategy;\n}\n\ninterface TextFieldSpec extends BaseFieldSpec {\n /** The canonical {@link AIMetadata} field this populates. */\n field: TextField;\n valueType: \"text\";\n merge: \"replace\";\n}\n\ninterface NumberFieldSpec extends BaseFieldSpec {\n /** The canonical {@link AIMetadata} field this populates. */\n field: NumberField;\n valueType: \"number\";\n}\n\ninterface StringListFieldSpec extends BaseFieldSpec {\n /** The canonical {@link AIMetadata} field this populates. */\n field: StringListField;\n valueType: \"stringList\";\n merge: \"replace\";\n}\n\ntype FieldSpec = TextFieldSpec | NumberFieldSpec | StringListFieldSpec;\n\nfunction textField(\n field: TextField,\n source: string,\n fallbackSources?: readonly string[],\n): TextFieldSpec {\n return {\n field,\n source,\n fallbackSources,\n valueType: \"text\",\n merge: \"replace\",\n };\n}\n\nfunction numberField(\n field: NumberField,\n source: string,\n merge: MergeStrategy,\n): NumberFieldSpec {\n return {\n field,\n source,\n valueType: \"number\",\n merge,\n };\n}\n\nfunction stringListField(\n field: StringListField,\n source: string,\n): StringListFieldSpec {\n return {\n field,\n source,\n valueType: \"stringList\",\n merge: \"replace\",\n };\n}\n\n/**\n * Every `gen_ai.*` attribute we capture, mapped to its canonical field.\n *\n * Anything not listed here (prompt/response content, messages, tool calls,\n * unknown keys) is ignored.\n */\nexport const FIELD_SPECS = [\n // Identity & classification.\n textField(\"requestModel\", \"gen_ai.request.model\"),\n textField(\"responseModel\", \"gen_ai.response.model\"),\n // `gen_ai.system` is the deprecated predecessor of `gen_ai.provider.name`;\n // the canonical key wins when both are present on a span.\n textField(\"provider\", \"gen_ai.provider.name\", [\"gen_ai.system\"]),\n textField(\"responseId\", \"gen_ai.response.id\"),\n stringListField(\"finishReasons\", \"gen_ai.response.finish_reasons\"),\n\n // Token usage.\n numberField(\"inputTokens\", \"gen_ai.usage.input_tokens\", \"sum\"),\n numberField(\"outputTokens\", \"gen_ai.usage.output_tokens\", \"sum\"),\n numberField(\"totalTokens\", \"gen_ai.usage.total_tokens\", \"sum\"),\n numberField(\"cacheReadTokens\", \"gen_ai.usage.cache_read.input_tokens\", \"sum\"),\n numberField(\n \"cacheCreationTokens\",\n \"gen_ai.usage.cache_creation.input_tokens\",\n \"sum\",\n ),\n numberField(\"reasoningTokens\", \"gen_ai.usage.reasoning.output_tokens\", \"sum\"),\n\n // Request / inference parameters. These describe the request, not a quantity,\n // so they replace rather than sum when a step makes several calls.\n numberField(\"temperature\", \"gen_ai.request.temperature\", \"replace\"),\n numberField(\"topP\", \"gen_ai.request.top_p\", \"replace\"),\n numberField(\"maxTokens\", \"gen_ai.request.max_tokens\", \"replace\"),\n numberField(\n \"frequencyPenalty\",\n \"gen_ai.request.frequency_penalty\",\n \"replace\",\n ),\n numberField(\"presencePenalty\", \"gen_ai.request.presence_penalty\", \"replace\"),\n numberField(\"seed\", \"gen_ai.request.seed\", \"replace\"),\n] as const satisfies readonly FieldSpec[];\n\nfunction parseNumericAttribute(value: unknown): number | undefined {\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? value : undefined;\n }\n\n if (typeof value !== \"string\" || value === \"\") {\n return undefined;\n }\n\n const num = Number(value);\n return Number.isFinite(num) ? num : undefined;\n}\n\n/**\n * Coerces an attribute to a list of non-empty strings, or `undefined` when it\n * yields none. OTLP arrays may carry non-string or empty entries; those are\n * dropped, and an array that reduces to nothing is treated as absent.\n */\nfunction parseStringListAttribute(value: unknown): string[] | undefined {\n const items = Array.isArray(value) ? value : [value];\n const strings = items.filter(\n (item): item is string => typeof item === \"string\" && item !== \"\",\n );\n return strings.length > 0 ? strings : undefined;\n}\n\n/**\n * Extracts {@link AIMetadata} from a span's attributes.\n *\n * Only the allowlisted {@link FIELD_SPECS} are read. Every other attribute is\n * ignored. Numeric fields accept numbers and quoted numeric strings and are\n * otherwise dropped, as OTLP/JSON may encode int64 as a quoted string. Text\n * fields are dropped when empty. String-list fields keep only non-empty string\n * entries and are dropped when none remain.\n *\n * Returns an empty object for spans carrying no recognised `gen_ai.*`\n * attributes.\n *\n * @param attributes - The span attributes, as exposed by\n * `ReadableSpan.attributes`.\n */\nexport const extractAIMetadataFromAttributes = (\n attributes: Attributes,\n): AIMetadata => {\n const metadata: AIMetadata = {};\n\n for (const spec of FIELD_SPECS) {\n // Read the canonical key first, then any deprecated fallbacks in order,\n // taking the first that yields a usable value.\n const sources = [spec.source, ...(spec.fallbackSources ?? [])];\n\n for (const source of sources) {\n const value = attributes[source];\n if (value === undefined) {\n continue;\n }\n\n if (spec.valueType === \"text\") {\n const text = typeof value === \"string\" ? value : String(value);\n if (text !== \"\") {\n metadata[spec.field] = text;\n break;\n }\n } else if (spec.valueType === \"stringList\") {\n const list = parseStringListAttribute(value);\n if (list !== undefined) {\n metadata[spec.field] = list;\n break;\n }\n } else {\n const num = parseNumericAttribute(value);\n if (num !== undefined) {\n metadata[spec.field] = num;\n break;\n }\n }\n }\n }\n\n return metadata;\n};\n\n/**\n * Aggregates two {@link AIMetadata} values, folding a later call's metadata into\n * an earlier accumulator for a single step.\n *\n * - Token-count fields (`merge: \"sum\"`) are **summed**, so a step that makes\n * several LLM calls reports their combined usage.\n * - Every other field uses `merge: \"replace\"` (`b` overwrites `a`)\n *\n * A field is present in the result only when at least one input supplies it.\n *\n * @param a - The accumulator (earlier calls).\n * @param b - The later metadata, whose values win on conflict (and add for sums).\n */\nexport const aggregate = (a: AIMetadata, b: AIMetadata): AIMetadata => {\n const out: AIMetadata = { ...a };\n\n for (const spec of FIELD_SPECS) {\n if (spec.valueType === \"number\") {\n const bValue = b[spec.field];\n if (bValue === undefined) {\n continue;\n }\n\n if (spec.merge === \"sum\") {\n out[spec.field] = (out[spec.field] ?? 0) + bValue;\n } else {\n out[spec.field] = bValue;\n }\n } else if (spec.valueType === \"text\") {\n // Text fields are always replace.\n const bValue = b[spec.field];\n if (bValue === undefined) {\n continue;\n }\n out[spec.field] = bValue;\n } else {\n // String-list fields are always replace.\n const bValue = b[spec.field];\n if (bValue === undefined) {\n continue;\n }\n out[spec.field] = bValue;\n }\n }\n\n return out;\n};\n\n/** Converts a canonical camelCase field name to the server's snake_case key. */\nconst toSnakeCase = (field: string): string =>\n field.replace(/[A-Z]/g, (char) => `_${char.toLowerCase()}`);\n\n/**\n * Maps an {@link AIMetadata} value onto the server's `inngest.ai` metadata\n * values, converting each canonical camelCase field to snake_case (e.g.\n * `inputTokens` → `input_tokens`). Returns `undefined` when there is nothing to\n * emit so callers can skip stamping metadata entirely.\n */\nexport const toInngestAIMetadataValues = (\n metadata: AIMetadata,\n): Record<string, unknown> | undefined => {\n const entries = Object.entries(metadata);\n if (entries.length === 0) {\n return undefined;\n }\n\n const values: Record<string, unknown> = {};\n for (const [field, value] of entries) {\n values[toSnakeCase(field)] = value;\n }\n\n return values;\n};\n"],"mappings":"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"}
@@ -24,6 +24,11 @@ interface AIMetadata {
24
24
  provider?: string;
25
25
  /** The provider's identifier for the response, e.g. `chatcmpl-...`. */
26
26
  responseId?: string;
27
+ /**
28
+ * Why generation stopped, as reported by the provider, e.g. `["stop"]`,
29
+ * `["length"]`, or `["tool_calls"]`. Last-write-wins across calls.
30
+ */
31
+ finishReasons?: string[];
27
32
  /** The number of input tokens consumed by the request. */
28
33
  inputTokens?: number;
29
34
  /** The number of output tokens produced by the response. */
@@ -27,6 +27,11 @@ interface AIMetadata {
27
27
  provider?: string;
28
28
  /** The provider's identifier for the response, e.g. `chatcmpl-...`. */
29
29
  responseId?: string;
30
+ /**
31
+ * Why generation stopped, as reported by the provider, e.g. `["stop"]`,
32
+ * `["length"]`, or `["tool_calls"]`. Last-write-wins across calls.
33
+ */
34
+ finishReasons?: string[];
30
35
  /** The number of input tokens consumed by the request. */
31
36
  inputTokens?: number;
32
37
  /** The number of output tokens produced by the response. */
@@ -1,8 +1,9 @@
1
1
  //#region src/components/execution/otel/aiExtractor.ts
2
- function textField(field, source) {
2
+ function textField(field, source, fallbackSources) {
3
3
  return {
4
4
  field,
5
5
  source,
6
+ fallbackSources,
6
7
  valueType: "text",
7
8
  merge: "replace"
8
9
  };
@@ -15,6 +16,14 @@ function numberField(field, source, merge) {
15
16
  merge
16
17
  };
17
18
  }
19
+ function stringListField(field, source) {
20
+ return {
21
+ field,
22
+ source,
23
+ valueType: "stringList",
24
+ merge: "replace"
25
+ };
26
+ }
18
27
  /**
19
28
  * Every `gen_ai.*` attribute we capture, mapped to its canonical field.
20
29
  *
@@ -24,8 +33,9 @@ function numberField(field, source, merge) {
24
33
  const FIELD_SPECS = [
25
34
  textField("requestModel", "gen_ai.request.model"),
26
35
  textField("responseModel", "gen_ai.response.model"),
27
- textField("provider", "gen_ai.provider.name"),
36
+ textField("provider", "gen_ai.provider.name", ["gen_ai.system"]),
28
37
  textField("responseId", "gen_ai.response.id"),
38
+ stringListField("finishReasons", "gen_ai.response.finish_reasons"),
29
39
  numberField("inputTokens", "gen_ai.usage.input_tokens", "sum"),
30
40
  numberField("outputTokens", "gen_ai.usage.output_tokens", "sum"),
31
41
  numberField("totalTokens", "gen_ai.usage.total_tokens", "sum"),
@@ -46,12 +56,22 @@ function parseNumericAttribute(value) {
46
56
  return Number.isFinite(num) ? num : void 0;
47
57
  }
48
58
  /**
59
+ * Coerces an attribute to a list of non-empty strings, or `undefined` when it
60
+ * yields none. OTLP arrays may carry non-string or empty entries; those are
61
+ * dropped, and an array that reduces to nothing is treated as absent.
62
+ */
63
+ function parseStringListAttribute(value) {
64
+ const strings = (Array.isArray(value) ? value : [value]).filter((item) => typeof item === "string" && item !== "");
65
+ return strings.length > 0 ? strings : void 0;
66
+ }
67
+ /**
49
68
  * Extracts {@link AIMetadata} from a span's attributes.
50
69
  *
51
70
  * Only the allowlisted {@link FIELD_SPECS} are read. Every other attribute is
52
71
  * ignored. Numeric fields accept numbers and quoted numeric strings and are
53
72
  * otherwise dropped, as OTLP/JSON may encode int64 as a quoted string. Text
54
- * fields are dropped when empty.
73
+ * fields are dropped when empty. String-list fields keep only non-empty string
74
+ * entries and are dropped when none remain.
55
75
  *
56
76
  * Returns an empty object for spans carrying no recognised `gen_ai.*`
57
77
  * attributes.
@@ -62,14 +82,29 @@ function parseNumericAttribute(value) {
62
82
  const extractAIMetadataFromAttributes = (attributes) => {
63
83
  const metadata = {};
64
84
  for (const spec of FIELD_SPECS) {
65
- const value = attributes[spec.source];
66
- if (value === void 0) continue;
67
- if (spec.valueType === "text") {
68
- const text = typeof value === "string" ? value : String(value);
69
- if (text !== "") metadata[spec.field] = text;
70
- } else {
71
- const num = parseNumericAttribute(value);
72
- if (num !== void 0) metadata[spec.field] = num;
85
+ const sources = [spec.source, ...spec.fallbackSources ?? []];
86
+ for (const source of sources) {
87
+ const value = attributes[source];
88
+ if (value === void 0) continue;
89
+ if (spec.valueType === "text") {
90
+ const text = typeof value === "string" ? value : String(value);
91
+ if (text !== "") {
92
+ metadata[spec.field] = text;
93
+ break;
94
+ }
95
+ } else if (spec.valueType === "stringList") {
96
+ const list = parseStringListAttribute(value);
97
+ if (list !== void 0) {
98
+ metadata[spec.field] = list;
99
+ break;
100
+ }
101
+ } else {
102
+ const num = parseNumericAttribute(value);
103
+ if (num !== void 0) {
104
+ metadata[spec.field] = num;
105
+ break;
106
+ }
107
+ }
73
108
  }
74
109
  }
75
110
  return metadata;
@@ -98,6 +133,10 @@ const aggregate = (a, b) => {
98
133
  const bValue = b[spec.field];
99
134
  if (bValue === void 0) continue;
100
135
  out[spec.field] = bValue;
136
+ } else {
137
+ const bValue = b[spec.field];
138
+ if (bValue === void 0) continue;
139
+ out[spec.field] = bValue;
101
140
  }
102
141
  return out;
103
142
  };
@@ -1 +1 @@
1
- {"version":3,"file":"aiExtractor.js","names":["metadata: AIMetadata","out: AIMetadata","values: Record<string, unknown>"],"sources":["../../../../src/components/execution/otel/aiExtractor.ts"],"sourcesContent":["import type { Attributes } from \"@opentelemetry/api\";\n\n/**\n * Canonical AI metadata extracted from a span's OpenTelemetry GenAI semantic\n * convention (`gen_ai.*`) attributes.\n *\n * The fields below are an explicit **allowlist**: only these are ever read from\n * a span (see {@link FIELD_SPECS}). Anything not mapped — prompt/response\n * content, messages, tool calls, embeddings payloads, and other\n * potentially-sensitive or bulky attributes — is not captured.\n *\n * For each category we describe how multiple AIMetadata values are aggregated\n * (see {@link aggregate}).\n */\nexport interface AIMetadata {\n // Identity & classification (last-write-wins).\n\n /** The requested model, e.g. `gpt-4.1-nano`. */\n requestModel?: string;\n /**\n * The model that actually served the request. This is often a dated snapshot\n * of the requested {@link AIMetadata.requestModel} (e.g.\n * `gpt-4.1-nano-2025-04-14`).\n */\n responseModel?: string;\n /** The AI provider that served the request (e.g. `openai`) */\n provider?: string;\n /** The provider's identifier for the response, e.g. `chatcmpl-...`. */\n responseId?: string;\n\n // Token usage (summed).\n\n /** The number of input tokens consumed by the request. */\n inputTokens?: number;\n /** The number of output tokens produced by the response. */\n outputTokens?: number;\n /** The total tokens consumed, as reported by the provider. */\n totalTokens?: number;\n /**\n * Cached input tokens read from the prompt cache. Providers differ on\n * accounting. OpenAI's cached tokens are a subset of\n * {@link AIMetadata.inputTokens}, Anthropic's are additive. Callers must\n * not assume a single relationship.\n */\n cacheReadTokens?: number;\n /** Tokens written to the prompt cache. */\n cacheCreationTokens?: number;\n /** Reasoning/thinking tokens, when the emitter reports them separately. */\n reasoningTokens?: number;\n\n // Request / inference parameters (last-write-wins). These describe the\n // request the caller made, not the response, and are stored raw as the\n // emitter reports them.\n\n /** Sampling temperature requested, e.g. `0.7`. */\n temperature?: number;\n /** Nucleus sampling probability mass requested (`top_p`), e.g. `0.9`. */\n topP?: number;\n /** Upper bound on tokens to generate (`max_tokens`). */\n maxTokens?: number;\n /** Frequency penalty requested. */\n frequencyPenalty?: number;\n /** Presence penalty requested. */\n presencePenalty?: number;\n /** Sampling seed requested, when the emitter reports it. */\n seed?: number;\n}\n\ntype ValueType = \"text\" | \"number\";\ntype MergeStrategy = \"replace\" | \"sum\";\n\n/**\n * Derives the subset of AIMetadata keys whose assigned value matches TValue.\n *\n * AIMetadata fields are optional (`model?: string`), so each field's type is\n * effectively `string | undefined` or `number | undefined`. `Exclude` removes\n * `undefined` before checking the value type, and `-?` prevents optional fields\n * from adding `undefined` back into the final key union.\n */\ntype FieldsWithValue<TValue> = {\n [TField in keyof AIMetadata]-?: Exclude<\n AIMetadata[TField],\n undefined\n > extends TValue\n ? TField\n : never;\n}[keyof AIMetadata];\n\ntype TextField = FieldsWithValue<string>;\ntype NumberField = FieldsWithValue<number>;\n\ninterface BaseFieldSpec {\n /** The source `gen_ai.*` attribute key. */\n source: string;\n valueType: ValueType;\n merge: MergeStrategy;\n}\n\ninterface TextFieldSpec extends BaseFieldSpec {\n /** The canonical {@link AIMetadata} field this populates. */\n field: TextField;\n valueType: \"text\";\n merge: \"replace\";\n}\n\ninterface NumberFieldSpec extends BaseFieldSpec {\n /** The canonical {@link AIMetadata} field this populates. */\n field: NumberField;\n valueType: \"number\";\n}\n\ntype FieldSpec = TextFieldSpec | NumberFieldSpec;\n\nfunction textField(field: TextField, source: string): TextFieldSpec {\n return {\n field,\n source,\n valueType: \"text\",\n merge: \"replace\",\n };\n}\n\nfunction numberField(\n field: NumberField,\n source: string,\n merge: MergeStrategy,\n): NumberFieldSpec {\n return {\n field,\n source,\n valueType: \"number\",\n merge,\n };\n}\n\n/**\n * Every `gen_ai.*` attribute we capture, mapped to its canonical field.\n *\n * Anything not listed here (prompt/response content, messages, tool calls,\n * unknown keys) is ignored.\n */\nexport const FIELD_SPECS = [\n // Identity & classification.\n textField(\"requestModel\", \"gen_ai.request.model\"),\n textField(\"responseModel\", \"gen_ai.response.model\"),\n textField(\"provider\", \"gen_ai.provider.name\"),\n textField(\"responseId\", \"gen_ai.response.id\"),\n\n // Token usage.\n numberField(\"inputTokens\", \"gen_ai.usage.input_tokens\", \"sum\"),\n numberField(\"outputTokens\", \"gen_ai.usage.output_tokens\", \"sum\"),\n numberField(\"totalTokens\", \"gen_ai.usage.total_tokens\", \"sum\"),\n numberField(\"cacheReadTokens\", \"gen_ai.usage.cache_read.input_tokens\", \"sum\"),\n numberField(\n \"cacheCreationTokens\",\n \"gen_ai.usage.cache_creation.input_tokens\",\n \"sum\",\n ),\n numberField(\"reasoningTokens\", \"gen_ai.usage.reasoning.output_tokens\", \"sum\"),\n\n // Request / inference parameters. These describe the request, not a quantity,\n // so they replace rather than sum when a step makes several calls.\n numberField(\"temperature\", \"gen_ai.request.temperature\", \"replace\"),\n numberField(\"topP\", \"gen_ai.request.top_p\", \"replace\"),\n numberField(\"maxTokens\", \"gen_ai.request.max_tokens\", \"replace\"),\n numberField(\n \"frequencyPenalty\",\n \"gen_ai.request.frequency_penalty\",\n \"replace\",\n ),\n numberField(\"presencePenalty\", \"gen_ai.request.presence_penalty\", \"replace\"),\n numberField(\"seed\", \"gen_ai.request.seed\", \"replace\"),\n] as const satisfies readonly FieldSpec[];\n\nfunction parseNumericAttribute(value: unknown): number | undefined {\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? value : undefined;\n }\n\n if (typeof value !== \"string\" || value === \"\") {\n return undefined;\n }\n\n const num = Number(value);\n return Number.isFinite(num) ? num : undefined;\n}\n\n/**\n * Extracts {@link AIMetadata} from a span's attributes.\n *\n * Only the allowlisted {@link FIELD_SPECS} are read. Every other attribute is\n * ignored. Numeric fields accept numbers and quoted numeric strings and are\n * otherwise dropped, as OTLP/JSON may encode int64 as a quoted string. Text\n * fields are dropped when empty.\n *\n * Returns an empty object for spans carrying no recognised `gen_ai.*`\n * attributes.\n *\n * @param attributes - The span attributes, as exposed by\n * `ReadableSpan.attributes`.\n */\nexport const extractAIMetadataFromAttributes = (\n attributes: Attributes,\n): AIMetadata => {\n const metadata: AIMetadata = {};\n\n for (const spec of FIELD_SPECS) {\n const value = attributes[spec.source];\n if (value === undefined) {\n continue;\n }\n\n if (spec.valueType === \"text\") {\n const text = typeof value === \"string\" ? value : String(value);\n if (text !== \"\") {\n metadata[spec.field] = text;\n }\n } else {\n const num = parseNumericAttribute(value);\n if (num !== undefined) {\n metadata[spec.field] = num;\n }\n }\n }\n\n return metadata;\n};\n\n/**\n * Aggregates two {@link AIMetadata} values, folding a later call's metadata into\n * an earlier accumulator for a single step.\n *\n * - Token-count fields (`merge: \"sum\"`) are **summed**, so a step that makes\n * several LLM calls reports their combined usage.\n * - Every other field uses `merge: \"replace\"` (`b` overwrites `a`)\n *\n * A field is present in the result only when at least one input supplies it.\n *\n * @param a - The accumulator (earlier calls).\n * @param b - The later metadata, whose values win on conflict (and add for sums).\n */\nexport const aggregate = (a: AIMetadata, b: AIMetadata): AIMetadata => {\n const out: AIMetadata = { ...a };\n\n for (const spec of FIELD_SPECS) {\n if (spec.valueType === \"number\") {\n const bValue = b[spec.field];\n if (bValue === undefined) {\n continue;\n }\n\n if (spec.merge === \"sum\") {\n out[spec.field] = (out[spec.field] ?? 0) + bValue;\n } else {\n out[spec.field] = bValue;\n }\n } else if (spec.valueType === \"text\") {\n // Text fields are always replace.\n const bValue = b[spec.field];\n if (bValue === undefined) {\n continue;\n }\n out[spec.field] = bValue;\n }\n }\n\n return out;\n};\n\n/** Converts a canonical camelCase field name to the server's snake_case key. */\nconst toSnakeCase = (field: string): string =>\n field.replace(/[A-Z]/g, (char) => `_${char.toLowerCase()}`);\n\n/**\n * Maps an {@link AIMetadata} value onto the server's `inngest.ai` metadata\n * values, converting each canonical camelCase field to snake_case (e.g.\n * `inputTokens` → `input_tokens`). Returns `undefined` when there is nothing to\n * emit so callers can skip stamping metadata entirely.\n */\nexport const toInngestAIMetadataValues = (\n metadata: AIMetadata,\n): Record<string, unknown> | undefined => {\n const entries = Object.entries(metadata);\n if (entries.length === 0) {\n return undefined;\n }\n\n const values: Record<string, unknown> = {};\n for (const [field, value] of entries) {\n values[toSnakeCase(field)] = value;\n }\n\n return values;\n};\n"],"mappings":";AAiHA,SAAS,UAAU,OAAkB,QAA+B;AAClE,QAAO;EACL;EACA;EACA,WAAW;EACX,OAAO;EACR;;AAGH,SAAS,YACP,OACA,QACA,OACiB;AACjB,QAAO;EACL;EACA;EACA,WAAW;EACX;EACD;;;;;;;;AASH,MAAa,cAAc;CAEzB,UAAU,gBAAgB,uBAAuB;CACjD,UAAU,iBAAiB,wBAAwB;CACnD,UAAU,YAAY,uBAAuB;CAC7C,UAAU,cAAc,qBAAqB;CAG7C,YAAY,eAAe,6BAA6B,MAAM;CAC9D,YAAY,gBAAgB,8BAA8B,MAAM;CAChE,YAAY,eAAe,6BAA6B,MAAM;CAC9D,YAAY,mBAAmB,wCAAwC,MAAM;CAC7E,YACE,uBACA,4CACA,MACD;CACD,YAAY,mBAAmB,wCAAwC,MAAM;CAI7E,YAAY,eAAe,8BAA8B,UAAU;CACnE,YAAY,QAAQ,wBAAwB,UAAU;CACtD,YAAY,aAAa,6BAA6B,UAAU;CAChE,YACE,oBACA,oCACA,UACD;CACD,YAAY,mBAAmB,mCAAmC,UAAU;CAC5E,YAAY,QAAQ,uBAAuB,UAAU;CACtD;AAED,SAAS,sBAAsB,OAAoC;AACjE,KAAI,OAAO,UAAU,SACnB,QAAO,OAAO,SAAS,MAAM,GAAG,QAAQ;AAG1C,KAAI,OAAO,UAAU,YAAY,UAAU,GACzC;CAGF,MAAM,MAAM,OAAO,MAAM;AACzB,QAAO,OAAO,SAAS,IAAI,GAAG,MAAM;;;;;;;;;;;;;;;;AAiBtC,MAAa,mCACX,eACe;CACf,MAAMA,WAAuB,EAAE;AAE/B,MAAK,MAAM,QAAQ,aAAa;EAC9B,MAAM,QAAQ,WAAW,KAAK;AAC9B,MAAI,UAAU,OACZ;AAGF,MAAI,KAAK,cAAc,QAAQ;GAC7B,MAAM,OAAO,OAAO,UAAU,WAAW,QAAQ,OAAO,MAAM;AAC9D,OAAI,SAAS,GACX,UAAS,KAAK,SAAS;SAEpB;GACL,MAAM,MAAM,sBAAsB,MAAM;AACxC,OAAI,QAAQ,OACV,UAAS,KAAK,SAAS;;;AAK7B,QAAO;;;;;;;;;;;;;;;AAgBT,MAAa,aAAa,GAAe,MAA8B;CACrE,MAAMC,MAAkB,EAAE,GAAG,GAAG;AAEhC,MAAK,MAAM,QAAQ,YACjB,KAAI,KAAK,cAAc,UAAU;EAC/B,MAAM,SAAS,EAAE,KAAK;AACtB,MAAI,WAAW,OACb;AAGF,MAAI,KAAK,UAAU,MACjB,KAAI,KAAK,UAAU,IAAI,KAAK,UAAU,KAAK;MAE3C,KAAI,KAAK,SAAS;YAEX,KAAK,cAAc,QAAQ;EAEpC,MAAM,SAAS,EAAE,KAAK;AACtB,MAAI,WAAW,OACb;AAEF,MAAI,KAAK,SAAS;;AAItB,QAAO;;;AAIT,MAAM,eAAe,UACnB,MAAM,QAAQ,WAAW,SAAS,IAAI,KAAK,aAAa,GAAG;;;;;;;AAQ7D,MAAa,6BACX,aACwC;CACxC,MAAM,UAAU,OAAO,QAAQ,SAAS;AACxC,KAAI,QAAQ,WAAW,EACrB;CAGF,MAAMC,SAAkC,EAAE;AAC1C,MAAK,MAAM,CAAC,OAAO,UAAU,QAC3B,QAAO,YAAY,MAAM,IAAI;AAG/B,QAAO"}
1
+ {"version":3,"file":"aiExtractor.js","names":["metadata: AIMetadata","out: AIMetadata","values: Record<string, unknown>"],"sources":["../../../../src/components/execution/otel/aiExtractor.ts"],"sourcesContent":["import type { Attributes } from \"@opentelemetry/api\";\n\n/**\n * Canonical AI metadata extracted from a span's OpenTelemetry GenAI semantic\n * convention (`gen_ai.*`) attributes.\n *\n * The fields below are an explicit **allowlist**: only these are ever read from\n * a span (see {@link FIELD_SPECS}). Anything not mapped — prompt/response\n * content, messages, tool calls, embeddings payloads, and other\n * potentially-sensitive or bulky attributes — is not captured.\n *\n * For each category we describe how multiple AIMetadata values are aggregated\n * (see {@link aggregate}).\n */\nexport interface AIMetadata {\n // Identity & classification (last-write-wins).\n\n /** The requested model, e.g. `gpt-4.1-nano`. */\n requestModel?: string;\n /**\n * The model that actually served the request. This is often a dated snapshot\n * of the requested {@link AIMetadata.requestModel} (e.g.\n * `gpt-4.1-nano-2025-04-14`).\n */\n responseModel?: string;\n /** The AI provider that served the request (e.g. `openai`) */\n provider?: string;\n /** The provider's identifier for the response, e.g. `chatcmpl-...`. */\n responseId?: string;\n /**\n * Why generation stopped, as reported by the provider, e.g. `[\"stop\"]`,\n * `[\"length\"]`, or `[\"tool_calls\"]`. Last-write-wins across calls.\n */\n finishReasons?: string[];\n\n // Token usage (summed).\n\n /** The number of input tokens consumed by the request. */\n inputTokens?: number;\n /** The number of output tokens produced by the response. */\n outputTokens?: number;\n /** The total tokens consumed, as reported by the provider. */\n totalTokens?: number;\n /**\n * Cached input tokens read from the prompt cache. Providers differ on\n * accounting. OpenAI's cached tokens are a subset of\n * {@link AIMetadata.inputTokens}, Anthropic's are additive. Callers must\n * not assume a single relationship.\n */\n cacheReadTokens?: number;\n /** Tokens written to the prompt cache. */\n cacheCreationTokens?: number;\n /** Reasoning/thinking tokens, when the emitter reports them separately. */\n reasoningTokens?: number;\n\n // Request / inference parameters (last-write-wins). These describe the\n // request the caller made, not the response, and are stored raw as the\n // emitter reports them.\n\n /** Sampling temperature requested, e.g. `0.7`. */\n temperature?: number;\n /** Nucleus sampling probability mass requested (`top_p`), e.g. `0.9`. */\n topP?: number;\n /** Upper bound on tokens to generate (`max_tokens`). */\n maxTokens?: number;\n /** Frequency penalty requested. */\n frequencyPenalty?: number;\n /** Presence penalty requested. */\n presencePenalty?: number;\n /** Sampling seed requested, when the emitter reports it. */\n seed?: number;\n}\n\ntype ValueType = \"text\" | \"number\" | \"stringList\";\ntype MergeStrategy = \"replace\" | \"sum\";\n\n/**\n * Derives the subset of AIMetadata keys whose assigned value matches TValue.\n *\n * AIMetadata fields are optional (`model?: string`), so each field's type is\n * effectively `string | undefined` or `number | undefined`. `Exclude` removes\n * `undefined` before checking the value type, and `-?` prevents optional fields\n * from adding `undefined` back into the final key union.\n */\ntype FieldsWithValue<TValue> = {\n [TField in keyof AIMetadata]-?: Exclude<\n AIMetadata[TField],\n undefined\n > extends TValue\n ? TField\n : never;\n}[keyof AIMetadata];\n\ntype TextField = FieldsWithValue<string>;\ntype NumberField = FieldsWithValue<number>;\ntype StringListField = FieldsWithValue<string[]>;\n\ninterface BaseFieldSpec {\n /** The canonical (preferred) source `gen_ai.*` attribute key. */\n source: string;\n /**\n * Deprecated source keys to read when {@link BaseFieldSpec.source} is absent\n * or carries no usable value, in descending precedence. The preferred\n * {@link BaseFieldSpec.source} always wins when it supplies a value; these are\n * only consulted as fallbacks.\n */\n fallbackSources?: readonly string[];\n valueType: ValueType;\n merge: MergeStrategy;\n}\n\ninterface TextFieldSpec extends BaseFieldSpec {\n /** The canonical {@link AIMetadata} field this populates. */\n field: TextField;\n valueType: \"text\";\n merge: \"replace\";\n}\n\ninterface NumberFieldSpec extends BaseFieldSpec {\n /** The canonical {@link AIMetadata} field this populates. */\n field: NumberField;\n valueType: \"number\";\n}\n\ninterface StringListFieldSpec extends BaseFieldSpec {\n /** The canonical {@link AIMetadata} field this populates. */\n field: StringListField;\n valueType: \"stringList\";\n merge: \"replace\";\n}\n\ntype FieldSpec = TextFieldSpec | NumberFieldSpec | StringListFieldSpec;\n\nfunction textField(\n field: TextField,\n source: string,\n fallbackSources?: readonly string[],\n): TextFieldSpec {\n return {\n field,\n source,\n fallbackSources,\n valueType: \"text\",\n merge: \"replace\",\n };\n}\n\nfunction numberField(\n field: NumberField,\n source: string,\n merge: MergeStrategy,\n): NumberFieldSpec {\n return {\n field,\n source,\n valueType: \"number\",\n merge,\n };\n}\n\nfunction stringListField(\n field: StringListField,\n source: string,\n): StringListFieldSpec {\n return {\n field,\n source,\n valueType: \"stringList\",\n merge: \"replace\",\n };\n}\n\n/**\n * Every `gen_ai.*` attribute we capture, mapped to its canonical field.\n *\n * Anything not listed here (prompt/response content, messages, tool calls,\n * unknown keys) is ignored.\n */\nexport const FIELD_SPECS = [\n // Identity & classification.\n textField(\"requestModel\", \"gen_ai.request.model\"),\n textField(\"responseModel\", \"gen_ai.response.model\"),\n // `gen_ai.system` is the deprecated predecessor of `gen_ai.provider.name`;\n // the canonical key wins when both are present on a span.\n textField(\"provider\", \"gen_ai.provider.name\", [\"gen_ai.system\"]),\n textField(\"responseId\", \"gen_ai.response.id\"),\n stringListField(\"finishReasons\", \"gen_ai.response.finish_reasons\"),\n\n // Token usage.\n numberField(\"inputTokens\", \"gen_ai.usage.input_tokens\", \"sum\"),\n numberField(\"outputTokens\", \"gen_ai.usage.output_tokens\", \"sum\"),\n numberField(\"totalTokens\", \"gen_ai.usage.total_tokens\", \"sum\"),\n numberField(\"cacheReadTokens\", \"gen_ai.usage.cache_read.input_tokens\", \"sum\"),\n numberField(\n \"cacheCreationTokens\",\n \"gen_ai.usage.cache_creation.input_tokens\",\n \"sum\",\n ),\n numberField(\"reasoningTokens\", \"gen_ai.usage.reasoning.output_tokens\", \"sum\"),\n\n // Request / inference parameters. These describe the request, not a quantity,\n // so they replace rather than sum when a step makes several calls.\n numberField(\"temperature\", \"gen_ai.request.temperature\", \"replace\"),\n numberField(\"topP\", \"gen_ai.request.top_p\", \"replace\"),\n numberField(\"maxTokens\", \"gen_ai.request.max_tokens\", \"replace\"),\n numberField(\n \"frequencyPenalty\",\n \"gen_ai.request.frequency_penalty\",\n \"replace\",\n ),\n numberField(\"presencePenalty\", \"gen_ai.request.presence_penalty\", \"replace\"),\n numberField(\"seed\", \"gen_ai.request.seed\", \"replace\"),\n] as const satisfies readonly FieldSpec[];\n\nfunction parseNumericAttribute(value: unknown): number | undefined {\n if (typeof value === \"number\") {\n return Number.isFinite(value) ? value : undefined;\n }\n\n if (typeof value !== \"string\" || value === \"\") {\n return undefined;\n }\n\n const num = Number(value);\n return Number.isFinite(num) ? num : undefined;\n}\n\n/**\n * Coerces an attribute to a list of non-empty strings, or `undefined` when it\n * yields none. OTLP arrays may carry non-string or empty entries; those are\n * dropped, and an array that reduces to nothing is treated as absent.\n */\nfunction parseStringListAttribute(value: unknown): string[] | undefined {\n const items = Array.isArray(value) ? value : [value];\n const strings = items.filter(\n (item): item is string => typeof item === \"string\" && item !== \"\",\n );\n return strings.length > 0 ? strings : undefined;\n}\n\n/**\n * Extracts {@link AIMetadata} from a span's attributes.\n *\n * Only the allowlisted {@link FIELD_SPECS} are read. Every other attribute is\n * ignored. Numeric fields accept numbers and quoted numeric strings and are\n * otherwise dropped, as OTLP/JSON may encode int64 as a quoted string. Text\n * fields are dropped when empty. String-list fields keep only non-empty string\n * entries and are dropped when none remain.\n *\n * Returns an empty object for spans carrying no recognised `gen_ai.*`\n * attributes.\n *\n * @param attributes - The span attributes, as exposed by\n * `ReadableSpan.attributes`.\n */\nexport const extractAIMetadataFromAttributes = (\n attributes: Attributes,\n): AIMetadata => {\n const metadata: AIMetadata = {};\n\n for (const spec of FIELD_SPECS) {\n // Read the canonical key first, then any deprecated fallbacks in order,\n // taking the first that yields a usable value.\n const sources = [spec.source, ...(spec.fallbackSources ?? [])];\n\n for (const source of sources) {\n const value = attributes[source];\n if (value === undefined) {\n continue;\n }\n\n if (spec.valueType === \"text\") {\n const text = typeof value === \"string\" ? value : String(value);\n if (text !== \"\") {\n metadata[spec.field] = text;\n break;\n }\n } else if (spec.valueType === \"stringList\") {\n const list = parseStringListAttribute(value);\n if (list !== undefined) {\n metadata[spec.field] = list;\n break;\n }\n } else {\n const num = parseNumericAttribute(value);\n if (num !== undefined) {\n metadata[spec.field] = num;\n break;\n }\n }\n }\n }\n\n return metadata;\n};\n\n/**\n * Aggregates two {@link AIMetadata} values, folding a later call's metadata into\n * an earlier accumulator for a single step.\n *\n * - Token-count fields (`merge: \"sum\"`) are **summed**, so a step that makes\n * several LLM calls reports their combined usage.\n * - Every other field uses `merge: \"replace\"` (`b` overwrites `a`)\n *\n * A field is present in the result only when at least one input supplies it.\n *\n * @param a - The accumulator (earlier calls).\n * @param b - The later metadata, whose values win on conflict (and add for sums).\n */\nexport const aggregate = (a: AIMetadata, b: AIMetadata): AIMetadata => {\n const out: AIMetadata = { ...a };\n\n for (const spec of FIELD_SPECS) {\n if (spec.valueType === \"number\") {\n const bValue = b[spec.field];\n if (bValue === undefined) {\n continue;\n }\n\n if (spec.merge === \"sum\") {\n out[spec.field] = (out[spec.field] ?? 0) + bValue;\n } else {\n out[spec.field] = bValue;\n }\n } else if (spec.valueType === \"text\") {\n // Text fields are always replace.\n const bValue = b[spec.field];\n if (bValue === undefined) {\n continue;\n }\n out[spec.field] = bValue;\n } else {\n // String-list fields are always replace.\n const bValue = b[spec.field];\n if (bValue === undefined) {\n continue;\n }\n out[spec.field] = bValue;\n }\n }\n\n return out;\n};\n\n/** Converts a canonical camelCase field name to the server's snake_case key. */\nconst toSnakeCase = (field: string): string =>\n field.replace(/[A-Z]/g, (char) => `_${char.toLowerCase()}`);\n\n/**\n * Maps an {@link AIMetadata} value onto the server's `inngest.ai` metadata\n * values, converting each canonical camelCase field to snake_case (e.g.\n * `inputTokens` → `input_tokens`). Returns `undefined` when there is nothing to\n * emit so callers can skip stamping metadata entirely.\n */\nexport const toInngestAIMetadataValues = (\n metadata: AIMetadata,\n): Record<string, unknown> | undefined => {\n const entries = Object.entries(metadata);\n if (entries.length === 0) {\n return undefined;\n }\n\n const values: Record<string, unknown> = {};\n for (const [field, value] of entries) {\n values[toSnakeCase(field)] = value;\n }\n\n return values;\n};\n"],"mappings":"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"}
@@ -79,11 +79,6 @@ declare const extendedTracesMiddleware: ({
79
79
  ctx: {
80
80
  tracer: _opentelemetry_api0.Tracer;
81
81
  event: Simplify<EventPayload>;
82
- defer: DeferFn;
83
- events: AsTuple<Simplify<EventPayload>>;
84
- runId: string;
85
- requestId?: string | undefined;
86
- jobId?: string | undefined;
87
82
  step: {
88
83
  sendEvent: (idOrOptions: StepOptionsOrId, payload: SendEventPayload) => Promise<SendEventOutput<ClientOptions>>;
89
84
  waitForSignal: <TData>(idOrOptions: StepOptionsOrId, opts: {
@@ -170,6 +165,11 @@ declare const extendedTracesMiddleware: ({
170
165
  }) => InvocationResult<Jsonify<GetFunctionOutputRaw<TFunction>>>;
171
166
  fetch: StepFetch;
172
167
  };
168
+ defer: DeferFn;
169
+ events: AsTuple<Simplify<EventPayload>>;
170
+ runId: string;
171
+ requestId?: string | undefined;
172
+ jobId?: string | undefined;
173
173
  group: ReturnType<typeof createGroupTools>;
174
174
  attempt: number;
175
175
  maxAttempts?: number | undefined;
@@ -79,11 +79,6 @@ declare const extendedTracesMiddleware: ({
79
79
  ctx: {
80
80
  tracer: _opentelemetry_api0.Tracer;
81
81
  event: Simplify<EventPayload>;
82
- defer: DeferFn;
83
- events: AsTuple<Simplify<EventPayload>>;
84
- runId: string;
85
- requestId?: string | undefined;
86
- jobId?: string | undefined;
87
82
  step: {
88
83
  sendEvent: (idOrOptions: StepOptionsOrId, payload: SendEventPayload) => Promise<SendEventOutput<ClientOptions>>;
89
84
  waitForSignal: <TData>(idOrOptions: StepOptionsOrId, opts: {
@@ -170,6 +165,11 @@ declare const extendedTracesMiddleware: ({
170
165
  }) => InvocationResult<Jsonify<GetFunctionOutputRaw<TFunction>>>;
171
166
  fetch: StepFetch;
172
167
  };
168
+ defer: DeferFn;
169
+ events: AsTuple<Simplify<EventPayload>>;
170
+ runId: string;
171
+ requestId?: string | undefined;
172
+ jobId?: string | undefined;
173
173
  group: ReturnType<typeof createGroupTools>;
174
174
  attempt: number;
175
175
  maxAttempts?: number | undefined;
@@ -65,8 +65,8 @@ declare namespace Realtime {
65
65
  kind: z.ZodEnum<["step", "run", "data", "ping", "pong", "closing", "event", "sub", "unsub", "datastream-start", "datastream-end", "chunk"]>;
66
66
  }, "strip", z.ZodTypeAny, {
67
67
  kind: "data" | "event" | "run" | "step" | "ping" | "pong" | "closing" | "sub" | "unsub" | "datastream-start" | "datastream-end" | "chunk";
68
- data?: any;
69
68
  channel?: string | undefined;
69
+ data?: any;
70
70
  topic?: string | undefined;
71
71
  run_id?: string | undefined;
72
72
  fn_id?: string | undefined;
@@ -75,8 +75,8 @@ declare namespace Realtime {
75
75
  stream_id?: string | undefined;
76
76
  }, {
77
77
  kind: "data" | "event" | "run" | "step" | "ping" | "pong" | "closing" | "sub" | "unsub" | "datastream-start" | "datastream-end" | "chunk";
78
- data?: any;
79
78
  channel?: string | undefined;
79
+ data?: any;
80
80
  topic?: string | undefined;
81
81
  run_id?: string | undefined;
82
82
  fn_id?: string | undefined;
@@ -95,8 +95,8 @@ declare namespace Realtime {
95
95
  stream_id?: string | undefined;
96
96
  }, {
97
97
  kind: "data" | "event" | "run" | "step" | "ping" | "pong" | "closing" | "sub" | "unsub" | "datastream-start" | "datastream-end" | "chunk";
98
- data?: any;
99
98
  channel?: string | undefined;
99
+ data?: any;
100
100
  topic?: string | undefined;
101
101
  run_id?: string | undefined;
102
102
  fn_id?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/components/realtime/types.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../../../src/components/realtime/types.ts"],"sourcesContent":[],"mappings":"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"}
@@ -65,8 +65,8 @@ declare namespace Realtime {
65
65
  kind: z.ZodEnum<["step", "run", "data", "ping", "pong", "closing", "event", "sub", "unsub", "datastream-start", "datastream-end", "chunk"]>;
66
66
  }, "strip", z.ZodTypeAny, {
67
67
  kind: "data" | "event" | "run" | "step" | "ping" | "pong" | "closing" | "sub" | "unsub" | "datastream-start" | "datastream-end" | "chunk";
68
- data?: any;
69
68
  channel?: string | undefined;
69
+ data?: any;
70
70
  topic?: string | undefined;
71
71
  run_id?: string | undefined;
72
72
  fn_id?: string | undefined;
@@ -75,8 +75,8 @@ declare namespace Realtime {
75
75
  stream_id?: string | undefined;
76
76
  }, {
77
77
  kind: "data" | "event" | "run" | "step" | "ping" | "pong" | "closing" | "sub" | "unsub" | "datastream-start" | "datastream-end" | "chunk";
78
- data?: any;
79
78
  channel?: string | undefined;
79
+ data?: any;
80
80
  topic?: string | undefined;
81
81
  run_id?: string | undefined;
82
82
  fn_id?: string | undefined;
@@ -95,8 +95,8 @@ declare namespace Realtime {
95
95
  stream_id?: string | undefined;
96
96
  }, {
97
97
  kind: "data" | "event" | "run" | "step" | "ping" | "pong" | "closing" | "sub" | "unsub" | "datastream-start" | "datastream-end" | "chunk";
98
- data?: any;
99
98
  channel?: string | undefined;
99
+ data?: any;
100
100
  topic?: string | undefined;
101
101
  run_id?: string | undefined;
102
102
  fn_id?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/components/realtime/types.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/components/realtime/types.ts"],"sourcesContent":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "inngest",
3
- "version": "4.9.0",
3
+ "version": "4.10.0",
4
4
  "description": "Official SDK for Inngest.com. Inngest is the reliability layer for modern applications. Inngest combines durable execution, events, and queues into a zero-infra platform with built-in observability.",
5
5
  "main": "./index.cjs",
6
6
  "module": "./index.js",
package/types.d.cts CHANGED
@@ -1449,12 +1449,12 @@ declare const functionConfigSchema: z.ZodObject<{
1449
1449
  timeout: z.ZodOptional<z.ZodEffects<z.ZodString, "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s`, string>>;
1450
1450
  }, "strict", z.ZodTypeAny, {
1451
1451
  period: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s`;
1452
- timeout?: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s` | undefined;
1453
1452
  key?: string | undefined;
1453
+ timeout?: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s` | undefined;
1454
1454
  }, {
1455
1455
  period: string;
1456
- timeout?: string | undefined;
1457
1456
  key?: string | undefined;
1457
+ timeout?: string | undefined;
1458
1458
  }>>;
1459
1459
  timeouts: z.ZodOptional<z.ZodObject<{
1460
1460
  start: z.ZodOptional<z.ZodEffects<z.ZodString, "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s`, string>>;
@@ -1556,8 +1556,8 @@ declare const functionConfigSchema: z.ZodObject<{
1556
1556
  } | undefined;
1557
1557
  debounce?: {
1558
1558
  period: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s`;
1559
- timeout?: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s` | undefined;
1560
1559
  key?: string | undefined;
1560
+ timeout?: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s` | undefined;
1561
1561
  } | undefined;
1562
1562
  timeouts?: {
1563
1563
  finish?: "" | `${number}w` | `${number}d` | `${number}h` | `${number}m` | `${number}s` | `${number}m${number}s` | `${number}h${number}s` | `${number}h${number}m` | `${number}h${number}m${number}s` | `${number}d${number}s` | `${number}d${number}m` | `${number}d${number}m${number}s` | `${number}d${number}h` | `${number}d${number}h${number}s` | `${number}d${number}h${number}m` | `${number}d${number}h${number}m${number}s` | `${number}w${number}s` | `${number}w${number}m` | `${number}w${number}m${number}s` | `${number}w${number}h` | `${number}w${number}h${number}s` | `${number}w${number}h${number}m` | `${number}w${number}h${number}m${number}s` | `${number}w${number}d` | `${number}w${number}d${number}s` | `${number}w${number}d${number}m` | `${number}w${number}d${number}m${number}s` | `${number}w${number}d${number}h` | `${number}w${number}d${number}h${number}s` | `${number}w${number}d${number}h${number}m` | `${number}w${number}d${number}h${number}m${number}s` | undefined;
@@ -1617,8 +1617,8 @@ declare const functionConfigSchema: z.ZodObject<{
1617
1617
  } | undefined;
1618
1618
  debounce?: {
1619
1619
  period: string;
1620
- timeout?: string | undefined;
1621
1620
  key?: string | undefined;
1621
+ timeout?: string | undefined;
1622
1622
  } | undefined;
1623
1623
  timeouts?: {
1624
1624
  finish?: string | undefined;