@walkeros/cli 4.2.2-next-1782236179392 → 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 +9 -6
- package/dist/cli.js +27 -27
- package/dist/index.js +1 -1
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
# @walkeros/cli
|
|
2
2
|
|
|
3
|
-
## 4.2.2-next-
|
|
3
|
+
## 4.2.2-next-1782892388850
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
- @walkeros/
|
|
11
|
-
- @walkeros/
|
|
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
|
|
12
15
|
|
|
13
16
|
## 4.2.1
|
|
14
17
|
|
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
|
|
1935
|
-
return
|
|
1934
|
+
function zi(e4) {
|
|
1935
|
+
return Ai.parse(e4);
|
|
1936
1936
|
}
|
|
1937
1937
|
function Li(e4) {
|
|
1938
|
-
return
|
|
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 =
|
|
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
|
|
2251
|
+
function An(e4) {
|
|
2252
2252
|
const t4 = n3.toJSONSchema(e4, { target: "draft-7" });
|
|
2253
|
-
return
|
|
2253
|
+
return zn(t4), t4;
|
|
2254
2254
|
}
|
|
2255
|
-
function
|
|
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),
|
|
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, $,
|
|
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: () =>
|
|
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
|
-
|
|
2305
|
-
|
|
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
|
-
|
|
2362
|
-
|
|
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([
|
|
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);
|
|
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: () =>
|
|
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
|
-
|
|
2432
|
-
|
|
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);
|
|
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);
|
|
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: () =>
|
|
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
|
-
|
|
2489
|
-
Wi = n3.toJSONSchema(
|
|
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 (
|
|
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.2-next-
|
|
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.2-next-
|
|
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.2-next-
|
|
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.2-next-
|
|
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.2-next-
|
|
56
|
-
"@walkeros/core": "4.2.2-next-
|
|
57
|
-
"@walkeros/server-core": "4.2.2-next-
|
|
58
|
-
"@walkeros/server-destination-api": "4.2.2-next-
|
|
59
|
-
"@walkeros/transformer-validate": "4.2.2-next-
|
|
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.2-next-
|
|
87
|
-
"@walkeros/core": "4.2.2-next-
|
|
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"
|