wave-code 0.0.15 → 0.0.17

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 (90) hide show
  1. package/dist/cli.d.ts +1 -0
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +2 -2
  4. package/dist/commands/plugin/disable.d.ts +5 -0
  5. package/dist/commands/plugin/disable.d.ts.map +1 -0
  6. package/dist/commands/plugin/disable.js +21 -0
  7. package/dist/commands/plugin/enable.d.ts +5 -0
  8. package/dist/commands/plugin/enable.d.ts.map +1 -0
  9. package/dist/commands/plugin/enable.js +21 -0
  10. package/dist/commands/plugin/install.d.ts +5 -0
  11. package/dist/commands/plugin/install.d.ts.map +1 -0
  12. package/dist/commands/plugin/install.js +28 -0
  13. package/dist/commands/plugin/list.d.ts +2 -0
  14. package/dist/commands/plugin/list.d.ts.map +1 -0
  15. package/dist/commands/plugin/list.js +53 -0
  16. package/dist/commands/plugin/marketplace.d.ts +8 -0
  17. package/dist/commands/plugin/marketplace.d.ts.map +1 -0
  18. package/dist/commands/plugin/marketplace.js +73 -0
  19. package/dist/components/App.d.ts +1 -0
  20. package/dist/components/App.d.ts.map +1 -1
  21. package/dist/components/App.js +4 -4
  22. package/dist/components/BashHistorySelector.d.ts +1 -0
  23. package/dist/components/BashHistorySelector.d.ts.map +1 -1
  24. package/dist/components/BashHistorySelector.js +15 -5
  25. package/dist/components/BashShellManager.d.ts.map +1 -1
  26. package/dist/components/BashShellManager.js +4 -4
  27. package/dist/components/ChatInterface.d.ts.map +1 -1
  28. package/dist/components/ChatInterface.js +1 -2
  29. package/dist/components/CommandSelector.d.ts.map +1 -1
  30. package/dist/components/CommandSelector.js +2 -2
  31. package/dist/components/Confirmation.d.ts +1 -0
  32. package/dist/components/Confirmation.d.ts.map +1 -1
  33. package/dist/components/Confirmation.js +151 -48
  34. package/dist/components/DiffDisplay.d.ts +3 -2
  35. package/dist/components/DiffDisplay.d.ts.map +1 -1
  36. package/dist/components/DiffDisplay.js +87 -82
  37. package/dist/components/FileSelector.d.ts.map +1 -1
  38. package/dist/components/FileSelector.js +2 -2
  39. package/dist/components/InputBox.d.ts.map +1 -1
  40. package/dist/components/InputBox.js +2 -2
  41. package/dist/components/McpManager.d.ts.map +1 -1
  42. package/dist/components/McpManager.js +3 -3
  43. package/dist/components/MemoryTypeSelector.d.ts.map +1 -1
  44. package/dist/components/MemoryTypeSelector.js +1 -1
  45. package/dist/components/MessageList.js +1 -1
  46. package/dist/components/PlanDisplay.d.ts +8 -0
  47. package/dist/components/PlanDisplay.d.ts.map +1 -0
  48. package/dist/components/PlanDisplay.js +14 -0
  49. package/dist/components/ToolResultDisplay.d.ts.map +1 -1
  50. package/dist/components/ToolResultDisplay.js +1 -1
  51. package/dist/contexts/useChat.d.ts +1 -0
  52. package/dist/contexts/useChat.d.ts.map +1 -1
  53. package/dist/contexts/useChat.js +3 -1
  54. package/dist/hooks/useInputManager.d.ts +1 -0
  55. package/dist/hooks/useInputManager.d.ts.map +1 -1
  56. package/dist/hooks/useInputManager.js +4 -0
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +103 -0
  59. package/dist/managers/InputManager.d.ts +1 -0
  60. package/dist/managers/InputManager.d.ts.map +1 -1
  61. package/dist/managers/InputManager.js +7 -2
  62. package/dist/print-cli.d.ts +1 -0
  63. package/dist/print-cli.d.ts.map +1 -1
  64. package/dist/print-cli.js +2 -1
  65. package/package.json +2 -2
  66. package/src/cli.tsx +8 -1
  67. package/src/commands/plugin/disable.ts +31 -0
  68. package/src/commands/plugin/enable.ts +31 -0
  69. package/src/commands/plugin/install.ts +42 -0
  70. package/src/commands/plugin/list.ts +64 -0
  71. package/src/commands/plugin/marketplace.ts +72 -0
  72. package/src/components/App.tsx +11 -5
  73. package/src/components/BashHistorySelector.tsx +25 -7
  74. package/src/components/BashShellManager.tsx +16 -8
  75. package/src/components/ChatInterface.tsx +29 -27
  76. package/src/components/CommandSelector.tsx +8 -4
  77. package/src/components/Confirmation.tsx +312 -106
  78. package/src/components/DiffDisplay.tsx +167 -149
  79. package/src/components/FileSelector.tsx +8 -4
  80. package/src/components/InputBox.tsx +14 -4
  81. package/src/components/McpManager.tsx +12 -6
  82. package/src/components/MemoryTypeSelector.tsx +4 -2
  83. package/src/components/MessageList.tsx +1 -1
  84. package/src/components/PlanDisplay.tsx +46 -0
  85. package/src/components/ToolResultDisplay.tsx +4 -2
  86. package/src/contexts/useChat.tsx +4 -0
  87. package/src/hooks/useInputManager.ts +8 -0
  88. package/src/index.ts +178 -0
  89. package/src/managers/InputManager.ts +12 -1
  90. package/src/print-cli.ts +3 -0
package/dist/cli.d.ts CHANGED
@@ -2,6 +2,7 @@ export interface CliOptions {
2
2
  restoreSessionId?: string;
3
3
  continueLastSession?: boolean;
4
4
  bypassPermissions?: boolean;
5
+ pluginDirs?: string[];
5
6
  }
6
7
  export declare function startCli(options: CliOptions): Promise<void>;
7
8
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwEjE"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA8EjE"}
package/dist/cli.js CHANGED
@@ -3,7 +3,7 @@ import { render } from "ink";
3
3
  import { App } from "./components/App.js";
4
4
  import { cleanupLogs } from "./utils/logger.js";
5
5
  export async function startCli(options) {
6
- const { restoreSessionId, continueLastSession, bypassPermissions } = options;
6
+ const { restoreSessionId, continueLastSession, bypassPermissions, pluginDirs, } = options;
7
7
  // Continue with ink-based UI for normal mode
8
8
  // Global cleanup tracker
9
9
  let isCleaningUp = false;
@@ -45,7 +45,7 @@ export async function startCli(options) {
45
45
  cleanup();
46
46
  });
47
47
  // Render the application
48
- const { unmount } = render(_jsx(App, { restoreSessionId: restoreSessionId, continueLastSession: continueLastSession, bypassPermissions: bypassPermissions }));
48
+ const { unmount } = render(_jsx(App, { restoreSessionId: restoreSessionId, continueLastSession: continueLastSession, bypassPermissions: bypassPermissions, pluginDirs: pluginDirs }));
49
49
  // Store unmount function for cleanup when process exits normally
50
50
  process.on("exit", () => {
51
51
  if (!appUnmounted) {
@@ -0,0 +1,5 @@
1
+ export declare function disablePluginCommand(argv: {
2
+ plugin: string;
3
+ scope: "user" | "project" | "local";
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=disable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disable.d.ts","sourceRoot":"","sources":["../../../src/commands/plugin/disable.ts"],"names":[],"mappings":"AAMA,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;CACrC,iBAqBA"}
@@ -0,0 +1,21 @@
1
+ import { ConfigurationService, PluginManager, PluginScopeManager, } from "wave-agent-sdk";
2
+ export async function disablePluginCommand(argv) {
3
+ const workdir = process.cwd();
4
+ const configurationService = new ConfigurationService();
5
+ const pluginManager = new PluginManager({ workdir });
6
+ const scopeManager = new PluginScopeManager({
7
+ workdir,
8
+ configurationService,
9
+ pluginManager,
10
+ });
11
+ try {
12
+ await scopeManager.disablePlugin(argv.scope, argv.plugin);
13
+ console.log(`Successfully disabled plugin: ${argv.plugin} in ${argv.scope} scope`);
14
+ process.exit(0);
15
+ }
16
+ catch (error) {
17
+ const message = error instanceof Error ? error.message : String(error);
18
+ console.error(`Failed to disable plugin: ${message}`);
19
+ process.exit(1);
20
+ }
21
+ }
@@ -0,0 +1,5 @@
1
+ export declare function enablePluginCommand(argv: {
2
+ plugin: string;
3
+ scope: "user" | "project" | "local";
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=enable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enable.d.ts","sourceRoot":"","sources":["../../../src/commands/plugin/enable.ts"],"names":[],"mappings":"AAMA,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;CACrC,iBAqBA"}
@@ -0,0 +1,21 @@
1
+ import { ConfigurationService, PluginManager, PluginScopeManager, } from "wave-agent-sdk";
2
+ export async function enablePluginCommand(argv) {
3
+ const workdir = process.cwd();
4
+ const configurationService = new ConfigurationService();
5
+ const pluginManager = new PluginManager({ workdir });
6
+ const scopeManager = new PluginScopeManager({
7
+ workdir,
8
+ configurationService,
9
+ pluginManager,
10
+ });
11
+ try {
12
+ await scopeManager.enablePlugin(argv.scope, argv.plugin);
13
+ console.log(`Successfully enabled plugin: ${argv.plugin} in ${argv.scope} scope`);
14
+ process.exit(0);
15
+ }
16
+ catch (error) {
17
+ const message = error instanceof Error ? error.message : String(error);
18
+ console.error(`Failed to enable plugin: ${message}`);
19
+ process.exit(1);
20
+ }
21
+ }
@@ -0,0 +1,5 @@
1
+ export declare function installPluginCommand(argv: {
2
+ plugin: string;
3
+ scope?: "user" | "project" | "local";
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/commands/plugin/install.ts"],"names":[],"mappings":"AAOA,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;CACtC,iBA+BA"}
@@ -0,0 +1,28 @@
1
+ import { MarketplaceService, ConfigurationService, PluginManager, PluginScopeManager, } from "wave-agent-sdk";
2
+ export async function installPluginCommand(argv) {
3
+ const marketplaceService = new MarketplaceService();
4
+ const workdir = process.cwd();
5
+ try {
6
+ const installed = await marketplaceService.installPlugin(argv.plugin);
7
+ console.log(`Successfully installed plugin: ${installed.name} v${installed.version} from ${installed.marketplace}`);
8
+ console.log(`Cache path: ${installed.cachePath}`);
9
+ if (argv.scope) {
10
+ const configurationService = new ConfigurationService();
11
+ const pluginManager = new PluginManager({ workdir });
12
+ const scopeManager = new PluginScopeManager({
13
+ workdir,
14
+ configurationService,
15
+ pluginManager,
16
+ });
17
+ const pluginId = `${installed.name}@${installed.marketplace}`;
18
+ await scopeManager.enablePlugin(argv.scope, pluginId);
19
+ console.log(`Plugin ${pluginId} enabled in ${argv.scope} scope`);
20
+ }
21
+ process.exit(0);
22
+ }
23
+ catch (error) {
24
+ const message = error instanceof Error ? error.message : String(error);
25
+ console.error(`Failed to install plugin: ${message}`);
26
+ process.exit(1);
27
+ }
28
+ }
@@ -0,0 +1,2 @@
1
+ export declare function listPluginsCommand(): Promise<void>;
2
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/plugin/list.ts"],"names":[],"mappings":"AAEA,wBAAsB,kBAAkB,kBA6DvC"}
@@ -0,0 +1,53 @@
1
+ import { MarketplaceService, ConfigurationService } from "wave-agent-sdk";
2
+ export async function listPluginsCommand() {
3
+ const marketplaceService = new MarketplaceService();
4
+ const configurationService = new ConfigurationService();
5
+ const workdir = process.cwd();
6
+ try {
7
+ const installedPlugins = await marketplaceService.getInstalledPlugins();
8
+ const marketplaces = await marketplaceService.listMarketplaces();
9
+ const mergedEnabled = configurationService.getMergedEnabledPlugins(workdir);
10
+ // Collect all plugins from all marketplaces
11
+ const allMarketplacePlugins = [];
12
+ for (const m of marketplaces) {
13
+ try {
14
+ const manifest = await marketplaceService.loadMarketplaceManifest(marketplaceService.getMarketplacePath(m));
15
+ manifest.plugins.forEach((p) => {
16
+ const installed = installedPlugins.plugins.find((ip) => ip.name === p.name && ip.marketplace === m.name);
17
+ allMarketplacePlugins.push({
18
+ name: p.name,
19
+ marketplace: m.name,
20
+ installed: !!installed,
21
+ version: installed?.version,
22
+ });
23
+ });
24
+ }
25
+ catch {
26
+ // Skip marketplaces that fail to load
27
+ }
28
+ }
29
+ if (allMarketplacePlugins.length === 0) {
30
+ console.log("No plugins found in registered marketplaces.");
31
+ }
32
+ else {
33
+ console.log("Plugins:");
34
+ allMarketplacePlugins.forEach((p) => {
35
+ const pluginId = `${p.name}@${p.marketplace}`;
36
+ const isEnabled = mergedEnabled[pluginId] !== false;
37
+ const status = p.installed
38
+ ? isEnabled
39
+ ? "enabled"
40
+ : "disabled"
41
+ : "not installed";
42
+ const versionStr = p.version ? ` v${p.version}` : "";
43
+ console.log(`- ${pluginId}${versionStr} [${status}]`);
44
+ });
45
+ }
46
+ process.exit(0);
47
+ }
48
+ catch (error) {
49
+ const message = error instanceof Error ? error.message : String(error);
50
+ console.error(`Failed to list plugins: ${message}`);
51
+ process.exit(1);
52
+ }
53
+ }
@@ -0,0 +1,8 @@
1
+ export declare function addMarketplaceCommand(argv: {
2
+ input: string;
3
+ }): Promise<void>;
4
+ export declare function listMarketplacesCommand(): Promise<void>;
5
+ export declare function updateMarketplaceCommand(argv: {
6
+ name?: string;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=marketplace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../../src/commands/plugin/marketplace.ts"],"names":[],"mappings":"AAEA,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,iBAsBlE;AAED,wBAAsB,uBAAuB,kBA2B5C;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,iBAgBrE"}
@@ -0,0 +1,73 @@
1
+ import { MarketplaceService } from "wave-agent-sdk";
2
+ export async function addMarketplaceCommand(argv) {
3
+ const service = new MarketplaceService();
4
+ try {
5
+ const marketplace = await service.addMarketplace(argv.input);
6
+ const source = marketplace.source;
7
+ let sourceInfo = "";
8
+ if (source.source === "directory") {
9
+ sourceInfo = source.path;
10
+ }
11
+ else if (source.source === "github") {
12
+ sourceInfo = source.repo + (source.ref ? `#${source.ref}` : "");
13
+ }
14
+ else {
15
+ sourceInfo = source.url + (source.ref ? `#${source.ref}` : "");
16
+ }
17
+ console.log(`Successfully added marketplace: ${marketplace.name} (${sourceInfo})`);
18
+ process.exit(0);
19
+ }
20
+ catch (error) {
21
+ const message = error instanceof Error ? error.message : String(error);
22
+ console.error(`Failed to add marketplace: ${message}`);
23
+ process.exit(1);
24
+ }
25
+ }
26
+ export async function listMarketplacesCommand() {
27
+ const service = new MarketplaceService();
28
+ try {
29
+ const marketplaces = await service.listMarketplaces();
30
+ if (marketplaces.length === 0) {
31
+ console.log("No marketplaces registered.");
32
+ }
33
+ else {
34
+ console.log("Registered Marketplaces:");
35
+ marketplaces.forEach((m) => {
36
+ const source = m.source;
37
+ let sourceInfo = "";
38
+ if (source.source === "directory") {
39
+ sourceInfo = source.path;
40
+ }
41
+ else if (source.source === "github") {
42
+ sourceInfo = source.repo + (source.ref ? `#${source.ref}` : "");
43
+ }
44
+ else {
45
+ sourceInfo = source.url + (source.ref ? `#${source.ref}` : "");
46
+ }
47
+ console.log(`- ${m.name}: ${sourceInfo} (${m.source.source})`);
48
+ });
49
+ }
50
+ process.exit(0);
51
+ }
52
+ catch (error) {
53
+ const message = error instanceof Error ? error.message : String(error);
54
+ console.error(`Failed to list marketplaces: ${message}`);
55
+ process.exit(1);
56
+ }
57
+ }
58
+ export async function updateMarketplaceCommand(argv) {
59
+ const service = new MarketplaceService();
60
+ try {
61
+ console.log(argv.name
62
+ ? `Updating marketplace: ${argv.name}...`
63
+ : "Updating all marketplaces...");
64
+ await service.updateMarketplace(argv.name);
65
+ console.log("Successfully updated.");
66
+ process.exit(0);
67
+ }
68
+ catch (error) {
69
+ const message = error instanceof Error ? error.message : String(error);
70
+ console.error(`Failed to update marketplace: ${message}`);
71
+ process.exit(1);
72
+ }
73
+ }
@@ -3,6 +3,7 @@ interface AppProps {
3
3
  restoreSessionId?: string;
4
4
  continueLastSession?: boolean;
5
5
  bypassPermissions?: boolean;
6
+ pluginDirs?: string[];
6
7
  }
7
8
  export declare const App: React.FC<AppProps>;
8
9
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/components/App.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,UAAU,QAAQ;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAYD,eAAO,MAAM,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAalC,CAAC"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/components/App.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,UAAU,QAAQ;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAaD,eAAO,MAAM,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,QAAQ,CAiBlC,CAAC"}
@@ -2,9 +2,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { ChatInterface } from "./ChatInterface.js";
3
3
  import { ChatProvider } from "../contexts/useChat.js";
4
4
  import { AppProvider } from "../contexts/useAppConfig.js";
5
- const AppWithProviders = ({ bypassPermissions, }) => {
6
- return (_jsx(ChatProvider, { bypassPermissions: bypassPermissions, children: _jsx(ChatInterface, {}) }));
5
+ const AppWithProviders = ({ bypassPermissions, pluginDirs }) => {
6
+ return (_jsx(ChatProvider, { bypassPermissions: bypassPermissions, pluginDirs: pluginDirs, children: _jsx(ChatInterface, {}) }));
7
7
  };
8
- export const App = ({ restoreSessionId, continueLastSession, bypassPermissions, }) => {
9
- return (_jsx(AppProvider, { restoreSessionId: restoreSessionId, continueLastSession: continueLastSession, children: _jsx(AppWithProviders, { bypassPermissions: bypassPermissions }) }));
8
+ export const App = ({ restoreSessionId, continueLastSession, bypassPermissions, pluginDirs, }) => {
9
+ return (_jsx(AppProvider, { restoreSessionId: restoreSessionId, continueLastSession: continueLastSession, children: _jsx(AppWithProviders, { bypassPermissions: bypassPermissions, pluginDirs: pluginDirs }) }));
10
10
  };
@@ -4,6 +4,7 @@ export interface BashHistorySelectorProps {
4
4
  workdir: string;
5
5
  onSelect: (command: string) => void;
6
6
  onExecute: (command: string) => void;
7
+ onDelete: (command: string, workdir?: string) => void;
7
8
  onCancel: () => void;
8
9
  }
9
10
  export declare const BashHistorySelector: React.FC<BashHistorySelectorProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"BashHistorySelector.d.ts","sourceRoot":"","sources":["../../src/components/BashHistorySelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAqJlE,CAAC"}
1
+ {"version":3,"file":"BashHistorySelector.d.ts","sourceRoot":"","sources":["../../src/components/BashHistorySelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAsKlE,CAAC"}
@@ -3,20 +3,22 @@ import { useState, useEffect } from "react";
3
3
  import { Box, Text, useInput } from "ink";
4
4
  import { searchBashHistory } from "wave-agent-sdk";
5
5
  import { logger } from "../utils/logger.js";
6
- export const BashHistorySelector = ({ searchQuery, workdir, onSelect, onExecute, onCancel, }) => {
6
+ export const BashHistorySelector = ({ searchQuery, workdir, onSelect, onExecute, onDelete, onCancel, }) => {
7
7
  const [selectedIndex, setSelectedIndex] = useState(0);
8
8
  const [commands, setCommands] = useState([]);
9
+ const [refreshCounter, setRefreshCounter] = useState(0);
9
10
  // Search bash history
10
11
  useEffect(() => {
11
- const results = searchBashHistory(searchQuery, 10, workdir);
12
+ const results = searchBashHistory(searchQuery, 10);
12
13
  setCommands(results);
13
14
  setSelectedIndex(0);
14
15
  logger.debug("Bash history search:", {
15
16
  searchQuery,
16
17
  workdir,
17
18
  resultCount: results.length,
19
+ refreshCounter,
18
20
  });
19
- }, [searchQuery, workdir]);
21
+ }, [searchQuery, workdir, refreshCounter]);
20
22
  useInput((input, key) => {
21
23
  logger.debug("BashHistorySelector useInput:", {
22
24
  input,
@@ -50,6 +52,14 @@ export const BashHistorySelector = ({ searchQuery, workdir, onSelect, onExecute,
50
52
  onCancel();
51
53
  return;
52
54
  }
55
+ if (key.ctrl && input === "d") {
56
+ if (commands.length > 0 && selectedIndex < commands.length) {
57
+ const selectedCommand = commands[selectedIndex];
58
+ onDelete(selectedCommand.command, selectedCommand.workdir);
59
+ setRefreshCounter((prev) => prev + 1);
60
+ }
61
+ return;
62
+ }
53
63
  if (key.upArrow) {
54
64
  setSelectedIndex(Math.max(0, selectedIndex - 1));
55
65
  return;
@@ -60,7 +70,7 @@ export const BashHistorySelector = ({ searchQuery, workdir, onSelect, onExecute,
60
70
  }
61
71
  });
62
72
  if (commands.length === 0) {
63
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "yellow", padding: 1, marginBottom: 1, children: [_jsxs(Text, { color: "yellow", children: ["No bash history found ", searchQuery && `for "${searchQuery}"`] }), searchQuery.trim() && (_jsxs(Text, { color: "green", children: ["Press Enter to execute: ", searchQuery] })), searchQuery.trim() && (_jsxs(Text, { color: "blue", children: ["Press Tab to insert: ", searchQuery] })), _jsx(Text, { dimColor: true, children: "Press Escape to cancel" })] }));
73
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "yellow", borderBottom: false, borderLeft: false, borderRight: false, paddingTop: 1, children: [_jsxs(Text, { color: "yellow", children: ["No bash history found ", searchQuery && `for "${searchQuery}"`] }), searchQuery.trim() && (_jsxs(Text, { color: "green", children: ["Press Enter to execute: ", searchQuery] })), searchQuery.trim() && (_jsxs(Text, { color: "blue", children: ["Press Tab to insert: ", searchQuery] })), _jsx(Text, { dimColor: true, children: "Press Escape to cancel" })] }));
64
74
  }
65
75
  const formatTimestamp = (timestamp) => {
66
76
  const date = new Date(timestamp);
@@ -79,5 +89,5 @@ export const BashHistorySelector = ({ searchQuery, workdir, onSelect, onExecute,
79
89
  return diffMinutes > 0 ? `${diffMinutes}m ago` : "just now";
80
90
  }
81
91
  };
82
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "blue", padding: 1, gap: 1, marginBottom: 1, children: [_jsx(Box, { children: _jsxs(Text, { color: "blue", bold: true, children: ["Bash History ", searchQuery && `(filtering: "${searchQuery}")`] }) }), commands.map((cmd, index) => (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: index === selectedIndex ? "black" : "white", backgroundColor: index === selectedIndex ? "blue" : undefined, children: cmd.command }), index === selectedIndex && (_jsx(Box, { marginLeft: 4, flexDirection: "column", children: _jsxs(Text, { color: "gray", dimColor: true, children: [formatTimestamp(cmd.timestamp), cmd.workdir !== workdir && ` • in ${cmd.workdir}`] }) }))] }, index))), _jsx(Box, { children: _jsx(Text, { dimColor: true, children: "Use \u2191\u2193 to navigate, Enter to execute, Tab to insert, Escape to cancel" }) })] }));
92
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "blue", borderBottom: false, borderLeft: false, borderRight: false, paddingTop: 1, gap: 1, children: [_jsx(Box, { children: _jsxs(Text, { color: "blue", bold: true, children: ["Bash History ", searchQuery && `(filtering: "${searchQuery}")`] }) }), commands.map((cmd, index) => (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: index === selectedIndex ? "black" : "white", backgroundColor: index === selectedIndex ? "blue" : undefined, children: cmd.command }), index === selectedIndex && (_jsx(Box, { marginLeft: 4, flexDirection: "column", children: _jsxs(Text, { color: "gray", dimColor: true, children: [formatTimestamp(cmd.timestamp), cmd.workdir !== workdir && ` • in ${cmd.workdir}`] }) }))] }, index))), _jsx(Box, { children: _jsx(Text, { dimColor: true, children: "Use \u2191\u2193 to navigate, Enter to execute, Tab to insert, Ctrl+d to remove, Escape to cancel" }) })] }));
83
93
  };
@@ -1 +1 @@
1
- {"version":3,"file":"BashShellManager.d.ts","sourceRoot":"","sources":["../../src/components/BashShellManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAanD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAgS5D,CAAC"}
1
+ {"version":3,"file":"BashShellManager.d.ts","sourceRoot":"","sources":["../../src/components/BashShellManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAanD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAwS5D,CAAC"}
@@ -96,16 +96,16 @@ export const BashShellManager = ({ onCancel, }) => {
96
96
  setViewMode("list");
97
97
  return null;
98
98
  }
99
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", padding: 1, gap: 1, marginBottom: 1, children: [_jsx(Box, { children: _jsxs(Text, { color: "cyan", bold: true, children: ["Background Shell Details: ", shell.id] }) }), _jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Box, { children: _jsxs(Text, { children: [_jsx(Text, { color: "blue", children: "Command:" }), " ", shell.command] }) }), _jsx(Box, { children: _jsxs(Text, { children: [_jsx(Text, { color: "blue", children: "Status:" }), " ", shell.status, shell.exitCode !== undefined &&
99
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", borderBottom: false, borderLeft: false, borderRight: false, paddingTop: 1, gap: 1, children: [_jsx(Box, { children: _jsxs(Text, { color: "cyan", bold: true, children: ["Background Shell Details: ", shell.id] }) }), _jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Box, { children: _jsxs(Text, { children: [_jsx(Text, { color: "blue", children: "Command:" }), " ", shell.command] }) }), _jsx(Box, { children: _jsxs(Text, { children: [_jsx(Text, { color: "blue", children: "Status:" }), " ", shell.status, shell.exitCode !== undefined &&
100
100
  ` (exit code: ${shell.exitCode})`] }) }), _jsx(Box, { children: _jsxs(Text, { children: [_jsx(Text, { color: "blue", children: "Started:" }), " ", formatTime(shell.startTime), shell.runtime !== undefined && (_jsxs(Text, { children: [" ", "| ", _jsx(Text, { color: "blue", children: "Runtime:" }), " ", formatDuration(shell.runtime)] }))] }) })] }), detailOutput.stdout && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "green", bold: true, children: "STDOUT (last 10 lines):" }), _jsx(Box, { borderStyle: "single", borderColor: "green", padding: 1, children: _jsx(Text, { children: detailOutput.stdout.split("\n").slice(-10).join("\n") }) })] })), detailOutput.stderr && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "red", bold: true, children: "STDERR:" }), _jsx(Box, { borderStyle: "single", borderColor: "red", padding: 1, children: _jsx(Text, { color: "red", children: detailOutput.stderr.split("\n").slice(-10).join("\n") }) })] })), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: [shell.status === "running" ? "k to kill · " : "", "Esc to go back"] }) })] }));
101
101
  }
102
102
  if (!backgroundShells) {
103
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", padding: 1, marginBottom: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "Background Bash Shells" }), _jsx(Text, { children: "Background bash shells not available" }), _jsx(Text, { dimColor: true, children: "Press Escape to close" })] }));
103
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", borderBottom: false, borderLeft: false, borderRight: false, paddingTop: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "Background Bash Shells" }), _jsx(Text, { children: "Background bash shells not available" }), _jsx(Text, { dimColor: true, children: "Press Escape to close" })] }));
104
104
  }
105
105
  if (shells.length === 0) {
106
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", padding: 1, marginBottom: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "Background Bash Shells" }), _jsx(Text, { children: "No background shells found" }), _jsx(Text, { dimColor: true, children: "Press Escape to close" })] }));
106
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", borderBottom: false, borderLeft: false, borderRight: false, paddingTop: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "Background Bash Shells" }), _jsx(Text, { children: "No background shells found" }), _jsx(Text, { dimColor: true, children: "Press Escape to close" })] }));
107
107
  }
108
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", padding: 1, gap: 1, marginBottom: 1, children: [_jsx(Box, { children: _jsx(Text, { color: "cyan", bold: true, children: "Background Bash Shells" }) }), _jsx(Text, { dimColor: true, children: "Select a shell to view details" }), shells.map((shell, index) => (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: index === selectedIndex ? "black" : "white", backgroundColor: index === selectedIndex ? "cyan" : undefined, children: [index === selectedIndex ? "▶ " : " ", index + 1, ".", " ", shell.command.length > 50
108
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", borderBottom: false, borderLeft: false, borderRight: false, paddingTop: 1, gap: 1, children: [_jsx(Box, { children: _jsx(Text, { color: "cyan", bold: true, children: "Background Bash Shells" }) }), _jsx(Text, { dimColor: true, children: "Select a shell to view details" }), shells.map((shell, index) => (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: index === selectedIndex ? "black" : "white", backgroundColor: index === selectedIndex ? "cyan" : undefined, children: [index === selectedIndex ? "▶ " : " ", index + 1, ".", " ", shell.command.length > 50
109
109
  ? shell.command.substring(0, 47) + "..."
110
110
  : shell.command, _jsxs(Text, { color: shell.status === "running"
111
111
  ? "green"
@@ -1 +1 @@
1
- {"version":3,"file":"ChatInterface.d.ts","sourceRoot":"","sources":["../../src/components/ChatInterface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAkEjC,CAAC"}
1
+ {"version":3,"file":"ChatInterface.d.ts","sourceRoot":"","sources":["../../src/components/ChatInterface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAoEjC,CAAC"}
@@ -8,6 +8,5 @@ export const ChatInterface = () => {
8
8
  const { messages, isLoading, isCommandRunning, userInputHistory, isCompressing, sendMessage, abortMessage, saveMemory, mcpServers, connectMcpServer, disconnectMcpServer, isExpanded, sessionId, latestTotalTokens, slashCommands, hasSlashCommand, isConfirmationVisible, confirmingTool, handleConfirmationDecision, handleConfirmationCancel, } = useChat();
9
9
  if (!sessionId)
10
10
  return null;
11
- return (_jsxs(Box, { flexDirection: "column", height: "100%", paddingY: 1, children: [_jsx(MessageList, { messages: messages, isLoading: isLoading, isCommandRunning: isCommandRunning, isCompressing: isCompressing, latestTotalTokens: latestTotalTokens, isExpanded: isExpanded }, String(isExpanded) + sessionId), !isExpanded &&
12
- (isConfirmationVisible ? (_jsx(Confirmation, { toolName: confirmingTool.name, toolInput: confirmingTool.input, suggestedPrefix: confirmingTool.suggestedPrefix, hidePersistentOption: confirmingTool.hidePersistentOption, onDecision: handleConfirmationDecision, onCancel: handleConfirmationCancel, onAbort: abortMessage })) : (_jsx(InputBox, { isLoading: isLoading, isCommandRunning: isCommandRunning, userInputHistory: userInputHistory, sendMessage: sendMessage, abortMessage: abortMessage, saveMemory: saveMemory, mcpServers: mcpServers, connectMcpServer: connectMcpServer, disconnectMcpServer: disconnectMcpServer, slashCommands: slashCommands, hasSlashCommand: hasSlashCommand })))] }));
11
+ return (_jsxs(Box, { flexDirection: "column", height: "100%", paddingY: 1, paddingRight: 1, children: [_jsx(MessageList, { messages: messages, isLoading: isLoading, isCommandRunning: isCommandRunning, isCompressing: isCompressing, latestTotalTokens: latestTotalTokens, isExpanded: isExpanded }, String(isExpanded) + sessionId), isConfirmationVisible && (_jsx(Confirmation, { toolName: confirmingTool.name, toolInput: confirmingTool.input, suggestedPrefix: confirmingTool.suggestedPrefix, hidePersistentOption: confirmingTool.hidePersistentOption, isExpanded: isExpanded, onDecision: handleConfirmationDecision, onCancel: handleConfirmationCancel, onAbort: abortMessage })), !isConfirmationVisible && !isExpanded && (_jsx(InputBox, { isLoading: isLoading, isCommandRunning: isCommandRunning, userInputHistory: userInputHistory, sendMessage: sendMessage, abortMessage: abortMessage, saveMemory: saveMemory, mcpServers: mcpServers, connectMcpServer: connectMcpServer, disconnectMcpServer: disconnectMcpServer, slashCommands: slashCommands, hasSlashCommand: hasSlashCommand }))] }));
13
12
  };
@@ -1 +1 @@
1
- {"version":3,"file":"CommandSelector.d.ts","sourceRoot":"","sources":["../../src/components/CommandSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAiBnD,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,CAoH1D,CAAC"}
1
+ {"version":3,"file":"CommandSelector.d.ts","sourceRoot":"","sources":["../../src/components/CommandSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAiBnD,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,CAwH1D,CAAC"}
@@ -54,7 +54,7 @@ export const CommandSelector = ({ searchQuery, onSelect, onInsert, onCancel, com
54
54
  }
55
55
  });
56
56
  if (filteredCommands.length === 0) {
57
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "yellow", padding: 1, marginBottom: 1, children: [_jsxs(Text, { color: "yellow", children: ["No commands found for \"", searchQuery, "\""] }), _jsx(Text, { dimColor: true, children: "Press Escape to cancel" })] }));
57
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "yellow", borderBottom: false, borderLeft: false, borderRight: false, paddingTop: 1, children: [_jsxs(Text, { color: "yellow", children: ["No commands found for \"", searchQuery, "\""] }), _jsx(Text, { dimColor: true, children: "Press Escape to cancel" })] }));
58
58
  }
59
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "magenta", padding: 1, gap: 1, marginBottom: 1, children: [_jsx(Box, { children: _jsxs(Text, { color: "magenta", bold: true, children: ["Command Selector ", searchQuery && `(filtering: "${searchQuery}")`] }) }), filteredCommands.map((command, index) => (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: index === selectedIndex ? "black" : "white", backgroundColor: index === selectedIndex ? "magenta" : undefined, children: [index === selectedIndex ? "▶ " : " ", "/", command.id] }), index === selectedIndex && (_jsx(Box, { marginLeft: 4, children: _jsx(Text, { color: "gray", dimColor: true, children: command.description }) }))] }, command.id))), _jsx(Box, { children: _jsxs(Text, { dimColor: true, children: ["\u2191\u2193 navigate \u2022 Enter execute \u2022 ", onInsert ? "Tab insert • " : "", "Esc cancel"] }) })] }));
59
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "single", borderColor: "magenta", borderBottom: false, borderLeft: false, borderRight: false, paddingTop: 1, gap: 1, children: [_jsx(Box, { children: _jsxs(Text, { color: "magenta", bold: true, children: ["Command Selector ", searchQuery && `(filtering: "${searchQuery}")`] }) }), filteredCommands.map((command, index) => (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: index === selectedIndex ? "black" : "white", backgroundColor: index === selectedIndex ? "magenta" : undefined, children: [index === selectedIndex ? "▶ " : " ", "/", command.id] }), index === selectedIndex && (_jsx(Box, { marginLeft: 4, children: _jsx(Text, { color: "gray", dimColor: true, children: command.description }) }))] }, command.id))), _jsx(Box, { children: _jsxs(Text, { dimColor: true, children: ["\u2191\u2193 navigate \u2022 Enter execute \u2022 ", onInsert ? "Tab insert • " : "", "Esc cancel"] }) })] }));
60
60
  };
@@ -5,6 +5,7 @@ export interface ConfirmationProps {
5
5
  toolInput?: Record<string, unknown>;
6
6
  suggestedPrefix?: string;
7
7
  hidePersistentOption?: boolean;
8
+ isExpanded?: boolean;
8
9
  onDecision: (decision: PermissionDecision) => void;
9
10
  onCancel: () => void;
10
11
  onAbort: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"Confirmation.d.ts","sourceRoot":"","sources":["../../src/components/Confirmation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AA2BzD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACnD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAQD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAgPpD,CAAC"}
1
+ {"version":3,"file":"Confirmation.d.ts","sourceRoot":"","sources":["../../src/components/Confirmation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,kBAAkB,EAAwB,MAAM,gBAAgB,CAAC;AAmD/E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACnD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAQD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAqapD,CAAC"}