neoagent 2.5.1 → 2.5.2-beta.1

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.
@@ -255,22 +255,32 @@ function hasAlreadySentProactiveMessage({ triggerSource, runState, deliveryState
255
255
  }
256
256
 
257
257
  function markProactiveMessageSent({ runState, deliveryState, content }) {
258
- const message = String(content || '');
259
- if (runState) {
260
- runState.messagingSent = true;
261
- runState.lastSentMessage = message;
262
- if (Array.isArray(runState.sentMessages)) {
263
- runState.sentMessages.push(message);
264
- }
258
+ const message = String(content || '');
259
+ const sentAt = new Date().toISOString();
260
+ if (runState) {
261
+ runState.messagingSent = true;
262
+ runState.finalDeliverySent = true;
263
+ runState.lastFinalDeliveryAt = sentAt;
264
+ if (runState.progressLedger && typeof runState.progressLedger === 'object') {
265
+ runState.progressLedger.lastUserVisibleUpdateAt = sentAt;
266
+ runState.progressLedger.lastFinalDeliveryAt = sentAt;
267
+ runState.progressLedger.progressState = 'complete';
265
268
  }
266
-
267
- if (deliveryState) {
268
- deliveryState.messagingSent = true;
269
- deliveryState.lastSentMessage = message;
270
- if (!Array.isArray(deliveryState.sentMessages)) {
271
- deliveryState.sentMessages = [];
272
- }
273
- deliveryState.sentMessages.push(message);
269
+ runState.lastSentMessage = message;
270
+ if (Array.isArray(runState.sentMessages)) {
271
+ runState.sentMessages.push(message);
272
+ }
273
+ }
274
+
275
+ if (deliveryState) {
276
+ deliveryState.messagingSent = true;
277
+ deliveryState.finalDeliverySent = true;
278
+ deliveryState.lastFinalDeliveryAt = sentAt;
279
+ deliveryState.lastSentMessage = message;
280
+ if (!Array.isArray(deliveryState.sentMessages)) {
281
+ deliveryState.sentMessages = [];
282
+ }
283
+ deliveryState.sentMessages.push(message);
274
284
  }
275
285
  }
276
286
 
@@ -1111,7 +1121,7 @@ function getAvailableTools(app, options = {}) {
1111
1121
  properties: {
1112
1122
  name: { type: 'string', description: 'Short descriptive name for the task.' },
1113
1123
  trigger: { type: 'object', description: 'Unified trigger object. Prefer { type: "manual" | "schedule" | integration_trigger_type, config: {...} }.' },
1114
- trigger_type: { type: 'string', description: 'Trigger type such as manual, schedule, gmail_message_received, outlook_email_received, slack_message_received, teams_message_received, weather_event, or whatsapp_personal_message_received.' },
1124
+ trigger_type: { type: 'string', description: 'Trigger type such as manual, schedule, gmail_message_received, outlook_email_received, slack_message_received, teams_message_received, weather_event, whatsapp_personal_message_received, or android_notification_received.' },
1115
1125
  trigger_config: { type: 'object', description: 'Trigger-specific configuration object. For schedule triggers prefer { mode: "recurring", cronExpression: "m h dom mon dow" } or { mode: "one_time", runAt: ISO datetime }. 5-field cron only (seconds unsupported).' },
1116
1126
  prompt: { type: 'string', description: 'The instructions the agent will run when the trigger fires.' },
1117
1127
  enabled: { type: 'boolean', description: 'Whether to activate immediately.' },
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ const { normalizeTrimmedText } = require('../security');
4
+
5
+ module.exports = {
6
+ type: 'android_notification_received',
7
+ label: 'Android Notification Received',
8
+ async validateConfig(config = {}, context = {}) {
9
+ return {
10
+ appPackage: normalizeTrimmedText(config.appPackage || config.app_package, 200),
11
+ };
12
+ },
13
+ summarize(config = {}) {
14
+ const parts = ['Android Notification'];
15
+ if (config.appPackage) parts.push(`app: ${config.appPackage}`);
16
+ return parts.join(' · ');
17
+ },
18
+ };
@@ -9,5 +9,7 @@ module.exports = [
9
9
  require('./slack_message_received'),
10
10
  require('./teams_message_received'),
11
11
  require('./weather_event'),
12
+ require('./webhook'),
12
13
  require('./whatsapp_personal_message_received'),
14
+ require('./android_notification_received'),
13
15
  ];