tide-commander 1.55.1 → 1.55.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.
Files changed (37) hide show
  1. package/dist/assets/{BossLogsModal-DDU0y90k.js → BossLogsModal-NMLA8Tb-.js} +1 -1
  2. package/dist/assets/{BossSpawnModal-Ahl2_Uub.js → BossSpawnModal-CHWYUZ5g.js} +1 -1
  3. package/dist/assets/{ControlsModal-BVhKeaPI.js → ControlsModal-B7YvUMVm.js} +1 -1
  4. package/dist/assets/{DockerLogsModal-HITIi0zf.js → DockerLogsModal-CaspMYEh.js} +1 -1
  5. package/dist/assets/{EmbeddedEditor-GB8qFq3P.js → EmbeddedEditor-kYx4AdLw.js} +1 -1
  6. package/dist/assets/{GmailOAuthSetup-mlebmWp9.js → GmailOAuthSetup-9eQ1r9Ar.js} +1 -1
  7. package/dist/assets/{GoogleOAuthSetup-CBUQ_IR6.js → GoogleOAuthSetup-Pi7a58Mi.js} +1 -1
  8. package/dist/assets/{IframeModal-BY88Rv0R.js → IframeModal-z1T59LJS.js} +1 -1
  9. package/dist/assets/{IntegrationsPanel-CDjP4opU.js → IntegrationsPanel-CB9QtfvD.js} +2 -2
  10. package/dist/assets/{LogViewerModal-FmUAIf7O.js → LogViewerModal-BBdr9r3i.js} +1 -1
  11. package/dist/assets/{MonitoringModal-SNoRH-M5.js → MonitoringModal-CUZ4Xhuk.js} +1 -1
  12. package/dist/assets/{PM2LogsModal-C5BXMyeC.js → PM2LogsModal-Bt16sW5A.js} +1 -1
  13. package/dist/assets/{RestoreArchivedAreaModal-BFbtxN05.js → RestoreArchivedAreaModal-BETGHA22.js} +1 -1
  14. package/dist/assets/{Scene2DCanvas-DaG30QAl.js → Scene2DCanvas-BelfJXGw.js} +1 -1
  15. package/dist/assets/{SceneManager-Dn4GrTQo.js → SceneManager-BI_UCXtB.js} +1 -1
  16. package/dist/assets/{SkillsPanel-CoZTIOd_.js → SkillsPanel-BHjnx8LP.js} +1 -1
  17. package/dist/assets/{SpawnModal-Dny6tKpI.js → SpawnModal-Dwfx-NFz.js} +1 -1
  18. package/dist/assets/{SubordinateAssignmentModal-CwT602In.js → SubordinateAssignmentModal-DHRZ-Evy.js} +1 -1
  19. package/dist/assets/{TriggerManagerPanel-Dtdwcb5y.js → TriggerManagerPanel-cUWM5poU.js} +1 -1
  20. package/dist/assets/{WorkflowEditorPanel-CO0t5IKI.js → WorkflowEditorPanel-Ha9SXdvW.js} +1 -1
  21. package/dist/assets/{index-C9XmgNZ7.js → index-BsEoXc0j.js} +2 -2
  22. package/dist/assets/{index-bRg54Ven.js → index-BvZsOpS_.js} +3 -3
  23. package/dist/assets/{index-1XA-VIlb.js → index-CD9Q_div.js} +1 -1
  24. package/dist/assets/{index-DiOqOxYM.js → index-CesYqhoW.js} +1 -1
  25. package/dist/assets/{index-NFOhwkTt.js → index-DBgGw8Bd.js} +1 -1
  26. package/dist/assets/{index-BQPD-Me-.js → index-De9wibqy.js} +1 -1
  27. package/dist/assets/{index-sTZHEAwR.js → index-Vcs3Odgf.js} +1 -1
  28. package/dist/assets/{index-CcP0AZvv.js → index-xU9wiWEU.js} +1 -1
  29. package/dist/assets/main-B_0o0aI9.js +198 -0
  30. package/dist/assets/main-DTgTDvIL.css +1 -0
  31. package/dist/assets/{web-BtyHlEMA.js → web-D2W-1YTG.js} +1 -1
  32. package/dist/assets/{web-CLoT1r08.js → web-DGSbcqAM.js} +1 -1
  33. package/dist/index.html +2 -2
  34. package/dist/src/packages/server/services/runtime-command-execution.js +5 -2
  35. package/package.json +1 -1
  36. package/dist/assets/main-CiAVLH-I.js +0 -198
  37. package/dist/assets/main-CtjGY2hV.css +0 -1
@@ -1 +1 @@
1
- import{bG as a}from"./main-CiAVLH-I.js";import{ImpactStyle as i,NotificationType as r}from"./index-C9XmgNZ7.js";import"./modulepreload-polyfill-B5Qt9EMX.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";class u 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{u as HapticsWeb};
1
+ import{bG as a}from"./main-B_0o0aI9.js";import{ImpactStyle as i,NotificationType as r}from"./index-BsEoXc0j.js";import"./modulepreload-polyfill-B5Qt9EMX.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";class u 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{u as HapticsWeb};
@@ -1 +1 @@
1
- import{bG as s}from"./main-CiAVLH-I.js";import"./modulepreload-polyfill-B5Qt9EMX.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";class f 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{f as LocalNotificationsWeb};
1
+ import{bG as s}from"./main-B_0o0aI9.js";import"./modulepreload-polyfill-B5Qt9EMX.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";class f 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{f as LocalNotificationsWeb};
package/dist/index.html CHANGED
@@ -22,11 +22,11 @@
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-CiAVLH-I.js"></script>
25
+ <script type="module" crossorigin src="/assets/main-B_0o0aI9.js"></script>
26
26
  <link rel="modulepreload" crossorigin href="/assets/modulepreload-polyfill-B5Qt9EMX.js">
27
27
  <link rel="modulepreload" crossorigin href="/assets/vendor-react--Eh9ivFN.js">
28
28
  <link rel="modulepreload" crossorigin href="/assets/vendor-three-Chj50gSY.js">
29
- <link rel="stylesheet" crossorigin href="/assets/main-CtjGY2hV.css">
29
+ <link rel="stylesheet" crossorigin href="/assets/main-DTgTDvIL.css">
30
30
  </head>
31
31
  <body>
32
32
  <div id="app"></div>
@@ -11,7 +11,7 @@ export function createRuntimeCommandExecution(deps) {
11
11
  if (!runner) {
12
12
  throw new Error(`Runtime provider not initialized: ${agent.provider}`);
13
13
  }
14
- if (!silent) {
14
+ if (!silent && !skipNotify) {
15
15
  notifyCommandStarted(agentId, command);
16
16
  }
17
17
  const isSystemMessage = command.startsWith('[System:');
@@ -98,7 +98,10 @@ export function createRuntimeCommandExecution(deps) {
98
98
  customAgent,
99
99
  runner: getRunnerForAgent(agentId),
100
100
  onRespawn: async (retryAgentId, retryCommand, retrySystemPrompt, retryCustomAgent) => {
101
- await executeCommand(retryAgentId, retryCommand, retrySystemPrompt, false, retryCustomAgent);
101
+ // User was already notified via command_started when the message was first sent;
102
+ // skip re-emitting it to prevent the duplicate message in the UI.
103
+ await executeCommand(retryAgentId, retryCommand, retrySystemPrompt, false, retryCustomAgent, undefined, true // skipNotify: command_started already broadcast on initial send
104
+ );
102
105
  },
103
106
  });
104
107
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tide-commander",
3
- "version": "1.55.1",
3
+ "version": "1.55.2",
4
4
  "description": "Visual multi-agent orchestrator and manager for Claude Code with 3D/2D interface",
5
5
  "repository": {
6
6
  "type": "git",