@vibe-forge/client 0.10.0 → 0.11.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 (111) hide show
  1. package/dist/assets/{arc-CCXV7u3V.js → arc-M4HYfcHs.js} +1 -1
  2. package/dist/assets/{blockDiagram-c4efeb88-Bm52FmvT.js → blockDiagram-c4efeb88-CUrDjrxj.js} +1 -1
  3. package/dist/assets/{c4Diagram-c83219d4-C8tTEpcK.js → c4Diagram-c83219d4-BMEtqlFp.js} +1 -1
  4. package/dist/assets/channel-Cj3Cp2OJ.js +1 -0
  5. package/dist/assets/{classDiagram-beda092f-CNAIBAH1.js → classDiagram-beda092f-BOmDJ0Ml.js} +1 -1
  6. package/dist/assets/{classDiagram-v2-2358418a-BHeZAVdc.js → classDiagram-v2-2358418a-BODzX2MB.js} +1 -1
  7. package/dist/assets/clone-B7Q9B1dS.js +1 -0
  8. package/dist/assets/{createText-1719965b-BS2hLG8t.js → createText-1719965b-B9Dd8zcR.js} +1 -1
  9. package/dist/assets/{cssMode-WHcTFAOU.js → cssMode-DLxG92Ot.js} +1 -1
  10. package/dist/assets/{edges-96097737-C07f4iWA.js → edges-96097737-CuZFd43m.js} +1 -1
  11. package/dist/assets/{erDiagram-0228fc6a-BytsAWUs.js → erDiagram-0228fc6a-8g9lu2-Z.js} +1 -1
  12. package/dist/assets/{flowDb-c6c81e3f-CQJkOpAs.js → flowDb-c6c81e3f-BlBS1tdN.js} +1 -1
  13. package/dist/assets/{flowDiagram-50d868cf-CD5Tng2S.js → flowDiagram-50d868cf-u6mWflpF.js} +1 -1
  14. package/dist/assets/flowDiagram-v2-4f6560a1-G3v545eF.js +1 -0
  15. package/dist/assets/{flowchart-elk-definition-6af322e1-ylso-GWH.js → flowchart-elk-definition-6af322e1-BDqI2NFr.js} +1 -1
  16. package/dist/assets/{freemarker2-U_9Jyyr3.js → freemarker2-tVtpTMPu.js} +1 -1
  17. package/dist/assets/{ganttDiagram-a2739b55-Cg98bJx5.js → ganttDiagram-a2739b55-CDQjx9Wu.js} +1 -1
  18. package/dist/assets/{gitGraphDiagram-82fe8481-7Yp4hz0N.js → gitGraphDiagram-82fe8481-DUHFKRVA.js} +1 -1
  19. package/dist/assets/{graph-Ig3nvzvL.js → graph-2HKPi5B_.js} +1 -1
  20. package/dist/assets/{handlebars-DQyCBwHe.js → handlebars-D00tgNd8.js} +1 -1
  21. package/dist/assets/{html-CNC2AT5k.js → html-B-TDzBiR.js} +1 -1
  22. package/dist/assets/{htmlMode-DlATk4xW.js → htmlMode-ClycqSTM.js} +1 -1
  23. package/dist/assets/{index-5325376f-C4zed9sb.js → index-5325376f-DPrJpRQ-.js} +1 -1
  24. package/dist/assets/{index-Dbx0JG0p.js → index-CAHZZEoo.js} +319 -323
  25. package/dist/assets/{index-DRLsOoqb.css → index-Di7lePfb.css} +1 -1
  26. package/dist/assets/{infoDiagram-8eee0895-C8oSBaFs.js → infoDiagram-8eee0895-Co5tS1I5.js} +1 -1
  27. package/dist/assets/{javascript-9wv9uKW4.js → javascript-zbkwarmb.js} +1 -1
  28. package/dist/assets/{journeyDiagram-c64418c1-D5kJldvy.js → journeyDiagram-c64418c1-k_qioHgy.js} +1 -1
  29. package/dist/assets/{jsonMode-45dv39mU.js → jsonMode-C3CSpzBF.js} +1 -1
  30. package/dist/assets/{layout-DYNFLnIl.js → layout-CjOXKxvs.js} +1 -1
  31. package/dist/assets/{line-1gvOYQYZ.js → line-C-XnQrKR.js} +1 -1
  32. package/dist/assets/{linear-DHGm6Zdw.js → linear-C7MMERzS.js} +1 -1
  33. package/dist/assets/{liquid-BGoxrdXO.js → liquid-5G37EU6K.js} +1 -1
  34. package/dist/assets/{lspLanguageFeatures-CpCCXhrd.js → lspLanguageFeatures-zaDMuhCE.js} +1 -1
  35. package/dist/assets/{mdx-Dc2iMbEw.js → mdx-Bc-LY0gi.js} +1 -1
  36. package/dist/assets/{mermaid.core-Cq2bBFF1.js → mermaid.core-CechbHof.js} +4 -4
  37. package/dist/assets/{mindmap-definition-8da855dc-y5l6GRVh.js → mindmap-definition-8da855dc-ejftCDGb.js} +1 -1
  38. package/dist/assets/{pieDiagram-a8764435-PNROcv9y.js → pieDiagram-a8764435-DY__X3Qj.js} +1 -1
  39. package/dist/assets/{python-DjYAge7h.js → python-vK2Ff2J5.js} +1 -1
  40. package/dist/assets/{quadrantDiagram-1e28029f-CFJ3VPpp.js → quadrantDiagram-1e28029f-azIZCv_2.js} +1 -1
  41. package/dist/assets/{razor-OIY8fx_i.js → razor-BipjBJKu.js} +1 -1
  42. package/dist/assets/{requirementDiagram-08caed73-BpzDIINS.js → requirementDiagram-08caed73-C4EB0Xs2.js} +1 -1
  43. package/dist/assets/{sankeyDiagram-a04cb91d-CH69-iIn.js → sankeyDiagram-a04cb91d-PNhR6YWu.js} +1 -1
  44. package/dist/assets/{sequenceDiagram-c5b8d532-yBBEeVFU.js → sequenceDiagram-c5b8d532-4c-qV-Ri.js} +1 -1
  45. package/dist/assets/{stateDiagram-1ecb1508-BvF4sign.js → stateDiagram-1ecb1508-CnURumPE.js} +1 -1
  46. package/dist/assets/{stateDiagram-v2-c2b004d7-BeyT7Ghx.js → stateDiagram-v2-c2b004d7-DR2qHTPg.js} +1 -1
  47. package/dist/assets/{styles-b4e223ce-C58zxmK6.js → styles-b4e223ce-B2PWXT_i.js} +1 -1
  48. package/dist/assets/{styles-ca3715f6-DCE5sFi5.js → styles-ca3715f6-DEhgVF5H.js} +1 -1
  49. package/dist/assets/{styles-d45a18b0-CG-C1aM8.js → styles-d45a18b0-DyzccA5F.js} +1 -1
  50. package/dist/assets/{svgDrawCommon-b86b1483-F-K8GeDd.js → svgDrawCommon-b86b1483-C_1tMhxp.js} +1 -1
  51. package/dist/assets/{timeline-definition-faaaa080-DPv4uqVX.js → timeline-definition-faaaa080-FdaC0dQH.js} +1 -1
  52. package/dist/assets/{tsMode-BtU8ZELV.js → tsMode-CrMC5T3_.js} +1 -1
  53. package/dist/assets/{typescript-CJHgISWo.js → typescript-CRfPu8v7.js} +1 -1
  54. package/dist/assets/{xml-C_TJw4Bi.js → xml-jlRvQfFI.js} +1 -1
  55. package/dist/assets/{xychartDiagram-f5964ef8-BmXlhBzX.js → xychartDiagram-f5964ef8-sxjv75h9.js} +1 -1
  56. package/dist/assets/{yaml-BujeJOJ6.js → yaml-B47_IHOH.js} +1 -1
  57. package/dist/index.html +2 -2
  58. package/package.json +10 -10
  59. package/src/components/chat/ChatHistoryView.tsx +92 -14
  60. package/src/components/chat/messages/MessageItem.scss +10 -0
  61. package/src/components/chat/messages/MessageItem.tsx +5 -1
  62. package/src/components/chat/messages/MessageStatusNotice.scss +163 -0
  63. package/src/components/chat/messages/MessageStatusNotice.tsx +48 -0
  64. package/src/components/chat/messages/build-chat-history-status-notices.ts +138 -0
  65. package/src/components/chat/sender/@components/sender-body/SenderBody.tsx +0 -24
  66. package/src/components/chat/sender/@core/build-sender-controller-result.ts +0 -6
  67. package/src/components/chat/sender/@hooks/use-sender-controller.ts +0 -2
  68. package/src/components/chat/sender/@types/sender-props.ts +0 -3
  69. package/src/components/chat/sender/Sender.scss +0 -58
  70. package/src/components/chat/sender/Sender.tsx +0 -2
  71. package/src/components/chat/tools/DefaultTool.tsx +74 -207
  72. package/src/components/chat/tools/adapter-claude/ClaudeEditDiff.tsx +30 -0
  73. package/src/components/chat/tools/adapter-claude/GenericClaudeTool.scss +128 -0
  74. package/src/components/chat/tools/adapter-claude/GenericClaudeTool.tsx +133 -0
  75. package/src/components/chat/tools/adapter-claude/claude-tool-edit-builders.ts +102 -0
  76. package/src/components/chat/tools/adapter-claude/claude-tool-field-sections.tsx +168 -0
  77. package/src/components/chat/tools/adapter-claude/claude-tool-operation-builders.ts +135 -0
  78. package/src/components/chat/tools/adapter-claude/claude-tool-presentation.ts +61 -0
  79. package/src/components/chat/tools/adapter-claude/claude-tool-shared.ts +185 -0
  80. package/src/components/chat/tools/adapter-claude/claude-tool-summary.ts +76 -0
  81. package/src/components/chat/tools/adapter-claude/claude-tool-system-builders.ts +125 -0
  82. package/src/components/chat/tools/adapter-claude/claude-tool-task-builders.ts +148 -0
  83. package/src/components/chat/tools/adapter-claude/index.ts +24 -15
  84. package/src/components/chat/tools/core/ToolCallBox.scss +344 -36
  85. package/src/components/chat/tools/core/ToolCallBox.tsx +35 -13
  86. package/src/components/chat/tools/core/ToolDiffViewer.scss +138 -0
  87. package/src/components/chat/tools/core/ToolDiffViewer.tsx +180 -0
  88. package/src/components/chat/tools/core/ToolGroup.scss +52 -74
  89. package/src/components/chat/tools/core/ToolGroup.tsx +20 -26
  90. package/src/components/chat/tools/core/ToolRenderer.tsx +3 -3
  91. package/src/components/chat/tools/core/ToolResultContent.tsx +66 -0
  92. package/src/components/chat/tools/core/ToolSummaryHeader.tsx +67 -0
  93. package/src/components/chat/tools/core/tool-content-presence.ts +57 -0
  94. package/src/components/chat/tools/core/tool-display.ts +192 -0
  95. package/src/components/chat/tools/core/tool-result-content-utils.ts +171 -0
  96. package/src/components/chat/tools/core/tool-summary.ts +194 -0
  97. package/src/components/chat/tools/plugin-chrome-devtools/ChromeDevtoolsTool.tsx +66 -53
  98. package/src/components/chat/tools/task/GetTaskInfoTool.tsx +26 -9
  99. package/src/components/chat/tools/task/ListTasksTool.tsx +22 -9
  100. package/src/components/chat/tools/task/StartTasksTool.tsx +22 -9
  101. package/src/hooks/chat/interaction-state.ts +29 -9
  102. package/src/hooks/chat/use-chat-scroll.ts +2 -2
  103. package/src/hooks/chat/use-chat-session-messages.ts +24 -18
  104. package/src/hooks/chat/use-chat-session.ts +2 -2
  105. package/src/resources/locales/en.json +81 -0
  106. package/src/resources/locales/zh.json +81 -0
  107. package/src/routes/ChatRoute.tsx +40 -15
  108. package/src/utils/strip-ansi.ts +26 -0
  109. package/dist/assets/channel-gq_WMRvv.js +0 -1
  110. package/dist/assets/clone-XxGY7A5N.js +0 -1
  111. package/dist/assets/flowDiagram-v2-4f6560a1-DIBOANLV.js +0 -1
@@ -0,0 +1,125 @@
1
+ import { asBoolean, asString, asStringArray, pushField, toQuestionList } from './claude-tool-shared'
2
+ import type { ClaudeToolField } from './claude-tool-shared'
3
+
4
+ interface BuilderParams {
5
+ baseName: string
6
+ record: Record<string, unknown> | null
7
+ fields: ClaudeToolField[]
8
+ usedKeys: Set<string>
9
+ }
10
+
11
+ export function buildClaudeSystemToolPresentation(params: BuilderParams) {
12
+ const { baseName, record, fields, usedKeys } = params
13
+
14
+ if (baseName === 'WebFetch') {
15
+ pushField(fields, usedKeys, 'prompt', {
16
+ labelKey: 'chat.tools.fields.prompt',
17
+ fallbackLabel: 'Prompt',
18
+ format: 'text',
19
+ value: asString(record?.prompt)
20
+ })
21
+ usedKeys.add('url')
22
+ return { handled: true, primary: asString(record?.url) }
23
+ }
24
+
25
+ if (baseName === 'WebSearch') {
26
+ pushField(fields, usedKeys, 'allowed_domains', {
27
+ labelKey: 'chat.tools.fields.allowedDomains',
28
+ fallbackLabel: 'Allowed Domains',
29
+ format: 'list',
30
+ value: asStringArray(record?.allowed_domains)
31
+ })
32
+ pushField(fields, usedKeys, 'blocked_domains', {
33
+ labelKey: 'chat.tools.fields.blockedDomains',
34
+ fallbackLabel: 'Blocked Domains',
35
+ format: 'list',
36
+ value: asStringArray(record?.blocked_domains)
37
+ })
38
+ usedKeys.add('query')
39
+ return { handled: true, primary: asString(record?.query) }
40
+ }
41
+
42
+ if (baseName === 'AskUserQuestion') {
43
+ const questions = toQuestionList(record?.questions)
44
+
45
+ pushField(fields, usedKeys, 'questions', {
46
+ labelKey: 'chat.tools.fields.questions',
47
+ fallbackLabel: 'Questions',
48
+ format: 'questions',
49
+ value: questions
50
+ })
51
+ pushField(fields, usedKeys, 'answers', {
52
+ labelKey: 'chat.tools.fields.answers',
53
+ fallbackLabel: 'Answers',
54
+ format: 'json',
55
+ value: record?.answers != null && typeof record.answers === 'object' ? record.answers : undefined
56
+ })
57
+ pushField(fields, usedKeys, 'metadata', {
58
+ labelKey: 'chat.tools.fields.metadata',
59
+ fallbackLabel: 'Metadata',
60
+ format: 'json',
61
+ value: record?.metadata != null && typeof record.metadata === 'object' ? record.metadata : undefined
62
+ })
63
+ return { handled: true, primary: questions?.[0]?.header ?? questions?.[0]?.question }
64
+ }
65
+
66
+ if (baseName === 'Skill') {
67
+ pushField(fields, usedKeys, 'args', {
68
+ labelKey: 'chat.tools.fields.args',
69
+ fallbackLabel: 'Args',
70
+ format: 'text',
71
+ value: asString(record?.args)
72
+ })
73
+ usedKeys.add('skill')
74
+ return { handled: true, primary: asString(record?.skill) }
75
+ }
76
+
77
+ if (baseName === 'EnterPlanMode') {
78
+ return { handled: true }
79
+ }
80
+
81
+ if (baseName !== 'ExitPlanMode') {
82
+ return { handled: false }
83
+ }
84
+
85
+ pushField(fields, usedKeys, 'pushToRemote', {
86
+ labelKey: 'chat.tools.fields.pushToRemote',
87
+ fallbackLabel: 'Push To Remote',
88
+ format: 'inline',
89
+ value: asBoolean(record?.pushToRemote) != null ? String(record?.pushToRemote) : undefined
90
+ })
91
+ pushField(fields, usedKeys, 'remoteSessionId', {
92
+ labelKey: 'chat.tools.fields.remoteSession',
93
+ fallbackLabel: 'Remote Session',
94
+ format: 'inline',
95
+ value: asString(record?.remoteSessionId)
96
+ })
97
+ pushField(fields, usedKeys, 'remoteSessionUrl', {
98
+ labelKey: 'chat.tools.fields.remoteSessionUrl',
99
+ fallbackLabel: 'Remote Session URL',
100
+ format: 'text',
101
+ value: asString(record?.remoteSessionUrl)
102
+ })
103
+ pushField(fields, usedKeys, 'allowedPrompts', {
104
+ labelKey: 'chat.tools.fields.allowedPrompts',
105
+ fallbackLabel: 'Allowed Prompts',
106
+ format: 'list',
107
+ value: Array.isArray(record?.allowedPrompts)
108
+ ? record.allowedPrompts.flatMap((item) => {
109
+ if (item == null || typeof item !== 'object') {
110
+ return []
111
+ }
112
+ const data = item as Record<string, unknown>
113
+ const tool = asString(data.tool)
114
+ const prompt = asString(data.prompt)
115
+ return prompt != null ? [`${tool ?? 'Tool'}: ${prompt}`] : []
116
+ })
117
+ : undefined
118
+ })
119
+ usedKeys.add('remoteSessionTitle')
120
+
121
+ return {
122
+ handled: true,
123
+ primary: asString(record?.remoteSessionTitle) ?? asString(record?.remoteSessionId)
124
+ }
125
+ }
@@ -0,0 +1,148 @@
1
+ import { asBoolean, asNumber, asString, asStringArray, getDescriptionTitle, pushField } from './claude-tool-shared'
2
+ import type { ClaudeToolField } from './claude-tool-shared'
3
+
4
+ interface BuilderParams {
5
+ baseName: string
6
+ record: Record<string, unknown> | null
7
+ fields: ClaudeToolField[]
8
+ usedKeys: Set<string>
9
+ }
10
+
11
+ export function buildClaudeTaskToolPresentation(params: BuilderParams) {
12
+ const { baseName, record, fields, usedKeys } = params
13
+
14
+ if (baseName === 'Task') {
15
+ const description = asString(record?.description)
16
+
17
+ pushField(fields, usedKeys, 'description', {
18
+ labelKey: 'chat.tools.fields.description',
19
+ fallbackLabel: 'Description',
20
+ format: 'text',
21
+ value: description
22
+ })
23
+ pushField(fields, usedKeys, 'prompt', {
24
+ labelKey: 'chat.tools.fields.prompt',
25
+ fallbackLabel: 'Prompt',
26
+ format: 'text',
27
+ value: asString(record?.prompt)
28
+ })
29
+ pushField(fields, usedKeys, 'subagent_type', {
30
+ labelKey: 'chat.tools.fields.subagentType',
31
+ fallbackLabel: 'Subagent Type',
32
+ format: 'inline',
33
+ value: asString(record?.subagent_type)
34
+ })
35
+ pushField(fields, usedKeys, 'model', {
36
+ labelKey: 'chat.tools.fields.model',
37
+ fallbackLabel: 'Model',
38
+ format: 'inline',
39
+ value: asString(record?.model)
40
+ })
41
+ pushField(fields, usedKeys, 'resume', {
42
+ labelKey: 'chat.tools.fields.resume',
43
+ fallbackLabel: 'Resume',
44
+ format: 'inline',
45
+ value: asString(record?.resume)
46
+ })
47
+ pushField(fields, usedKeys, 'run_in_background', {
48
+ labelKey: 'chat.tools.fields.runInBackground',
49
+ fallbackLabel: 'Run In Background',
50
+ format: 'inline',
51
+ value: asBoolean(record?.run_in_background) != null ? String(record?.run_in_background) : undefined
52
+ })
53
+ pushField(fields, usedKeys, 'max_turns', {
54
+ labelKey: 'chat.tools.fields.maxTurns',
55
+ fallbackLabel: 'Max Turns',
56
+ format: 'inline',
57
+ value: asNumber(record?.max_turns)
58
+ })
59
+ return { handled: true, primary: getDescriptionTitle(description) ?? asString(record?.subagent_type) }
60
+ }
61
+
62
+ if (baseName === 'TaskCreate') {
63
+ pushField(fields, usedKeys, 'description', {
64
+ labelKey: 'chat.tools.fields.description',
65
+ fallbackLabel: 'Description',
66
+ format: 'text',
67
+ value: asString(record?.description)
68
+ })
69
+ pushField(fields, usedKeys, 'activeForm', {
70
+ labelKey: 'chat.tools.fields.activeForm',
71
+ fallbackLabel: 'Active Form',
72
+ format: 'text',
73
+ value: asString(record?.activeForm)
74
+ })
75
+ pushField(fields, usedKeys, 'metadata', {
76
+ labelKey: 'chat.tools.fields.metadata',
77
+ fallbackLabel: 'Metadata',
78
+ format: 'json',
79
+ value: record?.metadata != null && typeof record.metadata === 'object' ? record.metadata : undefined
80
+ })
81
+ usedKeys.add('subject')
82
+ return { handled: true, primary: asString(record?.subject) }
83
+ }
84
+
85
+ if (baseName === 'TaskGet') {
86
+ usedKeys.add('taskId')
87
+ return { handled: true, primary: asString(record?.taskId) }
88
+ }
89
+
90
+ if (baseName === 'TaskUpdate') {
91
+ pushField(fields, usedKeys, 'subject', {
92
+ labelKey: 'chat.tools.fields.subject',
93
+ fallbackLabel: 'Subject',
94
+ format: 'text',
95
+ value: asString(record?.subject)
96
+ })
97
+ pushField(fields, usedKeys, 'description', {
98
+ labelKey: 'chat.tools.fields.description',
99
+ fallbackLabel: 'Description',
100
+ format: 'text',
101
+ value: asString(record?.description)
102
+ })
103
+ pushField(fields, usedKeys, 'activeForm', {
104
+ labelKey: 'chat.tools.fields.activeForm',
105
+ fallbackLabel: 'Active Form',
106
+ format: 'text',
107
+ value: asString(record?.activeForm)
108
+ })
109
+ pushField(fields, usedKeys, 'status', {
110
+ labelKey: 'chat.tools.fields.status',
111
+ fallbackLabel: 'Status',
112
+ format: 'inline',
113
+ value: asString(record?.status)
114
+ })
115
+ pushField(fields, usedKeys, 'owner', {
116
+ labelKey: 'chat.tools.fields.owner',
117
+ fallbackLabel: 'Owner',
118
+ format: 'inline',
119
+ value: asString(record?.owner)
120
+ })
121
+ pushField(fields, usedKeys, 'addBlocks', {
122
+ labelKey: 'chat.tools.fields.addBlocks',
123
+ fallbackLabel: 'Add Blocks',
124
+ format: 'list',
125
+ value: asStringArray(record?.addBlocks)
126
+ })
127
+ pushField(fields, usedKeys, 'addBlockedBy', {
128
+ labelKey: 'chat.tools.fields.addBlockedBy',
129
+ fallbackLabel: 'Add Blocked By',
130
+ format: 'list',
131
+ value: asStringArray(record?.addBlockedBy)
132
+ })
133
+ pushField(fields, usedKeys, 'metadata', {
134
+ labelKey: 'chat.tools.fields.metadata',
135
+ fallbackLabel: 'Metadata',
136
+ format: 'json',
137
+ value: record?.metadata != null && typeof record.metadata === 'object' ? record.metadata : undefined
138
+ })
139
+ usedKeys.add('taskId')
140
+ return { handled: true, primary: asString(record?.taskId) }
141
+ }
142
+
143
+ if (baseName === 'TaskList') {
144
+ return { handled: true }
145
+ }
146
+
147
+ return { handled: false }
148
+ }
@@ -1,22 +1,31 @@
1
1
  import type {} from '@vibe-forge/adapter-claude-code/schema'
2
2
 
3
3
  import { defineToolRenders } from '../defineToolRender'
4
- import { BashTool } from './BashTool'
5
- import { GlobTool } from './GlobTool'
6
- import { GrepTool } from './GrepTool'
7
- import { LsTool } from './LSTool'
8
- import { ReadTool } from './ReadTool'
9
- import { TodoTool } from './TodoTool'
10
- import { WriteTool } from './WriteTool'
4
+ import { GenericClaudeTool } from './GenericClaudeTool'
5
+ export { buildClaudeToolPresentation, getClaudeToolBaseName, isClaudeToolName } from './claude-tool-presentation'
6
+ export { getClaudeToolSummaryText } from './claude-tool-summary'
11
7
 
12
8
  export const adapterClaudeToolRenders = defineToolRenders({
13
- Bash: BashTool,
14
- LS: LsTool,
15
- Glob: GlobTool,
16
- Grep: GrepTool,
17
- Read: ReadTool,
18
- Write: WriteTool,
19
- TodoWrite: TodoTool
9
+ AskUserQuestion: GenericClaudeTool,
10
+ Bash: GenericClaudeTool,
11
+ Edit: GenericClaudeTool,
12
+ EnterPlanMode: GenericClaudeTool,
13
+ ExitPlanMode: GenericClaudeTool,
14
+ LS: GenericClaudeTool,
15
+ Glob: GenericClaudeTool,
16
+ Grep: GenericClaudeTool,
17
+ NotebookEdit: GenericClaudeTool,
18
+ Read: GenericClaudeTool,
19
+ Skill: GenericClaudeTool,
20
+ Task: GenericClaudeTool,
21
+ TaskCreate: GenericClaudeTool,
22
+ TaskGet: GenericClaudeTool,
23
+ TaskList: GenericClaudeTool,
24
+ TaskUpdate: GenericClaudeTool,
25
+ WebFetch: GenericClaudeTool,
26
+ WebSearch: GenericClaudeTool,
27
+ Write: GenericClaudeTool,
28
+ TodoWrite: GenericClaudeTool
20
29
  }, { namespace: 'adapter:claude-code:' })
21
30
 
22
- export { BashTool, GlobTool, GrepTool, LsTool, ReadTool, TodoTool, WriteTool }
31
+ export { GenericClaudeTool }