mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-08-24 08:01:38 +00:00
7e38c01e64
Introduces the Sessions feature: a workspace where the AI chat and an editor (flow / script / app / raw-app) sit side-by-side, with each session having its own AIChatManager instance, history, and target item. Sessions are persisted across reloads and can be staged into forks for review. Key pieces: - sessions/ — SessionWrapper (the split-pane shell), SessionPicker (sidebar list), SessionForkBar, SessionWorkspaceBar, FlowEditorView / ScriptEditorView / AppEditorView / RawAppEditorView, ForkDiffDrawer, sessionRuntime (per-session AIChatManager + draft state), sessionState (in-memory + persisted index), sessionUnread, sessionScope, appDraftCodec / flowDraftCodec, forkEditUrl, /sessions route. - WorkspaceItemDrillPicker refactor — extracts WorkspaceItemRow + adds surfaceAI drafts, stale-while-revalidate. workspacePicker.ts drops explicit invalidate() in favor of always re-fetching in the background. - ForkDiffDrawer + WorkspaceItemDiffViewer — per-kind diff bodies reusable from the compare page. FlowGraphDiffViewer / FlowGraphV2 gain inlineDiff forwarding + onHeight callback for equal-height layout. - Global AI chat sessions plumbing — AIChatManager exports the class + adds disabledModes, beforeSend hook, scoped instance context. AIChat / AIChatDisplay accept session-only props (wideLayout, emptyHint, inputPreface, hideHeader, hideModeSelector, forceDisabled). Chat preserved across /flows/add → /flows/edit, /scripts/add → /scripts/edit. - Draft-first loaders — sessions open drafts when present, otherwise seed a draft from the last deployed value via globalDraftStore. RawAppEditor / AppEditor / AppEditorHeaderDeploy get newApp prop + fixes so draft-only apps can deploy. - Compare page (/forks/compare) — bigger overhaul to plug into the new drawer. - Sidebar — Sessions entry + unread badge + status dot in SidebarContent / MenuButton / SideBarNotification. - Misc fixes — chat group color palette constraint, deploy_workspace_item confirmation dropped, open_preview tool, picker drafts surfacing, fork archive/delete buttons on compare page. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
53 lines
2.0 KiB
TypeScript
53 lines
2.0 KiB
TypeScript
import type { NewScript } from '$lib/gen'
|
|
import type { AssetWithAltAccessType } from './assets/lib'
|
|
import type { ScriptBuilderWhitelabelCustomUi } from './custom_ui'
|
|
import type { DiffDrawerI } from './diff_drawer'
|
|
import type { ScriptBuilderFunctionExports } from './scriptBuilder'
|
|
import type { ScheduleTrigger } from './triggers'
|
|
import type { NewScriptWithDraftAndDraftTriggers, Trigger } from './triggers/utils'
|
|
import type { WorkspaceItem } from './workspacePicker'
|
|
|
|
export interface ScriptBuilderProps {
|
|
script: NewScript & {
|
|
draft_triggers?: Trigger[]
|
|
assets?: AssetWithAltAccessType[]
|
|
}
|
|
disableAi?: boolean
|
|
fullyLoaded?: boolean
|
|
initialPath?: string
|
|
template?:
|
|
| 'docker'
|
|
| 'bunnative'
|
|
| 'claudesandbox'
|
|
| 'wac_python'
|
|
| 'wac_typescript'
|
|
| 'ci_test_bun'
|
|
| 'ci_test_python'
|
|
| 'script'
|
|
initialArgs?: Record<string, any>
|
|
lockedLanguage?: boolean
|
|
showMeta?: boolean
|
|
neverShowMeta?: boolean
|
|
diffDrawer?: DiffDrawerI | undefined
|
|
savedScript?: NewScriptWithDraftAndDraftTriggers | undefined
|
|
searchParams?: URLSearchParams
|
|
disableHistoryChange?: boolean
|
|
replaceStateFn?: (url: string) => void
|
|
customUi?: ScriptBuilderWhitelabelCustomUi
|
|
savedPrimarySchedule?: ScheduleTrigger | undefined
|
|
functionExports?: ((exports: ScriptBuilderFunctionExports) => void) | undefined
|
|
children?: import('svelte').Snippet
|
|
onDeploy?: (e: { path: string; hash: string }) => void
|
|
onDeployError?: (e: { path: string; error: any }) => void
|
|
onSaveInitial?: (e: { path: string; hash: string }) => void
|
|
onHistoryRestore?: () => void
|
|
onSaveDraftOnlyAtNewPath?: (e: { path: string }) => void
|
|
onSaveDraft?: (e: { path: string; savedAtNewPath: boolean; script: NewScript }) => void
|
|
onSeeDetails?: (e: { path: string }) => void
|
|
onSaveDraftError?: (e: { path: string; error: any }) => void
|
|
onNavigate?: (item: WorkspaceItem) => void
|
|
// Forwarded to the underlying ScriptEditor. When true, the right-hand
|
|
// test/run pane opens collapsed. Used by the session preview.
|
|
initialTestPanelCollapsed?: boolean
|
|
}
|