zuzu 0.2.1-java → 0.2.3-java
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.
- checksums.yaml +4 -4
- data/README.md +73 -32
- data/bin/setup +3 -6
- data/bin/zuzu +116 -11
- data/lib/zuzu/agent.rb +18 -11
- data/lib/zuzu/config.rb +27 -4
- data/lib/zuzu/version.rb +1 -1
- data/templates/.claude/skills/add-tool/SKILL.md +162 -0
- data/templates/.claude/skills/customize/SKILL.md +192 -0
- data/templates/.claude/skills/debug/SKILL.md +197 -0
- data/templates/.claude/skills/setup/SKILL.md +102 -0
- data/templates/AGENTS.md +589 -0
- data/templates/CLAUDE.md +82 -0
- data/templates/app.rb +49 -11
- data/warble.rb +19 -0
- metadata +33 -15
data/templates/app.rb
CHANGED
|
@@ -2,24 +2,62 @@
|
|
|
2
2
|
|
|
3
3
|
require 'zuzu'
|
|
4
4
|
|
|
5
|
-
# ── Configure
|
|
6
|
-
# Paths are automatically expanded to absolute, so relative paths work fine.
|
|
5
|
+
# ── 1. Configure ─────────────────────────────────────────────────────────────
|
|
7
6
|
Zuzu.configure do |c|
|
|
8
|
-
c.app_name
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
c.app_name = 'My Assistant' # Window title
|
|
8
|
+
c.window_width = 860
|
|
9
|
+
c.window_height = 620
|
|
10
|
+
c.port = 8080 # llamafile API port
|
|
11
|
+
|
|
12
|
+
# Works both when run directly and when packaged as a .jar
|
|
11
13
|
base = __dir__.to_s.start_with?('uri:classloader:') ? Dir.pwd : __dir__
|
|
12
14
|
c.llamafile_path = File.join(base, 'models', 'your-model.llamafile')
|
|
13
15
|
c.db_path = File.join(base, '.zuzu', 'zuzu.db')
|
|
14
|
-
|
|
15
|
-
#
|
|
16
|
+
|
|
17
|
+
# ── Extra system prompt instructions (optional) ─────────────────────────
|
|
18
|
+
# Append domain-specific behaviour, persona, or constraints to the agent's
|
|
19
|
+
# system prompt. The built-in tool list is always included automatically.
|
|
20
|
+
c.system_prompt_extras = <<~EXTRA
|
|
21
|
+
You are a personal assistant for a software developer named Alex.
|
|
22
|
+
Always prefer concise, technical answers.
|
|
23
|
+
When writing code, use Ruby unless the user asks for another language.
|
|
24
|
+
EXTRA
|
|
16
25
|
end
|
|
17
26
|
|
|
18
|
-
# ── Custom
|
|
27
|
+
# ── 2. Custom tools ──────────────────────────────────────────────────────────
|
|
28
|
+
# Register tools the agent can call during conversations.
|
|
29
|
+
# The agent discovers them automatically — no prompt editing needed.
|
|
30
|
+
#
|
|
31
|
+
# Block signature: |args_hash, agent_fs|
|
|
32
|
+
# args_hash — the JSON args the model passed (string keys)
|
|
33
|
+
# agent_fs — Zuzu::AgentFS instance for sandboxed file/KV access
|
|
34
|
+
|
|
19
35
|
Zuzu::ToolRegistry.register(
|
|
20
|
-
'
|
|
36
|
+
'current_time',
|
|
37
|
+
'Get the current local date and time.',
|
|
38
|
+
{ type: 'object', properties: {}, required: [] }
|
|
39
|
+
) { |_args, _fs| Time.now.strftime('%Y-%m-%d %H:%M:%S %Z') }
|
|
40
|
+
|
|
41
|
+
Zuzu::ToolRegistry.register(
|
|
42
|
+
'greet',
|
|
43
|
+
'Greet a user by name.',
|
|
21
44
|
{ type: 'object', properties: { name: { type: 'string' } }, required: ['name'] }
|
|
22
|
-
) { |args, _fs| "Hello, #{args['name']}!" }
|
|
45
|
+
) { |args, _fs| "Hello, #{args['name']}! Welcome." }
|
|
46
|
+
|
|
47
|
+
# ── 3. UI customisation ──────────────────────────────────────────────────────
|
|
48
|
+
# Basic customisation (app name, window size) is handled via Zuzu.configure above.
|
|
49
|
+
#
|
|
50
|
+
# For deeper UI changes subclass Zuzu::App and call launch! on your subclass:
|
|
51
|
+
#
|
|
52
|
+
# class MyApp < Zuzu::App
|
|
53
|
+
# # Override private helpers, e.g. change the Admin Panel contents:
|
|
54
|
+
# def open_admin_panel
|
|
55
|
+
# super # keep default panel, or replace entirely
|
|
56
|
+
# end
|
|
57
|
+
# end
|
|
58
|
+
# MyApp.launch!(use_llamafile: true)
|
|
59
|
+
#
|
|
60
|
+
# See lib/zuzu/app.rb in the zuzu gem source for the full shell/body definition.
|
|
23
61
|
|
|
24
|
-
# ── Launch
|
|
62
|
+
# ── Launch ───────────────────────────────────────────────────────────────────
|
|
25
63
|
Zuzu::App.launch!(use_llamafile: true)
|
data/warble.rb
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Warbler configuration for packaging Zuzu apps as standalone .jar / .war.
|
|
4
|
+
# Usage: warble jar
|
|
5
|
+
#
|
|
6
|
+
# The resulting .jar can be run with:
|
|
7
|
+
# java -XstartOnFirstThread -jar my_app.jar (macOS)
|
|
8
|
+
# java -jar my_app.jar (Linux / Windows)
|
|
9
|
+
|
|
10
|
+
Warbler::Config.new do |config|
|
|
11
|
+
config.features = %w[executable]
|
|
12
|
+
config.dirs = %w[lib templates]
|
|
13
|
+
config.includes = FileList['app.rb', 'Gemfile']
|
|
14
|
+
# models/ is NOT bundled — place model files next to the jar at runtime
|
|
15
|
+
|
|
16
|
+
# SWT native fragments are pulled in by glimmer-dsl-swt;
|
|
17
|
+
# Warbler bundles them automatically.
|
|
18
|
+
config.bundler = true
|
|
19
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: zuzu
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.3
|
|
5
5
|
platform: java
|
|
6
6
|
authors:
|
|
7
7
|
- Abhishek Parolkar
|
|
@@ -41,46 +41,55 @@ dependencies:
|
|
|
41
41
|
name: webrick
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
|
43
43
|
requirements:
|
|
44
|
-
- - "
|
|
44
|
+
- - "~>"
|
|
45
45
|
- !ruby/object:Gem::Version
|
|
46
46
|
version: '1.7'
|
|
47
47
|
type: :runtime
|
|
48
48
|
prerelease: false
|
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
50
|
requirements:
|
|
51
|
-
- - "
|
|
51
|
+
- - "~>"
|
|
52
52
|
- !ruby/object:Gem::Version
|
|
53
53
|
version: '1.7'
|
|
54
54
|
- !ruby/object:Gem::Dependency
|
|
55
55
|
name: bigdecimal
|
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
|
57
57
|
requirements:
|
|
58
|
-
- - "
|
|
58
|
+
- - "~>"
|
|
59
59
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: '
|
|
60
|
+
version: '3.1'
|
|
61
61
|
type: :runtime
|
|
62
62
|
prerelease: false
|
|
63
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
64
64
|
requirements:
|
|
65
|
-
- - "
|
|
65
|
+
- - "~>"
|
|
66
66
|
- !ruby/object:Gem::Version
|
|
67
|
-
version: '
|
|
67
|
+
version: '3.1'
|
|
68
68
|
- !ruby/object:Gem::Dependency
|
|
69
69
|
name: logger
|
|
70
70
|
requirement: !ruby/object:Gem::Requirement
|
|
71
71
|
requirements:
|
|
72
|
-
- - "
|
|
72
|
+
- - "~>"
|
|
73
73
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: '
|
|
74
|
+
version: '1.5'
|
|
75
75
|
type: :runtime
|
|
76
76
|
prerelease: false
|
|
77
77
|
version_requirements: !ruby/object:Gem::Requirement
|
|
78
78
|
requirements:
|
|
79
|
-
- - "
|
|
79
|
+
- - "~>"
|
|
80
80
|
- !ruby/object:Gem::Version
|
|
81
|
-
version: '
|
|
82
|
-
description:
|
|
83
|
-
|
|
81
|
+
version: '1.5'
|
|
82
|
+
description: Every installed application is an orchestrator of OS capabilities. LLMs
|
|
83
|
+
are simply a more expressive interface for that orchestration. Zuzu is a framework
|
|
84
|
+
for building installable, AI-native desktop apps where the intelligence runs on
|
|
85
|
+
the user's hardware — not in a data center. It uses JRuby and Glimmer DSL for SWT
|
|
86
|
+
for the GUI, Mozilla's llamafile for local LLM inference, and SQLite (via AgentFS)
|
|
87
|
+
as a sandboxed virtual filesystem the agent can read and write without touching
|
|
88
|
+
the host OS. Apps ship as a cross-platform .jar, or as a native installer (.dmg/.deb/.exe)
|
|
89
|
+
with a JRE bundled via jpackage — users download, double-click, and run with no
|
|
90
|
+
Java installation required. No cloud. No subscriptions. No infrastructure to operate.
|
|
91
|
+
Scaffolded projects include CLAUDE.md and Claude Code skills pre-tuned to Zuzu's
|
|
92
|
+
patterns, so coding agents generate correct framework code from the start.
|
|
84
93
|
email:
|
|
85
94
|
- abhishek@parolkar.com
|
|
86
95
|
executables:
|
|
@@ -109,13 +118,20 @@ files:
|
|
|
109
118
|
- lib/zuzu/tools/shell_tool.rb
|
|
110
119
|
- lib/zuzu/tools/web_tool.rb
|
|
111
120
|
- lib/zuzu/version.rb
|
|
121
|
+
- templates/.claude/skills/add-tool/SKILL.md
|
|
122
|
+
- templates/.claude/skills/customize/SKILL.md
|
|
123
|
+
- templates/.claude/skills/debug/SKILL.md
|
|
124
|
+
- templates/.claude/skills/setup/SKILL.md
|
|
125
|
+
- templates/AGENTS.md
|
|
126
|
+
- templates/CLAUDE.md
|
|
112
127
|
- templates/app.rb
|
|
128
|
+
- warble.rb
|
|
113
129
|
homepage: https://github.com/parolkar/zuzu
|
|
114
130
|
licenses:
|
|
115
131
|
- MIT
|
|
116
132
|
metadata:
|
|
117
133
|
homepage_uri: https://github.com/parolkar/zuzu
|
|
118
|
-
source_code_uri: https://github.com/parolkar/zuzu
|
|
134
|
+
source_code_uri: https://github.com/parolkar/zuzu/tree/main
|
|
119
135
|
bug_tracker_uri: https://github.com/parolkar/zuzu/issues
|
|
120
136
|
rdoc_options: []
|
|
121
137
|
require_paths:
|
|
@@ -133,5 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
133
149
|
requirements: []
|
|
134
150
|
rubygems_version: 3.7.2
|
|
135
151
|
specification_version: 4
|
|
136
|
-
summary:
|
|
152
|
+
summary: JRuby framework for AI-native desktop apps — local LLM, single .jar/.dmg/.exe/.deb
|
|
153
|
+
distribution, Claude Code-ready scaffolding. SQLite-backed AgentFS as a sandboxed
|
|
154
|
+
virtual filesystem for the agent. No cloud required.
|
|
137
155
|
test_files: []
|