klaude-code 2.1.0__py3-none-any.whl → 2.2.0__py3-none-any.whl

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 (52) hide show
  1. klaude_code/app/__init__.py +1 -2
  2. klaude_code/app/runtime.py +26 -41
  3. klaude_code/cli/main.py +19 -152
  4. klaude_code/config/assets/builtin_config.yaml +13 -0
  5. klaude_code/const.py +1 -1
  6. klaude_code/core/agent_profile.py +38 -3
  7. klaude_code/core/manager/llm_clients_builder.py +1 -1
  8. klaude_code/core/prompts/prompt-nano-banana.md +1 -0
  9. klaude_code/core/reminders.py +20 -4
  10. klaude_code/core/tool/__init__.py +0 -2
  11. klaude_code/core/tool/shell/command_safety.py +4 -189
  12. klaude_code/core/turn.py +2 -5
  13. klaude_code/llm/anthropic/client.py +1 -1
  14. klaude_code/llm/google/client.py +1 -1
  15. klaude_code/llm/openai_compatible/stream.py +1 -1
  16. klaude_code/llm/responses/client.py +1 -1
  17. klaude_code/protocol/commands.py +1 -0
  18. klaude_code/protocol/events/tools.py +5 -1
  19. klaude_code/protocol/message.py +2 -2
  20. klaude_code/protocol/tools.py +0 -1
  21. klaude_code/session/session.py +0 -2
  22. klaude_code/skill/loader.py +31 -87
  23. klaude_code/skill/manager.py +38 -0
  24. klaude_code/tui/command/__init__.py +6 -3
  25. klaude_code/tui/command/clear_cmd.py +1 -1
  26. klaude_code/tui/command/command_abc.py +1 -2
  27. klaude_code/tui/command/copy_cmd.py +52 -0
  28. klaude_code/tui/command/fork_session_cmd.py +4 -4
  29. klaude_code/tui/command/refresh_cmd.py +1 -2
  30. klaude_code/tui/command/resume_cmd.py +3 -4
  31. klaude_code/tui/command/status_cmd.py +1 -1
  32. klaude_code/tui/components/developer.py +11 -11
  33. klaude_code/tui/components/metadata.py +1 -1
  34. klaude_code/tui/components/rich/theme.py +2 -2
  35. klaude_code/tui/components/tools.py +4 -8
  36. klaude_code/tui/components/user_input.py +9 -21
  37. klaude_code/tui/machine.py +3 -1
  38. klaude_code/tui/renderer.py +1 -1
  39. klaude_code/tui/runner.py +2 -2
  40. klaude_code/tui/terminal/selector.py +3 -15
  41. klaude_code/ui/__init__.py +0 -24
  42. klaude_code/ui/common.py +3 -2
  43. klaude_code/ui/core/display.py +2 -2
  44. {klaude_code-2.1.0.dist-info → klaude_code-2.2.0.dist-info}/METADATA +16 -81
  45. {klaude_code-2.1.0.dist-info → klaude_code-2.2.0.dist-info}/RECORD +47 -50
  46. klaude_code/core/tool/skill/__init__.py +0 -0
  47. klaude_code/core/tool/skill/skill_tool.md +0 -24
  48. klaude_code/core/tool/skill/skill_tool.py +0 -89
  49. klaude_code/tui/command/prompt-commit.md +0 -82
  50. klaude_code/ui/exec_mode.py +0 -60
  51. {klaude_code-2.1.0.dist-info → klaude_code-2.2.0.dist-info}/WHEEL +0 -0
  52. {klaude_code-2.1.0.dist-info → klaude_code-2.2.0.dist-info}/entry_points.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  klaude_code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- klaude_code/app/__init__.py,sha256=jPBkkpBxn39B-FQ0cdxsIVo-CxWVln07kMAfqKa5NyY,290
3
- klaude_code/app/runtime.py,sha256=LodN29ue96bIfcaZFRom38YfcamTHJmb3be7-oEDTqo,7264
2
+ klaude_code/app/__init__.py,sha256=7mgWpN9SFDqe8AW44bBn9M19nVsBcZURrsGB_8l2hrU,264
3
+ klaude_code/app/runtime.py,sha256=cibsTZsdSbITirv1waHUPNoFr-XGu_5lLutHWktyx8E,6746
4
4
  klaude_code/auth/__init__.py,sha256=jLUgi4V4m0t2BlVuuni7iANOErpJgAeEqByuD1sKUvQ,480
5
5
  klaude_code/auth/base.py,sha256=ccH2sC0TWB5lPpGm4FSjCgnehwn9riYiXxHCh2iFJe0,3011
6
6
  klaude_code/auth/claude/__init__.py,sha256=h1oyqEttDM5TAF6w1Stk6YXYMsbATjODCsi6GhU4zAA,218
@@ -18,24 +18,24 @@ klaude_code/cli/config_cmd.py,sha256=ZDNt1qtXbiWtFJBIaqtfqKrGHXQ1X-NHBeu1k1DoO1o
18
18
  klaude_code/cli/cost_cmd.py,sha256=6bL22amGEB2gfCV9KXQfN5cZYyPL6J6JVIjV65_QjJo,12471
19
19
  klaude_code/cli/debug.py,sha256=vEHOjObhrIHDAXk3q6cOgeW2NZxCx5AWM1rJ6FiJnVU,1901
20
20
  klaude_code/cli/list_model.py,sha256=IXYsrkwbvPF89jNDpbppIlyA7b_oNt0--TNN2LPGwAA,12811
21
- klaude_code/cli/main.py,sha256=JaNiQIa2k4XZXNCXnOXNfOwdwwZmnCTHlK1_oZL5lU8,11924
21
+ klaude_code/cli/main.py,sha256=SzBHYpPj0WO-yv6t9n7gx-sqU6Extp5c7rgaqpMzC2w,7873
22
22
  klaude_code/cli/self_update.py,sha256=mn1B7Xn1keQkbwoDURzsM2fFjorzJTNLlV-Y_NYa6fA,2708
23
23
  klaude_code/cli/session_cmd.py,sha256=IyuSkqHOLldcm8qraJWJZEme9TY5Rfqmld9NmVJuHnc,3198
24
24
  klaude_code/config/__init__.py,sha256=Qe1BeMekBfO2-Zd30x33lB70hdM1QQZGrp4DbWSQ-II,353
25
25
  klaude_code/config/assets/__init__.py,sha256=uMUfmXT3I-gYiI-HVr1DrE60mx5cY1o8V7SYuGqOmvY,32
26
- klaude_code/config/assets/builtin_config.yaml,sha256=fXCvNZci7g7T6uUjDFq_lxTYAvszffsrpBeC41RZkb4,8214
26
+ klaude_code/config/assets/builtin_config.yaml,sha256=wxzA5coCP0hYK7M4x6Z0BOj1ui5qYuT0qOFjtubSKDo,8477
27
27
  klaude_code/config/builtin_config.py,sha256=1rHcFWmS0k6rXeIqR6sF_OgGXSbEd4ugh9bh2N6VSS0,1494
28
28
  klaude_code/config/config.py,sha256=aDMEIcjiNk-DdtybnOHPFViUgwdXp4xb-5osAMBjTzs,18209
29
29
  klaude_code/config/select_model.py,sha256=TZLs195a3fsu5JeXfoZAgz-UlRqVgJG6cwH69ovHOsM,5181
30
30
  klaude_code/config/thinking.py,sha256=1FFN9UgPVEFyTzahTvNOM5Y4b8Bo7G1jIc93xjX3Uvk,9323
31
- klaude_code/const.py,sha256=MF9Ispv28MNqmm51xXcbRcmvw8lEKHuiczBhqmaZku4,10905
31
+ klaude_code/const.py,sha256=FmTyqqfcJN3CbrUHG-8FJNTP-Xu2C_5TDWhm-bLCDpE,10907
32
32
  klaude_code/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
33
  klaude_code/core/agent.py,sha256=_jfe3WLE8T2twYaMpgjrFM7pwzMerirsq7YTLqpoufM,3560
34
- klaude_code/core/agent_profile.py,sha256=cZmyNypFBAz9xNKZt0IevPEoK8aZARqVdSUTnSuIrtQ,9453
34
+ klaude_code/core/agent_profile.py,sha256=5330DD1kTFp9yzCDjOOPMiCzXWyLuMY6JgsvoeWPMUM,10609
35
35
  klaude_code/core/executor.py,sha256=CQ1HyrEpemNQIFYUhgd6ZIxC-h0UJAjYD7yJR0bbX3Y,31275
36
36
  klaude_code/core/manager/__init__.py,sha256=hdIbpnYj6i18byiWjtJIm5l7NYYDQMvafw8fePVPydc,562
37
37
  klaude_code/core/manager/llm_clients.py,sha256=X2oMFWgJcP0tK8GEtMMDYR3HyR6_H8FuyCqpzWF5x2k,871
38
- klaude_code/core/manager/llm_clients_builder.py,sha256=uvs9ea5XDUaaKh7VgbWS76LXQn4Y590nilbEBpeJSFg,1639
38
+ klaude_code/core/manager/llm_clients_builder.py,sha256=pwo0KeFWq3L4F_aq3L_Wwbu67UZOdJeK0rU-qlPnr-A,1635
39
39
  klaude_code/core/manager/sub_agent_manager.py,sha256=URzvged6ra6eY0jx1yQlvq8WdhBEsMvirWtOPCcsHNM,6991
40
40
  klaude_code/core/prompts/prompt-claude-code.md,sha256=uuWBv6GrG63mdmBedAHT5U9yOpbHSKFYbbS2xBnUzOE,8290
41
41
  klaude_code/core/prompts/prompt-codex-gpt-5-1-codex-max.md,sha256=SW-y8AmR99JL_9j26k9YVAOQuZ18vR12aT5CWHkZDc4,11741
@@ -43,13 +43,14 @@ klaude_code/core/prompts/prompt-codex-gpt-5-2-codex.md,sha256=GA1pIIF6JuAl4P3FIW
43
43
  klaude_code/core/prompts/prompt-codex.md,sha256=ybL6CXrGnK6Cw9KuEicQg4kKllIcVa2NwUyuUWitPzk,21672
44
44
  klaude_code/core/prompts/prompt-gemini.md,sha256=JjE1tHSByGKJzjn4Gpj1zekT7ry1Yqbwx5qx3fZy2gE,3901
45
45
  klaude_code/core/prompts/prompt-minimal.md,sha256=6-ZmQQkE3f92W_3V2wS7ocB13wLog1_UojCjZG0K4v8,1559
46
+ klaude_code/core/prompts/prompt-nano-banana.md,sha256=Rk9a1YIoxYxJsIAHIt4Pa5VTVfafX9ckI0kURMVEVgk,30
46
47
  klaude_code/core/prompts/prompt-sub-agent-explore.md,sha256=21kFodjhvN0L-c_ZFo4yVhJOyzfgES-Dty9Vz_Ew9q8,2629
47
48
  klaude_code/core/prompts/prompt-sub-agent-image-gen.md,sha256=tXYKSzFd04OiC0dmVO9suMKeD5f9qo_4NsvqGo7irfI,78
48
49
  klaude_code/core/prompts/prompt-sub-agent-web.md,sha256=n7fcIs26Xnu_CvHda_S_k5LGTpV3njY04yo88FT_S9A,3602
49
50
  klaude_code/core/prompts/prompt-sub-agent.md,sha256=dmmdsOenbAOfqG6FmdR88spOLZkXmntDBs-cmZ9DN_g,897
50
- klaude_code/core/reminders.py,sha256=uGpLSp0alpRd6QmjAjD6xTmnProhwcruPD-lSQnwhsE,23849
51
+ klaude_code/core/reminders.py,sha256=SOSB1wZMPdCtCwTpvjUW5et-d0JcnUxF7lMg90CZnA4,24384
51
52
  klaude_code/core/task.py,sha256=uBfl2S_9n1wmf0WvzMjLzGws_el-qimYwp3Mgxhdng4,11369
52
- klaude_code/core/tool/__init__.py,sha256=Ccz4k_Uip8AeELtJQqfQAZ01YMI_LaJ-c1GJeFUybxw,1711
53
+ klaude_code/core/tool/__init__.py,sha256=xA2zrHj3TPJ8OIssCsr74oRozJAJj4sdsr2eE5fOj2Q,1654
53
54
  klaude_code/core/tool/context.py,sha256=OFUJtT0SdgzScec0LbSMz6a9yvW5oqkR-hqe4FJWk88,2572
54
55
  klaude_code/core/tool/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
56
  klaude_code/core/tool/file/_utils.py,sha256=OG4BE9WyJqzH8ilVCL3D9yvAcHk-r-L9snd-E8gO_io,967
@@ -67,10 +68,7 @@ klaude_code/core/tool/report_back_tool.py,sha256=SkuRhfLpVwTOSpIj7XwYfGDNBp8YsCU
67
68
  klaude_code/core/tool/shell/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
69
  klaude_code/core/tool/shell/bash_tool.md,sha256=ILKpnRCBTkU2uSDEdZQjNYo1l6hsM4TO-3RD5zWC61c,3935
69
70
  klaude_code/core/tool/shell/bash_tool.py,sha256=LPF-Iqypzfq9IMkumErTSBDgCYYNz8vvZYe7ZobqjYk,14779
70
- klaude_code/core/tool/shell/command_safety.py,sha256=Xlyn8QvjaA_krPNScpcTQwP3byoXxwoX_jc97AWvr6Q,13039
71
- klaude_code/core/tool/skill/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
- klaude_code/core/tool/skill/skill_tool.md,sha256=UfjJK5EGAd3mf7ym5rIrRdPyV3kBTxNnwzOjNnHOBrE,973
73
- klaude_code/core/tool/skill/skill_tool.py,sha256=WKPkVV9SpA4ybdolSEjqzn_7NXYGHsye8e4avqLvgew,3013
71
+ klaude_code/core/tool/shell/command_safety.py,sha256=-x-qs1ctciEvFrBNn2JQq9540lSGacaS5R7e1MmB1y4,6457
74
72
  klaude_code/core/tool/sub_agent_tool.py,sha256=zMcPXdPEU0RC_jJgRmKmHF6TCWOH2MNB15K5rIlVWQQ,4620
75
73
  klaude_code/core/tool/todo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
74
  klaude_code/core/tool/todo/todo_write_tool.md,sha256=BFP9qIkzkakzskHwIOPVtDhehkh0F90A5oosyDuC_BE,1682
@@ -89,10 +87,10 @@ klaude_code/core/tool/web/web_fetch_tool.md,sha256=jIrW-EAmfl50bBevcfioQ3Vrg8kWl
89
87
  klaude_code/core/tool/web/web_fetch_tool.py,sha256=MpAfiRVg4CNvLQlve4jphpX4juN81aR7XWOZi0I5-UQ,10323
90
88
  klaude_code/core/tool/web/web_search_tool.md,sha256=l5gGPx-fXHFel1zLBljm8isy9pwEYXGrq5cFzzw1VBw,1135
91
89
  klaude_code/core/tool/web/web_search_tool.py,sha256=ljkgXxP6L5nJnbYB_IOUtPUN9zA_h5hBD55lhNAja08,4293
92
- klaude_code/core/turn.py,sha256=npPxXjifPMC-1k02lq64j1mQvO-cRXU2iXBJScoXD-M,18274
90
+ klaude_code/core/turn.py,sha256=Xjg8PCcpug3Okl12ciWBO7EiqZxlBYtGuY2gAKV3GFk,18081
93
91
  klaude_code/llm/__init__.py,sha256=b4AsqnrMIs0a5qR_ti6rZcHwFzAReTwOW96EqozEoSo,287
94
92
  klaude_code/llm/anthropic/__init__.py,sha256=PWETvaeNAAX3ue0ww1uRUIxTJG0RpWiutkn7MlwKxBs,67
95
- klaude_code/llm/anthropic/client.py,sha256=NvVd0bQJxi9Pg6uVeBdzM3JnRsWVy4yJdMv8rPYz01k,12211
93
+ klaude_code/llm/anthropic/client.py,sha256=TpL_8UYzr9oum1z_hK4DcMv9v2ha0_gPHjXoHcjX59o,12212
96
94
  klaude_code/llm/anthropic/input.py,sha256=0DG33g-8qXD5rP43zYsIF7UiZML0IKJxZfr6fcOlfNQ,8365
97
95
  klaude_code/llm/bedrock/__init__.py,sha256=UmXPBXMmigAJ7euIh59iivSeUdrYJwum0RYU7okkkPM,86
98
96
  klaude_code/llm/bedrock/client.py,sha256=n78PIMONAMiRc-l4-mY9qOu0dhUuirmaRpmvuzWdEsk,2400
@@ -102,14 +100,14 @@ klaude_code/llm/client.py,sha256=yZ_ob0BERRjrOc3t_kJioIdMioghXdOYUErH67zME2k,100
102
100
  klaude_code/llm/codex/__init__.py,sha256=8vN2j2ezWB_UVpfqQ8ooStsBeLL5SY4SUMXOXdWiMaI,132
103
101
  klaude_code/llm/codex/client.py,sha256=kLHAmNwyijwzAKsFnC-5NBXboJTVvEqMcQylQLO-P4M,5522
104
102
  klaude_code/llm/google/__init__.py,sha256=tQtf_mh_mC3E4S9XAsnhS2JZXGRnYUsBKF0jpXZTvM0,61
105
- klaude_code/llm/google/client.py,sha256=gc5rd5MVvRCFTrusqvkfq8TTW4HiuR5YYb0VX9bOxrs,13694
103
+ klaude_code/llm/google/client.py,sha256=RTr0GUAwwu5Xra-hm1lgFI3RZg2_U7GcJKU-noK6-Y0,13695
106
104
  klaude_code/llm/google/input.py,sha256=yBeqMk9E5nS-0jl1kEAALwnuqgKZdXApRG2KdAhPQqE,7519
107
105
  klaude_code/llm/image.py,sha256=jt9FBPFhAIo48pauIEJMIhB9WuDt4wwNs9s3LiEsETE,4272
108
106
  klaude_code/llm/input_common.py,sha256=B1QtRJspDXLdbvzykSn-FWjyi1047GeTmQnaAicCCAg,6219
109
107
  klaude_code/llm/openai_compatible/__init__.py,sha256=ACGpnki7k53mMcCl591aw99pm9jZOZk0ghr7atOfNps,81
110
108
  klaude_code/llm/openai_compatible/client.py,sha256=jAcIJc7SPd7IgpFNbp-rBcPFVNcRqgSEar-shf8z1RI,5007
111
109
  klaude_code/llm/openai_compatible/input.py,sha256=dNEBeAYD6Sd_-ONLazphGNFYmXkY5YoHIPKGBLAQMXU,2830
112
- klaude_code/llm/openai_compatible/stream.py,sha256=O3Seb8clC0AiA7trrruEteLqpFRY-eCjQfePG6L-7BA,12985
110
+ klaude_code/llm/openai_compatible/stream.py,sha256=1z3d5rEX-RxNse2aSlqiF_EsUiNTGb4WleNeIF6HXaI,12986
113
111
  klaude_code/llm/openai_compatible/tool_call_accumulator.py,sha256=quajimkUR1uSIPVXYsVNiQSTnOSVt7WuyZ23RyT7lJs,4906
114
112
  klaude_code/llm/openrouter/__init__.py,sha256=_As8lHjwj6vapQhLorZttTpukk5ZiCdhFdGT38_ASPo,69
115
113
  klaude_code/llm/openrouter/client.py,sha256=49kXzl4vsddU5zaTfM8dpTezgwd8LIpVPJ9ACK7Dro0,6017
@@ -117,12 +115,12 @@ klaude_code/llm/openrouter/input.py,sha256=5XSMcoYGLl_xOJJiP3w0E2F6HJFJ7OeLWi7I4
117
115
  klaude_code/llm/openrouter/reasoning.py,sha256=S0s3OAyfFVm5lHYmQqB3ZIUZlbnlV5zB2gNT3ZRbDZs,4335
118
116
  klaude_code/llm/registry.py,sha256=wEf9wvbb9CMvlNDtndKzKY5LN3zqEJYPI2v9kIrqfGI,2235
119
117
  klaude_code/llm/responses/__init__.py,sha256=WsiyvnNiIytaYcaAqNiB8GI-5zcpjjeODPbMlteeFjA,67
120
- klaude_code/llm/responses/client.py,sha256=8kZBxDrW9jRGYPjkExBeBTnpzUUnxyqqITI8bfF-Ris,12580
118
+ klaude_code/llm/responses/client.py,sha256=vb8w749A7xJyRSj6mlVw51rFRgCtpDvhMApJzU07Vjo,12581
121
119
  klaude_code/llm/responses/input.py,sha256=BYZFBh6qa85pQjVrHds9q3A_aMfhSN2GB0e7VX-h8g4,7575
122
120
  klaude_code/llm/usage.py,sha256=Hukt4hKGUb2EnmwGy2-1Ku0oxEI6J7gOU0EsOSBBJAk,5034
123
121
  klaude_code/log.py,sha256=vyCuV18DX0miengbJF9510UsBrWidSln-CM6pVCe0GA,9301
124
122
  klaude_code/protocol/__init__.py,sha256=TTPnuyQ22RypoTGKdoiS7ZEgHzinuaRHUrauzHDh7Xo,246
125
- klaude_code/protocol/commands.py,sha256=4tFt98CD_KvS9C-XEaHLN-S-QFsbDxQb_kGKnPkQlrk,958
123
+ klaude_code/protocol/commands.py,sha256=zW16Vgd_90DKWTLRAmegVVXGpK8fnZKUvTNM2u63cnM,976
126
124
  klaude_code/protocol/events/__init__.py,sha256=2KaHK32Bpo17eHiwVNEHmbdJOtjG3vO0NrbyLxJlkg8,1606
127
125
  klaude_code/protocol/events/base.py,sha256=QfqgksjA2Hj-ClmwKVeJ7QA6Z7YdzjswO1NfAVnPCoI,335
128
126
  klaude_code/protocol/events/chat.py,sha256=FB-fLLii7TN7r0FrvfgrhZT2x4sRsivjKHV8J2b5Bsw,426
@@ -130,9 +128,9 @@ klaude_code/protocol/events/lifecycle.py,sha256=5csZkv3oZIuLzs_7H84v8HgAYwbjIjkZ
130
128
  klaude_code/protocol/events/metadata.py,sha256=oVZ1zanGcTEFkHW8fLEqS2Z1A9e1MMcjLOcNwUUuCBI,285
131
129
  klaude_code/protocol/events/streaming.py,sha256=U1plGQSTeGZa3E4fIxW_fHXJpuv_DSIBrmGh1l4Fm54,708
132
130
  klaude_code/protocol/events/system.py,sha256=0c3x8WwqAo5Y0JmukKbn7FKtgEv-ErqwJb5PGjuHehk,1294
133
- klaude_code/protocol/events/tools.py,sha256=83Cr6Mx-uCxvaZqIMu-oVXN-jTJcZJN8NSPta49RK_g,508
131
+ klaude_code/protocol/events/tools.py,sha256=8ds_8Zj-wQWvHNAvNt1-fSIHeDffw1dsLWI7ByrAqcM,617
134
132
  klaude_code/protocol/llm_param.py,sha256=nyk5bW3AF8KziDawcImwDLiFiv07bu1ci62TslWxUkg,5161
135
- klaude_code/protocol/message.py,sha256=gG9GSr4Tysafe7Rl93LZ-xJnqkfn9rFaUEbAG6_H5gE,6208
133
+ klaude_code/protocol/message.py,sha256=pu-wvInS781y-qSKbl9MqO7k3CtAN7Yu4hUHJCXKjZQ,6210
136
134
  klaude_code/protocol/model.py,sha256=tBwvGlmsI_GPsYrCuk5-QHqC-v0UgBSdm9UjEPOvTiM,10805
137
135
  klaude_code/protocol/op.py,sha256=Us8O5Nuz6Wx03ftrLYiiLceCuzbNZ1ehwW62e_uMEvU,5646
138
136
  klaude_code/protocol/op_handler.py,sha256=NgQWyLZwPqRRH93hMvPH-TCK8YbLeDpnKeNVnlt27_o,1765
@@ -141,12 +139,12 @@ klaude_code/protocol/sub_agent/explore.py,sha256=beDpcPFUds54JLhQyVEpuhVp5xm5hRn
141
139
  klaude_code/protocol/sub_agent/image_gen.py,sha256=e2iRpGnWUHdZw96wC-f-Ik8HXYnvxTqQRqWXhNtUv2E,4812
142
140
  klaude_code/protocol/sub_agent/task.py,sha256=96XHxbySu_zdM2K6WjlkPFGXoVDVrLiK2hew1cmwGS4,4290
143
141
  klaude_code/protocol/sub_agent/web.py,sha256=XZEfY-bKhpw9RZPkrcohLQDMufQITeeweW7ZOHgk2Ao,3200
144
- klaude_code/protocol/tools.py,sha256=OpGCr47ARKaCHcIlljhEN-p-2h4djgbP5jtfTIoKB-A,359
142
+ klaude_code/protocol/tools.py,sha256=T0mzW9EhidVMNkwH-KTeB5FgwMvXBnV_MYE5ytrU1TM,343
145
143
  klaude_code/session/__init__.py,sha256=4sw81uQvEd3YUOOjamKk1KqGmxeb4Ic9T1Tee5zztyU,241
146
144
  klaude_code/session/codec.py,sha256=fTtaS20H5G6M7k7vufg55c88ZGAblhFk9xGAm3CvWT0,2007
147
145
  klaude_code/session/export.py,sha256=Oa0BdrqipFGkGp62dAsvQ-bPQr0HFAQBpAb7OmgaNno,38926
148
146
  klaude_code/session/selector.py,sha256=snBpnz9UQCe_0K8HttSGCJECCE4YEzpWs_Fdmk2P9nI,2195
149
- klaude_code/session/session.py,sha256=q1jRkf-Vp0eoUP4vQEY0y-mXeaUHfQLawSv2TUKTDUU,22838
147
+ klaude_code/session/session.py,sha256=IUYPe8gd7ipiZPQKINXSXjelysLQIFLfLftPoAJsLN0,22719
150
148
  klaude_code/session/store.py,sha256=HRrmFzwEVdExqDQlT9FBZOhlFtQmM9Im9zco8pzvUMY,6455
151
149
  klaude_code/session/templates/export_session.html,sha256=GRSx1dfRKCSNgKqP51Rs6mT6xWo_ntZrep4-ZzlKru8,125862
152
150
  klaude_code/session/templates/mermaid_viewer.html,sha256=Y_wEWFm4mKWpfAz3YMis5DdLEkhw_2d8CpU6jbvGZow,27842
@@ -156,28 +154,28 @@ klaude_code/skill/assets/deslop/SKILL.md,sha256=XMBER6gOyYnZof_u7l30CZSzmDcINe8X
156
154
  klaude_code/skill/assets/handoff/SKILL.md,sha256=GDHrEqWUeAQy7gGhha_y5jzjpv8C-xhk0hqMH5h59v8,1712
157
155
  klaude_code/skill/assets/jj-workspace/SKILL.md,sha256=toxoyrBBoGl9Yv4PYrw_gD071LLZ2RoepUR8qTDRn1M,977
158
156
  klaude_code/skill/assets/skill-creator/SKILL.md,sha256=0ByoWb9ao0UKSoM5Tmz-Qe5CAPliTrVpUK0gPd9TFqo,5520
159
- klaude_code/skill/loader.py,sha256=7Wvz9FA-vUdwDMlyx3kcapsydKaUd5CLIW17EluzRCE,10532
160
- klaude_code/skill/manager.py,sha256=XRSGgGpNJo2Q9pHKpWo-VyMqf_y-dEt9JGtDoC3Eq-U,2088
157
+ klaude_code/skill/loader.py,sha256=dq-92iX4RWUZd8sFO3KZySOVf5-M6xev29tJlaC0Ivw,8612
158
+ klaude_code/skill/manager.py,sha256=qPUaZmbKO6f6kF-a948spinRQTCHB4ek7k9TV3elaTE,3448
161
159
  klaude_code/skill/system_skills.py,sha256=ryGN07t0Xv2Yn_Prfq072tdIN0Dp4ZpdXLTl7O7rCkg,6122
162
160
  klaude_code/tui/__init__.py,sha256=Q8-0D-uesw3oFwHcFLD5UaWlTFbrj8qV7dSn6C6_g_o,274
163
- klaude_code/tui/command/__init__.py,sha256=IK2jz2SFMLVIcVzD5evKk3zWv6u1CjgCgfJXzWdvDlk,3470
164
- klaude_code/tui/command/clear_cmd.py,sha256=BDJI3_6x76WeF9ZBLe4ShDybpV4RTvyjyWH7ZsHvp_Y,782
165
- klaude_code/tui/command/command_abc.py,sha256=d1i4QbFqWC5V4LPmofMHTxGrxNLwOWe-z_bUKoAmRiQ,2540
161
+ klaude_code/tui/command/__init__.py,sha256=VnwqxKyIMNRhZhYxvVwQrAofecnQCQTe_U5DOt-koWo,3571
162
+ klaude_code/tui/command/clear_cmd.py,sha256=Z3fk7KskzmxdLTcHcJwNkk6C8cKszDQ9FjuHBSAIpHQ,771
163
+ klaude_code/tui/command/command_abc.py,sha256=CcF3P5jXIecANWovwloDp3YbIp8So5X_6AFFrc6KObc,2497
164
+ klaude_code/tui/command/copy_cmd.py,sha256=hx47q08W5aVbbIzA_-EaB3pTn86gIYWlx9jOQsj3aVg,1879
166
165
  klaude_code/tui/command/debug_cmd.py,sha256=KkVsspq3o_b4fB2u9Qms-LJQYVI7ZGn6uvSkp3pZZgE,2744
167
166
  klaude_code/tui/command/export_cmd.py,sha256=KdFlOMJ6gruKYnd_24eWJJb21t9gLVwI1FnN1s08m5U,1609
168
167
  klaude_code/tui/command/export_online_cmd.py,sha256=26cPEh6lJW8hwUV1i4q3Be3AThzbPHJI9FuvTfhtJFU,6163
169
- klaude_code/tui/command/fork_session_cmd.py,sha256=Hu5Gcdfw_rxx5RjfqaGht7fr55pydM_vUlwRMseJpe4,10216
168
+ klaude_code/tui/command/fork_session_cmd.py,sha256=S64v9P7GXrHQaFb4mVqqy4hRfHDH5-2cPLSFP_i1LX8,10084
170
169
  klaude_code/tui/command/help_cmd.py,sha256=nvQ9m6hPcJpwKPx6H7XH4o_C41u6uOYuZiBF0ZsO8uw,1678
171
170
  klaude_code/tui/command/model_cmd.py,sha256=X07psfW-6aan9nxgqRoRVQ_dvZdhTY9XcU-H-NRbGDg,2950
172
171
  klaude_code/tui/command/model_select.py,sha256=gmttq2I-KDDyU-mCZd4WnqkVkMMpsBP7-fOo0ONjxZ8,3189
173
- klaude_code/tui/command/prompt-commit.md,sha256=6hv1lrf8SkwNp1ptw0wn8uNydg5uxgna88eUo6Uqr3w,2400
174
172
  klaude_code/tui/command/prompt-init.md,sha256=a4_FQ3gKizqs2vl9oEY5jtG6HNhv3f-1b5RSCFq0A18,1873
175
173
  klaude_code/tui/command/prompt_command.py,sha256=PGGoH_ZgA-0kTtpjk19rDSsWjiZyAEoUlxnSp8B8GRQ,2764
176
- klaude_code/tui/command/refresh_cmd.py,sha256=yLL9YufaucMUtzDAHqZKpiP5DR-uNLIC_rxZBhzgqC0,1327
174
+ klaude_code/tui/command/refresh_cmd.py,sha256=qGFyzGrlUO2MpdVqKr14JEmyVL_q0C5mFh0H53AUR0E,1282
177
175
  klaude_code/tui/command/registry.py,sha256=LdVGBTK64XqGtCj2eUqU2rNdX4tbiWvmTv25HuQPnBU,7253
178
176
  klaude_code/tui/command/release_notes_cmd.py,sha256=SOjDURB3ML4u7zeR1QVB7oFVQna-S05h3LJrcBXG3J8,2686
179
- klaude_code/tui/command/resume_cmd.py,sha256=w1-UAM95CIPonfH39XU-EVM5f7B-AW1jTCA7VFkPigs,4244
180
- klaude_code/tui/command/status_cmd.py,sha256=WjV4CssyMCj9_CzMdlYwMWRFSK6nkDRRnApuEZdcgQc,5417
177
+ klaude_code/tui/command/resume_cmd.py,sha256=hARQaE6R0bH8gAAFoCEpbgr_3bCOHCwmgNHVra30jRY,4133
178
+ klaude_code/tui/command/status_cmd.py,sha256=laqho0wP6G2OioEMQrF87RFcp2pEveCdmqxar9peHpY,5384
181
179
  klaude_code/tui/command/terminal_setup_cmd.py,sha256=C2kXelp8DZsMYZ08Gun-kgvtr07HIclcCNfwQtXgY18,10910
182
180
  klaude_code/tui/command/thinking_cmd.py,sha256=Lf4SgLi7-mtr6sIJDqOz9Zzeue_cHwWzCCl0NLE_bpY,3072
183
181
  klaude_code/tui/commands.py,sha256=jIQHE9Nk7bIxbNJ2cgnUgGbitRA1O8HSSceXfqjyLMk,3261
@@ -185,11 +183,11 @@ klaude_code/tui/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJ
185
183
  klaude_code/tui/components/assistant.py,sha256=3VUIGf_BJhmoWZ5bHw-QUTMElUxp-MZQKUMWNimHKLE,904
186
184
  klaude_code/tui/components/bash_syntax.py,sha256=zNvge6qvz9ujjMh2nUs2CNKIxSpXLJ5cgOLuvOmEGqY,7420
187
185
  klaude_code/tui/components/common.py,sha256=RzOiIqVPWCzjX8VMMJSkvP0F-l91g9lMTb_smNpEdDE,4648
188
- klaude_code/tui/components/developer.py,sha256=WM9VXukiEMZrGv7rsr-OIFS2SxOj5vx6kxzHJoeoBA8,10035
186
+ klaude_code/tui/components/developer.py,sha256=ufdTpB4vPOzwYaHdwM3s3LXjl2DQGf-5rmgYiFvB7UY,10093
189
187
  klaude_code/tui/components/diffs.py,sha256=JUokkkJeTIoKD0b-c-chMzIDmMjivBQqH8DYXIA3hHs,10411
190
188
  klaude_code/tui/components/errors.py,sha256=_9ojf-23ThR-BoMwNEYG68rzILwA_O59muGvofYL10w,669
191
189
  klaude_code/tui/components/mermaid_viewer.py,sha256=MstufMnTauMKzI8cKngXpFqVo-qya20P8ReNkplYtEw,3098
192
- klaude_code/tui/components/metadata.py,sha256=tVeD2WunfLwUKP11OuLo0d0N3aEjk0J5BDJsq1f-ACQ,9397
190
+ klaude_code/tui/components/metadata.py,sha256=dutITAWKrScQN-8ij4w70m8ZlEn11kD9ZRFjHTXyOsg,9392
193
191
  klaude_code/tui/components/rich/__init__.py,sha256=zEZjnHR3Fnv_sFMxwIMjoJfwDoC4GRGv3lHJzAGRq_o,236
194
192
  klaude_code/tui/components/rich/cjk_wrap.py,sha256=ncmifgTwF6q95iayHQyazGbntt7BRQb_Ed7aXc8JU6Y,7551
195
193
  klaude_code/tui/components/rich/code_panel.py,sha256=ZKuJHh-kh-hIkBXSGLERLaDbJ7I9hvtvmYKocJn39_w,4744
@@ -198,38 +196,37 @@ klaude_code/tui/components/rich/markdown.py,sha256=wgTRzDJTcI2u5vr_WbAnoBjQHcSe4
198
196
  klaude_code/tui/components/rich/quote.py,sha256=gTLwxSPQd9nlp73P1ysQIEgOb-BoTE2gzyiPBLMiHcY,3834
199
197
  klaude_code/tui/components/rich/searchable_text.py,sha256=PUe6MotKxSBY4FlPeojVjVQgxCsx_jiQ41bCzLp8WvE,2271
200
198
  klaude_code/tui/components/rich/status.py,sha256=Dy5GgEJzYNrWNh7QG5PQCfTGS99CllDOdWVqvbCafYE,13320
201
- klaude_code/tui/components/rich/theme.py,sha256=CgLqUdITLwpqcrD0vypk1PWTBOXfLBbn0_ELyJPg4Lk,15048
199
+ klaude_code/tui/components/rich/theme.py,sha256=045b8bFlnRCBqo5ceUtGdj_C08aVsJqWyqvULM80Xm0,15032
202
200
  klaude_code/tui/components/sub_agent.py,sha256=FojxwNnBTwYSSBMG4DmC2IJfr-bLTJiDcViKoL1d0uQ,6955
203
201
  klaude_code/tui/components/thinking.py,sha256=AXC7Xpyiu7ST-eWGLRGY7N8Dak2ny3lV3mvznmfqKmM,2890
204
- klaude_code/tui/components/tools.py,sha256=q0DhWl9oUG9tJGuJ1E7uI4ADkQytv9A-991bvDaGtvo,26422
205
- klaude_code/tui/components/user_input.py,sha256=9tLeRSWdwXmLm0Fe6DUlV4KHKpN6eUP4nhQ7ywddz8o,3959
202
+ klaude_code/tui/components/tools.py,sha256=xqrWBDPsVtOeyE-qF_Idzr1Dhf5bjgrvl-v6svv-H3Q,26230
203
+ klaude_code/tui/components/user_input.py,sha256=6VHH77xwUUW0rW7yv8hOwGXsmK52HEsBg9-QZVbOm1A,3427
206
204
  klaude_code/tui/display.py,sha256=ovM1F8GDG0gTQjOV2KaXnjE9HFHf7AtThqSIXkP6JQY,3073
207
205
  klaude_code/tui/input/__init__.py,sha256=cAB38ypo7dHo_jgXUCnoBTUKHtiriVaKCv4YepSU9SU,276
208
206
  klaude_code/tui/input/clipboard.py,sha256=HjThFB9MG_YdJ76CQv7B-IUoz5JarbWUZDbUVkH1LpY,5106
209
207
  klaude_code/tui/input/completers.py,sha256=lkDBjnqYPLMgR6AZHhx2bfT_vMW-fbV6aqY9SqRwq74,32571
210
208
  klaude_code/tui/input/key_bindings.py,sha256=2uN48J1HRHeCBqq7WrH5J82NIU59oQscce0HquAiYCI,18876
211
209
  klaude_code/tui/input/prompt_toolkit.py,sha256=_joijghnXG0-vu8D-Om4eU_jprLiTpyabfNH6aqaqpA,27224
212
- klaude_code/tui/machine.py,sha256=tulfZITfdCtW7ca3gccCKO2Oi7GBg_CCS-1rvNF-VWw,23239
213
- klaude_code/tui/renderer.py,sha256=p8Pf1DwBW6uvTYmNgezoTh1RzWpOcinjHa9acgSt21M,29485
214
- klaude_code/tui/runner.py,sha256=SGwKIo3EH6vA1Qlfb0KtFaNid2lyGL_4Jb2gjVa1MZs,11560
210
+ klaude_code/tui/machine.py,sha256=1aA2iYjCjF6VQ1x62wWtiY4Jqzn2R8-hkDOb2vNw6e8,23355
211
+ klaude_code/tui/renderer.py,sha256=JzKzYrKjG8HYsJV5Akq7DWtgY8bCebGq3GRrVfcXeBw,29476
212
+ klaude_code/tui/runner.py,sha256=crdwlPcqSrqG0HNsuzd6yfrFHMTZa4GNAeQzjq788eA,11542
215
213
  klaude_code/tui/terminal/__init__.py,sha256=GIMnsEcIAGT_vBHvTlWEdyNmAEpruyscUA6M_j3GQZU,1412
216
214
  klaude_code/tui/terminal/color.py,sha256=6SJR2RA8cqJINNoRz65w0HL3x9g46ydIvDOGWMeNnQU,7195
217
215
  klaude_code/tui/terminal/control.py,sha256=m2fL6uHum5Li25X2IPnI4z_oVzMpVYcSldB-r0NLLzk,4920
218
216
  klaude_code/tui/terminal/image.py,sha256=ytzmw1J3fmaq49nWTDRmK_7aMIGbdUPCtVccSpVRHxY,1195
219
217
  klaude_code/tui/terminal/notifier.py,sha256=-aTtgRvpzQcfbkOfbeDOfUs3l9smNBZX-60G9f0326Y,4643
220
218
  klaude_code/tui/terminal/progress_bar.py,sha256=Go-0_ZodrmJVaQodaPnyxVU2nkpkBaYLnZBqwAUQukE,2133
221
- klaude_code/tui/terminal/selector.py,sha256=QPddET-LfSU4we7NLHk17CqTWPKd6CQ0kj1Ire_WM3Q,24398
222
- klaude_code/ui/__init__.py,sha256=BRd15myEsdOPC9FyDeOuM0ahzQA_-6YYkt_eNhc-whc,1173
223
- klaude_code/ui/common.py,sha256=FA1koSH8egLBT2Pb_D065gfK7u6-wTuGA9_WRembX3s,4249
219
+ klaude_code/tui/terminal/selector.py,sha256=BbjgqLProZXklziHJSSkWz4pss5Tbli1TrbVmpZLBxs,23930
220
+ klaude_code/ui/__init__.py,sha256=3k9Sbesq0nNN3jcSMDqJ4zUcys4PKzGg4Xsum-6dZis,451
221
+ klaude_code/ui/common.py,sha256=_KmCNM-U8VowObYkfq8e9cyuvN1dF85P56hG8tGYlts,4309
224
222
  klaude_code/ui/core/__init__.py,sha256=2NakrTDcxem5D0atyEY_Rxv1BbKCeZweF63L6AAq6r8,23
225
- klaude_code/ui/core/display.py,sha256=ACfsJEjamAkhVesQ7Vm3PyuLXkowuQ5PCE93utiiPRM,3582
223
+ klaude_code/ui/core/display.py,sha256=wk3_4-SE93BpxJOrx9MzEouMc4wTsYo7bBj9eeJO-ik,3569
226
224
  klaude_code/ui/core/input.py,sha256=8wXszl2Es6BbpqUjXMZka-7zc1d0kuySCxJUiDGHTaY,2593
227
225
  klaude_code/ui/debug_mode.py,sha256=ZvqbOx4c_rUerMbEZzOfcbNf9leqEDFjqJUlALtzF9Y,1111
228
- klaude_code/ui/exec_mode.py,sha256=8-eGJeoJo1ke9Atpeu4JErh4A0GcrHYvALktfnqQygE,1765
229
226
  klaude_code/ui/terminal/__init__.py,sha256=5OeAzr994r8-peWsLON0iXsAvJ2pexwMp36JY7FKGDc,179
230
227
  klaude_code/ui/terminal/title.py,sha256=EZpLXTMhunsZPVGaxP317lH0Ad2oOh7OsjbV3yRD5is,1115
231
228
  klaude_code/update.py,sha256=QER816AZe9u3RhRvP0Z37Jh2Ch5RLy9PREyDsI0e1dA,4480
232
- klaude_code-2.1.0.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
233
- klaude_code-2.1.0.dist-info/entry_points.txt,sha256=kkXIXedaTOtjXPr2rVjRVVXZYlFUcBHELaqmyVlWUFA,92
234
- klaude_code-2.1.0.dist-info/METADATA,sha256=yloJPlkUsbNzvwgVBX7z3t8qlJe9h2gz4TsLniEdfJw,12782
235
- klaude_code-2.1.0.dist-info/RECORD,,
229
+ klaude_code-2.2.0.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
230
+ klaude_code-2.2.0.dist-info/entry_points.txt,sha256=kkXIXedaTOtjXPr2rVjRVVXZYlFUcBHELaqmyVlWUFA,92
231
+ klaude_code-2.2.0.dist-info/METADATA,sha256=458xxtAI3saCqeI9ix2BiyizQLzcvoViW_s7TH-zzM8,11498
232
+ klaude_code-2.2.0.dist-info/RECORD,,
File without changes
@@ -1,24 +0,0 @@
1
- Execute a skill within the main conversation
2
-
3
- <skills_instructions>
4
- When users ask you to perform tasks, check if any of the available skills below can help complete the task more effectively. Skills provide specialized capabilities and domain knowledge.
5
-
6
- How to use skills:
7
- - Invoke skills using this tool with the skill name only (no arguments)
8
- - When you invoke a skill, you will see <command-message>The "{name}" skill is loading</command-message>
9
- - The skill's prompt will expand and provide detailed instructions on how to complete the task
10
-
11
- Examples:
12
- - command: "pdf" - invoke the pdf skill
13
- - command: "xlsx" - invoke the xlsx skill
14
- - command: "document-skills:pdf" - invoke using fully qualified name
15
-
16
- Important:
17
- - Only use skills listed in <available_skills> below
18
- - Do not invoke a skill that is already running
19
- - Do not use this tool for built-in CLI commands (like /help, /clear, etc.)
20
- </skills_instructions>
21
-
22
- <available_skills>
23
- $skills_xml
24
- </available_skills>
@@ -1,89 +0,0 @@
1
- """SkillTool - Tool for agent to activate and load skills."""
2
-
3
- from pathlib import Path
4
-
5
- from pydantic import BaseModel
6
-
7
- from klaude_code.core.tool.context import ToolContext
8
- from klaude_code.core.tool.tool_abc import ToolABC, load_desc
9
- from klaude_code.core.tool.tool_registry import register
10
- from klaude_code.protocol import llm_param, message, tools
11
- from klaude_code.skill import get_available_skills, get_skill, list_skill_names
12
-
13
-
14
- @register(tools.SKILL)
15
- class SkillTool(ToolABC):
16
- """Tool to execute/load a skill within the main conversation."""
17
-
18
- @classmethod
19
- def schema(cls) -> llm_param.ToolSchema:
20
- """Generate schema with embedded available skills metadata."""
21
- skills_xml = cls._generate_skills_xml()
22
-
23
- return llm_param.ToolSchema(
24
- name=tools.SKILL,
25
- type="function",
26
- description=load_desc(Path(__file__).parent / "skill_tool.md", {"skills_xml": skills_xml}),
27
- parameters={
28
- "type": "object",
29
- "properties": {
30
- "command": {
31
- "type": "string",
32
- "description": "Name of the skill to execute",
33
- }
34
- },
35
- "required": ["command"],
36
- },
37
- )
38
-
39
- @classmethod
40
- def _generate_skills_xml(cls) -> str:
41
- """Generate XML format skills metadata."""
42
- skills = get_available_skills()
43
- if not skills:
44
- return ""
45
-
46
- xml_parts: list[str] = []
47
- for name, description, location in skills:
48
- xml_parts.append(f"""<skill>
49
- <name>{name}</name>
50
- <description>{description}</description>
51
- <location>{location}</location>
52
- </skill>""")
53
- return "\n".join(xml_parts)
54
-
55
- class SkillArguments(BaseModel):
56
- command: str
57
-
58
- @classmethod
59
- async def call(cls, arguments: str, context: ToolContext) -> message.ToolResultMessage:
60
- del context
61
- """Load and return full skill content."""
62
- try:
63
- args = cls.SkillArguments.model_validate_json(arguments)
64
- except ValueError as e:
65
- return message.ToolResultMessage(
66
- status="error",
67
- output_text=f"Invalid arguments: {e}",
68
- )
69
-
70
- skill = get_skill(args.command)
71
-
72
- if not skill:
73
- available = ", ".join(list_skill_names())
74
- return message.ToolResultMessage(
75
- status="error",
76
- output_text=f"Skill '{args.command}' does not exist. Available skills: {available}",
77
- )
78
-
79
- # Get base directory from skill_path
80
- base_dir = str(skill.skill_path.parent) if skill.skill_path else "unknown"
81
-
82
- # Return with loading message format
83
- result = f"""<command-message>The "{skill.name}" skill is activated</command-message>
84
- <command-name>{skill.name}</command-name>
85
-
86
- Base directory for this skill: {base_dir}
87
-
88
- {skill.to_prompt()}"""
89
- return message.ToolResultMessage(status="success", output_text=result)
@@ -1,82 +0,0 @@
1
- ---
2
- description: Commit current git changes
3
- ---
4
-
5
- ## Workflow
6
-
7
- ### Step 1: Detect version control system
8
-
9
- Check if `jj` is available in the current environment. (check in your <env> tag)
10
-
11
- ### Step 2: Run pre-commit checks
12
-
13
- Before creating a commit, run the following checks:
14
-
15
- 1. Run the project's linter to check and fix code style issues
16
- 2. Run the project's test suite to ensure all tests pass
17
- 3. If either check fails, stop the commit process and report the errors to the user
18
- 4. If both checks pass, proceed to the next step
19
-
20
- ### Step 3A: If jj is available
21
-
22
- 1. Run `jj status` and `jj log -r 'ancestors(@, 10)'` to see working copy changes and the last 10 changes
23
- 2. For each change that has no description (shows as "(no description set)"):
24
- - Run `jj diff -r <change_id> --git` to view the diff
25
- - Read related files if needed to understand the context
26
- - Use `jj describe -r <change_id>` to add a meaningful description
27
-
28
- ### Step 2B: If jj is not available (git)
29
-
30
- 1. Run `git status` to check working directory state
31
- 2. Run `git diff --cached` to check if there are staged changes
32
- 3. If staging area has content:
33
- - Ask the user: "Staging area has changes. Commit only staged changes, or stage and commit all changes?"
34
- - If user chooses staged only: proceed with staged changes
35
- - If user chooses all: run `git add -A` first
36
- 4. If staging area is empty:
37
- - Run `git add -A` to stage all changes
38
- 5. Review the changes with `git diff --cached`
39
- 6. Create the commit
40
-
41
- ## Commit Message Format
42
-
43
- In order to ensure good formatting, ALWAYS pass the commit message via a HEREDOC:
44
-
45
- For jj:
46
- ```bash
47
- jj describe -m "$(cat <<'EOF'
48
- Commit message here.
49
- EOF
50
- )"
51
- ```
52
-
53
- For git:
54
- ```bash
55
- git commit -m "$(cat <<'EOF'
56
- Commit message here.
57
- EOF
58
- )"
59
- ```
60
-
61
- ## Message Style
62
-
63
- Follow the [Conventional Commits](https://www.conventionalcommits.org/) specification:
64
-
65
- ```
66
- <type>(<scope>): <description>
67
- ```
68
-
69
- Types:
70
- - `feat`: New feature
71
- - `fix`: Bug fix
72
- - `docs`: Documentation changes
73
- - `style`: Code style changes (formatting, no logic change)
74
- - `refactor`: Code refactoring (no feature or fix)
75
- - `test`: Adding or updating tests
76
- - `chore`: Build process, dependencies, or tooling changes
77
-
78
- Examples:
79
- - `feat(cli): add --verbose flag for debug output`
80
- - `fix(llm): handle API timeout errors gracefully`
81
- - `docs(readme): update installation instructions`
82
- - `refactor(core): simplify session state management`
@@ -1,60 +0,0 @@
1
- import sys
2
- from typing import override
3
-
4
- from klaude_code.protocol import events
5
- from klaude_code.ui.core.display import DisplayABC
6
-
7
-
8
- class ExecDisplay(DisplayABC):
9
- """A display implementation for exec mode - only handles TaskFinishEvent."""
10
-
11
- @override
12
- async def consume_event(self, event: events.Event) -> None:
13
- """Only handle TaskFinishEvent."""
14
- match event:
15
- case events.TaskStartEvent():
16
- pass
17
- case events.ErrorEvent() as e:
18
- print(f"Error: {e.error_message}")
19
- case events.TaskFinishEvent() as e:
20
- # Print the task result when task finishes
21
- if e.task_result.strip():
22
- print(e.task_result)
23
- case _:
24
- # Ignore all other events
25
- pass
26
-
27
- @override
28
- async def start(self) -> None:
29
- """Do nothing on start."""
30
- pass
31
-
32
- @override
33
- async def stop(self) -> None:
34
- """Do nothing on stop."""
35
- pass
36
-
37
-
38
- class StreamJsonDisplay(DisplayABC):
39
- """A display implementation that streams all events as JSON lines."""
40
-
41
- @override
42
- async def consume_event(self, event: events.Event) -> None:
43
- """Stream each event as a JSON line."""
44
- if isinstance(event, events.EndEvent):
45
- return
46
- event_type = type(event).__name__
47
- json_data = event.model_dump_json()
48
- # Output format: {"type": "EventName", "data": {...}}
49
- print(f'{{"type": "{event_type}", "data": {json_data}}}', flush=True)
50
- sys.stdout.flush()
51
-
52
- @override
53
- async def start(self) -> None:
54
- """Do nothing on start."""
55
- pass
56
-
57
- @override
58
- async def stop(self) -> None:
59
- """Do nothing on stop."""
60
- pass