bone-agent 1.3.3 → 2.0.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/bin/bone.js +39 -0
- package/package.json +25 -39
- package/LICENSE +0 -21
- package/README.md +0 -184
- package/bin/npm-wrapper.js +0 -235
- package/bin/rg +0 -0
- package/bin/rg.exe +0 -0
- package/config.yaml.example +0 -141
- package/prompts/main/ask_questions.md +0 -31
- package/prompts/main/batch_independent_calls.md +0 -5
- package/prompts/main/casual_interactions.md +0 -11
- package/prompts/main/code_references.md +0 -8
- package/prompts/main/communication_style.md +0 -12
- package/prompts/main/context_reliability.md +0 -12
- package/prompts/main/conversational_tool_calling.md +0 -15
- package/prompts/main/dream.md +0 -36
- package/prompts/main/editing_pattern.md +0 -13
- package/prompts/main/error_handling.md +0 -6
- package/prompts/main/exploration_pattern.md +0 -21
- package/prompts/main/intro.md +0 -1
- package/prompts/main/obsidian.md +0 -16
- package/prompts/main/obsidian_project.md +0 -79
- package/prompts/main/professional_objectivity.md +0 -3
- package/prompts/main/targeted_searching.md +0 -10
- package/prompts/main/task_lists_pattern.md +0 -8
- package/prompts/main/temp_folder.md +0 -9
- package/prompts/main/think_before_acting.md +0 -10
- package/prompts/main/tone_and_style.md +0 -4
- package/prompts/main/tool_preferences.md +0 -24
- package/prompts/main/trust_subagent_context.md +0 -21
- package/prompts/main/when_to_use_sub_agent.md +0 -7
- package/prompts/micro/ask_questions.md +0 -1
- package/prompts/micro/batch_independent_calls.md +0 -1
- package/prompts/micro/casual_interactions.md +0 -1
- package/prompts/micro/code_references.md +0 -1
- package/prompts/micro/communication_style.md +0 -1
- package/prompts/micro/context_reliability.md +0 -1
- package/prompts/micro/conversational_tool_calling.md +0 -1
- package/prompts/micro/editing_pattern.md +0 -1
- package/prompts/micro/error_handling.md +0 -1
- package/prompts/micro/exploration_pattern.md +0 -1
- package/prompts/micro/intro.md +0 -1
- package/prompts/micro/obsidian.md +0 -4
- package/prompts/micro/obsidian_project.md +0 -5
- package/prompts/micro/professional_objectivity.md +0 -1
- package/prompts/micro/targeted_searching.md +0 -1
- package/prompts/micro/task_lists_pattern.md +0 -1
- package/prompts/micro/temp_folder.md +0 -1
- package/prompts/micro/think_before_acting.md +0 -5
- package/prompts/micro/tone_and_style.md +0 -1
- package/prompts/micro/tool_preferences.md +0 -1
- package/prompts/micro/trust_subagent_context.md +0 -1
- package/prompts/micro/when_to_use_sub_agent.md +0 -1
- package/requirements.txt +0 -9
- package/src/__init__.py +0 -11
- package/src/core/__init__.py +0 -1
- package/src/core/agentic.py +0 -985
- package/src/core/chat_manager.py +0 -1564
- package/src/core/config_manager.py +0 -253
- package/src/core/cron.py +0 -582
- package/src/core/cron_allowlist.py +0 -118
- package/src/core/memory.py +0 -145
- package/src/core/retry.py +0 -71
- package/src/core/sub_agent.py +0 -326
- package/src/core/tool_approval.py +0 -220
- package/src/core/tool_feedback.py +0 -778
- package/src/exceptions.py +0 -79
- package/src/llm/__init__.py +0 -1
- package/src/llm/client.py +0 -171
- package/src/llm/config.py +0 -492
- package/src/llm/prompts.py +0 -489
- package/src/llm/providers.py +0 -436
- package/src/llm/streaming.py +0 -163
- package/src/llm/token_tracker.py +0 -384
- package/src/tools/__init__.py +0 -212
- package/src/tools/constants.py +0 -59
- package/src/tools/create_file.py +0 -136
- package/src/tools/directory.py +0 -389
- package/src/tools/edit.py +0 -545
- package/src/tools/file_reader.py +0 -322
- package/src/tools/helpers/__init__.py +0 -105
- package/src/tools/helpers/base.py +0 -550
- package/src/tools/helpers/converters.py +0 -44
- package/src/tools/helpers/file_helpers.py +0 -189
- package/src/tools/helpers/formatters.py +0 -411
- package/src/tools/helpers/loader.py +0 -231
- package/src/tools/helpers/parallel_executor.py +0 -231
- package/src/tools/helpers/path_resolver.py +0 -232
- package/src/tools/helpers/plugin_manifest.py +0 -156
- package/src/tools/obsidian.py +0 -96
- package/src/tools/review_sub_agent.py +0 -189
- package/src/tools/rg_search.py +0 -460
- package/src/tools/search_plugins.py +0 -109
- package/src/tools/select_option.py +0 -600
- package/src/tools/shell.py +0 -302
- package/src/tools/sub_agent.py +0 -139
- package/src/tools/task_list.py +0 -269
- package/src/tools/web_search.py +0 -61
- package/src/ui/__init__.py +0 -1
- package/src/ui/banner.py +0 -87
- package/src/ui/commands.py +0 -2809
- package/src/ui/displays.py +0 -214
- package/src/ui/loader.py +0 -284
- package/src/ui/main.py +0 -647
- package/src/ui/prompt_utils.py +0 -113
- package/src/ui/setting_selector.py +0 -590
- package/src/ui/setup_wizard.py +0 -294
- package/src/ui/sub_agent_panel.py +0 -234
- package/src/ui/tool_confirmation.py +0 -215
- package/src/utils/__init__.py +0 -1
- package/src/utils/citation_parser.py +0 -199
- package/src/utils/editor.py +0 -158
- package/src/utils/gitignore_filter.py +0 -149
- package/src/utils/logger.py +0 -254
- package/src/utils/paths.py +0 -30
- package/src/utils/result_parsers.py +0 -108
- package/src/utils/safe_commands.py +0 -243
- package/src/utils/settings.py +0 -191
- package/src/utils/user_message_logger.py +0 -120
- package/src/utils/validation.py +0 -191
- package/src/utils/web_search.py +0 -173
package/src/ui/prompt_utils.py
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
"""Shared prompt utilities for bone-agent CLI."""
|
|
2
|
-
|
|
3
|
-
from prompt_toolkit import PromptSession
|
|
4
|
-
from prompt_toolkit.key_binding import KeyBindings
|
|
5
|
-
from prompt_toolkit.styles import Style
|
|
6
|
-
from prompt_toolkit.formatted_text import HTML
|
|
7
|
-
from llm.config import get_provider_config, APPROVE_MODE_LABELS, STATUS_BAR_SETTINGS
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
def get_bottom_toolbar_text(chat_manager):
|
|
11
|
-
"""Return bottom toolbar text with model, approval mode, and token count.
|
|
12
|
-
|
|
13
|
-
This is extracted from main.py for reuse in confirmation prompts.
|
|
14
|
-
|
|
15
|
-
Args:
|
|
16
|
-
chat_manager: ChatManager instance for state access
|
|
17
|
-
|
|
18
|
-
Returns:
|
|
19
|
-
HTML formatted toolbar text
|
|
20
|
-
"""
|
|
21
|
-
provider_name = chat_manager.client.provider
|
|
22
|
-
model = get_provider_config(provider_name).get("model", "Unknown")
|
|
23
|
-
|
|
24
|
-
# Get token counts
|
|
25
|
-
tokens_curr = chat_manager.token_tracker.current_context_tokens
|
|
26
|
-
tokens_in = chat_manager.token_tracker.total_prompt_tokens
|
|
27
|
-
tokens_out = chat_manager.token_tracker.total_completion_tokens
|
|
28
|
-
tokens_total = chat_manager.token_tracker.total_tokens
|
|
29
|
-
|
|
30
|
-
# Calculate cost — prefer upstream-reported actual cost (e.g. OpenRouter)
|
|
31
|
-
# over locally estimated cost from token counts × static rates
|
|
32
|
-
total_cost = chat_manager.token_tracker.get_display_cost(model)
|
|
33
|
-
|
|
34
|
-
# Format model name (take last part if path)
|
|
35
|
-
if "\\" in model or "/" in model:
|
|
36
|
-
model_display = model.split("\\")[-1].split("/")[-1]
|
|
37
|
-
else:
|
|
38
|
-
model_display = model
|
|
39
|
-
|
|
40
|
-
# Determine mode label and color
|
|
41
|
-
mode_label = "Approval"
|
|
42
|
-
val = APPROVE_MODE_LABELS.get(chat_manager.approve_mode, chat_manager.approve_mode.upper())
|
|
43
|
-
colors = {"safe": "#6B8E23", "accept_edits": "#DAA520", "danger": "#CD5C5C"}
|
|
44
|
-
mode_val_colored = f'<style fg="{colors.get(chat_manager.approve_mode, "white")}">{val}</style>'
|
|
45
|
-
|
|
46
|
-
# Build toolbar string based on configuration
|
|
47
|
-
# Model and mode are always shown
|
|
48
|
-
parts = [f'<style fg="#606060">Model: {model_display or provider_name} - {mode_label}: </style>{mode_val_colored}']
|
|
49
|
-
|
|
50
|
-
# Conditionally add token counts
|
|
51
|
-
if STATUS_BAR_SETTINGS.get("show_curr_tokens", True):
|
|
52
|
-
parts.append(f'<style fg="#606060"> | </style><style fg="#808080">curr</style><style fg="#606060">: {tokens_curr:,}</style>')
|
|
53
|
-
if STATUS_BAR_SETTINGS.get("show_in_tokens", True):
|
|
54
|
-
parts.append(f'<style fg="#606060"> | </style><style fg="#808080">in</style><style fg="#606060">: {tokens_in:,}</style>')
|
|
55
|
-
if STATUS_BAR_SETTINGS.get("show_out_tokens", True):
|
|
56
|
-
parts.append(f'<style fg="#606060"> | </style><style fg="#808080">out</style><style fg="#606060">: {tokens_out:,}</style>')
|
|
57
|
-
if STATUS_BAR_SETTINGS.get("show_total_tokens", True):
|
|
58
|
-
parts.append(f'<style fg="#606060"> | </style><style fg="#808080">total</style><style fg="#606060">: {tokens_total:,}</style>')
|
|
59
|
-
|
|
60
|
-
# Conditionally add cost
|
|
61
|
-
if STATUS_BAR_SETTINGS.get("show_cost", True):
|
|
62
|
-
parts.append(f'<style fg="#606060"> | </style><style fg="#808080">cost</style><style fg="#606060">: ${total_cost:.4f}</style>')
|
|
63
|
-
|
|
64
|
-
return HTML('\n' + ''.join(parts))
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
TOOLBAR_STYLE = Style.from_dict({
|
|
68
|
-
"bottom-toolbar": "bg:default fg:#FFFFFF noreverse",
|
|
69
|
-
"bottom-toolbar.text": "bg:default fg:#FFFFFF noreverse",
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
def setup_common_bindings(chat_manager):
|
|
74
|
-
"""Create KeyBindings with shared logic (e.g., Shift+Tab for mode cycling)."""
|
|
75
|
-
bindings = KeyBindings()
|
|
76
|
-
|
|
77
|
-
@bindings.add('s-tab')
|
|
78
|
-
def toggle_approve_mode(event):
|
|
79
|
-
"""Toggle between modes using Shift+Tab (blocked during thinking)."""
|
|
80
|
-
# Import here to avoid circular imports and get current state
|
|
81
|
-
import importlib
|
|
82
|
-
main_module = importlib.import_module('ui.main')
|
|
83
|
-
if main_module.INPUT_BLOCKED.get('blocked', False):
|
|
84
|
-
return
|
|
85
|
-
chat_manager.cycle_approve_mode()
|
|
86
|
-
event.app.invalidate()
|
|
87
|
-
|
|
88
|
-
return bindings
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
def create_confirmation_prompt_session(chat_manager, message_func):
|
|
92
|
-
"""Create a PromptSession for confirmation prompts with key bindings and toolbar.
|
|
93
|
-
|
|
94
|
-
This provides:
|
|
95
|
-
- Shift+Tab to toggle approval mode
|
|
96
|
-
- Bottom toolbar showing model, approval mode, and token counts
|
|
97
|
-
- Dynamic prompt message that updates when mode changes
|
|
98
|
-
|
|
99
|
-
Args:
|
|
100
|
-
chat_manager: ChatManager instance for state access
|
|
101
|
-
message_func: Function that returns the prompt message HTML (called on each redraw)
|
|
102
|
-
|
|
103
|
-
Returns:
|
|
104
|
-
PromptSession configured with bindings and toolbar
|
|
105
|
-
"""
|
|
106
|
-
bindings = setup_common_bindings(chat_manager)
|
|
107
|
-
|
|
108
|
-
return PromptSession(
|
|
109
|
-
key_bindings=bindings,
|
|
110
|
-
style=TOOLBAR_STYLE,
|
|
111
|
-
bottom_toolbar=lambda: get_bottom_toolbar_text(chat_manager),
|
|
112
|
-
message=message_func
|
|
113
|
-
)
|