@vybestack/llxprt-code 0.1.18-nightly.250807.306d1939 → 0.1.18-nightly.250808.f9b79d74

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 (86) hide show
  1. package/README.md +1 -0
  2. package/dist/package.json +4 -4
  3. package/dist/src/acp/acpPeer.js +72 -64
  4. package/dist/src/acp/acpPeer.js.map +1 -1
  5. package/dist/src/commands/mcp/add.d.ts +7 -0
  6. package/dist/src/commands/mcp/add.js +155 -0
  7. package/dist/src/commands/mcp/add.js.map +1 -0
  8. package/dist/src/commands/mcp/list.d.ts +8 -0
  9. package/dist/src/commands/mcp/list.js +110 -0
  10. package/dist/src/commands/mcp/list.js.map +1 -0
  11. package/dist/src/commands/mcp/remove.d.ts +7 -0
  12. package/dist/src/commands/mcp/remove.js +44 -0
  13. package/dist/src/commands/mcp/remove.js.map +1 -0
  14. package/dist/src/commands/mcp.d.ts +7 -0
  15. package/dist/src/commands/mcp.js +23 -0
  16. package/dist/src/commands/mcp.js.map +1 -0
  17. package/dist/src/config/config.js +7 -0
  18. package/dist/src/config/config.js.map +1 -1
  19. package/dist/src/config/settings.d.ts +3 -0
  20. package/dist/src/config/settings.js +3 -3
  21. package/dist/src/config/settings.js.map +1 -1
  22. package/dist/src/generated/git-commit.d.ts +1 -1
  23. package/dist/src/generated/git-commit.js +1 -1
  24. package/dist/src/providers/providerManagerInstance.js +3 -0
  25. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  26. package/dist/src/ui/App.js +49 -13
  27. package/dist/src/ui/App.js.map +1 -1
  28. package/dist/src/ui/IdeIntegrationNudge.d.ts +14 -0
  29. package/dist/src/ui/IdeIntegrationNudge.js +32 -0
  30. package/dist/src/ui/IdeIntegrationNudge.js.map +1 -0
  31. package/dist/src/ui/commands/diagnosticsCommand.js +9 -1
  32. package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -1
  33. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  34. package/dist/src/ui/commands/profileCommand.js +1 -0
  35. package/dist/src/ui/commands/profileCommand.js.map +1 -1
  36. package/dist/src/ui/commands/setCommand.js +2 -0
  37. package/dist/src/ui/commands/setCommand.js.map +1 -1
  38. package/dist/src/ui/commands/setupGithubCommand.js +71 -26
  39. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  40. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  41. package/dist/src/ui/components/TodoPanel.d.ts +11 -0
  42. package/dist/src/ui/components/TodoPanel.js +131 -0
  43. package/dist/src/ui/components/TodoPanel.js.map +1 -0
  44. package/dist/src/ui/components/ToolsDialog.d.ts +2 -2
  45. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +31 -9
  46. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  47. package/dist/src/ui/components/messages/ToolGroupMessage.js +36 -8
  48. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  49. package/dist/src/ui/components/todo-utils.d.ts +16 -0
  50. package/dist/src/ui/components/todo-utils.js +41 -0
  51. package/dist/src/ui/components/todo-utils.js.map +1 -0
  52. package/dist/src/ui/contexts/TodoContext.d.ts +15 -0
  53. package/dist/src/ui/contexts/TodoContext.js +18 -0
  54. package/dist/src/ui/contexts/TodoContext.js.map +1 -0
  55. package/dist/src/ui/contexts/TodoProvider.d.ts +7 -0
  56. package/dist/src/ui/contexts/TodoProvider.js +62 -0
  57. package/dist/src/ui/contexts/TodoProvider.js.map +1 -0
  58. package/dist/src/ui/contexts/ToolCallContext.d.ts +19 -0
  59. package/dist/src/ui/contexts/ToolCallContext.js +13 -0
  60. package/dist/src/ui/contexts/ToolCallContext.js.map +1 -0
  61. package/dist/src/ui/contexts/ToolCallProvider.d.ts +12 -0
  62. package/dist/src/ui/contexts/ToolCallProvider.js +62 -0
  63. package/dist/src/ui/contexts/ToolCallProvider.js.map +1 -0
  64. package/dist/src/ui/hooks/atCommandProcessor.js +7 -4
  65. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  66. package/dist/src/ui/hooks/useAtCompletion.d.ts +23 -0
  67. package/dist/src/ui/hooks/useAtCompletion.js +180 -0
  68. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -0
  69. package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
  70. package/dist/src/ui/hooks/useGeminiStream.js +2 -1
  71. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  72. package/dist/src/ui/hooks/useReactToolScheduler.js +12 -12
  73. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  74. package/dist/src/ui/hooks/useToolsDialog.d.ts +2 -2
  75. package/dist/src/ui/hooks/useToolsDialog.js.map +1 -1
  76. package/dist/src/ui/types.d.ts +1 -1
  77. package/dist/src/ui/utils/ConsolePatcher.d.ts +1 -0
  78. package/dist/src/ui/utils/ConsolePatcher.js +3 -0
  79. package/dist/src/ui/utils/ConsolePatcher.js.map +1 -1
  80. package/dist/src/utils/gitUtils.d.ts +12 -1
  81. package/dist/src/utils/gitUtils.js +54 -4
  82. package/dist/src/utils/gitUtils.js.map +1 -1
  83. package/dist/src/utils/sandbox.js +420 -401
  84. package/dist/src/utils/sandbox.js.map +1 -1
  85. package/dist/tsconfig.tsbuildinfo +1 -1
  86. package/package.json +4 -4
@@ -3,6 +3,14 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ // These imports will be needed when the command is re-enabled
7
+ // import path from 'path';
8
+ // import { CommandContext } from '../../ui/commands/types.js';
9
+ // import {
10
+ // getGitRepoRoot,
11
+ // getLatestGitHubRelease,
12
+ // isGitHubRepository,
13
+ // } from '../../utils/gitUtils.js';
6
14
  import { CommandKind, } from './types.js';
7
15
  export const setupGithubCommand = {
8
16
  name: 'setup-github',
@@ -29,60 +37,97 @@ This command would download GitHub Actions workflows for:
29
37
  - (Potentially) Automated upstream sync via cherry-picking
30
38
 
31
39
  To implement this feature:
32
- 1. Fork https://github.com/google-github-actions/run-gemini-cli
40
+ 1. Fork https://github.com/acoliver/run-llxprt-code
33
41
  2. Adapt it for multi-provider support
34
42
  3. Update this command to point to the new repository
35
43
 
36
44
  For now, you can manually set up GitHub Actions by creating workflows that use llxprt-code.`,
37
45
  }),
38
- /* Original gemini implementation with better error handling - kept for reference:
46
+ /* Original gemini implementation with GitHub API integration - kept for reference:
47
+ action: async (
48
+ context: CommandContext,
49
+ ): Promise<SlashCommandActionReturn> => {
39
50
  if (!isGitHubRepository()) {
40
51
  throw new Error(
41
52
  'Unable to determine the GitHub repository. /setup-github must be run from a git repository.',
42
53
  );
43
54
  }
44
55
 
45
- let gitRootRepo: string;
56
+ // Find the root directory of the repo
57
+ let gitRepoRoot: string;
46
58
  try {
47
- gitRootRepo = execSync('git rev-parse --show-toplevel', {
48
- encoding: 'utf-8',
49
- }).trim();
50
- } catch {
59
+ gitRepoRoot = getGitRepoRoot();
60
+ } catch (_error) {
61
+ console.debug(`Failed to get git repo root:`, _error);
51
62
  throw new Error(
52
63
  'Unable to determine the GitHub repository. /setup-github must be run from a git repository.',
53
64
  );
54
65
  }
55
66
 
56
- // TODO: Create llxprt-specific workflows
57
- const version = 'v0';
58
- const workflowBaseUrl = `https://raw.githubusercontent.com/google-github-actions/run-gemini-cli/refs/heads/${version}/workflows/`;
67
+ // Get the latest release tag from GitHub API
68
+ // For llxprt, this would call getLatestGitHubRelease() which points to acoliver/run-llxprt-code
69
+ const proxy = context?.services?.config?.getProxy();
70
+ const releaseTag = await getLatestGitHubRelease(proxy);
59
71
 
72
+ // TODO: Update these workflow paths for llxprt
60
73
  const workflows = [
61
- 'gemini-cli/gemini-cli.yml',
62
- 'issue-triage/gemini-issue-automated-triage.yml',
63
- 'issue-triage/gemini-issue-scheduled-triage.yml',
64
- 'pr-review/gemini-pr-review.yml',
74
+ 'llxprt-cli/llxprt-cli.yml',
75
+ 'issue-triage/llxprt-issue-automated-triage.yml',
76
+ 'issue-triage/llxprt-issue-scheduled-triage.yml',
77
+ 'pr-review/llxprt-pr-review.yml',
65
78
  ];
66
79
 
67
- const command = [
68
- 'set -e',
69
- `mkdir -p "${gitRootRepo}/.github/workflows"`,
70
- ...workflows.map((workflow) => {
71
- const fileName = path.basename(workflow);
72
- return `curl -fsSL -o "${gitRootRepo}/.github/workflows/${fileName}" "${workflowBaseUrl}/${workflow}"`;
73
- }),
74
- 'echo "Workflows downloaded successfully. Follow steps in https://github.com/google-github-actions/run-gemini-cli/blob/v0/README.md#quick-start (skipping the /setup-github step) to complete setup."',
75
- 'open https://github.com/google-github-actions/run-gemini-cli/blob/v0/README.md#quick-start',
76
- ].join(' && ');
80
+ const commands = [];
81
+
82
+ // Ensure fast exit
83
+ commands.push(`set -eEuo pipefail`);
84
+
85
+ // Make the directory if it doesn't exist
86
+ commands.push(`mkdir -p "${gitRepoRoot}/.github/workflows"`);
87
+
88
+ for (const workflow of workflows) {
89
+ const fileName = path.basename(workflow);
90
+ // TODO: Update to use acoliver/run-llxprt-code repository
91
+ const curlCommand = buildCurlCommand(
92
+ `https://raw.githubusercontent.com/acoliver/run-llxprt-code/refs/tags/${releaseTag}/examples/workflows/${workflow}`,
93
+ [`--output "${gitRepoRoot}/.github/workflows/${fileName}"`],
94
+ );
95
+ commands.push(curlCommand);
96
+ }
97
+
98
+ commands.push(
99
+ `echo "Successfully downloaded ${workflows.length} workflows. Follow the steps in https://github.com/acoliver/run-llxprt-code/blob/${releaseTag}/README.md#quick-start (skipping the /setup-github step) to complete setup."`,
100
+ `open https://github.com/acoliver/run-llxprt-code/blob/${releaseTag}/README.md#quick-start`,
101
+ );
102
+
103
+ const command = `(${commands.join(' && ')})`;
77
104
  return {
78
105
  type: 'tool',
79
106
  toolName: 'run_shell_command',
80
107
  toolArgs: {
81
108
  description:
82
- 'Setting up GitHub Actions to triage issues and review PRs with Gemini.',
109
+ 'Setting up GitHub Actions to triage issues and review PRs with llxprt.',
83
110
  command,
84
111
  },
85
112
  };
86
- */
113
+ },
114
+ */
87
115
  };
116
+ // buildCurlCommand is a helper for constructing a consistent curl command.
117
+ // Commented out until the command is re-enabled
118
+ // function buildCurlCommand(u: string, additionalArgs?: string[]): string {
119
+ // const args = [];
120
+ // args.push('--fail');
121
+ // args.push('--location');
122
+ // args.push('--show-error');
123
+ // args.push('--silent');
124
+ //
125
+ // for (const val of additionalArgs || []) {
126
+ // args.push(val);
127
+ // }
128
+ //
129
+ // args.sort();
130
+ //
131
+ // return `curl ${args.join(' ')} "${u}"`;
132
+ // }
88
133
  //# sourceMappingURL=setupGithubCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupGithubCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/setupGithubCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,GAGZ,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,kBAAkB,GAAiB;IAC9C,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,0EAA0E;IAC5E,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,GAA6B,EAAE;IACrC,2CAA2C;IAC3C,WAAW;IACX,4GAA4G;IAC5G,yDAAyD;IACzD,2DAA2D;IAC3D,sDAAsD;IACtD,wEAAwE;IAExE,yCAAyC;IACzC,CAAC;QACC,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE;;;;;;;;;;;;;4FAa6E;KACvF,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAgDI;CACL,CAAC"}
1
+ {"version":3,"file":"setupGithubCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/setupGithubCommand.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,8DAA8D;AAC9D,2BAA2B;AAC3B,+DAA+D;AAC/D,WAAW;AACX,oBAAoB;AACpB,4BAA4B;AAC5B,wBAAwB;AACxB,oCAAoC;AAEpC,OAAO,EACL,WAAW,GAGZ,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,kBAAkB,GAAiB;IAC9C,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,0EAA0E;IAC5E,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,GAA6B,EAAE;IACrC,2CAA2C;IAC3C,WAAW;IACX,4GAA4G;IAC5G,yDAAyD;IACzD,2DAA2D;IAC3D,sDAAsD;IACtD,wEAAwE;IAExE,yCAAyC;IACzC,CAAC;QACC,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,MAAM;QACnB,OAAO,EAAE;;;;;;;;;;;;;4FAa6E;KACvF,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoEE;CACH,CAAC;AAEF,2EAA2E;AAC3E,gDAAgD;AAChD,4EAA4E;AAC5E,qBAAqB;AACrB,yBAAyB;AACzB,6BAA6B;AAC7B,+BAA+B;AAC/B,2BAA2B;AAC3B,EAAE;AACF,8CAA8C;AAC9C,sBAAsB;AACtB,MAAM;AACN,EAAE;AACF,iBAAiB;AACjB,EAAE;AACF,4CAA4C;AAC5C,IAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"toolsCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/toolsCommand.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolsCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/toolsCommand.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAGL,WAAW,GAEZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,IAAI,EAAE,OAAO;IACb,WAAW,EAAE,2CAA2C;IACxD,IAAI,EAAE,WAAW,CAAC,QAAQ;IAC1B,MAAM,EAAE,KAAK,EACX,OAAuB,EACvB,IAAa,EAC6B,EAAE;QAC5C,MAAM,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5B,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC;QACtE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,EAAE,CAAC,OAAO,CAChB;gBACE,IAAI,EAAE,WAAW,CAAC,KAAK;gBACvB,IAAI,EAAE,mCAAmC;aAC1C,EACD,IAAI,CAAC,GAAG,EAAE,CACX,CAAC;YACF,OAAO;QACT,CAAC;QAED,qDAAqD;QACrD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvC,MAAM,iBAAiB,GAAG,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC;QAC/D,MAAM,aAAa,GAChB,iBAAiB,CAAC,gBAAgB,CAAc,IAAI,EAAE,CAAC;QAE1D,oCAAoC;QACpC,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YACxD,gDAAgD;YAChD,OAAO;gBACL,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,OAAO;aAChB,CAAC;QACJ,CAAC;QAED,gCAAgC;QAChC,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QACzC,4EAA4E;QAC5E,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAC9B,CAAC,IAAwB,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CACtD,CAAC;QAEF,mCAAmC;QACnC,IAAI,mBAAmB,GAAG,KAAK,CAAC;QAChC,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;YAC3D,mBAAmB,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,IAAI,OAAO,GAAG,iCAAiC,CAAC;QAEhD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,WAAW,CAAC,OAAO,CAAC,CAAC,IAAwB,EAAE,EAAE;gBAC/C,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvD,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,0BAA0B;gBAChF,MAAM,UAAU,GAAG,WAAW,CAAC;gBAE/B,IAAI,mBAAmB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBAC5C,OAAO,IAAI,OAAO,aAAa,GAAG,cAAc,aAAa,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,aAAa,aAAa,KAAK,CAAC;oBAE3H,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,qCAAqC;oBAElG,iCAAiC;oBACjC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;wBACjC,OAAO,IAAI,SAAS,UAAU,GAAG,QAAQ,GAAG,UAAU,IAAI,CAAC;oBAC7D,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,IAAI,OAAO,aAAa,GAAG,cAAc,aAAa,IAAI,CAAC,WAAW,GAAG,UAAU,IAAI,CAAC;gBACjG,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,wBAAwB,CAAC;QACtC,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,IAAI,eAAe,aAAa,CAAC,MAAM,2EAA2E,CAAC;QAC5H,CAAC;QAED,OAAO,IAAI,IAAI,CAAC;QAChB,OAAO,IAAI,WAAW,CAAC;QAEvB,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,UAAU,EAAE,KAAK,EACf,QAAwB,EACxB,IAAY,EACO,EAAE;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEnC,4BAA4B;QAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,WAAW,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;YAClE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ interface TodoPanelProps {
8
+ width: number;
9
+ }
10
+ export declare const TodoPanel: React.FC<TodoPanelProps>;
11
+ export {};
@@ -0,0 +1,131 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Vybestack LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { useEffect, useState } from 'react';
8
+ import { Box, Text } from 'ink';
9
+ import { useTodoContext } from '../contexts/TodoContext.js';
10
+ import { useToolCallContext } from '../contexts/ToolCallContext.js';
11
+ import { Colors } from '../colors.js';
12
+ import { groupToolCalls } from './todo-utils.js';
13
+ const formatParameters = (parameters) => {
14
+ const paramStrings = [];
15
+ const MAX_LENGTH = 40; // Doubled from 20 to be less aggressive
16
+ for (const [key, value] of Object.entries(parameters)) {
17
+ if (typeof value === 'string') {
18
+ let displayValue = value;
19
+ // Special handling for file paths - show the end part
20
+ if (key === 'file_path' ||
21
+ key === 'absolute_path' ||
22
+ value.includes('/')) {
23
+ if (value.length > MAX_LENGTH) {
24
+ // For paths, show the last part which is more useful
25
+ displayValue = '...' + value.slice(-(MAX_LENGTH - 3));
26
+ }
27
+ }
28
+ else {
29
+ // For non-paths, truncate normally but with larger limit
30
+ displayValue =
31
+ value.length > MAX_LENGTH
32
+ ? value.substring(0, MAX_LENGTH - 3) + '...'
33
+ : value;
34
+ }
35
+ paramStrings.push(`${key}: '${displayValue}'`);
36
+ }
37
+ else {
38
+ const jsonStr = JSON.stringify(value);
39
+ const displayValue = jsonStr.length > MAX_LENGTH
40
+ ? jsonStr.substring(0, MAX_LENGTH - 3) + '...'
41
+ : jsonStr;
42
+ paramStrings.push(`${key}: ${displayValue}`);
43
+ }
44
+ }
45
+ return paramStrings.join(', ');
46
+ };
47
+ const renderToolCall = (toolCall, count = 1, indent = ' ', index = 0) => {
48
+ const params = formatParameters(toolCall.parameters);
49
+ const toolText = `${toolCall.name}(${params})`;
50
+ const countText = count > 1 ? ` ${count}x` : '';
51
+ return (_jsx(Box, { flexDirection: "row", minHeight: 1, children: _jsxs(Text, { color: Colors.Gray, children: [indent, "\u21B3 ", toolText, countText] }) }, `${toolCall.id || `${toolCall.name}-${index}`}`));
52
+ };
53
+ const renderTodo = (todo, allToolCalls) => {
54
+ const elements = [];
55
+ // Todo status marker and content
56
+ let marker = '';
57
+ let markerColor = Colors.Foreground;
58
+ if (todo.status === 'completed') {
59
+ marker = '✔';
60
+ markerColor = Colors.AccentGreen;
61
+ }
62
+ else if (todo.status === 'pending') {
63
+ marker = '○';
64
+ markerColor = Colors.Gray;
65
+ }
66
+ else if (todo.status === 'in_progress') {
67
+ marker = '→';
68
+ markerColor = Colors.AccentYellow;
69
+ }
70
+ // Main todo line
71
+ elements.push(_jsxs(Box, { flexDirection: "row", minHeight: 1, children: [_jsxs(Text, { color: markerColor, bold: true, children: [marker, ' '] }), _jsx(Box, { flexGrow: 1, children: _jsxs(Text, { color: todo.status === 'in_progress'
72
+ ? Colors.AccentYellow
73
+ : Colors.Foreground, bold: todo.status === 'in_progress', wrap: "wrap", children: [todo.content, todo.status === 'in_progress' && (_jsx(Text, { color: Colors.AccentYellow, children: " \u2190 current" }))] }) })] }, todo.id));
74
+ // Render subtasks and their tool calls
75
+ if (todo.subtasks && todo.subtasks.length > 0) {
76
+ for (const subtask of todo.subtasks) {
77
+ elements.push(_jsx(Box, { children: _jsxs(Text, { color: Colors.Gray, children: [" \u2022 ", subtask.content] }) }, `${todo.id}-subtask-${subtask.content}`));
78
+ if (subtask.toolCalls && subtask.toolCalls.length > 0) {
79
+ const grouped = groupToolCalls(subtask.toolCalls);
80
+ grouped.forEach((group, index) => {
81
+ elements.push(renderToolCall(group.toolCall, group.count, ' ', index));
82
+ });
83
+ }
84
+ }
85
+ }
86
+ // Group and render all tool calls from memory (only for in_progress tasks)
87
+ if (allToolCalls.length > 0 && todo.status === 'in_progress') {
88
+ const grouped = groupToolCalls(allToolCalls);
89
+ grouped.forEach((group, index) => {
90
+ elements.push(renderToolCall(group.toolCall, group.count, ' ', index));
91
+ });
92
+ }
93
+ return elements;
94
+ };
95
+ const TodoPanelComponent = ({ width }) => {
96
+ const { todos } = useTodoContext();
97
+ const { getExecutingToolCalls, subscribe } = useToolCallContext();
98
+ const [, forceUpdate] = useState({});
99
+ const [contentKey, setContentKey] = useState(0);
100
+ // Force re-render when todos change
101
+ useEffect(() => {
102
+ forceUpdate({});
103
+ setContentKey((prev) => prev + 1);
104
+ }, [todos]);
105
+ // Subscribe to tool call updates to re-render when they change
106
+ useEffect(() => {
107
+ const unsubscribe = subscribe(() => {
108
+ forceUpdate({});
109
+ setContentKey((prev) => prev + 1);
110
+ });
111
+ return unsubscribe;
112
+ }, [subscribe]);
113
+ if (todos.length === 0) {
114
+ return null; // Auto-hide when no todos exist
115
+ }
116
+ const allElements = [];
117
+ // Add header
118
+ allElements.push(_jsx(Box, { minHeight: 1, marginBottom: 1, children: _jsx(Text, { color: Colors.AccentBlue, bold: true, children: "Todo Progress" }) }, "header"));
119
+ // Add todos
120
+ for (const todo of todos) {
121
+ const allToolCalls = getExecutingToolCalls(todo.id); // This now gets all tool calls
122
+ const todoElements = renderTodo(todo, allToolCalls);
123
+ allElements.push(...todoElements);
124
+ // Add spacing between todos
125
+ allElements.push(_jsx(Box, { height: 1 }, `${todo.id}-spacer`));
126
+ }
127
+ return (_jsx(Box, { flexDirection: "column", width: width, borderStyle: "round", borderColor: Colors.AccentBlue, paddingX: 1, paddingY: 1, children: allElements }, `todo-panel-${contentKey}`));
128
+ };
129
+ // Export without memo to ensure updates when context changes
130
+ export const TodoPanel = TodoPanelComponent;
131
+ //# sourceMappingURL=TodoPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoPanel.js","sourceRoot":"","sources":["../../../../src/ui/components/TodoPanel.tsx"],"names":[],"mappings":"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"}
@@ -4,9 +4,9 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import React from 'react';
7
- import { Tool } from '@vybestack/llxprt-code-core';
7
+ import { AnyDeclarativeTool } from '@vybestack/llxprt-code-core';
8
8
  interface ToolsDialogProps {
9
- tools: Tool[];
9
+ tools: AnyDeclarativeTool[];
10
10
  action: 'enable' | 'disable';
11
11
  disabledTools: string[];
12
12
  onSelect: (toolName: string) => void;
@@ -11,17 +11,29 @@ import { Colors } from '../../colors.js';
11
11
  import { ToolConfirmationOutcome, } from '@vybestack/llxprt-code-core';
12
12
  import { RadioButtonSelect, } from '../shared/RadioButtonSelect.js';
13
13
  import { MaxSizedBox } from '../shared/MaxSizedBox.js';
14
- export const ToolConfirmationMessage = ({ confirmationDetails, isFocused = true, availableTerminalHeight, terminalWidth, }) => {
14
+ export const ToolConfirmationMessage = ({ confirmationDetails, config, isFocused = true, availableTerminalHeight, terminalWidth, }) => {
15
15
  const { onConfirm } = confirmationDetails;
16
16
  const childWidth = terminalWidth - 2; // 2 for padding
17
+ const handleConfirm = useCallback(async (outcome) => {
18
+ if (confirmationDetails.type === 'edit') {
19
+ const ideClient = config?.getIdeClient();
20
+ if (config?.getIdeMode() && config?.getIdeModeFeature()) {
21
+ const cliOutcome = outcome === ToolConfirmationOutcome.Cancel
22
+ ? 'rejected'
23
+ : 'accepted';
24
+ await ideClient?.resolveDiffFromCli(confirmationDetails.filePath, cliOutcome);
25
+ }
26
+ }
27
+ onConfirm(outcome);
28
+ }, [confirmationDetails, config, onConfirm]);
17
29
  useInput((_, key) => {
18
30
  if (!isFocused)
19
31
  return;
20
32
  if (key.escape) {
21
- onConfirm(ToolConfirmationOutcome.Cancel);
33
+ handleConfirm(ToolConfirmationOutcome.Cancel);
22
34
  }
23
35
  });
24
- const handleSelect = useCallback((item) => onConfirm(item), [onConfirm]);
36
+ const handleSelect = useCallback((item) => handleConfirm(item), [handleConfirm]);
25
37
  let bodyContent = null; // Removed contextDisplay here
26
38
  let question;
27
39
  const options = new Array();
@@ -60,13 +72,23 @@ export const ToolConfirmationMessage = ({ confirmationDetails, isFocused = true,
60
72
  }, {
61
73
  label: 'Yes, allow always',
62
74
  value: ToolConfirmationOutcome.ProceedAlways,
63
- }, {
64
- label: 'Modify with external editor',
65
- value: ToolConfirmationOutcome.ModifyWithEditor,
66
- }, {
67
- label: 'No, suggest changes (esc)',
68
- value: ToolConfirmationOutcome.Cancel,
69
75
  });
76
+ if (config?.getIdeMode() && config?.getIdeModeFeature()) {
77
+ options.push({
78
+ label: 'No',
79
+ value: ToolConfirmationOutcome.Cancel,
80
+ });
81
+ }
82
+ else {
83
+ options.push({
84
+ label: 'Modify with external editor',
85
+ value: ToolConfirmationOutcome.ModifyWithEditor,
86
+ });
87
+ options.push({
88
+ label: 'No, suggest changes (esc)',
89
+ value: ToolConfirmationOutcome.Cancel,
90
+ });
91
+ }
70
92
  bodyContent = (_jsx(DiffRenderer, { diffContent: confirmationDetails.fileDiff, filename: confirmationDetails.fileName, availableTerminalHeight: availableBodyContentHeight(), terminalWidth: childWidth }));
71
93
  }
72
94
  else if (confirmationDetails.type === 'exec') {
@@ -1 +1 @@
1
- {"version":3,"file":"ToolConfirmationMessage.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/ToolConfirmationMessage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolConfirmationMessage.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/ToolConfirmationMessage.tsx"],"names":[],"mappings":"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"}
@@ -11,25 +11,53 @@ import { ToolMessage } from './ToolMessage.js';
11
11
  import { ToolConfirmationMessage } from './ToolConfirmationMessage.js';
12
12
  import { Colors } from '../../colors.js';
13
13
  import { SHELL_COMMAND_NAME } from '../../constants.js';
14
+ import { useTodoContext } from '../../contexts/TodoContext.js';
14
15
  // Main component renders the border and maps the tools using ToolMessage
15
16
  export const ToolGroupMessage = ({ toolCalls, availableTerminalHeight, terminalWidth, config, isFocused = true, }) => {
16
- const hasPending = !toolCalls.every((t) => t.status === ToolCallStatus.Success);
17
- const isShellCommand = toolCalls.some((t) => t.name === SHELL_COMMAND_NAME);
17
+ const { todos } = useTodoContext();
18
+ const hasTodoPanel = todos.length > 0;
19
+ // only prompt for tool approval on the first 'confirming' tool in the list
20
+ // note, after the CTA, this automatically moves over to the next 'confirming' tool
21
+ const toolAwaitingApproval = useMemo(() => toolCalls.find((tc) => tc.status === ToolCallStatus.Confirming), [toolCalls]);
22
+ // Filter out todo_read completely when panel is visible
23
+ // and minimize todo_write output
24
+ const filteredToolCalls = useMemo(() => {
25
+ if (!hasTodoPanel)
26
+ return toolCalls;
27
+ return toolCalls
28
+ .map((tool) => {
29
+ if (tool.name === 'todo_read') {
30
+ return null; // Don't show todo_read at all when panel is visible
31
+ }
32
+ if (tool.name === 'todo_write') {
33
+ // Minimize todo_write output when panel is visible
34
+ return {
35
+ ...tool,
36
+ resultDisplay: '✦ Todo list updated.',
37
+ };
38
+ }
39
+ return tool;
40
+ })
41
+ .filter(Boolean);
42
+ }, [toolCalls, hasTodoPanel]);
43
+ // If all tools were filtered out, don't render anything
44
+ if (filteredToolCalls.length === 0) {
45
+ return null;
46
+ }
47
+ const hasPending = !filteredToolCalls.every((t) => t.status === ToolCallStatus.Success);
48
+ const isShellCommand = filteredToolCalls.some((t) => t.name === SHELL_COMMAND_NAME);
18
49
  const borderColor = hasPending || isShellCommand ? Colors.AccentYellow : Colors.Gray;
19
50
  const staticHeight = /* border */ 2 + /* marginBottom */ 1;
20
51
  // This is a bit of a magic number, but it accounts for the border and
21
52
  // marginLeft.
22
53
  const innerWidth = terminalWidth - 4;
23
- // only prompt for tool approval on the first 'confirming' tool in the list
24
- // note, after the CTA, this automatically moves over to the next 'confirming' tool
25
- const toolAwaitingApproval = useMemo(() => toolCalls.find((tc) => tc.status === ToolCallStatus.Confirming), [toolCalls]);
26
54
  let countToolCallsWithResults = 0;
27
- for (const tool of toolCalls) {
55
+ for (const tool of filteredToolCalls) {
28
56
  if (tool.resultDisplay !== undefined && tool.resultDisplay !== '') {
29
57
  countToolCallsWithResults++;
30
58
  }
31
59
  }
32
- const countOneLineToolCalls = toolCalls.length - countToolCallsWithResults;
60
+ const countOneLineToolCalls = filteredToolCalls.length - countToolCallsWithResults;
33
61
  const availableTerminalHeightPerToolMessage = availableTerminalHeight
34
62
  ? Math.max(Math.floor((availableTerminalHeight - staticHeight - countOneLineToolCalls) /
35
63
  Math.max(1, countToolCallsWithResults)), 1)
@@ -41,7 +69,7 @@ export const ToolGroupMessage = ({ toolCalls, availableTerminalHeight, terminalW
41
69
  Ink to render the border of the box incorrectly and span multiple lines and even
42
70
  cause tearing.
43
71
  */
44
- width: "100%", marginLeft: 1, borderDimColor: hasPending, borderColor: borderColor, children: toolCalls.map((tool) => {
72
+ width: "100%", marginLeft: 1, borderDimColor: hasPending, borderColor: borderColor, children: filteredToolCalls.map((tool) => {
45
73
  const isConfirming = toolAwaitingApproval?.callId === tool.callId;
46
74
  return (_jsxs(Box, { flexDirection: "column", minHeight: 1, children: [_jsx(Box, { flexDirection: "row", alignItems: "center", children: _jsx(ToolMessage, { callId: tool.callId, name: tool.name, description: tool.description, resultDisplay: tool.resultDisplay, status: tool.status, confirmationDetails: tool.confirmationDetails, availableTerminalHeight: availableTerminalHeightPerToolMessage, terminalWidth: innerWidth, emphasis: isConfirming
47
75
  ? 'high'
@@ -1 +1 @@
1
- {"version":3,"file":"ToolGroupMessage.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/ToolGroupMessage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolGroupMessage.js","sourceRoot":"","sources":["../../../../../src/ui/components/messages/ToolGroupMessage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { TodoToolCall } from '@vybestack/llxprt-code-core';
7
+ export interface GroupedToolCall {
8
+ toolCall: TodoToolCall;
9
+ count: number;
10
+ }
11
+ /**
12
+ * Function to group consecutive identical tool calls
13
+ * Identical tool calls (same name and parameters) that occur consecutively are grouped with a count
14
+ * Different tool calls are shown separately
15
+ */
16
+ export declare const groupToolCalls: (toolCalls: TodoToolCall[]) => GroupedToolCall[];
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Function to group consecutive identical tool calls
8
+ * Identical tool calls (same name and parameters) that occur consecutively are grouped with a count
9
+ * Different tool calls are shown separately
10
+ */
11
+ export const groupToolCalls = (toolCalls) => {
12
+ if (toolCalls.length === 0)
13
+ return [];
14
+ const grouped = [];
15
+ let currentGroup = {
16
+ toolCall: toolCalls[0],
17
+ count: 1,
18
+ };
19
+ for (let i = 1; i < toolCalls.length; i++) {
20
+ const current = toolCalls[i];
21
+ const prev = currentGroup.toolCall;
22
+ // Check if this is the same tool call as the previous one
23
+ if (current.name === prev.name &&
24
+ JSON.stringify(current.parameters) === JSON.stringify(prev.parameters)) {
25
+ // Increment count for consecutive identical call
26
+ currentGroup.count++;
27
+ }
28
+ else {
29
+ // Different call, save the current group and start a new one
30
+ grouped.push(currentGroup);
31
+ currentGroup = {
32
+ toolCall: current,
33
+ count: 1,
34
+ };
35
+ }
36
+ }
37
+ // Don't forget the last group
38
+ grouped.push(currentGroup);
39
+ return grouped;
40
+ };
41
+ //# sourceMappingURL=todo-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todo-utils.js","sourceRoot":"","sources":["../../../../src/ui/components/todo-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,SAAyB,EACN,EAAE;IACrB,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,IAAI,YAAY,GAAoB;QAClC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;QACtB,KAAK,EAAE,CAAC;KACT,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC;QAEnC,0DAA0D;QAC1D,IACE,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;YAC1B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EACtE,CAAC;YACD,iDAAiD;YACjD,YAAY,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,6DAA6D;YAC7D,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3B,YAAY,GAAG;gBACb,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,CAAC;aACT,CAAC;QACJ,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE3B,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ import { Todo } from '@vybestack/llxprt-code-core';
8
+ interface TodoContextType {
9
+ todos: Todo[];
10
+ updateTodos: (todos: Todo[]) => void;
11
+ refreshTodos: () => void;
12
+ }
13
+ export declare const TodoContext: React.Context<TodoContextType>;
14
+ export declare const useTodoContext: () => TodoContextType;
15
+ export {};
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ const defaultContextValue = {
8
+ todos: [],
9
+ updateTodos: () => {
10
+ throw new Error('NotYetImplemented');
11
+ },
12
+ refreshTodos: () => {
13
+ throw new Error('NotYetImplemented');
14
+ },
15
+ };
16
+ export const TodoContext = React.createContext(defaultContextValue);
17
+ export const useTodoContext = () => React.useContext(TodoContext);
18
+ //# sourceMappingURL=TodoContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoContext.js","sourceRoot":"","sources":["../../../../src/ui/contexts/TodoContext.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,MAAM,mBAAmB,GAAoB;IAC3C,KAAK,EAAE,EAAE;IACT,WAAW,EAAE,GAAG,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,YAAY,EAAE,GAAG,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GACtB,KAAK,CAAC,aAAa,CAAkB,mBAAmB,CAAC,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface TodoProviderProps {
3
+ children: React.ReactNode;
4
+ sessionId: string;
5
+ }
6
+ export declare const TodoProvider: React.FC<TodoProviderProps>;
7
+ export {};