@walkeros/cli 4.8.1 → 4.8.3-next-1793115089237

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +115 -3
  2. package/README.md +2 -2
  3. package/dist/cli.js +4149 -4149
  4. package/dist/dev.d.ts +51 -3
  5. package/dist/dev.js +186 -0
  6. package/dist/dev.js.map +1 -1
  7. package/dist/examples/README.md +12 -1
  8. package/dist/examples/contracts/app.json +261 -0
  9. package/dist/examples/contracts/base.json +708 -0
  10. package/dist/examples/contracts/ecommerce.json +963 -0
  11. package/dist/examples/contracts/leadgen.json +240 -0
  12. package/dist/examples/contracts/publisher.json +372 -0
  13. package/dist/examples/contracts/saas.json +229 -0
  14. package/dist/examples/contracts/travel.json +234 -0
  15. package/dist/examples/customers/README.md +4 -1
  16. package/dist/examples/event.json +1 -1
  17. package/dist/examples/flow-complete.json +107 -130
  18. package/dist/examples/flow-complete.md +12 -10
  19. package/dist/examples/flow-order-complete.json +1 -1
  20. package/dist/examples/flow.json +1 -1
  21. package/dist/examples/index.d.ts +34 -4
  22. package/dist/examples/index.js +128 -139
  23. package/dist/examples/index.js.map +1 -1
  24. package/dist/examples/shared/README.md +4 -0
  25. package/dist/index.d.ts +63 -223
  26. package/dist/index.js +572 -992
  27. package/dist/index.js.map +1 -1
  28. package/dist/validate.d.ts +1 -1
  29. package/dist/validate.js +337 -204
  30. package/dist/validate.js.map +1 -1
  31. package/examples/README.md +12 -1
  32. package/examples/contracts/app.json +261 -0
  33. package/examples/contracts/base.json +708 -0
  34. package/examples/contracts/ecommerce.json +963 -0
  35. package/examples/contracts/leadgen.json +240 -0
  36. package/examples/contracts/publisher.json +372 -0
  37. package/examples/contracts/saas.json +229 -0
  38. package/examples/contracts/travel.json +234 -0
  39. package/examples/customers/README.md +4 -1
  40. package/examples/event.json +1 -1
  41. package/examples/flow-complete.json +107 -130
  42. package/examples/flow-complete.md +12 -10
  43. package/examples/flow-order-complete.json +1 -1
  44. package/examples/flow.json +1 -1
  45. package/examples/shared/README.md +4 -0
  46. package/package.json +30 -30
  47. package/src/telemetry/flow.json +42 -34
  48. package/dist/examples/test.html +0 -43
  49. package/dist/examples/web-serve.js +0 -25503
  50. package/examples/test.html +0 -43
  51. package/examples/web-serve.js +0 -25503
@@ -256,7 +256,7 @@ curl -I http://localhost:8080/walker.js
256
256
 
257
257
  ```bash
258
258
  walkeros validate packages/cli/examples/flow-complete.json -f web --path destinations.collect
259
- walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order complete","data":{"id":"ORD-100","total":149.8,"currency":"EUR"}}' --simulate destination.ga4
259
+ walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order complete","data":{"id":"ORD-100","value":149.8,"currency":"EUR"}}' --simulate destination.ga4
260
260
  ```
261
261
 
262
262
  - The second line prints `mapping: none (skipped before mapping)`: the event has
@@ -294,8 +294,8 @@ walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order
294
294
  key reads a path from the event.
295
295
  - `value-fn` at
296
296
  `/flows/web/destinations/ga4/config/mapping/order/complete/data/map/value/fn`:
297
- fn computes a value from the event, here the total rounded to cents. fn and
298
- key are alternatives: next to a key, fn never runs.
297
+ fn computes a value from the event, here the order value rounded to cents.
298
+ fn and key are alternatives: next to a key, fn never runs.
299
299
  - `value-loop` at
300
300
  `/flows/web/destinations/ga4/config/mapping/order/complete/data/map/items/loop`:
301
301
  loop turns nested products into GA4 items.
@@ -314,7 +314,7 @@ walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order
314
314
  value is a constant.
315
315
  - `rule-condition` at
316
316
  `/flows/web/destinations/ga4/config/mapping/order/complete/condition`: A
317
- rule condition skips the rule, here for orders without a total.
317
+ rule condition skips the rule, here for orders without a value.
318
318
  - `rule-settings` at
319
319
  `/flows/server/destinations/piwikpro/config/mapping/order/complete/settings`:
320
320
  Rule settings are per-event package options: the Piwik PRO goal for orders.
@@ -332,7 +332,7 @@ walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order
332
332
  - **CLI:** the GA4 purchase, with consent and one product:
333
333
 
334
334
  ```bash
335
- walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order complete","data":{"id":"ORD-100","total":149.8,"currency":"EUR"},"nested":[{"entity":"product","data":{"id":"SKU-1","name":"Linen shirt","price":74.9,"quantity":2}}],"consent":{"functional":true}}' --simulate destination.ga4
335
+ walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order complete","data":{"id":"ORD-100","value":149.8,"currency":"EUR"},"nested":[{"entity":"product","data":{"id":"SKU-1","name":"Linen shirt","price":74.9,"quantity":2}}],"consent":{"functional":true}}' --simulate destination.ga4
336
336
  ```
337
337
 
338
338
  - Output:
@@ -349,7 +349,8 @@ walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order
349
349
  - **Features:**
350
350
  - `cmp-category-map` at
351
351
  `/flows/web/sources/usercentrics/config/settings/categoryMap`: categoryMap
352
- maps CMP categories onto exactly the consent keys the contract names.
352
+ maps CMP categories onto exactly the consent keys the contract names; folded
353
+ in, essential never grants functional alone.
353
354
  - `cmp-explicit-only` at
354
355
  `/flows/web/sources/usercentrics/config/settings/explicitOnly`: explicitOnly
355
356
  publishes consent only after a real decision, so consent.functional present
@@ -389,8 +390,9 @@ walkeros push packages/cli/examples/flow-complete.json -f web -e '{"name":"order
389
390
  - `pubsub-before` at `/flows/server/destinations/pubsub/before`: A conditional
390
391
  next on Pub/Sub runs pseudonymize only when an email exists; other events
391
392
  pass untouched.
392
- - `ga4-como` at `/flows/web/destinations/ga4/config/settings/como`: como turns
393
- walker consent into Google Consent Mode calls.
393
+ - `ga4-como` at `/flows/web/destinations/ga4/config/settings/como`: como maps
394
+ this flow's consent keys to Google Consent Mode: functional to
395
+ analytics_storage, marketing to the ad parameters.
394
396
  - **Consent keys:** there are no collector consent defaults, only granted keys
395
397
  travel. `consent.functional` is set only by Usercentrics with `explicitOnly`,
396
398
  so its presence means the user decided.
@@ -636,7 +638,7 @@ walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"pr
636
638
 
637
639
  ```bash
638
640
  walkeros validate packages/cli/examples/flow-complete.json -t contract
639
- walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"order complete","data":{"id":"ORD-100","total":149.8,"currency":"EUR"},"globals":{"language":"en"},"consent":{"functional":true}}' --simulate transformer.validate
641
+ walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"order complete","data":{"id":"ORD-100","value":149.8,"currency":"EUR"},"globals":{"language":"en"},"consent":{"functional":true}}' --simulate transformer.validate
640
642
  ```
641
643
 
642
644
  - **MCP:** `flow_validate`, `flow_simulate`.
@@ -760,7 +762,7 @@ walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"pa
760
762
  (`user.ltv: 420`, `user.segment: "loyal"`):
761
763
 
762
764
  ```bash
763
- walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"order complete","data":{"id":"ORD-100","total":149.8,"currency":"EUR"},"user":{"id":"cust-42"}}' --simulate transformer.loadUser
765
+ walkeros push packages/cli/examples/flow-complete.json -f server -e '{"name":"order complete","data":{"id":"ORD-100","value":149.8,"currency":"EUR"},"user":{"id":"cust-42"}}' --simulate transformer.loadUser
764
766
  ```
765
767
 
766
768
  - Build the web bundle straight into the shared folder (web builds ignore root
@@ -20,7 +20,7 @@
20
20
  "data": {
21
21
  "map": {
22
22
  "transaction_id": "data.id",
23
- "value": "data.total",
23
+ "value": "data.value",
24
24
  "currency": "data.currency",
25
25
  "tax": "data.tax",
26
26
  "shipping": "data.shipping",
@@ -21,7 +21,7 @@
21
21
  "data": {
22
22
  "map": {
23
23
  "transaction_id": "data.id",
24
- "value": "data.total",
24
+ "value": "data.value",
25
25
  "currency": "data.currency",
26
26
  "tax": "data.tax",
27
27
  "shipping": "data.shipping",
@@ -20,3 +20,7 @@ walkeros bundle packages/cli/examples/flow-complete.json -f web -o packages/cli/
20
20
  walkeros bundle packages/cli/examples/flow-complete.json -f server -o dist/server.mjs
21
21
  runneros start dist/server.mjs -p 8080 --env-file .env
22
22
  ```
23
+
24
+ - `runneros` refuses an `.env` that group or other can read
25
+ (`Refusing to load env file ".env": it is readable by group or other`);
26
+ restrict it with `chmod 600 .env`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@walkeros/cli",
3
- "version": "4.8.1",
3
+ "version": "4.8.3-next-1793115089237",
4
4
  "description": "walkerOS CLI - Bundle and deploy walkerOS components",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -53,11 +53,12 @@
53
53
  },
54
54
  "dependencies": {
55
55
  "@vercel/nft": "^1.10.2",
56
- "@walkeros/collector": "4.8.1",
57
- "@walkeros/core": "4.8.1",
58
- "@walkeros/server-core": "4.8.1",
59
- "@walkeros/server-destination-api": "4.8.1",
60
- "@walkeros/transformer-validate": "4.8.1",
56
+ "@walkeros/collector": "4.8.3-next-1793115089237",
57
+ "@walkeros/core": "4.8.3-next-1793115089237",
58
+ "@walkeros/server-core": "4.8.3-next-1793115089237",
59
+ "@walkeros/server-destination-api": "4.8.3-next-1793115089237",
60
+ "@walkeros/transformer-validate": "4.8.3-next-1793115089237",
61
+ "@walkeros/web-core": "4.8.3-next-1793115089237",
61
62
  "ajv": "^8.17.1",
62
63
  "chalk": "^5.6.2",
63
64
  "ci-info": "^4.4.0",
@@ -66,7 +67,6 @@
66
67
  "fs-extra": "^11.3.2",
67
68
  "jsdom": "^29.1.1",
68
69
  "npm-package-arg": "^13.0.2",
69
- "open": "^11.0.0",
70
70
  "pacote": "^21.0.4",
71
71
  "picomatch": "^4.0.4",
72
72
  "semver": "^7.7.4",
@@ -80,29 +80,29 @@
80
80
  "@types/pacote": "^11.1.8",
81
81
  "@types/picomatch": "4.0.3",
82
82
  "@types/semver": "^7.7.1",
83
- "@walkeros/config": "4.8.1",
84
- "@walkeros/core": "4.8.1",
85
- "@walkeros/destination-demo": "4.8.1",
86
- "@walkeros/server-destination-aws": "4.8.1",
87
- "@walkeros/server-destination-datamanager": "4.8.1",
88
- "@walkeros/server-destination-gcp": "4.8.1",
89
- "@walkeros/server-destination-meta": "4.8.1",
90
- "@walkeros/server-destination-piwikpro": "4.8.1",
91
- "@walkeros/server-source-aws": "4.8.1",
92
- "@walkeros/server-source-express": "4.8.1",
93
- "@walkeros/server-source-gcp": "4.8.1",
94
- "@walkeros/server-store-fs": "4.8.1",
95
- "@walkeros/server-transformer-bot": "4.8.1",
96
- "@walkeros/server-transformer-file": "4.8.1",
97
- "@walkeros/server-transformer-fingerprint": "4.8.1",
98
- "@walkeros/transformer-ga4": "4.8.1",
99
- "@walkeros/web-destination-api": "4.8.1",
100
- "@walkeros/web-destination-gtag": "4.8.1",
101
- "@walkeros/web-source-browser": "4.8.1",
102
- "@walkeros/web-source-cmp-cookiefirst": "4.8.1",
103
- "@walkeros/web-source-cmp-usercentrics": "4.8.1",
104
- "@walkeros/web-source-datalayer": "4.8.1",
105
- "@walkeros/web-source-session": "4.8.1",
83
+ "@walkeros/config": "4.8.3-next-1793115089237",
84
+ "@walkeros/core": "4.8.3-next-1793115089237",
85
+ "@walkeros/destination-demo": "4.8.3-next-1793115089237",
86
+ "@walkeros/server-destination-aws": "4.8.3-next-1793115089237",
87
+ "@walkeros/server-destination-datamanager": "4.8.3-next-1793115089237",
88
+ "@walkeros/server-destination-gcp": "4.8.3-next-1793115089237",
89
+ "@walkeros/server-destination-meta": "4.8.3-next-1793115089237",
90
+ "@walkeros/server-destination-piwikpro": "4.8.3-next-1793115089237",
91
+ "@walkeros/server-source-aws": "4.8.3-next-1793115089237",
92
+ "@walkeros/server-source-express": "4.8.3-next-1793115089237",
93
+ "@walkeros/server-source-gcp": "4.8.3-next-1793115089237",
94
+ "@walkeros/server-store-fs": "4.8.3-next-1793115089237",
95
+ "@walkeros/server-transformer-bot": "4.8.3-next-1793115089237",
96
+ "@walkeros/server-transformer-file": "4.8.3-next-1793115089237",
97
+ "@walkeros/server-transformer-fingerprint": "4.8.3-next-1793115089237",
98
+ "@walkeros/transformer-ga4": "4.8.3-next-1793115089237",
99
+ "@walkeros/web-destination-api": "4.8.3-next-1793115089237",
100
+ "@walkeros/web-destination-gtag": "4.8.3-next-1793115089237",
101
+ "@walkeros/web-source-browser": "4.8.3-next-1793115089237",
102
+ "@walkeros/web-source-cmp-cookiefirst": "4.8.3-next-1793115089237",
103
+ "@walkeros/web-source-cmp-usercentrics": "4.8.3-next-1793115089237",
104
+ "@walkeros/web-source-datalayer": "4.8.3-next-1793115089237",
105
+ "@walkeros/web-source-session": "4.8.3-next-1793115089237",
106
106
  "msw": "^2.12.10",
107
107
  "tsx": "^4.21.0"
108
108
  },
@@ -3,43 +3,49 @@
3
3
  "contract": {
4
4
  "telemetry": {
5
5
  "description": "walkerOS internal usage telemetry from @walkeros/cli and @walkeros/mcp. Anonymous, opt-out, no PII.",
6
- "user": {
6
+ "schema": {
7
7
  "type": "object",
8
8
  "properties": {
9
- "device": {
10
- "type": "string",
11
- "description": "Installation UUID generated once per machine and persisted in ~/.config/walkeros/config.json. Not linked to any account."
12
- },
13
- "session": {
14
- "type": "string",
15
- "description": "Ephemeral per-process UUID. Only present on MCP events; CLI omits because its session is a single event."
16
- },
17
- "os": {
18
- "type": "string"
19
- },
20
- "osVersion": {
21
- "type": "string"
22
- },
23
- "node": {
24
- "type": "string"
25
- },
26
- "language": {
27
- "type": "string"
9
+ "user": {
10
+ "type": "object",
11
+ "properties": {
12
+ "device": {
13
+ "type": "string",
14
+ "description": "Installation UUID generated once per machine and persisted in ~/.config/walkeros/config.json. Not linked to any account."
15
+ },
16
+ "session": {
17
+ "type": "string",
18
+ "description": "Ephemeral per-process UUID. Only present on MCP events; CLI omits because its session is a single event."
19
+ },
20
+ "os": {
21
+ "type": "string"
22
+ },
23
+ "osVersion": {
24
+ "type": "string"
25
+ },
26
+ "node": {
27
+ "type": "string"
28
+ },
29
+ "language": {
30
+ "type": "string"
31
+ },
32
+ "timezone": {
33
+ "type": "string"
34
+ }
35
+ }
28
36
  },
29
- "timezone": {
30
- "type": "string"
31
- }
32
- }
33
- },
34
- "consent": {
35
- "type": "object",
36
- "properties": {
37
- "telemetry": {
38
- "type": "boolean",
39
- "const": true
37
+ "consent": {
38
+ "type": "object",
39
+ "properties": {
40
+ "telemetry": {
41
+ "type": "boolean",
42
+ "const": true
43
+ }
44
+ },
45
+ "required": ["telemetry"]
40
46
  }
41
47
  },
42
- "required": ["telemetry"]
48
+ "required": ["consent"]
43
49
  },
44
50
  "events": {
45
51
  "mcp": {
@@ -66,7 +72,7 @@
66
72
  "properties": {
67
73
  "command": {
68
74
  "type": "string",
69
- "description": "CLI command, space-joined for subcommands (e.g. 'bundle', 'projects list', 'auth login'). Set on source.command when source.type = 'cli'."
75
+ "description": "CLI command, space-joined for subcommands (e.g. 'bundle', 'projects list', 'api'). Set on source.command when source.type = 'cli'."
70
76
  },
71
77
  "tool": {
72
78
  "type": "string",
@@ -101,7 +107,9 @@
101
107
  "api": {
102
108
  "package": "@walkeros/server-destination-api",
103
109
  "config": {
104
- "url": "$env.WALKEROS_APP_URL/api/telemetry"
110
+ "settings": {
111
+ "url": "$env.WALKEROS_APP_URL/api/telemetry"
112
+ }
105
113
  }
106
114
  }
107
115
  }
@@ -1,43 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>walkerOS Web Bundle Test</title>
7
- </head>
8
- <body>
9
- <h1>walkerOS Web Bundle Test</h1>
10
- <div id="status">Loading...</div>
11
-
12
- <!-- Load the bundle -->
13
- <script src="web-serve.js"></script>
14
-
15
- <!-- Test that collector and elb are available -->
16
- <script>
17
- setTimeout(() => {
18
- const statusEl = document.getElementById('status');
19
-
20
- if (typeof window.collector !== 'undefined' && typeof window.elb !== 'undefined') {
21
- statusEl.innerHTML = `
22
- <div style="color: green; font-weight: bold;">✅ SUCCESS!</div>
23
- <ul>
24
- <li>window.collector: ${typeof window.collector}</li>
25
- <li>window.elb: ${typeof window.elb}</li>
26
- </ul>
27
- <p>Check console for details</p>
28
- `;
29
-
30
- console.log('✅ Bundle loaded successfully!');
31
- console.log('window.collector:', window.collector);
32
- console.log('window.elb:', window.elb);
33
- } else {
34
- statusEl.innerHTML = `
35
- <div style="color: red; font-weight: bold;">❌ FAILED</div>
36
- <p>collector or elb not found on window</p>
37
- `;
38
- console.error('Bundle did not assign to window correctly');
39
- }
40
- }, 100);
41
- </script>
42
- </body>
43
- </html>