- Update import paths from `freeflowuniverse.herolib` to `incubaid.herolib` - Ensure `ws.parent.save()` is only called when `ws.parent` is present - Remove redundant symlink cleanup for `freeflowuniverse.herolib`
146 lines
5.8 KiB
GLSL
Executable File
146 lines
5.8 KiB
GLSL
Executable File
#!/usr/bin/env -S v -n -w -gc none -cg -cc tcc -d use_openssl -enable-globals run
|
|
|
|
import incubaid.herolib.develop.heroprompt
|
|
import os
|
|
|
|
println('=== HeroPrompt: AI Prompt Generation Example ===\n')
|
|
|
|
// ============================================================================
|
|
// STEP 1: Cleanup and Setup
|
|
// ============================================================================
|
|
// Always start fresh - delete any existing instance
|
|
println('Step 1: Cleaning up any existing instance...')
|
|
heroprompt.delete(name: 'prompt_demo') or {}
|
|
println('✓ Cleanup complete\n')
|
|
|
|
// ============================================================================
|
|
// STEP 2: Create HeroPrompt Instance
|
|
// ============================================================================
|
|
// Get or create a new HeroPrompt instance
|
|
// The 'create: true' parameter will create it if it doesn't exist
|
|
println('Step 2: Creating HeroPrompt instance...')
|
|
mut hp := heroprompt.get(name: 'prompt_demo', create: true)!
|
|
println('✓ Created instance: ${hp.name}\n')
|
|
|
|
// ============================================================================
|
|
// STEP 3: Create Workspace
|
|
// ============================================================================
|
|
// A workspace is a collection of directories and files
|
|
// The first workspace is automatically set as active
|
|
println('Step 3: Creating workspace...')
|
|
mut workspace := hp.new_workspace(
|
|
name: 'my_project'
|
|
description: 'Example project workspace'
|
|
)!
|
|
println('✓ Created workspace: ${workspace.name}')
|
|
println(' Active: ${workspace.is_active}')
|
|
println(' Description: ${workspace.description}\n')
|
|
|
|
// ============================================================================
|
|
// STEP 4: Add Directories to Workspace
|
|
// ============================================================================
|
|
// Add directories containing code you want to analyze
|
|
// The 'scan: true' parameter automatically scans all files and subdirectories
|
|
println('Step 4: Adding directories to workspace...')
|
|
|
|
homepath := os.home_dir()
|
|
|
|
// Add the examples directory
|
|
mut examples_dir := workspace.add_directory(
|
|
path: '${homepath}/code/github/incubaid/herolib/examples/develop/heroprompt'
|
|
name: 'examples'
|
|
scan: true
|
|
)!
|
|
println('✓ Added directory: examples')
|
|
|
|
// Add the library directory
|
|
mut lib_dir := workspace.add_directory(
|
|
path: '${homepath}/code/github/incubaid/herolib/lib/develop/heroprompt'
|
|
name: 'library'
|
|
scan: true
|
|
)!
|
|
println('✓ Added directory: library\n')
|
|
|
|
// ============================================================================
|
|
// STEP 5: Select Specific Files
|
|
// ============================================================================
|
|
// You can select specific files from directories for prompt generation
|
|
// This is useful when you only want to analyze certain files
|
|
println('Step 5: Selecting specific files...')
|
|
|
|
// Select individual files from the examples directory
|
|
examples_dir.select_file(
|
|
path: '${homepath}/code/github/incubaid/herolib/examples/develop/heroprompt/README.md'
|
|
)!
|
|
println('✓ Selected: README.md')
|
|
|
|
examples_dir.select_file(
|
|
path: '${homepath}/code/github/incubaid/herolib/examples/develop/heroprompt/prompt_example.vsh'
|
|
)!
|
|
println('✓ Selected: prompt_example.vsh')
|
|
|
|
// Select all files from the library directory
|
|
lib_dir.select_all()!
|
|
println('✓ Selected all files in library directory\n')
|
|
|
|
// ============================================================================
|
|
// STEP 6: Generate AI Prompt
|
|
// ============================================================================
|
|
// Generate a complete prompt with file map, file contents, and instructions
|
|
// The prompt automatically includes only the selected files
|
|
println('Step 6: Generating AI prompt...')
|
|
|
|
prompt := workspace.generate_prompt(
|
|
instruction: 'Review the selected files and provide suggestions for improvements.'
|
|
)!
|
|
|
|
println('✓ Generated prompt')
|
|
println(' Total length: ${prompt.len} characters\n')
|
|
|
|
// ============================================================================
|
|
// STEP 7: Display Prompt Preview
|
|
// ============================================================================
|
|
println('Step 7: Prompt preview (first 800 characters)...')
|
|
preview_len := if prompt.len > 800 { 800 } else { prompt.len }
|
|
println(prompt[..preview_len])
|
|
|
|
// ============================================================================
|
|
// STEP 8: Alternative - Get Active Workspace
|
|
// ============================================================================
|
|
// You can retrieve the active workspace without knowing its name
|
|
println('Step 8: Working with active workspace...')
|
|
|
|
mut active_ws := hp.get_active_workspace()!
|
|
println('✓ Retrieved active workspace: ${active_ws.name}')
|
|
println(' Directories: ${active_ws.directories.len}')
|
|
println(' Files: ${active_ws.files.len}\n')
|
|
|
|
// ============================================================================
|
|
// STEP 9: Set Different Active Workspace
|
|
// ============================================================================
|
|
// You can create multiple workspaces and switch between them
|
|
println('Step 9: Creating and switching workspaces...')
|
|
|
|
// Create a second workspace
|
|
mut workspace2 := hp.new_workspace(
|
|
name: 'documentation'
|
|
description: 'Documentation workspace'
|
|
is_active: false
|
|
)!
|
|
println('✓ Created workspace: ${workspace2.name}')
|
|
|
|
// Switch active workspace
|
|
hp.set_active_workspace('documentation')!
|
|
println('✓ Set active workspace to: documentation')
|
|
|
|
// Verify the switch
|
|
active_ws = hp.get_active_workspace()!
|
|
println('✓ Current active workspace: ${active_ws.name}\n')
|
|
|
|
// ============================================================================
|
|
// STEP 10: Cleanup
|
|
// ============================================================================
|
|
println('Step 10: Cleanup...')
|
|
heroprompt.delete(name: 'prompt_demo')!
|
|
println('✓ Deleted instance\n')
|