pith-ui 0.2.0-app.1 → 0.2.0-app.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/APP.md CHANGED
@@ -5,9 +5,9 @@ This is the constrained application contract for Pith Desk and applications choo
5
5
  The allowed UI imports are `pith-ui/app` and `pith-ui/styles.css`. The general `pith-ui` entry remains available for independent component compositions; Pith Desk must not use it, private package paths, copied components or internal CSS to bypass this contract. A missing application capability needs a tested semantic port in the library before the application consumes it.
6
6
 
7
7
  <!-- PUI_APP_VERSION_START -->
8
- This contract accompanies `pith-ui@0.2.0-app.1`. Exact API: [APP-API.md](./APP-API.md); installed declarations: `dist/app/index.d.ts`.
8
+ This contract accompanies `pith-ui@0.2.0-app.2`. Exact API: [APP-API.md](./APP-API.md); installed declarations: `dist/app/index.d.ts`.
9
9
 
10
- The full reference application source is versioned with this artifact: [TypeScript controller](https://github.com/minifish-org/pith-ui/blob/v0.2.0-app.1/examples/application/main.ts) and [HTML entry](https://github.com/minifish-org/pith-ui/blob/v0.2.0-app.1/examples/application/index.html). These sources are not bundled into the npm runtime package.
10
+ The full reference application source is versioned with this artifact: [TypeScript controller](https://github.com/minifish-org/pith-ui/blob/v0.2.0-app.2/examples/application/main.ts) and [HTML entry](https://github.com/minifish-org/pith-ui/blob/v0.2.0-app.2/examples/application/index.html). These sources are not bundled into the npm runtime package.
11
11
  <!-- PUI_APP_VERSION_END -->
12
12
 
13
13
  ## One mount, four scenes
@@ -78,6 +78,10 @@ These are named methods, not a UI description language. Pass the concrete export
78
78
 
79
79
  Navigation state supplies workspace/conversation identity, selection, status and allowed actions. Disclosure state and menu anchoring stay in the library; do not drive an `expanded` field or retain the menu's trigger. `setSidebarOpen` expresses an application intent, not a node-access escape hatch.
80
80
 
81
+ `updateAvailability({busy, global, active, conversations, workspaces})` keeps mutation and run scopes separate. `busy` blocks all action scopes during a host mutation. `global` blocks global actions while any task runs; `active` and the two identity lists block only their matching targets. An unrelated inactive conversation or workspace keeps its actions. Message copy/edit/branch eligibility still comes from `updateMessageAvailability`.
82
+
83
+ `onDropReferences` receives pure `{paths, uris?, hasUnidentifiedFiles}` data. Native validated paths set `hasUnidentifiedFiles: false`; browser drops set it when they contain non-image files whose identities the host must resolve. A URI-only drag does not imply unidentified files. The host retains path validation and error policy. `setDropPending(true)` blocks another reference resolution while still permitting available image attachments from the matching drop. Release it before calling `insertReferences`; the scene owns selection and focus.
84
+
81
85
  Every opening returns a plain session with `update(state)`, `fail(message)`, `isOpen()`, `close()` and `destroy()`. Only declared additions exist:
82
86
 
83
87
  | Session | Additional semantic methods |
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/app/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/app/settings.ts"],"names":[],"mappings":"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"}
@@ -30,11 +30,12 @@ export function createSettingsScene(env) {
30
30
  surface.destroy();
31
31
  return surface;
32
32
  };
33
- const submit = (callback, owner, closeOnSuccess) => async (value) => {
33
+ const submit = (callback, owner, closeOnSuccess, revision = () => 0) => async (value) => {
34
34
  if (!owner()?.isOpen())
35
35
  return unavailable;
36
+ const submittedRevision = revision();
36
37
  const result = callback ? await callback(value) : unavailable;
37
- if (result.ok && closeOnSuccess && owner()?.isOpen())
38
+ if (result.ok && closeOnSuccess && submittedRevision === revision() && owner()?.isOpen())
38
39
  owner().close();
39
40
  return result;
40
41
  };
@@ -47,7 +48,7 @@ export function createSettingsScene(env) {
47
48
  return loading;
48
49
  },
49
50
  openSettings(initial, callbacks = {}) {
50
- let surface, disposed = false, current = initial;
51
+ let surface, disposed = false, current = initial, revision = 0;
51
52
  let closed = { provider: '', baseUrl: initial.baseUrl, apiKey: '' };
52
53
  let provider;
53
54
  let providerState;
@@ -63,7 +64,7 @@ export function createSettingsScene(env) {
63
64
  surface?.fail(result.error); });
64
65
  };
65
66
  const block = createSettingsPanel(initial, { idPrefix: env.idPrefix,
66
- onSubmit: submit(callbacks.onSubmit, () => surface, true), onRemoveKey: submit(callbacks.onRemoveKey, () => surface, true),
67
+ onSubmit: submit(callbacks.onSubmit, () => surface, true, () => revision), onRemoveKey: submit(callbacks.onRemoveKey, () => surface, true, () => revision),
67
68
  onTest: draft => { if (current.testing && callbacks.onCancelTest)
68
69
  run('cancel-test', callbacks.onCancelTest);
69
70
  else if (callbacks.onTest)
@@ -125,6 +126,7 @@ export function createSettingsScene(env) {
125
126
  setProviders(items, selected) { if (active())
126
127
  block.setProviders(items, selected); },
127
128
  resetProvider(value) { if (active()) {
129
+ revision++;
128
130
  for (const operation of auxiliary.values())
129
131
  operation.invalidate();
130
132
  block.resetProvider(value);
@@ -218,15 +220,17 @@ export function createSettingsScene(env) {
218
220
  };
219
221
  },
220
222
  openModels(initial, callbacks = {}) {
221
- let surface, disposed = false, closed = { ...(initial.editor?.selection ?? { provider: '', model: '', thinkingLevel: '' }) };
223
+ let surface, disposed = false, revision = 0, closed = { ...(initial.editor?.selection ?? { provider: '', model: '', thinkingLevel: '' }) };
222
224
  const active = () => !disposed && !destroyed && !!surface?.isOpen();
223
- const block = createModelPicker(initial, { idPrefix: env.idPrefix, onSubmit: submit(callbacks.onSubmit, () => surface, true) });
225
+ const block = createModelPicker(initial, { idPrefix: env.idPrefix, onSubmit: submit(callbacks.onSubmit, () => surface, true, () => revision) });
224
226
  const content = { element: block.element, destroy() { if (disposed)
225
227
  return; closed = { ...block.read() }; disposed = true; block.destroy(); } };
226
228
  surface = track((content, onClose) => env.openDialog('model', content, onClose), content, callbacks.onClose);
227
229
  return { update(state) { if (active())
228
- block.update(state); }, read() { return active() ? { ...block.read() } : { ...closed }; }, reset(selection) { if (active())
229
- block.reset(selection); }, focus() { if (active())
230
+ block.update(state); }, read() { return active() ? { ...block.read() } : { ...closed }; }, reset(selection) { if (active()) {
231
+ revision++;
232
+ block.reset(selection);
233
+ } }, focus() { if (active())
230
234
  block.focus(); }, fail(message) { if (active())
231
235
  surface.fail(message); }, close() { surface?.close(); }, isOpen: active, destroy() { surface?.destroy(); } };
232
236
  },
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/app/settings.ts"],"names":[],"mappings":"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","sourcesContent":["import {Lifetime,type ActionResult} from '../core.js';\nimport {createOperation} from '../operation.js';\nimport {adoptAction} from '../foundations.js';\nimport {createProviderActions,type ProviderAction,type ProviderActionsState,type ProviderActionTarget} from '../forms/actions.js';\nimport {createSettingsPanel,createMCPConnectionsPanel,createMCPConnectionList,createModelPicker} from '../forms/panels.js';\nimport type {SettingsPanelState,SettingsDraft,SettingsProviderOption,SettingsCredentialView,MCPConnectionsState,MCPConnectionDraft,MCPEditorValue,MCPConnectionItem,MCPConnectionAction,MCPConnectionTarget,ModelPickerState} from '../forms/panels.js';\nimport {createCustomConnectionEditor,type CustomConnectionState,type CustomConnectionDraft} from '../forms/custom-connection.js';\nimport {createProviderLoginPanel,type ProviderLoginState} from '../forms/provider-login.js';\nimport type {ModelSelection} from '../forms/model-editor.js';\nimport {createUpdatePanel,type UpdatePanelState} from '../files/systems.js';\nimport type {Appearance} from '../theme.js';\nimport type {AppEnvironment,HostResult,OwnedContent,OwnedSurface} from './internal.js';\nimport {createLoadingSession,type LoadingState,type LoadingSession} from './session.js';\n\nexport type {SettingsPanelState,SettingsDraft,SettingsProviderOption,MCPConnectionsState,MCPConnectionDraft,MCPEditorValue,MCPConnectionItem,ModelPickerState,ModelSelection,CustomConnectionState,CustomConnectionDraft,ProviderLoginState,UpdatePanelState,ProviderAction,ProviderActionsState,ProviderActionTarget,MCPConnectionAction,MCPConnectionTarget};\ntype Submission<Value>=(value:Value)=>ActionResult|Promise<ActionResult>;\n\n/** Session methods address one owned opening, never a later use of its window. */\nexport interface SettingsViewSession<State> {\n update(state:Readonly<State>):void;\n fail(message:string):void;\n close():void;\n isOpen():boolean;\n destroy():void;\n}\nexport interface SettingsCredential extends Omit<SettingsCredentialView,'actions'> {providerActions?:Readonly<ProviderActionsState>}\nexport type UpdateAction='check'|'install';\nexport interface SettingsCallbacks {\n onSubmit?:Submission<SettingsDraft>;\n onRemoveKey?:Submission<SettingsDraft>;\n onTest?:(draft:SettingsDraft)=>HostResult;\n onCancelTest?:()=>HostResult;\n onAppearanceChange?:(appearance:Appearance)=>HostResult;\n onProviderChange?:(provider:string)=>HostResult;\n onDraftChange?:(draft:SettingsDraft)=>void;\n onProviderAction?:(action:ProviderAction,target:ProviderActionTarget)=>HostResult;\n onUpdateAction?:(action:UpdateAction)=>HostResult;\n onCreateConnection?:()=>HostResult;\n onDiagnostics?:()=>HostResult;\n onClose?:()=>void;\n}\nexport interface SettingsSession extends SettingsViewSession<SettingsPanelState> {\n read():SettingsDraft;\n setProviders(providers:readonly SettingsProviderOption[],selected?:string):void;\n resetProvider(value:{provider:string;baseUrl:string;clearKey?:boolean;collapseAdvanced?:boolean}):void;\n setCredential(view:Readonly<SettingsCredential>):void;\n updateUpdates(state:Readonly<UpdatePanelState>):void;\n setUpdatePending(pending:boolean):void;\n setUpdateError(message:string,options?:{allowCheckRetry?:boolean}):void;\n clearSecrets():void;\n}\nexport interface MCPCallbacks {\n onSubmit?:Submission<MCPConnectionDraft>;\n onConnectionAction?:(action:MCPConnectionAction,target:MCPConnectionTarget)=>HostResult;\n onRefresh?:()=>HostResult;\n onNew?:()=>HostResult;\n onClose?:()=>void;\n}\nexport interface MCPSession extends SettingsViewSession<MCPConnectionsState> {\n read():MCPConnectionDraft;\n edit(value?:Readonly<MCPEditorValue>):void;\n setConnections(entries:readonly MCPConnectionItem[]):void;\n clearBearerToken():void;\n clearSecrets():void;\n}\nexport interface ModelCallbacks {onSubmit?:Submission<ModelSelection>;onClose?:()=>void}\nexport interface ModelSession extends SettingsViewSession<ModelPickerState> {read():ModelSelection;reset(selection:Readonly<ModelSelection>):void;focus():void}\nexport interface CustomConnectionCallbacks {onSubmit?:Submission<CustomConnectionDraft>;onClose?:()=>void}\nexport interface CustomConnectionSession extends SettingsViewSession<CustomConnectionState> {read():CustomConnectionDraft;clearSecrets():void}\nexport interface ProviderLoginCallbacks {onAnswer?:(answer:string)=>HostResult;onCancel?:()=>HostResult;onClose?:()=>void}\nexport interface ProviderLoginSession extends SettingsViewSession<ProviderLoginState> {}\nexport interface SettingsScene {\n openConnectionLoading(state:Readonly<LoadingState>&{readonly editing:boolean},callbacks?:{onClose?:()=>void}):LoadingSession;\n openSettings(state:Readonly<SettingsPanelState>,callbacks?:SettingsCallbacks):SettingsSession;\n openConnections(state?:Readonly<MCPConnectionsState>,callbacks?:MCPCallbacks):MCPSession;\n openModels(state:Readonly<ModelPickerState>,callbacks?:ModelCallbacks):ModelSession;\n openCustomConnection(state:Readonly<CustomConnectionState>,callbacks?:CustomConnectionCallbacks):CustomConnectionSession;\n openProviderLogin(state:Readonly<ProviderLoginState>,callbacks?:ProviderLoginCallbacks):ProviderLoginSession;\n destroy():void;\n}\n\nconst unavailable:ActionResult={ok:false,error:'This action is unavailable.'};\nconst cloneCustom=(draft:CustomConnectionDraft):CustomConnectionDraft=>({...draft,models:draft.models.map(model=>({...model,prices:{...model.prices}}))});\nconst closedSurface:OwnedSurface={isOpen:()=>false,close(){},destroy(){},fail(){}};\n\n/** Compose existing product blocks behind data-only application sessions. */\nexport function createSettingsScene(env:AppEnvironment):SettingsScene {\n const surfaces=new Set<OwnedSurface>();let destroyed=false,sequence=0;\n let loading:LoadingSession|undefined;\n const prefix=(name:string)=>`${env.idPrefix}${name}-${++sequence}-`;\n const track=(open:(content:OwnedContent,onClose:()=>void)=>OwnedSurface,content:OwnedContent,onClose?:()=>void):OwnedSurface=>{\n if(destroyed) {content.destroy();return closedSurface;}\n let surface:OwnedSurface|undefined;\n surface=open(content,()=>{if(surface) surfaces.delete(surface);onClose?.();});\n if(surface.isOpen()) surfaces.add(surface);\n if(destroyed) surface.destroy();\n return surface;\n };\n const submit=<Value>(callback:Submission<Value>|undefined,owner:()=>OwnedSurface|undefined,closeOnSuccess:boolean):Submission<Value>=>async value=>{\n if(!owner()?.isOpen()) return unavailable;\n const result=callback ? await callback(value) : unavailable;\n if(result.ok&&closeOnSuccess&&owner()?.isOpen()) owner()!.close();\n return result;\n };\n return {\n openConnectionLoading(state,callbacks={}) {\n loading?.destroy();\n loading=createLoadingSession(env,state.editing?'Edit model connection':'Add model connection',state,callbacks.onClose);\n if(destroyed) loading.destroy();\n return loading;\n },\n openSettings(initial,callbacks={}) {\n let surface:OwnedSurface|undefined,disposed=false,current=initial;\n let closed:SettingsDraft={provider:'',baseUrl:initial.baseUrl,apiKey:''};\n let provider:ReturnType<typeof createProviderActions>|undefined;\n let providerState:Readonly<ProviderActionsState>|undefined;\n const life=new Lifetime(),auxiliary=new Map<string,ReturnType<typeof createOperation>>();\n const active=()=>!disposed&&!destroyed&&!!surface?.isOpen();\n const run=(name:string,task:()=>HostResult)=>{\n let operation=auxiliary.get(name);\n if(!operation) {operation=createOperation({unavailable:()=>!active(),onError:message=>surface?.fail(message)});auxiliary.set(name,operation);}\n operation.run(task,result=>{if(result&&!result.ok) surface?.fail(result.error);});\n };\n const block=createSettingsPanel(initial,{idPrefix:env.idPrefix,\n onSubmit:submit(callbacks.onSubmit,()=>surface,true),onRemoveKey:submit(callbacks.onRemoveKey,()=>surface,true),\n onTest:draft=>{if(current.testing&&callbacks.onCancelTest) run('cancel-test',callbacks.onCancelTest);else if(callbacks.onTest) run('test',()=>callbacks.onTest!(draft));},\n onAppearanceChange:value=>{if(callbacks.onAppearanceChange&&(value==='light'||value==='dark'||value==='system')) run('appearance',()=>callbacks.onAppearanceChange!(value));},\n onProviderChange:id=>{if(callbacks.onProviderChange) run('provider',()=>callbacks.onProviderChange!(id));},\n onDraftChange:callbacks.onDraftChange,\n });\n const addConnection=block.element.querySelector<HTMLButtonElement>('button[data-sdk=\"custom\"]')!;\n life.listen(addConnection,'click',event=>event.stopPropagation());\n const addAction=adoptAction(addConnection,{onAction:()=>{if(active()&&!current.disabled) return callbacks.onCreateConnection?.();},onError:message=>surface?.fail(message)});\n addAction.update({disabled:!!current.disabled});\n let externalUpdatePending=false,localUpdatePending=false,updateKind:UpdateAction='check';\n const updateOperation=createOperation({unavailable:()=>!active(),onPending:value=>{localUpdatePending=value;updates.setPending(externalUpdatePending||localUpdatePending);},onError:message=>updates.setError(message,{allowCheckRetry:updateKind==='check'})});\n const updateAction=(action:UpdateAction)=>{if(callbacks.onUpdateAction) updateOperation.run(()=>{updateKind=action;updates.setError('');return callbacks.onUpdateAction!(action);},result=>{if(result&&!result.ok) updates.setError(result.error,{allowCheckRetry:action==='check'});});};\n const updates=createUpdatePanel({container:block.updates,productName:env.productName,onCheck:()=>updateAction('check'),onInstall:()=>updateAction('install')});\n life.listen(block.element,'click',event=>{\n if(!active()||!(event.target instanceof Element)) return;\n const button=event.target.closest<HTMLButtonElement>('button');if(!button||button.disabled) return;\n if(button.dataset.action==='diagnostics') {event.stopPropagation();if(callbacks.onDiagnostics) run('diagnostics',callbacks.onDiagnostics);}\n });\n const content:OwnedContent={element:block.element,destroy(){\n if(disposed) return;closed={...block.read(),apiKey:''};disposed=true;life.destroy();updateOperation.destroy();\n for(const operation of auxiliary.values()) operation.destroy();auxiliary.clear();addAction.destroy();provider?.destroy();updates.destroy();block.clearSecrets();block.destroy();\n }};\n surface=track((content,onClose)=>env.openDialog('settings',content,onClose),content,callbacks.onClose);\n return {\n update(state){if(active()){current=state;block.update(state);addAction.update({disabled:!!state.disabled});if(providerState) provider?.update({...providerState,disabled:!!state.disabled||!!providerState.disabled});}},\n read(){return active()?{...block.read()}:{...closed};},\n setProviders(items,selected){if(active()) block.setProviders(items,selected);},\n resetProvider(value){if(active()){for(const operation of auxiliary.values()) operation.invalidate();block.resetProvider(value);}},\n setCredential(view){\n if(!active()) return;\n providerState=view.providerActions;\n if(view.providerActions) {\n const actions={...view.providerActions,disabled:!!current.disabled||!!view.providerActions.disabled};\n if(provider) provider.update(actions);\n else provider=createProviderActions(actions,{onProviderAction:(action,target)=>{if(active()&&!current.disabled) return callbacks.onProviderAction?.(action,target);},onError:message=>surface?.fail(message)});\n } else {provider?.destroy();provider=undefined;}\n const {providerActions:_,...credential}=view;block.setCredential({...credential,actions:provider?.element});\n },\n updateUpdates(state){if(active()) updates.update(state);},\n setUpdatePending(pending){if(active()){externalUpdatePending=pending;updates.setPending(externalUpdatePending||localUpdatePending);}},\n setUpdateError(message,options){if(active()) updates.setError(message,options);},\n clearSecrets(){if(active()) block.clearSecrets();closed.apiKey='';},\n fail(message){if(active()) surface!.fail(message);},close(){surface?.close();},isOpen:active,destroy(){surface?.destroy();},\n };\n },\n openConnections(initial={},callbacks={}) {\n let surface:OwnedSurface|undefined,disposed=false,current=initial;\n let entries:readonly MCPConnectionItem[]=[];\n let closed:MCPConnectionDraft={name:'',type:'http',url:'',oauth:false,oauthClientId:'',oauthScope:'',command:'',args:'[]',enabled:true,bearerToken:'',clearBearerToken:false,env:'',clearEnv:false};\n const life=new Lifetime(),active=()=>!disposed&&!destroyed&&!!surface?.isOpen();\n const operation=createOperation({unavailable:()=>!active(),onError:message=>surface?.fail(message)});\n const run=(task:(()=>HostResult)|undefined)=>{if(task) operation.run(task,result=>{if(result&&!result.ok) surface?.fail(result.error);});};\n const block=createMCPConnectionsPanel(initial,{idPrefix:env.idPrefix,onSubmit:submit(callbacks.onSubmit,()=>surface,false)});\n const list=createMCPConnectionList({entries:[],disabled:initial.disabled},{onAction:(action,target)=>callbacks.onConnectionAction?.(action,target)});\n life.listen(block.element,'click',event=>{\n if(!active()||!(event.target instanceof Element)) return;\n const button=event.target.closest<HTMLButtonElement>('button');if(!button||button.disabled) return;\n if(button.dataset.action==='refresh-mcp'){event.stopPropagation();run(callbacks.onRefresh);}\n if(button.dataset.action==='new-mcp'){event.stopPropagation();block.edit();run(callbacks.onNew);}\n });\n const content:OwnedContent={element:block.element,destroy(){if(disposed) return;closed={...block.read(),bearerToken:'',env:''};disposed=true;life.destroy();operation.destroy();list.destroy();block.clearSecrets();block.destroy();}};\n surface=track((content,onClose)=>env.openDialog('connections',content,onClose),content,callbacks.onClose);\n return {\n update(state){if(active()){current=state;block.update(state);list.update({entries,disabled:state.disabled});}},\n read(){return active()?{...block.read()}:{...closed};},\n edit(value){if(active()){operation.invalidate();block.edit(value);}},\n setConnections(values){if(active()){entries=values;if(list.element.parentNode!==block.list) block.list.replaceChildren(list.element);list.update({entries,disabled:current.disabled});}},\n clearBearerToken(){if(active()) block.clearBearerToken();closed.bearerToken='';},\n clearSecrets(){if(active()) block.clearSecrets();closed.bearerToken='';closed.env='';},\n fail(message){if(active()) surface!.fail(message);},close(){surface?.close();},isOpen:active,destroy(){surface?.destroy();},\n };\n },\n openModels(initial,callbacks={}) {\n let surface:OwnedSurface|undefined,disposed=false,closed:ModelSelection={...(initial.editor?.selection??{provider:'',model:'',thinkingLevel:''})};\n const active=()=>!disposed&&!destroyed&&!!surface?.isOpen();\n const block=createModelPicker(initial,{idPrefix:env.idPrefix,onSubmit:submit(callbacks.onSubmit,()=>surface,true)});\n const content:OwnedContent={element:block.element,destroy(){if(disposed) return;closed={...block.read()};disposed=true;block.destroy();}};\n surface=track((content,onClose)=>env.openDialog('model',content,onClose),content,callbacks.onClose);\n return {update(state){if(active()) block.update(state);},read(){return active()?{...block.read()}:{...closed};},reset(selection){if(active()) block.reset(selection);},focus(){if(active()) block.focus();},fail(message){if(active()) surface!.fail(message);},close(){surface?.close();},isOpen:active,destroy(){surface?.destroy();}};\n },\n openCustomConnection(initial,callbacks={}) {\n let surface:OwnedSurface|undefined,disposed=false;\n let closed:CustomConnectionDraft={name:initial.name,baseUrl:initial.baseUrl,api:initial.api,apiKey:'',models:[]};\n const active=()=>!disposed&&!destroyed&&!!surface?.isOpen();\n const block=createCustomConnectionEditor(initial,{idPrefix:prefix('custom'),onSubmit:submit(callbacks.onSubmit,()=>surface,true)});\n const clearSecrets=()=>{for(const input of block.form.querySelectorAll<HTMLInputElement>('input[type=\"password\"]')) input.value='';closed.apiKey='';};\n const content:OwnedContent={element:block.element,destroy(){if(disposed) return;closed={...cloneCustom(block.read()),apiKey:''};disposed=true;clearSecrets();block.destroy();}};\n surface=track((content,onClose)=>env.openFeature(initial.editing?'Edit model connection':'Add model connection',content,onClose),content,callbacks.onClose);\n return {update(state){if(active()) block.update(state);},read(){return cloneCustom(active()?block.read():closed);},clearSecrets(){if(active()) clearSecrets();},fail(message){if(active()) surface!.fail(message);},close(){surface?.close();},isOpen:active,destroy(){surface?.destroy();}};\n },\n openProviderLogin(initial,callbacks={}) {\n let surface:OwnedSurface|undefined,disposed=false;\n const life=new Lifetime(),active=()=>!disposed&&!destroyed&&!!surface?.isOpen();\n const external=createOperation({unavailable:()=>!active(),onError:message=>surface?.fail(message)});\n const cancellation=createOperation({unavailable:()=>!active(),onError:message=>surface?.fail(message)});\n const block=createProviderLoginPanel(initial,{idPrefix:prefix('login'),onAnswer:answer=>callbacks.onAnswer?.(answer),\n onCancel(){cancellation.run(()=>callbacks.onCancel?.());surface?.close();},onClose:()=>surface?.close(),\n });\n life.listen(block.element,'click',event=>{\n if(!active()||!(event.target instanceof Element)) return;\n const link=event.target.closest<HTMLAnchorElement>('a[href]');if(!link||!block.element.contains(link)) return;\n event.preventDefault();event.stopPropagation();external.run(()=>env.openExternal(link.href),result=>{if(!result.ok) surface?.fail(result.error);});\n });\n const content:OwnedContent={element:block.element,destroy(){if(disposed) return;disposed=true;external.destroy();cancellation.destroy();life.destroy();block.destroy();}};\n surface=track((content,onClose)=>env.openOAuth('Provider sign-in',content,onClose),content,callbacks.onClose);\n return {update(state){if(active()) block.update(state);},fail(message){if(active()) surface!.fail(message);},close(){surface?.close();},isOpen:active,destroy(){surface?.destroy();}};\n },\n destroy(){if(destroyed) return;destroyed=true;loading?.destroy();for(const surface of [...surfaces]) surface.destroy();surfaces.clear();},\n };\n}\n"]}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/app/settings.ts"],"names":[],"mappings":"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","sourcesContent":["import {Lifetime,type ActionResult} from '../core.js';\nimport {createOperation} from '../operation.js';\nimport {adoptAction} from '../foundations.js';\nimport {createProviderActions,type ProviderAction,type ProviderActionsState,type ProviderActionTarget} from '../forms/actions.js';\nimport {createSettingsPanel,createMCPConnectionsPanel,createMCPConnectionList,createModelPicker} from '../forms/panels.js';\nimport type {SettingsPanelState,SettingsDraft,SettingsProviderOption,SettingsCredentialView,MCPConnectionsState,MCPConnectionDraft,MCPEditorValue,MCPConnectionItem,MCPConnectionAction,MCPConnectionTarget,ModelPickerState} from '../forms/panels.js';\nimport {createCustomConnectionEditor,type CustomConnectionState,type CustomConnectionDraft} from '../forms/custom-connection.js';\nimport {createProviderLoginPanel,type ProviderLoginState} from '../forms/provider-login.js';\nimport type {ModelSelection} from '../forms/model-editor.js';\nimport {createUpdatePanel,type UpdatePanelState} from '../files/systems.js';\nimport type {Appearance} from '../theme.js';\nimport type {AppEnvironment,HostResult,OwnedContent,OwnedSurface} from './internal.js';\nimport {createLoadingSession,type LoadingState,type LoadingSession} from './session.js';\n\nexport type {SettingsPanelState,SettingsDraft,SettingsProviderOption,MCPConnectionsState,MCPConnectionDraft,MCPEditorValue,MCPConnectionItem,ModelPickerState,ModelSelection,CustomConnectionState,CustomConnectionDraft,ProviderLoginState,UpdatePanelState,ProviderAction,ProviderActionsState,ProviderActionTarget,MCPConnectionAction,MCPConnectionTarget};\ntype Submission<Value>=(value:Value)=>ActionResult|Promise<ActionResult>;\n\n/** Session methods address one owned opening, never a later use of its window. */\nexport interface SettingsViewSession<State> {\n update(state:Readonly<State>):void;\n fail(message:string):void;\n close():void;\n isOpen():boolean;\n destroy():void;\n}\nexport interface SettingsCredential extends Omit<SettingsCredentialView,'actions'> {providerActions?:Readonly<ProviderActionsState>}\nexport type UpdateAction='check'|'install';\nexport interface SettingsCallbacks {\n onSubmit?:Submission<SettingsDraft>;\n onRemoveKey?:Submission<SettingsDraft>;\n onTest?:(draft:SettingsDraft)=>HostResult;\n onCancelTest?:()=>HostResult;\n onAppearanceChange?:(appearance:Appearance)=>HostResult;\n onProviderChange?:(provider:string)=>HostResult;\n onDraftChange?:(draft:SettingsDraft)=>void;\n onProviderAction?:(action:ProviderAction,target:ProviderActionTarget)=>HostResult;\n onUpdateAction?:(action:UpdateAction)=>HostResult;\n onCreateConnection?:()=>HostResult;\n onDiagnostics?:()=>HostResult;\n onClose?:()=>void;\n}\nexport interface SettingsSession extends SettingsViewSession<SettingsPanelState> {\n read():SettingsDraft;\n setProviders(providers:readonly SettingsProviderOption[],selected?:string):void;\n resetProvider(value:{provider:string;baseUrl:string;clearKey?:boolean;collapseAdvanced?:boolean}):void;\n setCredential(view:Readonly<SettingsCredential>):void;\n updateUpdates(state:Readonly<UpdatePanelState>):void;\n setUpdatePending(pending:boolean):void;\n setUpdateError(message:string,options?:{allowCheckRetry?:boolean}):void;\n clearSecrets():void;\n}\nexport interface MCPCallbacks {\n onSubmit?:Submission<MCPConnectionDraft>;\n onConnectionAction?:(action:MCPConnectionAction,target:MCPConnectionTarget)=>HostResult;\n onRefresh?:()=>HostResult;\n onNew?:()=>HostResult;\n onClose?:()=>void;\n}\nexport interface MCPSession extends SettingsViewSession<MCPConnectionsState> {\n read():MCPConnectionDraft;\n edit(value?:Readonly<MCPEditorValue>):void;\n setConnections(entries:readonly MCPConnectionItem[]):void;\n clearBearerToken():void;\n clearSecrets():void;\n}\nexport interface ModelCallbacks {onSubmit?:Submission<ModelSelection>;onClose?:()=>void}\nexport interface ModelSession extends SettingsViewSession<ModelPickerState> {read():ModelSelection;reset(selection:Readonly<ModelSelection>):void;focus():void}\nexport interface CustomConnectionCallbacks {onSubmit?:Submission<CustomConnectionDraft>;onClose?:()=>void}\nexport interface CustomConnectionSession extends SettingsViewSession<CustomConnectionState> {read():CustomConnectionDraft;clearSecrets():void}\nexport interface ProviderLoginCallbacks {onAnswer?:(answer:string)=>HostResult;onCancel?:()=>HostResult;onClose?:()=>void}\nexport interface ProviderLoginSession extends SettingsViewSession<ProviderLoginState> {}\nexport interface SettingsScene {\n openConnectionLoading(state:Readonly<LoadingState>&{readonly editing:boolean},callbacks?:{onClose?:()=>void}):LoadingSession;\n openSettings(state:Readonly<SettingsPanelState>,callbacks?:SettingsCallbacks):SettingsSession;\n openConnections(state?:Readonly<MCPConnectionsState>,callbacks?:MCPCallbacks):MCPSession;\n openModels(state:Readonly<ModelPickerState>,callbacks?:ModelCallbacks):ModelSession;\n openCustomConnection(state:Readonly<CustomConnectionState>,callbacks?:CustomConnectionCallbacks):CustomConnectionSession;\n openProviderLogin(state:Readonly<ProviderLoginState>,callbacks?:ProviderLoginCallbacks):ProviderLoginSession;\n destroy():void;\n}\n\nconst unavailable:ActionResult={ok:false,error:'This action is unavailable.'};\nconst cloneCustom=(draft:CustomConnectionDraft):CustomConnectionDraft=>({...draft,models:draft.models.map(model=>({...model,prices:{...model.prices}}))});\nconst closedSurface:OwnedSurface={isOpen:()=>false,close(){},destroy(){},fail(){}};\n\n/** Compose existing product blocks behind data-only application sessions. */\nexport function createSettingsScene(env:AppEnvironment):SettingsScene {\n const surfaces=new Set<OwnedSurface>();let destroyed=false,sequence=0;\n let loading:LoadingSession|undefined;\n const prefix=(name:string)=>`${env.idPrefix}${name}-${++sequence}-`;\n const track=(open:(content:OwnedContent,onClose:()=>void)=>OwnedSurface,content:OwnedContent,onClose?:()=>void):OwnedSurface=>{\n if(destroyed) {content.destroy();return closedSurface;}\n let surface:OwnedSurface|undefined;\n surface=open(content,()=>{if(surface) surfaces.delete(surface);onClose?.();});\n if(surface.isOpen()) surfaces.add(surface);\n if(destroyed) surface.destroy();\n return surface;\n };\n const submit=<Value>(callback:Submission<Value>|undefined,owner:()=>OwnedSurface|undefined,closeOnSuccess:boolean,revision:()=>number=()=>0):Submission<Value>=>async value=>{\n if(!owner()?.isOpen()) return unavailable;\n const submittedRevision=revision();\n const result=callback ? await callback(value) : unavailable;\n if(result.ok&&closeOnSuccess&&submittedRevision===revision()&&owner()?.isOpen()) owner()!.close();\n return result;\n };\n return {\n openConnectionLoading(state,callbacks={}) {\n loading?.destroy();\n loading=createLoadingSession(env,state.editing?'Edit model connection':'Add model connection',state,callbacks.onClose);\n if(destroyed) loading.destroy();\n return loading;\n },\n openSettings(initial,callbacks={}) {\n let surface:OwnedSurface|undefined,disposed=false,current=initial,revision=0;\n let closed:SettingsDraft={provider:'',baseUrl:initial.baseUrl,apiKey:''};\n let provider:ReturnType<typeof createProviderActions>|undefined;\n let providerState:Readonly<ProviderActionsState>|undefined;\n const life=new Lifetime(),auxiliary=new Map<string,ReturnType<typeof createOperation>>();\n const active=()=>!disposed&&!destroyed&&!!surface?.isOpen();\n const run=(name:string,task:()=>HostResult)=>{\n let operation=auxiliary.get(name);\n if(!operation) {operation=createOperation({unavailable:()=>!active(),onError:message=>surface?.fail(message)});auxiliary.set(name,operation);}\n operation.run(task,result=>{if(result&&!result.ok) surface?.fail(result.error);});\n };\n const block=createSettingsPanel(initial,{idPrefix:env.idPrefix,\n onSubmit:submit(callbacks.onSubmit,()=>surface,true,()=>revision),onRemoveKey:submit(callbacks.onRemoveKey,()=>surface,true,()=>revision),\n onTest:draft=>{if(current.testing&&callbacks.onCancelTest) run('cancel-test',callbacks.onCancelTest);else if(callbacks.onTest) run('test',()=>callbacks.onTest!(draft));},\n onAppearanceChange:value=>{if(callbacks.onAppearanceChange&&(value==='light'||value==='dark'||value==='system')) run('appearance',()=>callbacks.onAppearanceChange!(value));},\n onProviderChange:id=>{if(callbacks.onProviderChange) run('provider',()=>callbacks.onProviderChange!(id));},\n onDraftChange:callbacks.onDraftChange,\n });\n const addConnection=block.element.querySelector<HTMLButtonElement>('button[data-sdk=\"custom\"]')!;\n life.listen(addConnection,'click',event=>event.stopPropagation());\n const addAction=adoptAction(addConnection,{onAction:()=>{if(active()&&!current.disabled) return callbacks.onCreateConnection?.();},onError:message=>surface?.fail(message)});\n addAction.update({disabled:!!current.disabled});\n let externalUpdatePending=false,localUpdatePending=false,updateKind:UpdateAction='check';\n const updateOperation=createOperation({unavailable:()=>!active(),onPending:value=>{localUpdatePending=value;updates.setPending(externalUpdatePending||localUpdatePending);},onError:message=>updates.setError(message,{allowCheckRetry:updateKind==='check'})});\n const updateAction=(action:UpdateAction)=>{if(callbacks.onUpdateAction) updateOperation.run(()=>{updateKind=action;updates.setError('');return callbacks.onUpdateAction!(action);},result=>{if(result&&!result.ok) updates.setError(result.error,{allowCheckRetry:action==='check'});});};\n const updates=createUpdatePanel({container:block.updates,productName:env.productName,onCheck:()=>updateAction('check'),onInstall:()=>updateAction('install')});\n life.listen(block.element,'click',event=>{\n if(!active()||!(event.target instanceof Element)) return;\n const button=event.target.closest<HTMLButtonElement>('button');if(!button||button.disabled) return;\n if(button.dataset.action==='diagnostics') {event.stopPropagation();if(callbacks.onDiagnostics) run('diagnostics',callbacks.onDiagnostics);}\n });\n const content:OwnedContent={element:block.element,destroy(){\n if(disposed) return;closed={...block.read(),apiKey:''};disposed=true;life.destroy();updateOperation.destroy();\n for(const operation of auxiliary.values()) operation.destroy();auxiliary.clear();addAction.destroy();provider?.destroy();updates.destroy();block.clearSecrets();block.destroy();\n }};\n surface=track((content,onClose)=>env.openDialog('settings',content,onClose),content,callbacks.onClose);\n return {\n update(state){if(active()){current=state;block.update(state);addAction.update({disabled:!!state.disabled});if(providerState) provider?.update({...providerState,disabled:!!state.disabled||!!providerState.disabled});}},\n read(){return active()?{...block.read()}:{...closed};},\n setProviders(items,selected){if(active()) block.setProviders(items,selected);},\n resetProvider(value){if(active()){revision++;for(const operation of auxiliary.values()) operation.invalidate();block.resetProvider(value);}},\n setCredential(view){\n if(!active()) return;\n providerState=view.providerActions;\n if(view.providerActions) {\n const actions={...view.providerActions,disabled:!!current.disabled||!!view.providerActions.disabled};\n if(provider) provider.update(actions);\n else provider=createProviderActions(actions,{onProviderAction:(action,target)=>{if(active()&&!current.disabled) return callbacks.onProviderAction?.(action,target);},onError:message=>surface?.fail(message)});\n } else {provider?.destroy();provider=undefined;}\n const {providerActions:_,...credential}=view;block.setCredential({...credential,actions:provider?.element});\n },\n updateUpdates(state){if(active()) updates.update(state);},\n setUpdatePending(pending){if(active()){externalUpdatePending=pending;updates.setPending(externalUpdatePending||localUpdatePending);}},\n setUpdateError(message,options){if(active()) updates.setError(message,options);},\n clearSecrets(){if(active()) block.clearSecrets();closed.apiKey='';},\n fail(message){if(active()) surface!.fail(message);},close(){surface?.close();},isOpen:active,destroy(){surface?.destroy();},\n };\n },\n openConnections(initial={},callbacks={}) {\n let surface:OwnedSurface|undefined,disposed=false,current=initial;\n let entries:readonly MCPConnectionItem[]=[];\n let closed:MCPConnectionDraft={name:'',type:'http',url:'',oauth:false,oauthClientId:'',oauthScope:'',command:'',args:'[]',enabled:true,bearerToken:'',clearBearerToken:false,env:'',clearEnv:false};\n const life=new Lifetime(),active=()=>!disposed&&!destroyed&&!!surface?.isOpen();\n const operation=createOperation({unavailable:()=>!active(),onError:message=>surface?.fail(message)});\n const run=(task:(()=>HostResult)|undefined)=>{if(task) operation.run(task,result=>{if(result&&!result.ok) surface?.fail(result.error);});};\n const block=createMCPConnectionsPanel(initial,{idPrefix:env.idPrefix,onSubmit:submit(callbacks.onSubmit,()=>surface,false)});\n const list=createMCPConnectionList({entries:[],disabled:initial.disabled},{onAction:(action,target)=>callbacks.onConnectionAction?.(action,target)});\n life.listen(block.element,'click',event=>{\n if(!active()||!(event.target instanceof Element)) return;\n const button=event.target.closest<HTMLButtonElement>('button');if(!button||button.disabled) return;\n if(button.dataset.action==='refresh-mcp'){event.stopPropagation();run(callbacks.onRefresh);}\n if(button.dataset.action==='new-mcp'){event.stopPropagation();block.edit();run(callbacks.onNew);}\n });\n const content:OwnedContent={element:block.element,destroy(){if(disposed) return;closed={...block.read(),bearerToken:'',env:''};disposed=true;life.destroy();operation.destroy();list.destroy();block.clearSecrets();block.destroy();}};\n surface=track((content,onClose)=>env.openDialog('connections',content,onClose),content,callbacks.onClose);\n return {\n update(state){if(active()){current=state;block.update(state);list.update({entries,disabled:state.disabled});}},\n read(){return active()?{...block.read()}:{...closed};},\n edit(value){if(active()){operation.invalidate();block.edit(value);}},\n setConnections(values){if(active()){entries=values;if(list.element.parentNode!==block.list) block.list.replaceChildren(list.element);list.update({entries,disabled:current.disabled});}},\n clearBearerToken(){if(active()) block.clearBearerToken();closed.bearerToken='';},\n clearSecrets(){if(active()) block.clearSecrets();closed.bearerToken='';closed.env='';},\n fail(message){if(active()) surface!.fail(message);},close(){surface?.close();},isOpen:active,destroy(){surface?.destroy();},\n };\n },\n openModels(initial,callbacks={}) {\n let surface:OwnedSurface|undefined,disposed=false,revision=0,closed:ModelSelection={...(initial.editor?.selection??{provider:'',model:'',thinkingLevel:''})};\n const active=()=>!disposed&&!destroyed&&!!surface?.isOpen();\n const block=createModelPicker(initial,{idPrefix:env.idPrefix,onSubmit:submit(callbacks.onSubmit,()=>surface,true,()=>revision)});\n const content:OwnedContent={element:block.element,destroy(){if(disposed) return;closed={...block.read()};disposed=true;block.destroy();}};\n surface=track((content,onClose)=>env.openDialog('model',content,onClose),content,callbacks.onClose);\n return {update(state){if(active()) block.update(state);},read(){return active()?{...block.read()}:{...closed};},reset(selection){if(active()){revision++;block.reset(selection);}},focus(){if(active()) block.focus();},fail(message){if(active()) surface!.fail(message);},close(){surface?.close();},isOpen:active,destroy(){surface?.destroy();}};\n },\n openCustomConnection(initial,callbacks={}) {\n let surface:OwnedSurface|undefined,disposed=false;\n let closed:CustomConnectionDraft={name:initial.name,baseUrl:initial.baseUrl,api:initial.api,apiKey:'',models:[]};\n const active=()=>!disposed&&!destroyed&&!!surface?.isOpen();\n const block=createCustomConnectionEditor(initial,{idPrefix:prefix('custom'),onSubmit:submit(callbacks.onSubmit,()=>surface,true)});\n const clearSecrets=()=>{for(const input of block.form.querySelectorAll<HTMLInputElement>('input[type=\"password\"]')) input.value='';closed.apiKey='';};\n const content:OwnedContent={element:block.element,destroy(){if(disposed) return;closed={...cloneCustom(block.read()),apiKey:''};disposed=true;clearSecrets();block.destroy();}};\n surface=track((content,onClose)=>env.openFeature(initial.editing?'Edit model connection':'Add model connection',content,onClose),content,callbacks.onClose);\n return {update(state){if(active()) block.update(state);},read(){return cloneCustom(active()?block.read():closed);},clearSecrets(){if(active()) clearSecrets();},fail(message){if(active()) surface!.fail(message);},close(){surface?.close();},isOpen:active,destroy(){surface?.destroy();}};\n },\n openProviderLogin(initial,callbacks={}) {\n let surface:OwnedSurface|undefined,disposed=false;\n const life=new Lifetime(),active=()=>!disposed&&!destroyed&&!!surface?.isOpen();\n const external=createOperation({unavailable:()=>!active(),onError:message=>surface?.fail(message)});\n const cancellation=createOperation({unavailable:()=>!active(),onError:message=>surface?.fail(message)});\n const block=createProviderLoginPanel(initial,{idPrefix:prefix('login'),onAnswer:answer=>callbacks.onAnswer?.(answer),\n onCancel(){cancellation.run(()=>callbacks.onCancel?.());surface?.close();},onClose:()=>surface?.close(),\n });\n life.listen(block.element,'click',event=>{\n if(!active()||!(event.target instanceof Element)) return;\n const link=event.target.closest<HTMLAnchorElement>('a[href]');if(!link||!block.element.contains(link)) return;\n event.preventDefault();event.stopPropagation();external.run(()=>env.openExternal(link.href),result=>{if(!result.ok) surface?.fail(result.error);});\n });\n const content:OwnedContent={element:block.element,destroy(){if(disposed) return;disposed=true;external.destroy();cancellation.destroy();life.destroy();block.destroy();}};\n surface=track((content,onClose)=>env.openOAuth('Provider sign-in',content,onClose),content,callbacks.onClose);\n return {update(state){if(active()) block.update(state);},fail(message){if(active()) surface!.fail(message);},close(){surface?.close();},isOpen:active,destroy(){surface?.destroy();}};\n },\n destroy(){if(destroyed) return;destroyed=true;loading?.destroy();for(const surface of [...surfaces]) surface.destroy();surfaces.clear();},\n };\n}\n"]}
@@ -78,6 +78,7 @@ export interface WorkspaceCallbacks {
78
78
  onDropReferences?(input: {
79
79
  readonly paths: readonly string[];
80
80
  readonly uris?: string;
81
+ readonly hasUnidentifiedFiles: boolean;
81
82
  }): void;
82
83
  onPermissionChange?(value: string): void;
83
84
  onApproval?(id: string, action: 'deny' | 'always' | 'allow'): void;
@@ -122,6 +123,9 @@ export interface ConfirmationState {
122
123
  readonly disabled?: boolean;
123
124
  }
124
125
  export interface WorkspaceAvailability {
126
+ /** A host mutation blocks actions in every scope. A running task is scoped below. */
127
+ readonly busy?: boolean;
128
+ /** Global actions only; unrelated inactive targets keep their own availability. */
125
129
  readonly global?: boolean;
126
130
  readonly active?: boolean;
127
131
  readonly conversations?: readonly string[];
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/app/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/app/workspace.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { adoptAction } from '../foundations.js';
1
2
  import { createWorkspaceShell } from '../workspace.js';
2
3
  import { createWorkspaceNavigation, createWorkspacePicker, createRenameConversation } from '../navigation/navigation.js';
3
4
  import { createContextMenu } from '../navigation/context-menu.js';
@@ -17,6 +18,8 @@ export function createWorkspaceScene(env, shell, callbacks, brand) {
17
18
  let navigationConversation = '';
18
19
  let composerState = {};
19
20
  let availability = {};
21
+ let messageAvailability = {};
22
+ const composerUnavailable = () => destroyed || !!composerState.disabled || !!composerState.readOnly || !!availability.busy || env.hasModal();
20
23
  const abort = new AbortController();
21
24
  const folds = new Map(), expanded = new Map();
22
25
  const imageData = new Map();
@@ -39,7 +42,7 @@ export function createWorkspaceScene(env, shell, callbacks, brand) {
39
42
  fail(error);
40
43
  }
41
44
  };
42
- const copy = createCopyFeedback({ status: env.part('copy-status'), isDisabled: button => !!availability.global || (button.hasAttribute('data-message-action') && !!availability.active), onError: fail });
45
+ const copy = createCopyFeedback({ status: env.part('copy-status'), isDisabled: button => !!availability.busy || (button.hasAttribute('data-message-action') && !!messageAvailability[button.dataset.messageAction]), onError: fail });
43
46
  const copyAction = (button, action, label) => copy.copy(button, async () => { const result = await action(); if (result && !result.ok)
44
47
  throw new Error(result.error); }, label);
45
48
  const messages = createConversationView({ container: env.part('messages'), markdown: id => ({ resolveLocalLink: href => callbacks.resolveLocalLink?.(href, id) ?? null }),
@@ -60,7 +63,8 @@ export function createWorkspaceScene(env, shell, callbacks, brand) {
60
63
  logo.src = env.brandMarkSource();
61
64
  logo.alt = brand.mark.alt;
62
65
  }
63
- const welcome = createWelcomeView({ container: env.part('welcome'), logo, onAction: action => { void run(() => callbacks.onAction?.(action)); }, onPrompt: text => { shell.composer.reset(text); callbacks.onInput?.(text); shell.composer.focus(); } });
66
+ const welcome = createWelcomeView({ container: env.part('welcome'), logo, onAction: action => { void run(() => callbacks.onAction?.(action)); }, onPrompt: text => { if (composerUnavailable())
67
+ return; shell.composer.reset(text); callbacks.onInput?.(text); shell.composer.focus(); } });
64
68
  const menu = createContextMenu({ element: env.part('conversation-menu'), onDismiss: () => { menuTarget = undefined; renderNavigation(); }, onAction(item) {
65
69
  const target = menuTarget;
66
70
  closeMenu();
@@ -102,12 +106,12 @@ export function createWorkspaceScene(env, shell, callbacks, brand) {
102
106
  function menuItems(target) {
103
107
  if (target.kind === 'workspace') {
104
108
  const group = navigationState.groups.find(group => group.id === target.id);
105
- return [{ id: 'remove', label: 'Remove workspace', action: 'remove', danger: true, disabled: !!navigationState.disabled || !!availability.global || availability.workspaces?.includes(target.id) || group?.canRemove === false }];
109
+ return [{ id: 'remove', label: 'Remove workspace', action: 'remove', danger: true, disabled: !!navigationState.disabled || !!availability.busy || availability.workspaces?.includes(target.id) || group?.canRemove === false }];
106
110
  }
107
111
  const entry = navigationState.groups.flatMap(group => group.children).find(item => item.id === target.id);
108
- return [['rename', 'Rename conversation'], ['history', 'Conversation branches'], ['export', 'Export conversation'], ['delete', 'Delete conversation']]
112
+ return [['rename', 'Rename'], ['history', 'Conversation branches'], ['export', 'Export Markdown'], ['delete', 'Delete conversation']]
109
113
  .filter(([action]) => action !== 'history' || entry?.active)
110
- .map(([action, label]) => ({ id: action, action, label, danger: action === 'delete', disabled: !!navigationState.disabled || !!availability.global || availability.conversations?.includes(target.id) || entry?.actions?.[action] === false }));
114
+ .map(([action, label]) => ({ id: action, action, label, danger: action === 'delete', disabled: !!navigationState.disabled || !!availability.busy || availability.conversations?.includes(target.id) || entry?.actions?.[action] === false }));
111
115
  }
112
116
  function renderNavigation() {
113
117
  if (destroyed)
@@ -159,12 +163,14 @@ export function createWorkspaceScene(env, shell, callbacks, brand) {
159
163
  }
160
164
  }, { signal: abort.signal });
161
165
  const input = shell.composer.input, form = shell.composer.element;
166
+ const attachmentAction = adoptAction(env.part('attach-images'));
167
+ const syncAttachment = () => attachmentAction.update({ disabled: attachmentsDisabled || !!composerState.disabled || !!composerState.readOnly || !!availability.busy });
162
168
  input.addEventListener('blur', () => callbacks.onBlur?.(), { signal: abort.signal });
163
169
  input.addEventListener('paste', event => { const files = [...event.clipboardData?.items || []].filter(item => item.type.startsWith('image/')).map(item => item.getAsFile()).filter((file) => !!file); if (files.length) {
164
170
  event.preventDefault();
165
171
  callbacks.onImages?.(files);
166
172
  } }, { signal: abort.signal });
167
- const dropUnavailable = () => destroyed || !!composerState.disabled || !!composerState.readOnly || dropPending || env.hasModal();
173
+ const dropUnavailable = () => composerUnavailable() || dropPending;
168
174
  form.addEventListener('dragover', event => { if (dropUnavailable())
169
175
  return; event.preventDefault(); drop.update({ active: true }); }, { signal: abort.signal });
170
176
  form.addEventListener('dragleave', event => { if (!form.contains(event.relatedTarget))
@@ -172,15 +178,18 @@ export function createWorkspaceScene(env, shell, callbacks, brand) {
172
178
  form.addEventListener('drop', event => {
173
179
  event.preventDefault();
174
180
  drop.update({ active: false });
175
- if (dropUnavailable())
181
+ if (composerUnavailable())
176
182
  return;
177
183
  const files = [...event.dataTransfer?.files || []];
178
184
  const isImage = (file) => ['image/png', 'image/jpeg', 'image/gif', 'image/webp'].includes(file.type) || !file.type && /\.(?:png|jpe?g|gif|webp)$/i.test(file.name);
179
185
  const images = files.filter(isImage), uris = event.dataTransfer?.getData('text/uri-list') || '';
180
- if (images.length)
186
+ if (images.length && !attachmentsDisabled)
181
187
  callbacks.onImages?.(images);
182
- if (uris || files.some(file => !isImage(file)))
183
- callbacks.onDropReferences?.({ paths: [], uris });
188
+ if (dropPending)
189
+ return;
190
+ const hasUnidentifiedFiles = files.some(file => !isImage(file));
191
+ if (uris || hasUnidentifiedFiles)
192
+ callbacks.onDropReferences?.({ paths: [], uris, hasUnidentifiedFiles });
184
193
  }, { signal: abort.signal });
185
194
  const collectFolds = () => { if (!activeId)
186
195
  return; const map = new Map(); for (const item of env.part('messages').querySelectorAll('[data-tool-fold]'))
@@ -285,16 +294,17 @@ export function createWorkspaceScene(env, shell, callbacks, brand) {
285
294
  updateComposer(state) { if (!destroyed) {
286
295
  composerState = state;
287
296
  shell.composer.update(state);
297
+ syncAttachment();
288
298
  drop.update({ active: false, disabled: dropUnavailable() });
289
299
  } },
290
300
  readDraft: () => shell.composer.getValue(), resetDraft: text => { if (!destroyed)
291
301
  shell.composer.reset(text); }, focusComposer: shell.composer.focus,
292
- pickImages() { if (!dropUnavailable() && !attachmentsDisabled)
302
+ pickImages() { if (!composerUnavailable() && !attachmentsDisabled)
293
303
  shell.composer.pickImages(); },
294
304
  insertReferences(paths) {
295
305
  if (dropUnavailable() || !paths.length)
296
306
  return;
297
- const reference = paths.map(path => { const ticks = Math.max(0, ...[...path.matchAll(/`+/g)].map(match => match[0].length)) + 1; const delimiter = '`'.repeat(ticks); return delimiter + (/^`|`$|^ | $/.test(path) ? ' ' + path + ' ' : path) + delimiter; }).join(' ');
307
+ const reference = paths.map(path => { const ticks = Math.max(0, ...[...path.matchAll(/`+/g)].map(match => match[0].length)) + 1; const delimiter = '`'.repeat(ticks); return delimiter + (/^`|`$|^ | $/.test(path) && !/^ +$/.test(path) ? ' ' + path + ' ' : path) + delimiter; }).join(' ');
298
308
  const value = input.value, start = input.selectionStart, end = input.selectionEnd;
299
309
  const before = value.slice(0, start), after = value.slice(end), inserted = (before && !/\s$/.test(before) ? ' ' : '') + reference + (after && !/^\s/.test(after) ? ' ' : '');
300
310
  shell.composer.reset(before + inserted + after);
@@ -303,7 +313,7 @@ export function createWorkspaceScene(env, shell, callbacks, brand) {
303
313
  callbacks.onInput?.(input.value);
304
314
  },
305
315
  receiveNativeDrop({ paths, x, y }) { if (dropUnavailable() || !Number.isFinite(x) || !Number.isFinite(y) || !form.contains(document.elementFromPoint(x, y)))
306
- return; callbacks.onDropReferences?.({ paths: [...paths] }); },
316
+ return; callbacks.onDropReferences?.({ paths: [...paths], hasUnidentifiedFiles: false }); },
307
317
  setDropPending(value) { dropPending = value; if (value)
308
318
  drop.update({ active: false }); },
309
319
  updateNavigation(state) { navigationState = state; const active = state.groups.flatMap(group => group.children.filter(item => item.active).map(item => ({ workspace: group.id, conversation: item.id })))[0]; if (active && active.conversation !== navigationConversation)
@@ -331,7 +341,7 @@ export function createWorkspaceScene(env, shell, callbacks, brand) {
331
341
  loadImages();
332
342
  reader.afterRender();
333
343
  },
334
- updateMessageAvailability: messages.updateActionAvailability,
344
+ updateMessageAvailability(state) { messageAvailability = state; messages.updateActionAvailability(state); },
335
345
  pruneConversations(ids) { const keep = new Set(ids); for (const id of folds.keys())
336
346
  if (!keep.has(id))
337
347
  folds.delete(id); reader.prune([...ids]); },
@@ -342,11 +352,12 @@ export function createWorkspaceScene(env, shell, callbacks, brand) {
342
352
  updateAttachments(state) { if (!destroyed) {
343
353
  attachmentsDisabled = !!state.disabled;
344
354
  attachments.update(state);
355
+ syncAttachment();
345
356
  } },
346
357
  updateImageGuidance(message) { const element = env.part('image-guidance'); element.textContent = message; element.hidden = !message; },
347
358
  updatePermission: permission.update, updateApproval: approval.update, updateFailure: failure.update, updateRuntime: runtime.update, updateTiming: runtime.updateTiming, updateNotices: notices.update,
348
359
  updateAvailability(state) { if (destroyed)
349
- return; availability = state; const conversations = new Set(state.conversations), workspaces = new Set(state.workspaces); shell.updateActionAvailability(scope => !!state.global || (scope.kind === 'conversation' ? conversations.has(scope.id || '') : scope.kind === 'workspace' ? workspaces.has(scope.id || '') : scope.kind === 'active' ? !!state.active : false)); renderNavigation(); },
360
+ return; availability = state; const conversations = new Set(state.conversations), workspaces = new Set(state.workspaces); shell.updateActionAvailability(scope => !!state.busy || (scope.kind === 'global' ? !!state.global : scope.kind === 'conversation' ? conversations.has(scope.id || '') : scope.kind === 'workspace' ? workspaces.has(scope.id || '') : !!state.active)); syncAttachment(); renderNavigation(); },
350
361
  readCosts: () => ({ open: costs.open, runtimeOpen: runDetails.open }),
351
362
  updateCosts(state) { if (destroyed)
352
363
  return; costs.hidden = !state.visible; if (state.error)
@@ -396,7 +407,7 @@ export function createWorkspaceScene(env, shell, callbacks, brand) {
396
407
  },
397
408
  destroy() { if (destroyed)
398
409
  return; destroyed = true; abort.abort(); for (const session of [...sessions])
399
- session.close(); sessions.clear(); clearImages(); folds.clear(); expanded.clear(); menu.destroy(); navigation.destroy(); copy.destroy(); reader.destroy(); messages.destroy(); welcome.destroy(); pending.destroy(); attachments.destroy(); drop.destroy(); permission.destroy(); approval.destroy(); failure.destroy(); runtime.destroy(); ledger.destroy(); notices.destroy(); },
410
+ session.close(); sessions.clear(); clearImages(); folds.clear(); expanded.clear(); menu.destroy(); navigation.destroy(); copy.destroy(); reader.destroy(); messages.destroy(); welcome.destroy(); pending.destroy(); attachments.destroy(); attachmentAction.destroy(); drop.destroy(); permission.destroy(); approval.destroy(); failure.destroy(); runtime.destroy(); ledger.destroy(); notices.destroy(); },
400
411
  };
401
412
  }
402
413
  //# sourceMappingURL=workspace.js.map