kward 0.83.0 → 0.84.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.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +68 -15
  3. data/CONTRIBUTING.md +74 -0
  4. data/Gemfile.lock +8 -2
  5. data/README.md +21 -1
  6. data/Rakefile +46 -2
  7. data/SECURITY.md +31 -0
  8. data/doc/api.md +4 -0
  9. data/doc/composer.md +1 -1
  10. data/doc/configuration.md +68 -21
  11. data/doc/editor.md +28 -13
  12. data/doc/files.md +8 -4
  13. data/doc/getting-started.md +3 -0
  14. data/doc/pan.md +19 -15
  15. data/doc/platform-support.md +48 -0
  16. data/doc/security.md +3 -2
  17. data/doc/shell.md +62 -45
  18. data/doc/troubleshooting.md +12 -2
  19. data/doc/usage.md +5 -5
  20. data/kward.gemspec +5 -4
  21. data/lib/kward/agent.rb +6 -3
  22. data/lib/kward/ansi.rb +110 -10
  23. data/lib/kward/cli/auth_commands.rb +34 -13
  24. data/lib/kward/cli/commands.rb +83 -62
  25. data/lib/kward/cli/doctor.rb +39 -17
  26. data/lib/kward/cli/hook_commands.rb +22 -12
  27. data/lib/kward/cli/interactive_turn.rb +48 -7
  28. data/lib/kward/cli/project_skills_commands.rb +8 -4
  29. data/lib/kward/cli/prompt_interface.rb +27 -0
  30. data/lib/kward/cli/rendering.rb +15 -9
  31. data/lib/kward/cli/runtime_helpers.rb +118 -55
  32. data/lib/kward/cli/slash_commands.rb +12 -14
  33. data/lib/kward/cli/tabs.rb +83 -12
  34. data/lib/kward/cli/tool_summaries.rb +14 -0
  35. data/lib/kward/cli.rb +45 -7
  36. data/lib/kward/cli_transcript_formatter.rb +11 -4
  37. data/lib/kward/config_files.rb +82 -68
  38. data/lib/kward/detached_run.rb +44 -0
  39. data/lib/kward/interactive_pty_runner.rb +102 -28
  40. data/lib/kward/{ekwsh.rb → kwsh.rb} +35 -16
  41. data/lib/kward/kwshrc.rb +233 -0
  42. data/lib/kward/markdown_code_block.rb +136 -0
  43. data/lib/kward/model/client.rb +34 -22
  44. data/lib/kward/model/provider_catalog.rb +5 -0
  45. data/lib/kward/model/stream_parser.rb +20 -4
  46. data/lib/kward/pan/index.html.erb +3 -3
  47. data/lib/kward/pan/server.rb +23 -3
  48. data/lib/kward/persistent_shell_session.rb +119 -26
  49. data/lib/kward/project_files.rb +2 -2
  50. data/lib/kward/prompt_interface/composer_renderer.rb +44 -40
  51. data/lib/kward/prompt_interface/composer_state.rb +33 -24
  52. data/lib/kward/prompt_interface/editor/auto_indent.rb +24 -22
  53. data/lib/kward/prompt_interface/editor/controller.rb +30 -33
  54. data/lib/kward/prompt_interface/editor/endwise.rb +13 -4
  55. data/lib/kward/prompt_interface/editor/modes/vibe.rb +289 -44
  56. data/lib/kward/prompt_interface/editor/renderer.rb +108 -6
  57. data/lib/kward/prompt_interface/editor/runner.rb +362 -0
  58. data/lib/kward/prompt_interface/editor/runner_state.rb +78 -0
  59. data/lib/kward/prompt_interface/editor/state.rb +10 -10
  60. data/lib/kward/prompt_interface/editor/syntax_highlighter.rb +68 -6
  61. data/lib/kward/prompt_interface/editor/vibe_state.rb +3 -3
  62. data/lib/kward/prompt_interface/file_overlay.rb +71 -15
  63. data/lib/kward/prompt_interface/key_handler.rb +67 -0
  64. data/lib/kward/prompt_interface/overlay_renderer.rb +7 -5
  65. data/lib/kward/prompt_interface/project_browser.rb +415 -14
  66. data/lib/kward/prompt_interface/runtime_state.rb +50 -1
  67. data/lib/kward/prompt_interface/screen.rb +2 -2
  68. data/lib/kward/prompt_interface/selection_prompt.rb +3 -1
  69. data/lib/kward/prompt_interface/slash_overlay.rb +19 -4
  70. data/lib/kward/prompt_interface/transcript_renderer.rb +12 -7
  71. data/lib/kward/prompt_interface.rb +93 -18
  72. data/lib/kward/prompts/commands.rb +1 -1
  73. data/lib/kward/prompts.rb +1 -1
  74. data/lib/kward/pty_output_sink.rb +47 -0
  75. data/lib/kward/rpc/transcript_normalizer.rb +7 -3
  76. data/lib/kward/scratchpad_languages.rb +74 -0
  77. data/lib/kward/scratchpad_runner.rb +155 -29
  78. data/lib/kward/shell_prompt.rb +2 -0
  79. data/lib/kward/terminal_keys.rb +12 -0
  80. data/lib/kward/terminal_text.rb +121 -0
  81. data/lib/kward/text_matcher.rb +18 -0
  82. data/lib/kward/tools/open_editor.rb +41 -0
  83. data/lib/kward/tools/registry.rb +13 -4
  84. data/lib/kward/tools/tool_call.rb +2 -1
  85. data/lib/kward/version.rb +1 -1
  86. data/templates/default/fulldoc/html/css/kward.css +0 -125
  87. data/templates/default/fulldoc/html/images/kward_workflow.svg +52 -0
  88. data/templates/default/fulldoc/html/setup.rb +1 -1
  89. data/templates/default/kward_navigation.rb +1 -0
  90. data/templates/default/layout/html/footer.erb +10 -0
  91. data/templates/default/layout/html/headers.erb +23 -0
  92. data/templates/default/layout/html/layout.erb +6 -18
  93. data/templates/default/layout/html/setup.rb +41 -2
  94. metadata +36 -8
  95. data/templates/default/fulldoc/html/images/kward_screen_1.png +0 -0
@@ -0,0 +1,52 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1200" height="700" viewBox="0 0 1200 700" role="img" aria-labelledby="title description">
2
+ <title id="title">Kward coding workflow</title>
3
+ <desc id="description">A Kward terminal session reads and edits the CLI, runs focused tests, and reports a successful authentication error-handling change.</desc>
4
+ <defs>
5
+ <linearGradient id="background" x1="0" y1="0" x2="1" y2="1">
6
+ <stop offset="0" stop-color="#11170f"/>
7
+ <stop offset="1" stop-color="#070b07"/>
8
+ </linearGradient>
9
+ <filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
10
+ <feDropShadow dx="0" dy="18" stdDeviation="22" flood-color="#000" flood-opacity=".45"/>
11
+ </filter>
12
+ </defs>
13
+ <rect width="1200" height="700" fill="#070b07"/>
14
+ <rect x="28" y="28" width="1144" height="644" rx="20" fill="url(#background)" stroke="#465035" stroke-width="2" filter="url(#shadow)"/>
15
+ <path d="M28 82h1144" stroke="#293024" stroke-width="2"/>
16
+ <circle cx="62" cy="55" r="8" fill="#ff5f57"/>
17
+ <circle cx="88" cy="55" r="8" fill="#febc2e"/>
18
+ <circle cx="114" cy="55" r="8" fill="#28c840"/>
19
+ <text x="600" y="63" text-anchor="middle" fill="#777c68" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" font-size="18">kward · ~/code/kward</text>
20
+
21
+ <g font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace">
22
+ <circle cx="65" cy="119" r="7" fill="#9caf35"/>
23
+ <text x="84" y="126" fill="#efe8d0" font-size="20" font-weight="700">Kward v0.83.0 is online.</text>
24
+ <text x="64" y="159" fill="#777c68" font-size="16">Workspace</text>
25
+ <text x="180" y="159" fill="#d2df62" font-size="16">kaiwood/kward</text>
26
+ <text x="64" y="184" fill="#777c68" font-size="16">Branch</text>
27
+ <text x="180" y="184" fill="#d2df62" font-size="16">main</text>
28
+ <text x="64" y="219" fill="#efe8d0" font-size="18" font-weight="700">State your business.</text>
29
+
30
+ <text x="64" y="276" fill="#afa88f" font-size="16" font-weight="700">You&gt;</text>
31
+ <text x="126" y="276" fill="#efe8d0" font-size="18">Make one-shot authentication failures concise and add focused tests.</text>
32
+
33
+ <rect x="64" y="309" width="1072" height="164" rx="12" fill="#0d120d" stroke="#293024"/>
34
+ <text x="88" y="342" fill="#9caf35" font-size="15" font-weight="700">TOOL ACTIVITY</text>
35
+ <text x="88" y="378" fill="#d2df62" font-size="17">Read</text>
36
+ <text x="174" y="378" fill="#efe8d0" font-size="17">lib/kward/cli.rb</text>
37
+ <text x="88" y="414" fill="#d2df62" font-size="17">Edit</text>
38
+ <text x="174" y="414" fill="#efe8d0" font-size="17">lib/kward/cli.rb</text>
39
+ <text x="1016" y="414" text-anchor="end" fill="#9caf35" font-size="16">+34</text>
40
+ <text x="88" y="450" fill="#d2df62" font-size="17">Test</text>
41
+ <text x="174" y="450" fill="#efe8d0" font-size="17">3 runs · 26 assertions</text>
42
+ <text x="1110" y="450" text-anchor="end" fill="#9caf35" font-size="17" font-weight="700">0 failures</text>
43
+
44
+ <text x="64" y="526" fill="#9caf35" font-size="16" font-weight="700">Kward&gt;</text>
45
+ <text x="154" y="526" fill="#efe8d0" font-size="18">Authentication failures now return an actionable message without a traceback.</text>
46
+ <text x="154" y="559" fill="#afa88f" font-size="17">Debug backtraces remain available with KWARD_DEBUG=1.</text>
47
+
48
+ <path d="M52 608h1096" stroke="#293024"/>
49
+ <text x="64" y="642" fill="#afa88f" font-size="15">main*</text>
50
+ <text x="1128" y="642" text-anchor="end" fill="#777c68" font-size="15">18% · Codex gpt-5.6-sol · medium</text>
51
+ </g>
52
+ </svg>
@@ -9,7 +9,7 @@ def generate_assets
9
9
  asset('css/kward.css', file('css/kward.css', true))
10
10
  asset('js/kward.js', file('js/kward.js', true))
11
11
  asset('images/kward_logo.png', file('images/kward_logo.png', true))
12
- asset('images/kward_screen_1.png', file('images/kward_screen_1.png', true))
12
+ asset('images/kward_workflow.svg', file('images/kward_workflow.svg', true))
13
13
  end
14
14
 
15
15
  def stylesheets_full_list
@@ -12,6 +12,7 @@ module KwardDocsNavigationData
12
12
  ["Authentication", "file.authentication.html"],
13
13
  ["Model providers", "file.providers.html"],
14
14
  ["Security and trust", "file.security.html"],
15
+ ["Platform support", "file.platform-support.html"],
15
16
  ["Troubleshooting", "file.troubleshooting.html"]
16
17
  ]
17
18
  ],
@@ -0,0 +1,10 @@
1
+ <div id="footer">
2
+ <% if home_page? %>
3
+ Kward is open source software released under the
4
+ <a href="https://github.com/kaiwood/kward/blob/main/LICENSE">MIT License</a>.
5
+ <% else %>
6
+ Generated with
7
+ <a href="https://yardoc.org" title="YARD documentation tool" target="_parent">YARD</a>
8
+ <%= YARD::VERSION %>.
9
+ <% end %>
10
+ </div>
@@ -0,0 +1,23 @@
1
+ <meta charset="<%= charset %>">
2
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
3
+ <title><%= h docs_page_title %></title>
4
+ <meta name="description" content="<%= h docs_page_description %>">
5
+ <meta name="theme-color" content="#070b07">
6
+ <link rel="canonical" href="<%= h docs_canonical_url %>">
7
+ <link rel="icon" type="image/png" href="<%= url_for('images/kward_logo.png') %>">
8
+ <meta property="og:type" content="website">
9
+ <meta property="og:site_name" content="Kward">
10
+ <meta property="og:title" content="<%= h docs_page_title %>">
11
+ <meta property="og:description" content="<%= h docs_page_description %>">
12
+ <meta property="og:url" content="<%= h docs_canonical_url %>">
13
+ <meta property="og:image" content="https://kaiwood.github.io/kward/images/kward_logo.png">
14
+ <meta name="twitter:card" content="summary">
15
+ <meta name="twitter:title" content="<%= h docs_page_title %>">
16
+ <meta name="twitter:description" content="<%= h docs_page_description %>">
17
+ <% stylesheets.each do |stylesheet| %>
18
+ <link rel="stylesheet" href="<%= mtime_url(stylesheet) %>" type="text/css">
19
+ <% end %>
20
+ <%= erb :script_setup %>
21
+ <% javascripts.each do |javascript| %>
22
+ <script type="text/javascript" charset="utf-8" src="<%= mtime_url(javascript) %>"></script>
23
+ <% end %>
@@ -80,23 +80,11 @@
80
80
  <main id="main" class="kward-home">
81
81
  <section class="kward-hero">
82
82
  <div class="kward-hero-copy">
83
- <p class="kward-eyebrow">⌘ Ruby CLI Coding Agent</p>
84
- <h1>
85
- <span class="kward-swosh" aria-label="Your terminal. Your RPC frontend. Your workflow.">
86
- <span class="kward-swosh-text kward-swosh-text-a" aria-hidden="true">Your terminal.</span>
87
- <span class="kward-swosh-text kward-swosh-text-b" aria-hidden="true">Your RPC frontend.</span>
88
- <span class="kward-swosh-text kward-swosh-text-e" aria-hidden="true">Your workflow.</span>
89
- </span>
90
- <br>
91
- <span class="kward-swosh" aria-label="Your agent. Your LLM engine. Your harness.">
92
- <span class="kward-swosh-text kward-swosh-text-c" aria-hidden="true">Your agent.</span>
93
- <span class="kward-swosh-text kward-swosh-text-d" aria-hidden="true">Your LLM engine.</span>
94
- <span class="kward-swosh-text kward-swosh-text-f" aria-hidden="true">Your harness.</span>
95
- </span>
96
- </h1>
97
- <p class="kward-lede">Kward is a general-purpose coding agent written in Ruby: terminal-native, project-aware, pipeable, and designed around your workflow.</p>
83
+ <p class="kward-eyebrow">⌘ Ruby-native coding agent</p>
84
+ <h1>A coding agent that works <span>where you do.</span></h1>
85
+ <p class="kward-lede">Inspect code, edit files, run tests, and resume work from your terminal—with your choice of model provider.</p>
98
86
  <div class="kward-actions">
99
- <a class="kward-primary-button" href="<%= url_for('file.README.html') %>">Get Started ›</a>
87
+ <a class="kward-primary-button" href="<%= url_for('file.getting-started.html') %>">Get Started ›</a>
100
88
  <a class="kward-secondary-button" href="https://github.com/kaiwood/kward" target="_blank" rel="noopener noreferrer">View on GitHub</a>
101
89
  </div>
102
90
  <p class="kward-supports">Supports <span>OpenAI</span>, <span>Anthropic</span>, <span>OpenRouter</span> &amp; more.</p>
@@ -110,7 +98,7 @@
110
98
  <article><strong>⌘</strong><h2>Project-aware agent loop</h2><p>Inspect, reason, patch, verify.</p></article>
111
99
  <article><strong>▤</strong><h2>Unix filter mode</h2><p>Pipe diffs, logs, and code through Kward.</p></article>
112
100
  <article><strong>▰</strong><h2>Branchable sessions</h2><p>Resume, rewind, fork, compact, export.</p></article>
113
- <article><strong>⌗</strong><h2>Builtin shell and editor</h2><p>Run commands and edit files safely in the workspace.</p></article>
101
+ <article><strong>⌗</strong><h2>Built-in shell and editor</h2><p>Run commands and edit files safely in the workspace.</p></article>
114
102
  <article><strong>◎</strong><h2>Live source intelligence</h2><p>Search the web and read public repos.</p></article>
115
103
  <article><strong>✣</strong><h2>Ruby-native extensions</h2><p>Shape Kward with plugins, skills, and prompts.</p></article>
116
104
  </section>
@@ -125,7 +113,7 @@
125
113
  <a href="<%= url_for('file.getting-started.html') %>">View full installation docs →</a>
126
114
  </div>
127
115
  <div class="kward-screen-card">
128
- <img src="<%= url_for('images/kward_screen_1.png') %>" alt="Kward terminal interface screenshot">
116
+ <img src="<%= url_for('images/kward_workflow.svg') %>" alt="Kward completing a focused coding change and test run">
129
117
  </div>
130
118
  </section>
131
119
 
@@ -24,16 +24,23 @@ module KwardDocsNavigation
24
24
  end
25
25
  end
26
26
  ].freeze
27
+ DOCS_LINK_TITLES = (
28
+ [["Overview", GUIDE_OVERVIEW], ["Advanced", EXTENSION_OVERVIEW], ["API Docs", API_OVERVIEW]] +
29
+ (GUIDE_GROUPS + EXTENSION_GROUPS + API_GROUPS).flat_map { |_title, items| items }
30
+ ).to_h { |label, link| [link, label] }.freeze
27
31
  GUIDE_FILE_LINKS = {
28
32
  "doc/getting-started.md" => "file.getting-started.html",
29
33
  "doc/usage.md" => "file.usage.html",
30
34
  "doc/configuration.md" => "file.configuration.html",
31
35
  "doc/authentication.md" => "file.authentication.html",
32
36
  "doc/providers.md" => "file.providers.html",
37
+ "doc/security.md" => "file.security.html",
38
+ "doc/platform-support.md" => "file.platform-support.html",
33
39
  "doc/permissions.md" => "file.permissions.html",
34
40
  "doc/sandboxing.md" => "file.sandboxing.html",
35
41
  "doc/troubleshooting.md" => "file.troubleshooting.html",
36
42
  "doc/session-management.md" => "file.session-management.html",
43
+ "doc/composer.md" => "file.composer.html",
37
44
  "doc/tabs.md" => "file.tabs.html",
38
45
  "doc/files.md" => "file.files.html",
39
46
  "doc/editor.md" => "file.editor.html",
@@ -42,6 +49,9 @@ module KwardDocsNavigation
42
49
  "doc/memory.md" => "file.memory.html",
43
50
  "doc/personas.md" => "file.personas.html",
44
51
  "doc/skills.md" => "file.skills.html",
52
+ "doc/prompt-templates.md" => "file.prompt-templates.html",
53
+ "doc/pan.md" => "file.pan.html",
54
+ "doc/mcp.md" => "file.mcp.html",
45
55
  "doc/local-models.md" => "file.local-models.html",
46
56
  "doc/extensibility.md" => "file.extensibility.html",
47
57
  "doc/plugins.md" => "file.plugins.html",
@@ -79,7 +89,7 @@ module KwardDocsNavigation
79
89
  title: title,
80
90
  path: source,
81
91
  url: url_for(link),
82
- text: content.gsub(/[`*_#>\[\]()]/, " ").gsub(/\s+/, " ").strip
92
+ text: content.gsub(/<[^>]+>/, " ").gsub(/[`*_#>\[\]()]/, " ").gsub(/\s+/, " ").strip
83
93
  }
84
94
  end
85
95
  end
@@ -111,6 +121,35 @@ module KwardDocsNavigation
111
121
  options.index && readme_file?
112
122
  end
113
123
 
124
+ def docs_page_title
125
+ return "Kward — Ruby Coding Agent for Your Terminal" if home_page?
126
+
127
+ page = DOCS_LINK_TITLES[docs_output_path] || @page_title.to_s.sub(/\AFile:\s*/, "")
128
+ "#{page} | Kward Docs"
129
+ end
130
+
131
+ def docs_page_description
132
+ if home_page?
133
+ "Kward is an extensible Ruby coding agent for inspecting code, editing files, running tests, and resuming work from your terminal."
134
+ else
135
+ "Documentation for Kward, the extensible Ruby coding agent for your terminal."
136
+ end
137
+ end
138
+
139
+ def docs_canonical_url
140
+ return "https://kaiwood.github.io/kward/" if home_page?
141
+
142
+ "https://kaiwood.github.io/kward/#{docs_output_path}"
143
+ end
144
+
145
+ def docs_output_path
146
+ if defined?(@file) && @file
147
+ GUIDE_FILE_LINKS[@file.filename.to_s] || API_FILE_LINKS[@file.filename.to_s] || current_docs_path
148
+ else
149
+ current_docs_path
150
+ end
151
+ end
152
+
114
153
  def guide_page?
115
154
  (readme_file? && !options.index) || guide_file? || GUIDE_LINKS.include?(current_docs_path)
116
155
  end
@@ -133,7 +172,7 @@ module KwardDocsNavigation
133
172
  GUIDE_FILE_LINKS.merge(API_FILE_LINKS).each do |source, target|
134
173
  html = html.gsub(%(href="#{source}"), %(href="#{target}"))
135
174
  end
136
- html
175
+ html.gsub(%(src="templates/default/fulldoc/html/images/), %(src="images/))
137
176
  end
138
177
  end
139
178
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kward
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.83.0
4
+ version: 0.84.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kai Wood
@@ -107,8 +107,22 @@ dependencies:
107
107
  - - ">="
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
- description: Kward is a Ruby CLI coding agent with local workspace tools, configurable
111
- prompts, web search, sessions, and an experimental JSON-RPC backend.
110
+ - !ruby/object:Gem::Dependency
111
+ name: unicode-display_width
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ description: Kward is an extensible Ruby coding agent with workspace tools, resumable
125
+ sessions, multiple model providers, a local browser UI, and JSON-RPC integrations.
112
126
  email:
113
127
  - kai.wood@icloud.com
114
128
  executables:
@@ -118,11 +132,13 @@ extra_rdoc_files: []
118
132
  files:
119
133
  - ".yardopts"
120
134
  - CHANGELOG.md
135
+ - CONTRIBUTING.md
121
136
  - Gemfile
122
137
  - Gemfile.lock
123
138
  - LICENSE
124
139
  - README.md
125
140
  - Rakefile
141
+ - SECURITY.md
126
142
  - doc/agent-tools.md
127
143
  - doc/api.md
128
144
  - doc/authentication.md
@@ -143,6 +159,7 @@ files:
143
159
  - doc/pan.md
144
160
  - doc/permissions.md
145
161
  - doc/personas.md
162
+ - doc/platform-support.md
146
163
  - doc/plugins.md
147
164
  - doc/prompt-templates.md
148
165
  - doc/providers.md
@@ -213,11 +230,11 @@ files:
213
230
  - lib/kward/context_budget_meter.rb
214
231
  - lib/kward/conversation.rb
215
232
  - lib/kward/deep_copy.rb
233
+ - lib/kward/detached_run.rb
216
234
  - lib/kward/diff_view_mode.rb
217
235
  - lib/kward/editor_mode.rb
218
236
  - lib/kward/editor_prompt.rb
219
237
  - lib/kward/editor_prompt_session.rb
220
- - lib/kward/ekwsh.rb
221
238
  - lib/kward/events.rb
222
239
  - lib/kward/export_path.rb
223
240
  - lib/kward/frontmatter.rb
@@ -235,8 +252,11 @@ files:
235
252
  - lib/kward/http.rb
236
253
  - lib/kward/image_attachments.rb
237
254
  - lib/kward/interactive_pty_runner.rb
255
+ - lib/kward/kwsh.rb
256
+ - lib/kward/kwshrc.rb
238
257
  - lib/kward/local_command_runner.rb
239
258
  - lib/kward/local_pty_command_runner.rb
259
+ - lib/kward/markdown_code_block.rb
240
260
  - lib/kward/markdown_transcript.rb
241
261
  - lib/kward/mcp/client.rb
242
262
  - lib/kward/mcp/server_config.rb
@@ -289,6 +309,8 @@ files:
289
309
  - lib/kward/prompt_interface/editor/modes/vibe.rb
290
310
  - lib/kward/prompt_interface/editor/modes/vibe_insert_readline.rb
291
311
  - lib/kward/prompt_interface/editor/renderer.rb
312
+ - lib/kward/prompt_interface/editor/runner.rb
313
+ - lib/kward/prompt_interface/editor/runner_state.rb
292
314
  - lib/kward/prompt_interface/editor/search.rb
293
315
  - lib/kward/prompt_interface/editor/selections.rb
294
316
  - lib/kward/prompt_interface/editor/state.rb
@@ -350,6 +372,7 @@ files:
350
372
  - lib/kward/sandbox/policy.rb
351
373
  - lib/kward/sandbox/runner_factory.rb
352
374
  - lib/kward/sandbox/unavailable_runner.rb
375
+ - lib/kward/scratchpad_languages.rb
353
376
  - lib/kward/scratchpad_runner.rb
354
377
  - lib/kward/session_catalog.rb
355
378
  - lib/kward/session_diff.rb
@@ -374,7 +397,9 @@ files:
374
397
  - lib/kward/terminal_image_support.rb
375
398
  - lib/kward/terminal_keys.rb
376
399
  - lib/kward/terminal_sequences.rb
400
+ - lib/kward/terminal_text.rb
377
401
  - lib/kward/text_boundary.rb
402
+ - lib/kward/text_matcher.rb
378
403
  - lib/kward/tool_output_compactor.rb
379
404
  - lib/kward/tools/ask_user_question.rb
380
405
  - lib/kward/tools/base.rb
@@ -387,6 +412,7 @@ files:
387
412
  - lib/kward/tools/git_commit.rb
388
413
  - lib/kward/tools/list_directory.rb
389
414
  - lib/kward/tools/mcp_tool.rb
415
+ - lib/kward/tools/open_editor.rb
390
416
  - lib/kward/tools/prepare_shell_command.rb
391
417
  - lib/kward/tools/read_file.rb
392
418
  - lib/kward/tools/read_skill.rb
@@ -417,21 +443,23 @@ files:
417
443
  - templates/default/fulldoc/html/css/kward.css
418
444
  - templates/default/fulldoc/html/full_list.erb
419
445
  - templates/default/fulldoc/html/images/kward_logo.png
420
- - templates/default/fulldoc/html/images/kward_screen_1.png
446
+ - templates/default/fulldoc/html/images/kward_workflow.svg
421
447
  - templates/default/fulldoc/html/js/kward.js
422
448
  - templates/default/fulldoc/html/setup.rb
423
449
  - templates/default/kward_navigation.rb
424
450
  - templates/default/layout/html/breadcrumb.erb
451
+ - templates/default/layout/html/footer.erb
452
+ - templates/default/layout/html/headers.erb
425
453
  - templates/default/layout/html/layout.erb
426
454
  - templates/default/layout/html/setup.rb
427
- homepage: https://github.com/kaiwood/kward
455
+ homepage: https://kaiwood.github.io/kward/
428
456
  licenses:
429
457
  - MIT
430
458
  metadata:
431
459
  rubygems_mfa_required: 'true'
432
460
  source_code_uri: https://github.com/kaiwood/kward
433
461
  changelog_uri: https://github.com/kaiwood/kward/blob/main/CHANGELOG.md
434
- documentation_uri: https://github.com/kaiwood/kward#readme
462
+ documentation_uri: https://kaiwood.github.io/kward/
435
463
  bug_tracker_uri: https://github.com/kaiwood/kward/issues
436
464
  rdoc_options: []
437
465
  require_paths:
@@ -449,5 +477,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
449
477
  requirements: []
450
478
  rubygems_version: 3.6.9
451
479
  specification_version: 4
452
- summary: An extendable Ruby CLI coding agent.
480
+ summary: An extensible Ruby coding agent for your terminal.
453
481
  test_files: []