Skip to content

Commit 76acc60

Browse files
authored
Support single-file prompts (#20)
* Support single-file prompts * `prompt-file` -> `prompts-file` * Add arg dump
1 parent bc41cb1 commit 76acc60

File tree

6 files changed

+60
-271
lines changed

6 files changed

+60
-271
lines changed

prompts/poem/local:/Users/colinmcneil/Dev/labs-ai-tools-for-devs/prompts/poem.md

Lines changed: 0 additions & 136 deletions
This file was deleted.

src/extension/ui/src/App.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,11 @@ export function App() {
176176
]);
177177

178178
runOutput.updateOutput({ method: 'message', params: { debug: 'Running prompts...' } })
179+
179180
const args = getRunArgs(selectedPrompt!, selectedProject!, "", client.host.platform)
180181

182+
runOutput.updateOutput({ method: 'message', params: { debug: `Running prompt image with args ${args}` } })
183+
181184
client.docker.cli.exec("run", args, {
182185
stream: {
183186
splitOutputLines: true,

src/extension/ui/src/args.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
export const getRunArgs = (promptRef: string, projectDir: string, username: string, platform: string, render = false) => {
22
const isLocal = promptRef.startsWith('local://');
3+
const isMarkdown = promptRef.toLowerCase().endsWith('.md');
34
let promptArgs: string[] = ["--prompts", promptRef];
45
let mountArgs: string[] = [];
5-
66
if (isLocal) {
77
const localPromptPath = promptRef.replace('local://', '');
88
const pathSeparator = platform === 'win32' ? '\\' : '/';
99
promptRef = localPromptPath.split(pathSeparator).pop() || 'unknown-local-prompt';
10-
promptArgs = ["--prompts-dir", `/app/${promptRef}`];
10+
promptArgs = [isMarkdown ? "--prompts-file" : "--prompts-dir", `/app/${promptRef}`];
1111
mountArgs = ["--mount", `type=bind,source=${localPromptPath},target=/app/${promptRef}`];
1212
}
1313

src/extension/ui/src/components/Projects.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,18 @@ const Projects: React.FC<ProjectsProps> = ({ projects, selectedProject, setProje
2121
<Stack direction='row' spacing={1} sx={{ mt: 1 }} alignItems={'center'} justifyContent={'space-between'}>
2222
<Button sx={{ padding: 1 }} onClick={() => {
2323
client.desktopUI.dialog.showOpenDialog({
24-
properties: ['openDirectory', 'multiSelections']
24+
title: 'Import projects',
25+
properties: ['openDirectory', 'multiSelections'],
2526
}).then((result) => {
2627
if (result.canceled) {
2728
return;
2829
}
2930
const newProjects = result.filePaths;
3031
setProjects([...projects, ...newProjects]);
32+
setSelectedProject(newProjects[0]);
3133
});
3234
}}>
33-
Import projects
35+
Import project(s)
3436
</Button>
3537
</Stack>
3638
<List>
@@ -57,7 +59,7 @@ const Projects: React.FC<ProjectsProps> = ({ projects, selectedProject, setProje
5759
</ListItem>
5860
))}
5961
</List>
60-
</Paper>
62+
</Paper >
6163
);
6264
};
6365

src/extension/ui/src/components/Prompts.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,18 @@ const Prompts: React.FC<PromptsProps> = ({ prompts, selectedPrompt, promptInput,
3737
)}
3838
<Button onClick={() => {
3939
client.desktopUI.dialog.showOpenDialog({
40-
properties: ['openDirectory', 'multiSelections']
40+
title: 'Select prompt',
41+
properties: ['openDirectory', 'openFile', 'multiSelections'],
42+
filters: [{ name: 'Markdown', extensions: ['.md'] }],
4143
}).then((result) => {
4244
if (result.canceled) {
4345
return;
4446
}
4547
track('DockerPromptsAddLocalPrompt');
4648
setPrompts([...prompts, ...result.filePaths.map(p => `local://${p}`)]);
49+
setSelectedPrompt(`local://${result.filePaths[0]}`);
4750
});
48-
}}>Add local prompt</Button>
51+
}}>Add local prompt(s)</Button>
4952
</Stack>
5053
<List>
5154
{prompts.map((prompt) => (

0 commit comments

Comments
 (0)