@walkeros/cli 4.2.1 → 4.2.2-next-1782892388850

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/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @walkeros/cli
2
2
 
3
+ ## 4.2.2-next-1782892388850
4
+
5
+ ### Patch Changes
6
+
7
+ - 06c93b4: Update the runtime Docker base image to Node.js 22.23.0, which
8
+ patches the Node.js June 2026 security release. The `walkeros/flow` and
9
+ `walkeros/cli` images now pin a fixed, digest-locked Node version.
10
+ - @walkeros/collector@4.2.2-next-1782892388850
11
+ - @walkeros/core@4.2.2-next-1782892388850
12
+ - @walkeros/server-core@4.2.2-next-1782892388850
13
+ - @walkeros/server-destination-api@4.2.2-next-1782892388850
14
+ - @walkeros/transformer-validate@4.2.2-next-1782892388850
15
+
3
16
  ## 4.2.1
4
17
 
5
18
  ### Patch Changes
package/dist/cli.js CHANGED
@@ -1931,11 +1931,11 @@ function F2(e4) {
1931
1931
  function ji(e4, t4) {
1932
1932
  void 0 !== e4.import && (void 0 !== e4.code && t4.addIssue({ code: "custom", message: "`import` cannot be combined with inline `code`", path: ["import"] }), void 0 === e4.package && t4.addIssue({ code: "custom", message: "`import` requires `package`", path: ["import"] }));
1933
1933
  }
1934
- function Ai(e4) {
1935
- return zi.parse(e4);
1934
+ function zi(e4) {
1935
+ return Ai.parse(e4);
1936
1936
  }
1937
1937
  function Li(e4) {
1938
- return zi.safeParse(e4);
1938
+ return Ai.safeParse(e4);
1939
1939
  }
1940
1940
  function qi(e4) {
1941
1941
  return $i.parse(e4);
@@ -2040,7 +2040,7 @@ function mn2(e4, t4) {
2040
2040
  })(t5, e4);
2041
2041
  return { valid: false, errors: [{ message: t5 instanceof Error ? t5.message : "Invalid JSON", severity: "error", line: i5, column: n6 }], warnings: [] };
2042
2042
  }
2043
- const n5 = [], o4 = [], r5 = zi.safeParse(i4);
2043
+ const n5 = [], o4 = [], r5 = Ai.safeParse(i4);
2044
2044
  if (!r5.success) for (const t5 of r5.error.issues) {
2045
2045
  const i5 = t5.path.join("."), o5 = En(e4, t5.path);
2046
2046
  n5.push({ message: t5.message, severity: "error", path: i5 || "root", ...o5 });
@@ -2248,21 +2248,21 @@ function Fn(e4, t4 = "string", i4) {
2248
2248
  function $n(e4, t4, i4) {
2249
2249
  return Tn({ type: "object" }, { minItems: 2, maxItems: 2, description: i4 || "Tuple with exactly 2 elements [source, transform]" });
2250
2250
  }
2251
- function zn(e4) {
2251
+ function An(e4) {
2252
2252
  const t4 = n3.toJSONSchema(e4, { target: "draft-7" });
2253
- return An(t4), t4;
2253
+ return zn(t4), t4;
2254
2254
  }
2255
- function An(e4) {
2255
+ function zn(e4) {
2256
2256
  const t4 = e4.properties;
2257
2257
  if (t4 && "object" == typeof t4) {
2258
2258
  Array.isArray(e4.required) && (e4.required = e4.required.filter((e5) => {
2259
2259
  const i4 = t4[e5];
2260
2260
  return !(i4 && "object" == typeof i4 && "default" in i4);
2261
2261
  }));
2262
- for (const [e5, i4] of Object.entries(t4)) i4 && "object" == typeof i4 && ("object" === i4.type && i4.properties && "string" != typeof i4.title && (i4.title = e5), An(i4));
2262
+ for (const [e5, i4] of Object.entries(t4)) i4 && "object" == typeof i4 && ("object" === i4.type && i4.properties && "string" != typeof i4.title && (i4.title = e5), zn(i4));
2263
2263
  }
2264
2264
  }
2265
- var e3, t3, i2, r3, a3, s4, c, l2, d, p, u, m2, f2, g2, h2, b2, v2, S, y, w2, k2, C2, x, j2, P3, D2, E2, O, I2, J2, $, z3, A, L3, q2, N2, W2, B3, U3, _2, H2, V2, Z2, G3, K, Q2, X2, Y2, ee2, te2, ie, ne2, oe2, re2, ae2, se2, ce, le2, de2, pe2, ue2, me2, fe, ge2, he2, be2, ve2, Se3, ye2, we2, ke2, Ce, xe2, je3, Pe2, De3, Ee3, Oe3, Ie3, Je3, Re3, Me3, Te2, Fe3, $e2, ze2, Ae2, Le3, qe3, Ne3, We3, Be3, Ue2, _e3, He2, Ve3, Ze3, Ge3, Ke3, Qe3, Xe3, Ye3, et2, tt2, it2, nt2, ot2, rt2, at2, st2, ct3, lt2, dt3, pt3, ut3, mt3, ft2, gt2, ht3, bt3, vt3, St, yt3, wt3, kt2, Ct2, xt, jt2, Pt3, Dt3, Et2, Ot2, It2, Jt2, Rt, Mt2, Tt2, Ft2, $t2, zt2, At2, Lt2, qt2, Nt, Wt2, Bt2, Ut, _t, Ht2, Vt2, Zt2, Gt3, Kt2, Qt2, Xt, Yt2, ei, ti, ii, ni, oi, ri, ai, si, ci, li, di, pi, ui, mi, fi, gi, hi, bi, vi, Si, yi, wi, ki, Ci, xi, Pi, Di, Ei, Oi, Ii, Ji, Ri, Mi, Ti, Fi, $i, zi, Wi, Bi, Ui, _i, Hi, Vi, Zi, Gi, Ki, Qi, Yi, en2, tn2, nn2, on2, rn3, an2, cn2, fn2, gn2, hn2, bn2, vn2, Sn, yn2, wn, qn;
2265
+ var e3, t3, i2, r3, a3, s4, c, l2, d, p, u, m2, f2, g2, h2, b2, v2, S, y, w2, k2, C2, x, j2, P3, D2, E2, O, I2, J2, $, A, z3, L3, q2, N2, W2, B3, U3, _2, H2, V2, Z2, G3, K, Q2, X2, Y2, ee2, te2, ie, ne2, oe2, re2, ae2, se2, ce, le2, de2, pe2, ue2, me2, fe, ge2, he2, be2, ve2, Se3, ye2, we2, ke2, Ce, xe2, je3, Pe2, De3, Ee3, Oe3, Ie3, Je3, Re3, Me3, Te2, Fe3, $e2, Ae2, ze2, Le3, qe3, Ne3, We3, Be3, Ue2, _e3, He2, Ve3, Ze3, Ge3, Ke3, Qe3, Xe3, Ye3, et2, tt2, it2, nt2, ot2, rt2, at2, st2, ct3, lt2, dt3, pt3, ut3, mt3, ft2, gt2, ht3, bt3, vt3, St, yt3, wt3, kt2, Ct2, xt, jt2, Pt3, Dt3, Et2, Ot2, It2, Jt2, Rt, Mt2, Tt2, Ft2, $t2, At2, zt2, Lt2, qt2, Nt, Wt2, Bt2, Ut, _t, Ht2, Vt2, Zt2, Gt3, Kt2, Qt2, Xt, Yt2, ei, ti, ii, ni, oi, ri, ai, si, ci, li, di, pi, ui, mi, fi, gi, hi, bi, vi, Si, yi, wi, ki, Ci, xi, Pi, Di, Ei, Oi, Ii, Ji, Ri, Mi, Ti, Fi, $i, Ai, Wi, Bi, Ui, _i, Hi, Vi, Zi, Gi, Ki, Qi, Yi, en2, tn2, nn2, on2, rn3, an2, cn2, fn2, gn2, hn2, bn2, vn2, Sn, yn2, wn, qn;
2266
2266
  var init_dev = __esm({
2267
2267
  "../core/dist/dev.mjs"() {
2268
2268
  "use strict";
@@ -2271,7 +2271,7 @@ var init_dev = __esm({
2271
2271
  for (var n5 in i4) e3(t4, n5, { get: i4[n5], enumerable: true });
2272
2272
  };
2273
2273
  i2 = {};
2274
- t3(i2, { BaseContextConfig: () => z3, CacheRuleSchema: () => Xe3, CacheSchema: () => Ye3, CacheSchemas: () => Ve3, ClickIdEntrySchema: () => nn2, CodeSchema: () => Yi, CollectorSchemas: () => Et2, ConsentSchema: () => Z2, ContractActionsSchema: () => Ji, ContractRuleSchema: () => Mi, ContractSchema: () => Ti, ContractSchemaEntry: () => Ii, Counter: () => d, CredentialsSchema: () => rn3, DeepPartialEventSchema: () => te2, DestinationSchemas: () => Re3, DestinationsMapConfig: () => q2, EntitiesSchema: () => X2, EntitySchema: () => Q2, EventCacheRuleSchema: () => Ze3, EventCacheSchema: () => Ge3, EventSchema: () => Y2, FlowBundlePackageSchema: () => bi, FlowBundleSchema: () => vi, FlowCodeSchema: () => Si, FlowConfigSchema: () => Fi, FlowDestinationSchema: () => Ei, FlowJsonSchema: () => zi, FlowSchema: () => $i, FlowSchemas: () => mi, FlowSourceSchema: () => Pi, FlowStoreSchema: () => Oi, FlowTransformerSchema: () => Di, GenericEnvConfig: () => J2, GenericSettingsConfig: () => I2, HandlersConfig: () => x, HintSchema: () => en2, HintsSchema: () => tn2, IdConfig: () => D2, Identifier: () => c, InitConfig: () => E2, LoggerConfigSchema: () => it2, LoggerHandlerSchema: () => tt2, LoopSchema: () => me2, MapSchema: () => ge2, MappingResultSchema: () => ke2, MappingSchemas: () => de2, MatchExpressionSchema: () => $e2, MatcherSchemas: () => Me3, OptionalPrimitiveValue: () => u, OrderedPropertiesSchema: () => H2, PartialEventSchema: () => ee2, PolicySchema: () => be2, PrimaryConfig: () => O, PrimitiveValue: () => p, ProcessingControlConfig: () => A, PropertiesSchema: () => _2, PropertySchema: () => U3, PropertyTypeSchema: () => B3, QueueConfig: () => P3, RequiredBoolean: () => s4, RequiredNumber: () => a3, RequiredString: () => r3, RouteSchema: () => We3, RouteWithoutManySchema: () => He2, RuleSchema: () => Se3, RulesSchema: () => ye2, RuntimeInstanceConfig: () => $, ServiceAccountSchema: () => on2, SetSchema: () => fe, SourceSchema: () => K, SourceSchemas: () => Bt2, SourceTypeSchema: () => V2, SourcesMapConfig: () => L3, StateSchema: () => et2, StoreCacheRuleSchema: () => Ke3, StoreCacheSchema: () => Qe3, StoreSchemas: () => ci, Timestamp: () => l2, TransformerSchemas: () => ni, UserSchema: () => G3, UtilitySchemas: () => m2, ValidateEventsSchema: () => xi, ValueConfigSchema: () => he2, ValueSchema: () => pe2, ValuesSchema: () => ue2, VerboseConfig: () => j2, WalkerOSSchemas: () => N2, configJsonSchema: () => Wi, consentJsonSchema: () => le2, contractJsonSchema: () => Ki, contractRuleJsonSchema: () => Gi, createArraySchema: () => Tn, createConsentConfig: () => F2, createDataTransformationConfig: () => R3, createEnumSchema: () => Fn, createMappingRulesConfig: () => M2, createObjectSchema: () => Rn, createPolicyConfig: () => T, createTupleSchema: () => $n, credentialsJsonSchema: () => an2, destinationJsonSchema: () => Hi, entityJsonSchema: () => se2, eventJsonSchema: () => ie, flowConfigJsonSchema: () => Ui, flowJsonSchema: () => Bi, loopJsonSchema: () => je3, mapJsonSchema: () => De3, orderedPropertiesJsonSchema: () => ae2, parseConfig: () => Ai, parseFlow: () => qi, partialEventJsonSchema: () => ne2, policyJsonSchema: () => Ee3, propertiesJsonSchema: () => re2, ruleJsonSchema: () => Oe3, rulesJsonSchema: () => Ie3, safeParseConfig: () => Li, safeParseFlow: () => Ni, setJsonSchema: () => Pe2, sourceJsonSchema: () => _i, sourceTypeJsonSchema: () => ce, storeJsonSchema: () => Zi, transformerJsonSchema: () => Vi, userJsonSchema: () => oe2, validateEventsJsonSchema: () => Qi, validateFlowConfig: () => mn2, valueConfigJsonSchema: () => xe2, valueJsonSchema: () => Ce, z: () => n3, zodToSchema: () => zn });
2274
+ t3(i2, { BaseContextConfig: () => A, CacheRuleSchema: () => Xe3, CacheSchema: () => Ye3, CacheSchemas: () => Ve3, ClickIdEntrySchema: () => nn2, CodeSchema: () => Yi, CollectorSchemas: () => Et2, ConsentSchema: () => Z2, ContractActionsSchema: () => Ji, ContractRuleSchema: () => Mi, ContractSchema: () => Ti, ContractSchemaEntry: () => Ii, Counter: () => d, CredentialsSchema: () => rn3, DeepPartialEventSchema: () => te2, DestinationSchemas: () => Re3, DestinationsMapConfig: () => q2, EntitiesSchema: () => X2, EntitySchema: () => Q2, EventCacheRuleSchema: () => Ze3, EventCacheSchema: () => Ge3, EventSchema: () => Y2, FlowBundlePackageSchema: () => bi, FlowBundleSchema: () => vi, FlowCodeSchema: () => Si, FlowConfigSchema: () => Fi, FlowDestinationSchema: () => Ei, FlowJsonSchema: () => Ai, FlowSchema: () => $i, FlowSchemas: () => mi, FlowSourceSchema: () => Pi, FlowStoreSchema: () => Oi, FlowTransformerSchema: () => Di, GenericEnvConfig: () => J2, GenericSettingsConfig: () => I2, HandlersConfig: () => x, HintSchema: () => en2, HintsSchema: () => tn2, IdConfig: () => D2, Identifier: () => c, InitConfig: () => E2, LoggerConfigSchema: () => it2, LoggerHandlerSchema: () => tt2, LoopSchema: () => me2, MapSchema: () => ge2, MappingResultSchema: () => ke2, MappingSchemas: () => de2, MatchExpressionSchema: () => $e2, MatcherSchemas: () => Me3, OptionalPrimitiveValue: () => u, OrderedPropertiesSchema: () => H2, PartialEventSchema: () => ee2, PolicySchema: () => be2, PrimaryConfig: () => O, PrimitiveValue: () => p, ProcessingControlConfig: () => z3, PropertiesSchema: () => _2, PropertySchema: () => U3, PropertyTypeSchema: () => B3, QueueConfig: () => P3, RequiredBoolean: () => s4, RequiredNumber: () => a3, RequiredString: () => r3, RouteSchema: () => We3, RouteWithoutManySchema: () => He2, RuleSchema: () => Se3, RulesSchema: () => ye2, RuntimeInstanceConfig: () => $, ServiceAccountSchema: () => on2, SetSchema: () => fe, SourceSchema: () => K, SourceSchemas: () => Bt2, SourceTypeSchema: () => V2, SourcesMapConfig: () => L3, StateSchema: () => et2, StoreCacheRuleSchema: () => Ke3, StoreCacheSchema: () => Qe3, StoreSchemas: () => ci, Timestamp: () => l2, TransformerSchemas: () => ni, UserSchema: () => G3, UtilitySchemas: () => m2, ValidateEventsSchema: () => xi, ValueConfigSchema: () => he2, ValueSchema: () => pe2, ValuesSchema: () => ue2, VerboseConfig: () => j2, WalkerOSSchemas: () => N2, configJsonSchema: () => Wi, consentJsonSchema: () => le2, contractJsonSchema: () => Ki, contractRuleJsonSchema: () => Gi, createArraySchema: () => Tn, createConsentConfig: () => F2, createDataTransformationConfig: () => R3, createEnumSchema: () => Fn, createMappingRulesConfig: () => M2, createObjectSchema: () => Rn, createPolicyConfig: () => T, createTupleSchema: () => $n, credentialsJsonSchema: () => an2, destinationJsonSchema: () => Hi, entityJsonSchema: () => se2, eventJsonSchema: () => ie, flowConfigJsonSchema: () => Ui, flowJsonSchema: () => Bi, loopJsonSchema: () => je3, mapJsonSchema: () => De3, orderedPropertiesJsonSchema: () => ae2, parseConfig: () => zi, parseFlow: () => qi, partialEventJsonSchema: () => ne2, policyJsonSchema: () => Ee3, propertiesJsonSchema: () => re2, ruleJsonSchema: () => Oe3, rulesJsonSchema: () => Ie3, safeParseConfig: () => Li, safeParseFlow: () => Ni, setJsonSchema: () => Pe2, sourceJsonSchema: () => _i, sourceTypeJsonSchema: () => ce, storeJsonSchema: () => Zi, transformerJsonSchema: () => Vi, userJsonSchema: () => oe2, validateEventsJsonSchema: () => Qi, validateFlowConfig: () => mn2, valueConfigJsonSchema: () => xe2, valueJsonSchema: () => Ce, z: () => n3, zodToSchema: () => An });
2275
2275
  r3 = n3.string();
2276
2276
  a3 = n3.number();
2277
2277
  s4 = n3.boolean();
@@ -2301,8 +2301,8 @@ var init_dev = __esm({
2301
2301
  I2 = n3.object({ settings: n3.any().optional().describe("Implementation-specific configuration") }).partial();
2302
2302
  J2 = n3.object({ env: n3.any().optional().describe("Environment dependencies (platform-specific)") }).partial();
2303
2303
  $ = n3.object({ type: n3.string().optional().describe("Instance type identifier"), config: n3.unknown().describe("Instance configuration") }).partial();
2304
- z3 = n3.object({ collector: n3.unknown().describe("Collector instance (runtime object)"), config: n3.unknown().describe("Configuration"), env: n3.unknown().describe("Environment dependencies") }).partial();
2305
- A = n3.object({ ignore: n3.boolean().describe("Set to true to skip processing").optional(), condition: n3.string().optional().describe("Condition function: return true to process") }).partial();
2304
+ A = n3.object({ collector: n3.unknown().describe("Collector instance (runtime object)"), config: n3.unknown().describe("Configuration"), env: n3.unknown().describe("Environment dependencies") }).partial();
2305
+ z3 = n3.object({ ignore: n3.boolean().describe("Set to true to skip processing").optional(), condition: n3.string().optional().describe("Condition function: return true to process") }).partial();
2306
2306
  L3 = n3.object({ sources: n3.record(n3.string(), n3.unknown()).describe("Map of source instances") }).partial();
2307
2307
  q2 = n3.object({ destinations: n3.record(n3.string(), n3.unknown()).describe("Map of destination instances") }).partial();
2308
2308
  N2 = {};
@@ -2358,11 +2358,11 @@ var init_dev = __esm({
2358
2358
  Te2 = n3.enum(["eq", "contains", "prefix", "suffix", "regex", "gt", "lt", "exists"]).meta({ id: "MatcherOperator", title: "Matcher.Operator", description: "Supported operators for a match condition." });
2359
2359
  Fe3 = n3.object({ key: n3.string(), operator: Te2, value: n3.string(), not: n3.boolean().optional() }).meta({ id: "MatcherCondition", title: "Matcher.Condition", description: "Single match condition (key, operator, value, optional not)." });
2360
2360
  $e2 = n3.union([Fe3, n3.object({ and: n3.array(n3.lazy(() => $e2)) }), n3.object({ or: n3.array(n3.lazy(() => $e2)) })]).meta({ id: "MatcherExpression", title: "Matcher.Expression", description: "Boolean expression tree of match conditions (leaf, and, or)." });
2361
- ze2 = n3.strictObject({ match: $e2.optional(), next: n3.lazy(() => We3) });
2362
- Ae2 = n3.strictObject({ match: $e2.optional(), one: n3.array(n3.lazy(() => We3)) });
2361
+ Ae2 = n3.strictObject({ match: $e2.optional(), next: n3.lazy(() => We3) });
2362
+ ze2 = n3.strictObject({ match: $e2.optional(), one: n3.array(n3.lazy(() => We3)) });
2363
2363
  Le3 = n3.strictObject({ match: $e2.optional(), many: n3.array(n3.lazy(() => We3)) });
2364
2364
  qe3 = n3.strictObject({ match: $e2 });
2365
- Ne3 = n3.union([ze2, Ae2, Le3, qe3]);
2365
+ Ne3 = n3.union([Ae2, ze2, Le3, qe3]);
2366
2366
  We3 = n3.union([n3.string(), n3.array(n3.lazy(() => We3)), Ne3]).meta({ id: "Route", title: "Route", description: "Recursive route: string ID, sequence of routes, or a RouteConfig (next/one/many/gate)." });
2367
2367
  Be3 = n3.strictObject({ match: $e2.optional(), next: n3.lazy(() => He2) });
2368
2368
  Ue2 = n3.strictObject({ match: $e2.optional(), one: n3.array(n3.lazy(() => He2)) });
@@ -2393,7 +2393,7 @@ var init_dev = __esm({
2393
2393
  }).meta({ id: "StateConfig", title: "State.Config", description: "Declarative store operation: stash (set) or fetch (get) a value against a store. key = store side, value = event side, mode = direction." });
2394
2394
  tt2 = n3.any().meta({ id: "LoggerHandler", title: "Logger.Handler", description: "Custom log handler function (level, ...args) => void" });
2395
2395
  it2 = n3.object({ level: n3.union([n3.number(), n3.enum(["ERROR", "WARN", "INFO", "DEBUG"])]).optional().describe("Minimum log level (default: ERROR)"), handler: tt2.optional().describe("Custom log handler function") }).meta({ id: "LoggerConfig", title: "Logger.Config", description: "Logger configuration (level, handler) to override the collector defaults" });
2396
- nt2 = n3.object({ consent: Z2.optional().describe("Required consent states to send events to this destination"), settings: n3.any().meta({ id: "DestinationSettings", title: "Destination.Settings", description: "Implementation-specific configuration (destination-defined shape)." }).describe("Implementation-specific configuration").optional(), credentials: n3.any().meta({ id: "DestinationCredentials", title: "Destination.Credentials", description: "Optional credentials slot (destination-defined shape); supports $env. The per-package shape is supplied via mergeConfigSchema." }).describe("Optional credentials (destination-defined shape)").optional(), data: n3.union([pe2, ue2]).optional().describe("Global data transformation applied to all events for this destination"), include: n3.array(n3.string()).optional().describe("Event sections to flatten into context.data"), env: n3.any().meta({ id: "DestinationEnv", title: "Destination.Env", description: "Environment dependencies (destination-defined shape) \u2014 platform, SDK, or mock hook." }).describe("Environment dependencies (platform-specific)").optional(), id: c.describe("Destination instance identifier (defaults to destination key)").optional(), init: n3.boolean().describe("Whether to initialize immediately").optional(), loadScript: n3.boolean().describe("Whether to load external script (for web destinations)").optional(), mapping: ye2.optional().describe("Entity-action specific mapping rules for this destination"), policy: be2.optional().describe("Pre-processing policy rules applied before event mapping"), queue: n3.boolean().describe("Whether to queue events when consent is not granted").optional(), require: n3.array(n3.string()).optional().describe('Defer destination initialization until these collector events fire (e.g., ["consent"])'), logger: it2.optional().describe("Logger configuration (level, handler) to override the collector defaults"), setup: n3.union([n3.boolean(), n3.record(n3.string(), n3.unknown())]).optional().describe("One-time setup options applied during destination registration (boolean enables defaults, object configures specifics)"), before: He2.optional().describe("Post-collector transformer chain applied before this destination receives the event. `many` is not valid here \u2014 use multiple destinations for post-collector fan-out."), next: He2.optional().describe("Post-push transformer chain. Runs after destination push completes; push response is available at ingest._response. `many` is not valid here \u2014 use multiple destinations for post-collector fan-out."), cache: Ge3.optional().describe("Cache configuration for deduplication; skip push on cache HIT"), state: n3.union([et2, n3.array(et2)]).optional().describe("Declarative store get/set operations applied around this destination"), disabled: n3.boolean().describe("Completely skip this destination (no init, no push, no queue)").optional(), mock: n3.unknown().meta({ id: "DestinationMock", title: "Destination.Mock", description: "Return this value instead of calling push(). Dev/testing only." }).optional().describe("Return this value instead of calling push(). Dev/testing only."), queueMax: n3.number().optional().describe("Maximum consent-denied events retained in queuePush for this destination. FIFO drop on overflow. Default 1000."), dlqMax: n3.number().optional().describe("Maximum failed-push entries retained in dlq for this destination. FIFO drop on overflow. Default 100."), timeout: n3.number().optional().describe("Per-destination delivery timeout in ms (default 10000); a delivery that does not settle in this window is routed to the DLQ like a thrown push."), batch: n3.union([n3.number(), n3.object({ wait: n3.number().optional(), size: n3.number().optional(), age: n3.number().optional() })]).optional().describe("Enables batching for all of this destination's events into one shared default buffer; a mapping rule's own batch splits that entity-action into its own buffer and overrides per field. Bare number is the debounce wait window; object form supports wait (debounce ms), size (count cap, default 1000), age (max ms since first entry, default 30000)."), breaker: n3.union([n3.number(), n3.object({ threshold: n3.number().optional(), cooldown: n3.number().optional() })]).optional().describe("Per-destination circuit breaker (presence-gated). After threshold consecutive transport failures the breaker opens and events are skipped until cooldown ms elapse, then one probe is admitted; success closes it, failure re-opens it. Partial-batch row failures are breaker-neutral. Bare number is the threshold; object form supports threshold (default 5) and cooldown (default 30000ms).") }).meta({ id: "DestinationConfig", title: "Destination.Config", description: "Destination configuration: consent, settings, data, env, mapping rules, policy, queue, logger, before/next chains, cache." }).describe("Destination configuration");
2396
+ nt2 = n3.object({ consent: Z2.optional().describe("Required consent states to send events to this destination"), settings: n3.any().meta({ id: "DestinationSettings", title: "Destination.Settings", description: "Implementation-specific configuration (destination-defined shape)." }).describe("Implementation-specific configuration").optional(), credentials: n3.any().meta({ id: "DestinationCredentials", title: "Destination.Credentials", description: "Optional credentials slot (destination-defined shape); back it with a managed secret via $secret.NAME (credentials use $secret, not $env). The per-package shape is supplied via mergeConfigSchema." }).describe("Optional credentials (destination-defined shape)").optional(), data: n3.union([pe2, ue2]).optional().describe("Global data transformation applied to all events for this destination"), include: n3.array(n3.string()).optional().describe("Event sections to flatten into context.data"), env: n3.any().meta({ id: "DestinationEnv", title: "Destination.Env", description: "Environment dependencies (destination-defined shape) \u2014 platform, SDK, or mock hook." }).describe("Environment dependencies (platform-specific)").optional(), id: c.describe("Destination instance identifier (defaults to destination key)").optional(), init: n3.boolean().describe("Whether to initialize immediately").optional(), loadScript: n3.boolean().describe("Whether to load external script (for web destinations)").optional(), mapping: ye2.optional().describe("Entity-action specific mapping rules for this destination"), policy: be2.optional().describe("Pre-processing policy rules applied before event mapping"), queue: n3.boolean().describe("Whether to queue events when consent is not granted").optional(), require: n3.array(n3.string()).optional().describe('Defer destination initialization until these collector events fire (e.g., ["consent"])'), logger: it2.optional().describe("Logger configuration (level, handler) to override the collector defaults"), setup: n3.union([n3.boolean(), n3.record(n3.string(), n3.unknown())]).optional().describe("One-time setup options applied during destination registration (boolean enables defaults, object configures specifics)"), before: He2.optional().describe("Post-collector transformer chain applied before this destination receives the event. `many` is not valid here \u2014 use multiple destinations for post-collector fan-out."), next: He2.optional().describe("Post-push transformer chain. Runs after destination push completes; push response is available at ingest._response. `many` is not valid here \u2014 use multiple destinations for post-collector fan-out."), cache: Ge3.optional().describe("Cache configuration for deduplication; skip push on cache HIT"), state: n3.union([et2, n3.array(et2)]).optional().describe("Declarative store get/set operations applied around this destination"), disabled: n3.boolean().describe("Completely skip this destination (no init, no push, no queue)").optional(), mock: n3.unknown().meta({ id: "DestinationMock", title: "Destination.Mock", description: "Return this value instead of calling push(). Dev/testing only." }).optional().describe("Return this value instead of calling push(). Dev/testing only."), queueMax: n3.number().optional().describe("Maximum consent-denied events retained in queuePush for this destination. FIFO drop on overflow. Default 1000."), dlqMax: n3.number().optional().describe("Maximum failed-push entries retained in dlq for this destination. FIFO drop on overflow. Default 100."), timeout: n3.number().optional().describe("Per-destination delivery timeout in ms (default 10000); a delivery that does not settle in this window is routed to the DLQ like a thrown push."), batch: n3.union([n3.number(), n3.object({ wait: n3.number().optional(), size: n3.number().optional(), age: n3.number().optional() })]).optional().describe("Enables batching for all of this destination's events into one shared default buffer; a mapping rule's own batch splits that entity-action into its own buffer and overrides per field. Bare number is the debounce wait window; object form supports wait (debounce ms), size (count cap, default 1000), age (max ms since first entry, default 30000)."), breaker: n3.union([n3.number(), n3.object({ threshold: n3.number().optional(), cooldown: n3.number().optional() })]).optional().describe("Per-destination circuit breaker (presence-gated). After threshold consecutive transport failures the breaker opens and events are skipped until cooldown ms elapse, then one probe is admitted; success closes it, failure re-opens it. Partial-batch row failures are breaker-neutral. Bare number is the threshold; object form supports threshold (default 5) and cooldown (default 30000ms).") }).meta({ id: "DestinationConfig", title: "Destination.Config", description: "Destination configuration: consent, settings, data, env, mapping rules, policy, queue, logger, before/next chains, cache." }).describe("Destination configuration");
2397
2397
  ot2 = nt2.partial().meta({ id: "DestinationPartialConfig", title: "Destination.PartialConfig", description: "Partial destination configuration with all fields optional." }).describe("Partial destination configuration with all fields optional");
2398
2398
  rt2 = be2.describe("Destination policy rules for event pre-processing");
2399
2399
  at2 = n3.object({ collector: n3.unknown().meta({ id: "DestinationContextCollector", title: "Collector.Instance", description: "Collector instance handed to the destination (runtime object)." }).describe("Collector instance (runtime object)"), config: nt2.describe("Destination configuration"), data: n3.union([n3.unknown(), n3.array(n3.unknown())]).optional().describe("Transformed event data"), env: n3.unknown().meta({ id: "DestinationContextEnv", title: "Destination.Env", description: "Environment dependencies (destination-defined shape)." }).describe("Environment dependencies") }).meta({ id: "DestinationContext", title: "Destination.Context", description: "Destination context passed to init and push functions." }).describe("Destination context for init and push functions");
@@ -2419,7 +2419,7 @@ var init_dev = __esm({
2419
2419
  Pt3 = o2(mt3);
2420
2420
  Dt3 = o2(St);
2421
2421
  Et2 = {};
2422
- t3(Et2, { CommandTypeSchema: () => Ot2, ConfigSchema: () => It2, DestinationsSchema: () => Ft2, InitConfigSchema: () => Rt, InstanceSchema: () => $t2, PushContextSchema: () => Mt2, SessionDataSchema: () => Jt2, SourcesSchema: () => Tt2, commandTypeJsonSchema: () => zt2, configJsonSchema: () => At2, initConfigJsonSchema: () => qt2, instanceJsonSchema: () => Wt2, pushContextJsonSchema: () => Nt, sessionDataJsonSchema: () => Lt2 });
2422
+ t3(Et2, { CommandTypeSchema: () => Ot2, ConfigSchema: () => It2, DestinationsSchema: () => Ft2, InitConfigSchema: () => Rt, InstanceSchema: () => $t2, PushContextSchema: () => Mt2, SessionDataSchema: () => Jt2, SourcesSchema: () => Tt2, commandTypeJsonSchema: () => At2, configJsonSchema: () => zt2, initConfigJsonSchema: () => qt2, instanceJsonSchema: () => Wt2, pushContextJsonSchema: () => Nt, sessionDataJsonSchema: () => Lt2 });
2423
2423
  Ot2 = n3.union([n3.enum(["action", "config", "consent", "context", "destination", "elb", "globals", "hook", "init", "link", "run", "user", "walker"]), n3.string()]).meta({ id: "CollectorCommandType", title: "Collector.CommandType", description: "Collector command type identifier (standard or extension string)." }).describe("Collector command type: standard commands or custom string for extensions");
2424
2424
  It2 = n3.object({ run: n3.boolean().describe("Whether to run collector automatically on initialization").optional(), globalsStatic: _2.describe("Static global properties that persist across collector runs"), sessionStatic: n3.record(n3.string(), n3.unknown()).meta({ id: "CollectorSessionStatic", title: "Collector.SessionStatic", description: "Static session data that persists across collector runs." }).describe("Static session data that persists across collector runs"), logger: it2.optional().describe("Logger configuration (level, handler)"), queueMax: n3.number().optional().describe("Maximum events retained in collector.queue (late-registration replay). FIFO drop on overflow. Default 1000.") }).meta({ id: "CollectorConfig", title: "Collector.Config", description: "Core collector configuration (globals/session statics, logger, buffer bounds)." }).describe("Core collector configuration");
2425
2425
  Jt2 = _2.and(n3.object({ isStart: n3.boolean().describe("Whether this is a new session start"), storage: n3.boolean().describe("Whether storage is available"), id: c.describe("Session identifier").optional(), start: l2.describe("Session start timestamp").optional(), marketing: n3.literal(true).optional().describe("Marketing attribution flag"), updated: l2.describe("Last update timestamp").optional(), isNew: n3.boolean().describe("Whether this is a new session").optional(), device: c.describe("Device identifier").optional(), count: d.describe("Event count in session").optional(), runs: d.describe("Number of runs").optional() })).meta({ id: "CollectorSessionData", title: "Collector.SessionData", description: "Session state and tracking data." }).describe("Session state and tracking data");
@@ -2428,8 +2428,8 @@ var init_dev = __esm({
2428
2428
  Tt2 = n3.record(n3.string(), n3.unknown()).meta({ id: "CollectorSources", title: "Collector.Sources", description: "Map of source IDs to runtime source instances." }).describe("Map of source IDs to source instances");
2429
2429
  Ft2 = n3.record(n3.string(), n3.unknown()).meta({ id: "CollectorDestinations", title: "Collector.Destinations", description: "Map of destination IDs to runtime destination instances." }).describe("Map of destination IDs to destination instances");
2430
2430
  $t2 = n3.object({ push: n3.unknown().describe("Push function for processing events"), command: n3.unknown().describe("Command function for walker commands"), allowed: n3.boolean().describe("Whether event processing is allowed"), config: It2.describe("Current collector configuration"), consent: Z2.describe("Current consent state"), custom: _2.describe("Custom implementation-specific properties"), sources: Tt2.describe("Registered source instances"), destinations: Ft2.describe("Registered destination instances"), globals: _2.describe("Current global properties"), hooks: n3.unknown().describe("Lifecycle hook functions"), on: n3.unknown().describe("Event lifecycle configuration"), queue: n3.array(Y2).describe("Queued events awaiting processing"), round: n3.number().describe("Collector run count (increments with each run)"), session: n3.union([Jt2]).describe("Current session state"), timing: n3.number().describe("Event processing timing information"), user: G3.describe("Current user data") }).meta({ id: "CollectorInstance", title: "Collector.Instance", description: "Collector instance (runtime object with push/command + full state and component maps)." }).describe("Collector instance with state and methods");
2431
- zt2 = o2(Ot2);
2432
- At2 = o2(It2);
2431
+ At2 = o2(Ot2);
2432
+ zt2 = o2(It2);
2433
2433
  Lt2 = o2(Jt2);
2434
2434
  qt2 = o2(Rt);
2435
2435
  Nt = o2(Mt2);
@@ -2437,7 +2437,7 @@ var init_dev = __esm({
2437
2437
  Bt2 = {};
2438
2438
  t3(Bt2, { BaseEnvSchema: () => Ut, ConfigSchema: () => _t, InitSchema: () => Zt2, InitSourceSchema: () => Gt3, InitSourcesSchema: () => Kt2, InstanceSchema: () => Vt2, PartialConfigSchema: () => Ht2, baseEnvJsonSchema: () => Qt2, configJsonSchema: () => Xt, initSourceJsonSchema: () => ti, initSourcesJsonSchema: () => ii, instanceJsonSchema: () => ei, partialConfigJsonSchema: () => Yt2 });
2439
2439
  Ut = n3.object({ push: n3.unknown().meta({ id: "SourcePushFn", title: "Source.PushFn", description: "Collector push function passed to the source via dependency injection." }).describe("Collector push function"), command: n3.unknown().meta({ id: "SourceCommandFn", title: "Source.CommandFn", description: "Collector command function passed to the source." }).describe("Collector command function"), sources: n3.unknown().optional().describe("Map of registered source instances"), elb: n3.unknown().meta({ id: "ElbFn", title: "Elb.Fn", description: "Public `elb(...)` API function alias for collector.push." }).describe("Public API function (alias for collector.push)") }).catchall(n3.unknown()).meta({ id: "SourceBaseEnv", title: "Source.BaseEnv", description: "Base environment for source dependency injection; platform-specific sources extend this." }).describe("Base environment for dependency injection - platform-specific sources extend this");
2440
- _t = we2.extend({ settings: n3.any().meta({ id: "SourceSettings", title: "Source.Settings", description: "Implementation-specific configuration (source-defined shape)." }).describe("Implementation-specific configuration").optional(), credentials: n3.any().meta({ id: "SourceCredentials", title: "Source.Credentials", description: "Optional credentials slot (source-defined shape); supports $env. The per-package shape is supplied via mergeConfigSchema." }).describe("Optional credentials (source-defined shape)").optional(), env: Ut.optional().describe("Environment dependencies (platform-specific)"), id: c.describe("Source identifier (defaults to source key)").optional(), primary: n3.boolean().describe("Mark as primary (only one can be primary)").optional(), require: n3.array(n3.string()).optional().describe('Defer source initialization until these collector events fire (e.g., ["consent"])'), logger: it2.optional().describe("Logger configuration (level, handler) to override the collector defaults"), async: n3.boolean().optional().describe('Respond-first acknowledgement for response-producing server sources (express today; future fetch/lambda). When true (the default for such sources) the source responds 2xx ("accepted") before the event is delivered; when false it waits for delivery to settle. Browser/dataLayer sources have no HTTP response to defer and ignore it. A 2xx means accepted, not delivered. Default is per source type.'), setup: n3.union([n3.boolean(), n3.record(n3.string(), n3.unknown())]).optional().describe("One-time setup options applied during source registration (boolean enables defaults, object configures specifics)"), ingest: n3.union([pe2, ue2]).optional().describe("Ingest metadata extraction mapping. Extracts values from raw request objects (Express req, Lambda event) using mapping syntax."), disabled: n3.boolean().describe("Completely skip this source (no init, no event capture)").optional(), state: n3.union([et2, n3.array(et2)]).optional().describe("Declarative store get/set operations applied around this source"), init: n3.boolean().optional().describe("Init lifecycle flag set by collector to true after Instance.init() runs") }).meta({ id: "SourceConfig", title: "Source.Config", description: "Source configuration with mapping, environment, and lifecycle hooks." }).describe("Source configuration with mapping and environment");
2440
+ _t = we2.extend({ settings: n3.any().meta({ id: "SourceSettings", title: "Source.Settings", description: "Implementation-specific configuration (source-defined shape)." }).describe("Implementation-specific configuration").optional(), credentials: n3.any().meta({ id: "SourceCredentials", title: "Source.Credentials", description: "Optional credentials slot (source-defined shape); back it with a managed secret via $secret.NAME (credentials use $secret, not $env). The per-package shape is supplied via mergeConfigSchema." }).describe("Optional credentials (source-defined shape)").optional(), env: Ut.optional().describe("Environment dependencies (platform-specific)"), id: c.describe("Source identifier (defaults to source key)").optional(), primary: n3.boolean().describe("Mark as primary (only one can be primary)").optional(), require: n3.array(n3.string()).optional().describe('Defer source initialization until these collector events fire (e.g., ["consent"])'), logger: it2.optional().describe("Logger configuration (level, handler) to override the collector defaults"), async: n3.boolean().optional().describe('Respond-first acknowledgement for response-producing server sources (express today; future fetch/lambda). When true (the default for such sources) the source responds 2xx ("accepted") before the event is delivered; when false it waits for delivery to settle. Browser/dataLayer sources have no HTTP response to defer and ignore it. A 2xx means accepted, not delivered. Default is per source type.'), setup: n3.union([n3.boolean(), n3.record(n3.string(), n3.unknown())]).optional().describe("One-time setup options applied during source registration (boolean enables defaults, object configures specifics)"), ingest: n3.union([pe2, ue2]).optional().describe("Ingest metadata extraction mapping. Extracts values from raw request objects (Express req, Lambda event) using mapping syntax."), disabled: n3.boolean().describe("Completely skip this source (no init, no event capture)").optional(), state: n3.union([et2, n3.array(et2)]).optional().describe("Declarative store get/set operations applied around this source"), init: n3.boolean().optional().describe("Init lifecycle flag set by collector to true after Instance.init() runs") }).meta({ id: "SourceConfig", title: "Source.Config", description: "Source configuration with mapping, environment, and lifecycle hooks." }).describe("Source configuration with mapping and environment");
2441
2441
  Ht2 = _t.partial().meta({ id: "SourcePartialConfig", title: "Source.PartialConfig", description: "Partial source configuration with all fields optional." }).describe("Partial source configuration with all fields optional");
2442
2442
  Vt2 = n3.object({ type: n3.string().describe('Source type identifier (e.g., "browser", "dataLayer")'), config: _t.describe("Current source configuration"), push: n3.any().meta({ id: "SourceInstancePushFn", title: "Source.PushFn", description: "Push function \u2014 THE HANDLER (flexible signature for platform compatibility)." }).describe("Push function - THE HANDLER (flexible signature for platform compatibility)"), destroy: n3.any().meta({ id: "SourceDestroyFn", title: "Source.DestroyFn", description: "Cleanup function called when the source is removed." }).optional().describe("Cleanup function called when source is removed"), on: n3.unknown().optional().describe("Lifecycle hook function for event types") }).meta({ id: "SourceInstance", title: "Source.Instance", description: "Source instance (runtime object with push handler and lifecycle methods)." }).describe("Source instance with push handler and lifecycle methods");
2443
2443
  Zt2 = n3.any().meta({ id: "SourceInit", title: "Source.Init", description: "Source initialization function: (config, env) => Instance | Promise<Instance>." }).describe("Source initialization function: (config, env) => Instance | Promise<Instance>");
@@ -2457,12 +2457,12 @@ var init_dev = __esm({
2457
2457
  si = o2(ri);
2458
2458
  ci = {};
2459
2459
  t3(ci, { ConfigSchema: () => li, PartialConfigSchema: () => di, configJsonSchema: () => pi, partialConfigJsonSchema: () => ui });
2460
- li = n3.object({ settings: n3.unknown().meta({ id: "StoreSettings", title: "Store.Settings", description: "Implementation-specific configuration (store-defined shape)." }).describe("Implementation-specific configuration").optional(), credentials: n3.unknown().meta({ id: "StoreCredentials", title: "Store.Credentials", description: "Optional credentials slot (store-defined shape); supports $env. The per-package shape is supplied via mergeConfigSchema." }).describe("Optional credentials (store-defined shape)").optional(), env: n3.unknown().meta({ id: "StoreEnv", title: "Store.Env", description: "Environment dependencies (store-defined shape)." }).describe("Environment dependencies (platform-specific)").optional(), id: c.describe("Store instance identifier (defaults to store key)").optional(), logger: it2.optional().describe("Logger configuration (level, handler) to override the collector defaults"), setup: n3.union([n3.boolean(), n3.record(n3.string(), n3.unknown())]).optional().describe("One-time setup options applied during store registration (boolean enables defaults, object configures specifics)"), file: n3.boolean().optional().describe("Persist values as raw bytes (byte-exact), bypassing the structured codec. Default false (structured). Set true only on byte-native stores for asset serving; sheets rejects it.") }).meta({ id: "StoreConfig", title: "Store.Config", description: "Store configuration (settings, env, logger): key-value infrastructure component." }).describe("Store configuration");
2460
+ li = n3.object({ settings: n3.unknown().meta({ id: "StoreSettings", title: "Store.Settings", description: "Implementation-specific configuration (store-defined shape)." }).describe("Implementation-specific configuration").optional(), credentials: n3.unknown().meta({ id: "StoreCredentials", title: "Store.Credentials", description: "Optional credentials slot (store-defined shape); back it with a managed secret via $secret.NAME (credentials use $secret, not $env). The per-package shape is supplied via mergeConfigSchema." }).describe("Optional credentials (store-defined shape)").optional(), env: n3.unknown().meta({ id: "StoreEnv", title: "Store.Env", description: "Environment dependencies (store-defined shape)." }).describe("Environment dependencies (platform-specific)").optional(), id: c.describe("Store instance identifier (defaults to store key)").optional(), logger: it2.optional().describe("Logger configuration (level, handler) to override the collector defaults"), setup: n3.union([n3.boolean(), n3.record(n3.string(), n3.unknown())]).optional().describe("One-time setup options applied during store registration (boolean enables defaults, object configures specifics)"), file: n3.boolean().optional().describe("Persist values as raw bytes (byte-exact), bypassing the structured codec. Default false (structured). Set true only on byte-native stores for asset serving; sheets rejects it.") }).meta({ id: "StoreConfig", title: "Store.Config", description: "Store configuration (settings, env, logger): key-value infrastructure component." }).describe("Store configuration");
2461
2461
  di = li.partial().meta({ id: "StorePartialConfig", title: "Store.PartialConfig", description: "Partial store configuration with all fields optional." }).describe("Partial store configuration with all fields optional");
2462
2462
  pi = o2(li);
2463
2463
  ui = o2(di);
2464
2464
  mi = {};
2465
- t3(mi, { BundlePackageSchema: () => bi, BundleSchema: () => vi, CodeSchema: () => Si, ConfigSchema: () => Fi, ContractActionsSchema: () => Ji, ContractEventsSchema: () => Ri, ContractRuleSchema: () => Mi, ContractSchema: () => Ti, ContractSchemaEntry: () => Ii, DestinationSchema: () => Ei, FlowSchema: () => $i, JsonSchema: () => zi, JsonSchemaSchema: () => Ci, SettingsSchema: () => gi, SourceSchema: () => Pi, StepExampleSchema: () => wi, StepExamplesSchema: () => ki, StoreSchema: () => Oi, TransformerSchema: () => Di, TriggerDescriptorSchema: () => yi, ValidateEventsSchema: () => xi, VariablesSchema: () => fi, configJsonSchema: () => Wi, contractJsonSchema: () => Ki, contractRuleJsonSchema: () => Gi, destinationJsonSchema: () => Hi, flowConfigJsonSchema: () => Ui, flowJsonSchema: () => Bi, parseConfig: () => Ai, parseFlow: () => qi, safeParseConfig: () => Li, safeParseFlow: () => Ni, sourceJsonSchema: () => _i, storeJsonSchema: () => Zi, transformerJsonSchema: () => Vi, validateEventsJsonSchema: () => Qi });
2465
+ t3(mi, { BundlePackageSchema: () => bi, BundleSchema: () => vi, CodeSchema: () => Si, ConfigSchema: () => Fi, ContractActionsSchema: () => Ji, ContractEventsSchema: () => Ri, ContractRuleSchema: () => Mi, ContractSchema: () => Ti, ContractSchemaEntry: () => Ii, DestinationSchema: () => Ei, FlowSchema: () => $i, JsonSchema: () => Ai, JsonSchemaSchema: () => Ci, SettingsSchema: () => gi, SourceSchema: () => Pi, StepExampleSchema: () => wi, StepExamplesSchema: () => ki, StoreSchema: () => Oi, TransformerSchema: () => Di, TriggerDescriptorSchema: () => yi, ValidateEventsSchema: () => xi, VariablesSchema: () => fi, configJsonSchema: () => Wi, contractJsonSchema: () => Ki, contractRuleJsonSchema: () => Gi, destinationJsonSchema: () => Hi, flowConfigJsonSchema: () => Ui, flowJsonSchema: () => Bi, parseConfig: () => zi, parseFlow: () => qi, safeParseConfig: () => Li, safeParseFlow: () => Ni, sourceJsonSchema: () => _i, storeJsonSchema: () => Zi, transformerJsonSchema: () => Vi, validateEventsJsonSchema: () => Qi });
2466
2466
  fi = n3.record(n3.string(), n3.unknown()).meta({ id: "FlowVariables", title: "Flow.Variables", description: "Reusable values referenced via $var.name (with optional deep paths). Whole-string refs preserve native type; inline interpolation requires scalars." });
2467
2467
  gi = n3.record(n3.string(), n3.unknown()).meta({ id: "FlowSettings", title: "Flow.Settings", description: "Free-form key-value settings consumed by the platform runtime." }).describe("Free-form platform settings bag");
2468
2468
  hi = /^(@[a-z0-9\-~][a-z0-9\-._~]*\/)?[a-z0-9\-~][a-z0-9\-._~]*$/;
@@ -2485,8 +2485,8 @@ var init_dev = __esm({
2485
2485
  Ti = n3.record(n3.string(), Mi).meta({ id: "FlowContract", title: "Flow.Contract", description: "Named contracts map with optional extend inheritance." }).describe("Named contracts with optional extend inheritance");
2486
2486
  Fi = n3.object({ platform: n3.enum(["web", "server"]).describe("Platform identity for this flow. Drives bundle target/format."), url: n3.string().min(1).optional().describe("Public URL where this flow is reachable (for cross-flow $flow.X.url references)."), settings: gi.optional().describe("Free-form key-value settings consumed by the platform runtime."), bundle: vi.optional().describe("Bundle configuration: NPM packages, transitive dependency overrides.") }).meta({ id: "FlowConfig", title: "Flow.Config", description: "Per-flow configuration block: platform identity, optional public URL, settings, bundle." }).describe("Per-flow configuration block");
2487
2487
  $i = n3.object({ config: Fi.optional().describe("Per-flow configuration: platform, url, settings, bundle."), sources: n3.record(n3.string(), Pi).optional().describe("Source configurations (data capture) keyed by unique identifier"), destinations: n3.record(n3.string(), Ei).optional().describe("Destination configurations (data output) keyed by unique identifier"), transformers: n3.record(n3.string(), Di).optional().describe("Transformer configurations (event transformation) keyed by unique identifier"), stores: n3.record(n3.string(), Oi).optional().describe("Store configurations (key-value storage) keyed by unique identifier"), collector: n3.unknown().meta({ id: "FlowCollector", title: "Collector.InitConfig", description: "Collector configuration for event processing (Collector.InitConfig)." }).optional().describe("Collector configuration for event processing (uses Collector.InitConfig)"), variables: fi.optional().describe("Flow-level variables (override root variables, overridden by source/destination variables)") }).meta({ id: "Flow", title: "Flow", description: "Single flow definition (one deployment target): config, sources, destinations, transformers, stores, collector." }).describe("Single flow definition for one deployment target");
2488
- zi = n3.object({ version: n3.literal(4).describe("Configuration schema version (v4, current)."), $schema: n3.string().url("Schema URL must be a valid URL").optional().describe('JSON Schema reference for IDE validation (e.g., "https://walkeros.io/schema/flow/v4.json")'), include: n3.array(n3.string()).optional().describe("Folders to include in the bundle output"), variables: fi.optional().describe("Shared variables for interpolation across all flows (use $var.name syntax, deep paths supported)"), contract: Ti.optional().describe("Named contracts with extend inheritance and dot-path references"), flows: n3.record(n3.string(), $i).refine((e4) => Object.keys(e4).length > 0, { message: "At least one flow is required" }).describe("Named flow configurations (e.g., production, staging, development)") }).meta({ id: "FlowJson", title: "Flow.Json", description: "walkerOS root configuration (walkeros.config.json) v4: version, variables, contract, named flows." }).describe("walkerOS root configuration (walkeros.config.json)");
2489
- Wi = n3.toJSONSchema(zi, { target: "draft-7" });
2488
+ Ai = n3.object({ version: n3.literal(4).describe("Configuration schema version (v4, current)."), $schema: n3.string().url("Schema URL must be a valid URL").optional().describe('JSON Schema reference for IDE validation (e.g., "https://walkeros.io/schema/flow/v4.json")'), include: n3.array(n3.string()).optional().describe("Folders to include in the bundle output"), variables: fi.optional().describe("Shared variables for interpolation across all flows (use $var.name syntax, deep paths supported)"), contract: Ti.optional().describe("Named contracts with extend inheritance and dot-path references"), flows: n3.record(n3.string(), $i).refine((e4) => Object.keys(e4).length > 0, { message: "At least one flow is required" }).describe("Named flow configurations (e.g., production, staging, development)") }).meta({ id: "FlowJson", title: "Flow.Json", description: "walkerOS root configuration (walkeros.config.json) v4: version, variables, contract, named flows." }).describe("walkerOS root configuration (walkeros.config.json)");
2489
+ Wi = n3.toJSONSchema(Ai, { target: "draft-7" });
2490
2490
  Bi = o2($i);
2491
2491
  Ui = o2(Fi);
2492
2492
  _i = o2(Pi);
@@ -2501,7 +2501,7 @@ var init_dev = __esm({
2501
2501
  tn2 = Xi.record(Xi.string(), en2).describe("Keyed hints for AI consumption \u2014 lightweight context beyond schemas and examples");
2502
2502
  nn2 = n3.object({ param: n3.string().describe("Lowercase URL parameter name. Match is case-insensitive on lookup."), platform: n3.string().describe("Canonical platform identifier (lowercase, kebab-case).") });
2503
2503
  on2 = n3.object({ client_email: n3.string().describe("Service account client email"), private_key: n3.string().describe("Service account private key (PEM)"), project_id: n3.string().optional().describe("GCP project id (derived from environment when omitted)") }).meta({ id: "ServiceAccount", title: "ServiceAccount", description: "Google-style service account credentials (client_email, private_key, optional project_id)." }).describe("Google-style service account credentials");
2504
- rn3 = n3.union([n3.string(), on2]).meta({ id: "Credentials", title: "Credentials", description: "Service account credentials: a JSON string (often $env) or a parsed service account object." }).describe("Service account credentials: a JSON string (often $env) or a parsed object");
2504
+ rn3 = n3.union([n3.string(), on2]).meta({ id: "Credentials", title: "Credentials", description: "Service account credentials: a JSON string (back it with a managed secret via $secret.NAME) or a parsed service account object." }).describe("Service account credentials: a JSON string (back it with a managed secret via $secret.NAME) or a parsed object");
2505
2505
  an2 = o2(rn3);
2506
2506
  cn2 = /* @__PURE__ */ new Set(["description", "examples", "title", "$comment"]);
2507
2507
  fn2 = /\$store\.([a-zA-Z_][a-zA-Z0-9_]*)/g;
@@ -7047,7 +7047,7 @@ async function $t(e4, t4, o4) {
7047
7047
  }
7048
7048
  }
7049
7049
  function At(e4, t4) {
7050
- return { timing: Math.round((Date.now() - e4.timing) / 10) / 100, source: { type: "collector", schema: "4", version: "4.2.1" }, ...t4 };
7050
+ return { timing: Math.round((Date.now() - e4.timing) / 10) / 100, source: { type: "collector", schema: "4", version: "4.2.2-next-1782892388850" }, ...t4 };
7051
7051
  }
7052
7052
  function Mt(e4, t4) {
7053
7053
  if (!t4.name) throw new Error("Event name is required");
@@ -12845,7 +12845,7 @@ function validateMapping(input) {
12845
12845
  // src/commands/validate/validators/entry.ts
12846
12846
  init_dist();
12847
12847
  import Ajv from "ajv";
12848
- var CLIENT_HEADER = "walkeros-cli/4.2.1";
12848
+ var CLIENT_HEADER = "walkeros-cli/4.2.2-next-1782892388850";
12849
12849
  var SECTIONS = ["destinations", "sources", "transformers"];
12850
12850
  function resolveEntry(path19, flowConfig) {
12851
12851
  const flows = flowConfig.flows;
package/dist/index.js CHANGED
@@ -7996,7 +7996,7 @@ function validateMapping(input) {
7996
7996
  // src/commands/validate/validators/entry.ts
7997
7997
  import Ajv from "ajv";
7998
7998
  import { fetchPackageSchema } from "@walkeros/core";
7999
- var CLIENT_HEADER = "walkeros-cli/4.2.1";
7999
+ var CLIENT_HEADER = "walkeros-cli/4.2.2-next-1782892388850";
8000
8000
  var SECTIONS = ["destinations", "sources", "transformers"];
8001
8001
  function resolveEntry(path20, flowConfig) {
8002
8002
  const flows = flowConfig.flows;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@walkeros/cli",
3
- "version": "4.2.1",
3
+ "version": "4.2.2-next-1782892388850",
4
4
  "description": "walkerOS CLI - Bundle and deploy walkerOS components",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -52,11 +52,11 @@
52
52
  },
53
53
  "dependencies": {
54
54
  "@vercel/nft": "^1.10.2",
55
- "@walkeros/collector": "4.2.1",
56
- "@walkeros/core": "4.2.1",
57
- "@walkeros/server-core": "4.2.1",
58
- "@walkeros/server-destination-api": "4.2.1",
59
- "@walkeros/transformer-validate": "4.2.1",
55
+ "@walkeros/collector": "4.2.2-next-1782892388850",
56
+ "@walkeros/core": "4.2.2-next-1782892388850",
57
+ "@walkeros/server-core": "4.2.2-next-1782892388850",
58
+ "@walkeros/server-destination-api": "4.2.2-next-1782892388850",
59
+ "@walkeros/transformer-validate": "4.2.2-next-1782892388850",
60
60
  "ajv": "^8.17.1",
61
61
  "chalk": "^5.6.2",
62
62
  "ci-info": "^4.4.0",
@@ -83,8 +83,8 @@
83
83
  "@types/pacote": "^11.1.8",
84
84
  "@types/picomatch": "4.0.3",
85
85
  "@types/semver": "^7.7.1",
86
- "@walkeros/config": "4.2.1",
87
- "@walkeros/core": "4.2.1",
86
+ "@walkeros/config": "4.2.2-next-1782892388850",
87
+ "@walkeros/core": "4.2.2-next-1782892388850",
88
88
  "msw": "^2.12.10",
89
89
  "openapi-typescript": "^7.13.0",
90
90
  "tsx": "^4.21.0"