@thinkingai/ae-cli 6.1.17 → 6.1.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/README.md +2 -0
  2. package/README.zh.md +6 -0
  3. package/dist/{auth-77BUFLGC.js → auth-QPEVVBKT.js} +20 -15
  4. package/dist/auth-UMJAA72O.js +15 -0
  5. package/dist/{capability-72DTW5M2.js → capability-ASI62I4A.js} +53 -15
  6. package/dist/{chunk-UW5UN47B.js → chunk-533JK3YX.js} +2 -0
  7. package/dist/{chunk-UOUS37JQ.js → chunk-6QK7SYYY.js} +5 -4
  8. package/dist/{chunk-TUKQZTMI.js → chunk-7K24F7T2.js} +2 -0
  9. package/dist/{chunk-OO6XR6LK.js → chunk-AMBFK2K3.js} +2 -0
  10. package/dist/{sync-DAVKYVMW.js → chunk-B5HMQAOM.js} +31 -540
  11. package/dist/{chunk-VR3LCBHW.js → chunk-DKEXH6Q5.js} +6 -5
  12. package/dist/{chunk-VTWMIC5L.js → chunk-E2JKXMVO.js} +2 -0
  13. package/dist/{chunk-LYVNONC4.js → chunk-FR2EDAQM.js} +36 -0
  14. package/dist/{chunk-ILIU36SU.js → chunk-GJXRF7Y6.js} +6 -5
  15. package/dist/{chunk-DWO43OIB.js → chunk-JQ3ENZZH.js} +2 -0
  16. package/dist/chunk-JYMGHGCE.js +191 -0
  17. package/dist/{chunk-GT46FPXN.js → chunk-KEWVSO64.js} +18 -8
  18. package/dist/chunk-KZ6ZHF5J.js +294 -0
  19. package/dist/chunk-O6K2ODUE.js +318 -0
  20. package/dist/chunk-QL6R6TSK.js +25215 -0
  21. package/dist/{chunk-4SGZG4XY.js → chunk-RWXIXOZG.js} +28 -13
  22. package/dist/{chunk-YA6SMTXG.js → chunk-S5PONFBM.js} +5 -4
  23. package/dist/{chunk-4NN5IWVN.js → chunk-T6OSFQZD.js} +2 -0
  24. package/dist/{chunk-PTE56QPL.js → chunk-TKHSULJT.js} +6 -0
  25. package/dist/{chunk-6EIJSNBD.js → chunk-Y74WTIKJ.js} +2 -0
  26. package/dist/{client-TKG4WBHN.js → client-N7NGZUNI.js} +6 -4
  27. package/dist/{community-report-client-FI4LNVYS.js → community-report-client-6OL6GBQW.js} +3 -3
  28. package/dist/{config-RE6CMGPK.js → config-XNMACCKX.js} +10 -8
  29. package/dist/{data-integration-XQYB4X4F.js → data-integration-4NZGZ45E.js} +2502 -272
  30. package/dist/index.js +137 -1245
  31. package/dist/{local-data-upload-client-BWHSUQQK.js → local-data-upload-client-EFHDLXFG.js} +3 -3
  32. package/dist/{memory-YK33G4T7.js → memory-HBJQ2GC5.js} +8 -7
  33. package/dist/{metadata-UILXHBWF.js → metadata-62EWBEIG.js} +12 -11
  34. package/dist/{model-NR3JHFSJ.js → model-BHLJ2QMT.js} +10 -9
  35. package/dist/personal-semantic-preference-JBVMAI7L.js +240 -0
  36. package/dist/project-semantic-BQ4MPUS5.js +1115 -0
  37. package/dist/sync-MUWPRM5I.js +522 -0
  38. package/dist/{te-agent-4BKBODMF.js → te-agent-WQZTMEK4.js} +12 -10
  39. package/dist/{te-analysis-O6DCO6BS.js → te-analysis-MNCG65LU.js} +534 -48
  40. package/dist/{te-community-HLC43QKH.js → te-community-BNE6KREL.js} +8 -7
  41. package/dist/{te-dataops-EJP56W3K.js → te-dataops-TXLKM2W6.js} +469 -68
  42. package/dist/{te-engage-FGBGQ4IY.js → te-engage-TPKLRVTL.js} +84 -10
  43. package/dist/{te-experiment-SO5MPDMJ.js → te-experiment-6BYKTCY7.js} +303 -12
  44. package/dist/{te-kb-SQCLHG6X.js → te-kb-BUD6N3NI.js} +312 -25
  45. package/dist/{te-system-YARIK4S5.js → te-system-44LZJDTQ.js} +573 -37
  46. package/dist/{te-team-EFKWYKMK.js → te-team-XMP47YXE.js} +10 -7
  47. package/dist/{update-OGPSZM5A.js → update-UODFOZ4P.js} +9 -7
  48. package/package.json +18 -9
  49. package/skills/ae-agent/SKILL.md +3 -4
  50. package/skills/ae-agent/references/edit-skill.md +3 -0
  51. package/skills/ae-agent/references/get-skill-content.md +1 -1
  52. package/skills/ae-agent/references/rescan-skills.md +15 -13
  53. package/skills/ae-agent/references/upload-skill.md +7 -4
  54. package/skills/ae-analysis/SKILL.md +45 -4
  55. package/skills/ae-analysis/metadata_resolution.md +38 -4
  56. package/skills/ae-analysis/references/analysis_data_retrieval.md +29 -0
  57. package/skills/ae-analysis/references/analysis_gateway_assets.md +1 -1
  58. package/skills/ae-analysis/references/asset_authentication_export.md +22 -0
  59. package/skills/ae-analysis/references/asset_authentication_list.md +18 -14
  60. package/skills/ae-analysis/references/asset_authentication_update.md +29 -14
  61. package/skills/ae-analysis/references/audience_models.md +18 -0
  62. package/skills/ae-analysis/references/command_index.md +19 -11
  63. package/skills/ae-analysis/references/dashboard_get.md +18 -1
  64. package/skills/ae-analysis/references/dashboard_update.md +3 -0
  65. package/skills/ae-analysis/references/personal_semantic_preference_add.md +23 -0
  66. package/skills/ae-analysis/references/personal_semantic_preference_delete.md +17 -0
  67. package/skills/ae-analysis/references/personal_semantic_preference_get.md +19 -0
  68. package/skills/ae-analysis/references/personal_semantic_preference_list.md +21 -0
  69. package/skills/ae-analysis/references/personal_semantic_preference_update.md +19 -0
  70. package/skills/ae-analysis/references/project_timezone_update.md +13 -4
  71. package/skills/ae-analysis/references/property_create.md +2 -0
  72. package/skills/ae-analysis/references/super_metadata_batch_create.md +2 -0
  73. package/skills/ae-analysis/references/user_cluster_models.md +2 -0
  74. package/skills/ae-analysis/references/user_cluster_update.md +8 -4
  75. package/skills/ae-analysis/references/user_tag_create.md +7 -1
  76. package/skills/ae-analysis/references/user_tag_models.md +8 -2
  77. package/skills/ae-data-integration/SKILL.md +24 -4
  78. package/skills/ae-data-integration/references/custom-layer.md +93 -0
  79. package/skills/ae-data-integration/references/error-handling.md +145 -0
  80. package/skills/ae-data-integration/references/handoff.md +77 -18
  81. package/skills/ae-data-integration/references/local-analysis.md +1 -1
  82. package/skills/ae-data-integration/references/reuse.md +9 -5
  83. package/skills/ae-data-integration/references/sink-upload.md +1 -1
  84. package/skills/ae-data-integration/references/source-inspect.md +35 -13
  85. package/skills/ae-data-integration/references/tracking-plan.md +7 -5
  86. package/skills/ae-data-integration/references/transform.md +12 -10
  87. package/skills/ae-data-integration/references/ue-mapping.md +33 -11
  88. package/skills/ae-data-integration/references/ue-routing.md +23 -0
  89. package/skills/ae-dataops/SKILL.md +11 -1
  90. package/skills/ae-dataops/references/dataops-backfill.md +135 -0
  91. package/skills/ae-engage/SKILL.md +5 -0
  92. package/skills/ae-engage/references/build-task-save-guide.md +14 -1
  93. package/skills/ae-engage/references/save-flow.md +37 -1
  94. package/skills/ae-engage/references/save-task.md +88 -0
  95. package/skills/ae-experiment/SKILL.md +14 -4
  96. package/skills/ae-experiment/references/manage_feature_whitelist.md +66 -0
  97. package/skills/ae-experiment/references/manage_guardrail_metrics.md +26 -0
  98. package/skills/ae-experiment/references/save_experiment.md +1 -1
  99. package/skills/ae-experiment/references/save_metric.md +20 -8
  100. package/skills/ae-kb/SKILL.md +121 -10
  101. package/skills/ae-project-semantic/SKILL.md +193 -0
  102. package/skills/ae-project-semantic/references/query-routing-v5.md +165 -0
  103. package/skills/ae-project-semantic/references/recommendation-quality.md +68 -0
  104. package/skills/ae-system/SKILL.md +28 -30
  105. package/skills/ae-system/references/channel-management.md +303 -0
  106. package/dist/auth-2WTQOP77.js +0 -14
  107. package/dist/capability-PJHNI4GJ.js +0 -315
  108. package/dist/chunk-4KVPKXFX.js +0 -98
  109. package/dist/chunk-C4MGVGJW.js +0 -13
  110. package/dist/chunk-P3FGXJTU.js +0 -349
  111. package/dist/chunk-QGM4M3NI.js +0 -37
  112. package/dist/chunk-RGKJGKT7.js +0 -71
  113. package/dist/chunk-SAU3QFIQ.js +0 -556
  114. package/dist/chunk-VPKZ7I72.js +0 -509
  115. package/dist/chunk-ZZUOD757.js +0 -598
  116. package/dist/memory-CHRU2F7W.js +0 -893
  117. package/dist/metadata-XXR34N5P.js +0 -339
  118. package/dist/model-K3KLWIW6.js +0 -139
  119. package/dist/sync-FCKOVWWS.js +0 -10261
  120. package/dist/te-agent-HLW4VTQK.js +0 -3893
  121. package/dist/te-analysis-ZMNGOVNW.js +0 -8958
  122. package/dist/te-community-6HPBWJUZ.js +0 -1859
  123. package/dist/te-dataops-HDRUXY4K.js +0 -2208
  124. package/dist/te-engage-RAK5PESW.js +0 -4898
  125. package/dist/te-experiment-VZF7BT6G.js +0 -770
  126. package/dist/te-system-Z77IKZFN.js +0 -2213
@@ -1,770 +0,0 @@
1
- import {
2
- createCapabilityCommand
3
- } from "./chunk-RGKJGKT7.js";
4
- import {
5
- registerCapabilityGatewayRoute
6
- } from "./chunk-PTE56QPL.js";
7
- import "./chunk-GT46FPXN.js";
8
- import "./chunk-P3FGXJTU.js";
9
- import "./chunk-C4MGVGJW.js";
10
- import "./chunk-4SGZG4XY.js";
11
- import "./chunk-ZZUOD757.js";
12
- import "./chunk-UW5UN47B.js";
13
- import "./chunk-LYVNONC4.js";
14
- import "./chunk-QGM4M3NI.js";
15
-
16
- // src/commands/te-experiment/capability-shared.ts
17
- function createExperimentCapabilityCommand(config) {
18
- return createCapabilityCommand({
19
- ...config,
20
- cliService: "experiment",
21
- gatewayDomain: "engage"
22
- });
23
- }
24
- function readRequiredObject(ctx, name) {
25
- const value = ctx.json(name);
26
- if (!value || typeof value !== "object" || Array.isArray(value)) {
27
- throw new Error(`Flag --${name} must be a JSON object`);
28
- }
29
- return value;
30
- }
31
- function readRequiredStringArray(ctx, name) {
32
- const value = ctx.json(name);
33
- if (!Array.isArray(value) || value.length === 0 || !value.every((item) => typeof item === "string" && item.length > 0)) {
34
- throw new Error(`Flag --${name} must be a non-empty JSON array of strings`);
35
- }
36
- return value;
37
- }
38
- function addOptionalString(input, name, value) {
39
- if (value !== "") input[name] = value;
40
- }
41
- function addOptionalBoolean(input, ctx, flagName, fieldName) {
42
- if (ctx.str(flagName) !== "") input[fieldName] = ctx.bool(flagName);
43
- }
44
-
45
- // src/commands/te-experiment/bucket/list.ts
46
- var bucketList = createExperimentCapabilityCommand({
47
- resource: "bucket",
48
- command: "list",
49
- capabilityId: "experiment.bucket.list",
50
- description: "List split buckets in a project.",
51
- flags: [{ name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." }],
52
- risk: "read",
53
- buildInput: (ctx) => ({ project_id: ctx.num("project-id") })
54
- });
55
-
56
- // src/commands/te-experiment/experiment/batch-delete.ts
57
- var experimentBatchDelete = createExperimentCapabilityCommand({
58
- resource: "experiment",
59
- command: "batch-delete",
60
- capabilityId: "experiment.experiment.batch-delete",
61
- description: "Batch delete experiments.",
62
- flags: [
63
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
64
- { name: "exp-ids", type: "json", required: true, desc: "Experiment IDs as a JSON string array." }
65
- ],
66
- risk: "high-risk-write",
67
- validate: (ctx) => {
68
- readRequiredStringArray(ctx, "exp-ids");
69
- },
70
- buildInput: (ctx) => ({
71
- project_id: ctx.num("project-id"),
72
- exp_ids: readRequiredStringArray(ctx, "exp-ids")
73
- })
74
- });
75
-
76
- // src/commands/te-experiment/experiment/conflict-check.ts
77
- function buildInput(ctx) {
78
- const input = {
79
- project_id: ctx.num("project-id"),
80
- feature_key_list: readRequiredStringArray(ctx, "feature-key-list"),
81
- traffic_layer_id: ctx.str("traffic-layer-id")
82
- };
83
- addOptionalString(input, "exp_id", ctx.str("exp-id"));
84
- return input;
85
- }
86
- var experimentConflictCheck = createExperimentCapabilityCommand({
87
- resource: "experiment",
88
- command: "conflict-check",
89
- capabilityId: "experiment.experiment.conflict-check",
90
- description: "Pre-submit check for cross-layer Feature conflicts on a non-mutex traffic layer.",
91
- flags: [
92
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
93
- {
94
- name: "feature-key-list",
95
- type: "json",
96
- required: true,
97
- desc: "Feature keys selected by the current experiment as a JSON string array."
98
- },
99
- {
100
- name: "traffic-layer-id",
101
- type: "string",
102
- required: true,
103
- desc: "Selected non-mutex traffic layer ID."
104
- },
105
- {
106
- name: "exp-id",
107
- type: "string",
108
- required: false,
109
- desc: "Current experiment ID when editing an existing draft."
110
- }
111
- ],
112
- risk: "read",
113
- validate: (ctx) => {
114
- readRequiredStringArray(ctx, "feature-key-list");
115
- if (ctx.str("traffic-layer-id") === "") {
116
- throw new Error("Flag --traffic-layer-id is required");
117
- }
118
- },
119
- buildInput
120
- });
121
-
122
- // src/commands/te-experiment/experiment/get.ts
123
- var experimentGet = createExperimentCapabilityCommand({
124
- resource: "experiment",
125
- command: "get",
126
- capabilityId: "experiment.experiment.get",
127
- description: "Get one experiment by ID.",
128
- flags: [
129
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
130
- { name: "exp-id", type: "string", required: true, desc: "Experiment ID." }
131
- ],
132
- risk: "read",
133
- buildInput: (ctx) => ({ project_id: ctx.num("project-id"), exp_id: ctx.str("exp-id") })
134
- });
135
-
136
- // src/commands/te-experiment/experiment/list.ts
137
- function buildInput2(ctx) {
138
- const input = {
139
- project_id: ctx.num("project-id")
140
- };
141
- addOptionalString(input, "status", ctx.str("status"));
142
- addOptionalString(input, "traffic_layer_id", ctx.str("traffic-layer-id"));
143
- addOptionalString(input, "group_id", ctx.str("group-id"));
144
- addOptionalString(input, "query_name", ctx.str("query-name"));
145
- return input;
146
- }
147
- var experimentList = createExperimentCapabilityCommand({
148
- resource: "experiment",
149
- command: "list",
150
- capabilityId: "experiment.experiment.list",
151
- description: "List experiments in a project with optional status, traffic layer, group, and name filters.",
152
- flags: [
153
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
154
- {
155
- name: "status",
156
- type: "string",
157
- required: false,
158
- desc: "Experiment status filter: draft, testing, pending, running, paused, ended, or archive."
159
- },
160
- {
161
- name: "traffic-layer-id",
162
- type: "string",
163
- required: false,
164
- desc: "Traffic layer ID filter."
165
- },
166
- {
167
- name: "group-id",
168
- type: "string",
169
- required: false,
170
- desc: "Business group ID filter."
171
- },
172
- {
173
- name: "query-name",
174
- type: "string",
175
- required: false,
176
- desc: "Fuzzy match against experiment name (exp_name LIKE)."
177
- }
178
- ],
179
- risk: "read",
180
- buildInput: buildInput2
181
- });
182
-
183
- // src/commands/te-experiment/experiment/list-archived.ts
184
- var experimentListArchived = createExperimentCapabilityCommand({
185
- resource: "experiment",
186
- command: "list-archived",
187
- capabilityId: "experiment.experiment.list-archived",
188
- description: "List archived experiments in a project.",
189
- flags: [{ name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." }],
190
- risk: "read",
191
- buildInput: (ctx) => ({ project_id: ctx.num("project-id") })
192
- });
193
-
194
- // src/commands/te-experiment/experiment/manage.ts
195
- var targetStatuses = ["draft", "testing", "pending", "running", "paused", "ended", "archive"];
196
- function buildInput3(ctx) {
197
- const input = {
198
- project_id: ctx.num("project-id"),
199
- exp_id: ctx.str("exp-id"),
200
- target_status: ctx.str("target-status")
201
- };
202
- addOptionalString(input, "remark", ctx.str("remark"));
203
- return input;
204
- }
205
- var experimentManage = createExperimentCapabilityCommand({
206
- resource: "experiment",
207
- command: "manage",
208
- capabilityId: "experiment.experiment.manage",
209
- description: "Update an experiment status.",
210
- flags: [
211
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
212
- { name: "exp-id", type: "string", required: true, desc: "Experiment ID." },
213
- { name: "target-status", type: "string", required: true, desc: "Target experiment status." },
214
- { name: "remark", type: "string", required: false, desc: "Operation remark." }
215
- ],
216
- risk: "write",
217
- validate: (ctx) => {
218
- const value = ctx.str("target-status");
219
- if (!targetStatuses.includes(value)) {
220
- throw new Error(`Flag --target-status must be one of: ${targetStatuses.join(", ")}`);
221
- }
222
- },
223
- buildInput: buildInput3
224
- });
225
-
226
- // src/commands/te-experiment/experiment/ready-check.ts
227
- var experimentReadyCheck = createExperimentCapabilityCommand({
228
- resource: "experiment",
229
- command: "ready-check",
230
- capabilityId: "experiment.experiment.ready-check",
231
- description: "Check whether an experiment is ready for an online status transition.",
232
- flags: [
233
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
234
- { name: "exp-id", type: "string", required: true, desc: "Experiment ID." }
235
- ],
236
- risk: "read",
237
- buildInput: (ctx) => ({ project_id: ctx.num("project-id"), exp_id: ctx.str("exp-id") })
238
- });
239
-
240
- // src/commands/te-experiment/experiment/save.ts
241
- var experimentSave = createExperimentCapabilityCommand({
242
- resource: "experiment",
243
- command: "save",
244
- capabilityId: "experiment.experiment.save",
245
- description: "Create or update an experiment draft.",
246
- flags: [
247
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
248
- {
249
- name: "req",
250
- type: "json",
251
- required: true,
252
- desc: "Native camelCase request; custom audiences use targeting.definitionRequest, never targetConfig."
253
- }
254
- ],
255
- risk: "write",
256
- validate: (ctx) => {
257
- readRequiredObject(ctx, "req");
258
- },
259
- buildInput: (ctx) => ({ project_id: ctx.num("project-id"), req: readRequiredObject(ctx, "req") })
260
- });
261
-
262
- // src/commands/te-experiment/experiment/update-group.ts
263
- var experimentUpdateGroup = createExperimentCapabilityCommand({
264
- resource: "experiment",
265
- command: "update-group",
266
- capabilityId: "experiment.experiment.update-group",
267
- description: "Update the business group of one experiment.",
268
- flags: [
269
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
270
- { name: "exp-id", type: "string", required: true, desc: "Experiment ID." },
271
- {
272
- name: "group-id",
273
- type: "string",
274
- required: true,
275
- desc: 'Target business group ID. Use "0" for ungrouped.'
276
- }
277
- ],
278
- risk: "write",
279
- buildInput: (ctx) => ({
280
- project_id: ctx.num("project-id"),
281
- exp_id: ctx.str("exp-id"),
282
- group_id: ctx.str("group-id")
283
- })
284
- });
285
-
286
- // src/commands/te-experiment/feature/batch-delete.ts
287
- var featureBatchDelete = createExperimentCapabilityCommand({
288
- resource: "feature",
289
- command: "batch-delete",
290
- capabilityId: "experiment.feature.batch-delete",
291
- description: "Batch delete Features.",
292
- flags: [
293
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
294
- { name: "req", type: "json", required: true, desc: "Native camelCase Feature delete request object." }
295
- ],
296
- risk: "high-risk-write",
297
- validate: (ctx) => {
298
- readRequiredObject(ctx, "req");
299
- },
300
- buildInput: (ctx) => ({ project_id: ctx.num("project-id"), req: readRequiredObject(ctx, "req") })
301
- });
302
-
303
- // src/commands/te-experiment/feature/get.ts
304
- function buildInput4(ctx) {
305
- const input = {
306
- project_id: ctx.num("project-id"),
307
- feature_key: ctx.str("feature-key")
308
- };
309
- addOptionalString(input, "version", ctx.str("version"));
310
- return input;
311
- }
312
- var featureGet = createExperimentCapabilityCommand({
313
- resource: "feature",
314
- command: "get",
315
- capabilityId: "experiment.feature.get",
316
- description: "Get one Feature by key and optional version.",
317
- flags: [
318
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
319
- { name: "feature-key", type: "string", required: true, desc: "Feature key." },
320
- { name: "version", type: "string", required: false, desc: "Feature version ID." }
321
- ],
322
- risk: "read",
323
- buildInput: buildInput4
324
- });
325
-
326
- // src/commands/te-experiment/feature/list.ts
327
- var featureList = createExperimentCapabilityCommand({
328
- resource: "feature",
329
- command: "list",
330
- capabilityId: "experiment.feature.list",
331
- description: "List Features in a project.",
332
- flags: [{ name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." }],
333
- risk: "read",
334
- buildInput: (ctx) => ({ project_id: ctx.num("project-id") })
335
- });
336
-
337
- // src/commands/te-experiment/feature/save.ts
338
- var featureSave = createExperimentCapabilityCommand({
339
- resource: "feature",
340
- command: "save",
341
- capabilityId: "experiment.feature.save",
342
- description: "Create or update a Feature.",
343
- flags: [
344
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
345
- { name: "req", type: "json", required: true, desc: "Native camelCase Feature save request object." }
346
- ],
347
- risk: "write",
348
- validate: (ctx) => {
349
- readRequiredObject(ctx, "req");
350
- },
351
- buildInput: (ctx) => ({ project_id: ctx.num("project-id"), req: readRequiredObject(ctx, "req") })
352
- });
353
-
354
- // src/commands/te-experiment/feature/update-status.ts
355
- var featureUpdateStatus = createExperimentCapabilityCommand({
356
- resource: "feature",
357
- command: "update-status",
358
- capabilityId: "experiment.feature.update-status",
359
- description: "Update a Feature status.",
360
- flags: [
361
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
362
- { name: "req", type: "json", required: true, desc: "Native camelCase Feature status request object." }
363
- ],
364
- risk: "write",
365
- validate: (ctx) => {
366
- readRequiredObject(ctx, "req");
367
- },
368
- buildInput: (ctx) => ({ project_id: ctx.num("project-id"), req: readRequiredObject(ctx, "req") })
369
- });
370
-
371
- // src/commands/te-experiment/feature/version-list.ts
372
- var featureVersionList = createExperimentCapabilityCommand({
373
- resource: "feature",
374
- command: "version-list",
375
- capabilityId: "experiment.feature.version-list",
376
- description: "List Feature version history for one Feature key.",
377
- flags: [
378
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
379
- { name: "feature-key", type: "string", required: true, desc: "Feature key." }
380
- ],
381
- risk: "read",
382
- buildInput: (ctx) => ({
383
- project_id: ctx.num("project-id"),
384
- feature_key: ctx.str("feature-key")
385
- })
386
- });
387
-
388
- // src/commands/te-experiment/feature/operation-log/query.ts
389
- var featureOperationLogQuery = createExperimentCapabilityCommand({
390
- resource: "feature operation-log",
391
- command: "query",
392
- capabilityId: "experiment.feature.operation-log.query",
393
- description: "Query Feature operation logs for one Feature key.",
394
- flags: [
395
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
396
- { name: "feature-key", type: "string", required: true, desc: "Feature key." }
397
- ],
398
- risk: "read",
399
- buildInput: (ctx) => ({
400
- project_id: ctx.num("project-id"),
401
- feature_key: ctx.str("feature-key")
402
- })
403
- });
404
-
405
- // src/commands/te-experiment/metric/delete.ts
406
- var metricDelete = createExperimentCapabilityCommand({
407
- resource: "metric",
408
- command: "delete",
409
- capabilityId: "experiment.metric.delete",
410
- description: "Delete one experiment metric.",
411
- flags: [
412
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
413
- { name: "metric-id", type: "string", required: true, desc: "Metric ID." }
414
- ],
415
- risk: "high-risk-write",
416
- buildInput: (ctx) => ({ project_id: ctx.num("project-id"), metric_id: ctx.str("metric-id") })
417
- });
418
-
419
- // src/commands/te-experiment/metric/get.ts
420
- var metricGet = createExperimentCapabilityCommand({
421
- resource: "metric",
422
- command: "get",
423
- capabilityId: "experiment.metric.get",
424
- description: "Get one experiment metric by ID.",
425
- flags: [
426
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
427
- { name: "metric-id", type: "string", required: true, desc: "Metric ID." }
428
- ],
429
- risk: "read",
430
- buildInput: (ctx) => ({ project_id: ctx.num("project-id"), metric_id: ctx.str("metric-id") })
431
- });
432
-
433
- // src/commands/te-experiment/metric/list.ts
434
- var metricList = createExperimentCapabilityCommand({
435
- resource: "metric",
436
- command: "list",
437
- capabilityId: "experiment.metric.list",
438
- description: "List experiment metrics in a project.",
439
- flags: [{ name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." }],
440
- risk: "read",
441
- buildInput: (ctx) => ({ project_id: ctx.num("project-id") })
442
- });
443
-
444
- // src/commands/te-experiment/metric/save.ts
445
- var metricSave = createExperimentCapabilityCommand({
446
- resource: "metric",
447
- command: "save",
448
- capabilityId: "experiment.metric.save",
449
- description: "Create or update an experiment metric.",
450
- flags: [
451
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
452
- {
453
- name: "req",
454
- type: "json",
455
- required: true,
456
- desc: "Native camelCase request; use metricDefinition, never metricConfig or calcType."
457
- }
458
- ],
459
- risk: "write",
460
- validate: (ctx) => {
461
- readRequiredObject(ctx, "req");
462
- },
463
- buildInput: (ctx) => ({ project_id: ctx.num("project-id"), req: readRequiredObject(ctx, "req") })
464
- });
465
-
466
- // src/commands/te-experiment/operation-log/query.ts
467
- var operationLogQuery = createExperimentCapabilityCommand({
468
- resource: "operation-log",
469
- command: "query",
470
- capabilityId: "experiment.operation-log.query",
471
- description: "Query full operation logs for one experiment, including remark and structured changes.",
472
- flags: [
473
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
474
- { name: "exp-id", type: "string", required: true, desc: "Experiment ID." }
475
- ],
476
- risk: "read",
477
- buildInput: (ctx) => ({
478
- project_id: ctx.num("project-id"),
479
- exp_id: ctx.str("exp-id")
480
- })
481
- });
482
-
483
- // src/commands/te-experiment/save/build-guide.ts
484
- var saveBuildGuide = createExperimentCapabilityCommand({
485
- resource: "save",
486
- command: "build-guide",
487
- capabilityId: "experiment.save.build-guide",
488
- description: "Build a read-only save guide for feature, traffic layer, experiment, or metric saves. WARNING: data.guide.example_args.req keys are recursively snake_cased for display; do not copy them into --req. Final save DTOs require camelCase (e.g. expName). Prefer capability inspect <final-save-id> input_schema.properties.req.",
489
- flags: [
490
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
491
- {
492
- name: "operation-mode",
493
- type: "string",
494
- required: true,
495
- desc: "Save operation mode: save_feature, save_traffic_layer, save_experiment, or save_metric."
496
- }
497
- ],
498
- risk: "read",
499
- validate: (ctx) => {
500
- const mode = ctx.str("operation-mode");
501
- if (!["save_feature", "save_traffic_layer", "save_experiment", "save_metric"].includes(mode)) {
502
- throw new Error("Flag --operation-mode must be one of: save_feature, save_traffic_layer, save_experiment, save_metric");
503
- }
504
- },
505
- buildInput: (ctx) => ({
506
- project_id: ctx.num("project-id"),
507
- operation_mode: ctx.str("operation-mode")
508
- })
509
- });
510
-
511
- // src/commands/te-experiment/save/validate.ts
512
- var saveValidate = createExperimentCapabilityCommand({
513
- resource: "save",
514
- command: "validate",
515
- capabilityId: "experiment.save.validate",
516
- description: "Dry-run validation for feature, traffic layer, experiment, or metric save requests. WARNING: valid=true is not a final-save schema pass; snake_case req keys (e.g. exp_name) can still fail on experiment \u2026 save. Always pass camelCase --req. Do not copy example_args.req key casing from this response.",
517
- flags: [
518
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
519
- {
520
- name: "operation-mode",
521
- type: "string",
522
- required: true,
523
- desc: "Save operation mode: save_feature, save_traffic_layer, save_experiment, or save_metric."
524
- },
525
- {
526
- name: "req",
527
- type: "json",
528
- required: true,
529
- desc: "Candidate camelCase save request object (expName/metricId/\u2026). Never use snake_case DTO keys."
530
- }
531
- ],
532
- risk: "read",
533
- validate: (ctx) => {
534
- const mode = ctx.str("operation-mode");
535
- if (!["save_feature", "save_traffic_layer", "save_experiment", "save_metric"].includes(mode)) {
536
- throw new Error("Flag --operation-mode must be one of: save_feature, save_traffic_layer, save_experiment, save_metric");
537
- }
538
- readRequiredObject(ctx, "req");
539
- },
540
- buildInput: (ctx) => ({
541
- project_id: ctx.num("project-id"),
542
- operation_mode: ctx.str("operation-mode"),
543
- req: readRequiredObject(ctx, "req")
544
- })
545
- });
546
-
547
- // src/commands/te-experiment/report/metric-trend.ts
548
- var reportMetricTrend = createExperimentCapabilityCommand({
549
- resource: "report",
550
- command: "metric-trend",
551
- capabilityId: "experiment.report.metric-trend",
552
- description: "Query an experiment metric trend report for a date range.",
553
- flags: [
554
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
555
- { name: "exp-id", type: "string", required: true, desc: "Experiment ID." },
556
- { name: "metric-id", type: "string", required: true, desc: "Metric ID." },
557
- { name: "start-time", type: "string", required: true, desc: "Start date in yyyy-MM-dd format." },
558
- { name: "end-time", type: "string", required: true, desc: "End date in yyyy-MM-dd format." },
559
- {
560
- name: "request-id",
561
- type: "string",
562
- required: false,
563
- desc: "Optional caller-supplied cli_<32 lowercase hex> lifecycle ID. ae-cli generates and prints one before dispatch when omitted."
564
- },
565
- { name: "force-refresh", type: "boolean", required: false, desc: "Force refresh report data." }
566
- ],
567
- risk: "read",
568
- buildInput: (ctx) => {
569
- const input = {
570
- project_id: ctx.num("project-id"),
571
- exp_id: ctx.str("exp-id"),
572
- metric_id: ctx.str("metric-id"),
573
- start_time: ctx.str("start-time"),
574
- end_time: ctx.str("end-time")
575
- };
576
- addOptionalString(input, "request_id", ctx.str("request-id"));
577
- addOptionalBoolean(input, ctx, "force-refresh", "force_refresh");
578
- return input;
579
- }
580
- });
581
-
582
- // src/commands/te-experiment/report/sample-size.ts
583
- var reportSampleSize = createExperimentCapabilityCommand({
584
- resource: "report",
585
- command: "sample-size",
586
- capabilityId: "experiment.report.sample-size",
587
- description: "Query an experiment sample-size report for a date range.",
588
- flags: [
589
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
590
- { name: "exp-id", type: "string", required: true, desc: "Experiment ID." },
591
- { name: "start-time", type: "string", required: true, desc: "Start date in yyyy-MM-dd format." },
592
- { name: "end-time", type: "string", required: true, desc: "End date in yyyy-MM-dd format." },
593
- {
594
- name: "request-id",
595
- type: "string",
596
- required: false,
597
- desc: "Optional caller-supplied cli_<32 lowercase hex> lifecycle ID. ae-cli generates and prints one before dispatch when omitted."
598
- },
599
- { name: "force-refresh", type: "boolean", required: false, desc: "Force refresh report data." },
600
- { name: "by-hour", type: "boolean", required: false, desc: "Break results down by hour." }
601
- ],
602
- risk: "read",
603
- buildInput: (ctx) => {
604
- const input = {
605
- project_id: ctx.num("project-id"),
606
- exp_id: ctx.str("exp-id"),
607
- start_time: ctx.str("start-time"),
608
- end_time: ctx.str("end-time")
609
- };
610
- addOptionalString(input, "request_id", ctx.str("request-id"));
611
- addOptionalBoolean(input, ctx, "force-refresh", "force_refresh");
612
- addOptionalBoolean(input, ctx, "by-hour", "by_hour");
613
- return input;
614
- }
615
- });
616
-
617
- // src/commands/te-experiment/report/summary.ts
618
- var reportSummary = createExperimentCapabilityCommand({
619
- resource: "report",
620
- command: "summary",
621
- capabilityId: "experiment.report.summary",
622
- description: "Query an experiment report summary.",
623
- flags: [
624
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
625
- { name: "exp-id", type: "string", required: true, desc: "Experiment ID." },
626
- { name: "force-refresh", type: "boolean", required: false, desc: "Force refresh report data." }
627
- ],
628
- risk: "read",
629
- buildInput: (ctx) => {
630
- const input = {
631
- project_id: ctx.num("project-id"),
632
- exp_id: ctx.str("exp-id")
633
- };
634
- addOptionalBoolean(input, ctx, "force-refresh", "force_refresh");
635
- return input;
636
- }
637
- });
638
-
639
- // src/commands/te-experiment/traffic-layer/batch-delete.ts
640
- var trafficLayerBatchDelete = createExperimentCapabilityCommand({
641
- resource: "traffic-layer",
642
- command: "batch-delete",
643
- capabilityId: "experiment.traffic-layer.batch-delete",
644
- description: "Batch delete traffic layers.",
645
- flags: [
646
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
647
- { name: "layer-ids", type: "json", required: true, desc: "Traffic layer IDs as a JSON string array." }
648
- ],
649
- risk: "high-risk-write",
650
- validate: (ctx) => {
651
- readRequiredStringArray(ctx, "layer-ids");
652
- },
653
- buildInput: (ctx) => ({
654
- project_id: ctx.num("project-id"),
655
- layer_ids: readRequiredStringArray(ctx, "layer-ids")
656
- })
657
- });
658
-
659
- // src/commands/te-experiment/traffic-layer/get.ts
660
- var trafficLayerGet = createExperimentCapabilityCommand({
661
- resource: "traffic-layer",
662
- command: "get",
663
- capabilityId: "experiment.traffic-layer.get",
664
- description: "Get one traffic layer by ID.",
665
- flags: [
666
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
667
- { name: "layer-id", type: "string", required: true, desc: "Traffic layer ID." }
668
- ],
669
- risk: "read",
670
- buildInput: (ctx) => ({ project_id: ctx.num("project-id"), layer_id: ctx.str("layer-id") })
671
- });
672
-
673
- // src/commands/te-experiment/traffic-layer/list.ts
674
- var trafficLayerList = createExperimentCapabilityCommand({
675
- resource: "traffic-layer",
676
- command: "list",
677
- capabilityId: "experiment.traffic-layer.list",
678
- description: "List traffic layers in a project.",
679
- flags: [{ name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." }],
680
- risk: "read",
681
- buildInput: (ctx) => ({ project_id: ctx.num("project-id") })
682
- });
683
-
684
- // src/commands/te-experiment/traffic-layer/save.ts
685
- var trafficLayerSave = createExperimentCapabilityCommand({
686
- resource: "traffic-layer",
687
- command: "save",
688
- capabilityId: "experiment.traffic-layer.save",
689
- description: "Create or update a traffic layer.",
690
- flags: [
691
- { name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
692
- { name: "req", type: "json", required: true, desc: "Native camelCase traffic layer save request object." }
693
- ],
694
- risk: "write",
695
- validate: (ctx) => {
696
- readRequiredObject(ctx, "req");
697
- },
698
- buildInput: (ctx) => ({ project_id: ctx.num("project-id"), req: readRequiredObject(ctx, "req") })
699
- });
700
-
701
- // src/commands/te-experiment/index.ts
702
- registerCapabilityGatewayRoute("experiment", { gatewayDomain: "engage" });
703
- var commands = [
704
- experimentSave,
705
- experimentList,
706
- experimentListArchived,
707
- experimentGet,
708
- experimentReadyCheck,
709
- experimentConflictCheck,
710
- experimentManage,
711
- experimentUpdateGroup,
712
- experimentBatchDelete,
713
- operationLogQuery,
714
- saveBuildGuide,
715
- saveValidate,
716
- trafficLayerSave,
717
- trafficLayerGet,
718
- trafficLayerList,
719
- trafficLayerBatchDelete,
720
- reportSummary,
721
- reportSampleSize,
722
- reportMetricTrend,
723
- metricSave,
724
- metricGet,
725
- metricList,
726
- metricDelete,
727
- featureSave,
728
- featureUpdateStatus,
729
- featureGet,
730
- featureList,
731
- featureVersionList,
732
- featureOperationLogQuery,
733
- featureBatchDelete,
734
- bucketList
735
- ];
736
- var te_experiment_default = commands;
737
- export {
738
- bucketList,
739
- te_experiment_default as default,
740
- experimentBatchDelete,
741
- experimentConflictCheck,
742
- experimentGet,
743
- experimentList,
744
- experimentListArchived,
745
- experimentManage,
746
- experimentReadyCheck,
747
- experimentSave,
748
- experimentUpdateGroup,
749
- featureBatchDelete,
750
- featureGet,
751
- featureList,
752
- featureOperationLogQuery,
753
- featureSave,
754
- featureUpdateStatus,
755
- featureVersionList,
756
- metricDelete,
757
- metricGet,
758
- metricList,
759
- metricSave,
760
- operationLogQuery,
761
- reportMetricTrend,
762
- reportSampleSize,
763
- reportSummary,
764
- saveBuildGuide,
765
- saveValidate,
766
- trafficLayerBatchDelete,
767
- trafficLayerGet,
768
- trafficLayerList,
769
- trafficLayerSave
770
- };