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.
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 = 'My Assistant'
9
- # When running from a packaged jar, __dir__ is a classloader URI —
10
- # resolve paths against the directory where the jar was launched instead.
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
- c.port = 8080
15
- # c.channels = ['whatsapp']
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 Tools ─────────────────────────────────────────────────
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
- 'greet', 'Greet a user by name.',
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.1
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: '0'
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: '0'
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: '0'
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: '0'
82
- description: Zuzu is a framework for building local-first, privacy-respecting desktop
83
- AI assistants using JRuby, Glimmer DSL for SWT, SQLite, and llamafile.
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: Local-first agentic desktop apps with JRuby.
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: []