tide-commander 1.110.0 → 1.110.2
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/dist/assets/{BossLogsModal-CHz_pHYe.js → BossLogsModal-DBeMak5-.js} +1 -1
- package/dist/assets/{BossSpawnModal-DjfYj13S.js → BossSpawnModal-DDl6qgnq.js} +1 -1
- package/dist/assets/{ControlsModal-CraYW8Z0.js → ControlsModal-BBUukX-p.js} +1 -1
- package/dist/assets/{DockerLogsModal-D1JQVnoZ.js → DockerLogsModal-BWf3XDEI.js} +1 -1
- package/dist/assets/{EmbeddedEditor-DpDyHuwU.js → EmbeddedEditor-CIOdhnaW.js} +1 -1
- package/dist/assets/{GmailOAuthSetup-CZy-Ws3b.js → GmailOAuthSetup-qG-_WeOb.js} +1 -1
- package/dist/assets/{GoogleOAuthSetup-CEqR8wjo.js → GoogleOAuthSetup-BK3lzU4n.js} +1 -1
- package/dist/assets/{IframeModal-Dpcyj2hp.js → IframeModal-D_NEs_Ld.js} +1 -1
- package/dist/assets/{IntegrationsPanel-CK5riko1.js → IntegrationsPanel-yphWX1ZD.js} +2 -2
- package/dist/assets/{LogViewerModal-D_A_tQ-i.js → LogViewerModal-B0h9NNRk.js} +1 -1
- package/dist/assets/{MonitoringModal-BeOcJLIv.js → MonitoringModal-Ciw7KnXH.js} +1 -1
- package/dist/assets/{PM2LogsModal-1GykGk6O.js → PM2LogsModal-C1dYQaff.js} +1 -1
- package/dist/assets/{RestoreArchivedAreaModal-CK0jtYkm.js → RestoreArchivedAreaModal-DOwzfu-D.js} +1 -1
- package/dist/assets/{Scene2DCanvas-UvOoyUKe.js → Scene2DCanvas-MHfv4Rzg.js} +1 -1
- package/dist/assets/{SceneManager-BEpxBwe6.js → SceneManager-cm1Kj0YD.js} +1 -1
- package/dist/assets/{SkillsPanel-CKG7RYKH.js → SkillsPanel-DLwMkORc.js} +1 -1
- package/dist/assets/{SlackMultiInstanceSetup-7lS8KrHh.js → SlackMultiInstanceSetup-Dql_wPMX.js} +1 -1
- package/dist/assets/{SpawnModal-D6eoFjpf.js → SpawnModal-DzPTSOKV.js} +1 -1
- package/dist/assets/{SubordinateAssignmentModal-DdbqIYQb.js → SubordinateAssignmentModal-CoLzD3z2.js} +1 -1
- package/dist/assets/{TriggerManagerPanel-fbE1V_tU.js → TriggerManagerPanel-BOi2zr7N.js} +1 -1
- package/dist/assets/{WorkflowEditorPanel-AyTwrOx1.js → WorkflowEditorPanel-DB1ygPDS.js} +1 -1
- package/dist/assets/{index-CSAmEctZ.js → index-6Wak7CPm.js} +1 -1
- package/dist/assets/{index--1xg_5j8.js → index-BP6ukiYG.js} +1 -1
- package/dist/assets/{index-xAeBTdAq.js → index-BXJSMT4a.js} +3 -3
- package/dist/assets/{index-CZJX8_ne.js → index-BZsQOteM.js} +1 -1
- package/dist/assets/{index-CjzwiyFR.js → index-C6EHHgC0.js} +1 -1
- package/dist/assets/{index-CUQZOPZi.js → index-D4XW6MSF.js} +2 -2
- package/dist/assets/{index-DKPVsnkm.js → index-DKASWGtq.js} +1 -1
- package/dist/assets/{index-CFc2HdBA.js → index-DKdZI-Ar.js} +1 -1
- package/dist/assets/{index-DAVC1kVs.js → index-ThbMNdRp.js} +1 -1
- package/dist/assets/{main-B7DHCEPO.js → main-BxA3Bhkv.js} +4 -4
- package/dist/assets/{web-DVTyi94O.js → web-BskC98UQ.js} +1 -1
- package/dist/assets/{web-BVV5fDvM.js → web-CSRmX8Ge.js} +1 -1
- package/dist/assets/{web-DRTwnSJw.js → web-zdygXcYu.js} +1 -1
- package/dist/index.html +1 -1
- package/dist/src/packages/server/data/index.js +3 -0
- package/dist/src/packages/server/services/cron-service.js +2 -2
- package/dist/src/packages/server/services/trigger-service.js +6 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cl as a}from"./main-
|
|
1
|
+
import{cl as a}from"./main-BxA3Bhkv.js";import{ImpactStyle as i,NotificationType as r}from"./index-D4XW6MSF.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";class h extends a{constructor(){super(...arguments),this.selectionStarted=!1}async impact(t){const e=this.patternForImpact(t==null?void 0:t.style);this.vibrateWithPattern(e)}async notification(t){const e=this.patternForNotification(t==null?void 0:t.type);this.vibrateWithPattern(e)}async vibrate(t){const e=(t==null?void 0:t.duration)||300;this.vibrateWithPattern([e])}async selectionStart(){this.selectionStarted=!0}async selectionChanged(){this.selectionStarted&&this.vibrateWithPattern([70])}async selectionEnd(){this.selectionStarted=!1}patternForImpact(t=i.Heavy){return t===i.Medium?[43]:t===i.Light?[20]:[61]}patternForNotification(t=r.Success){return t===r.Warning?[30,40,30,50,60]:t===r.Error?[27,45,50]:[35,65,21]}vibrateWithPattern(t){if(navigator.vibrate)navigator.vibrate(t);else throw this.unavailable("Browser does not support the vibrate API")}}export{h as HapticsWeb};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cl as t}from"./main-
|
|
1
|
+
import{cl as t}from"./main-BxA3Bhkv.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";class o extends t{constructor(){super(),this.handleVisibilityChange=()=>{const e={isActive:document.hidden!==!0};this.notifyListeners("appStateChange",e),document.hidden?this.notifyListeners("pause",null):this.notifyListeners("resume",null)},document.addEventListener("visibilitychange",this.handleVisibilityChange,!1)}exitApp(){throw this.unimplemented("Not implemented on web.")}async getInfo(){throw this.unimplemented("Not implemented on web.")}async getLaunchUrl(){return{url:""}}async getState(){return{isActive:document.hidden!==!0}}async minimizeApp(){throw this.unimplemented("Not implemented on web.")}async toggleBackButtonHandler(){throw this.unimplemented("Not implemented on web.")}async getAppLanguage(){return{value:navigator.language.split("-")[0].toLowerCase()}}}export{o as AppWeb};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{cl as s}from"./main-
|
|
1
|
+
import{cl as s}from"./main-BxA3Bhkv.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";class l extends s{constructor(){super(...arguments),this.pending=[],this.deliveredNotifications=[],this.hasNotificationSupport=()=>{if(!("Notification"in window)||!Notification.requestPermission)return!1;if(Notification.permission!=="granted")try{new Notification("")}catch(i){if(i instanceof Error&&i.name==="TypeError")return!1}return!0}}async getDeliveredNotifications(){const i=[];for(const t of this.deliveredNotifications){const e={title:t.title,id:parseInt(t.tag),body:t.body};i.push(e)}return{notifications:i}}async removeDeliveredNotifications(i){for(const t of i.notifications){const e=this.deliveredNotifications.find(n=>n.tag===String(t.id));e==null||e.close(),this.deliveredNotifications=this.deliveredNotifications.filter(()=>!e)}}async removeAllDeliveredNotifications(){for(const i of this.deliveredNotifications)i.close();this.deliveredNotifications=[]}async createChannel(){throw this.unimplemented("Not implemented on web.")}async deleteChannel(){throw this.unimplemented("Not implemented on web.")}async listChannels(){throw this.unimplemented("Not implemented on web.")}async schedule(i){if(!this.hasNotificationSupport())throw this.unavailable("Notifications not supported in this browser.");for(const t of i.notifications)this.sendNotification(t);return{notifications:i.notifications.map(t=>({id:t.id}))}}async getPending(){return{notifications:this.pending}}async registerActionTypes(){throw this.unimplemented("Not implemented on web.")}async cancel(i){this.pending=this.pending.filter(t=>!i.notifications.find(e=>e.id===t.id))}async areEnabled(){const{display:i}=await this.checkPermissions();return{value:i==="granted"}}async changeExactNotificationSetting(){throw this.unimplemented("Not implemented on web.")}async checkExactNotificationSetting(){throw this.unimplemented("Not implemented on web.")}async requestPermissions(){if(!this.hasNotificationSupport())throw this.unavailable("Notifications not supported in this browser.");return{display:this.transformNotificationPermission(await Notification.requestPermission())}}async checkPermissions(){if(!this.hasNotificationSupport())throw this.unavailable("Notifications not supported in this browser.");return{display:this.transformNotificationPermission(Notification.permission)}}transformNotificationPermission(i){switch(i){case"granted":return"granted";case"denied":return"denied";default:return"prompt"}}sendPending(){var i;const t=[],e=new Date().getTime();for(const n of this.pending)!((i=n.schedule)===null||i===void 0)&&i.at&&n.schedule.at.getTime()<=e&&(this.buildNotification(n),t.push(n));this.pending=this.pending.filter(n=>!t.find(o=>o===n))}sendNotification(i){var t;if(!((t=i.schedule)===null||t===void 0)&&t.at){const e=i.schedule.at.getTime()-new Date().getTime();this.pending.push(i),setTimeout(()=>{this.sendPending()},e);return}this.buildNotification(i)}buildNotification(i){const t=new Notification(i.title,{body:i.body,tag:String(i.id)});return t.addEventListener("click",this.onClick.bind(this,i),!1),t.addEventListener("show",this.onShow.bind(this,i),!1),t.addEventListener("close",()=>{this.deliveredNotifications=this.deliveredNotifications.filter(()=>!this)},!1),this.deliveredNotifications.push(t),t}onClick(i){const t={actionId:"tap",notification:i};this.notifyListeners("localNotificationActionPerformed",t)}onShow(i){this.notifyListeners("localNotificationReceived",i)}}export{l as LocalNotificationsWeb};
|
package/dist/index.html
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
<link rel="icon" type="image/png" sizes="16x16" href="/assets/icons/favicon-16x16.png" />
|
|
23
23
|
<link rel="apple-touch-icon" sizes="180x180" href="/assets/icons/apple-touch-icon.png" />
|
|
24
24
|
<title>Tide Commander</title>
|
|
25
|
-
<script type="module" crossorigin src="/assets/main-
|
|
25
|
+
<script type="module" crossorigin src="/assets/main-BxA3Bhkv.js"></script>
|
|
26
26
|
<link rel="modulepreload" crossorigin href="/assets/vendor-react--Eh9ivFN.js">
|
|
27
27
|
<link rel="modulepreload" crossorigin href="/assets/vendor-three-Chj50gSY.js">
|
|
28
28
|
<link rel="stylesheet" crossorigin href="/assets/main-BLrGoeQ_.css">
|
|
@@ -139,6 +139,9 @@ function toStoredAgents(agents) {
|
|
|
139
139
|
trackingStatus: agent.trackingStatus,
|
|
140
140
|
trackingStatusDetail: agent.trackingStatusDetail,
|
|
141
141
|
trackingStatusTimestamp: agent.trackingStatusTimestamp,
|
|
142
|
+
shortcut: agent.shortcut,
|
|
143
|
+
customInstructions: agent.customInstructions,
|
|
144
|
+
memory: agent.memory,
|
|
142
145
|
isBoss: agent.isBoss,
|
|
143
146
|
subordinateIds: agent.subordinateIds,
|
|
144
147
|
bossId: agent.bossId,
|
|
@@ -181,7 +181,7 @@ export function scheduleOnce(runAtIso, callback) {
|
|
|
181
181
|
log.log(`Scheduled one-shot cron ${id} for ${runAtIso}`);
|
|
182
182
|
return job;
|
|
183
183
|
}
|
|
184
|
-
export function schedule(expression, timezone, callback) {
|
|
184
|
+
export function schedule(expression, timezone, callback, options) {
|
|
185
185
|
const id = `cron_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
|
|
186
186
|
const job = {
|
|
187
187
|
id,
|
|
@@ -189,7 +189,7 @@ export function schedule(expression, timezone, callback) {
|
|
|
189
189
|
timezone,
|
|
190
190
|
callback,
|
|
191
191
|
timer: null,
|
|
192
|
-
lastFired: null,
|
|
192
|
+
lastFired: options?.initialLastFired ?? null,
|
|
193
193
|
};
|
|
194
194
|
// Check at interval whether it's time to fire
|
|
195
195
|
job.timer = setInterval(() => {
|
|
@@ -627,6 +627,11 @@ function startCronJob(trigger) {
|
|
|
627
627
|
startOneShotJob(trigger);
|
|
628
628
|
return;
|
|
629
629
|
}
|
|
630
|
+
// Seed the new job's same-minute guard with the persisted `lastFiredAt`. Without
|
|
631
|
+
// this, every `fireTrigger` re-enters `updateTrigger` → re-arms the cron → a
|
|
632
|
+
// fresh job with `lastFired: null` polls and fires a SECOND time in the same
|
|
633
|
+
// minute. Reading from the persisted trigger record also defends against
|
|
634
|
+
// pm2/server restarts within the same minute as the last fire.
|
|
630
635
|
const job = cronService.schedule(trigger.config.expression, trigger.config.timezone, () => {
|
|
631
636
|
const variables = {
|
|
632
637
|
'cron.expression': trigger.config.expression,
|
|
@@ -634,7 +639,7 @@ function startCronJob(trigger) {
|
|
|
634
639
|
...(trigger.config.payload || {}),
|
|
635
640
|
};
|
|
636
641
|
void fireTrigger(trigger.id, variables);
|
|
637
|
-
});
|
|
642
|
+
}, { initialLastFired: trigger.lastFiredAt ?? null });
|
|
638
643
|
cronJobs.set(trigger.id, job);
|
|
639
644
|
log.log(`Started cron job for trigger ${trigger.name}: ${trigger.config.expression}`);
|
|
640
645
|
}
|