@thinkingai/ae-cli 6.0.53 → 6.0.54
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 +28 -9
- package/README.zh.md +25 -9
- package/bin/ae-cli.js +6 -1
- package/cli-installation-guide.md +91 -0
- package/dist/{auth-LHM7NQPR.js → auth-MBWRZTB6.js} +9 -11
- package/dist/automation-NWWVLWG2.js +459 -0
- package/dist/{capability-F2RIR5DS.js → capability-7SSN6PNZ.js} +6 -6
- package/dist/chunk-4655PUNX.js +43 -0
- package/dist/{chunk-KS4DE3MX.js → chunk-5XJYLEVC.js} +4 -4
- package/dist/{chunk-N4BLPJC7.js → chunk-7QXISROD.js} +1 -1
- package/dist/{chunk-7WZACOAI.js → chunk-AP7YP2NX.js} +2 -2
- package/dist/{chunk-SO5LKIWP.js → chunk-CT7QDJS6.js} +2 -2
- package/dist/chunk-D6ACFILC.js +56 -0
- package/dist/{chunk-QYXDJOLA.js → chunk-EOYSKMXN.js} +19 -11
- package/dist/{chunk-5XRQ3CZR.js → chunk-FMNNGNYO.js} +43 -8
- package/dist/{chunk-DU72X2IO.js → chunk-GIK6EDUG.js} +22 -10
- package/dist/{chunk-PGCIKZRE.js → chunk-HBLK3ZHW.js} +3 -3
- package/dist/chunk-HVHR4SCP.js +133 -0
- package/dist/{chunk-BW7JUDEI.js → chunk-KFNMQTZI.js} +514 -213
- package/dist/{chunk-KJDOTPYU.js → chunk-PLE722AJ.js} +28 -11
- package/dist/chunk-RK6GLDGI.js +27 -0
- package/dist/{chunk-GK7WDY7E.js → chunk-S6M42KND.js} +1 -1
- package/dist/{chunk-IG3DYEIR.js → chunk-UQ77JXYH.js} +4 -3
- package/dist/{chunk-YVGXGTD6.js → chunk-WNGFSIOB.js} +7 -1
- package/dist/{chunk-647BRKZK.js → chunk-ZIQWCZTS.js} +3 -3
- package/dist/{community-report-client-6VJDDMJJ.js → community-report-client-PEERQCX2.js} +1 -1
- package/dist/{config-XQWOPDHN.js → config-FF6YVJKI.js} +8 -8
- package/dist/context-YAE3QXP3.js +136 -0
- package/dist/{data-integration-XBTCGXQT.js → data-integration-HESZET7E.js} +6 -6
- package/dist/index.js +125 -48
- package/dist/{local-data-upload-client-3P7NIVQ4.js → local-data-upload-client-TWMHFLUA.js} +1 -1
- package/dist/memory-62BJOULV.js +580 -0
- package/dist/{metadata-V5ZDTKWZ.js → metadata-7CUMWIB4.js} +7 -7
- package/dist/{model-ZS7HVGKN.js → model-SBV2JFJI.js} +9 -5
- package/dist/{personal-semantic-preference-2XANU3F6.js → personal-semantic-preference-6SRCYPGE.js} +117 -11
- package/dist/{project-semantic-LP3LY7QP.js → project-semantic-YYEM4OSU.js} +6 -6
- package/dist/{sync-EQLSTUS7.js → sync-SU33KYX7.js} +12 -8
- package/dist/{te-agent-Z3HCTKR7.js → te-agent-F5QBZSQA.js} +90 -454
- package/dist/{te-analysis-3EVYQ3IO.js → te-analysis-U4I2W2WC.js} +297 -20
- package/dist/{te-community-Z7JACGF3.js → te-community-PFLDLPP4.js} +3 -3
- package/dist/{te-dataops-F7GQOIS6.js → te-dataops-FOQSRIAZ.js} +5 -5
- package/dist/{te-engage-LFBU6WWH.js → te-engage-ZX76CNAB.js} +6 -6
- package/dist/{te-kb-QJLJEX5K.js → te-kb-MHDOST62.js} +494 -214
- package/dist/{te-system-IXC43QHZ.js → te-system-J2FQF5ER.js} +6 -6
- package/dist/{te-team-BIZIKIHZ.js → te-team-5UOZPTU3.js} +6 -6
- package/dist/things-VPPXXLHB.js +1091 -0
- package/dist/{update-W2SGQNKT.js → update-EEUTEI6R.js} +59 -51
- package/dist/workspace-O3EEIYQM.js +554 -0
- package/package.json +21 -9
- package/skills/ae-agent/SKILL.md +89 -139
- package/skills/ae-agent/references/add-model.md +1 -1
- package/skills/ae-agent/references/create-agent.md +1 -1
- package/skills/ae-agent/references/find-archived-conversations.md +12 -5
- package/skills/ae-agent/references/get-agent.md +1 -1
- package/skills/ae-agent/references/list-agents.md +2 -2
- package/skills/ae-agent/references/list-models.md +2 -2
- package/skills/ae-agent/references/restore-conversation.md +3 -1
- package/skills/ae-analysis/SKILL.md +15 -6
- package/skills/ae-analysis/references/ai_models/funnel.md +5 -3
- package/skills/ae-analysis/references/ai_models.md +27 -0
- package/skills/ae-analysis/references/command_index.md +12 -4
- package/skills/ae-analysis/references/dashboard_move.md +21 -0
- package/skills/ae-analysis/references/dashboard_report_add.md +2 -0
- package/skills/ae-analysis/references/dashboard_report_get.md +19 -0
- package/skills/ae-analysis/references/dashboard_report_update.md +27 -0
- package/skills/ae-analysis/references/dashboard_update.md +1 -1
- package/skills/ae-analysis/references/event_report_presentation.md +76 -0
- package/skills/ae-analysis/references/feedback_submit.md +37 -0
- package/skills/ae-analysis/references/metadata_resolution.md +15 -0
- package/skills/ae-analysis/references/personal_semantic_preference_review.md +9 -0
- package/skills/ae-analysis/references/personal_semantic_preference_review_list.md +7 -0
- package/skills/ae-analysis/references/personal_semantic_preference_submit.md +7 -0
- package/skills/ae-analysis/references/project_semantic_knowledge_wiki.md +90 -31
- package/skills/ae-analysis/references/project_semantic_knowledge_wiki_plan_schema.md +99 -1
- package/skills/ae-analysis/references/report_create.md +13 -3
- package/skills/ae-analysis/references/report_get.md +5 -1
- package/skills/ae-analysis/references/report_update.md +15 -4
- package/skills/ae-analysis/references/system_query_monitor_overview.md +2 -0
- package/skills/ae-analysis/references/system_query_task_cancel.md +2 -0
- package/skills/ae-analysis/references/system_query_task_export.md +6 -2
- package/skills/ae-analysis/references/system_query_task_get.md +2 -0
- package/skills/ae-analysis/references/system_query_task_list.md +7 -3
- package/skills/ae-analysis/references/system_query_task_options.md +2 -2
- package/skills/ae-analysis/references/system_query_task_realtime_list.md +15 -0
- package/skills/ae-analysis/references/user_tag_models.md +2 -0
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/build-empty-skeleton.mjs +105 -0
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/build-project-semantic-wiki.mjs +669 -29
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/company-kb.mjs +21 -8
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/default-compile-rules.md +28 -10
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/default-compile-schema.md +66 -0
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/generate-build-ir.mjs +285 -24
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/package-wiki-source-zip.mjs +262 -30
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/plan-kb-source-sync.mjs +1 -1
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/precompiled-source.mjs +46 -2
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/prepare-compile-schema.mjs +64 -0
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/refresh-state-parts.mjs +91 -0
- package/skills/ae-automation/SKILL.md +16 -0
- package/skills/ae-automation/references/cli.md +53 -0
- package/skills/ae-automation/references/command_index.md +17 -0
- package/skills/ae-capability/SKILL.md +15 -6
- package/skills/ae-current-context/SKILL.md +3 -2
- package/skills/ae-kb/SKILL.md +62 -12
- package/skills/ae-kb/references/analysis-workflow.md +73 -36
- package/skills/ae-kb/references/query-workflow.md +67 -33
- package/skills/ae-kb/references/schema-import.md +5 -3
- package/skills/ae-kb/references/source-mutations.md +6 -4
- package/skills/ae-kb/references/text-sources.md +53 -0
- package/skills/ae-kb-discovery/SKILL.md +1 -1
- package/skills/ae-team/SKILL.md +23 -17
- package/skills/ae-things/SKILL.md +85 -0
- package/skills/ae-things/references/cli.md +103 -0
- package/skills/ae-things-progress/SKILL.md +43 -0
- package/skills/ae-things-review/SKILL.md +42 -0
- package/skills/ae-workspace/SKILL.md +43 -0
- package/skills/ae-workspace/references/commands.md +51 -0
- package/dist/chunk-E2JKXMVO.js +0 -29
- package/dist/context-M3HDGEIR.js +0 -46
- package/dist/memory-6APEB2JB.js +0 -892
- package/skills/ae-agent/references/create-automation.md +0 -125
- package/skills/ae-agent/references/list-automations.md +0 -56
- package/skills/ae-agent/references/update-automation.md +0 -107
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ae-analysis
|
|
3
|
-
version: 4.2.
|
|
3
|
+
version: 4.2.31
|
|
4
4
|
description: "Use ae-cli for AE analysis-side data questions, asset operations, and asset governance: reports, analysis boards, BI dashboards, ad-hoc models, drilldown, detail data, alerts, clusters, tags, metrics, metadata discovery, project configuration, tracking plans, local input-file upload, governance asset lists/rules/lineage/impact/dependency, batch asset operations, projects, and resource links. Use when the user asks to query data, explain a change, export evidence, inspect/create/update/govern analysis assets, recommend project assets for certification/authentication, review asset-certification recommendations, review metric recommendations, or build/update/refresh/sync a project semantic knowledge base from a governed asset package."
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -24,7 +24,11 @@ When remaining work is outside this skill's scope, or a necessary prerequisite n
|
|
|
24
24
|
|
|
25
25
|
Hard rule: before running gateway-backed `ae-cli` commands in this skill, maintain the current Agent context in `.ae/cli-agent-context.json` at the working directory root, unless the user explicitly asks not to send intent telemetry. Keep the business command clean; do not append `--agent-context <base64url-json>` by default. Runtime auto-detection alone is only a partial fallback and is not enough for user-intent telemetry.
|
|
26
26
|
|
|
27
|
-
The context file must use `intent_source: "agent_context_file"` and should include a concise task-level `user_intent`, the current `session_goal`, stable `agent_session_id`, current `agent_turn_id` when available, `intent_relation`, and `intent_revision`. Use the user's original language for `session_initial_intent`, `user_intent`, and `session_goal`; for example, use Chinese text for a Chinese user request.
|
|
27
|
+
The context file must use `intent_source: "agent_context_file"` and should include a concise task-level `user_intent`, the current `session_goal`, stable `agent_session_id`, current `agent_turn_id` when available, `intent_relation`, and `intent_revision`. Include `agent_model` whenever the current model can be confirmed. Use the user's original language for `session_initial_intent`, `user_intent`, and `session_goal`; for example, use Chinese text for a Chinese user request. Omit unknown parent-turn fields rather than guessing; do not omit the whole context payload. Prefer concise intent summaries over long raw transcripts. Update the file when starting a CLI-backed task or when the user's CLI purpose changes. Reuse it while the purpose and model remain unchanged.
|
|
28
|
+
|
|
29
|
+
The Agent must actively obtain the current model identifier and write it explicitly as `agent_model` in the context file. Use trusted runtime context or bounded metadata for the exact current session and turn; for example, Codex's current-session `turn_context.model`. Do not rely solely on a model environment variable being present. Never infer the model from the Agent/product name, a configured default, or another session. This requirement applies to every Agent client. Update the file when the model changes, even if the CLI purpose stays the same.
|
|
30
|
+
|
|
31
|
+
If the model cannot be confirmed, omit `agent_model`, set `context_capture_status: "partial"`, and continue; do not block or delay the business command or ask the user to identify the model just for telemetry. Once confirmed, write the model and remove the stale partial marker so the CLI can compute capture status from the remaining fields.
|
|
28
32
|
|
|
29
33
|
## Analysis workflow
|
|
30
34
|
|
|
@@ -35,18 +39,21 @@ For data queries:
|
|
|
35
39
|
3. Correct compiler errors at their reported paths. New evidence or a user correction changes a completed choice; preserve the other verified inputs.
|
|
36
40
|
4. Use the returned result directly. Save original JSON only when the user requests a file or necessary local processing requires one; follow [result handling](references/analysis_data_retrieval.md#preserve-and-interpret-results). Keep stderr and the CLI exit status visible.
|
|
37
41
|
5. Compute only missing values needed by the request, together in one local call. Reuse completed results and answer when the requested data is available, or explain the specific error or missing input.
|
|
42
|
+
6. Only after a completed analysis data query and the final business analysis answer, ask once in the user's language whether the analysis met expectations: satisfied, partially satisfied, dissatisfied, or unable to judge. Do not ask after individual CLI calls, intermediate steps, discovery, metadata inspection, asset governance/writes, configuration, help, unrelated questions, query submission, running exports or failed queries. No explicit feedback means no submission or new feedback event. On a clear evaluation of the completed analysis, use [analysis query feedback](references/feedback_submit.md); preserve the evaluated session and turn IDs, the user's original feedback and a short verifiable route summary. Do not upload the analysis answer or infer a rating from silence, a follow-up question or a new requirement. Feedback collection must not block subsequent business work.
|
|
38
43
|
|
|
39
44
|
## Route before reading
|
|
40
45
|
|
|
41
46
|
1. Map the request to a command family before opening any reference.
|
|
42
47
|
- CLI Agent asset-authentication and metric-recommendation review: this includes requests to recommend project assets for certification/authentication, review asset-certification candidates, review project asset-governance recommendations, review recommended metrics, or explicitly auto-review/auto-certify recommended assets. Open `references/governance_recommendation_export.md` and route to `analysis-meta governance-recommendation export|submit|auto-review|decisions`. For review-page submission, open `references/agent_review_submit_to_page.md` and use `analysis-meta agent-review submit-to-page|list|detail|records|review|retry`. Do not load project semantics, project KB, or personal semantic preferences as a preflight.
|
|
43
|
-
- Project semantic knowledge-base build/update/refresh/sync: open `references/project_semantic_knowledge_wiki.md` and route to `project-semantic asset-package export`, local semantic planning, and local Wiki rendering. Default to CLI semantic precompilation into Markdown sources, source ZIP upload, and KB
|
|
48
|
+
- Project semantic knowledge-base build/update/refresh/sync: open `references/project_semantic_knowledge_wiki.md` and route to `project-semantic asset-package export`, local semantic planning, and local Wiki rendering. Default to CLI semantic precompilation into Markdown sources, source ZIP upload, formal preset initialization/reuse, and KB compilation. Do not regenerate Schema or AI-validate unchanged presets during normal refresh. Update changed source files and use incremental compilation on ordinary refresh; a navigation taxonomy version change requires the full migration rebuild reported by the source-tree packager. Never substitute read-only snapshot import. Stop on company permission denial. This is a command-reference workflow inside `ae-analysis`, not a standalone project semantic Skill.
|
|
44
49
|
- Known family: open only its dedicated reference. For example, a retention request goes directly to `references/adhoc_run.md`, the common `references/ai_models.md`, and `references/ai_models/retention.md`.
|
|
45
50
|
- Unknown family: search [`references/command_index.md`](references/command_index.md) with `rg` or an equivalent text-search tool and keep only the matching rows. `command_index.md` is a search-only fallback; never open it with a whole-file read or print the entire file.
|
|
46
51
|
2. Read the selected command's dedicated reference before composing it:
|
|
47
52
|
- `event list` -> `references/event_list.md`
|
|
48
53
|
- Readable saved report/dashboard discovery -> `analysis asset search` and `references/asset_search.md`; this includes shared read-only assets.
|
|
49
54
|
- `analysis dashboard list` -> `references/dashboard_list.md`
|
|
55
|
+
- Saved event-report chart/result-table layout -> `references/report_get.md` and the matching `report_create.md` or `report_update.md`. A table card on a specific analysis board -> `dashboard-report get/update` and `references/dashboard_report_get.md` / `references/dashboard_report_update.md`; the card display is separate from its source report definition.
|
|
56
|
+
- Event combination chart or per-metric bar/line and primary/secondary axes -> also read `references/event_report_presentation.md`. Series is source-report scoped and can affect its other trend cards; card display updates cannot create a local series override.
|
|
50
57
|
- `personal-semantic-preference list` -> `references/personal_semantic_preference_list.md`
|
|
51
58
|
- Asset center cross-source configuration (资产中心 / 跨源资产配置 / Excel 配置表导入): L3 discovery via `capability search "cross_source_config" --domain metadata --project-id <id>`; read [`references/cross_source_config.md`](references/cross_source_config.md) for workbook upload and validation. No dedicated business commands.
|
|
52
59
|
- replace hyphens with underscores in gateway filenames.
|
|
@@ -82,6 +89,8 @@ For tags and audience clusters, use the native `analysis user-tag ...` and `anal
|
|
|
82
89
|
|
|
83
90
|
For CLI Agent asset-authentication and metric-recommendation review, route to `analysis-meta governance-recommendation export|submit|auto-review|decisions`. Common returns the deterministic evidence packet; the Agent owns the fixed human approval display from `references/governance_recommendation_export.md`, including business-domain grouping, plain-text status labels, and risk/conflict explanation. Call `auto-review` only when the user explicitly asks for automatic review or automatic certification; a plain recommendation request and a recommendation-plus-page-submission request must not check the automatic certification project config or auto-certify assets. When `auto-review` is called without an explicit `--limit`, the CLI validates the auto-certification and project-semantic switches, read-only probes top-20/top-50/top-100 pending recommendation material as needed, then the CLI Agent builds one set of automatic certification decisions from the final material and submits those decisions for execution/audit. The CLI Agent, not Common historical recommendation state, owns semantic-duplicate detection; duplicate skips must name concrete conflicting asset targets. The auto-review result also returns `manual_review_handoff` for assets still uncertified after automatic review; if the user later asks to submit those leftovers to the page, build `agent-review submit-to-page` from `manual_review_handoff.page_review_items` so dashboard/report parent context is preserved, treat only `manual_review_handoff.items` as the human certification workload, and include each automatic non-certification reason in the item summary. Do not use project-semantic, project-KB, or personal-semantic-preference commands as prerequisite context for this workflow. Do not use management commands such as `asset-authentication list|export|update` or metric CRUD commands to synthesize recommendations. Do not bypass curated commands with `ae-cli capability inspect|validate|dry-run|run` for `governance.asset_authentication.dashboard_package`, `metadata.metric.recommended_scan`, or `metadata.metric.recommended_create`.
|
|
84
91
|
|
|
92
|
+
Start a recommendation with `governance-recommendation export` before lengthy Agent analysis so Common can atomically mark the project as running. Later exports in the same Agent turn may expand the candidate pool. If Common returns `RECOMMENDATION_RUNNING`, stop this attempt and report that a recommendation is already in progress; do not retry with another Agent context or bypass the marker. Successful page submission and automatic review release the marker; recommendation-only or failed Agent runs rely on the fixed expiry. No separate start or finish CLI command is required.
|
|
93
|
+
|
|
85
94
|
After presenting recommendations, the Agent may ask whether to submit them to the review page. A user choice to submit authorizes `analysis-meta agent-review submit-to-page` only; it does not authorize approval, certification, config checking, or `governance-recommendation auto-review`. If the user declines, do not write or repeatedly suggest submission. Existing explicit submission authorization remains valid and does not need another prompt. A preauthorized unattended task may submit review proposals only; it must never call `agent-review review|retry`, legacy `governance-recommendation submit`, `governance-recommendation auto-review`, or direct certification/metric mutations automatically. Use `agent-review list|detail|records` and the task's persisted proposal fingerprint to reuse prior batches. Do not resubmit or send repeated notifications for unchanged proposals, pending reviews, completed items, or previously declined suggestions. A new run ID alone is not new evidence. Report the returned `review_url` once and remain quiet until there is a meaningful change or required user action. See `references/agent_review_submit_to_page.md` for stable request keys and packet rules.
|
|
86
95
|
|
|
87
96
|
Report review details must explain calculation logic and statistical measures, not only business purpose. Follow resolve/export -> material-package completeness check -> gap-only `analysis-meta agent-review evidence` or `analysis report get` -> chunked AI explanation -> independent preflight -> authorized submit-to-page -> detail readback. LOCAL_ONLY stops at the local preflight result. `governance-recommendation export` is expected to include report `evidence_snapshot.analysis` and `target_revision` in `review_material_package.candidate_assets`; do not ask the customer to run `analysis report get` for every report when those fields are present. Fetch `agent-review evidence` only when a report item lacks current analysis, when validating a generated draft, or when the material package explicitly marks a definition gap. Read `references/agent_review_evidence.md` for stable analysis fields and their limits. Populate `item.ai_summary.analysis_explanation` with evidence-backed measures, dimensions, calculations, filters, time_scope, and query_columns as applicable; interpret each supported SQL projection column separately. Reference only actual fact-supporting response paths rooted at `evidence_snapshot.analysis`; `source_path` is provenance, not an automatic evidence_refs substitution. Preserve server facts separately from AI interpretation and explicitly identify null, missing, dynamic or unparsed evidence. For DYNAMIC SQL, label supported sql.raw/normalized_definition.params discussion as original-text interpretation, never fabricate select_columns or runtime substitutions. Common create stores the submitted packet; it does not fill missing calculation explanations for the Agent. Before calling `submit-to-page`, check required `evidence_snapshot.analysis` and resolvable references in `analysis_explanation.calculations` / `analysis_explanation.measures`; missing required structure remains an error. Reviewer-readability and interpretation defects follow the bounded quality correction/warning procedure. Verify the stored snapshot and references in detail after submission. Never guess SQL, aliases, columns, formulas, time ranges, timezones, or successful execution. Definition inspection, evidence reads, validation, and submission are not proof of query results, approval, or certification.
|
|
@@ -179,7 +188,7 @@ Do not call project-semantic catalog, entry, candidate, release, or publish comm
|
|
|
179
188
|
|
|
180
189
|
For a project-scoped request that may need an asset or metric definition, decide the route before any analysis asset, report, or metric lookup. Follow an explicitly named knowledge base directly; skip this gate if the user rules out knowledge bases. Otherwise call `ae-cli config show` once per host and authenticated account in this conversation, and recheck when that scope changes or the answer is over 24 hours old. The command uses the CLI's daily company configuration cache; do not force a remote refresh for each question.
|
|
181
190
|
|
|
182
|
-
If `data.routing.knowledge_base` is `auto`, consider whether a project knowledge base could answer the question or provide the needed asset definition. If it could, use `ae-kb-discovery` first, prefer an exact project binding, and read matching pages through `ae-kb`. For data questions,
|
|
191
|
+
If `data.routing.knowledge_base` is `auto`, consider whether a project knowledge base could answer the question or provide the needed asset definition. If it could, use `ae-kb-discovery` first, prefer an exact project binding, and read matching pages through `ae-kb`. For data questions, verify the selected asset's semantic coverage and run the applicable analysis command. If pages provide only related definitions, limitations, or partial coverage, retain that evidence and continue normal asset or metric discovery for the missing requirements through the KB analysis workflow. If no relevant knowledge-base page is found, continue with normal discovery. If the routing value is `explicit` or `data.source` is `unavailable`, use the normal analysis route without implicit KB discovery. A KB candidate without a relevant page hit does not justify using its assets.
|
|
183
192
|
|
|
184
193
|
### Personal Semantic Preferences
|
|
185
194
|
|
|
@@ -209,11 +218,11 @@ Stale or expired preferences are automatically hidden by list filtering and back
|
|
|
209
218
|
|
|
210
219
|
### Metadata discovery
|
|
211
220
|
|
|
212
|
-
Reuse known definitions and canonical metadata directly. For an unknown business measure, follow [`references/metadata_resolution.md`](references/metadata_resolution.md): search relevant saved metrics/reports, read their definitions, and discover only missing events or properties. `allowed_resource_types` is authoritative for a compiler error. Confirm a selected business mapping once, even when there is only one suitable candidate; reuse the task's already confirmed mappings.
|
|
221
|
+
Reuse known definitions and canonical metadata directly. For an unknown business measure, follow [`references/metadata_resolution.md`](references/metadata_resolution.md): search relevant saved metrics/reports, read their definitions, and discover only missing events or properties. `allowed_resource_types` is authoritative for a compiler error. Verifying fields, types, and filters for an already explicit or confirmed meaning is evidence completion, not a new business choice. Confirm a selected business mapping once, even when there is only one suitable candidate; reuse the task's already confirmed mappings.
|
|
213
222
|
|
|
214
223
|
### Saved business asset or ad-hoc
|
|
215
224
|
|
|
216
|
-
If an exact asset or definition came from a knowledge-base page, first read and follow [`../ae-kb/references/analysis-workflow.md`](../ae-kb/references/analysis-workflow.md).
|
|
225
|
+
If an exact asset or definition came from a knowledge-base page, first read and follow [`../ae-kb/references/analysis-workflow.md`](../ae-kb/references/analysis-workflow.md). Inspect the live definition and attempt an exact, semantically applicable saved asset first. When inspection establishes a mismatch, missing fields, or partial coverage, continue ordinary discovery for the original request without a forced data query. Preserve useful KB evidence, resolve only missing metadata, and follow the workflow's authorized fallback and disclosure rules. A KB limitation is not itself task completion.
|
|
217
226
|
|
|
218
227
|
Use a suitable saved report with supported requested overrides. For a custom combination, reuse the applicable definitions in an ad-hoc model. Read [`references/analysis_gateway_assets.md`](references/analysis_gateway_assets.md) for saved filters, dashboard context and asset selection. Load model references when constructing an ad-hoc definition.
|
|
219
228
|
|
|
@@ -24,6 +24,8 @@ Use for ordered conversion steps with a conversion window.
|
|
|
24
24
|
|
|
25
25
|
If the user asks to match users across events by a shared event property, set `funnel.relation_event_property_name`. For different property names in different events, set `funnel.steps[].relation_event_property_name`; each override takes precedence over the common property. Every step must have a relation property when any step uses one, and their property types must match.
|
|
26
26
|
|
|
27
|
+
For saved reports, optional `funnel.steps[].display_name` sets the label shown for that funnel step. `analysis report get` returns the saved value, and report create/update writes it back, so preserve every step's `display_name` when replacing a definition. Omission uses the event's resolved display name.
|
|
28
|
+
|
|
27
29
|
`funnel.start_step` and `funnel.end_step` preserve the selected conversion interval. They are one-based and must satisfy `1 <= start_step < end_step <= steps.length`; omission selects the whole funnel. A dimension's `funnel_step` selects the step providing its grouping value. Saved reports with an older global grouping step are read back with that step on each affected dimension.
|
|
28
30
|
|
|
29
31
|
Queries and exports show the selected steps and calculate cumulative conversion from the selected starting population. For step populations `[4, 3, 2]`, selecting steps 2–3 returns `3 → 2` and `66.67%`; omitting the selection returns all three populations with cumulative rates `75%` and `50%`. Selecting a display interval does not remove the earlier events from the funnel's qualification rules.
|
|
@@ -36,9 +38,9 @@ Step-level event-property filters belong inside the matching `funnel.steps[].fil
|
|
|
36
38
|
"time_particle_size": "day",
|
|
37
39
|
"funnel": {
|
|
38
40
|
"steps": [
|
|
39
|
-
{"event": "register"},
|
|
40
|
-
{"event": "login"},
|
|
41
|
-
{"event": "payment", "filters": [
|
|
41
|
+
{"event": "register", "display_name": "Completed registration"},
|
|
42
|
+
{"event": "login", "display_name": "Completed login"},
|
|
43
|
+
{"event": "payment", "display_name": "First payment", "filters": [
|
|
42
44
|
{"event_property_name": "is_first_pay", "operator": "eq", "values": ["true"]}
|
|
43
45
|
]}
|
|
44
46
|
],
|
|
@@ -108,6 +108,33 @@ Filter:
|
|
|
108
108
|
- Omit `values` for `exists` and `not_exists`.
|
|
109
109
|
- Use exactly two values for `between`.
|
|
110
110
|
|
|
111
|
+
List filters:
|
|
112
|
+
|
|
113
|
+
For a verified list property or list-valued tag, use `array_contains` to match any element exactly, or `array_not_contains` when no element may equal any supplied value. `contains` and `not_contains` remain text substring operators; they are not aliases for list membership.
|
|
114
|
+
|
|
115
|
+
`array_element_match` tests one element: `element_position` is a non-zero signed integer (`1` is the first element, `-1` the last; `0` is rejected), and `element_operator` is one of `eq`, `neq`, `contains`, `not_contains`, `regex`, `not_regex`, `exists`, or `not_exists`. Supply ordinary string-array `values`, except omit `values` for inner `exists` or `not_exists`.
|
|
116
|
+
|
|
117
|
+
Each object below is a standalone leaf for a supported `filters` array:
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
[
|
|
121
|
+
{"field":{"name":"<verified_list_tag>","type":"tag"},"operator":"array_contains","values":["share"]},
|
|
122
|
+
{"field":{"name":"<verified_list_tag>","type":"tag"},"operator":"array_not_contains","values":["task"]},
|
|
123
|
+
{"field":{"name":"<verified_list_tag>","type":"tag"},"operator":"array_element_match","element_position":-1,"element_operator":"contains","values":["task"]},
|
|
124
|
+
{"field":{"name":"<verified_list_tag>","type":"tag"},"operator":"array_element_match","element_position":1,"element_operator":"exists"},
|
|
125
|
+
{"field":{"name":"<verified_list_tag>","type":"tag"},"operator":"exists"},
|
|
126
|
+
{"field":{"name":"<verified_list_tag>","type":"tag"},"operator":"not_exists"}
|
|
127
|
+
]
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Top-level `exists` and `not_exists` keep their names and omit `values`; the server uses the resolved property metadata to distinguish list presence from scalar presence. Event-only filter contexts use the same list options with their existing `event_property_name` key instead of `field`:
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{"event_property_name":"<verified_list_event_property>","operator":"array_element_match","element_position":1,"element_operator":"eq","values":["share"]}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
New list operators require a backend whose capability schema supports them. If an older deployment rejects them, report that version gap; preserve the requested list semantics rather than substituting text `contains`.
|
|
137
|
+
|
|
111
138
|
Relative date/time filters use `operator: "relative_current_time"` or `"relative_event_time"` with `time_relative`:
|
|
112
139
|
|
|
113
140
|
- `relative_current_time`: `before`, `between`, `that_day`, `that_week`, or `that_month`. Offsets are in days relative to the effective current date.
|
|
@@ -49,6 +49,7 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
|
|
|
49
49
|
| `ae-cli analysis dashboard get` | analysis.dashboard.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--use-cache` (boolean; optional) — Whether to use cached dashboard detail. Default: true. | [dashboard_get.md](dashboard_get.md) |
|
|
50
50
|
| `ae-cli analysis dashboard handover` | analysis.dashboard.handover | write | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-ids` (json; required) — Dashboard ID array.<br>`--to-user-id` (number; required) — Target user ID. | [dashboard_handover.md](dashboard_handover.md) |
|
|
51
51
|
| `ae-cli analysis dashboard list` | analysis.dashboard.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<br>`--fields` (json; optional) — Optional projection field array. Supported fields: dashboard_id, dashboard_name, remark.<br>`--limit` (number; optional, min=1, max=200) — Directory page size. Default: 50, max: 200. Values outside 1..200 are rejected.<br>`--offset` (number; optional, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--certification-scope` (string; optional, default="project") — Asset certification filter scope: project follows the project switch, certified returns only certified assets, all returns every asset. | [dashboard_list.md](dashboard_list.md) |
|
|
52
|
+
| `ae-cli analysis dashboard move` | analysis.dashboard.move | write | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-ids` (json; required) — Dashboard ID array. Pass a one-item array to move a single dashboard.<br>`--to-space-id` (number; required) — Target project space ID.<br>`--to-folder-id` (number; optional) — Target folder ID within the target project space. Omit to move to the space root. | [dashboard_move.md](dashboard_move.md) |
|
|
52
53
|
| `ae-cli analysis dashboard share` | analysis.dashboard.share | write | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--member-authorities` (json; optional) — Complete user authority map: {"<numeric_user_id>":"READ\|EDIT\|CREATOR\|MAINTAIN"}. An empty object removes all directly shared users.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_share.md](dashboard_share.md) |
|
|
53
54
|
| `ae-cli analysis dashboard share-info` | analysis.dashboard.share_info | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID. | [dashboard_share_info.md](dashboard_share_info.md) |
|
|
54
55
|
| `ae-cli analysis dashboard task-status` | analysis.dashboard.task_status | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID. | [dashboard_task_status.md](dashboard_task_status.md) |
|
|
@@ -60,6 +61,8 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
|
|
|
60
61
|
| `ae-cli analysis dashboard-definition export` | analysis.dashboard_definition.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; optional) — Single dashboard ID to export. The gateway resolves folder or project-space context.<br>`--dashboard-ids` (json; optional) — Dashboard ID array to export. The gateway resolves folder or project-space context.<br>`--dashboard-folder-ids` (json; optional) — Private folder ID array, or advanced descriptor array: [{"dashboard_folder_id":1,"dashboard_ids":[2]}].<br>`--shared-spaces` (json; optional) — Shared space export descriptor array.<br>`--export-file-name` (string; optional) — Optional export file name.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_definition_export.md](dashboard_definition_export.md) |
|
|
61
62
|
| `ae-cli analysis dashboard-definition import` | analysis.dashboard_definition.import | write | `--project-id` (number; required) — Numeric project ID.<br>`--definition` (json; required) — Dashboard definition JSON object.<br>`--validate-only` (boolean; optional) — Only validate import conflicts and importable state.<br>`--dashboard-name-conflict-policy` (string; optional) — Optional dashboard name conflict policy.<br>`--space-dashboard-policy` (string; optional) — Optional space/dashboard import policy.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_definition_import.md](dashboard_definition_import.md) |
|
|
62
63
|
| `ae-cli analysis dashboard-report add` | analysis.dashboard_report.add | write | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--report-ids` (json; required) — Report ID array to add. | [dashboard_report_add.md](dashboard_report_add.md) |
|
|
64
|
+
| `ae-cli analysis dashboard-report get` | analysis.dashboard_report.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard containing the report card.<br>`--report-id` (number; required) — Existing event report ID on that dashboard. | [dashboard_report_get.md](dashboard_report_get.md) |
|
|
65
|
+
| `ae-cli analysis dashboard-report update` | analysis.dashboard_report.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard containing the report card.<br>`--report-id` (number; required) — Existing event report ID on that dashboard.<br>`--chart-type` (string; optional) — Card chart type: line, combo, bar, stacked, cumulative, pie, or table. Combo inherits existing source-report series; this command cannot edit series. A pure line card requires resetting source combo first. Gateway validates compatibility with the saved event definition.<br>`--table-layout` (string; optional) — Table layout: date, event, or group. Omit to preserve it.<br>`--date-outside` (boolean; optional) — Show dates outside the table. True requires a grouped table with a non-date layout; also choose event/group layout when inherited. Pass false to clear, omit to preserve. | [dashboard_report_update.md](dashboard_report_update.md) |
|
|
63
66
|
| `ae-cli analysis dashboard-report-data export` | analysis.dashboard_report_data.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--report-ids` (json; optional) — Optional report ID array. Omit to query all dashboard reports.<br>`--filters` (json; optional) — Optional AI-facing filter {relation,items:[{field:{name,type?},operator,values?}]}. SQL reports ignore it and the artifact includes warnings; raw taFilters/junctionKind/filts are rejected.<br>`--start-time` (string; optional) — Optional start date/time. SQL reports ignore it and the artifact includes warnings.<br>`--end-time` (string; optional) — Optional end date/time. SQL reports ignore it and the artifact includes warnings.<br>`--cluster-query-scope` (string; optional) — Optional physical query routing: GLOBAL aggregates accessible query clusters; SLAVE targets one --slave-cluster-id. Omit for the surface default.<br>`--slave-cluster-id` (string; optional) — Physical slave query-cluster ID from analysis query-cluster list. Required only with --cluster-query-scope SLAVE.<br>`--zone-offset` (number; optional) — Query execution timezone. Omit it to match the report UI for the current user (user selection when available, otherwise project default). Use a fixed UTC offset from -12 through 14, or 99 for local-time mode with no conversion to one fixed UTC offset; 99 is not UTC+99. This is not persisted in the report definition.<br>`--request-id` (string; optional) — Optional cli_<32 lowercase hex> request ID. Generated when omitted.<br>`--timeout-seconds` (number; optional, min=1, max=21600) — Async runtime in seconds. Default and max: 21600 (6 hours); cancel earlier with analysis query cancel --run-id <run_id>.<br>`--artifact-format` (string; optional) — Artifact format. Only jsonl is supported.<br>`--wait` (boolean; optional) — Wait for the remote run and artifact to reach a terminal state. Polling uses short inspect requests; interrupting does not cancel the remote run.<br>`--wait-timeout-seconds` (number; optional, min=1, max=21600) — Maximum time this CLI process waits. Default: 600 seconds; expiry never cancels the remote run.<br>`--output` (string; optional) — Wait, then stream the completed artifact to this local file. Implies --wait.<br>`--force` (boolean; optional) — Allow --output to atomically replace an existing file. Without this flag, existing paths are refused. | [dashboard_report_data_export.md](dashboard_report_data_export.md) |
|
|
64
67
|
| `ae-cli analysis dashboard-report-data run` | analysis.dashboard_report_data.run | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--report-ids` (json; optional) — Optional report ID array. Omit to query all dashboard reports.<br>`--filters` (json; optional) — Optional AI-facing filter {relation,items:[{field:{name,type?},operator,values?}]}. SQL reports ignore it and produce data.warnings; raw taFilters/junctionKind/filts are rejected.<br>`--start-time` (string; optional) — Optional start date/time. SQL reports ignore it and produce data.warnings.<br>`--end-time` (string; optional) — Optional end date/time. SQL reports ignore it and produce data.warnings.<br>`--cluster-query-scope` (string; optional) — Optional physical query routing: GLOBAL aggregates accessible query clusters; SLAVE targets one --slave-cluster-id. Omit for the surface default.<br>`--slave-cluster-id` (string; optional) — Physical slave query-cluster ID from analysis query-cluster list. Required only with --cluster-query-scope SLAVE.<br>`--zone-offset` (number; optional) — Query execution timezone. Omit it to match the report UI for the current user (user selection when available, otherwise project default). Use a fixed UTC offset from -12 through 14, or 99 for local-time mode with no conversion to one fixed UTC offset; 99 is not UTC+99. This is not persisted in the report definition.<br>`--use-cache` (boolean; optional) — Whether to use cache. Default: true.<br>`--request-id` (string; optional) — Optional cli_<32 lowercase hex> request ID. Generated when omitted.<br>`--preview-rows` (number; optional, min=1) — Maximum synchronous preview units returned per result. Units are business rows for tabular results. For path results, this limits real nodes per path level before overflow nodes are combined into more. Omit to use the current model/cluster synchronous limit. The runtime maximum varies by model; agents should normally pass 100.<br>`--timeout-seconds` (number; optional, min=1, max=180) — Sync timeout seconds. Default: 180, max: 180. | [dashboard_report_data_run.md](dashboard_report_data_run.md) |
|
|
65
68
|
| `ae-cli analysis drilldown-entities export` | analysis.query.drilldown_entities_export | read | `--project-id` (number; required) — Numeric project ID.<br>`--query-context-id` (string; required) — query_context_id returned by a synchronous analysis preview. Analysis exports never create one.<br>`--source` (json; optional) — Source selector copied from the compact sources[] summary when the synchronous preview contains multiple reports or charts. Pass exactly one returned field: report_id or chart_id.<br>`--coordinate` (json; required) — One semantic cell coordinate assembled only from row_options, column_options, and metric_options returned by analysis query-context get. Never pass target_id, raw QP, or inferred values.<br>`--properties` (json; optional) — Optional property projection object array using exact columnName and named tableType values (event or user). Subject-specific support and mandatory identity columns are documented by each command; do not pass string-name arrays.<br>`--request-id` (string; optional) — Optional caller-supplied cli_<32 lowercase hex> lifecycle ID. ae-cli generates and prints one before dispatch when omitted.<br>`--use-cache` (boolean; optional) — Whether to use query cache. Default: true.<br>`--artifact-format` (string; optional) — Artifact format. Only csv is supported; the downloaded artifact is csv.gz.<br>`--timeout-seconds` (number; optional, min=1, max=21600) — Async runtime in seconds. Default and max: 21600 (6 hours); cancel earlier with analysis query cancel --run-id <run_id>.<br>`--wait` (boolean; optional) — Wait for the remote run and artifact to reach a terminal state. Polling uses short inspect requests; interrupting does not cancel the remote run.<br>`--wait-timeout-seconds` (number; optional, min=1, max=21600) — Maximum time this CLI process waits. Default: 600 seconds; expiry never cancels the remote run.<br>`--output` (string; optional) — Wait, then stream the completed artifact to this local file. Implies --wait.<br>`--force` (boolean; optional) — Allow --output to atomically replace an existing file. Without this flag, existing paths are refused. | [drilldown_entities_export.md](drilldown_entities_export.md) |
|
|
@@ -75,6 +78,7 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
|
|
|
75
78
|
| `ae-cli analysis event-detail run` | analysis.event_detail.run | read | `--project-id` (number; required) — Numeric project ID.<br>`--definition` (json; required) — AI-facing event detail definition: {"event":"login","time_range":{"mode":"absolute","start_time":"2026-07-01 00:00:00","end_time":"2026-07-01 23:59:59"},"filters":{"relation":"and","items":[{"field":{"name":"country","type":"user_property"},"operator":"eq","values":["US"]}]},"properties":["#event_time",{"name":"country","type":"user_property"}],"sort":[{"field":"#event_time","order":"desc"}]}. Do not pass raw QP/eventView/taFilters.<br>`--intent-snapshot` (json; optional) — Optional user-confirmed intent snapshot: {"schema_version":1,"requirement":"...","definition":{...}}. ae-cli rejects drift between this snapshot and the final definition before validate, dry-run, or execute. The snapshot is not sent to the Gateway.<br>`--request-id` (string; optional) — Optional caller-supplied cli_<32 lowercase hex> lifecycle ID. ae-cli generates and prints one before dispatch when omitted.<br>`--use-cache` (boolean; optional) — Whether to use query cache. Default: true.<br>`--zone-offset` (number; optional) — Optional timezone mode. Fixed UTC offsets are -12..14; 99 means stored local time without fixed UTC conversion (not UTC+99). Omit to use the project analysis default.<br>`--preview-rows` (number; optional, min=1) — Maximum business rows returned per result. Omit to use the current model/cluster synchronous limit. The runtime maximum varies by model; agents should normally pass 100.<br>`--timeout-seconds` (number; optional, min=1, max=180) — Sync timeout seconds. Default: 120, max: 180. | [event_detail_run.md](event_detail_run.md) |
|
|
76
79
|
| `ae-cli analysis favorite add` | analysis.favorite.add | write | `--project-id` (number; required) — Numeric project ID.<br>`--asset-id` (number; required) — Dashboard, BI panel, or folder ID.<br>`--asset-type` (string; required) — Asset type: dashboard, bi_panel, or folder.<br>`--space-id` (number; optional) — Project space ID when relevant. | [favorite_add.md](favorite_add.md) |
|
|
77
80
|
| `ae-cli analysis favorite remove` | analysis.favorite.remove | write | `--project-id` (number; required) — Numeric project ID.<br>`--asset-id` (number; required) — Dashboard, BI panel, or folder ID.<br>`--asset-type` (string; required) — Asset type: dashboard, bi_panel, or folder.<br>`--space-id` (number; optional) — Project space ID when relevant. | [favorite_remove.md](favorite_remove.md) |
|
|
81
|
+
| `ae-cli analysis feedback submit` | analysis.feedback.submit | write | `--query-completed` (boolean; optional) — Confirm that query results and the final analysis answer have been delivered.<br>`--query-capability-id` (string; required) — Executed analysis data-query capability ID in the evaluated turns.<br>`--satisfaction` (string; required) — Explicit rating: satisfied, partially_satisfied, dissatisfied, or unable_to_judge.<br>`--feedback-text` (string; required) — Original user feedback, up to 2048 characters. No answer content.<br>`--target-turn-ids` (json; optional) — JSON array of evaluated analysis turn IDs; omit only when unknown.<br>`--route-summary` (string; optional) — Optional brief verifiable route and asset-selection rationale. No answer content.<br>`--feedback-id` (string; optional) — Stable feedback ID for retries; defaults to current session/feedback-turn fingerprint when available.<br>`--project-id` (number; optional) — Evaluated analysis project ID when available. | [feedback_submit.md](feedback_submit.md) |
|
|
78
82
|
| `ae-cli analysis filter-value list` | analysis.filter_value.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--property-name` (string; required) — Exact property identifier. Resolve the property first; this command discovers values, not fields.<br>`--table-type` (string; required) — Property table: event or user.<br>`--event-name` (string; optional) — Optional exact event name for an event-property lookup.<br>`--search-prefix` (string; optional) — Optional prefix or fuzzy input to narrow candidate values.<br>`--zone-offset` (number; optional) — Optional fixed timezone offset from -12 through 14.<br>`--cluster-date-policy` (string; optional) — Optional user tag/cluster data-snapshot policy: LATEST means the latest available computed result snapshot, not a tag definition or configuration release; AUTO and SPECIFIED select other snapshot modes.<br>`--specified-cluster-date` (string; optional) — Required only with --cluster-date-policy SPECIFIED to select a historical computed result snapshot; yyyy-MM-dd.<br>`--report-mode` (boolean; optional) — Use report-compatible property semantics. Default: false. | [filter_value_list.md](filter_value_list.md) |
|
|
79
83
|
| `ae-cli analysis history-tag batch-refresh` | analysis.history_tag.batch_refresh | write | `--project-id` (number; required) — Numeric project ID.<br>`--tag-name` (string; required) — Exact tag_name. Discover real values with analysis user-tag list first.<br>`--refresh-request` (json; required) — Snake_case object: {start_time,end_time,only_abnormal?,use_user_table_type?}. Dates use yyyy-MM-dd; see history_tag_batch_refresh.md. | [history_tag_batch_refresh.md](history_tag_batch_refresh.md) |
|
|
80
84
|
| `ae-cli analysis history-tag clear` | analysis.history_tag.clear | high-risk-write | `--project-id` (number; required) — Numeric project ID.<br>`--tag-name` (string; required) — Exact tag_name. Discover real values with analysis user-tag list first.<br>`--start-time` (string; required) — Start date, yyyy-MM-dd.<br>`--end-time` (string; required) — End date, yyyy-MM-dd.<br>`--confirmed` (boolean; optional) — Set true only after dependency and influence checks have been accepted. | [history_tag_clear.md](history_tag_clear.md) |
|
|
@@ -99,12 +103,12 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
|
|
|
99
103
|
| `ae-cli analysis query create-result-cluster` | analysis.query.create_result_cluster | write | `--project-id` (number; required) — Numeric project ID.<br>`--query-context-id` (string; required) — query_context_id returned by a synchronous analysis preview. Never use an export response.<br>`--source` (json; optional) — Source selector copied from the compact sources[] summary when the synchronous preview contains multiple reports or charts. Pass exactly one returned field: report_id or chart_id.<br>`--coordinate` (json; required) — One semantic cell coordinate assembled only from row_options, column_options, and metric_options returned by analysis query-context get. Never pass target_id, raw QP, or inferred values.<br>`--cluster-name` (string; required, minLength=1, maxLength=24, pattern=^[a-z][a-z0-9_]*$) — Unique result cluster name. Must start with a lowercase letter, contain only lowercase letters, digits, and underscores, and be at most 24 characters.<br>`--display-name` (string; optional, minLength=1, maxLength=80) — Optional result cluster display name. Maximum: 80 characters.<br>`--zone-offset` (number; optional) — Optional timezone offset. UTC+8 is 8; UTC-5 is -5.<br>`--request-id` (string; optional) — Optional caller-supplied cli_<32 lowercase hex> lifecycle ID. ae-cli generates and prints one before dispatch when omitted.<br>`--timeout-seconds` (number; optional) — Optional capability execution timeout in seconds. | [query_create_result_cluster.md](query_create_result_cluster.md) |
|
|
100
104
|
| `ae-cli analysis query-cluster list` | analysis.query_cluster.list | read | `--project-id` (number; required) — Numeric project ID. | [query_cluster_list.md](query_cluster_list.md) |
|
|
101
105
|
| `ae-cli analysis query-context get` | analysis.query.context_get | read | `--project-id` (number; required) — Numeric project ID.<br>`--query-context-id` (string; required) — query_context_id returned by a synchronous analysis preview.<br>`--source` (json; optional) — Source selector copied from the compact sources[] summary. Required for multi-source contexts; pass exactly one field: report_id or chart_id. | [query_context_get.md](query_context_get.md) |
|
|
102
|
-
| `ae-cli analysis report create` | analysis.report.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--report-name` (string; required) — Report display name.<br>`--model-type` (string; required) — Supported AI-facing model_type values, 12 total. 9 common models: event (event analysis), retention (retention analysis), funnel (funnel conversion), distribution (distribution analysis), attribution (attribution analysis), interval (interval analysis), path (path analysis), prop_analysis (property analysis), sql (SQL analysis). 3 scenario models: heat_map (heat map analysis), rank_list (ranking analysis), revenue (revenue analysis). Tags and cohorts/clusters are separate capabilities and are not ad-hoc model_type values. Report create/update also supports tag for saved tag report data; use tag as the AI-facing spelling.<br>`--definition` (json; required) — Event metrics: omit optional display_name unless the target command schema explicitly supports it. Funnel step filters use event_property_name (not field) and string-array values, including "true"/"false" for boolean properties. For tag/cluster filters, cluster_date_policy accepts LATEST (default), AUTO (match the computed result for each analysis date), or SPECIFIED (requires specified_cluster_date in yyyy-MM-dd format). AI-facing model definition JSON. Do not pass raw QP, events, event_view, visual_view, or analysis_query. Distribution filters must be attached to the corresponding distribution_metrics[].filters; do not use top-level filters or relation. For path definitions, global filters support user_property, cluster, and tag only; event_property is not supported. session_unit accepts second (1..999), minute (1..999), or hour (1..24). Do not use day; express one day as session_interval=24 and session_unit=hour. For SQL, a simple query is {"sql":"select ..."}; raw variables use ${name}, while typed params use ${Text:name}, ${Selector:name}, or ${PartDate:name}. PartDate expands to a complete predicate, so write WHERE ${PartDate:d}, not a column followed by the placeholder. A part_date parameter may set boolean use_timezone; it defaults to false and controls whether that parameter uses the query effective timezone. Selector value must match one options[].value. Trino identifiers containing #, $, @, spaces, punctuation, or a reserved word must be delimited with double quotes, for example SELECT "#user_id", "$part_event", "end" FROM ...; single quotes are string literals. For multiline SQL JSON, the decoded sql value must contain a real line break; do not submit a literal \n sequence outside quoted SQL text. Queries against an event table must include a date-partition predicate on the quoted "$part_date" column, for example WHERE "$part_date" BETWEEN '2026-07-01' AND '2026-07-07'; the backend rejects event-table SQL without it. The CLI preserves SQL text and never auto-quotes identifiers. Saved-report filters may contain one compound group level only; every item inside that group must be a leaf without another items array. Historical deeper trees remain readable but cannot be written back as a definition. For model_type=tag, pass a tag report intent such as {"tag":{"tag_name":"vip_users","time_range":{"mode":"recent","unit":"day","value":7}}}. Tags are supported for report create/update and report data, not ad-hoc analysis.<br>`--intent-snapshot` (json; optional) — Optional user-confirmed intent snapshot: {"schema_version":1,"requirement":"...","model_type":"event","definition":{...}}. ae-cli rejects drift between this snapshot and the final model-type/definition before validate, dry-run, or execute. The snapshot is not sent to the Gateway.<br>`--resolutions` (json; optional) — Optional user-confirmed metadata bindings keyed by compiler error path. Each value requires raw_value, resource_type, and resource_key. Keep each bound field's path and raw_value; fill the confirmed aggregation and other model parameters in the definition. This option is not supported with --model-type tag.<br>`--report-desc` (string; optional) — Optional report description.<br>`--cache-seconds` (number; optional) — Optional cache duration in seconds.<br>`--query-duration-ms` (number; optional) — Optional last query duration in milliseconds.<br>`--dashboard-ids` (json; optional) — Optional dashboard ID array to associate after creation. | [report_create.md](report_create.md) |
|
|
106
|
+
| `ae-cli analysis report create` | analysis.report.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--report-name` (string; required) — Report display name.<br>`--model-type` (string; required) — Supported AI-facing model_type values, 12 total. 9 common models: event (event analysis), retention (retention analysis), funnel (funnel conversion), distribution (distribution analysis), attribution (attribution analysis), interval (interval analysis), path (path analysis), prop_analysis (property analysis), sql (SQL analysis). 3 scenario models: heat_map (heat map analysis), rank_list (ranking analysis), revenue (revenue analysis). Tags and cohorts/clusters are separate capabilities and are not ad-hoc model_type values. Report create/update also supports tag for saved tag report data; use tag as the AI-facing spelling.<br>`--definition` (json; required) — Event metrics: omit optional display_name unless the target command schema explicitly supports it. Funnel step filters use event_property_name (not field) and string-array values, including "true"/"false" for boolean properties. For tag/cluster filters, cluster_date_policy accepts LATEST (default), AUTO (match the computed result for each analysis date), or SPECIFIED (requires specified_cluster_date in yyyy-MM-dd format). AI-facing model definition JSON. Do not pass raw QP, events, event_view, visual_view, or analysis_query. Distribution filters must be attached to the corresponding distribution_metrics[].filters; do not use top-level filters or relation. For path definitions, global filters support user_property, cluster, and tag only; event_property is not supported. session_unit accepts second (1..999), minute (1..999), or hour (1..24). Do not use day; express one day as session_interval=24 and session_unit=hour. For SQL, a simple query is {"sql":"select ..."}; raw variables use ${name}, while typed params use ${Text:name}, ${Selector:name}, or ${PartDate:name}. PartDate expands to a complete predicate, so write WHERE ${PartDate:d}, not a column followed by the placeholder. A part_date parameter may set boolean use_timezone; it defaults to false and controls whether that parameter uses the query effective timezone. Selector value must match one options[].value. Trino identifiers containing #, $, @, spaces, punctuation, or a reserved word must be delimited with double quotes, for example SELECT "#user_id", "$part_event", "end" FROM ...; single quotes are string literals. For multiline SQL JSON, the decoded sql value must contain a real line break; do not submit a literal \n sequence outside quoted SQL text. Queries against an event table must include a date-partition predicate on the quoted "$part_date" column, for example WHERE "$part_date" BETWEEN '2026-07-01' AND '2026-07-07'; the backend rejects event-table SQL without it. The CLI preserves SQL text and never auto-quotes identifiers. Saved funnel definitions may set optional funnel.steps[].display_name; report get returns it and report create/update preserves it. Saved-report filters may contain one compound group level only; every item inside that group must be a leaf without another items array. Historical deeper trees remain readable but cannot be written back as a definition. For model_type=tag, pass a tag report intent such as {"tag":{"tag_name":"vip_users","time_range":{"mode":"recent","unit":"day","value":7}}}. Tags are supported for report create/update and report data, not ad-hoc analysis.<br>`--presentation` (json; optional) — Optional top-level event-report display JSON: chart_type (line\|combo\|bar\|stacked\|cumulative\|pie), table_layout (date\|event\|group), series [{metric_index:1,type:"bar"\|"line",axis:"primary"\|"secondary"}]. Line/combo/cumulative require a non-total time_particle_size. Metric indexes are 1-based definition.metrics positions. Series is a subset patch; [] resets all series, and chart_type=line resets to pure primary-axis lines. Omit to preserve the saved chart/result-table layout on same-model updates. For a dashboard table card use analysis dashboard-report update --chart-type table.<br>`--intent-snapshot` (json; optional) — Optional user-confirmed intent snapshot: {"schema_version":1,"requirement":"...","model_type":"event","definition":{...}}. ae-cli rejects drift between this snapshot and the final model-type/definition before validate, dry-run, or execute. The snapshot is not sent to the Gateway.<br>`--resolutions` (json; optional) — Optional user-confirmed metadata bindings keyed by compiler error path. Each value requires raw_value, resource_type, and resource_key. Keep each bound field's path and raw_value; fill the confirmed aggregation and other model parameters in the definition. This option is not supported with --model-type tag.<br>`--report-desc` (string; optional) — Optional report description.<br>`--cache-seconds` (number; optional) — Optional cache duration in seconds.<br>`--query-duration-ms` (number; optional) — Optional last query duration in milliseconds.<br>`--dashboard-ids` (json; optional) — Optional dashboard ID array to associate after creation. | [report_create.md](report_create.md) |
|
|
103
107
|
| `ae-cli analysis report delete` | analysis.report.delete | high-risk-write | `--project-id` (number; required) — Numeric project ID.<br>`--report-ids` (json; required) — Report ID array. | [report_delete.md](report_delete.md) |
|
|
104
108
|
| `ae-cli analysis report get` | analysis.report.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--report-id` (number; required) — Report ID. | [report_get.md](report_get.md) |
|
|
105
109
|
| `ae-cli analysis report list` | analysis.report.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<br>`--fields` (json; optional) — Optional result field projection JSON array.<br>`--model-types` (json; optional) — Optional semantic report model JSON array, for example ["event","sql","tag","revenue"].<br>`--limit` (number; optional, min=1, max=200) — Report page size. Default: 50, max: 200. Values outside 1..200 are rejected.<br>`--offset` (number; optional, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--certification-scope` (string; optional, default="project") — Asset certification filter scope: project follows the project switch, certified returns only certified assets, all returns every asset. | [report_list.md](report_list.md) |
|
|
106
110
|
| `ae-cli analysis report list-export` | analysis.report.list_export | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<br>`--fields` (json; optional) — Optional result field projection JSON array.<br>`--model-types` (json; optional) — Optional semantic report model JSON array, for example ["event","sql","tag","revenue"].<br>`--request-id` (string; optional) — Optional caller-supplied cli_<32 lowercase hex> lifecycle ID. ae-cli generates and prints one before dispatch when omitted.<br>`--artifact-format` (string; optional) — Logical artifact format, usually jsonl or csv. This does not select compression; read format, compression, file_name, content_type, and content_encoding from the returned descriptor.<br>`--timeout-seconds` (number; optional, min=1, max=21600) — Async runtime in seconds. Default and max: 21600 (6 hours); cancel earlier with analysis query cancel --run-id <run_id>.<br>`--certification-scope` (string; optional, default="project") — Asset certification filter scope: project follows the project switch, certified returns only certified assets, all returns every asset.<br>`--wait` (boolean; optional) — Wait for the remote run and artifact to reach a terminal state. Polling uses short inspect requests; interrupting does not cancel the remote run.<br>`--wait-timeout-seconds` (number; optional, min=1, max=21600) — Maximum time this CLI process waits. Default: 600 seconds; expiry never cancels the remote run.<br>`--output` (string; optional) — Wait, then stream the completed artifact to this local file. Implies --wait.<br>`--force` (boolean; optional) — Allow --output to atomically replace an existing file. Without this flag, existing paths are refused. | [report_list_export.md](report_list_export.md) |
|
|
107
|
-
| `ae-cli analysis report update` | analysis.report.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--report-id` (number; required) — Report ID to update.<br>`--report-version` (number; required) — Current report version from report get.<br>`--report-name` (string; optional) — New report display name.<br>`--report-desc` (string; optional) — New report description. Pass an empty string to clear it; omit to preserve it.<br>`--model-type` (string; optional) — Supported AI-facing model_type values, 12 total. 9 common models: event (event analysis), retention (retention analysis), funnel (funnel conversion), distribution (distribution analysis), attribution (attribution analysis), interval (interval analysis), path (path analysis), prop_analysis (property analysis), sql (SQL analysis). 3 scenario models: heat_map (heat map analysis), rank_list (ranking analysis), revenue (revenue analysis). Tags and cohorts/clusters are separate capabilities and are not ad-hoc model_type values. Report create/update also supports tag for saved tag report data; use tag as the AI-facing spelling.<br>`--definition` (json; optional) — Event metrics: omit optional display_name unless the target command schema explicitly supports it. Funnel step filters use event_property_name (not field) and string-array values, including "true"/"false" for boolean properties. For tag/cluster filters, cluster_date_policy accepts LATEST (default), AUTO (match the computed result for each analysis date), or SPECIFIED (requires specified_cluster_date in yyyy-MM-dd format). AI-facing model definition JSON. Do not pass raw QP, events, event_view, visual_view, or analysis_query. Distribution filters must be attached to the corresponding distribution_metrics[].filters; do not use top-level filters or relation. For path definitions, global filters support user_property, cluster, and tag only; event_property is not supported. session_unit accepts second (1..999), minute (1..999), or hour (1..24). Do not use day; express one day as session_interval=24 and session_unit=hour. For SQL, a simple query is {"sql":"select ..."}; raw variables use ${name}, while typed params use ${Text:name}, ${Selector:name}, or ${PartDate:name}. PartDate expands to a complete predicate, so write WHERE ${PartDate:d}, not a column followed by the placeholder. A part_date parameter may set boolean use_timezone; it defaults to false and controls whether that parameter uses the query effective timezone. Selector value must match one options[].value. Trino identifiers containing #, $, @, spaces, punctuation, or a reserved word must be delimited with double quotes, for example SELECT "#user_id", "$part_event", "end" FROM ...; single quotes are string literals. For multiline SQL JSON, the decoded sql value must contain a real line break; do not submit a literal \n sequence outside quoted SQL text. Queries against an event table must include a date-partition predicate on the quoted "$part_date" column, for example WHERE "$part_date" BETWEEN '2026-07-01' AND '2026-07-07'; the backend rejects event-table SQL without it. The CLI preserves SQL text and never auto-quotes identifiers. Saved-report filters may contain one compound group level only; every item inside that group must be a leaf without another items array. Historical deeper trees remain readable but cannot be written back as a definition. For model_type=tag, pass a tag report intent such as {"tag":{"tag_name":"vip_users","time_range":{"mode":"recent","unit":"day","value":7}}}. Tags are supported for report create/update and report data, not ad-hoc analysis.<br>`--intent-snapshot` (json; optional) — Optional user-confirmed intent snapshot: {"schema_version":1,"requirement":"...","model_type":"event","definition":{...}}. ae-cli rejects drift between this snapshot and the final model-type/definition before validate, dry-run, or execute. The snapshot is not sent to the Gateway.<br>`--resolutions` (json; optional) — Optional user-confirmed metadata bindings keyed by compiler error path. Each value requires raw_value, resource_type, and resource_key. Keep each bound field's path and raw_value; fill the confirmed aggregation and other model parameters in the definition. This option is not supported with --model-type tag.<br>`--cache-seconds` (number; optional) — Optional cache duration in seconds.<br>`--query-duration-ms` (number; optional) — Optional last query duration in milliseconds. | [report_update.md](report_update.md) |
|
|
111
|
+
| `ae-cli analysis report update` | analysis.report.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--report-id` (number; required) — Report ID to update.<br>`--report-version` (number; required) — Current report version from report get.<br>`--report-name` (string; optional) — New report display name.<br>`--report-desc` (string; optional) — New report description. Pass an empty string to clear it; omit to preserve it.<br>`--model-type` (string; optional) — Supported AI-facing model_type values, 12 total. 9 common models: event (event analysis), retention (retention analysis), funnel (funnel conversion), distribution (distribution analysis), attribution (attribution analysis), interval (interval analysis), path (path analysis), prop_analysis (property analysis), sql (SQL analysis). 3 scenario models: heat_map (heat map analysis), rank_list (ranking analysis), revenue (revenue analysis). Tags and cohorts/clusters are separate capabilities and are not ad-hoc model_type values. Report create/update also supports tag for saved tag report data; use tag as the AI-facing spelling.<br>`--definition` (json; optional) — Event metrics: omit optional display_name unless the target command schema explicitly supports it. Funnel step filters use event_property_name (not field) and string-array values, including "true"/"false" for boolean properties. For tag/cluster filters, cluster_date_policy accepts LATEST (default), AUTO (match the computed result for each analysis date), or SPECIFIED (requires specified_cluster_date in yyyy-MM-dd format). AI-facing model definition JSON. Do not pass raw QP, events, event_view, visual_view, or analysis_query. Distribution filters must be attached to the corresponding distribution_metrics[].filters; do not use top-level filters or relation. For path definitions, global filters support user_property, cluster, and tag only; event_property is not supported. session_unit accepts second (1..999), minute (1..999), or hour (1..24). Do not use day; express one day as session_interval=24 and session_unit=hour. For SQL, a simple query is {"sql":"select ..."}; raw variables use ${name}, while typed params use ${Text:name}, ${Selector:name}, or ${PartDate:name}. PartDate expands to a complete predicate, so write WHERE ${PartDate:d}, not a column followed by the placeholder. A part_date parameter may set boolean use_timezone; it defaults to false and controls whether that parameter uses the query effective timezone. Selector value must match one options[].value. Trino identifiers containing #, $, @, spaces, punctuation, or a reserved word must be delimited with double quotes, for example SELECT "#user_id", "$part_event", "end" FROM ...; single quotes are string literals. For multiline SQL JSON, the decoded sql value must contain a real line break; do not submit a literal \n sequence outside quoted SQL text. Queries against an event table must include a date-partition predicate on the quoted "$part_date" column, for example WHERE "$part_date" BETWEEN '2026-07-01' AND '2026-07-07'; the backend rejects event-table SQL without it. The CLI preserves SQL text and never auto-quotes identifiers. Saved funnel definitions may set optional funnel.steps[].display_name; report get returns it and report create/update preserves it. Saved-report filters may contain one compound group level only; every item inside that group must be a leaf without another items array. Historical deeper trees remain readable but cannot be written back as a definition. For model_type=tag, pass a tag report intent such as {"tag":{"tag_name":"vip_users","time_range":{"mode":"recent","unit":"day","value":7}}}. Tags are supported for report create/update and report data, not ad-hoc analysis.<br>`--presentation` (json; optional) — Optional top-level event-report display JSON: chart_type (line\|combo\|bar\|stacked\|cumulative\|pie), table_layout (date\|event\|group), series [{metric_index:1,type:"bar"\|"line",axis:"primary"\|"secondary"}]. Line/combo/cumulative require a non-total time_particle_size. Metric indexes are 1-based definition.metrics positions. Series is a subset patch; [] resets all series, and chart_type=line resets to pure primary-axis lines. Omit to preserve the saved chart/result-table layout on same-model updates. For a dashboard table card use analysis dashboard-report update --chart-type table.<br>`--intent-snapshot` (json; optional) — Optional user-confirmed intent snapshot: {"schema_version":1,"requirement":"...","model_type":"event","definition":{...}}. ae-cli rejects drift between this snapshot and the final model-type/definition before validate, dry-run, or execute. The snapshot is not sent to the Gateway.<br>`--resolutions` (json; optional) — Optional user-confirmed metadata bindings keyed by compiler error path. Each value requires raw_value, resource_type, and resource_key. Keep each bound field's path and raw_value; fill the confirmed aggregation and other model parameters in the definition. This option is not supported with --model-type tag.<br>`--cache-seconds` (number; optional) — Optional cache duration in seconds.<br>`--query-duration-ms` (number; optional) — Optional last query duration in milliseconds. | [report_update.md](report_update.md) |
|
|
108
112
|
| `ae-cli analysis report-abnormal get` | analysis.report_abnormal.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--report-id` (number; required) — Report ID. | [report_abnormal_get.md](report_abnormal_get.md) |
|
|
109
113
|
| `ae-cli analysis report-change-log get` | analysis.report_change_log.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--report-id` (number; required) — Report ID.<br>`--history-version` (number; optional) — Optional history version. Omit for latest. | [report_change_log_get.md](report_change_log_get.md) |
|
|
110
114
|
| `ae-cli analysis report-change-log list` | analysis.report_change_log.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--report-id` (number; required) — Report ID. | [report_change_log_list.md](report_change_log_list.md) |
|
|
@@ -229,6 +233,9 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
|
|
|
229
233
|
| `ae-cli personal-semantic-preference delete` | business_semantics.personal_context.delete | high-risk-write | `--project-id` (number; required, min=1) — Numeric project ID.<br>`--id` (string; required) — Preference ID returned by list/add.<br>`--expected-revision` (number; required, min=1) — Revision returned by the latest read.<br>`--request-id` (string; optional, maxLength=128) — Optional idempotency key; generated when omitted. | [personal_semantic_preference_delete.md](personal_semantic_preference_delete.md) |
|
|
230
234
|
| `ae-cli personal-semantic-preference get` | business_semantics.personal_context.get | read | `--project-id` (number; required, min=1) — Numeric project ID.<br>`--id` (string; required) — Preference ID returned by list/add.<br>`--title` (string; required, minLength=1, maxLength=255) — Preference title copied from list output for telemetry only.<br>`--mark-used` (boolean; optional) — Count this preference as adopted and update its usage heat. | [personal_semantic_preference_get.md](personal_semantic_preference_get.md) |
|
|
231
235
|
| `ae-cli personal-semantic-preference list` | business_semantics.personal_context.list | read | `--project-id` (number; required, min=1) — Numeric project ID. | [personal_semantic_preference_list.md](personal_semantic_preference_list.md) |
|
|
236
|
+
| `ae-cli personal-semantic-preference review` | business_semantics.personal_context.review | write | `--project-id` (number; required, min=1) — Numeric project ID.<br>`--ids` (json; required) — JSON array of preference IDs from review-list.<br>`--action` (string; required) — adopt \| reject.<br>`--project-review-note` (string; optional, maxLength=1000) — Optional reviewer note.<br>`--request-id` (string; optional, maxLength=128) — Optional idempotency key; generated when omitted. | [personal_semantic_preference_review.md](personal_semantic_preference_review.md) |
|
|
237
|
+
| `ae-cli personal-semantic-preference review-list` | business_semantics.personal_context.review_list | read | `--project-id` (number; required, min=1) — Numeric project ID.<br>`--project-review-status` (string; optional) — none \| pending \| adopted \| rejected.<br>`--owner` (string; optional) — Owner selector: user name, login name, or user ID. open_id is not accepted.<br>`--context-type` (string; optional) — preference \| asset_context \| experience \| background.<br>`--keyword` (string; optional) — Match title, summary, content, or keywords.<br>`--limit` (number; optional, min=1, max=200) — Page size. Defaults to 50.<br>`--offset` (number; optional, min=0) — Zero-based page offset. | [personal_semantic_preference_review_list.md](personal_semantic_preference_review_list.md) |
|
|
238
|
+
| `ae-cli personal-semantic-preference submit` | business_semantics.personal_context.submit | write | `--project-id` (number; required, min=1) — Numeric project ID.<br>`--id` (string; required) — Preference ID returned by list/add.<br>`--project-review-note` (string; optional, maxLength=1000) — Optional note for the reviewer.<br>`--request-id` (string; optional, maxLength=128) — Optional idempotency key; generated when omitted. | [personal_semantic_preference_submit.md](personal_semantic_preference_submit.md) |
|
|
232
239
|
| `ae-cli personal-semantic-preference update` | business_semantics.personal_context.update | write | `--project-id` (number; required, min=1) — Numeric project ID.<br>`--id` (string; required) — Preference ID returned by list/add.<br>`--expected-revision` (number; required, min=1) — Revision returned by the latest read.<br>`--context-type` (string; required) — preference \| asset_context \| experience \| background.<br>`--title` (string; required, maxLength=255) — Short preference title.<br>`--summary` (string; required, maxLength=1000) — Compact preference summary.<br>`--content` (string; required, maxLength=20000) — Full replacement content.<br>`--keywords` (json; optional) — Optional JSON array of preference keywords.<br>`--resource-refs` (json; optional) — Ordered JSON asset references; required only for asset_context.<br>`--fresh-until-at` (string; optional) — Optional freshness expiration timestamp: yyyy-MM-dd HH:mm:ss.<br>`--request-id` (string; optional, maxLength=128) — Optional idempotency key; generated when omitted. | [personal_semantic_preference_update.md](personal_semantic_preference_update.md) |
|
|
233
240
|
| `ae-cli project access-detail get` | project.access_detail.get | read | `--company-id` (number; required) — Company ID. | [project_access_detail_get.md](project_access_detail_get.md) |
|
|
234
241
|
| `ae-cli project data-power delete` | project.data_power.delete | high-risk-write | `--project-id` (number; required) — Numeric project ID.<br>`--data-power-id` (number; required) — Data power ID to delete.<br>`--new-data-power-id` (number; optional) — Optional replacement data power ID for affected users. | [project_data_power_delete.md](project_data_power_delete.md) |
|
|
@@ -304,10 +311,11 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
|
|
|
304
311
|
| `ae-cli system query-alert-rule update` | system.query_alert_rule.update | high-risk-write | `--company-id` (number; required, min=1) — Company ID.<br>`--upserts` (json; optional) — Rule upsert JSON array.<br>`--delete-ids` (json; optional) — Positive rule-ID JSON array to delete. | [system_query_alert_rule_update.md](system_query_alert_rule_update.md) |
|
|
305
312
|
| `ae-cli system query-monitor overview` | system.query_monitor.overview | read | `--company-id` (number; required, min=1) — Company ID.<br>`--duration-minutes` (number; optional, min=1, max=1440) — Monitoring duration in minutes. Default: 60.<br>`--project-ids` (json; optional) — Project ID JSON array.<br>`--space-codes` (json; optional) — Project space-code JSON array.<br>`--cluster-names` (json; required) — Query cluster-name JSON array.<br>`--point-interval-seconds` (number; optional, min=5, max=300) — Chart sample interval seconds. Default: 5. | [system_query_monitor_overview.md](system_query_monitor_overview.md) |
|
|
306
313
|
| `ae-cli system query-task cancel` | system.query_task.cancel | high-risk-write | `--company-id` (number; required, min=1) — Company ID.<br>`--task-id` (string; required) — Query-monitor task ID, not a CLI run_id. | [system_query_task_cancel.md](system_query_task_cancel.md) |
|
|
307
|
-
| `ae-cli system query-task export` | system.query_task.export | read | `--company-id` (number; required, min=1) — Company ID.<br>`--start-time` (string; required, pattern=^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$) — Inclusive
|
|
314
|
+
| `ae-cli system query-task export` | system.query_task.export | read | `--company-id` (number; required, min=1) — Company ID.<br>`--start-time` (string; required, pattern=^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$) — Inclusive completion-time range start, yyyy-MM-dd HH:mm:ss.<br>`--end-time` (string; required, pattern=^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$) — Inclusive completion-time range end, including the entire second, yyyy-MM-dd HH:mm:ss.<br>`--project-ids` (json; optional) — Project ID JSON array.<br>`--space-codes` (json; optional) — Project space-code JSON array.<br>`--status-codes` (json; required) — Task status-code JSON array.<br>`--content-codes` (json; required) — Query content-code JSON array.<br>`--task-type-codes` (json; required) — Query task-type-code JSON array.<br>`--cluster-names` (json; optional) — Optional cluster-name JSON array.<br>`--download-columns` (json; optional) — Optional CSV column JSON array.<br>`--request-id` (string; optional, pattern=^cli_[0-9a-f]{32}$) — Optional caller-supplied cli_<32 lowercase hex> lifecycle ID; ae-cli generates one before dispatch when omitted.<br>`--timeout-seconds` (number; optional, min=1, max=21600) — Maximum export runtime in seconds. Default and max: 21600.<br>`--wait` (boolean; optional) — Wait for the remote run and artifact to reach a terminal state. Polling uses short inspect requests; interrupting does not cancel the remote run.<br>`--wait-timeout-seconds` (number; optional, min=1, max=21600) — Maximum time this CLI process waits. Default: 600 seconds; expiry never cancels the remote run.<br>`--output` (string; optional) — Wait, then stream the completed artifact to this local file. Implies --wait.<br>`--force` (boolean; optional) — Allow --output to atomically replace an existing file. Without this flag, existing paths are refused. | [system_query_task_export.md](system_query_task_export.md) |
|
|
308
315
|
| `ae-cli system query-task get` | system.query_task.get | read | `--company-id` (number; required, min=1) — Company ID.<br>`--task-id` (string; required) — Query-monitor task ID.<br>`--sql-max-chars` (number; optional, min=0, max=20000) — Maximum returned SQL characters. Max: 20000. | [system_query_task_get.md](system_query_task_get.md) |
|
|
309
|
-
| `ae-cli system query-task list` | system.query_task.list | read | `--company-id` (number; required, min=1) — Company ID.<br>`--start-time` (string; required, pattern=^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$) — Inclusive
|
|
316
|
+
| `ae-cli system query-task list` | system.query_task.list | read | `--company-id` (number; required, min=1) — Company ID.<br>`--start-time` (string; required, pattern=^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$) — Inclusive completion-time range start, yyyy-MM-dd HH:mm:ss.<br>`--end-time` (string; required, pattern=^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$) — Inclusive completion-time range end, including the entire second, yyyy-MM-dd HH:mm:ss.<br>`--project-ids` (json; optional) — Project ID JSON array.<br>`--space-codes` (json; optional) — Project space-code JSON array.<br>`--status-codes` (json; required) — Task status-code JSON array.<br>`--content-codes` (json; required) — Query content-code JSON array.<br>`--task-type-codes` (json; required) — Query task-type-code JSON array.<br>`--cluster-names` (json; optional) — Optional cluster-name JSON array.<br>`--limit` (number; optional, min=1, max=1000) — Maximum returned tasks. Default: 100, max: 1000.<br>`--offset` (number; optional, min=0) — Zero-based result offset.<br>`--fields` (json; optional) — Optional snake_case result field projection JSON array. | [system_query_task_list.md](system_query_task_list.md) |
|
|
310
317
|
| `ae-cli system query-task options` | system.query_task.options | read | `--company-id` (number; required, min=1) — Company ID. | [system_query_task_options.md](system_query_task_options.md) |
|
|
318
|
+
| `ae-cli system query-task realtime-list` | system.query_task.realtime_list | read | `--company-id` (number; required, min=1) — Company ID.<br>`--duration-minutes` (number; optional, min=1, max=30) — Realtime window in minutes. Default: 30.<br>`--project-ids` (json; optional) — Project ID JSON array.<br>`--space-codes` (json; optional) — Project space-code JSON array.<br>`--cluster-names` (json; required) — Query cluster-name JSON array.<br>`--status-codes` (json; optional) — Optional task status-code JSON array.<br>`--limit` (number; optional, min=1, max=200) — Maximum returned tasks. Default: 100, max: 200. | [system_query_task_realtime_list.md](system_query_task_realtime_list.md) |
|
|
311
319
|
| `ae-cli system receiver-address delete` | system.receiver_address.delete | high-risk-write | `--company-id` (number; required, min=1) — Company ID.<br>`--address-url` (string; required) — Receiver address URL.<br>`--address-type` (string; required) — Receiver address type. | [system_receiver_address_delete.md](system_receiver_address_delete.md) |
|
|
312
320
|
| `ae-cli system receiver-address overview` | system.receiver_address.overview | read | `--company-id` (number; required, min=1) — Company ID. | [system_receiver_address_overview.md](system_receiver_address_overview.md) |
|
|
313
321
|
| `ae-cli system receiver-address project-list` | system.receiver_address.project_list | read | `--company-id` (number; required, min=1) — Company ID. | [system_receiver_address_project_list.md](system_receiver_address_project_list.md) |
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# analysis dashboard move
|
|
2
|
+
|
|
3
|
+
Move one or more analysis dashboards (看板) to the same project-space root or folder inside that project space. Do not use this command for a BI panel (仪表盘), copying a dashboard, changing its owner, or moving it to a personal-space folder.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
ae-cli analysis dashboard move --project-id <project_id> --dashboard-ids '[<dashboard_id>,...]' --to-space-id <space_id> [--to-folder-id <folder_id>]
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Always pass `--dashboard-ids` as a JSON array. Use a one-item array for a single dashboard. Duplicate IDs are moved once, in first-seen order.
|
|
10
|
+
|
|
11
|
+
Use `analysis project-space list` to resolve a target space and inspect its returned `permissions`. When moving into a folder, resolve the folder under that exact space; the service rejects a folder ID that does not belong to `--to-space-id`.
|
|
12
|
+
|
|
13
|
+
The server resolves every dashboard's current space and folder. Do not ask the user to provide source location IDs. Execution requires all of the following asset-level permissions:
|
|
14
|
+
|
|
15
|
+
- `dashboardMoveTo` on the source dashboard;
|
|
16
|
+
- `spaceAddDashboard` when the target is a project-space root; or
|
|
17
|
+
- `folderAddDashboard` when the target is a folder.
|
|
18
|
+
|
|
19
|
+
The command is a normal `write` capability and supports `--dry-run`. A dry run validates the CLI/Gateway contract and the `analysis:write` scope without moving dashboards; asset-level source and target permissions are checked only during formal execution. Formal execution is atomic: if any dashboard fails existence, source-location, or permission checks, none are moved.
|
|
20
|
+
|
|
21
|
+
Successful output contains `requested_count`, `moved_count`, `unchanged_count`, and `items`. Each item contains `dashboard_id`, `moved`, `from_location`, and `to_location`. `moved=false` means that dashboard was already at the requested location; asset permissions are still checked during formal execution.
|
|
@@ -13,3 +13,5 @@ ae-cli analysis dashboard-report add --project-id <project_id> --dashboard-id <d
|
|
|
13
13
|
Input sends `project_id`, `dashboard_id`, and `report_ids`.
|
|
14
14
|
|
|
15
15
|
Output is the gateway envelope. `data` contains `dashboard_id`, requested `report_ids`, and `added_count`.
|
|
16
|
+
|
|
17
|
+
Adding a report does not choose a table-card display. For an event table card, keep the exact created report ID and dashboard ID, then use [`dashboard-report update`](dashboard_report_update.md) with `--chart-type table`. Read that card's display through [`dashboard-report get`](dashboard_report_get.md), not `report get`.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# analysis dashboard-report get
|
|
2
|
+
|
|
3
|
+
Capability id: `analysis.dashboard_report.get`
|
|
4
|
+
|
|
5
|
+
Use when the user needs the saved presentation of one event report card on an analysis board (`看板`). This L2 command uses typed IDs to distinguish the card from the source report and other boards.
|
|
6
|
+
|
|
7
|
+
Do not use it to read a report definition or execute data. Use [`report get`](report_get.md) for the source definition, or `dashboard-report-data run/export` for the card's data. Only event report cards are supported by this presentation contract.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
ae-cli analysis dashboard-report get --project-id <project_id> --dashboard-id <dashboard_id> --report-id <report_id>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Input sends `project_id`, `dashboard_id`, and `report_id`. The report must already belong to that dashboard; use [`dashboard-report add`](dashboard_report_add.md) only when the user requests adding it.
|
|
14
|
+
|
|
15
|
+
Output is the gateway envelope. `data` contains `project_id`, `dashboard_id`, `report_id`, `model_type`, and semantic `presentation`: effective `chart_type`, plus `table_layout` and `date_outside` when persisted and readable. Historical layouts/settings that inherit browser configuration omit these fields; absence means inherited/unknown, not `table_layout=date` or `date_outside=false`. Read the selected card's presentation, not the source report's chart. A table card can coexist with the source report's line chart (internal code `L0`); this is expected and does not establish missing conditions or corrupted definitions.
|
|
16
|
+
|
|
17
|
+
For an authorized display change, use [`dashboard-report update`](dashboard_report_update.md). Get is read-only and does not alter the source definition, card, or other dashboards.
|
|
18
|
+
|
|
19
|
+
For an effective card trend/combination chart, `presentation.series_scope=report` and `series` describe inherited source-report styles/axes, not card-local configuration. The board's trend button can render a source combo; use returned `chart_type=combo` and the series as evidence. Read [event-report presentation](event_report_presentation.md) before a source-series edit because it affects other trend cards too.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# analysis dashboard-report update
|
|
2
|
+
|
|
3
|
+
Capability id: `analysis.dashboard_report.update`
|
|
4
|
+
|
|
5
|
+
Use when the user explicitly requests changing one event report card's presentation on an analysis board (`看板`). Typed display flags are the L2 value: they select the card scope without exposing raw QP/UI fields.
|
|
6
|
+
|
|
7
|
+
Do not use for the source report definition, BI dashboards (`仪表盘`), report creation, or adding a report to a board. Only event report cards are supported. Use [`report update`](report_update.md) for source report metadata/definition/chart/result-table layout.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
ae-cli analysis dashboard-report update --project-id <project_id> --dashboard-id <dashboard_id> --report-id <report_id> --chart-type table --table-layout event --date-outside false
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Input sends typed `project_id`, `dashboard_id`, `report_id`, and a top-level `presentation` object built from the supplied flags. At least one display flag is required:
|
|
14
|
+
|
|
15
|
+
- `--chart-type line|combo|bar|stacked|cumulative|pie|table`: the selected card's chart. `table` is supported here, not in source-report presentation. Gateway validates the choice against the saved event definition; pie always needs grouping without time comparison. Total-time cards support bar/table, or pie only when those grouping/comparison conditions hold.
|
|
16
|
+
- `--table-layout date|event|group`: the table layout. Omission preserves the saved layout.
|
|
17
|
+
- `--date-outside true|false`: dates displayed outside the table. True requires a table card with a non-date layout and grouping; when the persisted layout is unknown, also send `--table-layout event` or `group` in the same update. Explicit false clears this setting; omission preserves it. This is not a switch for showing/hiding the entire date column.
|
|
18
|
+
|
|
19
|
+
For a deterministic installed layout, explicitly choose both `--table-layout` and `--date-outside`. Historical inherited fields missing from get must not be treated as `date`/false defaults.
|
|
20
|
+
|
|
21
|
+
`--chart-type combo` selects the trend family only when the source already has combo series; it does not author series. The card inherits source-report metric styles/axes, including when the board's button is labeled trend/line. To get a pure line, reset the source first; a card `--chart-type line` against source combo is rejected rather than misreporting success. Read [event-report presentation](event_report_presentation.md) for source-series edits and their cross-card impact. There is no card `--series` flag or card-local series override.
|
|
22
|
+
|
|
23
|
+
The report must already belong to the exact dashboard. For a new table card, create the event report, associate it through `report create --dashboard-ids` or [`dashboard-report add`](dashboard_report_add.md), then update with the exact returned report ID. Read existing presentation with [`dashboard-report get`](dashboard_report_get.md) when necessary; do not regenerate its definition for a display-only request.
|
|
24
|
+
|
|
25
|
+
Only the selected card presentation changes. Omitted presentation fields, its source report definition/chart, and other dashboards remain unchanged. Never send `graphShape`, `reportGraphShape`, `tableFormat`, or `dateOutside` as CLI JSON fields. `--dry-run` previews the same targeted display update when requested; ordinary writes do not require a delete confirmation.
|
|
26
|
+
|
|
27
|
+
Output is the gateway envelope. `data` contains the selected project/dashboard/report IDs, `model_type`, and `presentation` after the update. Use these returned values as card-display evidence; a successful mutation is not proof that a report data query succeeded.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Use when the user wants to update dashboard settings in batch, upsert a dashboard note, save a dashboard-wide or personal default filter, or replace the dashboard-level business filter.
|
|
4
4
|
|
|
5
|
-
Do not use for moving/copying dashboards. Use `dashboard
|
|
5
|
+
Do not use for moving/copying dashboards. Use `dashboard move`, `dashboard copy`, or `dashboard handover` for those workflows.
|
|
6
6
|
|
|
7
7
|
Command:
|
|
8
8
|
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Event-report presentation and combination charts
|
|
2
|
+
|
|
3
|
+
Read this reference for event combination charts, per-metric chart styles/axes, or the difference between source-report, result-table and analysis-board-card display. This is a saved-event-report contract, not an ad-hoc or SQL visualization contract.
|
|
4
|
+
|
|
5
|
+
## Display scope
|
|
6
|
+
|
|
7
|
+
- Source event chart: `report create/update --presentation`, read through `report get`.
|
|
8
|
+
- Analysis page's result-table layout: source `presentation.table_layout=date|event|group`; it can coexist with a source line/combo chart.
|
|
9
|
+
- Card on one analysis board (`看板`): `dashboard-report get/update` with exact project/dashboard/report IDs. A table card is `--chart-type table`, not source `chart_type=table`.
|
|
10
|
+
- Combination series and axes belong to the source report. Card read responses expose `series_scope=report` and the inherited series when relevant; they are not card-local configuration.
|
|
11
|
+
|
|
12
|
+
Changing source series affects its other trend (`L0`) cards, not just the card currently visible. Explain this scope before a source-series write when the user's intent only names one card. Do not promise a card-local override or use a new copied report without authorization.
|
|
13
|
+
|
|
14
|
+
## Chart names
|
|
15
|
+
|
|
16
|
+
Source `chart_type` accepts `line|combo|bar|stacked|cumulative|pie`. Card display also accepts `table`. Gateway checks compatibility against the current granularity, groups, metrics and comparison settings.
|
|
17
|
+
|
|
18
|
+
Line, combo, and cumulative require a non-total time granularity. An event definition that omits `time_particle_size` defaults to `total`; when creating a trend/combo, explicitly set the requested `day`, `hour`, or another supported non-total grain. For a saved total-time report, a combo requires an authorized definition/granularity change, not a display-only patch; preserve the requested calculation scope rather than silently changing it to make the chart valid.
|
|
19
|
+
|
|
20
|
+
- `line`: pure lines on the primary axis. Explicitly selecting it resets every source metric's combination style and secondary axis.
|
|
21
|
+
- `combo`: trend rendering with report-level non-default per-metric bar/line or secondary-axis settings. A source needs a resulting non-default series configuration; choosing the name alone does not invent one.
|
|
22
|
+
- `stacked`: stacked area, not a bar/line combination.
|
|
23
|
+
- `cumulative`: accumulated line, not a combo chart. It does not configure a second Y axis.
|
|
24
|
+
- `pie`: event pie uses internal `L11`, not `L2`. It requires grouping without time comparison; total-time reports/cards still require those pie conditions.
|
|
25
|
+
|
|
26
|
+
Use semantic names, never internal graph codes. A pure line and a combo both use the native trend family `L0`; the metric styles/axes distinguish them. Do not infer the effective chart from raw `graphShape` alone.
|
|
27
|
+
|
|
28
|
+
## Metric bindings
|
|
29
|
+
|
|
30
|
+
`metric_index` is a 1-based position in the current normalized `definition.metrics` array, not an asset ID, formula dependency index, event ID, or metric UUID. Read the exact report/version before modifying an existing report's series, map each index to its returned metric, and use that version in `--report-version`. Do not reuse positions from an older definition after metrics change.
|
|
31
|
+
|
|
32
|
+
Source `presentation.series` accepts an array. Each item contains exactly three required fields:
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{"metric_index":1,"type":"bar","axis":"primary"}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`type` is `bar|line`; `axis` is `primary|secondary`. Indexes must be positive integers, unique and within the current submitted/saved metrics. The server validates the binding and the saved report state before writing.
|
|
39
|
+
|
|
40
|
+
Series is a subset patch: specified metrics change and unspecified metrics retain their styles/axes. `series: []` explicitly resets all metric styles/axes to primary-axis lines. Omitting `series` preserves existing styles/axes where the server can uniquely match each technical metric identity; explicitly selecting `chart_type=line` resets them. `series_scope` is read-only output, never input.
|
|
41
|
+
|
|
42
|
+
A non-empty series-only patch requires an existing compatible trend (`line`/`combo`). An empty `series: []` can clear retained series on a compatible non-trend chart such as bar/cumulative while keeping that current chart type. To switch from another chart and configure non-empty series in the same update, explicitly select `chart_type=combo`; a non-empty series array cannot accompany another explicit chart type. Source reads omit series on non-trend charts, which does not prove that retained series settings are absent; a trend card can still inherit them.
|
|
43
|
+
|
|
44
|
+
For a display-only update, omit `definition` and `model_type` so the query and metric order are not replaced. During a same-model definition update without an explicit series reset, the server preserves styles by uniquely matched technical metric identity, not display labels, UUIDs, or old positions. Filter-only changes and unique reordering can retain the series; added metrics default to primary-axis lines. Removing/changing a non-default metric or an ambiguous match fails before writing with `SERIES_PRESERVATION_CONFLICT`. Follow its hint: reset through `chart_type=line` or `series: []`, then configure the new normalized metric order when needed. Do not manually carry old positions into a new definition, infer a match from a label, or describe this protection as complete preservation of every visual setting.
|
|
45
|
+
|
|
46
|
+
If a definition change makes a previously valid chart unavailable, implicit chart preservation fails before writing. Follow the returned guidance and explicitly choose a compatible chart only within the user's authorized intent; keep the requested query semantics. A pre-existing invalid legacy chart still uses the page's fallback rather than newly blocking an otherwise valid update. These protections do not promise preservation of every visual setting.
|
|
47
|
+
|
|
48
|
+
## Author and verify a combination chart
|
|
49
|
+
|
|
50
|
+
For confirmed event/property metadata, a requested daily window, and two metrics whose metric 1 is revenue and metric 2 is user count:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
ae-cli analysis report create --project-id <project_id> --report-name "Revenue and users" --model-type event --definition '{"time_particle_size":"day","time_range":{"mode":"previous","unit":"day","value":7},"metrics":[{"event":"<confirmed_purchase_event>","aggregation":"sum","property":"<confirmed_amount_property>"},{"event":"<confirmed_login_event>","aggregation":"user_count"}]}' --presentation '{"chart_type":"combo","series":[{"metric_index":1,"type":"bar","axis":"primary"},{"metric_index":2,"type":"line","axis":"secondary"}]}'
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
To change only metric 2 on the current saved report, after reading its exact metric order/version:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
ae-cli analysis report update --project-id <project_id> --report-id <report_id> --report-version <current_version> --presentation '{"series":[{"metric_index":2,"type":"line","axis":"secondary"}]}'
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Read `report get` after an explicitly requested display verification. Its presentation reports the effective chart and per-metric series; a successful mutation is not proof of data-query success or complete equivalence with every page setting.
|
|
63
|
+
|
|
64
|
+
To reset to pure line on the primary axis:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
ae-cli analysis report update --project-id <project_id> --report-id <report_id> --report-version <current_version> --presentation '{"chart_type":"line"}'
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Card trend inheritance
|
|
71
|
+
|
|
72
|
+
`dashboard-report update --chart-type combo` is valid only when the source report already has combo series. It selects the card's trend display without changing source series. The board's trend/line button can display a source combo, so read the effective `chart_type` and inherited `series`, not only the button label.
|
|
73
|
+
|
|
74
|
+
A source combo cannot be made into a pure line on only one card through this contract. `--chart-type line` must not claim a pure-line outcome while source combo remains; the gateway rejects it with guidance to reset the source first. Resetting source series affects every other `L0` card of that source. Card updates do not accept a `series` input/flag.
|
|
75
|
+
|
|
76
|
+
Historical `table_layout` or `date_outside` can inherit browser settings. Missing values mean inherited/unknown, not date/false. For a deterministic table layout, explicitly set `--table-layout` and `--date-outside` in the scoped card update.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# analysis feedback submit
|
|
2
|
+
|
|
3
|
+
Command: `ae-cli analysis feedback submit`.
|
|
4
|
+
Capability id: `analysis.feedback.submit`.
|
|
5
|
+
Risk: `write`. Supports `--validate` and `--dry-run`; neither emits a feedback event.
|
|
6
|
+
|
|
7
|
+
## Trigger
|
|
8
|
+
|
|
9
|
+
Only after an analysis data query has completed and the Agent has delivered its final business analysis answer, ask once in the user's language whether the analysis met expectations. A successful empty result with an explanation is eligible. Individual tool calls, discovery, metadata inspection, asset governance, asset writes, configuration, help and unrelated questions are not triggers. Query submission, running exports, permission errors and failed queries are not completed analysis results. Do not ask after each CLI call or intermediate analysis step.
|
|
10
|
+
|
|
11
|
+
No feedback means no submit command, event, case creation or answer upload. Submit only an explicit user evaluation of the completed analysis. A follow-up question, new requirement, silence or a topic change is not a rating. If the target is ambiguous, do not guess. A spontaneous explicit evaluation of a completed analysis can also be submitted without repeating the question.
|
|
12
|
+
|
|
13
|
+
## Input and correlation
|
|
14
|
+
|
|
15
|
+
- `--query-completed`: confirms that results and the final analysis answer have already been delivered.
|
|
16
|
+
- `--query-capability-id`: one actual analysis data-query capability executed in the evaluated turns, such as `analysis.report_data.run`, `analysis.adhoc.run`, or a completed export. Never substitute asset discovery or writes.
|
|
17
|
+
- `--satisfaction`: `satisfied`, `partially_satisfied`, `dissatisfied`, or `unable_to_judge`, based solely on the explicit user evaluation.
|
|
18
|
+
- `--feedback-text`: original user feedback, up to 2048 characters.
|
|
19
|
+
- `--target-turn-ids`: JSON array of existing analysis turn IDs in this conversation, at most 32. Preserve all relevant turns for a multi-turn analysis and exclude the current feedback turn. Do not generate new analysis IDs. If IDs cannot be reliably recovered, omit them; the event declares session-level association and cannot identify a specific analysis path.
|
|
20
|
+
- `--route-summary`: optional short business-purpose and asset-selection rationale supported by the actual analysis route. Do not submit answer content, result rows, a full transcript, or private internal reasoning. The existing CLI events remain the execution evidence; omit details that cannot be verified.
|
|
21
|
+
- `--feedback-id`: optional stable submission ID to reuse on retries. With a current feedback turn ID, the CLI derives a stable fingerprint. If that ID is unavailable, supply and retain one feedback ID for retries.
|
|
22
|
+
- `--project-id`: the evaluated analysis project when available.
|
|
23
|
+
|
|
24
|
+
The CLI reads `agent_session_id` from the existing context file; the backend requires it to match the current Agent context and uses the authenticated user identity. Preserve the current feedback turn in `agent_turn_id`; do not overwrite it with the target analysis turn. On model switches, assess the analysis route using models from the linked original call events, not the model collecting feedback.
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
ae-cli analysis feedback submit --query-completed \
|
|
28
|
+
--query-capability-id analysis.report_data.run \
|
|
29
|
+
--satisfaction dissatisfied --feedback-text '<original explicit user feedback>' \
|
|
30
|
+
--target-turn-ids '["<existing-analysis-turn-id>"]' --project-id 196
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Result and failure
|
|
34
|
+
|
|
35
|
+
The result contains `accepted`, `feedback_id`, `event_name`, `delivery` and `association_scope`. `accepted=true, delivery=best_effort` means the feedback endpoint accepted the submission; it does not prove downstream ingestion or event visibility. The dedicated `cli_analysis_feedback` event carries the rating and target turns. Reconstruct the path from `cli_gateway_call` using the same user and `agent_session_id`, then the target `agent_turn_id` values; exclude `analysis.feedback.submit` from analysis steps. Ratings produce Good/Bad candidates, not verified business-correctness labels.
|
|
36
|
+
|
|
37
|
+
Feedback is auxiliary. A submission failure must not block or delay the user's next analysis, change the completed query result, replace credentials or trigger a login just for telemetry. Preserve the feedback ID for an explicitly requested retry and do not claim it was recorded when submission failed.
|