@frumu/tandem-panel 0.5.3 → 0.5.5

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 (58) hide show
  1. package/bin/setup.js +21 -4
  2. package/dist/assets/AutomationsPage-6mRHsh9V.js +946 -0
  3. package/dist/assets/BugMonitorPage-B9mcxV8k.js +4 -0
  4. package/dist/assets/ChannelsPage-oJ5a717t.js +1 -0
  5. package/dist/assets/ChatInterfacePanel-3nvwn0cJ.js +1 -0
  6. package/dist/assets/ChatPage-CGKFC9ev.js +1 -0
  7. package/dist/assets/CodingWorkflowsPage-DosUtoeO.js +8 -0
  8. package/dist/assets/ControlPanelDialogs-BBIPHXnw.js +1 -0
  9. package/dist/assets/DashboardPage-Cv9_TUZQ.js +1 -0
  10. package/dist/assets/ExperimentsPage-DuYHzo7d.js +84 -0
  11. package/dist/assets/FilesPage-NAInb3WU.js +1 -0
  12. package/dist/assets/IntentPlannerPage-BwlF9wfW.js +5 -0
  13. package/dist/assets/LazyJson-DYncL_RR.js +1 -0
  14. package/dist/assets/MarketplacePage-Wo7biaBa.js +1 -0
  15. package/dist/assets/McpToolAllowlistEditor-B3qCkiFT.js +1 -0
  16. package/dist/assets/MemoryImportDialog-BWT93PW1.js +1 -0
  17. package/dist/assets/MemoryPage-gSBH1OKG.js +1 -0
  18. package/dist/assets/OrchestratorPage-HDyjjwF-.js +3 -0
  19. package/dist/assets/PacksPage-BWnL4dRB.js +3 -0
  20. package/dist/assets/PlannerDiagnosticsPanel-VyacxaCM.js +1 -0
  21. package/dist/assets/ProviderModelSelector-B_IE0-e7.js +1 -0
  22. package/dist/assets/RunsPage-B6ttNeUJ.js +1 -0
  23. package/dist/assets/SettingsPage-DhAKDQHw.js +5 -0
  24. package/dist/assets/TaskBoard-DSRrmiyQ.js +1 -0
  25. package/dist/assets/TeamsPage-CwMnVES9.js +4472 -0
  26. package/dist/assets/TimezoneField-DKINpKxU.js +1 -0
  27. package/dist/assets/WorkflowStudioPage-CyWDhEEE.js +1854 -0
  28. package/dist/assets/WorkflowsPage-BWGWH8uD.js +2 -0
  29. package/dist/assets/api-CpR5ozpc.js +1 -0
  30. package/dist/assets/chatPageHelpers-D-NhHk4M.js +1 -0
  31. package/dist/assets/explorerHandoff-KpFRPNQc.js +1 -0
  32. package/dist/assets/format-CimuGHiH.js +1 -0
  33. package/dist/assets/fullcalendar-Bn75j0xM.js +1 -0
  34. package/dist/assets/index-DAWzCKcg.css +1 -0
  35. package/dist/assets/index-picB46b5.js +3 -0
  36. package/dist/assets/messages-AWZpX-Rw.js +3 -0
  37. package/dist/assets/motion-B3ZE8SGR.js +9 -0
  38. package/dist/assets/plannerShared-1kHFyAp-.js +1 -0
  39. package/dist/assets/preact-vendor-DaCG_P2o.js +1 -0
  40. package/dist/assets/react-query-BIbNygEJ.js +1 -0
  41. package/dist/assets/sse-B1wvyjPI.js +2 -0
  42. package/dist/assets/ui-CV-Z6sqF.js +1 -0
  43. package/dist/assets/useEngineStream-ChEkuUVV.js +1 -0
  44. package/dist/assets/vendor-DSaYtO9f.js +156 -0
  45. package/dist/assets/workflowStability-Dsk2DR6F.js +2 -0
  46. package/dist/index.html +10 -7
  47. package/lib/automations/workflow-list.js +147 -0
  48. package/lib/setup/control-panel-preferences.js +4 -0
  49. package/package.json +3 -3
  50. package/server/routes/capabilities.js +1 -0
  51. package/server/routes/knowledgebase.js +7 -1
  52. package/dist/assets/index-D6sUkBw6.css +0 -1
  53. package/dist/assets/index-gUgdIB3_.js +0 -7379
  54. package/dist/assets/motion-CBnf8hfk.js +0 -9
  55. package/dist/assets/preact-vendor-B239Onrg.js +0 -1
  56. package/dist/assets/react-query-_hsOQSt5.js +0 -1
  57. package/dist/assets/vendor-DeUDWccs.js +0 -156
  58. /package/dist/assets/{markdown-Dd89TVib.js → markdown-DJurGVIJ.js} +0 -0
@@ -0,0 +1 @@
1
+ import{y as e}from"./fullcalendar-Bn75j0xM.js";import{i as t}from"./motion-B3ZE8SGR.js";var n=`UTC.Europe/London.Europe/Dublin.Europe/Paris.Europe/Berlin.Europe/Amsterdam.Europe/Brussels.Europe/Zurich.Europe/Budapest.Europe/Warsaw.Europe/Helsinki.America/New_York.America/Toronto.America/Chicago.America/Denver.America/Phoenix.America/Los_Angeles.America/Vancouver.America/Sao_Paulo.Asia/Kolkata.Asia/Dubai.Asia/Singapore.Asia/Tokyo.Asia/Seoul.Australia/Sydney.Pacific/Auckland`.split(`.`);function r(e=`UTC`){try{let t=Intl.DateTimeFormat().resolvedOptions().timeZone;return String(t||e).trim()||e}catch{return e}}function i(e){let t=String(e||``).trim();if(!t)return!1;try{return new Intl.DateTimeFormat(`en-US`,{timeZone:t}).format(new Date),!0}catch{return!1}}var a=[{value:1,label:`Mon`},{value:2,label:`Tue`},{value:3,label:`Wed`},{value:4,label:`Thu`},{value:5,label:`Fri`},{value:6,label:`Sat`},{value:0,label:`Sun`}],o=`09:00`;function s(e){return String(e).padStart(2,`0`)}function c(e){let t=String(e||``).trim().split(/\s+/).filter(Boolean);return t.length===5?{minute:t[0],hour:t[1],dayOfMonth:t[2],month:t[3],dayOfWeek:t[4]}:null}function l(e){let t=Number.parseInt(String(e||``),10);return Number.isFinite(t)?t:null}function u(e,t){let n=l(e),r=l(t);return n===null||r===null||n<0||n>23||r<0||r>59?o:`${s(n)}:${s(r)}`}function d(e){return a.find(t=>t.value===e)?.label||`Day ${e}`}function f(e){let t=String(e||``).trim();if(!t||t===`*`)return null;if(t===`1-5`)return[1,2,3,4,5];let n=new Set;for(let e of t.split(`,`)){let t=e.trim();if(!t)continue;if(t.includes(`-`)){let[e,r]=t.split(`-`),i=l(e),a=l(r);if(i===null||a===null||i>a)return null;for(let e=i;e<=a;e+=1){if(e<0||e>7)return null;n.add(e===7?0:e)}continue}let r=l(t);if(r===null||r<0||r>7)return null;n.add(r===7?0:r)}return Array.from(n.values()).sort((e,t)=>(e===0?7:e)-(t===0?7:t))}function p(e){let[t,n]=String(e||o).split(`:`),r=Number.parseInt(t||`9`,10)||0,i=Number.parseInt(n||`0`,10)||0,a=r>=12?`PM`:`AM`;return`${r%12||12}:${s(i)} ${a}`}function m(e){let t=e.map(e=>d(e));return t.length<=1?t[0]||``:t.length===2?`${t[0]} and ${t[1]}`:`${t.slice(0,-1).join(`, `)}, and ${t[t.length-1]}`}function h(e){let[t,n]=e.time.split(`:`),r=s(Math.max(0,Math.min(59,l(n)??0))),i=String(Math.max(0,Math.min(23,l(t)??9)));return e.mode===`daily`?`${r} ${i} * * *`:e.mode===`weekdays`?`${r} ${i} * * 1-5`:e.mode===`selected_days`?`${r} ${i} * * ${(e.weekdays.length?e.weekdays:[1]).join(`,`)}`:e.mode===`monthly`?`${r} ${i} ${Math.max(1,Math.min(31,Number.parseInt(String(e.monthlyDay||1),10)||1))} * *`:e.rawCron}function g(e){let t=Math.max(60,Number.parseInt(String(e||`3600`),10)||3600);return t%3600==0?{intervalValue:String(Math.max(1,t/3600)),intervalUnit:`hours`}:{intervalValue:String(Math.max(1,Math.round(t/60))),intervalUnit:`minutes`}}function _(e){if(e.scheduleKind===`manual`)return{mode:`manual`,time:o,weekdays:[1,2,3,4,5],monthlyDay:1,intervalValue:`1`,intervalUnit:`hours`,rawCron:``};if(e.scheduleKind===`interval`){let t=g(e.intervalSeconds);return{mode:`interval`,time:o,weekdays:[1,2,3,4,5],monthlyDay:1,intervalValue:t.intervalValue,intervalUnit:t.intervalUnit,rawCron:``}}let t=String(e.cronExpression||``).trim(),n=c(t);if(!n)return{mode:`advanced`,time:o,weekdays:[1,2,3,4,5],monthlyDay:1,intervalValue:`1`,intervalUnit:`hours`,rawCron:t};let r=u(n.hour,n.minute),i=n.month===`*`;if(/^\d+$/.test(n.minute)&&/^\d+$/.test(n.hour)&&i&&n.dayOfMonth===`*`&&n.dayOfWeek===`*`)return{mode:`daily`,time:r,weekdays:[1,2,3,4,5],monthlyDay:1,intervalValue:`1`,intervalUnit:`hours`,rawCron:t};if(/^\d+$/.test(n.minute)&&/^\d+$/.test(n.hour)&&i&&n.dayOfMonth===`*`&&n.dayOfWeek===`1-5`)return{mode:`weekdays`,time:r,weekdays:[1,2,3,4,5],monthlyDay:1,intervalValue:`1`,intervalUnit:`hours`,rawCron:t};let a=f(n.dayOfWeek);return/^\d+$/.test(n.minute)&&/^\d+$/.test(n.hour)&&i&&n.dayOfMonth===`*`&&a?.length?{mode:`selected_days`,time:r,weekdays:a,monthlyDay:1,intervalValue:`1`,intervalUnit:`hours`,rawCron:t}:/^\d+$/.test(n.minute)&&/^\d+$/.test(n.hour)&&i&&/^\d+$/.test(n.dayOfMonth)&&n.dayOfWeek===`*`?{mode:`monthly`,time:r,weekdays:[1,2,3,4,5],monthlyDay:Math.max(1,Math.min(31,Number.parseInt(n.dayOfMonth,10)||1)),intervalValue:`1`,intervalUnit:`hours`,rawCron:t}:{mode:`advanced`,time:r,weekdays:[1,2,3,4,5],monthlyDay:1,intervalValue:`1`,intervalUnit:`hours`,rawCron:t}}function v(e){if(e.mode===`manual`)return{scheduleKind:`manual`,cronExpression:``,intervalSeconds:`3600`};if(e.mode===`interval`){let t=Math.max(1,Number.parseInt(String(e.intervalValue||`1`),10)||1),n=e.intervalUnit===`minutes`?t*60:t*3600;return{scheduleKind:`interval`,cronExpression:``,intervalSeconds:String(n)}}return{scheduleKind:`cron`,cronExpression:e.mode===`advanced`?String(e.rawCron||``).trim():h(e),intervalSeconds:`3600`}}function y(e,t){if(t===e.mode)return e;if(t===`manual`)return{...e,mode:t};if(t===`interval`)return{...e,mode:t,intervalValue:e.intervalValue||`1`,intervalUnit:e.intervalUnit||`hours`};if(t===`advanced`){let n=e.mode===`advanced`?e.rawCron:e.mode===`manual`||e.mode===`interval`?`0 9 * * *`:h(e);return{...e,mode:t,rawCron:n}}return t===`weekdays`?{...e,mode:t,weekdays:[1,2,3,4,5]}:t===`selected_days`?{...e,mode:t,weekdays:e.weekdays.length?e.weekdays:[1]}:t===`monthly`?{...e,mode:t,monthlyDay:e.monthlyDay||1}:{...e,mode:t}}function b(e){return String(e||``).trim()||`local time`}function x(e,t={}){let n=_(e),r=b(t.timezone);if(n.mode===`manual`)return`Manual only`;if(n.mode===`interval`){let e=Math.max(1,Number.parseInt(String(n.intervalValue||`1`),10)||1);return`Every ${e} ${n.intervalUnit===`hours`?e===1?`hour`:`hours`:e===1?`minute`:`minutes`}`}return n.mode===`daily`?`Every day at ${p(n.time)} ${r}`:n.mode===`weekdays`?`Every weekday at ${p(n.time)} ${r}`:n.mode===`selected_days`?`${m(n.weekdays)} at ${p(n.time)} ${r}`:n.mode===`monthly`?`Day ${n.monthlyDay} of every month at ${p(n.time)} ${r}`:n.rawCron||`Custom cron`}var S=[{id:`manual`,label:`Manual`,desc:`Only run when you trigger it.`},{id:`daily`,label:`Every day`,desc:`Run once a day at a specific time.`},{id:`weekdays`,label:`Weekdays`,desc:`Run Monday through Friday.`},{id:`selected_days`,label:`Selected days`,desc:`Choose specific days of the week.`},{id:`monthly`,label:`Monthly`,desc:`Run on a day of the month.`},{id:`interval`,label:`Repeating`,desc:`Run every N minutes or hours.`},{id:`advanced`,label:`Advanced cron`,desc:`Edit the raw cron expression directly.`}];function C({value:e,onChange:n,timezone:r}){let i=_(e),o=x(e,{timezone:r}),s=e=>{n(v(e))};return t(`div`,{className:`grid gap-3`,children:[t(`div`,{className:`grid gap-2 sm:grid-cols-2 xl:grid-cols-3`,children:S.map(e=>t(`button`,{type:`button`,className:`tcp-list-item flex flex-col items-start gap-1 text-left transition-all ${i.mode===e.id?`border-amber-400/60 bg-amber-400/10`:``}`,onClick:()=>s(y(i,e.id)),children:[t(`div`,{className:`font-medium`,children:e.label}),t(`div`,{className:`tcp-subtle text-xs`,children:e.desc})]},e.id))}),i.mode===`daily`||i.mode===`weekdays`||i.mode===`selected_days`?t(`div`,{className:`grid gap-3 rounded-xl border border-slate-700/50 bg-slate-900/30 p-3`,children:[t(`div`,{className:`grid gap-1`,children:[t(`label`,{className:`text-xs text-slate-400`,children:`Run time`}),t(`input`,{type:`time`,className:`tcp-input`,value:i.time,onInput:e=>s({...i,time:e.target.value||`09:00`})})]}),i.mode===`selected_days`?t(`div`,{className:`grid gap-1`,children:[t(`label`,{className:`text-xs text-slate-400`,children:`Days of week`}),t(`div`,{className:`flex flex-wrap gap-2`,children:a.map(e=>{let n=i.weekdays.includes(e.value);return t(`button`,{type:`button`,className:`tcp-btn h-8 px-3 text-xs ${n?`border-amber-400/60 bg-amber-400/10 text-amber-300`:``}`,onClick:()=>{let t=n?i.weekdays.filter(t=>t!==e.value):[...i.weekdays,e.value].sort((e,t)=>(e===0?7:e)-(t===0?7:t));s({...i,weekdays:t.length?t:[1]})},children:e.label},e.value)})})]}):null]}):null,i.mode===`monthly`?t(`div`,{className:`grid gap-3 rounded-xl border border-slate-700/50 bg-slate-900/30 p-3 sm:grid-cols-2`,children:[t(`div`,{className:`grid gap-1`,children:[t(`label`,{className:`text-xs text-slate-400`,children:`Day of month`}),t(`select`,{className:`tcp-select`,value:String(i.monthlyDay),onInput:e=>s({...i,monthlyDay:Number.parseInt(e.target.value||String(i.monthlyDay),10)}),children:Array.from({length:31},(e,t)=>t+1).map(e=>t(`option`,{value:e,children:e},e))})]}),t(`div`,{className:`grid gap-1`,children:[t(`label`,{className:`text-xs text-slate-400`,children:`Run time`}),t(`input`,{type:`time`,className:`tcp-input`,value:i.time,onInput:e=>s({...i,time:e.target.value||`09:00`})})]})]}):null,i.mode===`interval`?t(`div`,{className:`grid gap-3 rounded-xl border border-slate-700/50 bg-slate-900/30 p-3 sm:grid-cols-[minmax(0,1fr)_180px]`,children:[t(`div`,{className:`grid gap-1`,children:[t(`label`,{className:`text-xs text-slate-400`,children:`Repeat every`}),t(`input`,{type:`number`,min:`1`,className:`tcp-input`,value:i.intervalValue,onInput:e=>s({...i,intervalValue:e.target.value||`1`})})]}),t(`div`,{className:`grid gap-1`,children:[t(`label`,{className:`text-xs text-slate-400`,children:`Unit`}),t(`select`,{className:`tcp-select`,value:i.intervalUnit,onInput:e=>s({...i,intervalUnit:e.target.value}),children:[t(`option`,{value:`hours`,children:`hours`}),t(`option`,{value:`minutes`,children:`minutes`})]})]})]}):null,i.mode===`advanced`?t(`div`,{className:`grid gap-1 rounded-xl border border-slate-700/50 bg-slate-900/30 p-3`,children:[t(`label`,{className:`text-xs text-slate-400`,children:`Cron expression`}),t(`input`,{className:`tcp-input font-mono`,placeholder:`e.g. 30 8 * * 1-5`,value:i.rawCron,onInput:e=>s({...i,rawCron:e.target.value})}),t(`div`,{className:`text-xs text-slate-500`,children:`Advanced mode keeps the raw cron expression for schedules that don't fit the guided options above.`})]}):null,t(`div`,{className:`rounded-xl border border-amber-400/20 bg-amber-400/5 px-3 py-2 text-xs text-amber-100`,children:o})]})}function w({value:i,onChange:a,error:o,label:s=`Timezone`,hint:c=`Use an IANA timezone like Europe/Berlin.`,allowBrowserDefault:l=!0,className:u=``}){let d=e(),f=r(),p=String(i||``).trim(),m=n.includes(p);return t(`div`,{className:`grid gap-1 ${u}`,children:[t(`label`,{className:`text-xs text-slate-400`,children:s}),t(`div`,{className:`grid gap-2 md:grid-cols-[1fr_auto]`,children:[t(`select`,{className:`tcp-select font-mono text-sm`,value:m?p:`__custom__`,onInput:e=>{let t=e.target.value;t!==`__custom__`&&a(t)},children:[n.map(e=>t(`option`,{value:e,children:e},e)),t(`option`,{value:`__custom__`,disabled:!0,children:`Custom / type below`})]}),l?t(`button`,{type:`button`,className:`tcp-btn h-10 px-3`,onClick:()=>a(f),children:`Use browser`}):null]}),t(`input`,{className:`tcp-input font-mono text-sm ${o?`border-red-500/60 text-red-100`:``}`,list:d,placeholder:f,value:p,onInput:e=>a(e.target.value)}),t(`div`,{className:`text-xs text-slate-500`,children:c}),o?t(`div`,{className:`text-xs text-red-300`,children:o}):null,t(`datalist`,{id:d,children:n.map(e=>t(`option`,{value:e},e))})]})}export{i as a,r as i,C as n,x as r,w as t};