@thinkingai/ae-cli 6.0.52 → 6.0.53

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 (119) hide show
  1. package/README.md +7 -1
  2. package/README.zh.md +7 -1
  3. package/dist/{auth-XZNXFRJS.js → auth-LHM7NQPR.js} +167 -7
  4. package/dist/{capability-RJZ4KRGP.js → capability-F2RIR5DS.js} +11 -6
  5. package/dist/{chunk-57RRFUEZ.js → chunk-5XRQ3CZR.js} +4 -4
  6. package/dist/{chunk-L2QUIZTS.js → chunk-647BRKZK.js} +3 -3
  7. package/dist/{chunk-EQ255HKO.js → chunk-7WZACOAI.js} +2 -2
  8. package/dist/{chunk-DX5CDO34.js → chunk-BW7JUDEI.js} +84 -19
  9. package/dist/{chunk-7XGFSUOM.js → chunk-DU72X2IO.js} +271 -76
  10. package/dist/{chunk-V2NUHPXF.js → chunk-GK7WDY7E.js} +1 -1
  11. package/dist/{chunk-7FTTULED.js → chunk-IG3DYEIR.js} +4 -1
  12. package/dist/{chunk-HBGADCKA.js → chunk-KJDOTPYU.js} +3 -3
  13. package/dist/{chunk-4NRCTUZJ.js → chunk-KS4DE3MX.js} +4 -4
  14. package/dist/{chunk-JOCDD4ON.js → chunk-N4BLPJC7.js} +1 -1
  15. package/dist/{chunk-WEPZ5M3Z.js → chunk-PGCIKZRE.js} +7 -4
  16. package/dist/{chunk-HFGZGYCG.js → chunk-QYXDJOLA.js} +252 -6
  17. package/dist/{chunk-DVMLWQD4.js → chunk-SO5LKIWP.js} +2 -2
  18. package/dist/{chunk-MAPZ7VB6.js → chunk-YVGXGTD6.js} +13 -0
  19. package/dist/{community-report-client-CU22W53K.js → community-report-client-6VJDDMJJ.js} +1 -1
  20. package/dist/{config-XO3LI3SA.js → config-XQWOPDHN.js} +25 -6
  21. package/dist/{context-IFJI3LIT.js → context-M3HDGEIR.js} +4 -4
  22. package/dist/{data-integration-HNGUKFIC.js → data-integration-XBTCGXQT.js} +6 -6
  23. package/dist/index.js +77 -40
  24. package/dist/{local-data-upload-client-GTRIT64F.js → local-data-upload-client-3P7NIVQ4.js} +1 -1
  25. package/dist/{memory-QGPSNCQS.js → memory-6APEB2JB.js} +4 -4
  26. package/dist/{metadata-JAQW7KGZ.js → metadata-V5ZDTKWZ.js} +7 -7
  27. package/dist/{model-RNPQXIBI.js → model-ZS7HVGKN.js} +4 -4
  28. package/dist/{personal-semantic-preference-QCZ2IZTK.js → personal-semantic-preference-2XANU3F6.js} +8 -6
  29. package/dist/{project-semantic-64JURXKF.js → project-semantic-LP3LY7QP.js} +7 -7
  30. package/dist/{sync-O45NXEQY.js → sync-EQLSTUS7.js} +7 -7
  31. package/dist/{te-agent-K5MSPNHJ.js → te-agent-Z3HCTKR7.js} +348 -55
  32. package/dist/{te-analysis-KQKCAI5H.js → te-analysis-3EVYQ3IO.js} +803 -57
  33. package/dist/{te-community-4OYU3BDA.js → te-community-Z7JACGF3.js} +3 -3
  34. package/dist/{te-dataops-NFIPB6FX.js → te-dataops-F7GQOIS6.js} +644 -276
  35. package/dist/{te-engage-HSVSRW22.js → te-engage-LFBU6WWH.js} +6 -6
  36. package/dist/{te-kb-3TS73NO6.js → te-kb-QJLJEX5K.js} +323 -181
  37. package/dist/{te-system-STMHLS5J.js → te-system-IXC43QHZ.js} +6 -6
  38. package/dist/{te-team-3I5AOX3N.js → te-team-BIZIKIHZ.js} +6 -6
  39. package/dist/{update-RZXLPCRH.js → update-W2SGQNKT.js} +4 -4
  40. package/package.json +11 -4
  41. package/skills/ae-agent/SKILL.md +9 -4
  42. package/skills/ae-agent/references/notification.md +40 -0
  43. package/skills/ae-analysis/SKILL.md +64 -12
  44. package/skills/ae-analysis/references/agent_review_submit_to_page.md +2 -0
  45. package/skills/ae-analysis/references/ai_models/event.md +6 -1
  46. package/skills/ae-analysis/references/ai_models/funnel.md +7 -1
  47. package/skills/ae-analysis/references/ai_models/heat_map.md +23 -0
  48. package/skills/ae-analysis/references/ai_models/interval.md +24 -0
  49. package/skills/ae-analysis/references/ai_models/path.md +20 -0
  50. package/skills/ae-analysis/references/ai_models/prop_analysis.md +2 -0
  51. package/skills/ae-analysis/references/ai_models/rank_list.md +30 -0
  52. package/skills/ae-analysis/references/ai_models/retention.md +45 -1
  53. package/skills/ae-analysis/references/ai_models/revenue.md +20 -2
  54. package/skills/ae-analysis/references/ai_models/tag.md +2 -0
  55. package/skills/ae-analysis/references/ai_models.md +69 -0
  56. package/skills/ae-analysis/references/analysis_data_retrieval.md +4 -0
  57. package/skills/ae-analysis/references/asset_batch_info_export.md +10 -0
  58. package/skills/ae-analysis/references/asset_batch_sql_export.md +13 -1
  59. package/skills/ae-analysis/references/asset_export.md +12 -1
  60. package/skills/ae-analysis/references/asset_list.md +1 -0
  61. package/skills/ae-analysis/references/asset_search.md +11 -5
  62. package/skills/ae-analysis/references/bi_panel_list.md +1 -1
  63. package/skills/ae-analysis/references/catalog_list.md +1 -1
  64. package/skills/ae-analysis/references/collaboration.md +48 -0
  65. package/skills/ae-analysis/references/command_index.md +16 -15
  66. package/skills/ae-analysis/references/dashboard_list.md +4 -4
  67. package/skills/ae-analysis/references/dashboard_report_data_export.md +2 -0
  68. package/skills/ae-analysis/references/event_export.md +3 -1
  69. package/skills/ae-analysis/references/governance_recommendation_auto_review.md +71 -0
  70. package/skills/ae-analysis/references/governance_recommendation_export.md +11 -0
  71. package/skills/ae-analysis/references/metadata_resolution.md +3 -3
  72. package/skills/ae-analysis/references/metric_export.md +3 -1
  73. package/skills/ae-analysis/references/metric_list.md +1 -1
  74. package/skills/ae-analysis/references/operation_record_export.md +10 -0
  75. package/skills/ae-analysis/references/personal_semantic_preference_add.md +2 -2
  76. package/skills/ae-analysis/references/personal_semantic_preference_get.md +6 -4
  77. package/skills/ae-analysis/references/personal_semantic_preference_list.md +5 -3
  78. package/skills/ae-analysis/references/project_semantic_knowledge_wiki.md +1 -1
  79. package/skills/ae-analysis/references/property_export.md +3 -1
  80. package/skills/ae-analysis/references/report_create.md +4 -0
  81. package/skills/ae-analysis/references/report_data_export.md +6 -0
  82. package/skills/ae-analysis/references/report_get.md +2 -0
  83. package/skills/ae-analysis/references/report_list.md +5 -5
  84. package/skills/ae-analysis/references/report_update.md +6 -0
  85. package/skills/ae-analysis/references/sql_table_columns.md +4 -4
  86. package/skills/ae-analysis/references/sql_table_list.md +5 -5
  87. package/skills/ae-analysis/references/user_cluster_models.md +8 -0
  88. package/skills/ae-analysis/references/user_tag_create.md +7 -1
  89. package/skills/ae-analysis/references/user_tag_get.md +1 -1
  90. package/skills/ae-analysis/references/user_tag_models.md +18 -2
  91. package/skills/ae-analysis/references/user_tag_refresh.md +1 -1
  92. package/skills/ae-analysis/references/user_tag_update.md +2 -2
  93. package/skills/ae-capability/SKILL.md +63 -1
  94. package/skills/ae-capability/references/collaboration.md +48 -0
  95. package/skills/ae-community/SKILL.md +5 -1
  96. package/skills/ae-community/references/collaboration.md +48 -0
  97. package/skills/ae-data-integration/SKILL.md +4 -0
  98. package/skills/ae-data-integration/references/collaboration.md +48 -0
  99. package/skills/ae-dataops/SKILL.md +54 -74
  100. package/skills/ae-dataops/references/collaboration.md +48 -0
  101. package/skills/ae-dataops/references/dataops-backfill.md +23 -18
  102. package/skills/ae-dataops/references/dataops-flow-create.md +74 -23
  103. package/skills/ae-dataops/references/dataops-flow-monitor.md +45 -13
  104. package/skills/ae-dataops/references/dataops-integration.md +57 -30
  105. package/skills/ae-dataops/references/dataops-query.md +21 -4
  106. package/skills/ae-dataops/references/dataops-table.md +143 -11
  107. package/skills/ae-engage/SKILL.md +21 -6
  108. package/skills/ae-engage/references/channel-mgmt.md +3 -3
  109. package/skills/ae-engage/references/collaboration.md +48 -0
  110. package/skills/ae-engage/references/scene-config-channel.md +4 -4
  111. package/skills/ae-generate-tracking-plan/SKILL.md +4 -0
  112. package/skills/ae-generate-tracking-plan/references/collaboration.md +48 -0
  113. package/skills/ae-kb/SKILL.md +9 -1
  114. package/skills/ae-kb/references/collaboration.md +48 -0
  115. package/skills/ae-kb/references/schema-import.md +30 -0
  116. package/skills/ae-kb-discovery/SKILL.md +7 -2
  117. package/skills/ae-kb-discovery/references/collaboration.md +48 -0
  118. package/skills/ae-metadata/SKILL.md +20 -12
  119. package/skills/ae-metadata/references/collaboration.md +48 -0
@@ -11,17 +11,330 @@ import {
11
11
  putToMainApp,
12
12
  resolveTeClaudeBaseUrl,
13
13
  uploadToMainApp
14
- } from "./chunk-HBGADCKA.js";
14
+ } from "./chunk-KJDOTPYU.js";
15
15
  import {
16
16
  buildCapabilityGatewayUrl,
17
17
  callCapabilityApi
18
- } from "./chunk-HFGZGYCG.js";
18
+ } from "./chunk-QYXDJOLA.js";
19
19
  import "./chunk-Y74WTIKJ.js";
20
- import "./chunk-7XGFSUOM.js";
21
- import "./chunk-7FTTULED.js";
20
+ import "./chunk-DU72X2IO.js";
21
+ import "./chunk-IG3DYEIR.js";
22
22
  import {
23
23
  CliValidationError
24
- } from "./chunk-MAPZ7VB6.js";
24
+ } from "./chunk-YVGXGTD6.js";
25
+
26
+ // src/commands/te-agent/notifications.ts
27
+ import { openSync, closeSync, fstatSync, readSync } from "fs";
28
+
29
+ // src/commands/te-agent/approval-cli-client.ts
30
+ var APPROVAL_GATEWAY_DOMAIN = "approval";
31
+ var resolveApprovalApiBaseUrl = resolveTeClaudeBaseUrl;
32
+ function buildApprovalCliUrl(ctx, path) {
33
+ return buildCapabilityGatewayUrl(resolveApprovalApiBaseUrl(ctx.host()), APPROVAL_GATEWAY_DOMAIN, path);
34
+ }
35
+ function requestApprovalCli(ctx, method, path, body, options = {}) {
36
+ return callCapabilityApi(
37
+ ctx.host(),
38
+ APPROVAL_GATEWAY_DOMAIN,
39
+ path,
40
+ method,
41
+ body,
42
+ {
43
+ apiBaseUrl: resolveApprovalApiBaseUrl(ctx.host()),
44
+ ...options,
45
+ retryOnInvalidTokenForbidden: false
46
+ }
47
+ );
48
+ }
49
+ function getApprovalCli(ctx, path) {
50
+ return requestApprovalCli(ctx, "GET", path);
51
+ }
52
+ function postApprovalCli(ctx, path, body, options = {}) {
53
+ return requestApprovalCli(ctx, "POST", path, body, options);
54
+ }
55
+
56
+ // src/commands/te-agent/notifications.ts
57
+ var invalidUnicode = /[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/u;
58
+ var PREVIEW = "Dry-run is a local preview with zero business requests, not a permission check. Reading never marks notifications as read. Retry a send with the same client-request-id and identical content.";
59
+ var flag = (name, desc, type = "string", required = false, sensitive = false) => ({ name, desc, type, required, sensitive });
60
+ var validId = (value) => typeof value === "string" && value.length > 0 && value.length <= 191 && value.trim() === value && !/[\x00-\x1f\x7f]/.test(value);
61
+ function ids(ctx, key) {
62
+ const value = ctx.json(key);
63
+ if (!Array.isArray(value) || value.length < 1 || value.length > 100 || value.some((v) => !validId(v)))
64
+ throw new CliValidationError(
65
+ "Provide a JSON array of 1-100 non-empty user or notification IDs."
66
+ );
67
+ return value;
68
+ }
69
+ function identifier(ctx) {
70
+ const value = ctx.str("notificationId");
71
+ if (!validId(value))
72
+ throw new CliValidationError(
73
+ "--notification-id must be a non-empty ID of at most 191 characters."
74
+ );
75
+ return encodeURIComponent(value);
76
+ }
77
+ function sendBody(ctx) {
78
+ const title = ctx.str("title");
79
+ if (!title.trim() || [...title].length > 200 || invalidUnicode.test(title))
80
+ throw new CliValidationError(
81
+ "--title must contain 1-200 Unicode characters."
82
+ );
83
+ const hasBody = ctx.has?.("body") ?? !!ctx.str("body");
84
+ const file = ctx.str("bodyFile");
85
+ if (file && hasBody)
86
+ throw new CliValidationError("Use either --body or --body-file, not both.");
87
+ let body = ctx.str("body");
88
+ if (file) {
89
+ let descriptor;
90
+ try {
91
+ descriptor = openSync(file, "r");
92
+ if (!fstatSync(descriptor).isFile())
93
+ throw new Error("Not a regular file");
94
+ const bytes = Buffer.alloc(16385);
95
+ let count = 0;
96
+ while (count < bytes.length) {
97
+ const n = readSync(
98
+ descriptor,
99
+ bytes,
100
+ count,
101
+ bytes.length - count,
102
+ null
103
+ );
104
+ if (!n) break;
105
+ count += n;
106
+ }
107
+ if (count > 16384) throw new Error("Too large");
108
+ body = new TextDecoder("utf-8", { fatal: true }).decode(
109
+ bytes.subarray(0, count)
110
+ );
111
+ } catch {
112
+ throw new CliValidationError(
113
+ "--body-file must be a readable UTF-8 text file of at most 16 KiB."
114
+ );
115
+ } finally {
116
+ if (descriptor !== void 0) closeSync(descriptor);
117
+ }
118
+ }
119
+ if (Buffer.byteLength(body) > 16384 || invalidUnicode.test(body))
120
+ throw new CliValidationError(
121
+ "--body must be valid Unicode text of at most 16 KiB."
122
+ );
123
+ const format = ctx.str("bodyFormat") || "text";
124
+ if (!["text", "markdown"].includes(format))
125
+ throw new CliValidationError("--body-format must be text or markdown.");
126
+ const key = ctx.str("clientRequestId");
127
+ if (!/^[\x21-\x7e]{1,128}$/.test(key))
128
+ throw new CliValidationError(
129
+ "--client-request-id must contain 1-128 printable ASCII characters without spaces."
130
+ );
131
+ return {
132
+ to_user_ids: ids(ctx, "toUserIds"),
133
+ title,
134
+ body,
135
+ body_format: format,
136
+ client_request_id: key
137
+ };
138
+ }
139
+ function query(ctx, mode) {
140
+ const params = new URLSearchParams();
141
+ if (mode !== "count") {
142
+ const limit = ctx.optionalNum("limit") ?? 20;
143
+ if (!Number.isInteger(limit) || limit < 1 || limit > 100)
144
+ throw new CliValidationError(
145
+ "--limit must be an integer between 1 and 100."
146
+ );
147
+ params.set("limit", String(limit));
148
+ const cursor = ctx.str("cursor");
149
+ if (cursor) {
150
+ if (cursor.length > (mode === "recipients" ? 191 : 2048))
151
+ throw new CliValidationError("--cursor is too long.");
152
+ params.set("cursor", cursor);
153
+ }
154
+ }
155
+ if (mode === "recipients") {
156
+ if (ctx.str("query").length > 100)
157
+ throw new CliValidationError("--query exceeds 100 characters.");
158
+ if (ctx.str("query")) params.set("query", ctx.str("query"));
159
+ } else {
160
+ for (const key of ["source", "type"]) {
161
+ const value = ctx.str(key);
162
+ if (value && (!/^[a-z][a-z0-9._-]*$/.test(value) || value.length > (key === "source" ? 64 : 128)))
163
+ throw new CliValidationError(`--${key} is invalid.`);
164
+ if (value) params.set(key, value);
165
+ }
166
+ for (const [key, name] of [
167
+ ["createdFrom", "created_from"],
168
+ ["createdBefore", "created_before"]
169
+ ]) {
170
+ const value = ctx.str(key);
171
+ if (value && (!/^\d{4}-\d{2}-\d{2}T.*(?:Z|[+-]\d{2}:\d{2})$/.test(value) || !Number.isFinite(Date.parse(value))))
172
+ throw new CliValidationError(
173
+ `${name} must be an ISO 8601 timestamp with a timezone.`
174
+ );
175
+ if (value) params.set(name, value);
176
+ }
177
+ if (ctx.str("createdFrom") && ctx.str("createdBefore") && Date.parse(ctx.str("createdFrom")) >= Date.parse(ctx.str("createdBefore")))
178
+ throw new CliValidationError(
179
+ "--created-from must be earlier than --created-before."
180
+ );
181
+ if (mode === "list") {
182
+ const status = ctx.str("readStatus") || "all";
183
+ if (!["all", "unread", "read"].includes(status))
184
+ throw new CliValidationError(
185
+ "--read-status must be all, unread, or read."
186
+ );
187
+ params.set("read_status", status);
188
+ }
189
+ }
190
+ return params.toString() ? `?${params}` : "";
191
+ }
192
+ function command(name, description, flags, method, path, body) {
193
+ return {
194
+ service: "agent",
195
+ resource: "notification",
196
+ command: name,
197
+ description,
198
+ helpText: PREVIEW,
199
+ flags,
200
+ risk: method === "GET" ? "read" : "write",
201
+ validate(ctx) {
202
+ path(ctx);
203
+ body?.(ctx);
204
+ },
205
+ dryRun(ctx) {
206
+ const payload = body?.(ctx);
207
+ return {
208
+ method,
209
+ url: buildCapabilityGatewayUrl(
210
+ resolveApprovalApiBaseUrl(ctx.host()),
211
+ "agent",
212
+ path(ctx)
213
+ ),
214
+ ...payload ? {
215
+ body: name === "send" ? { ...payload, title: "[redacted]", body: "[redacted]" } : payload
216
+ } : {}
217
+ };
218
+ },
219
+ execute(ctx) {
220
+ return callCapabilityApi(
221
+ ctx.host(),
222
+ "agent",
223
+ path(ctx),
224
+ method,
225
+ body?.(ctx),
226
+ {
227
+ apiBaseUrl: resolveApprovalApiBaseUrl(ctx.host()),
228
+ retryOnInvalidTokenForbidden: false,
229
+ retryOnUnauthorized: true
230
+ }
231
+ );
232
+ }
233
+ };
234
+ }
235
+ var pagination = [
236
+ flag("limit", "Page size, 1-100 (default 20)", "number"),
237
+ flag("cursor", "Opaque cursor from the previous response")
238
+ ];
239
+ var filters = [
240
+ flag("source", "Exact producer filter"),
241
+ flag("type", "Exact notification type filter"),
242
+ flag("created-from", "Inclusive ISO 8601 creation timestamp"),
243
+ flag("created-before", "Exclusive ISO 8601 creation timestamp")
244
+ ];
245
+ var notificationRecipients = command(
246
+ "recipients",
247
+ "Find enabled recipients in your company, including yourself",
248
+ [flag("query", "Search by name or display name"), ...pagination],
249
+ "GET",
250
+ (ctx) => `notifications/recipients${query(ctx, "recipients")}`
251
+ );
252
+ var notificationSend = command(
253
+ "send",
254
+ "Send an in-app user notification to explicit recipients",
255
+ [
256
+ flag(
257
+ "to-user-ids",
258
+ "Recipient user IDs as a JSON array, 1-100 entries",
259
+ "json",
260
+ true
261
+ ),
262
+ flag(
263
+ "title",
264
+ "Notification title, up to 200 Unicode characters",
265
+ "string",
266
+ true,
267
+ true
268
+ ),
269
+ flag("body", "Notification body, at most 16 KiB", "string", false, true),
270
+ flag(
271
+ "body-file",
272
+ "UTF-8 text file, mutually exclusive with --body",
273
+ "string",
274
+ false,
275
+ true
276
+ ),
277
+ flag("body-format", "text (default) or markdown"),
278
+ flag(
279
+ "client-request-id",
280
+ "Required stable idempotency key; reuse for identical retries",
281
+ "string",
282
+ true,
283
+ true
284
+ )
285
+ ],
286
+ "POST",
287
+ () => "notifications",
288
+ sendBody
289
+ );
290
+ var notificationList = command(
291
+ "list",
292
+ "List your notifications without changing read state",
293
+ [
294
+ ...filters,
295
+ ...pagination,
296
+ flag("read-status", "all (default), unread, or read")
297
+ ],
298
+ "GET",
299
+ (ctx) => `notifications${query(ctx, "list")}`
300
+ );
301
+ var notificationGet = command(
302
+ "get",
303
+ "Read a notification and its opaque business data",
304
+ [flag("notification-id", "Notification ID", "string", true)],
305
+ "GET",
306
+ (ctx) => `notifications/${identifier(ctx)}`
307
+ );
308
+ var notificationUnreadCount = command(
309
+ "unread-count",
310
+ "Count your visible unread notifications",
311
+ filters,
312
+ "GET",
313
+ (ctx) => `notifications/unread-count${query(ctx, "count")}`
314
+ );
315
+ var notificationMarkRead = command(
316
+ "mark-read",
317
+ "Mark only the specified notifications as read",
318
+ [
319
+ flag(
320
+ "notification-ids",
321
+ "Notification IDs as a JSON array, 1-100 entries",
322
+ "json",
323
+ true
324
+ )
325
+ ],
326
+ "POST",
327
+ () => "notifications/read",
328
+ (ctx) => ({ notification_ids: ids(ctx, "notificationIds") })
329
+ );
330
+ var notificationCommands = [
331
+ notificationRecipients,
332
+ notificationSend,
333
+ notificationList,
334
+ notificationGet,
335
+ notificationUnreadCount,
336
+ notificationMarkRead
337
+ ];
25
338
 
26
339
  // src/commands/te-agent/api-client.ts
27
340
  function getAgentApi(ctx, path) {
@@ -248,37 +561,10 @@ var getAgent = {
248
561
  }
249
562
  };
250
563
 
251
- // src/commands/te-agent/approval-cli-client.ts
252
- var APPROVAL_GATEWAY_DOMAIN = "approval";
253
- var resolveApprovalApiBaseUrl = resolveTeClaudeBaseUrl;
254
- function buildApprovalCliUrl(ctx, path) {
255
- return buildCapabilityGatewayUrl(resolveApprovalApiBaseUrl(ctx.host()), APPROVAL_GATEWAY_DOMAIN, path);
256
- }
257
- function requestApprovalCli(ctx, method, path, body, options = {}) {
258
- return callCapabilityApi(
259
- ctx.host(),
260
- APPROVAL_GATEWAY_DOMAIN,
261
- path,
262
- method,
263
- body,
264
- {
265
- apiBaseUrl: resolveApprovalApiBaseUrl(ctx.host()),
266
- ...options,
267
- retryOnInvalidTokenForbidden: false
268
- }
269
- );
270
- }
271
- function getApprovalCli(ctx, path) {
272
- return requestApprovalCli(ctx, "GET", path);
273
- }
274
- function postApprovalCli(ctx, path, body, options = {}) {
275
- return requestApprovalCli(ctx, "POST", path, body, options);
276
- }
277
-
278
564
  // src/commands/te-agent/agent-context.ts
279
565
  function contextPath(ctx) {
280
- const query = ctx.bool("includeMcpCredentials") ? "?include_mcp_credentials=true" : "";
281
- return `agents/${encodeURIComponent(ctx.str("id"))}/context${query}`;
566
+ const query2 = ctx.bool("includeMcpCredentials") ? "?include_mcp_credentials=true" : "";
567
+ return `agents/${encodeURIComponent(ctx.str("id"))}/context${query2}`;
282
568
  }
283
569
  var getAgentContext = {
284
570
  service: "agent",
@@ -314,11 +600,11 @@ var agentIdFlag = {
314
600
  required: true,
315
601
  desc: "Personal Agent ID from agent +list-agents"
316
602
  };
317
- function requireId(ctx, key, flag) {
603
+ function requireId(ctx, key, flag2) {
318
604
  const value = ctx.str(key);
319
605
  if (!value || value !== value.trim() || value.length > 191) {
320
606
  throw new CliValidationError(
321
- `--${flag} must be a non-empty identifier of at most 191 characters`
607
+ `--${flag2} must be a non-empty identifier of at most 191 characters`
322
608
  );
323
609
  }
324
610
  return value;
@@ -536,10 +822,10 @@ function recipientsPath(ctx) {
536
822
  const limit = ctx.optionalNum("limit") ?? 20;
537
823
  if (!Number.isInteger(limit) || limit < 1 || limit > 50)
538
824
  throw new CliValidationError("--limit must be an integer between 1 and 50");
539
- const query = ctx.str("query").trim();
540
- if (query.length > 100) throw new CliValidationError("--query must not exceed 100 characters");
825
+ const query2 = ctx.str("query").trim();
826
+ if (query2.length > 100) throw new CliValidationError("--query must not exceed 100 characters");
541
827
  const params = new URLSearchParams({ limit: String(limit) });
542
- if (query) params.set("query", query);
828
+ if (query2) params.set("query", query2);
543
829
  if (ctx.str("cursor")) params.set("cursor", requireId(ctx, "cursor", "cursor"));
544
830
  return `recipients?${params}`;
545
831
  }
@@ -2932,8 +3218,8 @@ function buildListPath(ctx) {
2932
3218
  if (status) params.set("status", status);
2933
3219
  if (limit) params.set("limit", String(ctx.num("limit")));
2934
3220
  if (agentSpaceId) params.set("agentSpaceId", agentSpaceId);
2935
- const query = params.toString();
2936
- return query ? `${BASE_PATH6}?${query}` : BASE_PATH6;
3221
+ const query2 = params.toString();
3222
+ return query2 ? `${BASE_PATH6}?${query2}` : BASE_PATH6;
2937
3223
  }
2938
3224
  function validateList(ctx) {
2939
3225
  const status = optional(ctx.str("status"));
@@ -3191,12 +3477,12 @@ var updateAutomation = {
3191
3477
  // src/commands/te-agent/sandbox-tools.ts
3192
3478
  import {
3193
3479
  accessSync,
3194
- closeSync,
3480
+ closeSync as closeSync2,
3195
3481
  constants,
3196
3482
  existsSync as existsSync3,
3197
3483
  lstatSync,
3198
- openSync,
3199
- readSync,
3484
+ openSync as openSync2,
3485
+ readSync as readSync2,
3200
3486
  readdirSync,
3201
3487
  realpathSync
3202
3488
  } from "fs";
@@ -3211,12 +3497,12 @@ function hasControlCharacters(value) {
3211
3497
  }
3212
3498
  function readShimHeader(filePath, size) {
3213
3499
  const buffer = Buffer.alloc(Math.min(size, MAX_SHIM_BYTES));
3214
- const fd = openSync(filePath, "r");
3500
+ const fd = openSync2(filePath, "r");
3215
3501
  try {
3216
- const bytesRead = readSync(fd, buffer, 0, buffer.length, 0);
3502
+ const bytesRead = readSync2(fd, buffer, 0, buffer.length, 0);
3217
3503
  return buffer.toString("utf8", 0, bytesRead);
3218
3504
  } finally {
3219
- closeSync(fd);
3505
+ closeSync2(fd);
3220
3506
  }
3221
3507
  }
3222
3508
  function parseShim(filePath) {
@@ -3250,11 +3536,11 @@ function parseShim(filePath) {
3250
3536
  }
3251
3537
  const tool = values.get("tool") ?? "";
3252
3538
  const version = values.get("version") || "unknown";
3253
- const command = values.get("command") ?? "";
3539
+ const command2 = values.get("command") ?? "";
3254
3540
  const target = values.get("target") ?? "";
3255
3541
  const runtimeValue = values.get("runtime");
3256
3542
  const runtime = runtimeValue === "node" || runtimeValue === "native" ? runtimeValue : void 0;
3257
- if (!NAME_RE.test(tool) || !NAME_RE.test(command)) {
3543
+ if (!NAME_RE.test(tool) || !NAME_RE.test(command2)) {
3258
3544
  return {
3259
3545
  ...fallback,
3260
3546
  managed: true,
@@ -3266,7 +3552,7 @@ function parseShim(filePath) {
3266
3552
  ...fallback,
3267
3553
  managed: true,
3268
3554
  tool,
3269
- command,
3555
+ command: command2,
3270
3556
  reason: "invalid version or target marker"
3271
3557
  };
3272
3558
  }
@@ -3276,12 +3562,12 @@ function parseShim(filePath) {
3276
3562
  managed: true,
3277
3563
  tool,
3278
3564
  version,
3279
- command,
3565
+ command: command2,
3280
3566
  target,
3281
3567
  reason: "invalid runtime marker"
3282
3568
  };
3283
3569
  }
3284
- return { managed: true, tool, version, command, target, runtime };
3570
+ return { managed: true, tool, version, command: command2, target, runtime };
3285
3571
  } catch {
3286
3572
  return fallback;
3287
3573
  }
@@ -3678,8 +3964,8 @@ function buildQuery2(params) {
3678
3964
  for (const [key, value] of Object.entries(params)) {
3679
3965
  if (value !== void 0 && value !== "") searchParams.set(key, String(value));
3680
3966
  }
3681
- const query = searchParams.toString();
3682
- return query ? `?${query}` : "";
3967
+ const query2 = searchParams.toString();
3968
+ return query2 ? `?${query2}` : "";
3683
3969
  }
3684
3970
  function requestListPath(ctx) {
3685
3971
  return `requests${buildQuery2({
@@ -4089,6 +4375,7 @@ var retryApprovalEffect = {
4089
4375
 
4090
4376
  // src/commands/te-agent/index.ts
4091
4377
  var commands = [
4378
+ ...notificationCommands,
4092
4379
  // Agent CRUD
4093
4380
  listAgents,
4094
4381
  createAgent,
@@ -4194,5 +4481,11 @@ var commands = [
4194
4481
  ];
4195
4482
  var te_agent_default = commands;
4196
4483
  export {
4197
- te_agent_default as default
4484
+ te_agent_default as default,
4485
+ notificationGet,
4486
+ notificationList,
4487
+ notificationMarkRead,
4488
+ notificationRecipients,
4489
+ notificationSend,
4490
+ notificationUnreadCount
4198
4491
  };