wave-code 0.18.0 → 0.18.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/acp/agent.ts"],"names":[],"mappings":"AA0BA,OAAO,EACL,KAAK,KAAK,IAAI,QAAQ,EACtB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAUzB,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EAQpC,MAAM,0BAA0B,CAAC;AAwBlC,qBAAa,YAAa,YAAW,QAAQ;IAC3C,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,SAAS,CAA6B;gBAElC,UAAU,EAAE,mBAAmB;IAI3C,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,uBAAuB;YAmCjB,gBAAgB;IASxB,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAyBzC,YAAY,IAAI,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAI5C,WAAW;IAgFnB,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAalE,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAcrE,YAAY,CAChB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,oBAAoB,CAAC;IAuB1B,qBAAqB,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAc7B,SAAS,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAO7B,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D,sBAAsB,CAC1B,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,8BAA8B,CAAC;IAuBpC,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IA+DtD,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IASvD,OAAO,CAAC,kBAAkB;YA2BZ,iBAAiB;YAsEjB,gBAAgB;YAyDhB,uBAAuB;IAmNrC,OAAO,CAAC,cAAc;IA6FtB,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,WAAW;YAmBL,yBAAyB;IAoIvC,OAAO,CAAC,eAAe;CA8RxB"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/acp/agent.ts"],"names":[],"mappings":"AA0BA,OAAO,EACL,KAAK,KAAK,IAAI,QAAQ,EACtB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAUzB,KAAK,qBAAqB,EAC1B,KAAK,6BAA6B,EAClC,KAAK,8BAA8B,EAQpC,MAAM,0BAA0B,CAAC;AAwBlC,qBAAa,YAAa,YAAW,QAAQ;IAC3C,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,SAAS,CAA6B;gBAElC,UAAU,EAAE,mBAAmB;IAI3C,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,uBAAuB;YAmCjB,gBAAgB;IASxB,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAyBzC,YAAY,IAAI,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAI5C,WAAW;IAgFnB,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAalE,WAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAcrE,YAAY,CAChB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,oBAAoB,CAAC;IAuB1B,qBAAqB,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAc7B,SAAS,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAO7B,cAAc,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5D,sBAAsB,CAC1B,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,8BAA8B,CAAC;IAuBpC,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IA+DtD,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IASvD,OAAO,CAAC,kBAAkB;YA2BZ,iBAAiB;YAsEjB,gBAAgB;YAyDhB,uBAAuB;IAmNrC,OAAO,CAAC,cAAc;IA6FtB,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,WAAW;YAmBL,yBAAyB;IAoIvC,OAAO,CAAC,eAAe;CAoSxB"}
package/dist/acp/agent.js CHANGED
@@ -123,8 +123,8 @@ export class WaveAcpAgent {
123
123
  return this.handlePermissionRequest(agentRef.instance.sessionId, context);
124
124
  },
125
125
  callbacks: {
126
- onAssistantContentUpdated: (messageId, chunk) => callbacks.onAssistantContentUpdated?.(messageId, chunk, ""),
127
- onAssistantReasoningUpdated: (messageId, chunk) => callbacks.onAssistantReasoningUpdated?.(messageId, chunk, ""),
126
+ onAssistantContentUpdated: (params) => callbacks.onAssistantContentUpdated?.(params),
127
+ onAssistantReasoningUpdated: (params) => callbacks.onAssistantReasoningUpdated?.(params),
128
128
  onToolBlockUpdated: (params) => {
129
129
  const cb = callbacks.onToolBlockUpdated;
130
130
  cb?.(params);
@@ -835,26 +835,26 @@ export class WaveAcpAgent {
835
835
  const toolStates = new Map();
836
836
  return {
837
837
  callbacks: {
838
- onAssistantContentUpdated: (_messageId, chunk) => {
838
+ onAssistantContentUpdated: (params) => {
839
839
  this.connection.sessionUpdate({
840
840
  sessionId: sessionRef.id,
841
841
  update: {
842
842
  sessionUpdate: "agent_message_chunk",
843
843
  content: {
844
844
  type: "text",
845
- text: chunk,
845
+ text: params.chunk,
846
846
  },
847
847
  },
848
848
  });
849
849
  },
850
- onAssistantReasoningUpdated: (_messageId, chunk) => {
850
+ onAssistantReasoningUpdated: (params) => {
851
851
  this.connection.sessionUpdate({
852
852
  sessionId: sessionRef.id,
853
853
  update: {
854
854
  sessionUpdate: "agent_thought_chunk",
855
855
  content: {
856
856
  type: "text",
857
- text: chunk,
857
+ text: params.chunk,
858
858
  },
859
859
  },
860
860
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CommandSelector.d.ts","sourceRoot":"","sources":["../../src/components/CommandSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAOnD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAoJ1D,CAAC"}
1
+ {"version":3,"file":"CommandSelector.d.ts","sourceRoot":"","sources":["../../src/components/CommandSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAOnD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAoJ1D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
- import { useReducer, useEffect } from "react";
2
+ import { useReducer, useEffect, useMemo } from "react";
3
3
  import { Box, Text, useInput } from "ink";
4
4
  import { AVAILABLE_COMMANDS } from "../constants/commands.js";
5
5
  import { selectorReducer, } from "../reducers/selectorReducer.js";
@@ -14,11 +14,12 @@ export const CommandSelector = ({ searchQuery, onSelect, onInsert, onCancel, com
14
14
  useEffect(() => {
15
15
  dispatch({ type: "RESET_INDEX" });
16
16
  }, [searchQuery]);
17
- // Merge agent commands and local commands
18
- const allCommands = [...AVAILABLE_COMMANDS, ...commands];
19
- // Filter command list
20
- const filteredCommands = allCommands.filter((command) => !searchQuery ||
21
- command.id.toLowerCase().includes(searchQuery.toLowerCase()));
17
+ // Merge agent commands and local commands, memoized to stabilize useEffect dependencies
18
+ const filteredCommands = useMemo(() => {
19
+ const allCommands = [...AVAILABLE_COMMANDS, ...commands];
20
+ return allCommands.filter((command) => !searchQuery ||
21
+ command.id.toLowerCase().includes(searchQuery.toLowerCase()));
22
+ }, [searchQuery, commands]);
22
23
  // Handle decisions from reducer
23
24
  useEffect(() => {
24
25
  if (!pendingDecision)
package/dist/print-cli.js CHANGED
@@ -33,14 +33,14 @@ export async function startPrintCli(options) {
33
33
  isReasoning = false;
34
34
  isContent = false;
35
35
  },
36
- onAssistantReasoningUpdated: (_messageId, chunk) => {
36
+ onAssistantReasoningUpdated: (params) => {
37
37
  if (!isReasoning) {
38
38
  process.stdout.write("\nšŸ’­ Reasoning:\n");
39
39
  isReasoning = true;
40
40
  }
41
- process.stdout.write(chunk);
41
+ process.stdout.write(params.chunk);
42
42
  },
43
- onAssistantContentUpdated: (_messageId, chunk) => {
43
+ onAssistantContentUpdated: (params) => {
44
44
  if (!isContent) {
45
45
  if (isReasoning) {
46
46
  process.stdout.write("\n\nšŸ“ Response:\n");
@@ -50,7 +50,7 @@ export async function startPrintCli(options) {
50
50
  }
51
51
  isContent = true;
52
52
  }
53
- process.stdout.write(chunk);
53
+ process.stdout.write(params.chunk);
54
54
  },
55
55
  // Tool block callback - display tool name when tool starts
56
56
  onToolBlockUpdated: (params) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wave-code",
3
- "version": "0.18.0",
3
+ "version": "0.18.2",
4
4
  "description": "CLI-based code assistant powered by AI, built with React and Ink",
5
5
  "repository": {
6
6
  "type": "git",
@@ -42,7 +42,7 @@
42
42
  "semver": "^7.7.4",
43
43
  "yargs": "^17.7.2",
44
44
  "zod": "^3.23.8",
45
- "wave-agent-sdk": "0.18.0"
45
+ "wave-agent-sdk": "0.18.2"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@types/react": "^19.1.8",
package/src/acp/agent.ts CHANGED
@@ -224,10 +224,10 @@ export class WaveAcpAgent implements AcpAgent {
224
224
  );
225
225
  },
226
226
  callbacks: {
227
- onAssistantContentUpdated: (messageId: string, chunk: string) =>
228
- callbacks.onAssistantContentUpdated?.(messageId, chunk, ""),
229
- onAssistantReasoningUpdated: (messageId: string, chunk: string) =>
230
- callbacks.onAssistantReasoningUpdated?.(messageId, chunk, ""),
227
+ onAssistantContentUpdated: (params) =>
228
+ callbacks.onAssistantContentUpdated?.(params),
229
+ onAssistantReasoningUpdated: (params) =>
230
+ callbacks.onAssistantReasoningUpdated?.(params),
231
231
  onToolBlockUpdated: (params: unknown) => {
232
232
  const cb = callbacks.onToolBlockUpdated as
233
233
  | ((params: unknown) => void)
@@ -1127,26 +1127,32 @@ export class WaveAcpAgent implements AcpAgent {
1127
1127
  >();
1128
1128
  return {
1129
1129
  callbacks: {
1130
- onAssistantContentUpdated: (_messageId: string, chunk: string) => {
1130
+ onAssistantContentUpdated: (params: {
1131
+ chunk: string;
1132
+ stage: "streaming" | "end";
1133
+ }) => {
1131
1134
  this.connection.sessionUpdate({
1132
1135
  sessionId: sessionRef.id as AcpSessionId,
1133
1136
  update: {
1134
1137
  sessionUpdate: "agent_message_chunk",
1135
1138
  content: {
1136
1139
  type: "text",
1137
- text: chunk,
1140
+ text: params.chunk,
1138
1141
  },
1139
1142
  },
1140
1143
  });
1141
1144
  },
1142
- onAssistantReasoningUpdated: (_messageId: string, chunk: string) => {
1145
+ onAssistantReasoningUpdated: (params: {
1146
+ chunk: string;
1147
+ stage: "streaming" | "end";
1148
+ }) => {
1143
1149
  this.connection.sessionUpdate({
1144
1150
  sessionId: sessionRef.id as AcpSessionId,
1145
1151
  update: {
1146
1152
  sessionUpdate: "agent_thought_chunk",
1147
1153
  content: {
1148
1154
  type: "text",
1149
- text: chunk,
1155
+ text: params.chunk,
1150
1156
  },
1151
1157
  },
1152
1158
  });
@@ -1,4 +1,4 @@
1
- import React, { useReducer, useEffect } from "react";
1
+ import React, { useReducer, useEffect, useMemo } from "react";
2
2
  import { Box, Text, useInput } from "ink";
3
3
  import type { SlashCommand } from "wave-agent-sdk";
4
4
  import { AVAILABLE_COMMANDS } from "../constants/commands.js";
@@ -35,15 +35,15 @@ export const CommandSelector: React.FC<CommandSelectorProps> = ({
35
35
  dispatch({ type: "RESET_INDEX" });
36
36
  }, [searchQuery]);
37
37
 
38
- // Merge agent commands and local commands
39
- const allCommands = [...AVAILABLE_COMMANDS, ...commands];
40
-
41
- // Filter command list
42
- const filteredCommands = allCommands.filter(
43
- (command) =>
44
- !searchQuery ||
45
- command.id.toLowerCase().includes(searchQuery.toLowerCase()),
46
- );
38
+ // Merge agent commands and local commands, memoized to stabilize useEffect dependencies
39
+ const filteredCommands = useMemo(() => {
40
+ const allCommands = [...AVAILABLE_COMMANDS, ...commands];
41
+ return allCommands.filter(
42
+ (command) =>
43
+ !searchQuery ||
44
+ command.id.toLowerCase().includes(searchQuery.toLowerCase()),
45
+ );
46
+ }, [searchQuery, commands]);
47
47
 
48
48
  // Handle decisions from reducer
49
49
  useEffect(() => {
package/src/print-cli.ts CHANGED
@@ -75,14 +75,14 @@ export async function startPrintCli(options: PrintCliOptions): Promise<void> {
75
75
  isReasoning = false;
76
76
  isContent = false;
77
77
  },
78
- onAssistantReasoningUpdated: (_messageId: string, chunk: string) => {
78
+ onAssistantReasoningUpdated: (params: { chunk: string }) => {
79
79
  if (!isReasoning) {
80
80
  process.stdout.write("\nšŸ’­ Reasoning:\n");
81
81
  isReasoning = true;
82
82
  }
83
- process.stdout.write(chunk);
83
+ process.stdout.write(params.chunk);
84
84
  },
85
- onAssistantContentUpdated: (_messageId: string, chunk: string) => {
85
+ onAssistantContentUpdated: (params: { chunk: string }) => {
86
86
  if (!isContent) {
87
87
  if (isReasoning) {
88
88
  process.stdout.write("\n\nšŸ“ Response:\n");
@@ -91,7 +91,7 @@ export async function startPrintCli(options: PrintCliOptions): Promise<void> {
91
91
  }
92
92
  isContent = true;
93
93
  }
94
- process.stdout.write(chunk);
94
+ process.stdout.write(params.chunk);
95
95
  },
96
96
 
97
97
  // Tool block callback - display tool name when tool starts