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/API.md +261 -261
- package/APP-API.md +123 -119
- package/APP.md +6 -2
- package/dist/app/settings.d.ts.map +1 -1
- package/dist/app/settings.js +12 -8
- package/dist/app/settings.js.map +1 -1
- package/dist/app/workspace.d.ts +4 -0
- package/dist/app/workspace.d.ts.map +1 -1
- package/dist/app/workspace.js +27 -16
- package/dist/app/workspace.js.map +1 -1
- package/package.json +1 -1
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.
|
|
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.
|
|
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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"}
|
package/dist/app/settings.js
CHANGED
|
@@ -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
|
-
|
|
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
|
},
|
package/dist/app/settings.js.map
CHANGED
|
@@ -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"]}
|
package/dist/app/workspace.d.ts
CHANGED
|
@@ -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":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/app/workspace.ts"],"names":[],"mappings":"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"}
|
package/dist/app/workspace.js
CHANGED
|
@@ -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.
|
|
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 => {
|
|
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.
|
|
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
|
|
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.
|
|
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 = () =>
|
|
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 (
|
|
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 (
|
|
183
|
-
|
|
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 (!
|
|
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
|
|
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.
|
|
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
|