@thinkingai/ae-cli 6.1.28 → 6.1.30
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 +24 -4
- package/README.zh.md +24 -4
- package/bin/ae-cli.js +5 -0
- package/bin/runtime-capabilities.json +5 -0
- package/cli-installation-guide.md +24 -3
- package/dist/{auth-NKD5Z5BQ.js → auth-ADZHUIJR.js} +30 -12
- package/dist/{automation-K32V2NKP.js → automation-FD2QZUP6.js} +6 -6
- package/dist/{capability-4CGSL7PK.js → capability-QXFRJYZD.js} +54 -26
- package/dist/{chunk-P6VFCH3P.js → chunk-2F64AZYH.js} +2 -2
- package/dist/{chunk-LMCYSVVA.js → chunk-4PSTYEG5.js} +50 -41
- package/dist/{chunk-KHS64JZQ.js → chunk-72NJKS7O.js} +4 -4
- package/dist/chunk-AVXDJAFC.js +132 -0
- package/dist/{chunk-GI5BMEZO.js → chunk-AWVZTN2B.js} +1 -1
- package/dist/chunk-CG773QXN.js +2289 -0
- package/dist/{chunk-UUD5RB36.js → chunk-E25OSZLJ.js} +3 -3
- package/dist/{chunk-UF244C5C.js → chunk-EUFP4M2A.js} +7 -7
- package/dist/{chunk-QW3R6O7L.js → chunk-HRUOV6EQ.js} +57 -15
- package/dist/{chunk-T44M3PLZ.js → chunk-JEUXDY3B.js} +1 -1
- package/dist/{chunk-2UWS5CUP.js → chunk-JSBLCLFE.js} +3 -3
- package/dist/{chunk-QSAR3GHY.js → chunk-OAWPT7VP.js} +2 -2
- package/dist/{chunk-2IYIYSUO.js → chunk-QVRIDN42.js} +2 -2
- package/dist/{chunk-P7KL7IOH.js → chunk-SOSFRU3O.js} +2 -2
- package/dist/{chunk-GTPWDLTE.js → chunk-TFORY6WY.js} +35 -14
- package/dist/{chunk-JJJIP2XQ.js → chunk-VDICGXCY.js} +2 -2
- package/dist/{chunk-UJ7UPRXK.js → chunk-Y3AM6LIO.js} +10 -8
- package/dist/chunk-YULUBP3R.js +222 -0
- package/dist/{chunk-X7DRLE62.js → chunk-YVG6QD3V.js} +1 -1
- package/dist/{chunk-ZW4VMY5H.js → chunk-Z3Q2AEIN.js} +152 -98
- package/dist/{community-report-client-S2K3A3Q6.js → community-report-client-TJVCLZ3K.js} +1 -1
- package/dist/compat-check-HERBTQZN.js +32 -0
- package/dist/{config-ASSAAIOI.js → config-E3KANXMK.js} +38 -6
- package/dist/{context-6RWLVOM5.js → context-CDB5H5PD.js} +4 -4
- package/dist/{data-integration-EXSUPUDZ.js → data-integration-QE37EQ3A.js} +207 -24
- package/dist/{evaluation-5YT4QLCL.js → evaluation-LR4YDYWL.js} +4 -4
- package/dist/index.js +297 -70
- package/dist/{local-data-upload-client-7HCPGIS3.js → local-data-upload-client-KCMG6J62.js} +1 -1
- package/dist/{memory-VCYLVPMI.js → memory-SNFR5M23.js} +6 -6
- package/dist/{metadata-YGI5M6OF.js → metadata-EXQYDZTH.js} +16 -8
- package/dist/{model-DPJHSD73.js → model-KEVCEXWD.js} +4 -4
- package/dist/{personal-semantic-preference-76TBKAPY.js → personal-semantic-preference-ETY3KU2O.js} +7 -6
- package/dist/{project-semantic-XOEBO2Q5.js → project-semantic-UHRMVOJF.js} +11 -10
- package/dist/{sync-7PP6KQ75.js → sync-XKEBXESC.js} +8 -7
- package/dist/{te-agent-PJVAPKBD.js → te-agent-S6UQR4IE.js} +11 -7
- package/dist/{te-analysis-OX62G5VD.js → te-analysis-WOFFCIBC.js} +185 -33
- package/dist/{te-community-QN3WMPNT.js → te-community-R7B6QYOO.js} +720 -228
- package/dist/{te-dataops-UKD2XN3E.js → te-dataops-KPILYVHA.js} +6 -5
- package/dist/{te-engage-X3DIXPRA.js → te-engage-IAUM6ONX.js} +13 -12
- package/dist/{te-experiment-MEIIK3DP.js → te-experiment-TMLRA7B3.js} +55 -21
- package/dist/{te-kb-73EWDFDF.js → te-kb-GKWPSLSY.js} +409 -85
- package/dist/{te-system-IE7NCKC3.js → te-system-CYWSK3UN.js} +6 -6
- package/dist/{te-team-MGQ5CNRW.js → te-team-ISN52YNG.js} +7 -6
- package/dist/{things-4JIBCA55.js → things-DDQ52Z3Q.js} +7 -7
- package/dist/{update-AX66IFMJ.js → update-CTLNTX35.js} +11 -7
- package/dist/{workspace-Q5NMEKEN.js → workspace-2CKQX2XL.js} +6 -6
- package/package.json +17 -7
- package/skills/ae-agent/references/resource-package.md +4 -0
- package/skills/ae-analysis/SKILL.md +14 -10
- package/skills/ae-analysis/references/agent_review_preflight.md +52 -11
- package/skills/ae-analysis/references/agent_review_priorities_comparisons.md +5 -3
- package/skills/ae-analysis/references/agent_review_submit_to_page.md +57 -25
- package/skills/ae-analysis/references/command_index.md +7 -3
- package/skills/ae-analysis/references/governance_recommendation_export.md +31 -17
- package/skills/ae-analysis/references/governance_recommendation_run_update.md +13 -0
- package/skills/ae-analysis/references/project_semantic_knowledge_wiki.md +9 -1
- package/skills/ae-analysis/references/scenario_append.md +6 -0
- package/skills/ae-analysis/references/scenario_begin.md +11 -0
- package/skills/ae-analysis/references/scenario_collect.md +10 -2
- package/skills/ae-analysis/references/scenario_evaluation.md +6 -18
- 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/company-kb.mjs +14 -1
- 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-experiment/SKILL.md +7 -1
- package/skills/ae-experiment/references/manage_experiment.md +18 -1
- package/skills/ae-experiment/references/query_experiment_detail.md +7 -0
- package/skills/ae-experiment/references/save_experiment.md +76 -2
- package/skills/ae-experiment/references/save_submit_experiment.md +7 -0
- package/skills/ae-kb/SKILL.md +37 -8
- package/skills/ae-kb/references/publication.md +81 -0
- package/skills/ae-kb/references/query-workflow.md +20 -6
- package/skills/ae-kb-discovery/SKILL.md +15 -6
- package/skills/ae-metadata/SKILL.md +2 -2
- package/skills/ae-metadata/references/metadata_data_table_get.md +35 -0
- package/dist/chunk-ELCR235M.js +0 -1429
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
require_archiver
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-OAWPT7VP.js";
|
|
5
|
+
import "./chunk-JEUXDY3B.js";
|
|
6
6
|
import {
|
|
7
7
|
TeAgentApiError,
|
|
8
8
|
deleteFromMainApp,
|
|
@@ -12,19 +12,19 @@ import {
|
|
|
12
12
|
postToMainApp,
|
|
13
13
|
putToMainApp,
|
|
14
14
|
uploadToMainApp
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-JSBLCLFE.js";
|
|
16
16
|
import "./chunk-Y74WTIKJ.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-SOSFRU3O.js";
|
|
18
18
|
import {
|
|
19
19
|
isAeSandboxRuntime,
|
|
20
20
|
readSandboxCliTokenEntry,
|
|
21
21
|
safeJsonParse
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-4PSTYEG5.js";
|
|
23
23
|
import {
|
|
24
24
|
CliValidationError,
|
|
25
25
|
PermissionError,
|
|
26
26
|
__toESM
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-Z3Q2AEIN.js";
|
|
28
28
|
|
|
29
29
|
// src/commands/te-system/shared.ts
|
|
30
30
|
import { readFileSync } from "fs";
|
|
@@ -2,19 +2,20 @@ import { createRequire as __createRequire } from 'node:module'; const require =
|
|
|
2
2
|
import {
|
|
3
3
|
getAuthHeaders,
|
|
4
4
|
kbApi
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-QW3R6O7L.js";
|
|
5
|
+
} from "./chunk-TFORY6WY.js";
|
|
7
6
|
import {
|
|
8
7
|
printError,
|
|
9
8
|
printOutput
|
|
10
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-YULUBP3R.js";
|
|
10
|
+
import "./chunk-HRUOV6EQ.js";
|
|
11
11
|
import "./chunk-Y74WTIKJ.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-CG773QXN.js";
|
|
13
|
+
import "./chunk-SOSFRU3O.js";
|
|
14
|
+
import "./chunk-4PSTYEG5.js";
|
|
14
15
|
import {
|
|
15
16
|
externalCliTokenRequestOptions,
|
|
16
17
|
redactExternalCliToken
|
|
17
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-Z3Q2AEIN.js";
|
|
18
19
|
|
|
19
20
|
// src/commands/te-team/shared.ts
|
|
20
21
|
var API_PREFIX = process.env.AE_API_PREFIX ?? "/agent";
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
resolveMemoryApiBaseUrl
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-AWVZTN2B.js";
|
|
5
|
+
import "./chunk-VDICGXCY.js";
|
|
6
|
+
import "./chunk-JSBLCLFE.js";
|
|
7
7
|
import {
|
|
8
8
|
CapabilityGatewayError,
|
|
9
9
|
buildCapabilityGatewayUrl,
|
|
10
10
|
callCapabilityApi
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-HRUOV6EQ.js";
|
|
12
12
|
import "./chunk-Y74WTIKJ.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-SOSFRU3O.js";
|
|
14
|
+
import "./chunk-4PSTYEG5.js";
|
|
15
15
|
import {
|
|
16
16
|
PermissionError
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-Z3Q2AEIN.js";
|
|
18
18
|
|
|
19
19
|
// src/commands/things/parity-actions.ts
|
|
20
20
|
import { readFileSync } from "fs";
|
|
@@ -2,6 +2,10 @@ import { createRequire as __createRequire } from 'node:module'; const require =
|
|
|
2
2
|
import {
|
|
3
3
|
missingAeHostHint
|
|
4
4
|
} from "./chunk-6ZIQV5GW.js";
|
|
5
|
+
import {
|
|
6
|
+
printError,
|
|
7
|
+
printOutput
|
|
8
|
+
} from "./chunk-YULUBP3R.js";
|
|
5
9
|
import {
|
|
6
10
|
buildVersionInstallPlan,
|
|
7
11
|
exactVersion,
|
|
@@ -11,17 +15,16 @@ import {
|
|
|
11
15
|
getLocalCliPackageInfo,
|
|
12
16
|
installHost,
|
|
13
17
|
installVersion,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} from "./chunk-ELCR235M.js";
|
|
18
|
+
recordVersionSyncResult,
|
|
19
|
+
rememberBusinessConfig
|
|
20
|
+
} from "./chunk-CG773QXN.js";
|
|
18
21
|
import {
|
|
19
22
|
peekCliToken
|
|
20
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-SOSFRU3O.js";
|
|
21
24
|
import {
|
|
22
25
|
getActiveHost
|
|
23
|
-
} from "./chunk-
|
|
24
|
-
import "./chunk-
|
|
26
|
+
} from "./chunk-4PSTYEG5.js";
|
|
27
|
+
import "./chunk-Z3Q2AEIN.js";
|
|
25
28
|
|
|
26
29
|
// src/commands/update.ts
|
|
27
30
|
var HOST_OPTION_DESC = "Override active AE host URL (e.g., https://ta.thinkingdata.cn)";
|
|
@@ -90,6 +93,7 @@ async function resolveTargetVersion(program, opts) {
|
|
|
90
93
|
const token = peekCliToken(host);
|
|
91
94
|
if (token) {
|
|
92
95
|
const remote = await fetchCliConfig(host, token);
|
|
96
|
+
if (remote) rememberBusinessConfig(host, token, remote.businesses);
|
|
93
97
|
if (remote?.aeCliVersion) {
|
|
94
98
|
return validateTarget(remote.aeCliVersion);
|
|
95
99
|
}
|
|
@@ -13,18 +13,18 @@ import {
|
|
|
13
13
|
workspaceResourcePath,
|
|
14
14
|
workspaceTargetFlags,
|
|
15
15
|
workspaceTargetPath
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-E25OSZLJ.js";
|
|
17
17
|
import "./chunk-RK6GLDGI.js";
|
|
18
18
|
import {
|
|
19
19
|
getAgentBuffer
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-VDICGXCY.js";
|
|
21
|
+
import "./chunk-JSBLCLFE.js";
|
|
22
22
|
import "./chunk-Y74WTIKJ.js";
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-SOSFRU3O.js";
|
|
24
|
+
import "./chunk-4PSTYEG5.js";
|
|
25
25
|
import {
|
|
26
26
|
CliValidationError
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-Z3Q2AEIN.js";
|
|
28
28
|
|
|
29
29
|
// src/commands/workspace/shared.ts
|
|
30
30
|
var WORKSPACE_SERVICE = "workspace";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thinkingai/ae-cli",
|
|
3
|
-
"version": "6.1.
|
|
3
|
+
"version": "6.1.30",
|
|
4
4
|
"description": "CLI tool for ThinkingAI (AE) analytics platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"verify:resource-package": "node --import tsx tests/resource-package-command.test.ts && node --import tsx tests/resource-package-cli.test.ts && node --import tsx tests/resource-package-transfer.test.ts && node --import tsx tests/resource-package-skill.test.ts",
|
|
56
56
|
"verify:agent-context": "tsx tests/agent-context-command.test.ts",
|
|
57
57
|
"verify:cli-agent-model-context": "tsx --test tests/cli-agent-model-context.test.ts",
|
|
58
|
-
"verify:analysis-scenario": "tsx --test tests/analysis-scenario-command.test.ts",
|
|
58
|
+
"verify:analysis-scenario": "tsx --test tests/analysis-scenario-command.test.ts tests/analysis-scenario-list-command.test.ts",
|
|
59
59
|
"verify:analysis-feedback": "tsx --test tests/analysis-feedback-command.test.ts",
|
|
60
60
|
"verify:agent-distribution": "tsx tests/agent-distribution-command.test.ts && tsx tests/agent-distribution-skill.test.ts",
|
|
61
61
|
"verify:approval": "tsx tests/approval-command.test.ts && tsx tests/approval-cli-client.test.ts && tsx tests/approval-skill.test.ts",
|
|
@@ -72,10 +72,10 @@
|
|
|
72
72
|
"verify:page-context": "node --test test/page-context-skill.test.mjs test/page-context-references.test.mjs test/internal-skill-distribution.test.mjs",
|
|
73
73
|
"verify:skill-migration": "node --test test/ae-migrate-tracking-code/migration-regression.test.mjs test/ae-migrate-tracking-code/ir-golden-consistency.test.mjs test/ae-migrate-tracking-code/migrated-signatures.test.mjs",
|
|
74
74
|
"verify:skill-migration-e2e": "node test/ae-migrate-tracking-code/e2e/diff.mjs",
|
|
75
|
-
"verify:tracking-tools": "tsx test/tracking-client.test.mjs && tsx test/tracking-skill-flow.test.mjs && node test/tracking-commands.test.mjs && tsx tests/tracking-display-name-sync.test.ts && tsx tests/local-data-inspect-convert.test.ts && tsx tests/local-data-upload-client.test.ts && tsx tests/local-data-upload-command.test.ts && tsx tests/local-data-encoding-sniff.test.ts && tsx tests/local-data-time-formats.test.ts && tsx tests/local-data-xlsx-dates.test.ts && tsx tests/local-data-xlsx-hidden-sheets.test.ts && tsx tests/local-data-xlsx-formulas.test.ts && tsx tests/local-data-title-rows.test.ts && tsx tests/local-data-xlsx-merged-cells.test.ts && tsx tests/local-data-xlsx-shared-strings.test.ts && tsx tests/local-data-xlsx-namespace-prefix.test.ts && tsx tests/local-data-value-distribution.test.ts && tsx tests/local-data-summary-rows.test.ts && tsx tests/local-data-duplicate-keys.test.ts && tsx tests/local-data-row-balance.test.ts && tsx tests/local-data-eight-types.test.ts && tsx tests/local-data-mapping-extras.test.ts && tsx tests/local-data-plan.test.ts && tsx tests/local-data-handoff.test.ts && tsx tests/local-data-reuse.test.ts && tsx tests/local-data-conflicts-resolutions.test.ts && tsx tests/runner-variadic-flags.test.ts && node test/local-data-skill.test.mjs",
|
|
75
|
+
"verify:tracking-tools": "tsx test/tracking-client.test.mjs && tsx test/tracking-skill-flow.test.mjs && node test/tracking-commands.test.mjs && tsx tests/tracking-display-name-sync.test.ts && tsx tests/local-data-inspect-convert.test.ts && tsx tests/local-data-upload-client.test.ts && tsx tests/local-data-upload-command.test.ts && tsx tests/local-data-encoding-sniff.test.ts && tsx tests/local-data-time-formats.test.ts && tsx tests/local-data-xlsx-dates.test.ts && tsx tests/local-data-xlsx-hidden-sheets.test.ts && tsx tests/local-data-xlsx-formulas.test.ts && tsx tests/local-data-title-rows.test.ts && tsx tests/local-data-xlsx-merged-cells.test.ts && tsx tests/local-data-xlsx-shared-strings.test.ts && tsx tests/local-data-xlsx-namespace-prefix.test.ts && tsx tests/local-data-value-distribution.test.ts && tsx tests/local-data-summary-rows.test.ts && tsx tests/local-data-duplicate-keys.test.ts && tsx tests/local-data-row-balance.test.ts && tsx tests/local-data-eight-types.test.ts && tsx tests/local-data-mapping-extras.test.ts && tsx tests/local-data-plan.test.ts && tsx tests/local-data-handoff.test.ts && tsx tests/local-data-reuse.test.ts && tsx tests/local-data-conflicts-resolutions.test.ts && tsx tests/local-data-parquet.test.ts && tsx tests/runner-variadic-flags.test.ts && node test/local-data-skill.test.mjs",
|
|
76
76
|
"verify:self-check-overlay": "node test/self-check-overlay.test.mjs",
|
|
77
|
-
"verify:update-check": "tsx tests/compat-check.test.ts && tsx test/update-check.test.mjs",
|
|
78
|
-
"verify:version-sync": "npx tsx tests/version-sync.test.ts && node --import tsx --test tests/compat-check-autosync.test.ts",
|
|
77
|
+
"verify:update-check": "tsx tests/compat-check.test.ts && tsx test/update-check.test.mjs && node --import tsx --test tests/cli-config-transport.test.ts",
|
|
78
|
+
"verify:version-sync": "npx tsx tests/version-sync.test.ts && node --import tsx --test tests/compat-check-autosync.test.ts tests/resume-command.test.ts",
|
|
79
79
|
"verify:auth-credentials": "npx tsx tests/secure-store.test.ts && npx tsx tests/secure-store-environment.test.ts && npx tsx tests/cli-token-validation.test.ts && npx tsx tests/auth-multi-account.test.ts && npx tsx tests/mcp-no-disk.test.ts && npx tsx tests/external-cli-token.test.ts && node --import tsx --test tests/secure-store-windows-lock.test.ts",
|
|
80
80
|
"verify:readme": "node --test test/readme-command-surface.test.mjs",
|
|
81
81
|
"verify:dependency-hygiene": "node --test test/dependency-hygiene.test.mjs",
|
|
@@ -91,9 +91,16 @@
|
|
|
91
91
|
"verify:kb-versions": "tsx test/kb-version-management-command.test.mjs",
|
|
92
92
|
"verify:automation": "tsx tests/automation-command.test.ts",
|
|
93
93
|
"verify:project-kb-schema": "tsx --test test/kb-schema-import-command.test.mjs && node --test test/project-semantic-compile-schema.test.mjs test/project-semantic-empty-skeleton.test.mjs test/project-semantic-execution-contract.test.mjs test/project-semantic-fidelity.test.mjs && node test/project-semantic-knowledge-wiki-reference.test.mjs",
|
|
94
|
-
"verify:install": "tsx --test tests/installation.test.ts && node --test test/install-entrypoint.test.mjs",
|
|
94
|
+
"verify:install": "tsx --test tests/installation.test.ts && node --test test/install-entrypoint.test.mjs test/runtime-capabilities-entrypoint.test.mjs",
|
|
95
|
+
"verify:optional-agent": "tsx --test tests/login-device-flow.test.ts tests/auth-device-command.test.ts tests/agent-business-transport.test.ts",
|
|
96
|
+
"verify:business-skills": "node --import tsx --test tests/business-skill-sync.test.ts",
|
|
97
|
+
"verify:skill-businesses": "node --test test/release-gate-skill-businesses.test.mjs",
|
|
95
98
|
"verify:notifications": "tsx tests/notification-command.test.ts",
|
|
96
|
-
"verify:
|
|
99
|
+
"verify:mcp-int64-request": "npx tsx tests/mcp-int64-request.test.ts",
|
|
100
|
+
"verify:capability-api": "npx tsx tests/capability-api.test.ts",
|
|
101
|
+
"verify:community-ux": "npm run build && npx tsx tests/community-ux.test.ts",
|
|
102
|
+
"verify:community-evidence": "node --import tsx tests/community-evidence.test.ts",
|
|
103
|
+
"verify:businesses": "node --import tsx --test tests/business-config.test.ts tests/business-command-filter.test.ts tests/business-cli.test.ts tests/environment-refresh.test.ts tests/business-sandbox-boundary.test.ts"
|
|
97
104
|
},
|
|
98
105
|
"repository": {
|
|
99
106
|
"type": "git",
|
|
@@ -111,6 +118,7 @@
|
|
|
111
118
|
},
|
|
112
119
|
"dependencies": {
|
|
113
120
|
"@types/json-bigint": "^1.0.4",
|
|
121
|
+
"apache-arrow": "^21.2.0",
|
|
114
122
|
"cli-table3": "^0.6.5",
|
|
115
123
|
"commander": "^12.1.0",
|
|
116
124
|
"cross-spawn": "7.0.6",
|
|
@@ -119,7 +127,9 @@
|
|
|
119
127
|
"jq-wasm": "^3.0.0-jq-1.8.2",
|
|
120
128
|
"jschardet": "^3.1.4",
|
|
121
129
|
"json-bigint": "^1.0.0",
|
|
130
|
+
"parquet-wasm": "^0.9.0",
|
|
122
131
|
"saxes": "^6.0.0",
|
|
132
|
+
"skills": "1.5.12",
|
|
123
133
|
"stream-json": "3.6.0",
|
|
124
134
|
"turndown": "^7.2.4",
|
|
125
135
|
"undici": "6.28.1",
|
|
@@ -51,3 +51,7 @@ Current transport: CLI-token REST `/api/resource-packages/**`
|
|
|
51
51
|
Gateway target: TBD
|
|
52
52
|
Review after: 2027-01-16
|
|
53
53
|
Exit condition: equivalent stable Gateway capabilities cover task control and the upload/download workflow; retain CLI orchestration and compatibility for published commands.
|
|
54
|
+
|
|
55
|
+
## Knowledge base export view
|
|
56
|
+
|
|
57
|
+
`resource-package export` accepts `--view working|published` (default `working`). Working exports include editable sources and schema without stale generated wiki. Published exports require a verifiable formal snapshot and use its matching source metadata; retries retain the same frozen version and dependency closure. A missing formal version fails explicitly. Editable imported KBs have pending sources and no formal version until compilation/publication completes. See [KB publication](../../ae-kb/references/publication.md).
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ae-analysis
|
|
3
|
-
version: 4.2.
|
|
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."
|
|
3
|
+
version: 4.2.52
|
|
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 review collected analysis questions or badcases, 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
|
|
|
7
7
|
# ae-analysis
|
|
8
8
|
|
|
9
|
-
This is the single entry skill for analysis intent and command execution.
|
|
9
|
+
This is the single entry skill for analysis intent and command execution, including review and semantic deduplication of collected analysis questions and evidence-based badcase assessment.
|
|
10
|
+
|
|
11
|
+
At the beginning of a new analysis question, capture `ae-cli analysis scenario begin` locally and retain its exact `data.start_time` for that answer. Pass it as `--start-time` only when the project permits collection. Do not invent a start time or reuse it for a later revised answer; capture a fresh start for that follow-up. This records one question-to-answer elapsed duration, not separate timing phases. Historical archive review does not start or collect a scenario.
|
|
12
|
+
|
|
13
|
+
For historical analysis-question inventory or badcase review, route directly to [scenario list and review](references/scenario_list.md), and for quality assessment read [independent scenario evaluation](references/scenario_evaluation.md). This is a separate archive-review task: skip business-query semantic/KB/personal-preference preflight and do not collect the review itself as another analysis scenario. The CLI retrieves evidence; the calling Agent judges and deduplicates it. No server-side rating or evaluation writeback is required.
|
|
10
14
|
|
|
11
15
|
## Capability contract
|
|
12
16
|
|
|
@@ -39,9 +43,9 @@ For data queries:
|
|
|
39
43
|
3. Correct compiler errors at their reported paths. New evidence or a user correction changes a completed choice; preserve the other verified inputs.
|
|
40
44
|
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.
|
|
41
45
|
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. Scenario collection is project opt-in. Before preparing or uploading a scenario sample, read `ae-cli project info get --project-id <source_project_id>` for the current host, authenticated account, and source analysis project. Only `data.analysis_scenario_collection_enabled === true` permits collection. Recheck for each new scenario and before appending feedback or a revision; do not reuse a previous grant or the company configuration's 24-hour cache. A missing field (including older services), false, unreadable configuration, or unknown project means skip collection and answer normally. Never enable the project switch, choose a different project, or invent a project ID to make collection succeed. The curated collect/append commands also check immediately before submission, and the service is authoritative if the switch changes. This controls
|
|
46
|
+
6. Scenario collection is project opt-in. Before preparing or uploading a scenario sample, read `ae-cli project info get --project-id <source_project_id>` for the current host, authenticated account, and source analysis project. Only `data.analysis_scenario_collection_enabled === true` permits collection. Recheck for each new scenario and before appending feedback or a revision; do not reuse a previous grant or the company configuration's 24-hour cache. A missing field (including older services), false, unreadable configuration, or unknown project means skip collection and answer normally. Never enable the project switch, choose a different project, or invent a project ID to make collection succeed. The curated collect/append commands also check immediately before submission, and the service is authoritative if the switch changes. This controls scenario samples and the related Common gateway HDFS call archive; existing invocation and intent event reporting stays unchanged. `accepted=false, skipped=true` is a normal skip, not a failed analysis or successful upload. Do not retry, backfill, or fall back to `analysis feedback submit` to bypass this switch.
|
|
43
47
|
|
|
44
|
-
Collect one sample for the whole user scenario, not one per CLI call. After forming the final answer, use `ae-cli analysis scenario collect` as specified in [scenario collection](references/scenario_collect.md), then deliver that exact answer text. Capture the original question/confirmed clarifications, actual final answer and the ordered query path (existing capability/call IDs and optional short purpose; prefer only meta.invocation_id, never confuse a business request_id with gateway client_request_id), never query result rows or error payloads; do not score correctness or generate a separate self-evaluation. The question_id is the original scenario's first user turn ID, stable across clarification, retries, multiple queries and corrections. Store/reuse the IDs returned by collection in conversation context. On later user objections, scope corrections or reported omissions targeting that answer, append the user's original text with `ae-cli analysis scenario append --entry-type user_feedback` and the original question_id/target_answer_id; do not decide whether the user is right. An ambiguous request for an explanation may be preserved as user text when clearly linked; do not invent a link. A normal follow-up or changed requirement is not automatically negative feedback. After a substantive follow-up answer to the same scenario (recheck, explanation, correction or scope clarification), append answer_revision with that exact answer/query path and a new answer_id, even when the conclusion stays the same; keep earlier answers. If the triggering user request was not already captured as user_feedback, include its exact text using --user-message on answer_revision so later scope changes are not lost. Do not duplicate feedback text in user_message. Acknowledgments such as thanks alone need no entry. A genuinely separate question gets a new question_id. Do not create another initial sample for an existing scenario. A separate evaluation task reads these samples later and can join existing call telemetry for parameters/status/timing. Path-only evidence cannot prove numeric answer correctness; unresolved correctness stays unknown. Only attempted analysis data queries qualify; metadata, discovery, help and asset writes alone do not. No routine satisfaction question. Collection failure must not block the answer or subsequent business work, trigger login or automatic retries, or be claimed as successful ingestion. For external Agents this is a Skill collection step, not a guaranteed post-answer hook; it has
|
|
48
|
+
Collect one sample for the whole user scenario, not one per CLI call. After forming the final answer, use `ae-cli analysis scenario collect` as specified in [scenario collection](references/scenario_collect.md), then deliver that exact answer text. Capture the original question/confirmed clarifications, actual final answer and the ordered query path (existing capability/call IDs and optional short purpose; prefer only meta.invocation_id, never confuse a business request_id with gateway client_request_id), never query result rows or error payloads; do not score correctness or generate a separate self-evaluation. The question_id is the original scenario's first user turn ID, stable across clarification, retries, multiple queries and corrections. Store/reuse the IDs returned by collection in conversation context. On later user objections, scope corrections or reported omissions targeting that answer, append the user's original text with `ae-cli analysis scenario append --entry-type user_feedback` and the original question_id/target_answer_id; do not decide whether the user is right. An ambiguous request for an explanation may be preserved as user text when clearly linked; do not invent a link. A normal follow-up or changed requirement is not automatically negative feedback. After a substantive follow-up answer to the same scenario (recheck, explanation, correction or scope clarification), append answer_revision with that exact answer/query path and a new answer_id, even when the conclusion stays the same; keep earlier answers. If the triggering user request was not already captured as user_feedback, include its exact text using --user-message on answer_revision so later scope changes are not lost. Do not duplicate feedback text in user_message. Acknowledgments such as thanks alone need no entry. A genuinely separate question gets a new question_id. Do not create another initial sample for an existing scenario. A separate evaluation task reads these samples later and can join existing call telemetry for parameters/status/timing. Path-only evidence cannot prove numeric answer correctness; unresolved correctness stays unknown. Only attempted analysis data queries qualify; metadata, discovery, help and asset writes alone do not. No routine satisfaction question. Collection failure must not block the answer or subsequent business work, trigger login or automatic retries, or be claimed as successful ingestion. For external Agents this is a Skill collection step, not a guaranteed post-answer hook; it has a local clock capture plus the collection tool call, with no additional evaluation task on the answering path.
|
|
45
49
|
|
|
46
50
|
User feedback is evidence, not a correctness label. Preserve exact user words and their target answer even if you disagree. Do not routinely ask for a satisfaction rating. The existing `analysis feedback submit` contract remains available for explicit standalone user ratings without a collected scenario; when a scenario exists, use its append command instead of submitting duplicate feedback. No explicit feedback means no submission or new feedback event for `cli_analysis_feedback`. Do not upload the analysis answer through that legacy feedback command. All collection excludes credentials, full transcripts and private reasoning.
|
|
47
51
|
|
|
@@ -50,7 +54,7 @@ User feedback is evidence, not a correctness label. Preserve exact user words an
|
|
|
50
54
|
## Route before reading
|
|
51
55
|
|
|
52
56
|
1. Map the request to a command family before opening any reference.
|
|
53
|
-
- 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.
|
|
57
|
+
- 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`. Apply its Business Topics and Subtopics contract: both levels require business interpretation and independent review; a source dashboard is an evidence container, not a default second-level group. Do not load project semantics, project KB, or personal semantic preferences as a preflight.
|
|
54
58
|
- 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.
|
|
55
59
|
- 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`.
|
|
56
60
|
- 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.
|
|
@@ -98,9 +102,9 @@ For CLI Agent asset-authentication and metric-recommendation review, route to `a
|
|
|
98
102
|
|
|
99
103
|
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.
|
|
100
104
|
|
|
101
|
-
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.
|
|
105
|
+
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. Do not query review history to select candidates. Select currently uncertified assets by business value and evidence, regardless of earlier recommendations or review decisions. Keep stable request keys only for network replay of the same submission; a new authorized recommendation may include previously recommended assets. Read the returned batch detail to verify submission. See `references/agent_review_submit_to_page.md` for request keys and packet rules.
|
|
102
106
|
|
|
103
|
-
|
|
107
|
+
Ordinary recommendations prepare concise material for human review, not a full certification audit. Follow resolve/export -> select -> business-domain/subtopic grouping and concise reasons -> one local structure/evidence check plus focused preflight -> authorized submit-to-page -> one detail readback. LOCAL_ONLY stops at local artifacts. For each report, explain at least one core statistical measure or calculation with fact-supporting references rooted at `evidence_snapshot.analysis`; purpose alone is insufficient. Preserve current packaged analysis and `target_revision`, and add relevant population/filter/time boundaries when they affect that core meaning. Do not require every dimension, SQL output column or calculation step unless the user requests a full audit or a concrete risk needs that detail. Fetch `agent-review evidence` only for a missing/stale definition or a specific unresolved claim, not once per report or as routine spot validation. Preserve server facts separately from AI interpretation; never guess formulas, aliases, time ranges or successful execution. See `references/agent_review_submit_to_page.md` for the ordinary workflow and optional full-audit detail. Existing report-analysis, evidence-link and reference validation remains enforced.
|
|
104
108
|
|
|
105
109
|
`item.ai_summary.summary` is the concise item recommendation reason, including its evidence basis and main risks, displayed in the main list. `batch.ai_summary.summary` is the batch overview and cannot replace item reasons. Detailed factual explanations belong only in `item.ai_summary.analysis_explanation`. Do not duplicate reasons or detailed analysis into presentation fields; keep `presentation_snapshot.analysisByItem` as `{}`. Do not invent a reason from unknown values; state missing evidence or uncertain risks explicitly rather than treating them as zero or absent.
|
|
106
110
|
|
|
@@ -108,7 +112,7 @@ Scripts may build the transport file, preserve IDs, copy evidence, normalize lin
|
|
|
108
112
|
|
|
109
113
|
Page-visible review text is for human asset reviewers, not implementers. In `item.ai_summary.summary`, visible statements, and open questions, write plain business Chinese: what the asset is for, how it is calculated, which filters/date windows matter, and what the reviewer should confirm. Use event and property names from the current asset definition when they help the reviewer verify the calculation definition. Do not expose internal evidence, parser terms, temporary SQL aliases, or runtime parameter names such as `SAVED_REPORT_ONLY`, `DYNAMIC`, `REPORT`, `T1`, `a0`, `a1`, `Variable2`, `selector3`, `PartDate date1`, `source_path`, `evidence_snapshot`, raw JSON, raw SQL, hash/revision details, dashboard override warnings, timezone-not-saved notes, or claims about query execution unless the user explicitly asks for debug evidence. Convert internal values before display, for example `T1`/`day` becomes `按天`, and dynamic SQL caveats become business confirmation items such as “确认参数含义、默认日期范围和是否包含测试数据”.
|
|
110
114
|
|
|
111
|
-
For real review-page submission, start with `analysis-meta governance-recommendation export --limit 20`. This is the initial candidate pool, not a required submission count. Follow
|
|
115
|
+
For real review-page submission, start with `analysis-meta governance-recommendation export --limit 20`. This is the initial candidate pool, not a required submission count. Follow current-state selection and bounded expansion in `references/governance_recommendation_export.md`: select currently uncertified assets by business value and evidence, keep authenticated assets only as necessary context, and expand an insufficient pool from 20 to 50 to 100, then stop. Earlier recommendations and review decisions do not remove an otherwise eligible asset. Expansion is for business-domain coverage, not unlimited workload: for recurring daily batches, target about 20-50 pending review assets, hard cap around 80, and balance roughly 3-6 visible domains with per-domain quotas before adding context. Use the latest successful export as the drafting evidence and report the actual reviewed scope plus overflow left for later batches. Do not compress eligible coverage into a few representative themes or submit only the first work unit unless the user requests a sample or diagnostic batch. Business themes organize the retained dashboard set; they do not replace its coverage. For recurring recommendation jobs, submit only business domains that still contain pending review assets; authenticated assets are supporting context under those visible domains, not standalone work. Do not write long Agent summaries for hidden domains or pure authenticated context.
|
|
112
116
|
|
|
113
117
|
For dashboard recommendations, preserve optional location facts from Common: when a dashboard candidate or source dashboard includes `space_id` or `space_name`, copy those fields into the submitted dashboard item's `evidence_snapshot.definition.config` so the review page can show `所属空间`. Not every dashboard belongs to a space; missing space fields are valid and must not be invented, required, or used to filter out an otherwise eligible dashboard.
|
|
114
118
|
|
|
@@ -120,7 +124,7 @@ The full `evidence_hash` includes collection time and may change between preview
|
|
|
120
124
|
|
|
121
125
|
If a retired split recommendation command or capability is accidentally probed and returns an error, treat that as a routing correction only. Do not use data from split recommendation commands or capabilities as the business source for a recommendation answer; rerun the current workflow through `analysis-meta governance-recommendation export`.
|
|
122
126
|
|
|
123
|
-
For review-page drafting, material inspection, or local-only rehearsals,
|
|
127
|
+
For ordinary review-page drafting, material inspection, or local-only rehearsals, use the focused scope in `references/agent_review_preflight.md`: programmatic evidence/identity/reference checks cover the entire exact packet; one independent semantic review covers every business domain/subtopic, its supporting member definitions and identified risk items. Do not require the reviewer to re-interpret every report, grade every metadata dependency or generate per-item comparison coverage. Load `references/agent_review_priorities_comparisons.md` only for requested prioritization, actual comparison/conflict clues or an explicit full audit. Optional priorities rank human review urgency, never certification outcome. Missing comparisons do not prove no conflict. Deepen checks only for the affected claims/peers; apply full definition-audit requirements when explicitly requested. Correct factual errors and unsupported membership, not ordinary copy preferences through routine rounds; the existing maximum 3 corrections is a ceiling for material findings. Record actual review scope, disclose unchecked/full-audit scope and unresolved findings, and preserve LOCAL_ONLY and submission authorization boundaries. These rules do not change approval, automatic certification, permissions or Common admission.
|
|
124
128
|
|
|
125
129
|
## Global AE CLI Rules
|
|
126
130
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Agent Review Preflight
|
|
2
2
|
|
|
3
|
-
Use for preparing or checking review-page materials, including a local-only rehearsal.
|
|
3
|
+
Use for preparing or checking review-page materials, including a local-only rehearsal. Ordinary recommendation defaults to FOCUSED_RECOMMENDATION; FULL_AUDIT applies only when the user explicitly requests a comprehensive definition/material audit. These are local review-scope labels, not CLI flags or Common fields. Read alongside [submit-to-page](agent_review_submit_to_page.md). A CLI validation success is not a quality approval; a focused review is not a full certification audit.
|
|
4
4
|
|
|
5
5
|
## Authorization and Isolation
|
|
6
6
|
|
|
@@ -10,18 +10,30 @@ Use a fresh-context reviewer subagent that did not author the material. Give it
|
|
|
10
10
|
|
|
11
11
|
For an explicit audit-only request, the independent reviewer may run these checks directly without spawning another reviewer. Its findings are the audit result, not self-approval of authored text.
|
|
12
12
|
|
|
13
|
+
## Focused Recommendation Review (Default)
|
|
14
|
+
|
|
15
|
+
Apply one whole-packet programmatic check and one independent semantic pass over the following focused scope:
|
|
16
|
+
|
|
17
|
+
- Check every business domain and subtopic, including the narrower question, membership, supporting definitions from each represented dashboard, missed cross-dashboard merges and unjustified source-container splits. Use actual core measures/populations/time boundaries; exhaustive SQL projection analysis is unnecessary unless it affects that judgment.
|
|
18
|
+
- Check the recommendation basis and explanation for identified material risks: uncertain counting entity or formula, a meaningful name/definition mismatch, conflicting peers, or missing evidence behind a claim. Inspect only the affected fields and relevant peers. Dynamic SQL or a generic extractor's empty fields alone is not a requirement for a full audit.
|
|
19
|
+
- Other items retain concise author-written purposes/reasons and a core evidence-backed measure/calculation for every report. The independent reviewer does not need to reread every remaining definition, individually grade metadata dependencies, or author exhaustive pair comparisons. Omitted priority/comparison fields are allowed; never interpret them as a no-conflict result.
|
|
20
|
+
- Record checked semantic item IDs and identified risk IDs separately from whole-packet machine coverage. PASS means the declared focused scope passed; explicitly state that full item-definition auditing was not performed. No focused PASS with unchecked topics/subtopics or unchecked identified risks. A few sampled items do not constitute a full audit.
|
|
21
|
+
- Correct factual or materially unsupported grouping/recommendation claims, then recheck affected semantic fields and rerun the machine check. Do not spend rounds on stylistic preferences, exhaustive coverage records or optional prose. The existing maximum of 3 material corrections remains a ceiling, never a routine three-round workflow.
|
|
22
|
+
|
|
23
|
+
Preserve the exact source/draft hashes and actual coverage. A newly discovered risk expands only the affected inspection scope; it does not silently turn ordinary recommendation into a full-batch audit. Authorization, missing required evidence and structural errors remain separate checks.
|
|
24
|
+
|
|
13
25
|
## Prepare Once, Interpret in Batches
|
|
14
26
|
|
|
15
|
-
1. Resolve the host/project, export the candidate pool, and apply the
|
|
16
|
-
2. Build a scope ledger accounting for every candidate:
|
|
17
|
-
3.
|
|
27
|
+
1. Resolve the host/project, export the candidate pool, and apply current-state selection and the bounded 20 -> 50 -> 100 procedure; do not query review history to exclude candidates. Preserve the original export file. Record CLI/source revision, loaded Skill path and file hashes so an installed old Skill cannot silently stand in for the tested one.
|
|
28
|
+
2. Build a scope ledger accounting for every candidate: selected current uncertified work, existing certified context, overflow, or an explicit evidence gap. Account separately for metric-creation candidates, which are not CERTIFY proposals. A missing explanation is unfinished work, not a reason to silently remove an asset. Preserve shared asset identity and retained relations.
|
|
29
|
+
3. Interpret selected assets' core definitions and author both grouping levels under [Business Topics and Subtopics](agent_review_submit_to_page.md#business-topics-and-subtopics). Compare grouping across source dashboard boundaries before transport assembly. Keep concise per-item reasons and material risk notes; use chunks only when needed for the size. Full audits also require the per-item comprehensive interpretation below. Do not drop selected assets merely to avoid writing their core meaning or fill entries with templates.
|
|
18
30
|
4. Keep narrative entries separately keyed by `client_item_id`. Scripts may join these entries to the packet, never compose their sentences. Deep-copy each original `evidence_snapshot`, including `asset`, `signals`, `definition`, `analysis`, revisions and source provenance when present. Copy candidate source/evidence links too. The abbreviated transport example is not a field allowlist.
|
|
19
31
|
5. For a gap-only evidence read, preserve the entire original response and record its asset identity and file in the source ledger. The reviewer must verify any replacement/addition against that response. Never replace an existing value merely to agree with prose or recompute server hashes. Common stores the submitted packet; it does not fill omitted statistics or author explanations.
|
|
20
|
-
6.
|
|
32
|
+
6. Run [priorities and cross-asset comparisons](agent_review_priorities_comparisons.md) only when requested, when concrete peer/conflict evidence needs inspection, or for a full audit. Ordinary items need not carry grades or comparison coverage. For comparisons actually made, keep evidence and classifications; missing fields are not a default priority or proof of no conflict.
|
|
21
33
|
|
|
22
34
|
## Required Independent Checks
|
|
23
35
|
|
|
24
|
-
The
|
|
36
|
+
The machine pass covers the entire exact packet in either scope. The independent reviewer interprets definitions for every topic/subtopic and identified risk in focused scope; a FULL_AUDIT additionally covers every retained item's detailed meaning. Use scripts for deterministic comparisons rather than repeating those checks in prose.
|
|
25
37
|
|
|
26
38
|
### A. Evidence and Coverage
|
|
27
39
|
|
|
@@ -31,11 +43,16 @@ The reviewer performs both passes on the complete retained scope. It may use scr
|
|
|
31
43
|
- Resolve every factual `evidence_refs` path and check the value, not just path existence. Verify revisions, source links, hierarchy and documented exclusions. Save machine-check results with checked item IDs and uncovered IDs.
|
|
32
44
|
- Cross-check counted entities, filter/group fields and formula dependencies in actual definitions against the exported dependency graph. All relation IDs resolving does not prove all dependencies were exported. Record missing dependencies as source gaps; never invent asset IDs or evidence-backed edges. Use the relevant read-only CLI lookup only when it can resolve that gap, and preserve its response before adding a verified relation.
|
|
33
45
|
|
|
34
|
-
### B.
|
|
46
|
+
### B. Business Grouping (Both Scopes)
|
|
35
47
|
|
|
36
48
|
- Business topics: review every topic's Agent-authored `semantic_basis.business_question`, `grouping_reason`, and `evidence_item_ids` against definitions of items displayed in that topic. Missing basis is a semantic quality finding even though legacy transport accepts its absence. Copying a dashboard/report title or `topic_seed` is not a business interpretation. Explain why reports answer the same business question, identify justified cross-dashboard merges and within-dashboard splits, and use `待确认业务主题` with the specific uncertainty when evidence is insufficient. A legitimate business name can equal a source name: never reject it by keyword or equality alone.
|
|
37
|
-
-
|
|
49
|
+
- Business subtopics: independently check every `topics[].groups[]` and its own `semantic_basis` against member report definitions, not just the parent topic's meaning. Verify its narrower question, boundaries from siblings, evidence for every represented dashboard, and whether related selected dashboards were wrongly separated. One-dashboard-per-group output requires definition-based scrutiny for missed merges; changing group names without reconsidering membership does not resolve it. Accept a single-dashboard subtopic when its specific question and selected-scope limits justify it. Do not force unrelated dashboards together or use name equality/count thresholds as the verdict. Missing basis, copied source containers and unsupported membership are semantic quality findings, not new CLI/Common admission rules.
|
|
50
|
+
- Record `checked_topic_ids`, `unreviewed_topic_ids`, and scoped `checked_subtopic_refs` / `unreviewed_subtopic_refs` (`{topic_id, group_id}`), with topic/subtopic-specific findings alongside item coverage. For every subtopic record its dashboard item IDs, definition evidence inspected, cross-dashboard merge/split assessment and any single-dashboard justification in `subtopic_checks`. A top-level topic review or item-only PASS cannot stand in for these checks. No whole-packet PASS with unchecked topics or subtopics. Reuse the existing bounded correction budget and warning continuation policy; grouping checks do not authorize certification or submission.
|
|
51
|
+
|
|
38
52
|
|
|
53
|
+
### C. Full Audit Only
|
|
54
|
+
|
|
55
|
+
The following comprehensive item, priority and paired-definition checks apply to FULL_AUDIT. For focused recommendations use them only on fields needed by a grouping judgment or an identified risk; do not expand to every item.
|
|
39
56
|
|
|
40
57
|
- Review every retained item's recommendation, and every retained dashboard/report's definition-based explanation. Track checked IDs; sampling cannot establish a whole-batch PASS. If the scope is too large, split the review across fresh reviewers with disjoint ID lists and combine their coverage and findings.
|
|
41
58
|
- Dashboard: explain the business question jointly answered by its actual child reports and why this particular combination merits review. A title plus heat and "stabilize downstream definitions" is insufficient.
|
|
@@ -53,6 +70,7 @@ Write a local `preflight-review.json` with:
|
|
|
53
70
|
```json
|
|
54
71
|
{
|
|
55
72
|
"mode": "LOCAL_ONLY",
|
|
73
|
+
"review_scope": "FOCUSED_RECOMMENDATION",
|
|
56
74
|
"decision": "NEEDS_REVISION",
|
|
57
75
|
"repair_attempt": 0,
|
|
58
76
|
"max_repair_attempts": 3,
|
|
@@ -62,10 +80,31 @@ Write a local `preflight-review.json` with:
|
|
|
62
80
|
"expected_item_ids": [],
|
|
63
81
|
"checked_evidence_ids": [],
|
|
64
82
|
"checked_semantic_ids": [],
|
|
83
|
+
"expected_semantic_ids": [],
|
|
84
|
+
"identified_risk_ids": [],
|
|
85
|
+
"unchecked_risk_ids": [],
|
|
86
|
+
"not_audited_item_ids": [],
|
|
65
87
|
"unreviewed_ids": [],
|
|
88
|
+
"checked_topic_ids": [],
|
|
89
|
+
"unreviewed_topic_ids": [],
|
|
90
|
+
"checked_subtopic_refs": [],
|
|
91
|
+
"unreviewed_subtopic_refs": [],
|
|
92
|
+
"subtopic_checks": [
|
|
93
|
+
{
|
|
94
|
+
"topic_id": "<business-domain-id>",
|
|
95
|
+
"group_id": "<business-subtopic-id>",
|
|
96
|
+
"dashboard_item_ids": ["<dashboard item id>"],
|
|
97
|
+
"definition_evidence_refs": ["<raw file and report-definition path>"],
|
|
98
|
+
"merge_split_assessment": "<why these members belong together and differ from siblings>",
|
|
99
|
+
"single_dashboard_justification": "<reason if one dashboard; null otherwise>",
|
|
100
|
+
"result": "<PASS|NEEDS_REVISION>"
|
|
101
|
+
}
|
|
102
|
+
],
|
|
66
103
|
"findings": [
|
|
67
104
|
{
|
|
68
|
-
"
|
|
105
|
+
"topic_id": "<domain ID for a grouping finding; omit for item-only findings>",
|
|
106
|
+
"group_id": "<subtopic ID for a subtopic finding; omit otherwise>",
|
|
107
|
+
"item_id": "<asset ID for an item finding; omit for grouping-only findings>",
|
|
69
108
|
"field": "<draft field>",
|
|
70
109
|
"code": "<EVIDENCE_LOSS|UNSUPPORTED_CLAIM|BOILERPLATE|INCOMPLETE|SCOPE_GAP>",
|
|
71
110
|
"source_ref": "<raw file and supporting path>",
|
|
@@ -76,9 +115,11 @@ Write a local `preflight-review.json` with:
|
|
|
76
115
|
}
|
|
77
116
|
```
|
|
78
117
|
|
|
79
|
-
The reviewer, not the author or transport script, sets `PASS` only
|
|
118
|
+
The reviewer, not the author or transport script, sets `PASS` only for the explicitly recorded `review_scope`. For FOCUSED_RECOMMENDATION, machine checks cover all expected item IDs, semantic checks cover all topic/subtopic supporting evidence and identified risk IDs, and remaining items appear in `not_audited_item_ids`; their absence from detailed semantic review is not automatically a finding. For FULL_AUDIT, `expected_semantic_ids` includes every retained item and none may remain unaudited. Reports without an explicit scope are legacy full-audit records, not evidence of a newly completed focused review.
|
|
119
|
+
|
|
120
|
+
Enumerate expected `{topic_id, group_id}` pairs from the exact draft and reconcile them with checked/unreviewed coverage; counts or a few examples are insufficient. Unknown source facts may remain when honestly explained; unresolved meaning within the declared checked scope cannot PASS. Do not put this local artifact into the Common packet or treat it as authoritative server evidence. Always disclose focused versus full coverage without creating identical per-item audit boilerplate.
|
|
80
121
|
|
|
81
|
-
On `NEEDS_REVISION`,
|
|
122
|
+
On `NEEDS_REVISION`, reopen cited definitions, restore evidence or correct the actual interpretation. Adding synonyms or prefixes merely to defeat repeated-text checks is prohibited. Independently re-review affected material findings in the declared scope and rerun whole-packet programmatic evidence checks; do not restart every unchanged report explanation for a grouping or copy edit.
|
|
82
123
|
|
|
83
124
|
Allow at most **three correction attempts per logical material packet**. Initial drafting/review is attempt 0 and does not consume a correction. Each subsequent author revision plus independent re-review consumes one attempt (1, 2, 3); stop correcting immediately on PASS. Persist the counter and link each finding to the changed fields and the reviewer's resolved/unresolved result. After review of attempt 3 still returns NEEDS_REVISION, do not start attempt 4: retain the failed quality verdict and continue with warnings under the policy below. Replacing subagents, renaming files, regenerating drafts, changing source run IDs, or resuming the same task must not reset this counter. Do not quietly reduce the batch, skip the reviewer or label unfinished work complete. A new retry budget requires explicit user authorization. This is a ceiling, not a quota: stop correcting earlier when no meaningful repair is possible with available evidence and scope; record why, and do not spend attempts on unchanged retries.
|
|
84
125
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Review Priority and Definition Comparisons
|
|
2
2
|
|
|
3
|
-
Read
|
|
3
|
+
Read only when the user requests prioritization/comparison or a full audit, or when concrete evidence suggests related/conflicting definitions. Ordinary recommendation does not require this pass for every item. These are Agent assessments inside `ai_summary`, not Common admission rules, certification decisions or server evidence. LOCAL_ONLY keeps any requested assessments local.
|
|
4
|
+
|
|
5
|
+
The exhaustive per-item requirements below apply to an explicit full audit. For ordinary recommendations, priority is optional and comparisons cover only actually examined peers. Do not fill empty comparison/coverage records or grades merely for completeness. Missing comparison fields mean no documented assessment, never verified absence of conflicts. If supplied, preserve the evidence, classification and reciprocity rules below.
|
|
4
6
|
|
|
5
7
|
## Per-Asset Review Priority
|
|
6
8
|
|
|
@@ -55,7 +57,7 @@ In the current page contract, actionable peer links require both assets in the r
|
|
|
55
57
|
|
|
56
58
|
## Explicit Coverage, Not Empty-by-Default
|
|
57
59
|
|
|
58
|
-
|
|
60
|
+
For a full audit, every item also carries `comparison_review`. For an ordinary recommendation, add it only when an actual comparison was performed; unexamined items may omit it or explicitly use NOT_REVIEWED, never COMPLETE:
|
|
59
61
|
|
|
60
62
|
```json
|
|
61
63
|
{
|
|
@@ -71,6 +73,6 @@ Every item also carries `comparison_review`:
|
|
|
71
73
|
|
|
72
74
|
## Preflight and Bounded Repair
|
|
73
75
|
|
|
74
|
-
|
|
76
|
+
Within the requested or triggered comparison scope, the independent reviewer checks priority coverage and evidence, cross-chunk candidate selection, both definitions for each pair, classifications, reciprocal conflict edges, identity/refs and whether the wording claims more coverage than was checked. It must challenge both false conflict badges and likely missed conflicts. Record counts by priority (including unassessed), comparison outcome, unique unordered conflict pairs, affected items, and incomplete comparisons. Count pair A-B once, not twice because of reciprocal entries.
|
|
75
77
|
|
|
76
78
|
Use the same logical-packet correction budget in preflight: at most 3 corrections total, not 3 for each priority, pair or reviewer. On exhausted quality corrections, preserve the findings and follow authorized warning continuation. LOCAL_ONLY always ends with local files. Missing priority, incomplete comparison, and poor rationale are Agent quality findings, not new CLI/Common rejection rules.
|