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.
- klaude_code/app/__init__.py +1 -2
- klaude_code/app/runtime.py +26 -41
- klaude_code/cli/main.py +19 -152
- klaude_code/config/assets/builtin_config.yaml +13 -0
- klaude_code/const.py +1 -1
- klaude_code/core/agent_profile.py +38 -3
- klaude_code/core/manager/llm_clients_builder.py +1 -1
- klaude_code/core/prompts/prompt-nano-banana.md +1 -0
- klaude_code/core/reminders.py +20 -4
- klaude_code/core/tool/__init__.py +0 -2
- klaude_code/core/tool/shell/command_safety.py +4 -189
- klaude_code/core/turn.py +2 -5
- klaude_code/llm/anthropic/client.py +1 -1
- klaude_code/llm/google/client.py +1 -1
- klaude_code/llm/openai_compatible/stream.py +1 -1
- klaude_code/llm/responses/client.py +1 -1
- klaude_code/protocol/commands.py +1 -0
- klaude_code/protocol/events/tools.py +5 -1
- klaude_code/protocol/message.py +2 -2
- klaude_code/protocol/tools.py +0 -1
- klaude_code/session/session.py +0 -2
- klaude_code/skill/loader.py +31 -87
- klaude_code/skill/manager.py +38 -0
- klaude_code/tui/command/__init__.py +6 -3
- klaude_code/tui/command/clear_cmd.py +1 -1
- klaude_code/tui/command/command_abc.py +1 -2
- klaude_code/tui/command/copy_cmd.py +52 -0
- klaude_code/tui/command/fork_session_cmd.py +4 -4
- klaude_code/tui/command/refresh_cmd.py +1 -2
- klaude_code/tui/command/resume_cmd.py +3 -4
- klaude_code/tui/command/status_cmd.py +1 -1
- klaude_code/tui/components/developer.py +11 -11
- klaude_code/tui/components/metadata.py +1 -1
- klaude_code/tui/components/rich/theme.py +2 -2
- klaude_code/tui/components/tools.py +4 -8
- klaude_code/tui/components/user_input.py +9 -21
- klaude_code/tui/machine.py +3 -1
- klaude_code/tui/renderer.py +1 -1
- klaude_code/tui/runner.py +2 -2
- klaude_code/tui/terminal/selector.py +3 -15
- klaude_code/ui/__init__.py +0 -24
- klaude_code/ui/common.py +3 -2
- klaude_code/ui/core/display.py +2 -2
- {klaude_code-2.1.0.dist-info → klaude_code-2.2.0.dist-info}/METADATA +16 -81
- {klaude_code-2.1.0.dist-info → klaude_code-2.2.0.dist-info}/RECORD +47 -50
- klaude_code/core/tool/skill/__init__.py +0 -0
- klaude_code/core/tool/skill/skill_tool.md +0 -24
- klaude_code/core/tool/skill/skill_tool.py +0 -89
- klaude_code/tui/command/prompt-commit.md +0 -82
- klaude_code/ui/exec_mode.py +0 -60
- {klaude_code-2.1.0.dist-info → klaude_code-2.2.0.dist-info}/WHEEL +0 -0
- {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=
|
|
3
|
-
klaude_code/app/runtime.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
160
|
-
klaude_code/skill/manager.py,sha256=
|
|
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=
|
|
164
|
-
klaude_code/tui/command/clear_cmd.py,sha256=
|
|
165
|
-
klaude_code/tui/command/command_abc.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
180
|
-
klaude_code/tui/command/status_cmd.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
205
|
-
klaude_code/tui/components/user_input.py,sha256=
|
|
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=
|
|
213
|
-
klaude_code/tui/renderer.py,sha256=
|
|
214
|
-
klaude_code/tui/runner.py,sha256=
|
|
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=
|
|
222
|
-
klaude_code/ui/__init__.py,sha256=
|
|
223
|
-
klaude_code/ui/common.py,sha256=
|
|
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=
|
|
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.
|
|
233
|
-
klaude_code-2.
|
|
234
|
-
klaude_code-2.
|
|
235
|
-
klaude_code-2.
|
|
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`
|
klaude_code/ui/exec_mode.py
DELETED
|
@@ -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
|
|
File without changes
|
|
File without changes
|