tandem-editor 0.7.0 → 0.8.0
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/.claude-plugin/plugin.json +9 -2
- package/CHANGELOG.md +43 -329
- package/README.md +36 -19
- package/dist/channel/index.js +3 -1
- package/dist/channel/index.js.map +1 -1
- package/dist/cli/index.js +442 -40
- package/dist/cli/index.js.map +1 -1
- package/dist/client/assets/CoworkSettings-CXODT6KV.js +1 -0
- package/dist/client/assets/core-DhEqZVGG.js +1 -0
- package/dist/client/assets/index-C6rbXHNq.css +1 -0
- package/dist/client/assets/index-q_8NVSM3.js +228 -0
- package/dist/client/assets/webview-BQBJMQvJ.js +1 -0
- package/dist/client/index.html +47 -1
- package/dist/monitor/index.js +33 -32
- package/dist/monitor/index.js.map +1 -1
- package/dist/server/index.js +3615 -3102
- package/dist/server/index.js.map +1 -1
- package/package.json +6 -7
- package/skills/tandem/SKILL.md +2 -2
- package/dist/client/assets/index-B1Cd5UGT.js +0 -349
- package/dist/client/assets/webview-0tvvWtyc.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{SERIALIZE_TO_IPC_FN as o,invoke as n,transformCallback as P,Resource as T}from"./core-DhEqZVGG.js";class L{constructor(...e){this.type="Logical",e.length===1?"Logical"in e[0]?(this.width=e[0].Logical.width,this.height=e[0].Logical.height):(this.width=e[0].width,this.height=e[0].height):(this.width=e[0],this.height=e[1])}toPhysical(e){return new w(this.width*e,this.height*e)}[o](){return{width:this.width,height:this.height}}toJSON(){return this[o]()}}class w{constructor(...e){this.type="Physical",e.length===1?"Physical"in e[0]?(this.width=e[0].Physical.width,this.height=e[0].Physical.height):(this.width=e[0].width,this.height=e[0].height):(this.width=e[0],this.height=e[1])}toLogical(e){return new L(this.width/e,this.height/e)}[o](){return{width:this.width,height:this.height}}toJSON(){return this[o]()}}class c{constructor(e){this.size=e}toLogical(e){return this.size instanceof L?this.size:this.size.toLogical(e)}toPhysical(e){return this.size instanceof w?this.size:this.size.toPhysical(e)}[o](){return{[`${this.size.type}`]:{width:this.size.width,height:this.size.height}}}toJSON(){return this[o]()}}class C{constructor(...e){this.type="Logical",e.length===1?"Logical"in e[0]?(this.x=e[0].Logical.x,this.y=e[0].Logical.y):(this.x=e[0].x,this.y=e[0].y):(this.x=e[0],this.y=e[1])}toPhysical(e){return new u(this.x*e,this.y*e)}[o](){return{x:this.x,y:this.y}}toJSON(){return this[o]()}}class u{constructor(...e){this.type="Physical",e.length===1?"Physical"in e[0]?(this.x=e[0].Physical.x,this.y=e[0].Physical.y):(this.x=e[0].x,this.y=e[0].y):(this.x=e[0],this.y=e[1])}toLogical(e){return new C(this.x/e,this.y/e)}[o](){return{x:this.x,y:this.y}}toJSON(){return this[o]()}}class h{constructor(e){this.position=e}toLogical(e){return this.position instanceof C?this.position:this.position.toLogical(e)}toPhysical(e){return this.position instanceof u?this.position:this.position.toPhysical(e)}[o](){return{[`${this.position.type}`]:{x:this.position.x,y:this.position.y}}}toJSON(){return this[o]()}}var r;(function(t){t.WINDOW_RESIZED="tauri://resize",t.WINDOW_MOVED="tauri://move",t.WINDOW_CLOSE_REQUESTED="tauri://close-requested",t.WINDOW_DESTROYED="tauri://destroyed",t.WINDOW_FOCUS="tauri://focus",t.WINDOW_BLUR="tauri://blur",t.WINDOW_SCALE_FACTOR_CHANGED="tauri://scale-change",t.WINDOW_THEME_CHANGED="tauri://theme-changed",t.WINDOW_CREATED="tauri://window-created",t.WEBVIEW_CREATED="tauri://webview-created",t.DRAG_ENTER="tauri://drag-enter",t.DRAG_OVER="tauri://drag-over",t.DRAG_DROP="tauri://drag-drop",t.DRAG_LEAVE="tauri://drag-leave"})(r||(r={}));async function x(t,e){window.__TAURI_EVENT_PLUGIN_INTERNALS__.unregisterListener(t,e),await n("plugin:event|unlisten",{event:t,eventId:e})}async function m(t,e,i){var l;const a=typeof(i==null?void 0:i.target)=="string"?{kind:"AnyLabel",label:i.target}:(l=i==null?void 0:i.target)!==null&&l!==void 0?l:{kind:"Any"};return n("plugin:event|listen",{event:t,target:a,handler:P(e)}).then(b=>async()=>x(t,b))}async function N(t,e,i){return m(t,l=>{x(t,l.id),e(l)},i)}async function S(t,e){await n("plugin:event|emit",{event:t,payload:e})}async function k(t,e,i){await n("plugin:event|emit_to",{target:typeof t=="string"?{kind:"AnyLabel",label:t}:t,event:e,payload:i})}class d extends T{constructor(e){super(e)}static async new(e,i,l){return n("plugin:image|new",{rgba:y(e),width:i,height:l}).then(a=>new d(a))}static async fromBytes(e){return n("plugin:image|from_bytes",{bytes:y(e)}).then(i=>new d(i))}static async fromPath(e){return n("plugin:image|from_path",{path:e}).then(i=>new d(i))}async rgba(){return n("plugin:image|rgba",{rid:this.rid}).then(e=>new Uint8Array(e))}async size(){return n("plugin:image|size",{rid:this.rid})}}function y(t){return t==null?null:typeof t=="string"?t:t instanceof d?t.rid:t}var v;(function(t){t[t.Critical=1]="Critical",t[t.Informational=2]="Informational"})(v||(v={}));class B{constructor(e){this._preventDefault=!1,this.event=e.event,this.id=e.id}preventDefault(){this._preventDefault=!0}isPreventDefault(){return this._preventDefault}}var f;(function(t){t.None="none",t.Normal="normal",t.Indeterminate="indeterminate",t.Paused="paused",t.Error="error"})(f||(f={}));function I(){return new D(window.__TAURI_INTERNALS__.metadata.currentWindow.label,{skip:!0})}async function p(){return n("plugin:window|get_all_windows").then(t=>t.map(e=>new D(e,{skip:!0})))}const g=["tauri://created","tauri://error"];class D{constructor(e,i={}){var l;this.label=e,this.listeners=Object.create(null),i!=null&&i.skip||n("plugin:window|create",{options:{...i,parent:typeof i.parent=="string"?i.parent:(l=i.parent)===null||l===void 0?void 0:l.label,label:e}}).then(async()=>this.emit("tauri://created")).catch(async a=>this.emit("tauri://error",a))}static async getByLabel(e){var i;return(i=(await p()).find(l=>l.label===e))!==null&&i!==void 0?i:null}static getCurrent(){return I()}static async getAll(){return p()}static async getFocusedWindow(){for(const e of await p())if(await e.isFocused())return e;return null}async listen(e,i){return this._handleTauriEvent(e,i)?()=>{const l=this.listeners[e];l.splice(l.indexOf(i),1)}:m(e,i,{target:{kind:"Window",label:this.label}})}async once(e,i){return this._handleTauriEvent(e,i)?()=>{const l=this.listeners[e];l.splice(l.indexOf(i),1)}:N(e,i,{target:{kind:"Window",label:this.label}})}async emit(e,i){if(g.includes(e)){for(const l of this.listeners[e]||[])l({event:e,id:-1,payload:i});return}return S(e,i)}async emitTo(e,i,l){if(g.includes(i)){for(const a of this.listeners[i]||[])a({event:i,id:-1,payload:l});return}return k(e,i,l)}_handleTauriEvent(e,i){return g.includes(e)?(e in this.listeners?this.listeners[e].push(i):this.listeners[e]=[i],!0):!1}async scaleFactor(){return n("plugin:window|scale_factor",{label:this.label})}async innerPosition(){return n("plugin:window|inner_position",{label:this.label}).then(e=>new u(e))}async outerPosition(){return n("plugin:window|outer_position",{label:this.label}).then(e=>new u(e))}async innerSize(){return n("plugin:window|inner_size",{label:this.label}).then(e=>new w(e))}async outerSize(){return n("plugin:window|outer_size",{label:this.label}).then(e=>new w(e))}async isFullscreen(){return n("plugin:window|is_fullscreen",{label:this.label})}async isMinimized(){return n("plugin:window|is_minimized",{label:this.label})}async isMaximized(){return n("plugin:window|is_maximized",{label:this.label})}async isFocused(){return n("plugin:window|is_focused",{label:this.label})}async isDecorated(){return n("plugin:window|is_decorated",{label:this.label})}async isResizable(){return n("plugin:window|is_resizable",{label:this.label})}async isMaximizable(){return n("plugin:window|is_maximizable",{label:this.label})}async isMinimizable(){return n("plugin:window|is_minimizable",{label:this.label})}async isClosable(){return n("plugin:window|is_closable",{label:this.label})}async isVisible(){return n("plugin:window|is_visible",{label:this.label})}async title(){return n("plugin:window|title",{label:this.label})}async theme(){return n("plugin:window|theme",{label:this.label})}async isAlwaysOnTop(){return n("plugin:window|is_always_on_top",{label:this.label})}async center(){return n("plugin:window|center",{label:this.label})}async requestUserAttention(e){let i=null;return e&&(e===v.Critical?i={type:"Critical"}:i={type:"Informational"}),n("plugin:window|request_user_attention",{label:this.label,value:i})}async setResizable(e){return n("plugin:window|set_resizable",{label:this.label,value:e})}async setEnabled(e){return n("plugin:window|set_enabled",{label:this.label,value:e})}async isEnabled(){return n("plugin:window|is_enabled",{label:this.label})}async setMaximizable(e){return n("plugin:window|set_maximizable",{label:this.label,value:e})}async setMinimizable(e){return n("plugin:window|set_minimizable",{label:this.label,value:e})}async setClosable(e){return n("plugin:window|set_closable",{label:this.label,value:e})}async setTitle(e){return n("plugin:window|set_title",{label:this.label,value:e})}async maximize(){return n("plugin:window|maximize",{label:this.label})}async unmaximize(){return n("plugin:window|unmaximize",{label:this.label})}async toggleMaximize(){return n("plugin:window|toggle_maximize",{label:this.label})}async minimize(){return n("plugin:window|minimize",{label:this.label})}async unminimize(){return n("plugin:window|unminimize",{label:this.label})}async show(){return n("plugin:window|show",{label:this.label})}async hide(){return n("plugin:window|hide",{label:this.label})}async close(){return n("plugin:window|close",{label:this.label})}async destroy(){return n("plugin:window|destroy",{label:this.label})}async setDecorations(e){return n("plugin:window|set_decorations",{label:this.label,value:e})}async setShadow(e){return n("plugin:window|set_shadow",{label:this.label,value:e})}async setEffects(e){return n("plugin:window|set_effects",{label:this.label,value:e})}async clearEffects(){return n("plugin:window|set_effects",{label:this.label,value:null})}async setAlwaysOnTop(e){return n("plugin:window|set_always_on_top",{label:this.label,value:e})}async setAlwaysOnBottom(e){return n("plugin:window|set_always_on_bottom",{label:this.label,value:e})}async setContentProtected(e){return n("plugin:window|set_content_protected",{label:this.label,value:e})}async setSize(e){return n("plugin:window|set_size",{label:this.label,value:e instanceof c?e:new c(e)})}async setMinSize(e){return n("plugin:window|set_min_size",{label:this.label,value:e instanceof c?e:e?new c(e):null})}async setMaxSize(e){return n("plugin:window|set_max_size",{label:this.label,value:e instanceof c?e:e?new c(e):null})}async setSizeConstraints(e){function i(l){return l?{Logical:l}:null}return n("plugin:window|set_size_constraints",{label:this.label,value:{minWidth:i(e==null?void 0:e.minWidth),minHeight:i(e==null?void 0:e.minHeight),maxWidth:i(e==null?void 0:e.maxWidth),maxHeight:i(e==null?void 0:e.maxHeight)}})}async setPosition(e){return n("plugin:window|set_position",{label:this.label,value:e instanceof h?e:new h(e)})}async setFullscreen(e){return n("plugin:window|set_fullscreen",{label:this.label,value:e})}async setSimpleFullscreen(e){return n("plugin:window|set_simple_fullscreen",{label:this.label,value:e})}async setFocus(){return n("plugin:window|set_focus",{label:this.label})}async setFocusable(e){return n("plugin:window|set_focusable",{label:this.label,value:e})}async setIcon(e){return n("plugin:window|set_icon",{label:this.label,value:y(e)})}async setSkipTaskbar(e){return n("plugin:window|set_skip_taskbar",{label:this.label,value:e})}async setCursorGrab(e){return n("plugin:window|set_cursor_grab",{label:this.label,value:e})}async setCursorVisible(e){return n("plugin:window|set_cursor_visible",{label:this.label,value:e})}async setCursorIcon(e){return n("plugin:window|set_cursor_icon",{label:this.label,value:e})}async setBackgroundColor(e){return n("plugin:window|set_background_color",{color:e})}async setCursorPosition(e){return n("plugin:window|set_cursor_position",{label:this.label,value:e instanceof h?e:new h(e)})}async setIgnoreCursorEvents(e){return n("plugin:window|set_ignore_cursor_events",{label:this.label,value:e})}async startDragging(){return n("plugin:window|start_dragging",{label:this.label})}async startResizeDragging(e){return n("plugin:window|start_resize_dragging",{label:this.label,value:e})}async setBadgeCount(e){return n("plugin:window|set_badge_count",{label:this.label,value:e})}async setBadgeLabel(e){return n("plugin:window|set_badge_label",{label:this.label,value:e})}async setOverlayIcon(e){return n("plugin:window|set_overlay_icon",{label:this.label,value:e?y(e):void 0})}async setProgressBar(e){return n("plugin:window|set_progress_bar",{label:this.label,value:e})}async setVisibleOnAllWorkspaces(e){return n("plugin:window|set_visible_on_all_workspaces",{label:this.label,value:e})}async setTitleBarStyle(e){return n("plugin:window|set_title_bar_style",{label:this.label,value:e})}async setTheme(e){return n("plugin:window|set_theme",{label:this.label,value:e})}async onResized(e){return this.listen(r.WINDOW_RESIZED,i=>{i.payload=new w(i.payload),e(i)})}async onMoved(e){return this.listen(r.WINDOW_MOVED,i=>{i.payload=new u(i.payload),e(i)})}async onCloseRequested(e){return this.listen(r.WINDOW_CLOSE_REQUESTED,async i=>{const l=new B(i);await e(l),l.isPreventDefault()||await this.destroy()})}async onDragDropEvent(e){const i=await this.listen(r.DRAG_ENTER,s=>{e({...s,payload:{type:"enter",paths:s.payload.paths,position:new u(s.payload.position)}})}),l=await this.listen(r.DRAG_OVER,s=>{e({...s,payload:{type:"over",position:new u(s.payload.position)}})}),a=await this.listen(r.DRAG_DROP,s=>{e({...s,payload:{type:"drop",paths:s.payload.paths,position:new u(s.payload.position)}})}),b=await this.listen(r.DRAG_LEAVE,s=>{e({...s,payload:{type:"leave"}})});return()=>{i(),a(),l(),b()}}async onFocusChanged(e){const i=await this.listen(r.WINDOW_FOCUS,a=>{e({...a,payload:!0})}),l=await this.listen(r.WINDOW_BLUR,a=>{e({...a,payload:!1})});return()=>{i(),l()}}async onScaleChanged(e){return this.listen(r.WINDOW_SCALE_FACTOR_CHANGED,e)}async onThemeChanged(e){return this.listen(r.WINDOW_THEME_CHANGED,e)}}var W;(function(t){t.Disabled="disabled",t.Throttle="throttle",t.Suspend="suspend"})(W||(W={}));var z;(function(t){t.Default="default",t.FluentOverlay="fluentOverlay"})(z||(z={}));var O;(function(t){t.AppearanceBased="appearanceBased",t.Light="light",t.Dark="dark",t.MediumLight="mediumLight",t.UltraDark="ultraDark",t.Titlebar="titlebar",t.Selection="selection",t.Menu="menu",t.Popover="popover",t.Sidebar="sidebar",t.HeaderView="headerView",t.Sheet="sheet",t.WindowBackground="windowBackground",t.HudWindow="hudWindow",t.FullScreenUI="fullScreenUI",t.Tooltip="tooltip",t.ContentBackground="contentBackground",t.UnderWindowBackground="underWindowBackground",t.UnderPageBackground="underPageBackground",t.Mica="mica",t.Blur="blur",t.Acrylic="acrylic",t.Tabbed="tabbed",t.TabbedDark="tabbedDark",t.TabbedLight="tabbedLight"})(O||(O={}));var A;(function(t){t.FollowsWindowActiveState="followsWindowActiveState",t.Active="active",t.Inactive="inactive"})(A||(A={}));function G(){return new E(I(),window.__TAURI_INTERNALS__.metadata.currentWebview.label,{skip:!0})}async function R(){return n("plugin:webview|get_all_webviews").then(t=>t.map(e=>new E(new D(e.windowLabel,{skip:!0}),e.label,{skip:!0})))}const _=["tauri://created","tauri://error"];class E{constructor(e,i,l){this.window=e,this.label=i,this.listeners=Object.create(null),l!=null&&l.skip||n("plugin:webview|create_webview",{windowLabel:e.label,options:{...l,label:i}}).then(async()=>this.emit("tauri://created")).catch(async a=>this.emit("tauri://error",a))}static async getByLabel(e){var i;return(i=(await R()).find(l=>l.label===e))!==null&&i!==void 0?i:null}static getCurrent(){return G()}static async getAll(){return R()}async listen(e,i){return this._handleTauriEvent(e,i)?()=>{const l=this.listeners[e];l.splice(l.indexOf(i),1)}:m(e,i,{target:{kind:"Webview",label:this.label}})}async once(e,i){return this._handleTauriEvent(e,i)?()=>{const l=this.listeners[e];l.splice(l.indexOf(i),1)}:N(e,i,{target:{kind:"Webview",label:this.label}})}async emit(e,i){if(_.includes(e)){for(const l of this.listeners[e]||[])l({event:e,id:-1,payload:i});return}return S(e,i)}async emitTo(e,i,l){if(_.includes(i)){for(const a of this.listeners[i]||[])a({event:i,id:-1,payload:l});return}return k(e,i,l)}_handleTauriEvent(e,i){return _.includes(e)?(e in this.listeners?this.listeners[e].push(i):this.listeners[e]=[i],!0):!1}async position(){return n("plugin:webview|webview_position",{label:this.label}).then(e=>new u(e))}async size(){return n("plugin:webview|webview_size",{label:this.label}).then(e=>new w(e))}async close(){return n("plugin:webview|webview_close",{label:this.label})}async setSize(e){return n("plugin:webview|set_webview_size",{label:this.label,value:e instanceof c?e:new c(e)})}async setPosition(e){return n("plugin:webview|set_webview_position",{label:this.label,value:e instanceof h?e:new h(e)})}async setFocus(){return n("plugin:webview|set_webview_focus",{label:this.label})}async setAutoResize(e){return n("plugin:webview|set_webview_auto_resize",{label:this.label,value:e})}async hide(){return n("plugin:webview|webview_hide",{label:this.label})}async show(){return n("plugin:webview|webview_show",{label:this.label})}async setZoom(e){return n("plugin:webview|set_webview_zoom",{label:this.label,value:e})}async reparent(e){return n("plugin:webview|reparent",{label:this.label,window:typeof e=="string"?e:e.label})}async clearAllBrowsingData(){return n("plugin:webview|clear_all_browsing_data")}async setBackgroundColor(e){return n("plugin:webview|set_webview_background_color",{color:e})}async onDragDropEvent(e){const i=await this.listen(r.DRAG_ENTER,s=>{e({...s,payload:{type:"enter",paths:s.payload.paths,position:new u(s.payload.position)}})}),l=await this.listen(r.DRAG_OVER,s=>{e({...s,payload:{type:"over",position:new u(s.payload.position)}})}),a=await this.listen(r.DRAG_DROP,s=>{e({...s,payload:{type:"drop",paths:s.payload.paths,position:new u(s.payload.position)}})}),b=await this.listen(r.DRAG_LEAVE,s=>{e({...s,payload:{type:"leave"}})});return()=>{i(),a(),l(),b()}}}export{E as Webview,R as getAllWebviews,G as getCurrentWebview};
|
package/dist/client/index.html
CHANGED
|
@@ -31,6 +31,8 @@
|
|
|
31
31
|
--tandem-accent-fg-strong: #4338ca;
|
|
32
32
|
--tandem-author-user: #3b82f6;
|
|
33
33
|
--tandem-author-claude: #ea8a1e;
|
|
34
|
+
--tandem-claude-focus-bg: color-mix(in srgb, var(--tandem-author-claude) 10%, transparent);
|
|
35
|
+
--tandem-claude-focus-border: color-mix(in srgb, var(--tandem-author-claude) 40%, transparent);
|
|
34
36
|
--tandem-success: #16a34a;
|
|
35
37
|
--tandem-success-fg: #ffffff;
|
|
36
38
|
--tandem-success-fg-strong: #166534;
|
|
@@ -51,7 +53,13 @@
|
|
|
51
53
|
--tandem-info-fg-strong: #1e40af;
|
|
52
54
|
--tandem-info-bg: #eff6ff;
|
|
53
55
|
--tandem-info-border: #bfdbfe;
|
|
56
|
+
--tandem-suggestion: #7c3aed;
|
|
57
|
+
--tandem-suggestion-fg-strong: #5b21b6;
|
|
58
|
+
--tandem-suggestion-bg: color-mix(in srgb, var(--tandem-suggestion) 10%, var(--tandem-surface));
|
|
59
|
+
--tandem-suggestion-border: color-mix(in srgb, var(--tandem-suggestion) 40%, var(--tandem-border));
|
|
54
60
|
--tandem-accent-border: #c7d2fe;
|
|
61
|
+
--tandem-scrollbar-track: #f1f5f9;
|
|
62
|
+
--tandem-scrollbar-thumb: #cbd5e1;
|
|
55
63
|
}
|
|
56
64
|
|
|
57
65
|
[data-theme="dark"] {
|
|
@@ -69,6 +77,8 @@
|
|
|
69
77
|
--tandem-accent-fg-strong: #c7d2fe;
|
|
70
78
|
--tandem-author-user: #60a5fa;
|
|
71
79
|
--tandem-author-claude: #fbbf24;
|
|
80
|
+
--tandem-claude-focus-bg: color-mix(in srgb, var(--tandem-author-claude) 10%, transparent);
|
|
81
|
+
--tandem-claude-focus-border: color-mix(in srgb, var(--tandem-author-claude) 40%, transparent);
|
|
72
82
|
--tandem-success: #22c55e;
|
|
73
83
|
--tandem-success-fg: #0f172a;
|
|
74
84
|
--tandem-success-fg-strong: #bbf7d0;
|
|
@@ -89,7 +99,13 @@
|
|
|
89
99
|
--tandem-info-fg-strong: #bfdbfe;
|
|
90
100
|
--tandem-info-bg: #0c4a6e;
|
|
91
101
|
--tandem-info-border: #0369a1;
|
|
102
|
+
--tandem-suggestion: #a78bfa;
|
|
103
|
+
--tandem-suggestion-fg-strong: #ddd6fe;
|
|
104
|
+
--tandem-suggestion-bg: #2e1065;
|
|
105
|
+
--tandem-suggestion-border: #4c1d95;
|
|
92
106
|
--tandem-accent-border: #4338ca;
|
|
107
|
+
--tandem-scrollbar-track: #1e293b;
|
|
108
|
+
--tandem-scrollbar-thumb: #475569;
|
|
93
109
|
}
|
|
94
110
|
|
|
95
111
|
/* Windows High Contrast — let the OS drive everything. */
|
|
@@ -109,6 +125,10 @@
|
|
|
109
125
|
--tandem-accent-fg-strong: HighlightText;
|
|
110
126
|
--tandem-author-user: CanvasText;
|
|
111
127
|
--tandem-author-claude: CanvasText;
|
|
128
|
+
--tandem-claude-focus-bg: Canvas;
|
|
129
|
+
--tandem-claude-focus-border: Highlight;
|
|
130
|
+
--tandem-scrollbar-track: Canvas;
|
|
131
|
+
--tandem-scrollbar-thumb: ButtonText;
|
|
112
132
|
}
|
|
113
133
|
|
|
114
134
|
/* Held-count badge uses warning-bg only (no border) — add one so it stays visible. */
|
|
@@ -116,8 +136,34 @@
|
|
|
116
136
|
border: 1px solid ButtonText;
|
|
117
137
|
}
|
|
118
138
|
}
|
|
139
|
+
|
|
140
|
+
/* Themed scrollbars — WebKit (Chrome/Safari/Tauri) */
|
|
141
|
+
*::-webkit-scrollbar {
|
|
142
|
+
width: 8px;
|
|
143
|
+
height: 8px;
|
|
144
|
+
}
|
|
145
|
+
*::-webkit-scrollbar-track {
|
|
146
|
+
background: var(--tandem-scrollbar-track);
|
|
147
|
+
}
|
|
148
|
+
*::-webkit-scrollbar-thumb {
|
|
149
|
+
background: var(--tandem-scrollbar-thumb);
|
|
150
|
+
border-radius: 4px;
|
|
151
|
+
}
|
|
152
|
+
*::-webkit-scrollbar-thumb:hover {
|
|
153
|
+
background: color-mix(in srgb, var(--tandem-scrollbar-thumb) 80%, var(--tandem-fg));
|
|
154
|
+
}
|
|
155
|
+
*::-webkit-scrollbar-corner {
|
|
156
|
+
background: var(--tandem-scrollbar-track);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/* Themed scrollbars — Firefox */
|
|
160
|
+
* {
|
|
161
|
+
scrollbar-width: thin;
|
|
162
|
+
scrollbar-color: var(--tandem-scrollbar-thumb) var(--tandem-scrollbar-track);
|
|
163
|
+
}
|
|
119
164
|
</style>
|
|
120
|
-
<script type="module" crossorigin src="/assets/index-
|
|
165
|
+
<script type="module" crossorigin src="/assets/index-q_8NVSM3.js"></script>
|
|
166
|
+
<link rel="stylesheet" crossorigin href="/assets/index-C6rbXHNq.css">
|
|
121
167
|
</head>
|
|
122
168
|
<body>
|
|
123
169
|
<div id="root"></div>
|
package/dist/monitor/index.js
CHANGED
|
@@ -9,7 +9,38 @@ var __export = (target, all) => {
|
|
|
9
9
|
import { resolve as resolvePath } from "path";
|
|
10
10
|
import { fileURLToPath } from "url";
|
|
11
11
|
|
|
12
|
-
// src/
|
|
12
|
+
// src/shared/constants.ts
|
|
13
|
+
var DEFAULT_MCP_PORT = 3479;
|
|
14
|
+
var MAX_FILE_SIZE = 50 * 1024 * 1024;
|
|
15
|
+
var MAX_WS_PAYLOAD = 10 * 1024 * 1024;
|
|
16
|
+
var IDLE_TIMEOUT = 30 * 60 * 1e3;
|
|
17
|
+
var SESSION_MAX_AGE = 30 * 24 * 60 * 60 * 1e3;
|
|
18
|
+
var TANDEM_MODE_DEFAULT = "tandem";
|
|
19
|
+
var CHANNEL_MAX_RETRIES = 5;
|
|
20
|
+
var CHANNEL_RETRY_DELAY_MS = 2e3;
|
|
21
|
+
|
|
22
|
+
// src/shared/cli-runtime.ts
|
|
23
|
+
var VALID_TOKEN_RE = /^[A-Za-z0-9_\-]{32,}$/;
|
|
24
|
+
var _warnedInvalidToken = false;
|
|
25
|
+
async function authFetch(url, init) {
|
|
26
|
+
const token = process.env.TANDEM_AUTH_TOKEN;
|
|
27
|
+
if (token !== void 0 && token.trim() !== "") {
|
|
28
|
+
if (VALID_TOKEN_RE.test(token.trim())) {
|
|
29
|
+
const headers = new Headers(init?.headers);
|
|
30
|
+
headers.set("Authorization", `Bearer ${token.trim()}`);
|
|
31
|
+
return fetch(url, { ...init, headers });
|
|
32
|
+
}
|
|
33
|
+
if (!_warnedInvalidToken) {
|
|
34
|
+
_warnedInvalidToken = true;
|
|
35
|
+
console.error(
|
|
36
|
+
"[tandem] authFetch: TANDEM_AUTH_TOKEN is set but invalid (must be 32+ alphanumeric chars [A-Za-z0-9_-]); sending without Authorization header"
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return fetch(url, init);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// src/shared/events/types.ts
|
|
13
44
|
var VALID_EVENT_TYPES = /* @__PURE__ */ new Set([
|
|
14
45
|
"annotation:created",
|
|
15
46
|
"annotation:accepted",
|
|
@@ -69,42 +100,12 @@ function formatEventContent(event) {
|
|
|
69
100
|
}
|
|
70
101
|
default: {
|
|
71
102
|
const _exhaustive = event;
|
|
103
|
+
void _exhaustive;
|
|
72
104
|
return `Unknown event${doc}`;
|
|
73
105
|
}
|
|
74
106
|
}
|
|
75
107
|
}
|
|
76
108
|
|
|
77
|
-
// src/shared/constants.ts
|
|
78
|
-
var DEFAULT_MCP_PORT = 3479;
|
|
79
|
-
var MAX_FILE_SIZE = 50 * 1024 * 1024;
|
|
80
|
-
var MAX_WS_PAYLOAD = 10 * 1024 * 1024;
|
|
81
|
-
var IDLE_TIMEOUT = 30 * 60 * 1e3;
|
|
82
|
-
var SESSION_MAX_AGE = 30 * 24 * 60 * 60 * 1e3;
|
|
83
|
-
var TANDEM_MODE_DEFAULT = "tandem";
|
|
84
|
-
var CHANNEL_MAX_RETRIES = 5;
|
|
85
|
-
var CHANNEL_RETRY_DELAY_MS = 2e3;
|
|
86
|
-
|
|
87
|
-
// src/shared/cli-runtime.ts
|
|
88
|
-
var VALID_TOKEN_RE = /^[A-Za-z0-9_\-]{32,}$/;
|
|
89
|
-
var _warnedInvalidToken = false;
|
|
90
|
-
async function authFetch(url, init) {
|
|
91
|
-
const token = process.env.TANDEM_AUTH_TOKEN;
|
|
92
|
-
if (token !== void 0 && token.trim() !== "") {
|
|
93
|
-
if (VALID_TOKEN_RE.test(token.trim())) {
|
|
94
|
-
const headers = new Headers(init?.headers);
|
|
95
|
-
headers.set("Authorization", `Bearer ${token.trim()}`);
|
|
96
|
-
return fetch(url, { ...init, headers });
|
|
97
|
-
}
|
|
98
|
-
if (!_warnedInvalidToken) {
|
|
99
|
-
_warnedInvalidToken = true;
|
|
100
|
-
console.error(
|
|
101
|
-
"[tandem] authFetch: TANDEM_AUTH_TOKEN is set but invalid (must be 32+ alphanumeric chars [A-Za-z0-9_-]); sending without Authorization header"
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return fetch(url, init);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
109
|
// node_modules/zod/v3/external.js
|
|
109
110
|
var external_exports = {};
|
|
110
111
|
__export(external_exports, {
|