@plures/runebook 0.4.0
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/ANALYSIS_LADDER.md +231 -0
- package/CHANGELOG.md +124 -0
- package/INTEGRATIONS.md +242 -0
- package/LICENSE +21 -0
- package/MEMORY.md +253 -0
- package/NIXOS.md +357 -0
- package/QUICKSTART.md +157 -0
- package/README.md +295 -0
- package/RELEASE.md +190 -0
- package/ValidationChecklist.md +598 -0
- package/docs/demo.md +338 -0
- package/docs/llm-integration.md +300 -0
- package/docs/parallel-execution-plan.md +160 -0
- package/flake.nix +228 -0
- package/integrations/README.md +242 -0
- package/integrations/demo-steps.sh +64 -0
- package/integrations/nvim-runebook.lua +140 -0
- package/integrations/tmux-status.sh +51 -0
- package/integrations/vim-runebook.vim +77 -0
- package/integrations/wezterm-status-simple.lua +48 -0
- package/integrations/wezterm-status.lua +76 -0
- package/nixos-module.nix +156 -0
- package/package.json +76 -0
- package/packages/design-dojo/index.js +4 -0
- package/packages/design-dojo/package.json +20 -0
- package/packages/design-dojo/tokens.css +69 -0
- package/playwright.config.ts +16 -0
- package/scripts/check-versions.cjs +62 -0
- package/scripts/demo.sh +220 -0
- package/shell.nix +31 -0
- package/src/app.html +13 -0
- package/src/cli/index.ts +1050 -0
- package/src/lib/agent/analysis-pipeline.ts +347 -0
- package/src/lib/agent/analysis-service.ts +171 -0
- package/src/lib/agent/analysis.ts +159 -0
- package/src/lib/agent/analyzers/heuristic.ts +289 -0
- package/src/lib/agent/analyzers/index.ts +7 -0
- package/src/lib/agent/analyzers/llm.ts +204 -0
- package/src/lib/agent/analyzers/local-search.ts +215 -0
- package/src/lib/agent/capture.ts +123 -0
- package/src/lib/agent/index.ts +244 -0
- package/src/lib/agent/integration.ts +81 -0
- package/src/lib/agent/llm/providers/base.ts +99 -0
- package/src/lib/agent/llm/providers/index.ts +60 -0
- package/src/lib/agent/llm/providers/mock.ts +67 -0
- package/src/lib/agent/llm/providers/ollama.ts +151 -0
- package/src/lib/agent/llm/providers/openai.ts +153 -0
- package/src/lib/agent/llm/sanitizer.ts +170 -0
- package/src/lib/agent/llm/types.ts +118 -0
- package/src/lib/agent/memory.ts +363 -0
- package/src/lib/agent/node-status.ts +56 -0
- package/src/lib/agent/node-suggestions.ts +64 -0
- package/src/lib/agent/status.ts +80 -0
- package/src/lib/agent/suggestions.ts +169 -0
- package/src/lib/components/Canvas.svelte +124 -0
- package/src/lib/components/ConnectionLine.svelte +46 -0
- package/src/lib/components/DisplayNode.svelte +167 -0
- package/src/lib/components/InputNode.svelte +158 -0
- package/src/lib/components/TerminalNode.svelte +237 -0
- package/src/lib/components/Toolbar.svelte +359 -0
- package/src/lib/components/TransformNode.svelte +327 -0
- package/src/lib/core/index.ts +31 -0
- package/src/lib/core/observer.ts +278 -0
- package/src/lib/core/redaction.ts +158 -0
- package/src/lib/core/shell-adapters/base.ts +325 -0
- package/src/lib/core/shell-adapters/bash.ts +110 -0
- package/src/lib/core/shell-adapters/index.ts +62 -0
- package/src/lib/core/shell-adapters/zsh.ts +105 -0
- package/src/lib/core/storage.ts +360 -0
- package/src/lib/core/types.ts +176 -0
- package/src/lib/design-dojo/Box.svelte +47 -0
- package/src/lib/design-dojo/Button.svelte +75 -0
- package/src/lib/design-dojo/Input.svelte +65 -0
- package/src/lib/design-dojo/List.svelte +38 -0
- package/src/lib/design-dojo/Select.svelte +48 -0
- package/src/lib/design-dojo/SplitPane.svelte +43 -0
- package/src/lib/design-dojo/StatusBar.svelte +61 -0
- package/src/lib/design-dojo/Table.svelte +47 -0
- package/src/lib/design-dojo/Text.svelte +36 -0
- package/src/lib/design-dojo/Toggle.svelte +48 -0
- package/src/lib/design-dojo/index.ts +10 -0
- package/src/lib/stores/canvas-praxis.ts +268 -0
- package/src/lib/stores/canvas.ts +58 -0
- package/src/lib/types/agent.ts +78 -0
- package/src/lib/types/canvas.ts +71 -0
- package/src/lib/utils/storage.ts +326 -0
- package/src/lib/utils/yaml-loader.ts +52 -0
- package/src/routes/+layout.svelte +5 -0
- package/src/routes/+layout.ts +5 -0
- package/src/routes/+page.svelte +32 -0
- package/src-tauri/Cargo.lock +5735 -0
- package/src-tauri/Cargo.toml +38 -0
- package/src-tauri/build.rs +3 -0
- package/src-tauri/capabilities/default.json +10 -0
- package/src-tauri/icons/128x128.png +0 -0
- package/src-tauri/icons/128x128@2x.png +0 -0
- package/src-tauri/icons/32x32.png +0 -0
- package/src-tauri/icons/Square107x107Logo.png +0 -0
- package/src-tauri/icons/Square142x142Logo.png +0 -0
- package/src-tauri/icons/Square150x150Logo.png +0 -0
- package/src-tauri/icons/Square284x284Logo.png +0 -0
- package/src-tauri/icons/Square30x30Logo.png +0 -0
- package/src-tauri/icons/Square310x310Logo.png +0 -0
- package/src-tauri/icons/Square44x44Logo.png +0 -0
- package/src-tauri/icons/Square71x71Logo.png +0 -0
- package/src-tauri/icons/Square89x89Logo.png +0 -0
- package/src-tauri/icons/StoreLogo.png +0 -0
- package/src-tauri/icons/icon.icns +0 -0
- package/src-tauri/icons/icon.ico +0 -0
- package/src-tauri/icons/icon.png +0 -0
- package/src-tauri/src/agents/agent1.rs +66 -0
- package/src-tauri/src/agents/agent2.rs +80 -0
- package/src-tauri/src/agents/agent3.rs +73 -0
- package/src-tauri/src/agents/agent4.rs +66 -0
- package/src-tauri/src/agents/agent5.rs +68 -0
- package/src-tauri/src/agents/agent6.rs +75 -0
- package/src-tauri/src/agents/base.rs +52 -0
- package/src-tauri/src/agents/mod.rs +17 -0
- package/src-tauri/src/core/coordination.rs +117 -0
- package/src-tauri/src/core/mod.rs +12 -0
- package/src-tauri/src/core/ownership.rs +61 -0
- package/src-tauri/src/core/types.rs +132 -0
- package/src-tauri/src/execution/mod.rs +5 -0
- package/src-tauri/src/execution/runner.rs +143 -0
- package/src-tauri/src/lib.rs +161 -0
- package/src-tauri/src/main.rs +6 -0
- package/src-tauri/src/memory/api.rs +422 -0
- package/src-tauri/src/memory/client.rs +156 -0
- package/src-tauri/src/memory/encryption.rs +79 -0
- package/src-tauri/src/memory/migration.rs +110 -0
- package/src-tauri/src/memory/mod.rs +28 -0
- package/src-tauri/src/memory/schema.rs +275 -0
- package/src-tauri/src/memory/tests.rs +192 -0
- package/src-tauri/src/orchestrator/coordinator.rs +232 -0
- package/src-tauri/src/orchestrator/mod.rs +13 -0
- package/src-tauri/src/orchestrator/planner.rs +304 -0
- package/src-tauri/tauri.conf.json +35 -0
- package/static/examples/date-time-example.yaml +147 -0
- package/static/examples/hello-world.yaml +74 -0
- package/static/examples/transform-example.yaml +157 -0
- package/static/favicon.png +0 -0
- package/static/svelte.svg +1 -0
- package/static/tauri.svg +6 -0
- package/static/vite.svg +1 -0
- package/svelte.config.js +18 -0
- package/tsconfig.json +19 -0
- package/vite.config.js +45 -0
- package/vitest.config.ts +21 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @plures/design-dojo — design tokens
|
|
3
|
+
*
|
|
4
|
+
* Defines the global CSS custom properties (design tokens) used across
|
|
5
|
+
* all Plures applications and components.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
:root {
|
|
9
|
+
/* ── Surface ───────────────────────────────────────────────── */
|
|
10
|
+
--surface-1: #1a1a2e;
|
|
11
|
+
--surface-2: #16213e;
|
|
12
|
+
--surface-3: #0f3460;
|
|
13
|
+
--surface-4: #533483;
|
|
14
|
+
|
|
15
|
+
/* ── Text ──────────────────────────────────────────────────── */
|
|
16
|
+
--text-1: #e0e0e0;
|
|
17
|
+
--text-2: #a0a0b0;
|
|
18
|
+
--text-3: #606070;
|
|
19
|
+
|
|
20
|
+
/* ── Brand / Accent ────────────────────────────────────────── */
|
|
21
|
+
--brand: #00d4ff;
|
|
22
|
+
--brand-2: #7b2fff;
|
|
23
|
+
--accent: #ff6b6b;
|
|
24
|
+
|
|
25
|
+
/* ── Status ────────────────────────────────────────────────── */
|
|
26
|
+
--success: #4caf50;
|
|
27
|
+
--warning: #ff9800;
|
|
28
|
+
--error: #f44336;
|
|
29
|
+
--info: #2196f3;
|
|
30
|
+
|
|
31
|
+
/* ── Border ────────────────────────────────────────────────── */
|
|
32
|
+
--border-color: rgba(255, 255, 255, 0.1);
|
|
33
|
+
--border-color-strong: rgba(255, 255, 255, 0.25);
|
|
34
|
+
|
|
35
|
+
/* ── Spacing ───────────────────────────────────────────────── */
|
|
36
|
+
--space-1: 0.25rem;
|
|
37
|
+
--space-2: 0.5rem;
|
|
38
|
+
--space-3: 1rem;
|
|
39
|
+
--space-4: 1.5rem;
|
|
40
|
+
--space-5: 2rem;
|
|
41
|
+
--space-6: 3rem;
|
|
42
|
+
|
|
43
|
+
/* ── Radius ────────────────────────────────────────────────── */
|
|
44
|
+
--radius-1: 2px;
|
|
45
|
+
--radius-2: 4px;
|
|
46
|
+
--radius-3: 8px;
|
|
47
|
+
--radius-4: 16px;
|
|
48
|
+
--radius-round: 9999px;
|
|
49
|
+
|
|
50
|
+
/* ── Typography ─────────────────────────────────────────────── */
|
|
51
|
+
--font-sans: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
52
|
+
--font-mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace;
|
|
53
|
+
--font-size-0: 0.75rem;
|
|
54
|
+
--font-size-1: 0.875rem;
|
|
55
|
+
--font-size-2: 1rem;
|
|
56
|
+
--font-size-3: 1.25rem;
|
|
57
|
+
--font-size-4: 1.5rem;
|
|
58
|
+
--font-size-5: 2rem;
|
|
59
|
+
|
|
60
|
+
/* ── Shadow ────────────────────────────────────────────────── */
|
|
61
|
+
--shadow-1: 0 1px 2px rgba(0, 0, 0, 0.4);
|
|
62
|
+
--shadow-2: 0 4px 8px rgba(0, 0, 0, 0.5);
|
|
63
|
+
--shadow-3: 0 8px 24px rgba(0, 0, 0, 0.6);
|
|
64
|
+
|
|
65
|
+
/* ── Transition ─────────────────────────────────────────────── */
|
|
66
|
+
--transition-fast: 100ms ease;
|
|
67
|
+
--transition-base: 200ms ease;
|
|
68
|
+
--transition-slow: 400ms ease;
|
|
69
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { defineConfig } from '@playwright/test';
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
testDir: './e2e',
|
|
5
|
+
retries: process.env.CI ? 1 : 0,
|
|
6
|
+
use: {
|
|
7
|
+
trace: 'retain-on-failure',
|
|
8
|
+
screenshot: 'only-on-failure',
|
|
9
|
+
},
|
|
10
|
+
webServer: {
|
|
11
|
+
command: 'npm run build && npm run preview -- --host 127.0.0.1 --port 4173',
|
|
12
|
+
port: 4173,
|
|
13
|
+
reuseExistingServer: !process.env.CI,
|
|
14
|
+
timeout: 180_000,
|
|
15
|
+
},
|
|
16
|
+
});
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Script to verify that all version numbers are synchronized across the project
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const fs = require('fs');
|
|
7
|
+
const path = require('path');
|
|
8
|
+
|
|
9
|
+
function getPackageJsonVersion() {
|
|
10
|
+
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
|
|
11
|
+
return pkg.version;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function getCargoTomlVersion() {
|
|
15
|
+
const cargo = fs.readFileSync('src-tauri/Cargo.toml', 'utf8');
|
|
16
|
+
const match = cargo.match(/^version = "(.+)"$/m);
|
|
17
|
+
return match ? match[1] : null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function getTauriConfVersion() {
|
|
21
|
+
const config = JSON.parse(fs.readFileSync('src-tauri/tauri.conf.json', 'utf8'));
|
|
22
|
+
return config.version;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
function main() {
|
|
26
|
+
const packageVersion = getPackageJsonVersion();
|
|
27
|
+
const cargoVersion = getCargoTomlVersion();
|
|
28
|
+
const tauriVersion = getTauriConfVersion();
|
|
29
|
+
|
|
30
|
+
console.log('Version Check:');
|
|
31
|
+
console.log('--------------');
|
|
32
|
+
console.log(`package.json: ${packageVersion}`);
|
|
33
|
+
console.log(`src-tauri/Cargo.toml: ${cargoVersion}`);
|
|
34
|
+
console.log(`src-tauri/tauri.conf.json: ${tauriVersion}`);
|
|
35
|
+
console.log('');
|
|
36
|
+
|
|
37
|
+
const allMatch = packageVersion === cargoVersion && packageVersion === tauriVersion;
|
|
38
|
+
|
|
39
|
+
if (allMatch) {
|
|
40
|
+
console.log('✅ All versions are synchronized!');
|
|
41
|
+
process.exit(0);
|
|
42
|
+
} else {
|
|
43
|
+
console.error('❌ Version mismatch detected!');
|
|
44
|
+
console.error('');
|
|
45
|
+
console.error('Run the following commands to fix:');
|
|
46
|
+
console.error('1. Update package.json to the correct version');
|
|
47
|
+
console.error('2. Run: npm install');
|
|
48
|
+
console.error('3. Run the version-bump workflow from GitHub Actions');
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (require.main === module) {
|
|
54
|
+
try {
|
|
55
|
+
main();
|
|
56
|
+
} catch (error) {
|
|
57
|
+
console.error('Error:', error.message);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
module.exports = { getPackageJsonVersion, getCargoTomlVersion, getTauriConfVersion };
|
package/scripts/demo.sh
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# RuneBook Ambient Agent Mode - "Zero to Hero" Demo Script
|
|
3
|
+
# This script demonstrates the full workflow from enabling the agent to viewing analysis results
|
|
4
|
+
|
|
5
|
+
set -e # Exit on error
|
|
6
|
+
|
|
7
|
+
# Colors for output
|
|
8
|
+
RED='\033[0;31m'
|
|
9
|
+
GREEN='\033[0;32m'
|
|
10
|
+
YELLOW='\033[1;33m'
|
|
11
|
+
BLUE='\033[0;34m'
|
|
12
|
+
NC='\033[0m' # No Color
|
|
13
|
+
|
|
14
|
+
# Helper functions
|
|
15
|
+
print_step() {
|
|
16
|
+
echo -e "\n${BLUE}=== $1 ===${NC}\n"
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
print_success() {
|
|
20
|
+
echo -e "${GREEN}✓ $1${NC}"
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
print_error() {
|
|
24
|
+
echo -e "${RED}✗ $1${NC}"
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
print_info() {
|
|
28
|
+
echo -e "${YELLOW}ℹ $1${NC}"
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
wait_for_user() {
|
|
32
|
+
echo -e "\n${YELLOW}Press Enter to continue...${NC}"
|
|
33
|
+
read -r
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
# Check prerequisites
|
|
37
|
+
check_prerequisites() {
|
|
38
|
+
print_step "Checking Prerequisites"
|
|
39
|
+
|
|
40
|
+
if ! command -v node &> /dev/null; then
|
|
41
|
+
print_error "Node.js is not installed"
|
|
42
|
+
exit 1
|
|
43
|
+
fi
|
|
44
|
+
print_success "Node.js found"
|
|
45
|
+
|
|
46
|
+
if ! command -v npm &> /dev/null; then
|
|
47
|
+
print_error "npm is not installed"
|
|
48
|
+
exit 1
|
|
49
|
+
fi
|
|
50
|
+
print_success "npm found"
|
|
51
|
+
|
|
52
|
+
if ! command -v nix &> /dev/null; then
|
|
53
|
+
print_warning "Nix is not installed - some demo commands may not work"
|
|
54
|
+
else
|
|
55
|
+
print_success "Nix found"
|
|
56
|
+
fi
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
# Step 1: Enable Agent
|
|
60
|
+
enable_agent() {
|
|
61
|
+
print_step "Step 1: Enabling Ambient Agent Mode"
|
|
62
|
+
|
|
63
|
+
print_info "Enabling agent..."
|
|
64
|
+
npm run agent enable || {
|
|
65
|
+
print_error "Failed to enable agent"
|
|
66
|
+
exit 1
|
|
67
|
+
}
|
|
68
|
+
print_success "Agent enabled"
|
|
69
|
+
|
|
70
|
+
print_info "Checking agent status..."
|
|
71
|
+
npm run agent status
|
|
72
|
+
wait_for_user
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
# Step 2: Run failing commands
|
|
76
|
+
run_failing_commands() {
|
|
77
|
+
print_step "Step 2: Running Failing Nix Commands"
|
|
78
|
+
|
|
79
|
+
print_info "These commands will fail intentionally to demonstrate error capture and analysis"
|
|
80
|
+
|
|
81
|
+
# Command 1: Missing attribute
|
|
82
|
+
print_info "Running: nix build .#cursor (will fail - missing attribute)"
|
|
83
|
+
nix build .#cursor 2>&1 || true
|
|
84
|
+
sleep 1
|
|
85
|
+
|
|
86
|
+
# Command 2: Flake-parts template path
|
|
87
|
+
print_info "Running: nix flake init -t flake-parts#devShells (may fail - template path)"
|
|
88
|
+
nix flake init -t flake-parts#devShells 2>&1 || true
|
|
89
|
+
sleep 1
|
|
90
|
+
|
|
91
|
+
# Command 3: Build environment (may fail)
|
|
92
|
+
print_info "Running: nix build (may fail - build environment)"
|
|
93
|
+
nix build 2>&1 || true
|
|
94
|
+
sleep 1
|
|
95
|
+
|
|
96
|
+
print_success "Commands executed (failures are expected)"
|
|
97
|
+
wait_for_user
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
# Step 3: View captured events
|
|
101
|
+
view_events() {
|
|
102
|
+
print_step "Step 3: Viewing Captured Events"
|
|
103
|
+
|
|
104
|
+
print_info "Showing last 10 events..."
|
|
105
|
+
npm run agent events 10
|
|
106
|
+
wait_for_user
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
# Step 4: Analyze last failure
|
|
110
|
+
analyze_failure() {
|
|
111
|
+
print_step "Step 4: Analyzing Last Failure"
|
|
112
|
+
|
|
113
|
+
print_info "Analyzing the most recent command failure..."
|
|
114
|
+
npm run analyze last || {
|
|
115
|
+
print_error "Analysis failed or no failures found"
|
|
116
|
+
print_info "This is okay if no failures were captured"
|
|
117
|
+
}
|
|
118
|
+
wait_for_user
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
# Step 5: View suggestions
|
|
122
|
+
view_suggestions() {
|
|
123
|
+
print_step "Step 5: Viewing Suggestions"
|
|
124
|
+
|
|
125
|
+
print_info "Showing all current suggestions..."
|
|
126
|
+
npm run agent suggestions
|
|
127
|
+
wait_for_user
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
# Step 6: Inspect memory (if PluresDB available)
|
|
131
|
+
inspect_memory() {
|
|
132
|
+
print_step "Step 6: Inspecting Memory Storage"
|
|
133
|
+
|
|
134
|
+
print_info "Attempting to inspect cognitive memory..."
|
|
135
|
+
npm run memory inspect || {
|
|
136
|
+
print_info "PluresDB not available - this is okay, using in-memory storage"
|
|
137
|
+
print_info "To use PluresDB, start it with: pluresdb --port 34567"
|
|
138
|
+
}
|
|
139
|
+
wait_for_user
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
# Step 7: View statistics
|
|
143
|
+
view_statistics() {
|
|
144
|
+
print_step "Step 7: Viewing Agent Statistics"
|
|
145
|
+
|
|
146
|
+
print_info "Showing agent status and statistics..."
|
|
147
|
+
npm run agent status
|
|
148
|
+
wait_for_user
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
# Step 8: Observer mode (optional)
|
|
152
|
+
observer_demo() {
|
|
153
|
+
print_step "Step 8: Observer Mode (Optional)"
|
|
154
|
+
|
|
155
|
+
print_info "Enabling observer for detailed event capture..."
|
|
156
|
+
npm run observer enable || {
|
|
157
|
+
print_info "Observer enable failed - continuing anyway"
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
print_info "Showing observer status..."
|
|
161
|
+
npm run observer status || {
|
|
162
|
+
print_info "Observer status failed - continuing anyway"
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
print_info "To tail events in real-time, run: npm run observer events tail"
|
|
166
|
+
wait_for_user
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
# Step 9: Cleanup (optional)
|
|
170
|
+
cleanup_demo() {
|
|
171
|
+
print_step "Step 9: Cleanup (Optional)"
|
|
172
|
+
|
|
173
|
+
print_info "You can clear old events with: npm run agent clear [days]"
|
|
174
|
+
print_info "Example: npm run agent clear 7 (clears events older than 7 days)"
|
|
175
|
+
|
|
176
|
+
read -p "Clear events now? (y/N): " -n 1 -r
|
|
177
|
+
echo
|
|
178
|
+
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
179
|
+
print_info "Clearing events older than 30 days..."
|
|
180
|
+
npm run agent clear 30 || {
|
|
181
|
+
print_error "Failed to clear events"
|
|
182
|
+
}
|
|
183
|
+
else
|
|
184
|
+
print_info "Skipping cleanup"
|
|
185
|
+
fi
|
|
186
|
+
wait_for_user
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
# Main demo flow
|
|
190
|
+
main() {
|
|
191
|
+
echo -e "${GREEN}"
|
|
192
|
+
echo "╔════════════════════════════════════════════════════════════╗"
|
|
193
|
+
echo "║ RuneBook Ambient Agent Mode - Zero to Hero Demo ║"
|
|
194
|
+
echo "╚════════════════════════════════════════════════════════════╝"
|
|
195
|
+
echo -e "${NC}"
|
|
196
|
+
|
|
197
|
+
check_prerequisites
|
|
198
|
+
enable_agent
|
|
199
|
+
run_failing_commands
|
|
200
|
+
view_events
|
|
201
|
+
analyze_failure
|
|
202
|
+
view_suggestions
|
|
203
|
+
inspect_memory
|
|
204
|
+
view_statistics
|
|
205
|
+
observer_demo
|
|
206
|
+
cleanup_demo
|
|
207
|
+
|
|
208
|
+
print_step "Demo Complete!"
|
|
209
|
+
echo -e "${GREEN}Thank you for trying RuneBook Ambient Agent Mode!${NC}"
|
|
210
|
+
echo ""
|
|
211
|
+
echo "Next steps:"
|
|
212
|
+
echo " - Read docs/demo.md for detailed walkthrough"
|
|
213
|
+
echo " - Check README.md for full feature list"
|
|
214
|
+
echo " - Explore ANALYSIS_LADDER.md for analysis details"
|
|
215
|
+
echo ""
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
# Run main function
|
|
219
|
+
main
|
|
220
|
+
|
package/shell.nix
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Development shell for RuneBook
|
|
2
|
+
# Usage: nix-shell
|
|
3
|
+
|
|
4
|
+
{ pkgs ? import <nixpkgs> {} }:
|
|
5
|
+
|
|
6
|
+
pkgs.mkShell {
|
|
7
|
+
buildInputs = with pkgs; [
|
|
8
|
+
nodejs_20
|
|
9
|
+
rustc
|
|
10
|
+
cargo
|
|
11
|
+
pkg-config
|
|
12
|
+
openssl
|
|
13
|
+
webkitgtk_4_1
|
|
14
|
+
librsvg
|
|
15
|
+
tauri-cli
|
|
16
|
+
];
|
|
17
|
+
|
|
18
|
+
shellHook = ''
|
|
19
|
+
echo "RuneBook Development Environment"
|
|
20
|
+
echo "Node.js: $(node --version)"
|
|
21
|
+
echo "Rust: $(rustc --version)"
|
|
22
|
+
echo ""
|
|
23
|
+
echo "Available commands:"
|
|
24
|
+
echo " npm install - Install dependencies"
|
|
25
|
+
echo " npm run dev - Start development server"
|
|
26
|
+
echo " npm run build - Build the application"
|
|
27
|
+
echo " npm test - Run tests"
|
|
28
|
+
echo " npm run agent - Run agent CLI"
|
|
29
|
+
'';
|
|
30
|
+
}
|
|
31
|
+
|
package/src/app.html
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<link rel="icon" href="%sveltekit.assets%/favicon.png" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
7
|
+
<title>Tauri + SvelteKit + Typescript App</title>
|
|
8
|
+
%sveltekit.head%
|
|
9
|
+
</head>
|
|
10
|
+
<body data-sveltekit-preload-data="hover">
|
|
11
|
+
<div style="display: contents">%sveltekit.body%</div>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|