gamealgo-cli 0.3.8 → 0.4.1
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/README.md +18 -1
- package/dist/client.js +23 -2
- package/dist/commands/diagnosis.js +17 -0
- package/dist/commands/experiment.js +1 -1
- package/dist/commands/integration.js +1 -1
- package/dist/commands/keys.js +7 -3
- package/dist/commands/report.js +191 -54
- package/dist/compatibility.js +1 -1
- package/dist/docs.js +6 -6
- package/dist/main.js +5 -0
- package/dist/report-summary.js +14 -2
- package/dist/report-v2/expression.js +130 -0
- package/dist/report-v2/result.js +209 -0
- package/dist/report-v2/schema.js +18 -0
- package/dist/report-v2/summary.js +110 -0
- package/dist/report-v2/view-executor.js +198 -0
- package/dist/utils.js +4 -4
- package/package.json +1 -1
- package/skills/gamealgo/SKILL.md +20 -9
package/package.json
CHANGED
package/skills/gamealgo/SKILL.md
CHANGED
|
@@ -20,10 +20,11 @@ Run commands from the game repository that owns the integration. Before any game
|
|
|
20
20
|
When the user asks what GameAlgo can do, asks for ongoing iteration, or names a broad optimization goal:
|
|
21
21
|
|
|
22
22
|
1. Run `gamealgo optimize list --json` to load the complete current task catalog from the Server.
|
|
23
|
-
2.
|
|
24
|
-
3.
|
|
25
|
-
4.
|
|
26
|
-
5.
|
|
23
|
+
2. When making a recommendation for the current game, run `gamealgo diagnosis --json` as well. It returns the same structured competition, monetization, and retention diagnosis used by the dashboard. If it is unavailable, treat the diagnosis as an unmet prerequisite rather than fabricating a conclusion; it is available only to account-verified Maker games.
|
|
24
|
+
3. Treat the result as an unranked capability catalog. Do not claim that a task is recommended or ready until its prerequisites have been checked against the current game.
|
|
25
|
+
4. Once the user selects a task, or their request clearly identifies one, run `gamealgo optimize get <task-id> --json`.
|
|
26
|
+
5. For each topic named in the task's `docs` field, run `gamealgo docs <topic> --list --json`, then read the sections relevant to the selected task with `gamealgo docs <topic> --section <section-id>` before implementation.
|
|
27
|
+
6. Follow the returned `agentSteps` and use `deliverables` as the completion checklist.
|
|
27
28
|
|
|
28
29
|
Do not run every catalog task in sequence. Complete the selected task and report unmet prerequisites instead of manufacturing missing data.
|
|
29
30
|
|
|
@@ -33,7 +34,7 @@ Classify the requested work by the actions it requires, not only by the user's t
|
|
|
33
34
|
|
|
34
35
|
Use each topic's section list as the router. Read the whole topic only when the task genuinely spans most of it; when that is necessary, load one full topic per tool call. If any tool marks documentation output as truncated, treat it as incomplete, retrieve the missing sections, and do not infer that unseen guidance is absent or switch workflows based on the partial output.
|
|
35
36
|
|
|
36
|
-
- SDK installation, identity, lifecycle, telemetry, attribution, advertising, or purchase work: run `gamealgo integration get-plan --environment <domestic|overseas> --platform <ios|android|maker|
|
|
37
|
+
- SDK installation, identity, lifecycle, telemetry, attribution, advertising, or purchase work: run `gamealgo integration get-plan --environment <domestic|overseas> --platform <ios|android|maker|web> --json`, then list the `sdk-integration` sections and read the relevant shared and platform-specific sections.
|
|
37
38
|
- Calling or changing a concrete public SDK function: additionally run `gamealgo docs api <function> --platform <platform>` for each affected function. Never infer one platform's API from another.
|
|
38
39
|
- Adding or changing events: additionally run `gamealgo events list --days 30 --json` before defining fields or names.
|
|
39
40
|
- Querying an existing dashboard or report: read `gamealgo docs reports --section report-query` plus the section that defines the relevant metric or template. Creating, changing, previewing, or publishing Report Packs, charts, report SQL, or business metrics: list the `reports` sections and read every section affected by the change before interpreting data or editing definitions.
|
|
@@ -46,7 +47,17 @@ For `report validate`, `report manifest`, `report preview`, and JSON `report res
|
|
|
46
47
|
|
|
47
48
|
When changing an existing Report Pack, run `gamealgo report pull --out <working-pack.json>` before editing and use that current published Pack as the baseline. Do not start from a remembered or stale local copy. Run `gamealgo events diff --pack <working-pack.json>` after defining the Pack events; if it reports missing fields, type conflicts, or blocked/deprecated events, inspect the actual game call sites and prepare real business descriptions rather than inventing catalog text from field names. The diff is read-only and does not authorize `events apply` or event activation.
|
|
48
49
|
|
|
49
|
-
Validate with the compact default output, then preview
|
|
50
|
+
Validate with the compact default output, then use `report preview` to inspect v2 validation and generated Dataset SQL without running a warehouse query. After publishing, verify only the affected tab, group, or View with `report result`; do not query unrelated tabs. A report result request must explicitly select a tab, group, or chart/View. A globally unique bare id is accepted; if the Server returns an ambiguity error, use its candidate ids and the local Pack structure to retry without asking the developer to choose an internal id. Before applying event metadata or publishing the Pack, show the exact changes and impact unless the developer already authorized them. After publishing, pull the effective Pack again and verify the expected manifest and materialized result state.
|
|
51
|
+
|
|
52
|
+
### Use Report Pack v2 For New Work
|
|
53
|
+
|
|
54
|
+
New, validated, previewed, or published Report Packs must declare `schemaVersion: 2`. Unversioned v1 Packs may still be pulled and queried during migration, but they are read-only; do not edit them in place, pass them to a write command, or add v2 branches to their Report/Chart model. v2 uses independent `datasets`, inline `groups[].views`, `tabs`, and optional `advancedQueries`; it has no top-level `reports` or `charts`, no `groups[].standard`, and no author-managed Pack version.
|
|
55
|
+
|
|
56
|
+
An ordinary v2 Dataset must read only `adn.dwd_gamealgo_events_enriched_di`, include `dt` in its output grain, and be independently computable for each natural day. Before selector filtering, each `datasetFingerprint × platform × dt` must remain at or below 100 rows and 128 KiB. Estimate the output cardinality from every `groupBy` dimension before publishing. If it may exceed either limit, reduce or bucket dimensions, split the business question, or move it into `advancedQueries`; a table View, front-end selector, or `dataset.limit` does not bypass the ordinary limit.
|
|
57
|
+
|
|
58
|
+
Keep ratio and average components as additive Dataset columns and calculate the final value in the View after range aggregation. For example, materialize `wins` and `attempts`, then define `win_rate = wins / attempts` in `groups[].views[].data.metrics`. Each View references exactly one Dataset. A selector switch is a local View recalculation and must not be modeled as a new warehouse request.
|
|
59
|
+
|
|
60
|
+
Use `gamealgo report result` to read an existing ordinary v2 materialization for an explicit date range and scope. It never starts a DW query. Use `gamealgo report advanced run --query-id <id> --platform <platform> --from <date> --to <date>` only when an explicit high-dimensional or non-preloaded query is required. `--pack <file>` supplies an immutable v2 Pack snapshot for that Run without publishing it. `advanced get` and `advanced list` only read the saved Run/history. Advanced results are whole-run bounded to 20,000 rows and 20 MiB and retained for 30 days; never replace this path with local production scans or a hidden query side channel.
|
|
50
61
|
|
|
51
62
|
For initial integration or business dashboard work, standard dashboards are only the baseline. During the initial integration, inspect the actual game loop and define a separate game-specific new-user flow dashboard with meaningful milestones and drop-off diagnostics. Add required milestone telemetry and event catalog fields in the same integration instead of waiting for production volume. Validate the pipeline with test data; label business conclusions as awaiting data when production samples are immature, but do not omit the dashboard design.
|
|
52
63
|
|
|
@@ -78,7 +89,7 @@ Reading documentation does not grant permission to mutate production. CLI and Se
|
|
|
78
89
|
For SDK integration or telemetry changes, determine the actual deployment environment and runtime platform, then run:
|
|
79
90
|
|
|
80
91
|
```bash
|
|
81
|
-
gamealgo integration get-plan --environment <domestic|overseas> --platform <ios|android|maker|
|
|
92
|
+
gamealgo integration get-plan --environment <domestic|overseas> --platform <ios|android|maker|web> --json
|
|
82
93
|
```
|
|
83
94
|
|
|
84
95
|
Inspect the existing project before editing. Reuse existing SDK wrappers, user identity, lifecycle, event, advertising, purchase, and attribution flows.
|
|
@@ -165,11 +176,11 @@ Before delivery, inspect changed client code for Variant or assignment-identity
|
|
|
165
176
|
|
|
166
177
|
## Preserve Experiment Platform Scope
|
|
167
178
|
|
|
168
|
-
A Strategy key is shared by the game and keeps a global fallback default, while every Run belongs to exactly one runtime platform: `ios`, `android`, or `
|
|
179
|
+
A Strategy key is shared by the game and keeps a global fallback default, while every Run belongs to exactly one runtime platform: `ios`, `android`, `maker`, or `web`. A promoted Run updates only its own platform default. Other platform defaults remain unchanged, and a platform without an explicit default continues to use the global fallback.
|
|
169
180
|
|
|
170
181
|
- When a Run includes `variantId: default`, the Server snapshots the effective default for that Run's platform, falling back to the global Strategy default only when that platform has no promoted default.
|
|
171
182
|
- `experiment run promote` needs no platform flag because the Run records its platform.
|
|
172
|
-
- When rolling a platform back to a global historical version, pass `experiment strategy rollback ... --platform <ios|android|
|
|
183
|
+
- When rolling a platform back to a global historical version, pass `experiment strategy rollback ... --platform <ios|android|maker|web>` so the global version is copied into that platform default rather than replacing the global fallback.
|
|
173
184
|
- Treat `experiment strategy publish` and `experiment strategy default` as global-fallback operations; they do not overwrite existing promoted platform defaults.
|
|
174
185
|
|
|
175
186
|
## Require Explicit Approval Before Publishing Experiments
|