@thinkingai/ae-cli 6.0.55 → 6.0.57
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 +35 -6
- package/README.zh.md +35 -6
- package/bin/ae-cli.js +5 -0
- package/bin/runtime-capabilities.json +5 -0
- package/cli-installation-guide.md +24 -3
- package/dist/{auth-RQBO6MTY.js → auth-YEIJLBFY.js} +61 -19
- package/dist/{automation-VAAQBM7Y.js → automation-NAR5DDGL.js} +94 -38
- package/dist/{capability-JRIFC4AJ.js → capability-P7DD4Q73.js} +50 -21
- package/dist/{chunk-5XJYLEVC.js → chunk-72NJKS7O.js} +4 -4
- package/dist/chunk-752BSLZC.js +222 -0
- package/dist/{chunk-RGYPSEYD.js → chunk-7ABK2PEJ.js} +3 -3
- package/dist/{chunk-Q5US7JC5.js → chunk-7JAVT5TK.js} +3 -3
- package/dist/{chunk-GHXZK54S.js → chunk-H3K5UGYC.js} +41 -13
- package/dist/{chunk-OP44TT4H.js → chunk-IN7KKL6K.js} +4 -2
- package/dist/{chunk-VZZNLV3I.js → chunk-JCWM2TYP.js} +61 -15
- package/dist/{chunk-S6M42KND.js → chunk-JEUXDY3B.js} +1 -1
- package/dist/{chunk-ZL7SGNIA.js → chunk-JNVVJ273.js} +58 -46
- package/dist/chunk-N6XBLRB7.js +105 -0
- package/dist/{chunk-AP7YP2NX.js → chunk-OAWPT7VP.js} +2 -2
- package/dist/{chunk-7KU2WNQE.js → chunk-QEMQKVHW.js} +37 -15
- package/dist/{chunk-CT7QDJS6.js → chunk-QVRIDN42.js} +2 -2
- package/dist/{chunk-RPBOAQQQ.js → chunk-QZUVLFNR.js} +1 -1
- package/dist/{chunk-3YVEAZUN.js → chunk-RJHGDWSC.js} +32 -21
- package/dist/{chunk-374V5R6N.js → chunk-TKVVACEJ.js} +6 -4
- package/dist/chunk-TULINOLS.js +2283 -0
- package/dist/chunk-YVG6QD3V.js +233 -0
- package/dist/{chunk-WNGFSIOB.js → chunk-Z3Q2AEIN.js} +237 -86
- package/dist/chunk-ZGIYG473.js +132 -0
- package/dist/{community-report-client-PEERQCX2.js → community-report-client-TJVCLZ3K.js} +1 -1
- package/dist/compat-check-PMEGUPZU.js +32 -0
- package/dist/{config-SICKWZ2A.js → config-VWVPR4WW.js} +43 -10
- package/dist/{context-NGVFPCBK.js → context-F6FCGTF3.js} +4 -4
- package/dist/{data-integration-BCLQFTGU.js → data-integration-6UAZO4GG.js} +207 -24
- package/dist/evaluation-4LO2O4AF.js +3714 -0
- package/dist/index.js +343 -79
- package/dist/{local-data-upload-client-TWMHFLUA.js → local-data-upload-client-KCMG6J62.js} +1 -1
- package/dist/{memory-CQKH2JAV.js → memory-HHPX3NF2.js} +6 -6
- package/dist/{metadata-EMFGUI2W.js → metadata-HEQQEEG3.js} +17 -9
- package/dist/{model-VX5M2CJ6.js → model-7UHGWYVR.js} +4 -4
- package/dist/{personal-semantic-preference-SLWVVYZ4.js → personal-semantic-preference-V4L6ZWR2.js} +7 -6
- package/dist/{project-semantic-DPSZBKQD.js → project-semantic-NKHKJX6M.js} +7 -6
- package/dist/{sync-RZIAV37C.js → sync-ZJMXCRIN.js} +8 -7
- package/dist/{te-agent-AORRE2FM.js → te-agent-WBKIFEQD.js} +757 -94
- package/dist/{te-analysis-ISXKJKRT.js → te-analysis-ADX7RKO4.js} +578 -94
- package/dist/{te-community-42M7ICDO.js → te-community-PREDRXG3.js} +722 -228
- package/dist/{te-dataops-BNKNZ4F2.js → te-dataops-ITWJHO2U.js} +9 -6
- package/dist/{te-engage-BZE3MBKT.js → te-engage-VE2NUH5V.js} +7 -6
- package/dist/{te-kb-ULATOTQ3.js → te-kb-WSMOW7WS.js} +407 -83
- package/dist/{te-system-UGHVKBVV.js → te-system-YM657FKO.js} +6 -6
- package/dist/{te-team-YA6SNOJ3.js → te-team-T2WRLOOD.js} +64 -41
- package/dist/{things-DTCOQIQB.js → things-6QOMFXOG.js} +7 -7
- package/dist/{update-ESNYKUVR.js → update-I4MOUYOX.js} +11 -7
- package/dist/{workspace-JEOHKFPX.js → workspace-LYDAP647.js} +6 -6
- package/package.json +25 -11
- package/skills/ae-agent/SKILL.md +20 -3
- package/skills/ae-agent/references/command_index.md +8 -0
- package/skills/ae-agent/references/resource-package.md +57 -0
- package/skills/ae-analysis/SKILL.md +23 -10
- package/skills/ae-analysis/references/adhoc_export.md +1 -1
- package/skills/ae-analysis/references/agent_review_preflight.md +55 -10
- package/skills/ae-analysis/references/agent_review_priorities_comparisons.md +5 -3
- package/skills/ae-analysis/references/agent_review_submit_to_page.md +60 -24
- package/skills/ae-analysis/references/ai_models/event.md +58 -2
- package/skills/ae-analysis/references/ai_models/rank_list.md +1 -0
- package/skills/ae-analysis/references/ai_models/retention.md +2 -0
- package/skills/ae-analysis/references/ai_models/revenue.md +2 -0
- package/skills/ae-analysis/references/analysis_data_export.md +11 -1
- package/skills/ae-analysis/references/asset_batch_info_export.md +2 -2
- package/skills/ae-analysis/references/asset_batch_sql_export.md +2 -2
- package/skills/ae-analysis/references/asset_export.md +1 -1
- package/skills/ae-analysis/references/bi_panel_page_data_export.md +1 -1
- package/skills/ae-analysis/references/check_export.md +1 -1
- package/skills/ae-analysis/references/command_index.md +39 -26
- package/skills/ae-analysis/references/dashboard_report_data_export.md +2 -0
- package/skills/ae-analysis/references/dashboard_report_get.md +6 -2
- package/skills/ae-analysis/references/dashboard_report_update.md +24 -5
- package/skills/ae-analysis/references/feedback_submit.md +1 -1
- package/skills/ae-analysis/references/governance_recommendation_export.md +40 -18
- package/skills/ae-analysis/references/governance_recommendation_run_update.md +13 -0
- package/skills/ae-analysis/references/live_data_export.md +1 -1
- package/skills/ae-analysis/references/metric_create.md +29 -0
- package/skills/ae-analysis/references/metric_get.md +2 -0
- package/skills/ae-analysis/references/metric_update.md +2 -0
- package/skills/ae-analysis/references/operation_record_export.md +1 -1
- package/skills/ae-analysis/references/plan_change_log_export.md +1 -1
- package/skills/ae-analysis/references/plan_export.md +1 -1
- package/skills/ae-analysis/references/project_info_get.md +4 -0
- package/skills/ae-analysis/references/project_member_group_add_members.md +35 -0
- package/skills/ae-analysis/references/project_member_group_create.md +25 -0
- package/skills/ae-analysis/references/project_member_group_delete.md +34 -0
- package/skills/ae-analysis/references/project_member_group_list.md +29 -0
- package/skills/ae-analysis/references/project_member_group_members.md +28 -0
- package/skills/ae-analysis/references/project_member_group_remove_members.md +35 -0
- package/skills/ae-analysis/references/project_member_group_rename.md +26 -0
- package/skills/ae-analysis/references/project_semantic_knowledge_wiki.md +9 -1
- package/skills/ae-analysis/references/project_semantic_knowledge_wiki_plan_schema.md +6 -1
- package/skills/ae-analysis/references/report_data_export.md +1 -1
- package/skills/ae-analysis/references/scenario_append.md +31 -0
- package/skills/ae-analysis/references/scenario_begin.md +11 -0
- package/skills/ae-analysis/references/scenario_collect.md +43 -0
- package/skills/ae-analysis/references/scenario_evaluation.md +18 -0
- package/skills/ae-analysis/references/scenario_get.md +15 -0
- package/skills/ae-analysis/references/scenario_list.md +64 -0
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/build-project-semantic-wiki.mjs +73 -4
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/company-kb.mjs +14 -1
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/default-compile-schema.md +5 -1
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/execution-contract.mjs +173 -0
- package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/generate-build-ir.mjs +109 -64
- package/skills/ae-automation/SKILL.md +2 -2
- package/skills/ae-automation/references/cli.md +18 -1
- package/skills/ae-capability/SKILL.md +7 -3
- package/skills/ae-community/SKILL.md +77 -27
- package/skills/ae-community/references/community-analyzing-theme-comment.md +10 -8
- package/skills/ae-community/references/community-data-quality.md +68 -0
- package/skills/ae-community/references/community-query-evidence.md +85 -0
- package/skills/ae-community/references/community-scenario-capabilities.md +137 -0
- package/skills/ae-community/references/community-weekly-report.md +6 -3
- package/skills/ae-community/references/get_channel_info.md +7 -4
- package/skills/ae-community/references/get_comment_tag_analysis.md +3 -3
- package/skills/ae-community/references/get_comments_summary.md +4 -4
- package/skills/ae-community/references/get_corpus_tags.md +3 -3
- package/skills/ae-community/references/get_daily_summary.md +3 -3
- package/skills/ae-community/references/get_hot_topics.md +3 -3
- package/skills/ae-community/references/get_livestream_analysis.md +3 -3
- package/skills/ae-community/references/get_livestream_detail.md +4 -4
- package/skills/ae-community/references/get_livestream_list.md +3 -3
- package/skills/ae-community/references/get_livestream_overview.md +3 -3
- package/skills/ae-community/references/get_livestream_room_metrics.md +3 -3
- package/skills/ae-community/references/get_livestream_rooms.md +3 -3
- package/skills/ae-community/references/get_overview_metrics.md +3 -3
- package/skills/ae-community/references/get_post_detail.md +4 -4
- package/skills/ae-community/references/get_risk_content.md +5 -5
- package/skills/ae-community/references/get_sentiment_overview.md +4 -4
- package/skills/ae-community/references/get_tag_trends.md +3 -3
- package/skills/ae-community/references/get_topic_detail.md +3 -3
- package/skills/ae-community/references/list_sources.md +28 -0
- package/skills/ae-community/references/list_spaces.md +39 -0
- package/skills/ae-community/references/search_posts.md +21 -7
- package/skills/ae-data-integration/SKILL.md +6 -4
- package/skills/ae-data-integration/references/error-handling.md +1 -0
- package/skills/ae-data-integration/references/handoff.md +1 -1
- package/skills/ae-data-integration/references/sink-upload.md +11 -0
- package/skills/ae-data-integration/references/source-inspect.md +2 -1
- package/skills/ae-data-integration/references/transform.md +1 -1
- package/skills/ae-data-integration/references/ue-mapping.md +1 -1
- package/skills/ae-evaluation/SKILL.md +83 -0
- package/skills/ae-evaluation/references/access-and-members.md +55 -0
- package/skills/ae-evaluation/references/connections.md +78 -0
- package/skills/ae-evaluation/references/datasets.md +57 -0
- package/skills/ae-evaluation/references/evaluators.md +81 -0
- package/skills/ae-evaluation/references/files.md +33 -0
- package/skills/ae-evaluation/references/integrations.md +39 -0
- package/skills/ae-evaluation/references/runs.md +160 -0
- package/skills/ae-evaluation/references/schedules.md +31 -0
- package/skills/ae-kb/SKILL.md +33 -6
- package/skills/ae-kb/references/publication.md +81 -0
- package/skills/ae-kb/references/query-workflow.md +14 -1
- package/skills/ae-metadata/SKILL.md +3 -2
- package/skills/ae-metadata/references/metadata_data_table_download.md +7 -1
- package/skills/ae-metadata/references/metadata_data_table_get.md +37 -0
- package/skills/ae-team/SKILL.md +2 -2
- package/skills/ae-team/references/run-start.md +1 -0
- package/skills/ae-team/references/run-watch.md +7 -5
- package/skills/ae-things/SKILL.md +53 -51
- package/skills/ae-things/references/cli.md +56 -54
- package/skills/ae-things-progress/SKILL.md +20 -20
- package/skills/ae-things-review/SKILL.md +19 -19
- package/dist/chunk-6VNIR4AP.js +0 -1422
- package/dist/chunk-CI24BDR2.js +0 -43
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Sink — resolve destination and upload
|
|
2
2
|
|
|
3
|
+
## Choose the sink path first
|
|
4
|
+
|
|
5
|
+
Two sinks exist, and the choice is the user's — never a default:
|
|
6
|
+
|
|
7
|
+
| Sink | When | Deliverable |
|
|
8
|
+
| --- | --- | --- |
|
|
9
|
+
| RESTful `/sync_json` | one-time / small load | uploads rows to the receiver directly |
|
|
10
|
+
| File / LogBus2 | recurring / high-volume (daily/weekly exports) | `valid.ue.jsonl` written to a watched directory; **never uploads** |
|
|
11
|
+
|
|
12
|
+
Ask the user which one applies before resolving any destination. The user supplying an endpoint/APPID does not settle it — a file that will recur usually belongs on LogBus2, and the same rows must not go through both paths. **File / LogBus2 mode skips the rest of this file:** run `convert` with `--output-dir` pointed at the directory LogBus2 watches, then stop — no endpoint, no APPID, no `upload`.
|
|
13
|
+
|
|
3
14
|
## Resolve the destination
|
|
4
15
|
|
|
5
16
|
Use the current AE CLI project commands; never guess IDs:
|
|
@@ -8,7 +8,7 @@ Confirm:
|
|
|
8
8
|
2. The desired outcome: AE ingestion, local analysis, or help deciding.
|
|
9
9
|
3. For ingestion, the target environment/project if already known.
|
|
10
10
|
|
|
11
|
-
Accept one or more CSV, TSV, TXT, JSON, JSONL (NDJSON), XLS, or
|
|
11
|
+
Accept one or more CSV, TSV, TXT, JSON, JSONL (NDJSON), XLS, XLSX, or Parquet files. CSV/TSV/TXT/JSON/JSONL/XLSX/Parquet have no hard size limit; files over 1 GB print a stderr warning with an estimated processing time and suggest splitting. XLS over 100 MB prints a memory-risk warning (the legacy parser loads the whole workbook, roughly 5-10x file size); XLS over 1 GB is still rejected — convert it to XLSX or split it first.
|
|
12
12
|
|
|
13
13
|
XLSX worksheet recognition matches `<sheet>` and namespaced `<x:sheet>` alike: some cleaning/export tools rewrite the default OOXML namespace as a prefix, and the workbook reads the same either way. The worksheet *row* nodes themselves are still read unprefixed, so a workbook whose row data is also namespaced falls back to CSV.
|
|
14
14
|
|
|
@@ -59,6 +59,7 @@ Summarize both — report the shape of the distribution and the names of the val
|
|
|
59
59
|
- **Summary and total rows** — an exported report ends with a 合计 row, and a grouped one repeats 小计 after every group. Those rows are not observations: uploaded, each becomes an event that never happened whose amount is the whole group's revenue, and profiled, it doubles the column's `sum` and turns its `max` into the total. Nothing in the row itself says so, so inspect flags them under `summary_rows` and warns. Each entry carries `row` (the data-row ordinal, the same numbering `invalid.rows.jsonl` and `--salvage-from` use) and `signals`: `total_label` when a cell reads as a total label (`合计` / `总计` / `小计` / `汇总` as a prefix, `Total` / `Subtotal` / `Sum` as the whole cell), naming the column in `label_column` but never the cell text; `column_total` when a number on that row equals the total of its column's other rows, listing those columns in `total_columns`. A row can raise one signal or both — a labelled group subtotal holds its group's total, not the column's, so only the label fires. Nothing is removed and nothing is changed: `convert` writes these rows as records, and every number reported for their columns counts them, which is exactly why the finding has to be read. There is no flag that drops a data row, because a row labelled `合计` is sometimes a real business record; when the user confirms a row is a total, ask them to remove it from the source file or re-export without it, then inspect again. `convert` repeats the finding in `manifest.output.summary_rows`, since by upload time a subtotal row with a plausible identity and time is indistinguishable from data. This covers every format, `.xls` included — the check reads rows, not worksheet structure.
|
|
60
60
|
- **Repeated business keys** — a customer re-exports a report whose range overlaps the last export, or pastes two sheets together, and the same observation arrives twice. Uploaded, each repeat is a second event: that user's revenue doubles, every funnel counts them twice, and AE appends accepted events with no way to un-send one — so the only place this is fixable is before the upload. Inspect compares each row's business key against the rows before it and reports repeats under `duplicate_keys`, plus a warning. The report carries `key_columns` (the columns actually compared — always read it, since the key is what the finding means), `checked_rows`, `duplicate_groups`, `extra_rows` (surplus records an upload would carry), and `groups`, each with `count`, the data-row `rows` (the numbering `invalid.rows.jsonl` and `--salvage-from` use), and a `key_hash` prefix that distinguishes groups without revealing values — the key's own text is never reported. `groups_truncated` / `rows_truncated` mean the list is bounded, not that the counts are; `tracking_truncated` means distinct keys outran the scan's budget and there may be more. The key comes from the mapping's identity, time, and event-name columns on `convert`, and from column-name matching on `inspect`; a single column is never a key, so a file with no recognizable time column is not scanned at all (identity alone would call every returning user's second row a repeat). Two limits to state when reporting: values are compared as written, so `2026-03-01 10:00:00` and `2026/03/01 10:00:00` are two different keys and a repeat spelled two ways is missed; and a source's own unique key (an order id) is not compared on unless the mapping names it as identity, time, or event. Nothing is removed — a repeat is sometimes a real pair of records, two order lines in the same checkout second — so ask the user whether the rows are separate observations, and if they are not, have them remove the rows from the source file and inspect again. `convert` repeats the finding in `manifest.output.duplicate_keys`, because by upload time both copies are ordinary valid records; it describes the whole source file even on a `--salvage-from` run, since every valid row of that file ends up in AE. This covers every format, `.xls` included — the check reads rows, not worksheet structure.
|
|
61
61
|
- **TSV / TXT** — `.tsv` and `.tab` use a tab delimiter with no quoting convention; `.txt` and unknown extensions are content-sniffed into CSV, TSV, or NDJSON.
|
|
62
|
+
- **Parquet** — `.parquet` / `.pq` files read through the schema (column names come from the schema, there is no header row), so header/title-row handling never applies. 64-bit integer columns arrive as decimal strings (values beyond 2^53 cannot be a JS number), decimals are rendered with their scale, and timestamp columns follow the file's own semantics: a UTC-adjusted timestamp (`isAdjustedToUTC=true`) is an absolute instant, a naive one (`isAdjustedToUTC=false`, e.g. Trino/Spark wall clocks) is read as a wall-clock string that `source_timezone` then applies. Nested list/struct/map columns are kept nested (inferred `list`/`object`), not flattened. **Directories are not accepted** — `--input-file` takes file paths only, so a partitioned dataset (a directory of `part-*.parquet`) must be expanded into its `.parquet` file list first, then passed as repeated `--input-file` values in a stable order (sort them) so row order is deterministic. **Many files, one profile:** when every input is Parquet and there is more than one file, inspect fully profiles only the first file and verifies the rest against it by footer (column names + Arrow types), returning a `schema_checked` shape with the representative profile plus each file's `row_count` / `size_bytes` — schemas are confirmed identical, not values, so a UTF8 column whose values look numeric/datetime/JSON can still infer differently in another file (rare for one export pipeline; a schema mismatch falls back to profiling every file). **Size:** a Parquet file over 1 GB warns about memory (the reader decodes the whole file), so large files should be split by row group or partition.
|
|
62
63
|
- **Encoding** — text files are auto-detected (UTF-8, GBK, GB2312, Big5, and others); no flag is needed.
|
|
63
64
|
- **Excel date cells** — a cell whose number format is a date or date+time is read as the wall-clock timestamp shown in Excel, not as the Excel serial number stored behind it, so the column infers as `datetime` and can serve as the time field. Inspect lists every such column in a warning. Treat that warning as a question to the user, not as a note: the same column profiled as `number` before this behavior existed, so if any part of this file was already sent to AE, the property may have been received as a number and its type is now locked — it cannot be changed to datetime, and the column has to be re-sent under a new property name. Ask whether the column was uploaded before, and only map it once the user answers. Elapsed-duration formats (`[h]:mm:ss` and the equivalent built-ins) are durations rather than points in time and stay `number`.
|
|
64
65
|
- **Excel formula cells** — a spreadsheet stores a formula and, next to it, the result Excel last computed. That cached result is the value: it is read normally, including a result of `0` or `""`, which are real values and not blanks. This tool never evaluates a formula and never guesses a result, so a cell holding a formula the file never computed has nothing to upload; it is read as missing and counted, as is an Excel error value (`#N/A`, `#DIV/0!`, …). Inspect reports the counts per column in a warning and `convert` repeats them in `manifest.output.unreadable_cells`. Report them: the rows are kept and the record count is unchanged, so this is the only explanation for a column that is empty in AE while the spreadsheet looks full. When a column that matters reads as missing this way, ask the user to recalculate and re-export in Excel, or to export values instead of formulas, before uploading. This covers XLSX; a legacy `.xls` workbook goes through a different parser and is not counted here.
|
|
@@ -29,7 +29,7 @@ Walk the table item by item:
|
|
|
29
29
|
|
|
30
30
|
Before saving, present the complete mapping for a final sign-off on one grouped page — system fields (`#type`/mode, `#account_id`, `#distinct_id`, `#time` + source timezone, `#zone_offset`, `#event_name`, `#ip`/`#uuid`), then the property table (source column → target AE name → type), then excluded columns — and wait for an explicit yes. Never dump the raw mapping JSON at the user.
|
|
31
31
|
|
|
32
|
-
Save the reviewed `ae-data-integration-mapping/v1` JSON to `.ae-cli/data-integration/mapping.json` (project workspace). Convert into a new output directory:
|
|
32
|
+
Save the reviewed `ae-data-integration-mapping/v1` JSON to `.ae-cli/data-integration/mapping.json` (project workspace). Ask the user where the output should land before converting — never pick it silently. Offer the default `.ae-cli/data-integration/runs/<run-id>`; for file / LogBus2 delivery the `--output-dir` must be the directory LogBus2 watches. Convert into a new output directory:
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
35
|
ae-cli data-integration convert \
|
|
@@ -27,7 +27,7 @@ Required structure:
|
|
|
27
27
|
}
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
Use `distinct_id_field` when no account field exists. `mixed` requires `record_type_field`. Track requires `event_name_field` or a reviewed `default_event_name`. `source.format` is one of `csv`, `tsv`, `json`, `jsonl`, `xls`, `xlsx`. For a multi-file template mapping, `source.sha256` may be the wildcard `*`.
|
|
30
|
+
Use `distinct_id_field` when no account field exists. `mixed` requires `record_type_field`. Track requires `event_name_field` or a reviewed `default_event_name`. `source.format` is one of `csv`, `tsv`, `json`, `jsonl`, `xls`, `xlsx`, `parquet`. For a multi-file template mapping, `source.sha256` may be the wildcard `*`.
|
|
31
31
|
|
|
32
32
|
## Record types
|
|
33
33
|
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ae-evaluation
|
|
3
|
+
version: 2.4.5
|
|
4
|
+
description: "Operate the Agent Evaluation (agent-test) platform through ae-cli: manage evaluation assets, configure and run Agent or preset-output evaluations, and analyze results. Use for platform evaluation tasks and their model, credential, integration, or schedule setup."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# ae-evaluation
|
|
8
|
+
|
|
9
|
+
Use `ae-cli evaluation +<command> [options]` for existing operations and the resource commands below for new capabilities. All 121 commands target the Agent Evaluation platform.
|
|
10
|
+
AE Agent resource management belongs to `ae-agent`; this skill manages evaluation assets and agents under test.
|
|
11
|
+
|
|
12
|
+
## Read only the relevant reference
|
|
13
|
+
|
|
14
|
+
Before executing a command, read the reference for the operation. Do not load all references.
|
|
15
|
+
References contain command inputs, JSON contracts, and task-specific workflows; use command `--help` for additional flags.
|
|
16
|
+
|
|
17
|
+
| Task | Reference |
|
|
18
|
+
|---|---|
|
|
19
|
+
| Create/import datasets, manage fields and cases, publish versions | [datasets.md](references/datasets.md) |
|
|
20
|
+
| Configure LLM judges/templates, publish evaluator versions, calibrate or optimize prompts | [evaluators.md](references/evaluators.md) |
|
|
21
|
+
| Create/configure/start/retry/cancel runs, inspect results/traces, export results | [runs.md](references/runs.md) |
|
|
22
|
+
| Configure/test models and agents, manage credentials | [connections.md](references/connections.md) |
|
|
23
|
+
| Change resource visibility or administer project members | [access-and-members.md](references/access-and-members.md) |
|
|
24
|
+
| Download imported/exported files to disk | [files.md](references/files.md) |
|
|
25
|
+
| Create/update/delete recurring evaluation schedules | [schedules.md](references/schedules.md) |
|
|
26
|
+
| Connect/import AI Monitor data, configure TE reporting, discover TE Claude catalog | [integrations.md](references/integrations.md) |
|
|
27
|
+
|
|
28
|
+
## Endpoint and authentication
|
|
29
|
+
|
|
30
|
+
- In both personal terminals and AE sandboxes, evaluation commands default to the current AE Host and call `<current-host>/agenteval/api/v1/...` (an optional trailing `/agent` is removed from the host). Use `--host` to select another AE Host. Evaluation requests use the HTTP or HTTPS scheme configured for that AE Host, consistent with other AE commands. Legacy `--endpoint` and `AE_EVAL_BASE_URL` values may only match the current AE Host; other values fail before credentials are sent. Remove these settings and use `--host` to select a host.
|
|
31
|
+
- Session exchange and evaluation requests reject redirects; session exchange has a 30-second timeout.
|
|
32
|
+
- Path resource IDs must contain only letters, digits, hyphens, or underscores; separators and URL escape syntax are rejected locally.
|
|
33
|
+
- Use the online platform. Do not suggest localhost/loopback endpoints or obtain tokens from a local `agent-test/.env`.
|
|
34
|
+
- Authentication uses `AE_EVAL_ACCESS_TOKEN` when explicitly set; it is sent only as `Authorization: Bearer` and must never appear in command arguments or output.
|
|
35
|
+
- In an AE sandbox, when `AE_EVAL_ACCESS_TOKEN` is unset, ae-cli automatically exchanges the sandbox-provisioned `cli-token` through te-claude for a short-lived evaluation session. The CLI token is never sent to Agent Evaluation. If the token can access multiple TE projects, set `AE_EVAL_TE_PROJECT_ID` to the authorized TE project id.
|
|
36
|
+
- Outside a sandbox, obtain a session token through the platform web console (`sessionStorage.getItem('agent.evaluation.session-token')`) or `POST /agenteval/api/v1/auth/session`. An unset token produces `EVAL_ACCESS_TOKEN_MISSING`.
|
|
37
|
+
- Successful commands return JSON by default; use the actual error envelope to diagnose failures.
|
|
38
|
+
|
|
39
|
+
## IDs, versions, and mutations
|
|
40
|
+
|
|
41
|
+
- Discover real IDs with list/get commands. UUIDs are version-7 strings; never guess IDs, JSON payload shapes, frequency fields, or `lock_version` values.
|
|
42
|
+
- Published dataset, evaluator, and evaluation-task versions are immutable and separate from drafts. Runs and schedules pin versions; existing published versions cannot be overwritten. Publishing unchanged assets returns `ASSET_VERSION_NO_CHANGES`.
|
|
43
|
+
- Read operations can run once inputs are known. Writes require user intent; high-risk operations retain confirmation unless the user authorizes bypassing it with `--yes`.
|
|
44
|
+
- Credential enabling/disabling, run cancellations, deletes, ownership transfers, template disabling, access-scope changes, and member admission/permission changes are high-risk writes. Check command help for risk and role requirements; references identify ADMIN-only operations.
|
|
45
|
+
- Before each mutation requiring `--lock-version`, read the current resource. Every successful mutation increments its version; re-read before the next mutation.
|
|
46
|
+
- Use the corresponding get command for runs, datasets, evaluators, models, agents, credentials, dataset cases, TE report config, and AI Monitor connection. Schedules use `+list_schedules`; calibration cases use `+list_calibration_cases`.
|
|
47
|
+
- Field mutations use the dataset version; case mutations use the case version. First creation of TE report config or AI Monitor connection omits `--lock-version`; updates require the current value, including 0.
|
|
48
|
+
- Async dataset imports, evaluation-set imports, and result exports require a fresh unique `--idempotency-key` per attempt. Poll the relevant status until completion; resource creation alone does not establish readiness.
|
|
49
|
+
- Prefer `--dry-run` before broad/destructive writes whose targets have not been validated. It previews the request without executing it.
|
|
50
|
+
- Evaluation errors redact the submitted credential values and session tokens; server-provided error messages and hints are not persisted in CLI logs. Stable business error codes are preserved unchanged; non-sensitive diagnostics remain available in the JSON error envelope.
|
|
51
|
+
- Case data is redacted from command logs for both single-case and batch writes. Sensitive JSON parse failures report the flag and syntax guidance without echoing the input.
|
|
52
|
+
- Credential secrets are write-only. Never echo secrets, session claims, or sensitive trace evidence; use redacted dry-run output.
|
|
53
|
+
|
|
54
|
+
## Evaluation lifecycle
|
|
55
|
+
|
|
56
|
+
1. Select a published dataset version with `+list_dataset_versions`.
|
|
57
|
+
2. Choose `LIVE_AGENT` (default) to call an Agent/model, or `PRESET_RESULT` to score outputs stored in the dataset. PRESET_RESULT must omit agent/model config IDs. `IMPORTED_OUTPUT` is legacy data only; never recommend it.
|
|
58
|
+
3. Create a draft run, bind at least one ACTIVE evaluator (prefer pinned published versions), and configure complete field mapping plus result filter fields. An explicit empty result filter is required when no fields are selected.
|
|
59
|
+
4. Prefer `+validate_run` before starting. It runs the start preflight without a body or lock version. Read the latest run, then `+start_run` with its current lock version.
|
|
60
|
+
5. Inspect overview/distribution, drill into cases, and use the run reference for retry, trace, and export semantics.
|
|
61
|
+
|
|
62
|
+
Read [runs.md](references/runs.md) for the executable sequence and mapping examples. Setup of datasets, evaluators, or connections needs only the matching reference above.
|
|
63
|
+
|
|
64
|
+
## Transport transition
|
|
65
|
+
|
|
66
|
+
The existing platform contract exposes REST operations rather than evaluation
|
|
67
|
+
capabilities registered in this repository. New commands retain that transport
|
|
68
|
+
for typed input, permission confirmation, and file handling. They are Transitional;
|
|
69
|
+
see the matching references for migration records. Check deployment Gateway
|
|
70
|
+
coverage before extending these commands; prefer existing equivalent capabilities.
|
|
71
|
+
|
|
72
|
+
Transition status: transitional
|
|
73
|
+
Owning module: Agent Evaluation (agent-test)
|
|
74
|
+
Current transport: authenticated REST /agenteval/api/v1
|
|
75
|
+
Gateway target: TBD (evaluation capability registration)
|
|
76
|
+
Review after: 2027-01-21
|
|
77
|
+
Exit condition: once equivalent evaluation capabilities are available, migrate
|
|
78
|
+
selected typed/file commands to L2 or replace simple wrappers with L3; retain
|
|
79
|
+
existing + commands only where compatibility or orchestration justifies them.
|
|
80
|
+
|
|
81
|
+
This record also applies to the locale and process-evidence updates in the
|
|
82
|
+
existing evaluator/run references. It is a migration plan, not a claim that a
|
|
83
|
+
particular deployed Gateway has been inspected.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Resource visibility and project members
|
|
2
|
+
|
|
3
|
+
Read [SKILL.md](../SKILL.md) for authentication and mutation rules. These commands
|
|
4
|
+
require administrator privileges (`root` or `agent_admin`). Permission changes
|
|
5
|
+
are high-risk writes; retain confirmation unless the user authorizes `--yes`.
|
|
6
|
+
|
|
7
|
+
## Resource visibility
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
ae-cli evaluation dataset access-scope --id <dataset-uuid> --access-scope COMPANY --lock-version <n>
|
|
11
|
+
ae-cli evaluation evaluator access-scope --id <evaluator-uuid> --access-scope COMPANY --lock-version <n>
|
|
12
|
+
ae-cli evaluation model-config access-scope --id <model-config-uuid> --access-scope PERSONAL --lock-version <n>
|
|
13
|
+
ae-cli evaluation agent access-scope --id <agent-uuid> --access-scope PERSONAL --lock-version <n>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Read the current resource with its `+get_*` command before changing it. Each
|
|
17
|
+
successful mutation increments `lock_version`. PERSONAL and COMPANY are mutable;
|
|
18
|
+
SYSTEM resources are read-only. COMPANY sharing stays within the authenticated
|
|
19
|
+
project/tenant. Shared assets cannot depend on personal configurations or
|
|
20
|
+
credentials (`ACCESS_SCOPE_DEPENDENCY_PRIVATE`); inspect dependencies rather
|
|
21
|
+
than silently broadening their visibility. Ordinary model/Agent creation produces
|
|
22
|
+
personal resources and is not restricted to administrators by its create route.
|
|
23
|
+
Credential operations and administrative routes remain administrator-only.
|
|
24
|
+
|
|
25
|
+
## Project membership
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
ae-cli evaluation +list_project_members
|
|
29
|
+
ae-cli evaluation project-member list-candidates
|
|
30
|
+
ae-cli evaluation project-member batch-add --members-json '[{"external_id":"<te-id>","display_name":"<name>"}]'
|
|
31
|
+
ae-cli evaluation project-member change-role --id <user-uuid> --role agent_admin
|
|
32
|
+
ae-cli evaluation project-member set-status --id <user-uuid> --status DISABLED
|
|
33
|
+
ae-cli evaluation project-member remove --id <user-uuid>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Discover candidates rather than guessing IDs. Admission takes TE `external_id`;
|
|
37
|
+
role/status/removal take the project member's `user_id` UUID from
|
|
38
|
+
`+list_project_members`. Batch admission returns added/skipped counts and skips
|
|
39
|
+
existing members. These routes do not accept `lock_version`.
|
|
40
|
+
|
|
41
|
+
Roles are `root`, `agent_admin`, and `member`; change-role accepts only
|
|
42
|
+
`agent_admin|member`. Root members are protected. `set-status` accepts
|
|
43
|
+
`ACTIVE|DISABLED` and affects login across all projects in the tenant. `remove`
|
|
44
|
+
revokes only the current project's membership, including subsequent TE login
|
|
45
|
+
and refresh, until explicitly re-added. Never describe disabling a login as
|
|
46
|
+
merely removing it from one project.
|
|
47
|
+
|
|
48
|
+
Transition status: transitional
|
|
49
|
+
Owning module: Agent Evaluation accessscope and membership
|
|
50
|
+
Current transport: authenticated REST /agenteval/api/v1
|
|
51
|
+
Gateway target: TBD (evaluation access-scope and member administration)
|
|
52
|
+
Review after: 2027-01-21
|
|
53
|
+
Exit condition: when equivalent capabilities exist, migrate typed permission
|
|
54
|
+
commands to L2 where confirmation and typed validation add value; use L3 for
|
|
55
|
+
simple discovery operations and remove duplicate Transitional routes.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Models, agents, and credentials
|
|
2
|
+
|
|
3
|
+
Commands use `ae-cli evaluation +<command>`. Read the shared endpoint, authentication, and mutation rules in [SKILL.md](../SKILL.md). Use command `--help` for optional flags.
|
|
4
|
+
|
|
5
|
+
### Model configs
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
ae-cli evaluation +list_model_configs
|
|
9
|
+
ae-cli evaluation +get_model_config --id <model-config-uuid>
|
|
10
|
+
ae-cli evaluation +create_model_config --name "<name>" --provider OPENAI_COMPATIBLE_CHAT|ANTHROPIC_CHAT|GEMINI_CHAT|AZURE_OPENAI_CHAT|TE_CLAUDE_WEB \
|
|
11
|
+
--model-name "<model>" --base-url "<url>" [--parameters-json '<json>'] [--capabilities-json '<json>'] [--credential-id <uuid>]
|
|
12
|
+
ae-cli evaluation +update_model_config --id <model-config-uuid> [same fields as +create_model_config] --lock-version <n>
|
|
13
|
+
ae-cli evaluation +delete_model_config --id <model-config-uuid> --lock-version <n>
|
|
14
|
+
ae-cli evaluation +test_model_config_connectivity --id <model-config-uuid>
|
|
15
|
+
ae-cli evaluation +transfer_model_config_owner --id <model-config-uuid> --owner-user-id <user-uuid> --lock-version <n>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
- `--capabilities-json` must set `chat_completions: true` and `max_context_tokens >= 1`, otherwise `MODEL_CONFIG_INVALID`.
|
|
19
|
+
- Use `MODEL_PARAMETERS_V2` for new model configs. It omits `max_output_tokens`; output limits are controlled by the provider. Historical frozen snapshots may still contain V1.
|
|
20
|
+
- `+update_model_config` is full-replace: `+get_model_config` first and pass every field back.
|
|
21
|
+
- The platform validates outbound reachability at create time; unreachable base URLs are rejected.
|
|
22
|
+
|
|
23
|
+
### Agents
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
ae-cli evaluation +list_agents
|
|
27
|
+
ae-cli evaluation +get_agent --id <agent-uuid>
|
|
28
|
+
ae-cli evaluation +create_agent --name "<name>" --endpoint-url "<url>" \
|
|
29
|
+
--input-schema-json '{"schema_version":"AGENT_INPUT_SCHEMA_V1","type":"object","properties":{...},"required":[...]}' \
|
|
30
|
+
--config-json '<AGENT_CONFIG_V* json>' \
|
|
31
|
+
[--connector-type HTTP_JSON_V1|OPENCODE_SERVER|OPENCLAW_GATEWAY_V1|HERMES_RUNS_V1|TE_CLAUDE_WEB_V1] [--credential-id <uuid>]
|
|
32
|
+
ae-cli evaluation +update_agent --id <agent-uuid> [same fields as +create_agent] --lock-version <n>
|
|
33
|
+
ae-cli evaluation +delete_agent --id <agent-uuid> --lock-version <n>
|
|
34
|
+
ae-cli evaluation +test_agent_connectivity --id <agent-uuid>
|
|
35
|
+
ae-cli evaluation +agent_snapshot_preview --id <agent-uuid>
|
|
36
|
+
ae-cli evaluation +transfer_agent_owner --id <agent-uuid> --owner-user-id <user-uuid> --lock-version <n>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
- `--config-json` must match the connector type; use `+get_agent` on a working agent as a template. Hermes direct transport uses `AGENT_CONFIG_V2.config.hermes.transport_mode=DIRECT`; use `+list_te_claude_catalog` to discover TE Claude agent/model ids for `TE_CLAUDE_WEB` configs.
|
|
40
|
+
- Under TE authentication, TE Claude model and agent configs bind the login credential automatically; omit `--credential-id`. The flag remains available for legacy non-TE authentication.
|
|
41
|
+
|
|
42
|
+
### Credentials
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
ae-cli evaluation +list_credentials
|
|
46
|
+
ae-cli evaluation +get_credential --id <credential-uuid>
|
|
47
|
+
ae-cli evaluation +create_credential --name "<name>" --type BEARER_TOKEN|API_KEY_HEADER|AI_MONITOR_SESSION --secret "<secret>" [--header-name "<header>"] \
|
|
48
|
+
[--data-token "<token>"] [--report-source "<source>"]
|
|
49
|
+
ae-cli evaluation +update_credential --id <credential-uuid> --name "<name>" --lock-version <n>
|
|
50
|
+
ae-cli evaluation +rotate_credential --id <credential-uuid> --secret "<new-secret>" --lock-version <n>
|
|
51
|
+
ae-cli evaluation +disable_credential --id <credential-uuid> --lock-version <n>
|
|
52
|
+
ae-cli evaluation +enable_credential --id <credential-uuid> --lock-version <n>
|
|
53
|
+
ae-cli evaluation +delete_credential --id <credential-uuid> --lock-version <n>
|
|
54
|
+
ae-cli evaluation +transfer_credential_owner --id <credential-uuid> --owner-user-id <user-uuid> --lock-version <n>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
- Credential enabling/disabling is high-risk and requires confirmation. Non-interactive calls require explicit authorization and global `--yes`; `--dry-run` remains a local preview.
|
|
58
|
+
- Evaluation error output redacts submitted secrets and session tokens, including JSON-escaped and URL-encoded forms. Remote error messages and hints are not written to CLI logs.
|
|
59
|
+
- Secrets are write-only: sent once on create/rotate, never returned or logged by the CLI.
|
|
60
|
+
- `AI_MONITOR_SESSION` credentials additionally require `--data-token` (max 512) and `--report-source` (max 128); all three are sensitive — dry-run redacts them and they must never be logged.
|
|
61
|
+
|
|
62
|
+
### Bring your own model and agent
|
|
63
|
+
|
|
64
|
+
Credentials are prerequisites for model configs and agents:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
ae-cli evaluation +create_credential --name "my-ark-token" --type BEARER_TOKEN --secret "<secret>"
|
|
68
|
+
ae-cli evaluation +create_model_config --name "my-judge" --provider OPENAI_COMPATIBLE_CHAT \
|
|
69
|
+
--model-name "kimi-k3" --base-url "http://10.0.0.1:3003" \
|
|
70
|
+
--credential-id <credential-uuid> \
|
|
71
|
+
--parameters-json '{"schema_version":"MODEL_PARAMETERS_V2","temperature":0,"top_p":1,"seed":1,"timeout_ms":120000,"max_retries":2,"structured_output":"AUTO"}' \
|
|
72
|
+
--capabilities-json '{"schema_version":"MODEL_CAPABILITIES_V1","chat_completions":true,"json_schema":false,"seed":true,"usage":true,"max_context_tokens":8192}'
|
|
73
|
+
ae-cli evaluation +test_model_config_connectivity --id <model-config-uuid>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
To change one setting (e.g. timeout), `+update_model_config` is full-replace: `+get_model_config`, edit the JSON, pass every field back.
|
|
77
|
+
|
|
78
|
+
Ownership transfers and credential deletion require ADMIN. TE Claude catalog discovery is documented in [integrations.md](integrations.md).
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Datasets
|
|
2
|
+
|
|
3
|
+
Commands use `ae-cli evaluation +<command>`. Read the shared endpoint, authentication, and mutation rules in [SKILL.md](../SKILL.md). Use command `--help` for optional flags.
|
|
4
|
+
|
|
5
|
+
### Datasets
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
ae-cli evaluation +list_datasets [--search <text>] [--status CREATING|READY|IMPORT_FAILED] [--cursor <cursor>] [--page-size 50]
|
|
9
|
+
ae-cli evaluation +get_dataset --id <dataset-uuid>
|
|
10
|
+
ae-cli evaluation +create_dataset --name "<name>" [--description "..."]
|
|
11
|
+
ae-cli evaluation +import_dataset --name "<name>" --file <path> [--profile GENERIC|AGENT_TASK_CASES_V1] [--description "..."] --idempotency-key "<fresh-key>"
|
|
12
|
+
ae-cli evaluation +dataset_import_status --id <dataset-uuid>
|
|
13
|
+
ae-cli evaluation +dataset_import_errors --id <dataset-uuid>
|
|
14
|
+
ae-cli evaluation +update_dataset --id <dataset-uuid> --name "<name>" [--description "..."] --lock-version <n>
|
|
15
|
+
ae-cli evaluation +delete_dataset --id <dataset-uuid> --lock-version <n>
|
|
16
|
+
ae-cli evaluation +transfer_dataset_owner --id <dataset-uuid> --owner-user-id <user-uuid> --lock-version <n>
|
|
17
|
+
ae-cli evaluation +list_dataset_fields --id <dataset-uuid>
|
|
18
|
+
ae-cli evaluation +create_dataset_field --id <dataset-uuid> --display-name "<name>" --data-type TEXT|NUMBER|BOOLEAN|JSON|DATE|TIME
|
|
19
|
+
ae-cli evaluation +batch_create_dataset_fields --id <dataset-uuid> --fields-json '[{"display_name":"Question","data_type":"TEXT"}]'
|
|
20
|
+
ae-cli evaluation +update_dataset_field --id <dataset-uuid> --field-id <field-uuid> --display-name "<name>" [--ordinal 0] --lock-version <n>
|
|
21
|
+
ae-cli evaluation +delete_dataset_field --id <dataset-uuid> --field-id <field-uuid> --lock-version <n>
|
|
22
|
+
ae-cli evaluation +reorder_dataset_fields --id <dataset-uuid> --field-ids '["<uuid-1>","<uuid-2>"]' --lock-version <n>
|
|
23
|
+
ae-cli evaluation +list_dataset_cases --id <dataset-uuid> [--cursor <cursor>] [--page-size 50]
|
|
24
|
+
ae-cli evaluation +get_dataset_case --id <dataset-uuid> --case-id <case-uuid>
|
|
25
|
+
ae-cli evaluation +create_dataset_case --id <dataset-uuid> --data '{"input":"...","expected":"..."}'
|
|
26
|
+
ae-cli evaluation +batch_create_dataset_cases --id <dataset-uuid> --cases-json '[{"data":{"input":"...","expected":"..."}}]'
|
|
27
|
+
ae-cli evaluation +update_dataset_case --id <dataset-uuid> --case-id <case-uuid> --data '{...}' --lock-version <n>
|
|
28
|
+
ae-cli evaluation +delete_dataset_case --id <dataset-uuid> --case-id <case-uuid> --lock-version <n>
|
|
29
|
+
ae-cli evaluation +export_dataset --id <dataset-uuid> --export-format csv|jsonl
|
|
30
|
+
ae-cli evaluation +list_dataset_versions --id <dataset-uuid>
|
|
31
|
+
ae-cli evaluation +publish_dataset_version --id <dataset-uuid> --lock-version <n>
|
|
32
|
+
ae-cli evaluation +get_dataset_version --id <dataset-uuid> --version-id <dataset-version-uuid>
|
|
33
|
+
ae-cli evaluation +list_dataset_references --id <dataset-uuid>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
- `--field-ids` must contain every field UUID exactly once, in the desired order.
|
|
37
|
+
- Case `--data` is keyed by `field_key` from `+list_dataset_fields`. Single-case `--data` and batch `--cases-json` are redacted from command logs. Sensitive JSON parse errors omit input content; successful requests and explicit dry-run previews retain the supplied case data.
|
|
38
|
+
- Batch field creation accepts 1-100 definitions and batch case creation accepts 1-1000 definitions. Each batch is transactional: either every item is created or none are.
|
|
39
|
+
- Field mutations use the dataset lock_version; case mutations use the case lock_version from `+get_dataset_case`.
|
|
40
|
+
|
|
41
|
+
### Import a dataset and wait for readiness
|
|
42
|
+
|
|
43
|
+
Import requires a fresh Idempotency-Key and returns 202 with the created dataset; the pipeline is asynchronous:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
ae-cli evaluation +import_dataset \
|
|
47
|
+
--name "release-checkout" \
|
|
48
|
+
--file ./cases.csv \
|
|
49
|
+
--profile GENERIC \
|
|
50
|
+
--idempotency-key "import-$(date +%s)"
|
|
51
|
+
ae-cli evaluation +dataset_import_status --id <dataset-uuid> # poll until READY
|
|
52
|
+
ae-cli evaluation +dataset_import_errors --id <dataset-uuid> # if IMPORT_FAILED
|
|
53
|
+
ae-cli evaluation +list_dataset_fields --id <dataset-uuid> # field keys for mapping/case data
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Download exported files using [files.md](files.md): poll `+get_file`, then
|
|
57
|
+
`ae-cli evaluation file download --id <file-uuid> --output ./dataset.csv`.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Evaluators and calibration
|
|
2
|
+
|
|
3
|
+
Commands use `ae-cli evaluation +<command>`. Read the shared endpoint, authentication, and mutation rules in [SKILL.md](../SKILL.md). Use command `--help` for optional flags.
|
|
4
|
+
|
|
5
|
+
### Evaluators and templates
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
ae-cli evaluation +list_evaluators [--search <text>] [--cursor <cursor>] [--page-size 50]
|
|
9
|
+
ae-cli evaluation +get_evaluator --id <evaluator-uuid>
|
|
10
|
+
ae-cli evaluation +create_evaluator --name "<name>" [--description "..."] [--category SAFETY] \
|
|
11
|
+
[--prompt "...{{input}} {{output}}..."] [--variables '["input","output"]'] \
|
|
12
|
+
[--model-config-id <uuid>] [--template-code <code>] [--template-locale zh|en]
|
|
13
|
+
ae-cli evaluation +update_evaluator --id <evaluator-uuid> --name "<name>" --model-config-id <uuid> \
|
|
14
|
+
[--description "..."] [--category "..."] [--prompt "..."] [--variables '[...]'] --lock-version <n>
|
|
15
|
+
ae-cli evaluation +delete_evaluator --id <evaluator-uuid> --lock-version <n>
|
|
16
|
+
ae-cli evaluation +transfer_evaluator_owner --id <evaluator-uuid> --owner-user-id <user-uuid> --lock-version <n>
|
|
17
|
+
ae-cli evaluation +list_evaluator_templates [--locale zh|en]
|
|
18
|
+
ae-cli evaluation +create_evaluator_template --name "<name>" --category "<category>" --prompt "<prompt>" [--description "..."] [--variables '[...]']
|
|
19
|
+
ae-cli evaluation +disable_evaluator_template --id <template-uuid>
|
|
20
|
+
ae-cli evaluation evaluator-template enable --id <project-template-uuid>
|
|
21
|
+
ae-cli evaluation +list_evaluator_versions --id <evaluator-uuid>
|
|
22
|
+
ae-cli evaluation +publish_evaluator_version --id <evaluator-uuid> --lock-version <n>
|
|
23
|
+
ae-cli evaluation +get_evaluator_health --id <evaluator-uuid>
|
|
24
|
+
ae-cli evaluation +optimize_evaluator_prompt --model-config-id <uuid> --prompt "<prompt>"
|
|
25
|
+
ae-cli evaluation +list_calibration_suites --id <evaluator-uuid>
|
|
26
|
+
ae-cli evaluation +create_calibration_suite --id <evaluator-uuid> --name "<name>" [--description "..."]
|
|
27
|
+
ae-cli evaluation +list_calibration_cases --id <suite-uuid>
|
|
28
|
+
ae-cli evaluation +create_calibration_case --id <suite-uuid> --variables-json '{...}' --expected-score 0.8 --tolerance 0.1 --tags-json '["golden"]'
|
|
29
|
+
ae-cli evaluation +delete_calibration_case --id <case-uuid> --lock-version <n>
|
|
30
|
+
ae-cli evaluation +start_calibration_run --id <suite-uuid>
|
|
31
|
+
ae-cli evaluation +get_calibration_run --id <calibration-run-uuid>
|
|
32
|
+
ae-cli evaluation +list_calibration_results --id <calibration-run-uuid>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
- `+create_evaluator` without `--model-config-id` creates a draft; binding a model config via `+update_evaluator` activates it.
|
|
36
|
+
- Prompt placeholders `{{name}}` must match `--variables`.
|
|
37
|
+
|
|
38
|
+
### Calibrate an evaluator
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
ae-cli evaluation +list_calibration_suites --id <evaluator-uuid> # use the default suite
|
|
42
|
+
ae-cli evaluation +create_calibration_case --id <suite-uuid> \
|
|
43
|
+
--variables-json '{"input":"...","expected":"..."}' \
|
|
44
|
+
--expected-score 0.8 --tolerance 0.1 \
|
|
45
|
+
--tags-json '["golden"]'
|
|
46
|
+
ae-cli evaluation +start_calibration_run --id <suite-uuid>
|
|
47
|
+
ae-cli evaluation +get_calibration_run --id <calibration-run-uuid> # poll until terminal
|
|
48
|
+
ae-cli evaluation +list_calibration_results --id <calibration-run-uuid>
|
|
49
|
+
ae-cli evaluation +get_evaluator_health --id <evaluator-uuid>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Prompt optimization consumes model quota and returns a preview; it never overwrites the evaluator. Prefer the default calibration suite; create extra suites only for a concrete need. Template creation and disabling require ADMIN.
|
|
53
|
+
|
|
54
|
+
### Template language and process scoring
|
|
55
|
+
|
|
56
|
+
List built-ins with `+list_evaluator_templates --locale en` and create from them
|
|
57
|
+
with `+create_evaluator --template-code <discovered-code> --template-locale en`.
|
|
58
|
+
Both language options accept zh/en and default to zh. Project templates keep
|
|
59
|
+
their original language; an omitted description uses the localized built-in
|
|
60
|
+
description when creating from a built-in. Existing evaluators are unchanged.
|
|
61
|
+
|
|
62
|
+
`TOOL_TRACE_REASONABLENESS` evaluates recorded tool choices, arguments, step
|
|
63
|
+
relationships and evidence consistency using `input`, `output`, `execution_trace`.
|
|
64
|
+
Discover the template and publish/pin its evaluator version. Map execution_trace
|
|
65
|
+
using FIELD_MAPPING_V6 as shown in [runs.md](runs.md); pair it with a task-completion
|
|
66
|
+
evaluator when final-answer quality also matters. `EVALUATOR_VARIABLES_V3` and
|
|
67
|
+
`EVALUATOR_SNAPSHOT_V3` carry the new process-evidence source types. Create/update
|
|
68
|
+
still use the public `--variables` array of names; do not send the versioned
|
|
69
|
+
snapshot object as that flag.
|
|
70
|
+
|
|
71
|
+
`evaluator-template enable` is administrator-only, bodyless and idempotent.
|
|
72
|
+
Only project templates can be re-enabled; built-ins and out-of-scope IDs are not
|
|
73
|
+
found. New evaluators use the latest enabled project template version.
|
|
74
|
+
|
|
75
|
+
Transition status: transitional
|
|
76
|
+
Owning module: Agent Evaluation evaluator templates
|
|
77
|
+
Current transport: authenticated POST /agenteval/api/v1/evaluator-templates/{id}/enable
|
|
78
|
+
Gateway target: TBD (evaluation template lifecycle)
|
|
79
|
+
Review after: 2027-01-21
|
|
80
|
+
Exit condition: replace with L3 when an equivalent capability exists, or retain
|
|
81
|
+
L2 only if typed inputs and compatibility provide additional value.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Download evaluation files
|
|
2
|
+
|
|
3
|
+
Use `ae-cli evaluation file download --id <file-uuid> --output <new-path>`.
|
|
4
|
+
Authentication and endpoint rules are in [SKILL.md](../SKILL.md).
|
|
5
|
+
|
|
6
|
+
1. Queue an export using the dataset or run reference.
|
|
7
|
+
2. Poll `+get_file --id <file-uuid>` until COMPLETED. Resource creation alone is
|
|
8
|
+
not evidence that the file is ready; failed/expired files cannot be downloaded.
|
|
9
|
+
3. Save the attachment:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
ae-cli evaluation file download --id <file-uuid> --output ./results.csv --dry-run
|
|
13
|
+
ae-cli evaluation file download --id <file-uuid> --output ./results.csv
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The authenticated `/files/{id}/content` route works for local and S3 storage.
|
|
17
|
+
The parent directory must exist. The CLI refuses to overwrite an existing path,
|
|
18
|
+
saves with owner-only permissions, removes failed partial output, and returns
|
|
19
|
+
`{path, byte_size}` in its JSON envelope. Bytes are not printed to stdout.
|
|
20
|
+
Dry-run previews the request and destination without opening a file or requesting
|
|
21
|
+
a session. Downloads do not follow redirects or retry automatically.
|
|
22
|
+
|
|
23
|
+
The older `+file_download_url` remains available for temporary URLs, but local
|
|
24
|
+
storage returns a server-local `file://` path. Use `file download` for a remote
|
|
25
|
+
client. Do not print signed URLs or private file content into reports.
|
|
26
|
+
|
|
27
|
+
Transition status: transitional
|
|
28
|
+
Owning module: Agent Evaluation files
|
|
29
|
+
Current transport: authenticated GET /agenteval/api/v1/files/{id}/content
|
|
30
|
+
Gateway target: TBD (evaluation file download capability)
|
|
31
|
+
Review after: 2027-01-21
|
|
32
|
+
Exit condition: migrate to Gateway when authenticated attachment delivery is
|
|
33
|
+
available with equivalent binary output, redaction, and no-overwrite guarantees.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# AI Monitor and TE reporting
|
|
2
|
+
|
|
3
|
+
Commands use `ae-cli evaluation +<command>`. Read the shared endpoint, authentication, and mutation rules in [SKILL.md](../SKILL.md). Use command `--help` for optional flags.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
ae-cli evaluation +get_te_report_config
|
|
7
|
+
ae-cli evaluation +save_te_report_config --base-url "<url>" --app-id "<id>" [--lock-version <n>]
|
|
8
|
+
ae-cli evaluation +get_ai_monitor_connection
|
|
9
|
+
ae-cli evaluation +save_ai_monitor_connection --base-url "<url>" --credential-id <uuid> --session-claims-json '{...}' [--lock-version <n>]
|
|
10
|
+
ae-cli evaluation +verify_ai_monitor_connection
|
|
11
|
+
ae-cli evaluation +import_ai_monitor_traces --name "<name>" --selection-json '{...}' [--idempotency-key "<key>"]
|
|
12
|
+
ae-cli evaluation +list_te_claude_catalog --endpoint-url "<url>" [--credential-id <legacy-uuid>]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
- `+save_te_report_config` / `+save_ai_monitor_connection`: omit `--lock-version` on first create; on update send the current version from the get command (0 is a valid version — never treat it as "unset").
|
|
16
|
+
|
|
17
|
+
- `--session-claims-json` requires string `user_id`, `te_user_id`, `name`, `company_id` (optional `is_root`, `platform_access`); values are redacted in dry-run output and must not be logged.
|
|
18
|
+
- `+list_te_claude_catalog` uses the login access token automatically under TE authentication. Supply `--credential-id` only for legacy non-TE authentication.
|
|
19
|
+
|
|
20
|
+
### Import AI Monitor traces into a dataset
|
|
21
|
+
|
|
22
|
+
The import is asynchronous: the 201 response returns the created dataset and import job — poll `+dataset_import_status` instead of treating creation as completion. `--session-claims-json` and selection content are identity/permission sensitive; never log or echo them.
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
ae-cli evaluation +get_ai_monitor_connection
|
|
26
|
+
ae-cli evaluation +save_ai_monitor_connection \
|
|
27
|
+
--base-url "https://ai-monitor.example.com" \
|
|
28
|
+
--credential-id <ai-monitor-session-credential-uuid> \
|
|
29
|
+
--session-claims-json '{"user_id":"...","te_user_id":"...","name":"...","company_id":"..."}' \
|
|
30
|
+
--lock-version <n>
|
|
31
|
+
ae-cli evaluation +verify_ai_monitor_connection
|
|
32
|
+
ae-cli evaluation +import_ai_monitor_traces \
|
|
33
|
+
--name "ai-monitor-traces" \
|
|
34
|
+
--selection-json '{"mode":"TRACE_IDS","trace_ids":["trace-1"]}' \
|
|
35
|
+
--idempotency-key "aim-$(date +%s)"
|
|
36
|
+
ae-cli evaluation +dataset_import_status --id <dataset-uuid> # poll until READY
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
FILTER mode uses `{"mode":"FILTER","start_time":"<date>","end_time":"<date>"}` with optional `agent`, `channel`, `search_term`. Both dates must be valid calendar dates in `YYYY-MM-DD` format, with `end_time` not preceding `start_time`; impossible dates such as February 30 are rejected locally. TRACE_IDS carries 1-1000 ids.
|